more work

This commit is contained in:
Oliver Lehmann 2009-08-27 18:42:12 +00:00
parent 1479559afb
commit c98cf1e6df
7 changed files with 71 additions and 30 deletions

View File

@ -20,6 +20,5 @@ stfl.o ???
swap.o swap.c C swap.o swap.c C
symscan.o symscan.c C symscan.o symscan.c C
tmpfile.o tmpfile.c C tmpfile.o tmpfile.c C
tmpnam.o tmpnam.c C
tolower.o tolower.c C tolower.o tolower.c C
toupper.o toupper.c C toupper.o toupper.c C

View File

@ -153,3 +153,4 @@ setbuf.o setbuf.c C
strout.o strout.c C strout.o strout.c C
system.o system.c C system.o system.c C
ungetc.o ungetc.c C ungetc.o ungetc.c C
tmpnam.o tmpnam.c C

View File

@ -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 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 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 nlist.o /z/src/libc/orig_obj/nlist.o differ: char 5, line 1

View File

@ -153,9 +153,11 @@ gmtime(tim)
long *tim; long *tim;
{ {
register int d0, d1; register int d0, d1;
int foo1;
long hms, day; long hms, day;
register int *tp; register int *tp;
static struct tm xtime; static struct tm xtime;
int foo2;
/* /*
* break initial number into days * break initial number into days
@ -216,6 +218,7 @@ struct tm *t;
{ {
register char *cp, *ncp; register char *cp, *ncp;
register int *tp; register int *tp;
int foo;
cp = cbuf; cp = cbuf;
for(ncp = "Day Mon 00 00:00:00 1900\n"; *cp++ = *ncp++;); for(ncp = "Day Mon 00 00:00:00 1900\n"; *cp++ = *ncp++;);
@ -267,6 +270,7 @@ tzset()
{ {
register char *p, *q; register char *p, *q;
register int n; register int n;
int foo;
int sign; int sign;
char *getenv(); char *getenv();
@ -275,7 +279,7 @@ tzset()
q = tzname[0]; q = tzname[0];
do *q++ = *p? *p++: ' '; do *q++ = *p? *p++: ' ';
while(--n); while(--n);
if(sign = *p == '-') if(sign = (char)(p[0] == '-'))
p++; p++;
n = 0; n = 0;
while(*p >= '0' && *p <= '9') while(*p >= '0' && *p <= '9')
@ -283,7 +287,7 @@ tzset()
if(sign) if(sign)
n = -n; n = -n;
timezone = ((long) (n * 60)) * 60; timezone = ((long) (n * 60)) * 60;
if(daylight = *p != '\0') { if(daylight = (char)(*p != '\0')) {
q = tzname[1]; q = tzname[1];
n = 3; n = 3;
do *q++ = *p? *p++: ' '; do *q++ = *p? *p++: ' ';

View File

@ -1,5 +1,4 @@
doscan.o /z/src/libc/orig_obj/doscan.o differ: char 5, line 1 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 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 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 getpass.o /z/src/libc/orig_obj/getpass.o differ: char 6, line 1

View File

@ -4,67 +4,81 @@
#include <errno.h> #include <errno.h>
FILE * FILE *
_endopen(file, mode, iop) _endopen (file, mode, iop)
char *file, *mode; char *file, *mode;
register FILE *iop; register FILE *iop;
{ {
extern int errno; extern int errno;
register int rw, f; register int rw;
register int f;
if (iop == NULL) 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) { switch (*mode) {
case 'w': case 'w':
f = create(file, rw); f = create (file, rw);
break; break;
case 'a': case 'a':
if ((f = open(file, rw? 2: 1)) < 0) { if ((f = open (file, rw? 2: 1)) < 0) {
if (errno == ENOENT) if (errno == ENOENT)
f = create(file, rw); f = create (file, rw);
} }
lseek(f, 0L, 2); lseek (f, 0L, 2);
break; break;
case 'r': case 'r':
f = open(file, rw? 2: 0); f = open (file, rw? 2: 0);
break; break;
default: default:
return(NULL); return NULL;
} }
if (f < 0) if (f < 0)
return(NULL); return NULL;
iop->_cnt = 0; iop->_cnt = 0;
iop->_file = f; iop->_file = f;
if (rw) if (rw)
iop->_flag |= _IORW; iop->_flag |= _IORW;
else if(*mode == 'r') else if (*mode == 'r')
iop->_flag |= _IOREAD; iop->_flag |= _IOREAD;
else else
iop->_flag |= _IOWRT; iop->_flag |= _IOWRT;
return(iop); return iop;
} }
static int static int
create(file, rw) create (file, rw)
register char *file; register char *file;
int rw; int rw;
{ {
register int f; register int m, f;
f = creat(file, 0666); if (rw) {
if (rw && f>=0) { m = umask (0);
close(f); f = creat (file, 0666);
f = open(file, 2); if (f >= 0) {
} close (f);
return(f); f = open (file, 2);
chmod (file, 0666 & ~m);
}
umask (m);
} else
f = creat (file, 0666);
return f;
} }

View File

@ -0,0 +1,25 @@
/* @[$] tmpnam.c 2.1 09/12/83 11:18:21 - 87wega3.2 */
/*LINTLIBRARY*/
#include <stdio.h>
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);
}