diff --git a/WEGA/src/lib/libc/TODO b/WEGA/src/lib/libc/TODO index 378e143..dd97d43 100644 --- a/WEGA/src/lib/libc/TODO +++ b/WEGA/src/lib/libc/TODO @@ -20,6 +20,5 @@ stfl.o ??? swap.o swap.c C symscan.o symscan.c C tmpfile.o tmpfile.c C -tmpnam.o tmpnam.c C tolower.o tolower.c C toupper.o toupper.c C diff --git a/WEGA/src/lib/libc/TODO.done b/WEGA/src/lib/libc/TODO.done index 51f18c7..d648d17 100644 --- a/WEGA/src/lib/libc/TODO.done +++ b/WEGA/src/lib/libc/TODO.done @@ -153,3 +153,4 @@ setbuf.o setbuf.c C strout.o strout.c C system.o system.c C ungetc.o ungetc.c C +tmpnam.o tmpnam.c C diff --git a/WEGA/src/lib/libc/gen/TODO b/WEGA/src/lib/libc/gen/TODO index 6abd2f0..f45652c 100644 --- a/WEGA/src/lib/libc/gen/TODO +++ b/WEGA/src/lib/libc/gen/TODO @@ -1,4 +1,3 @@ -ctime.o /z/src/libc/orig_obj/ctime.o differ: char 6, line 1 execvp.o /z/src/libc/orig_obj/execvp.o differ: char 6, line 1 malloc.o /z/src/libc/orig_obj/malloc.o differ: char 5, line 1 nlist.o /z/src/libc/orig_obj/nlist.o differ: char 5, line 1 diff --git a/WEGA/src/lib/libc/gen/ctime.c b/WEGA/src/lib/libc/gen/ctime.c index 150a4cb..b0c4530 100644 --- a/WEGA/src/lib/libc/gen/ctime.c +++ b/WEGA/src/lib/libc/gen/ctime.c @@ -153,9 +153,11 @@ gmtime(tim) long *tim; { register int d0, d1; + int foo1; long hms, day; register int *tp; static struct tm xtime; + int foo2; /* * break initial number into days @@ -216,6 +218,7 @@ struct tm *t; { register char *cp, *ncp; register int *tp; + int foo; cp = cbuf; for(ncp = "Day Mon 00 00:00:00 1900\n"; *cp++ = *ncp++;); @@ -267,6 +270,7 @@ tzset() { register char *p, *q; register int n; + int foo; int sign; char *getenv(); @@ -275,7 +279,7 @@ tzset() q = tzname[0]; do *q++ = *p? *p++: ' '; while(--n); - if(sign = *p == '-') + if(sign = (char)(p[0] == '-')) p++; n = 0; while(*p >= '0' && *p <= '9') @@ -283,7 +287,7 @@ tzset() if(sign) n = -n; timezone = ((long) (n * 60)) * 60; - if(daylight = *p != '\0') { + if(daylight = (char)(*p != '\0')) { q = tzname[1]; n = 3; do *q++ = *p? *p++: ' '; diff --git a/WEGA/src/lib/libc/stdio/TODO b/WEGA/src/lib/libc/stdio/TODO index 2333f86..3a8b6ad 100644 --- a/WEGA/src/lib/libc/stdio/TODO +++ b/WEGA/src/lib/libc/stdio/TODO @@ -1,5 +1,4 @@ doscan.o /z/src/libc/orig_obj/doscan.o differ: char 5, line 1 -endopen.o /z/src/libc/orig_obj/endopen.o differ: char 6, line 1 flsbuf.o /z/src/libc/orig_obj/flsbuf.o differ: char 6, line 1 getgrent.o /z/src/libc/orig_obj/getgrent.o differ: char 132, line 1 getpass.o /z/src/libc/orig_obj/getpass.o differ: char 6, line 1 diff --git a/WEGA/src/lib/libc/stdio/endopen.c b/WEGA/src/lib/libc/stdio/endopen.c index ca45603..52cd19f 100644 --- a/WEGA/src/lib/libc/stdio/endopen.c +++ b/WEGA/src/lib/libc/stdio/endopen.c @@ -4,67 +4,81 @@ #include FILE * -_endopen(file, mode, iop) - char *file, *mode; - register FILE *iop; +_endopen (file, mode, iop) +char *file, *mode; +register FILE *iop; { extern int errno; - register int rw, f; + register int rw; + register int f; if (iop == NULL) - return(NULL); + return NULL; - rw = mode[1] == '+'; + if ((mode[0] == 'r' && mode[1] == 'w') || + (mode[0] == 'w' && mode[1] == 'r')) { + mode[0]='r'; + mode[1]='+'; + } + + rw = (char)(mode[1] == '+'); switch (*mode) { case 'w': - f = create(file, rw); + f = create (file, rw); break; case 'a': - if ((f = open(file, rw? 2: 1)) < 0) { + if ((f = open (file, rw? 2: 1)) < 0) { if (errno == ENOENT) - f = create(file, rw); + f = create (file, rw); } - lseek(f, 0L, 2); + lseek (f, 0L, 2); break; case 'r': - f = open(file, rw? 2: 0); + f = open (file, rw? 2: 0); break; default: - return(NULL); + return NULL; } if (f < 0) - return(NULL); + return NULL; iop->_cnt = 0; iop->_file = f; if (rw) iop->_flag |= _IORW; - else if(*mode == 'r') + else if (*mode == 'r') iop->_flag |= _IOREAD; else iop->_flag |= _IOWRT; - return(iop); + return iop; } static int -create(file, rw) - register char *file; - int rw; +create (file, rw) +register char *file; +int rw; { - register int f; + register int m, f; - f = creat(file, 0666); - if (rw && f>=0) { - close(f); - f = open(file, 2); - } - return(f); + if (rw) { + m = umask (0); + f = creat (file, 0666); + if (f >= 0) { + close (f); + f = open (file, 2); + chmod (file, 0666 & ~m); + } + umask (m); + } else + f = creat (file, 0666); + + return f; } diff --git a/WEGA/src/lib/libc/stdio/tmpnam.c b/WEGA/src/lib/libc/stdio/tmpnam.c new file mode 100644 index 0000000..52adbce --- /dev/null +++ b/WEGA/src/lib/libc/stdio/tmpnam.c @@ -0,0 +1,25 @@ +/* @[$] tmpnam.c 2.1 09/12/83 11:18:21 - 87wega3.2 */ + +/*LINTLIBRARY*/ +#include + +char *tmpnam(s) +char *s; +{ + static char str[L_tmpnam]; + static char seed[] = { 'a', 'a', 'a', '\0' }; + register char *p, *q; + + p = s==NULL? str: s; + strcpy(p, "/usr/tmp/"); + strcat(p, seed); + strcat(p, "XXXXXX"); + + q = seed; + while(*q == 'z') + *q++ = 'a'; + ++*q; + + mktemp(p); + return(p); +}