From 64588c5e400bbf80153a1c78d89ae813822c1d19 Mon Sep 17 00:00:00 2001 From: Oliver Lehmann Date: Thu, 27 Aug 2009 15:01:55 +0000 Subject: [PATCH] more work --- WEGA/src/lib/libc/stdio/TODO | 4 ---- WEGA/src/lib/libc/stdio/getpass.c | 13 +++++++------ WEGA/src/lib/libc/stdio/getw.c | 2 +- WEGA/src/lib/libc/stdio/putw.c | 2 +- WEGA/src/lib/libc/stdio/system.c | 20 +++++++++++++++++++- 5 files changed, 28 insertions(+), 13 deletions(-) diff --git a/WEGA/src/lib/libc/stdio/TODO b/WEGA/src/lib/libc/stdio/TODO index ea51477..45b27bd 100644 --- a/WEGA/src/lib/libc/stdio/TODO +++ b/WEGA/src/lib/libc/stdio/TODO @@ -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 - diff --git a/WEGA/src/lib/libc/stdio/getpass.c b/WEGA/src/lib/libc/stdio/getpass.c index 4cb20c8..2186b3e 100644 --- a/WEGA/src/lib/libc/stdio/getpass.c +++ b/WEGA/src/lib/libc/stdio/getpass.c @@ -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); diff --git a/WEGA/src/lib/libc/stdio/getw.c b/WEGA/src/lib/libc/stdio/getw.c index fb656ba..e23ce22 100644 --- a/WEGA/src/lib/libc/stdio/getw.c +++ b/WEGA/src/lib/libc/stdio/getw.c @@ -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)); } diff --git a/WEGA/src/lib/libc/stdio/putw.c b/WEGA/src/lib/libc/stdio/putw.c index cdcbef8..9a90fa2 100644 --- a/WEGA/src/lib/libc/stdio/putw.c +++ b/WEGA/src/lib/libc/stdio/putw.c @@ -6,6 +6,6 @@ putw(i, iop) register i; register struct _iobuf *iop; { - putc(i, iop); putc(i>>8, iop); + putc(i, iop); } diff --git a/WEGA/src/lib/libc/stdio/system.c b/WEGA/src/lib/libc/stdio/system.c index 8fca366..9fec989 100644 --- a/WEGA/src/lib/libc/stdio/system.c +++ b/WEGA/src/lib/libc/stdio/system.c @@ -4,12 +4,30 @@ 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) { - execl("/bin/sh", "sh", "-c", s, 0); + if(!mode) + execl("/bin/csh", "csh", "-c", s, 0); + else + execl("/bin/sh", "sh", "-c", s, 0); _exit(127); } istat = signal(SIGINT, SIG_IGN);