[comp.os.minix] V1.3 Library "Features"

johnc@rtmvax.UUCP (John Connin) (06/15/88)

As requested by AST, I believe the following two I items are not version
1.3 features:

  (1).  fopen(3) when opened in the append mode does not set the
        the control flag to 'WRITEMODE', the result is the file is
        not written to as expected.

	switch(*mode){

	case 'w':
		flags |= WRITEMODE;
		if (( fd = creat (name,PMODE)) < 0)
			return(NULL);
		break;

        case 'a':
 /* ?? NO flag set ?? */
		if (( fd = open(name,1)) < 0 )
			if(errno != ENOENT || (fd = creat(name, PMODE)) < 0)
				return(NULL);
		lseek(fd,0L,2);
		break;         

	case 'r':
		flags |= READMODE;	
		if (( fd = open (name,0)) < 0 )
			return(NULL);
		break;

	default:
		return(NULL);
	}


  (2).  Though this is not a bug, in getenv)3) it might be prudent to 
        test the validity of 'name' before accessing the environment.

#define NULL  (char *) 0

char *getenv(name)
register char *name;
{
    extern char **environ;
    register char **v = environ, *p, *q;

    if (v && name) {                        /* added if statement */
        while ((p = *v++) != NULL) {        /* was, while((p = *v) != NULL */
            q = name;
            while (*p++ == *q)
                if (*q++ == 0)
                    continue;
            if (*(p - 1) != '=')
                continue;
            return(p);
        }
    }
    return(0);
}

----
John Connin: RTmVax Semi-Public UNIX/USENET System Orlando, Florida
UUCP: {cbosgd!codas,uiucuxc,hoptoad,petsd}!peora!rtmvax!johnc
  or: {moss,mtune}!codas!rtmvax!johnc
 c/o: 105 Red Cedar, Longwood, FL., 32779, (407) 869-0567