|
From: Martin R. <ru...@us...> - 2004-08-05 23:39:56
|
Update of /cvsroot/foo/foo/elkfoo/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15070 Modified Files: misc.c Log Message: time(union wait *) -> time(int *), K&R->ANSI Index: misc.c =================================================================== RCS file: /cvsroot/foo/foo/elkfoo/src/misc.c,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** misc.c 5 Aug 2004 23:13:56 -0000 1.4 --- misc.c 5 Aug 2004 23:39:47 -0000 1.5 *************** *** 35,38 **** --- 35,39 ---- #endif + #define Object SchemeObject /* avoid Obj-C type clash */ #ifdef HAVE_FOOELK_SCHEME_H #include <fooelk/scheme.h> *************** *** 40,43 **** --- 41,45 ---- #include <elk/scheme.h> #endif + #undef Object #ifdef HAVE_SYS_TIME_H *************** *** 83,87 **** ! static Object P_Time() { struct timeval t; --- 85,90 ---- ! static SchemeObject ! P_Time () { struct timeval t; *************** *** 93,185 **** ! static Object P_Getpid() { ! return Make_Integer(getpid()); } ! static Object P_System (cmd) Object cmd; { ! register char *s; ! register int i, n, pid; ! union wait status; ! s = Get_String(cmd); #ifdef VFORK ! switch (pid = vfork ()) { #else ! switch (pid = fork ()) { #endif case -1: ! /* where is extern errno defined ? ! Saved_Errno = errno; ! Primitive_Error ("cannot fork: ~E"); ! */ ! Primitive_Error ("cannot fork"); case 0: ! n = Open_Max (); ! for (i = 3; i < n; i++) ! (void)close (i); ! execl ("/bin/sh", "sh", "-c", s, (char *)0); ! _exit (127); default: ! Disable_Interrupts; ! while ((i = wait (&status)) != pid && i != -1) ! ; ! Enable_Interrupts; } ! if (i == -1) ! return False; ! if ((n = (status.w_status & 0377))) ! return Cons (Make_Fixnum (n), Null); ! return Make_Fixnum ((status.w_status >> 8) & 0377); } ! static Object P_Getenv (e) Object e; { ! register char *s; ! Object ret; ! s = Get_String(e); ! ret = (s = getenv (s)) ? Make_String (s, strlen (s)) : False; ! return ret; } ! static Object P_Getwd () { ! char buffer[PATH_MAX + 1]; ! if (getcwd(buffer, PATH_MAX) == NULL) ! return False; ! else ! return Make_String(buffer, strlen(buffer)); } ! static Object P_Num_Sprintf (form, num) Object form; Object num; { ! char buffer[1024]; ! char *f; ! Object ret; ! ! f = Get_String(form); ! switch (TYPE(num)) { ! case T_Fixnum: ! sprintf(buffer, f, FIXNUM(num)); ! break; ! case T_Bignum: ! sprintf(buffer, f, Bignum_To_Long(num)); ! break; ! case T_Flonum: ! sprintf(buffer, f, Get_Double(num)); ! break; ! default: ! Primitive_Error("illegal type - expected number"); } ! ret = Make_String(buffer, strlen (buffer)); ! return ret; } ! void elk_init_misc() { /* "seconds" was formerly known as "time" */ --- 96,218 ---- ! static SchemeObject ! P_Getpid () { ! return Make_Integer(getpid()); } ! static SchemeObject ! P_System (SchemeObject cmd) ! { ! register char *s; ! register int i, n, pid; ! int status; ! s = Get_String(cmd); #ifdef VFORK ! switch (pid = vfork ()) #else ! switch (pid = fork ()) #endif + { case -1: ! /* where is extern errno defined ? ! Saved_Errno = errno; ! Primitive_Error ("cannot fork: ~E"); ! */ ! Primitive_Error ("cannot fork"); ! case 0: ! n = Open_Max (); ! for (i = 3; i < n; i++) ! { ! (void)close (i); ! } ! execl ("/bin/sh", "sh", "-c", s, (char *)0); ! _exit (127); ! default: ! Disable_Interrupts; ! while ((i = wait(&status)) != pid && i != -1) ! { ! ; ! } ! Enable_Interrupts; } ! if (i == -1) ! { ! return False; ! } ! if ((n = (status.w_status & 0377))) ! { ! return Cons (Make_Fixnum (n), Null); ! } ! return Make_Fixnum ((status.w_status >> 8) & 0377); } ! static SchemeObject ! P_Getenv (SchemeObject e) ! { ! register char *s; ! SchemeObject ret; ! s = Get_String(e); ! ret = (s = getenv (s)) ? Make_String (s, strlen (s)) : False; ! return ret; } ! static SchemeObject ! P_Getwd () ! { ! char buffer[PATH_MAX + 1]; ! if (getcwd(buffer, PATH_MAX) == NULL) ! { ! return False; ! } ! else ! { ! return Make_String(buffer, strlen(buffer)); ! } } ! static SchemeObject ! P_Num_Sprintf (SchemeObject form, ! SchemeObject num) ! { ! char buffer[1024]; ! char *f; ! SchemeObject ret; ! ! f = Get_String(form); ! switch (TYPE(num)) ! { ! case T_Fixnum: ! sprintf(buffer, f, FIXNUM(num)); ! break; ! ! case T_Bignum: ! sprintf(buffer, f, Bignum_To_Long(num)); ! break; ! ! case T_Flonum: ! sprintf(buffer, f, Get_Double(num)); ! break; ! ! default: ! Primitive_Error("illegal type - expected number"); } ! ret = Make_String(buffer, strlen (buffer)); ! return ret; } ! void ! elk_init_misc () { /* "seconds" was formerly known as "time" */ |