From 0df1477cf9b267281f5ca6740d71bd1fcaaae903 Mon Sep 17 00:00:00 2001 From: gdr Date: Sun, 26 Aug 2012 02:55:00 +0000 Subject: [PATCH] Before moving to git, checked in a bunch of apparent work-in-progress files that have been sitting idle for a few years. Unfortunately I can't gaurantee at the moment that these even compile let alone build. Caveat Emptor --- Makefile | 38 ++++- NOTES/status.bin | 6 +- NOTES/status.lib | 6 +- bin/mkdir/mkdir.asm | 93 ------------- bin/mkdir/mkdir.mac | 247 --------------------------------- build.tools/dmake.startup | 2 +- build.tools/fudgeinstall | 14 +- include/stddef.h | 2 +- include/sys/signal.h | 16 ++- lib/libc/gen/getpwent.c | 5 +- lib/libc/stdtime/Makefile | 24 ++-- lib/libc/stdtime/localtime.c | 5 +- lib/libc/stdtime/strftime.c | 42 +++++- paths.mk | 4 +- usr.sbin/newuser/newuser.c | 4 +- usr.sbin/syslogd/Makefile | 4 +- usr.sbin/syslogd/syslog.conf.5 | 3 +- usr.sbin/syslogd/syslogd.rez | 4 +- usr.sbin/syslogd/syslogd2.c | 183 +++++++++++++++++++++--- 19 files changed, 294 insertions(+), 408 deletions(-) delete mode 100644 bin/mkdir/mkdir.asm delete mode 100644 bin/mkdir/mkdir.mac diff --git a/Makefile b/Makefile index 9a4c517..3c59081 100644 --- a/Makefile +++ b/Makefile @@ -2,7 +2,43 @@ # This file is intended for use with dmake. There are constructs in # here that (as yet) make it unsuitable to be used on the GS. # -# $Id: Makefile,v 1.5 1997/12/22 01:11:08 gdr Exp $ +# $Id: Makefile,v 1.6 2012/08/26 02:54:57 gdr Exp $ +# + +.INCLUDE: /src/gno/paths.mk + +INSTALL *= /usr/bin/install +CHTYP *= /bin/chtyp + +headerInstall .USESHELL: + $(CHTYP) -lasm $(SRC_DIR)/gno/ainclude/m* + $(CHTYP) -lrez $(SRC_DIR)/gno/rinclude/*.rez + $(CHTYP) -lcc $(SRC_DIR)/gno/include/*.h + $(CHTYP) -lcc $(SRC_DIR)/gno/include/arpa/*.h + $(CHTYP) -lcc $(SRC_DIR)/gno/include/gno/*.h + $(CHTYP) -lcc $(SRC_DIR)/gno/include/machine/*.h + $(CHTYP) -lcc $(SRC_DIR)/gno/include/net/*.h + $(CHTYP) -lcc $(SRC_DIR)/gno/include/netinet/*.h + $(CHTYP) -lcc $(SRC_DIR)/gno/include/protocols/*.h + $(CHTYP) -lcc $(SRC_DIR)/gno/include/rpc/*.h + $(CHTYP) -lcc $(SRC_DIR)/gno/include/sys/*.h + $(CHTYP) -lcc $(SRC_DIR)/gno/orcacdefs/*.h + $(INSTALL) $(SRC_DIR)/gno/ainclude/m* /usr/ainclude + $(INSTALL) $(SRC_DIR)/gno/rinclude/*.rez /usr/rinclude + $(INSTALL) $(SRC_DIR)/gno/include/*.h /usr/include + $(INSTALL) $(SRC_DIR)/gno/include/arpa/*.h /usr/include/arpa + $(INSTALL) $(SRC_DIR)/gno/include/gno/*.h /usr/include/gno + $(INSTALL) $(SRC_DIR)/gno/include/machine/*.h /usr/include/machine + $(INSTALL) $(SRC_DIR)/gno/include/net/*.h /usr/include/net + $(INSTALL) $(SRC_DIR)/gno/include/netinet/*.h /usr/include/netinet + $(INSTALL) $(SRC_DIR)/gno/include/protocols/*.h /usr/include/protocols + $(INSTALL) $(SRC_DIR)/gno/include/rpc/*.h /usr/include/rpc + $(INSTALL) $(SRC_DIR)/gno/include/sys/*.h /usr/include/sys + $(INSTALL) $(SRC_DIR)/gno/orcacdefs/*.h /lib/orcacdefs + +# +# The remaining macros, targets, and recipies were used before trenco +# was fully serving the GNO stuff. # XFER = xfer TMP = /tmp/gnobuild diff --git a/NOTES/status.bin b/NOTES/status.bin index 7d7daed..94c7326 100644 --- a/NOTES/status.bin +++ b/NOTES/status.bin @@ -11,7 +11,7 @@ * * * Devin Reade, 10 April 1998. * * * -* $Id: status.bin,v 1.21 1999/04/29 15:48:51 gdr-ftp Exp $ * +* $Id: status.bin,v 1.22 2012/08/26 02:54:58 gdr Exp $ * * * ************************************************************************* @@ -95,7 +95,7 @@ Program 204 Req Owner Source Man Compile Test Target Target [Note] Comments /bin/conv Y # should be replaced by /usr/bin/udl /bin/cp Y Y /bin/csh -/bin/date Y Y tl Y +/bin/date Y Y mober Y # uploaded to mail distrib on trenco /bin/dd /bin/df N Y evan Y T Y Y Y RI /bin/domainname @@ -128,7 +128,7 @@ Program 204 Req Owner Source Man Compile Test Target Target [Note] Comments /bin/purge Y Y . Y . . . Y /bin/pwd N Y dave Y T Y Y Y RI /bin/rcp N Y dt Y T Y . Y RI -/bin/rm Y Y tribby +/bin/rm Y Y tribby Y T Y Y Y RI /bin/rmail N N /bin/rmdir N Y gdr Y T Y Y Y RI /bin/sh N Y gdr diff --git a/NOTES/status.lib b/NOTES/status.lib index 8fee445..dc0fe7f 100644 --- a/NOTES/status.lib +++ b/NOTES/status.lib @@ -1,4 +1,4 @@ -$Id: status.lib,v 1.8 1999/01/09 21:28:35 gdr-ftp Exp $ +$Id: status.lib,v 1.9 2012/08/26 02:54:58 gdr Exp $ Key for Code Status column: R == reviewed @@ -352,6 +352,7 @@ strncasecmp libc/str/case.c C 3 string.h strsep libc/string/str.c C 3 string.h stty libc/gen/compat.c C 3 sgtty.h suboptarg [var] libc/stdlib/getsubopt.c C 3 stdlib.h +swab libc/string/swab.c C 3 string.h swait libc/sys/trap.asm T 2 gno/gno.h sys_errlist [var] libc/stdio/perror.c T 3 stdio.h sys_nerr [var] libc/stdio/perror.c T 3 stdio.h @@ -399,7 +400,7 @@ writev libc/sys/syscall.c T 2 sys/uio.h zopen libc/stdio/ stdio.h Notes: - [var] symbol is a variable, not a fuction + [var] symbol is a variable, not a function [A] function needs to be modified before use [B] these sets of routines rely on a modified utmp/wtmp file structure. Therefore a large list of routines and programs @@ -538,6 +539,7 @@ BANK MODEL COMPLETE 78 0 0 Y N libc/string/case.c 78 0 0 Y N libc/string/str.c 78 0 0 Y Y libc/string/strerror.c + 78 0 0 Y N libc/string/swab.c 78 0 0 Y libc/sys/exec.c 78 0 0 Y libc/sys/syscall.c diff --git a/bin/mkdir/mkdir.asm b/bin/mkdir/mkdir.asm deleted file mode 100644 index 6796134..0000000 --- a/bin/mkdir/mkdir.asm +++ /dev/null @@ -1,93 +0,0 @@ -*********************************************************************** -* -* MKDIR.ASM - Version 1.0 -* Written by Tim Meekins -* Copyright (C) 1991 by Procyon, Inc. -* This program is hereby donated to the public domain. -* -* This program creates a new directory in the current (or specified) -* directory. -* -* TODO: -* o Add -p option. -* o Should I support creating multiple directories like Unix? -* -* HISTORY: -* 1.0 11/29/91 First version. -* -************************************************************************** - - keep mkdir - mcopy mkdir.mac - -mkdir START - jml ~GNO_COMMAND - END - -main START - -arg equ 0 -retval equ arg+4 -space equ retval+2 - - subroutine (2:argc,4:argv),space - - stz retval - - lda argc - dec a - bne part2 - ErrWriteCString #usage - jmp error -part2 dec a - beq part3 - ErrWriteCString #oneerr - jmp error - -part3 ldy #4 - lda [argv],y - sta arg - iny2 - lda [argv],y - sta arg+2 - - ldy #0 - short a -loop lda [arg],y - beq part4 - sta pathname+2,y - iny - bra loop - -part4 long a - sty pathname - Create createparm - bcc done - - sta errval - - ErrWriteCString #errleadin - Error errval - -error inc retval - -done return 2:retval - -createparm dc i2'5' -createpath dc i4'pathname' - dc i2'$C3' - dc i2'$0F' - dc i4'$0000' - dc i2'$0D' - -errval dc i2'0' - -usage dc c'Usage: mkdir directory.',h'0d0a00' -oneerr dc c'mkdir: too many arguments.',h'0d0a00' -errleadin dc c'mkdir: ',h'00' - -pathname dc i2'0' - ds 256 ;I dread any person entering a pathname -; ;this long! - - END diff --git a/bin/mkdir/mkdir.mac b/bin/mkdir/mkdir.mac deleted file mode 100644 index 4e60fbf..0000000 --- a/bin/mkdir/mkdir.mac +++ /dev/null @@ -1,247 +0,0 @@ - macro -&lab subroutine &parms,&work -&lab anop - aif c:&work,.a - lclc &work -&work setc 0 -.a - gbla &totallen - gbla &worklen -&worklen seta &work -&totallen seta 0 - aif c:&parms=0,.e - lclc &len - lclc &p - lcla &i -&i seta c:&parms -.b -&p setc &parms(&i) -&len amid &p,2,1 - aif "&len"=":",.c -&len amid &p,1,2 -&p amid &p,4,l:&p-3 - ago .d -.c -&len amid &p,1,1 -&p amid &p,3,l:&p-2 -.d -&p equ &totallen+3+&work -&totallen seta &totallen+&len -&i seta &i-1 - aif &i,^b -.e - tsc - sec - sbc #&work - tcs - inc a - phd - tcd - phb - phk - plb - mend - macro -&lab return &r -&lab anop - lclc &len - aif c:&r,.a - lclc &r -&r setc 0 -&len setc 0 - ago .h -.a -&len amid &r,2,1 - aif "&len"=":",.b -&len amid &r,1,2 -&r amid &r,4,l:&r-3 - ago .c -.b -&len amid &r,1,1 -&r amid &r,3,l:&r-2 -.c - aif &len<>2,.d - ldy &r - ago .h -.d - aif &len<>4,.e - ldx &r+2 - ldy &r - ago .h -.e - aif &len<>10,.g - ldy #&r - ldx #^&r - ago .h -.g - mnote 'Not a valid return length',16 - mexit -.h - aif &totallen=0,.i - lda &worklen+1 - sta &worklen+&totallen+1 - lda &worklen - sta &worklen+&totallen -.i - plb - pld - tsc - clc - adc #&worklen+&totallen - tcs - aif &len=0,.j - tya -.j - rtl - mend - macro -&lab ErrWriteCString &a1 -&lab ph4 &a1 - Tool $210c - mend - macro -&lab ERROR &a1 -&lab p16 $105,&a1 - mend - macro -&lab Create &a1 -&lab gsos $2001,&a1 - mend - macro -&lab tool &a1 -&lab ldx #&a1 - jsl $e10000 - mend - macro -&lab p16 &a1,&a2 -&lab jsl $E100A8 - dc i2'&a1' - dc i4'&a2' - mend - macro -&lab gsos &a1,&a2 -&lab jsl $E100A8 - dc i2'&a1' - dc i4'&a2' - mend - macro -&lab ph4 &parm - lclc &char - lclc &char1 - lclc &char2 -&lab anop -&char amid &parm,1,1 - aif "&char"="#",.immediate - aif "&char"="@",.at - aif s:longa=1,.chk1 - rep #%00100000 -.chk1 - aif "&char"<>"{",.chk2 -&char amid &parm,l:&parm,1 - aif "&char"<>"}",.error -&parm amid &parm,2,l:&parm-2 - ldy #2 - lda (&parm),y - pha - lda (&parm) - pha - ago .shorten -.chk2 - aif "&char"<>"[",.absolute - ldy #2 - lda &parm,y - pha - lda &parm - pha - ago .shorten -.absolute - lda &parm+2 - pha - lda &parm - pha - ago .shorten -.at -&char1 amid &parm,2,1 -&char2 setc &char1 - ph&char1 - aif l:&parm<3,.chk2a -&char2 amid &parm,3,1 -.chk2a - ph&char2 - ago .shorten -.immediate -&parm amid &parm,2,l:&parm-1 - pea +(&parm)|-16 - pea &parm - ago .done -.shorten - aif s:longa=1,.done - sep #%00100000 -.done - mexit -.error - mnote "Missing closing '}'",16 - mend - macro -&lab long &stat -&lab anop - lcla &t - lcla &len - lclc &ch -&t seta 0 -&len seta l:&stat -.a - aif &len=0,.b -&ch amid &stat,&len,1 - aif ("&ch"="x").or.("&ch"="y").or.("&ch"="i"),.i - aif ("&ch"="a").or.("&ch"="m"),.m -.c -&len seta &len-1 - ago ^a -.i - longi on -&t seta &t+16 - ago ^c -.m - longa on -&t seta &t+32 - ago ^c -.b - aif &t=0,.d - rep #&t -.d - mend - macro -&lab short &stat -&lab anop - lcla &t - lcla &len - lclc &ch -&t seta 0 -&len seta l:&stat -.a - aif &len=0,.b -&ch amid &stat,&len,1 - aif ("&ch"="x").or.("&ch"="y").or.("&ch"="i"),.i - aif ("&ch"="a").or.("&ch"="m"),.m -.c -&len seta &len-1 - ago ^a -.i - longi off -&t seta &t+16 - ago ^c -.m - longa off -&t seta &t+32 - ago ^c -.b - aif &t=0,.d - sep #&t -.d - mend - macro -&lab iny2 -&lab iny - iny - mend diff --git a/build.tools/dmake.startup b/build.tools/dmake.startup index 9aae418..a6c47b7 100644 --- a/build.tools/dmake.startup +++ b/build.tools/dmake.startup @@ -85,7 +85,7 @@ __OFLAG = -a0 AR := makelib #ar # archiver ARFLAGS+= #ruv - RM := /bin/cp -p rm # remove a file command + RM := /bin/rm # remove a file command RMFLAGS += CP := /bin/cp # copy files command diff --git a/build.tools/fudgeinstall b/build.tools/fudgeinstall index 877a424..9df3605 100755 --- a/build.tools/fudgeinstall +++ b/build.tools/fudgeinstall @@ -6,7 +6,7 @@ # # Devin Reade, September 1997. # -# $Id: fudgeinstall,v 1.9 1999/02/15 21:39:11 gdr-ftp Exp $ +# $Id: fudgeinstall,v 1.10 2012/08/26 02:54:59 gdr Exp $ # What is our release directory? (The second one must be HFS, and # may be the same as the first.) @@ -93,7 +93,7 @@ install -dV $RELDIR/var/run install -dV $RELDIR/var/spool echo "installing files in /" -install -V $ROOT/kern.971027 $RELDIR/kern +# kern done install -V $SRC/gno/verbatim/initrc $RELDIR echo "installing files in /HFSinclude" @@ -120,7 +120,7 @@ echo "installing files in /bin" # aroff done # binprint done # cat done -install -V /bin/center $RELDIR/bin +# center done install -V /usr/orca/bin/chmod $RELDIR/bin # chtyp done # cmp done @@ -170,10 +170,10 @@ install -V /bin/vi $RELDIR/bin # wc done # yes done -echo "installing files in /dev" -install -V /dev/modem $RELDIR/dev -install -V /dev/printer $RELDIR/dev -install -V /dev/null $RELDIR/dev +# echo "installing files in /dev" +# /dev/modem done +# /dev/null done +# /dev/printer done echo "installing files in /etc" # don't need cronlog, crontab yet diff --git a/include/stddef.h b/include/stddef.h index c632b15..90d67f5 100644 --- a/include/stddef.h +++ b/include/stddef.h @@ -59,6 +59,6 @@ typedef _BSD_WCHAR_T_ wchar_t; #define NULL 0 #endif -#define offsetof(type, member) ((size_t)(&((type *)0)->member)) +#define offsetof(type,member) ((size_t) (&(((type *)0L)->member))) #endif /* _STDDEF_H_ */ diff --git a/include/sys/signal.h b/include/sys/signal.h index 298cff3..2e671c7 100644 --- a/include/sys/signal.h +++ b/include/sys/signal.h @@ -36,7 +36,7 @@ * SUCH DAMAGE. * * @(#)signal.h 8.2 (Berkeley) 1/21/94 - * $Id: signal.h,v 1.3 1997/07/28 02:55:56 gdr Exp $ + * $Id: signal.h,v 1.4 2012/08/26 02:54:59 gdr Exp $ */ #ifndef _SYS_SIGNAL_H_ @@ -48,6 +48,20 @@ #include /* sigcontext; codes for SIGILL, SIGFPE */ #endif +#ifdef KERNEL +/* + * The kernel doesn't currently use these macros, but if they ever get + * into the kernel sources, they'd really cause havoc; the numbers differ + * between GNO and ORCA/C + */ +#undef SIGABRT +#undef SIGFPE +#undef SIGILL +#undef SIGINT +#undef SIGSEGV +#undef SIGTERM +#endif + #define SIGHUP 1 /* hangup */ #define SIGINT 2 /* interrupt */ #define SIGQUIT 3 /* quit */ diff --git a/lib/libc/gen/getpwent.c b/lib/libc/gen/getpwent.c index c8d0ef0..45ed483 100644 --- a/lib/libc/gen/getpwent.c +++ b/lib/libc/gen/getpwent.c @@ -35,7 +35,7 @@ * This is an old implementation and needs to be replaced; just not quite * yet -- gdr * - * $Id: getpwent.c,v 1.2 1997/09/21 06:05:00 gdr Exp $ + * $Id: getpwent.c,v 1.3 2012/08/26 02:54:59 gdr Exp $ * * This file is formatted with tab stops every 8 characters. */ @@ -44,8 +44,6 @@ segment "libc_gen__"; #endif -#define _PATH_PASSWD "/etc/passwd" - #if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "@(#)getpwent.c 5.21 (Berkeley) 3/14/91"; #endif /* LIBC_SCCS and not lint */ @@ -59,7 +57,6 @@ static char sccsid[] = "@(#)getpwent.c 5.21 (Berkeley) 3/14/91"; #include #define LENGTH 128 -#define _PATH_PASSWD "/etc/passwd" static struct passwd _pw_passwd; /* password structure */ static char pwline[LENGTH]; /* line in /etc/passwd */ diff --git a/lib/libc/stdtime/Makefile b/lib/libc/stdtime/Makefile index 959679f..fa5b56d 100644 --- a/lib/libc/stdtime/Makefile +++ b/lib/libc/stdtime/Makefile @@ -1,21 +1,25 @@ # # Makefile for libc/stdtime. # -# $Id: Makefile,v 1.3 1998/02/09 08:45:04 taubert Exp $ +# $Id: Makefile,v 1.4 2012/08/26 02:54:59 gdr Exp $ # -LIB= c -LIBPFX= $(OBJ_DIR)../ -OBJS= asctime.o difftime.o localtime.o strftime.o +LIB = c +LIBPFX = $(OBJ_DIR)../ +NO_REZ = true +# SRCS = asctime.c difftime.c localtime.c strftime.c +SRCS = localtime.c strftime.c +DEBUG = 25 +OPTIMIZE= 0 CFLAGS += -v -default: - @echo do not use this directory yet +#default: +# @echo do not use this directory yet .INCLUDE: /src/gno/lib/lib.mk -asctime.o:: private.h -difftime.o:: private.h -localtime.o:: private.h -strftime.o:: private.h +asctime.o: private.h +difftime.o: private.h +localtime.o: private.h +strftime.o: private.h diff --git a/lib/libc/stdtime/localtime.c b/lib/libc/stdtime/localtime.c index 28ce5a4..b776427 100644 --- a/lib/libc/stdtime/localtime.c +++ b/lib/libc/stdtime/localtime.c @@ -1,5 +1,5 @@ /* - * $Id: localtime.c,v 1.1 1997/09/21 06:22:10 gdr Exp $ + * $Id: localtime.c,v 1.2 2012/08/26 02:54:59 gdr Exp $ * * This file is formatted for tab stops every 8 columns. */ @@ -1278,6 +1278,8 @@ register struct tm * const tmp; #endif /* defined TM_GMTOFF */ } +#ifndef __ORCAC__ + char * #ifdef USE_PROTOS ctime(const time_t * const timep) @@ -1294,6 +1296,7 @@ const time_t * const timep; */ return asctime(localtime(timep)); } +#endif /* __ORCAC__ */ /* ** Adapted from code provided by Robert Elz, who writes: diff --git a/lib/libc/stdtime/strftime.c b/lib/libc/stdtime/strftime.c index b1e6257..3ee0ca4 100644 --- a/lib/libc/stdtime/strftime.c +++ b/lib/libc/stdtime/strftime.c @@ -14,7 +14,7 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * $Id: strftime.c,v 1.1 1997/09/21 06:22:10 gdr Exp $ + * $Id: strftime.c,v 1.2 2012/08/26 02:54:59 gdr Exp $ * * This file is formatted for tab stops every 8 columns. */ @@ -22,11 +22,14 @@ #ifdef __ORCAC__ segment "libc_stdtm"; #define NOID +#define CONST +#else +#define CONST const #endif #ifdef LIBC_RCS static const char rcsid[] = - "$Id: strftime.c,v 1.1 1997/09/21 06:22:10 gdr Exp $"; + "$Id: strftime.c,v 1.2 2012/08/26 02:54:59 gdr Exp $"; #endif #ifndef lint @@ -52,7 +55,9 @@ static const char sccsid[] = "@(#)strftime.c 5.4 (Berkeley) 3/14/89"; #include #include /* for _PATH_LOCALE */ #include - +#ifdef __ORCAC__ +#include /* for memcpy() */ +#endif #define LOCALE_HOME _PATH_LOCALE struct lc_time_T { @@ -69,12 +74,16 @@ struct lc_time_T { }; static struct lc_time_T localebuf; +#ifdef __ORCAC__ +#define Locale (&C_time_locale) +#else static struct lc_time_T * _loc P((void)); static int using_locale; #define Locale (using_locale ? &localebuf : &C_time_locale) +#endif -static const struct lc_time_T C_time_locale = { +static CONST struct lc_time_T C_time_locale = { { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" @@ -121,7 +130,7 @@ static const struct lc_time_T C_time_locale = { static char * _add P((const char *, char *, const char *)); static char * _conv P((int, const char *, char *, const char *)); -static char * _fmt P((const char *, const struct tm *, char *, const char *)); +static char * _fmt P((const char *, CONST struct tm *, char *, CONST char *)); static char * _secs P((const struct tm *, char *, const char *)); size_t strftime P((char *, size_t, const char *, const struct tm *)); @@ -152,8 +161,8 @@ strftime(s, maxsize, format, t) static char * #ifdef USE_PROTOS -_fmt(const char *format, const struct tm *const t, char *pt, - const char *const ptlim) +_fmt(const char *format, CONST struct tm *CONST t, char *pt, + CONST char *CONST ptlim) #else _fmt(format, t, pt, ptlim) const char *format; @@ -415,9 +424,12 @@ label: pt, ptlim); continue; case 'Z': +#ifndef __ORCAC__ + /* we don't currently have the tm_zone field */ if (t->tm_zone != NULL) pt = _add(t->tm_zone, pt, ptlim); else +#endif if (t->tm_isdst == 0 || t->tm_isdst == 1) { pt = _add(tzname[t->tm_isdst], pt, ptlim); @@ -476,7 +488,15 @@ _secs(t, pt, ptlim) struct tm tmp; /* Make a copy, mktime(3) modifies the tm struct. */ +#ifdef __ORCAC__ + /* + * ORCA/C pukes with an "illegal operand for the indirection + * operator" message + */ + memcpy(&tmp, t, sizeof(struct tm)); +#else tmp = *t; +#endif s = mktime(&tmp); (void) sprintf(buf, "%ld", s); return _add(buf, pt, ptlim); @@ -497,6 +517,8 @@ _add(str, pt, ptlim) return pt; } +#if 0 /* we don't seem to need this yet, so don't build it; it's untested */ + extern char *_PathLocale; int @@ -607,6 +629,12 @@ no_locale: * setlocale() assumes that we left the old locale alone. */ locale_buf = locale_buf_C; +#ifdef __ORCAC__ + memcpy(&localebuf, &C_time_locale, sizeof(struct lc_time_T)); +#else localebuf = C_time_locale; +#endif return -1; } + +#endif /* 0 */ diff --git a/paths.mk b/paths.mk index 6b7b6ce..8e5ef39 100644 --- a/paths.mk +++ b/paths.mk @@ -7,7 +7,7 @@ # # Devin Reade, 1997 # -# $Id: paths.mk,v 1.11 1999/03/19 05:53:31 gdr-ftp Exp $ +# $Id: paths.mk,v 1.12 2012/08/26 02:54:58 gdr Exp $ # # This one isn't really a path, but it affects the creation of path @@ -33,7 +33,7 @@ PRODOS_OBJS = true # # To turn this off, completely comment it out; don't just change the value. -# APPLESHARE_CASE_SENSITIVE = true +APPLESHARE_CASE_SENSITIVE = true # SRC_DIR is the top-level GNO source distribution directory (containing # $(SRC_DIR)/gno, $(SRC_DIR)/gno/lib, and so forth). It also corresponds diff --git a/usr.sbin/newuser/newuser.c b/usr.sbin/newuser/newuser.c index 42d7078..f0e3aa3 100644 --- a/usr.sbin/newuser/newuser.c +++ b/usr.sbin/newuser/newuser.c @@ -1,7 +1,7 @@ /* * newuser - add a new user to the system -- James Brookes * - * $Id: newuser.c,v 1.3 1999/02/15 00:22:11 gdr-ftp Exp $ + * $Id: newuser.c,v 1.4 2012/08/26 02:54:59 gdr Exp $ * * Changes for version 1.2 (Modifications by Devin Reade) * - account home directories are now made in /home rather than /user @@ -503,7 +503,7 @@ main (int argc, char **argv) acct_name, pass1, uid, gid, name, HOME, acct_name, DEFAULT_SHELL); fclose(FOutPtr); syslog(LOG_INFO, "created account %s pending validation", acct_name); - printf("\nYour account will be available after the system administrator"); + printf("\nYour account will be available after the system administrator "); printf("has had a\nchance to review it.\n"); } closelog(); diff --git a/usr.sbin/syslogd/Makefile b/usr.sbin/syslogd/Makefile index 0a59664..c5e5b2c 100644 --- a/usr.sbin/syslogd/Makefile +++ b/usr.sbin/syslogd/Makefile @@ -1,12 +1,12 @@ # -# $Id: Makefile,v 1.2 1998/10/31 19:02:47 gdr-ftp Exp $ +# $Id: Makefile,v 1.3 2012/08/26 02:54:59 gdr Exp $ # PROG = syslogd MAIN = syslogd2 SRCS = syslogd2.c -CFLAGS += -D__STACK_CHECK__ +CFLAGS += -D__STACK_CHECK__ -v STACK = 4096 BINDIR = /usr/sbin CHAPTER = 8 diff --git a/usr.sbin/syslogd/syslog.conf.5 b/usr.sbin/syslogd/syslog.conf.5 index 39c0d5b..de5db17 100644 --- a/usr.sbin/syslogd/syslog.conf.5 +++ b/usr.sbin/syslogd/syslog.conf.5 @@ -131,7 +131,8 @@ If a received message matches the specified .IR facility and is of the specified .IR level -.IR (or "a higher level) ," +.BI ( or +a higher level), and the first word in the message after the date matches the .IR program , the action specified in the diff --git a/usr.sbin/syslogd/syslogd.rez b/usr.sbin/syslogd/syslogd.rez index 1785d57..d1d5c86 100644 --- a/usr.sbin/syslogd/syslogd.rez +++ b/usr.sbin/syslogd/syslogd.rez @@ -1,5 +1,5 @@ /* - * $Id: syslogd.rez,v 1.2 1998/12/22 16:05:46 gdr-ftp Exp $ + * $Id: syslogd.rez,v 1.3 2012/08/26 02:55:00 gdr Exp $ */ #include "Types.Rez" @@ -9,7 +9,7 @@ resource rVersion (0x1, purgeable3, nocrossbank) { { 2, 0, 0, /* version */ alpha, /* development|alpha|beta|final|release */ - 1 /* non-final release number */ + 2 /* non-final release number */ }, verUS, "syslogd", diff --git a/usr.sbin/syslogd/syslogd2.c b/usr.sbin/syslogd/syslogd2.c index 8c9eab5..68632b6 100644 --- a/usr.sbin/syslogd/syslogd2.c +++ b/usr.sbin/syslogd/syslogd2.c @@ -4,7 +4,7 @@ * have sufficient bits for the facility/priority values, and at the time * his sources weren't available for modification. * - * $Id: syslogd2.c,v 1.1 1998/10/31 19:02:47 gdr-ftp Exp $ + * $Id: syslogd2.c,v 1.2 2012/08/26 02:55:00 gdr Exp $ */ /* @@ -27,6 +27,9 @@ * set up so that we can't get interrupted by SIGHUP or SIGTERM * while we're in the SIGALRM handler. * - should logInternal be using the internal "none" priority? + * - logMessage should be modified to ensure that there is a trailing + * newline. Internal messages (at least) via logInternal are currently + * missing newlines. */ /* @@ -71,10 +74,14 @@ #include #include #include +#include +#include #ifdef __STACK_CHECK__ #include #endif #include +#include /* debugging only */ +#include "syslogd.h" #ifndef EOF #define EOF (-1) @@ -85,8 +92,7 @@ #if 0 static void die (const char *message); #endif -static int logMessage (long facpri, char *msg, int len); -static void logInternal (const char *message, ...); +static int logMessage (int facpri, char *msg, int len); static int writeConsole (const char *buf, size_t size); #if 0 static void handle_HUP (int sig, int code); @@ -99,17 +105,25 @@ char MessageBuffer[_SYSLOG_BUFFERLEN]; int MessageBufferLen = 0; /* number of used chars in MessageBuffer */ int bytesToCopy; -long FacPri; /* facility/priorty */ +int FacPri; /* facility/priorty */ time_t Now; char * LogFile = NULL; /* temporary kludge */ int LogConsole = 0; /* temporary kludge */ +static void handleVersionZero (SyslogDataBuffer0_t *dataptr0); + int main(int argc, char **argv) { - int fd, ch; - SyslogDataBuffer_t *dataptr; + int fd, ch, isVersionZero; + union { + SyslogDataBuffer0_t *v0; + SyslogDataBuffer_t *vN; + } datap; char *p, *q; + Handle datahandle; + Word oldID, myID; + #ifdef DEBUG int loopcount = 0; #endif @@ -120,9 +134,12 @@ main(int argc, char **argv) { * to have to call atexit() since we may be in a signal handler * when we have to die. */ - _beginStackCheck(); + _beginStackCheck(); #endif + /* We'll be needing our mem mgr ID later ... */ + myID = _getUserID(); + while ((ch = getopt(argc, argv, "cF:")) != EOF) { switch(ch) { case 'c': @@ -142,6 +159,7 @@ main(int argc, char **argv) { char *myname; myname = __prognameGS(); writeConsole(argv[0], strlen(argv[0])); + writeConsole("/", 1); writeConsole(myname, strlen(myname)); } #endif @@ -180,10 +198,27 @@ main(int argc, char **argv) { logInternal("couldn't create port: %s", strerror(errno)); exit(1); } + logInternal("DEBUG: got port %d", Port); +#undef __SYSLOG_PORT_NAME +#define __SYSLOG_PORT_NAME "syslogd_test" + if (pbind (Port, __SYSLOG_PORT_NAME) == -1) { +#if 0 + logInternal("DEBUG: Bound port first time"); + /* KLUDGE KLUDGE KLUDGE + * Kill off the old v1 syslogd + */ + kill(3, SIGTERM); + sleep(1); + if (pbind(Port, __SYSLOG_PORT_NAME) == -1) { +#endif logInternal("couldn't bind port: %s", strerror(errno)); exit(1); +#if 0 + } +#endif } + logInternal("DEBUG: bound to port"); /* now loop forever waiting for messages */ for (;;) { @@ -198,14 +233,87 @@ main(int argc, char **argv) { } #endif + logInternal("Entering loop"); + /* block until a message comes in */ - dataptr = (SyslogDataBuffer_t *) preceive(Port); + datahandle = (Handle) preceive(Port); + + /* paranoia */ + if (datahandle == NULL) { + logInternal("Received NULL pointer. Discarded."); + continue; + } + CheckHandle(datahandle); + if (_toolErr) { + if (_toolErr == handleErr) { + logInternal("invalid handle 0x%lx: message dropped", + (unsigned long) datahandle); + } else { + logInternal("CheckHandle on 0x%lx failed with code %d", + (unsigned long) datahandle, + _toolErr); + } + continue; + } + + /* Change the memory block to be owned by our ID */ + oldID = SetHandleID(myID, datahandle); + + /* lock the handle */ + HLock(datahandle); + if (_toolErr) { + logInternal("HLock on 0x%lx failed with code %d", + (unsigned long) datahandle, _toolErr); + } + + /* , and + * free up the old ID + */ + + { + int *iptr, j; + char *cptr, c; + + iptr = (int *) *datahandle; + cptr = (char *) &iptr[5]; + logInternal("buffer: %d %d %d %d %d:\r", + iptr[0], iptr[1], iptr[2], iptr[3], iptr[4]); + for (j=0; jsdb0_version == 0); + + if (isVersionZero) { + handleVersionZero(datap.v0); + HUnlock(datahandle); /* ignore errors */ + + continue; + } else { + DeleteID (oldID); + logInternal("not version zero"); + HUnlock(datahandle); /* ignore errors */ + continue; + } + + if (isVersionZero) { + FacPri = datap.v0->sdb0_prio; + } else { /* verify that this isn't a garbage pointer */ - if (dataptr->sdb_magic != _SYSLOG_MAGIC) { + if (datap.vN->sdb_magic != _SYSLOG_MAGIC) { logInternal("Bad magic number 0x%X; message " "discarded. Caller may hang.", - dataptr->sdb_magic); + datap.vN->sdb_magic); + HUnlock(datahandle); /* ignore errors */ continue; } @@ -213,11 +321,12 @@ main(int argc, char **argv) { * Do the library and daemon agree on the format of the * SyslogDataBuffer_t structure? */ - if (dataptr->sdb_version != _SYSLOG_STRUCT_VERSION) { + if (datap.vN->sdb_version != _SYSLOG_STRUCT_VERSION) { logInternal("Message version mismatch. Expected %d " "got %d. Message discarded. Caller may hang.", _SYSLOG_STRUCT_VERSION, - dataptr->sdb_version); + datap.vN->sdb_version); + HUnlock(datahandle); /* ignore errors */ continue; } @@ -230,8 +339,8 @@ main(int argc, char **argv) { * This should be changed so that we immediately copy the * buffer and any other required info, then release the caller. */ - p = dataptr->sdb_buffer; - bytesToCopy = dataptr->sdb_msglen; + p = datap.vN->sdb_buffer; + bytesToCopy = datap.vN->sdb_msglen; if (*p == '<') { p++; FacPri = strtol(p, &q, 10); @@ -243,10 +352,12 @@ main(int argc, char **argv) { } else { p = q; } - bytesToCopy -= (p - dataptr->sdb_buffer); + bytesToCopy -= (p - datap.vN->sdb_buffer); } else { FacPri = LOG_MAKEPRI(LOG_USER, LOG_NOTICE); } + } + /* * At this point, p points the point in the caller's buffer * where we should start copying bytes. bytesToCopy @@ -256,7 +367,7 @@ main(int argc, char **argv) { * If the 'needtime' flag is set, we now copy a time stamp * into our own buffer (the user's buffer is untouched). */ - if (dataptr->sdb_needtime) { + if (datap.vN->sdb_needtime) { time(&Now); q = ctime(&Now) + 4; q[16] = '\0'; @@ -303,16 +414,40 @@ main(int argc, char **argv) { * See the comments in the syslog(3) code as to why we do * it with a busy-wait. */ - dataptr->sdb_busywait = 0; + datap.vN->sdb_busywait = 0; /* print the message */ logMessage(FacPri, MessageBuffer, MessageBufferLen); +#endif /* BORK */ } /*NOTREACHED*/ return 0; } +static void +handleVersionZero (SyslogDataBuffer0_t *dataptr0) +{ + int *offset; /* offset from dataptr0 of current string */ + int *length; + char *string; + + if (dataptr0->sdb0_numstrings == 0) { + logInternal("[zero length message]"); + return; + } + offset = (int *) ((char *) dataptr0 + sizeof(SyslogDataBuffer0_t)); + length = (int *) ((char *) dataptr0 + *offset); + string = ((char *) length) + sizeof(int); + + logMessage(dataptr0->sdb0_prio, string, *length); + if (dataptr0->sdb0_numstrings > 1) { + logInternal("Cannot handle multiple strings. Last %d ignored", + dataptr0->sdb0_numstrings -1); + } + return; +} + /* * Print the message of length to the relevent files based on * the facility/priority value . @@ -325,7 +460,7 @@ main(int argc, char **argv) { * LogFile (temporary kludge) */ static int -logMessage (long facpri, const char *msg, int len) { +logMessage (int facpri, const char *msg, int len) { int result = 0; if (LogConsole) { @@ -427,7 +562,7 @@ writeConsole (const char *buf, size_t size) { #pragma optimize 78 #pragma debug 0 -static void +void logInternal (const char *message, ...) { #define BUFFER_SIZE 256 static char buffer[BUFFER_SIZE]; @@ -444,11 +579,17 @@ logInternal (const char *message, ...) { p = ctime(&now) + 4; p[16] = '\0'; p = sprintmt(buffer, BUFFER_SIZE, "%s syslogd[%d]: ", p, getpid()); +#if 1 + p = vsprintmt(p, BUFFER_SIZE - (p - buffer), message, ap); +#else p = vsprintmt(p, p - buffer, message, ap); - - logMessage(LOG_MAKEPRI(LOG_DAEMON, LOG_CRIT), buffer, p - buffer); +#endif #if 0 + /* this is the one we *should* be using */ + logMessage(LOG_MAKEPRI(LOG_DAEMON, LOG_CRIT), buffer, p - buffer); +#else + /* for debugging only */ if ((p - buffer) < BUFFER_SIZE) { *p++ = '\r'; *p = '\0';