more work

This commit is contained in:
Oliver Lehmann 2009-08-27 15:01:55 +00:00
parent 3ac8395634
commit 64588c5e40
5 changed files with 28 additions and 13 deletions

View File

@ -4,9 +4,5 @@ fdopen.o /z/src/libc/orig_obj/fdopen.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
getw.o /z/src/libc/orig_obj/getw.o differ: char 6, line 1
printf.o /z/src/libc/orig_obj/printf.o differ: char 5, line 1
putw.o /z/src/libc/orig_obj/putw.o differ: char 64, line 1
scanf.o /z/src/libc/orig_obj/scanf.o differ: char 6, line 1
system.o /z/src/libc/orig_obj/system.o differ: char 6, line 1

View File

@ -9,7 +9,8 @@ getpass(prompt)
char *prompt;
{
struct sgttyb ttyb;
int flags;
int flags; /*,flags2,flags3,flags4,flags5;*/
struct sgttyb foo;
register char *p;
register c;
FILE *fi;
@ -18,14 +19,14 @@ char *prompt;
int (*sig)();
if ((fi = fopen("/dev/tty", "r")) == NULL)
fi = stdin;
return(0);
else
setbuf(fi, (char *)NULL);
sig = signal(SIGINT, SIG_IGN);
gtty(fileno(fi), &ttyb);
ioctl(fileno(fi), 0x5401, &ttyb);
flags = ttyb.sg_flags;
ttyb.sg_flags &= ~ECHO;
stty(fileno(fi), &ttyb);
ttyb.sg_flags &= 0xff87;
stty(fileno(fi), 0x5404, &ttyb);
fprintf(stderr, prompt);
for (p=pbuf; (c = getc(fi))!='\n' && c!=EOF;) {
if (p < &pbuf[8])
@ -34,7 +35,7 @@ char *prompt;
*p = '\0';
fprintf(stderr, "\n");
ttyb.sg_flags = flags;
stty(fileno(fi), &ttyb);
stty(fileno(fi), 0x5403, &ttyb);
signal(SIGINT, sig);
if (fi != stdin)
fclose(fi);

View File

@ -10,5 +10,5 @@ register struct _iobuf *iop;
i = getc(iop);
if (iop->_flag&_IOEOF)
return(-1);
return(i | (getc(iop)<<8));
return(i<<8 | getc(iop));
}

View File

@ -6,6 +6,6 @@ putw(i, iop)
register i;
register struct _iobuf *iop;
{
putc(i, iop);
putc(i>>8, iop);
putc(i, iop);
}

View File

@ -4,11 +4,29 @@
system(s)
char *s;
{
int i;
_system(s,1);
}
csystem(s)
char *s;
{
int i;
_system(s,0);
}
_system(s,mode)
char *s;
int mode;
{
int status, pid, w;
register int (*istat)(), (*qstat)();
if ((pid = fork()) == 0) {
if(!mode)
execl("/bin/csh", "csh", "-c", s, 0);
else
execl("/bin/sh", "sh", "-c", s, 0);
_exit(127);
}