diff -c -r ingres/source/README.Linux /home/ingres/source/README.Linux *** ingres/source/README.Linux Fri Oct 13 13:54:49 1995 --- /home/ingres/source/README.Linux Fri Oct 13 13:50:06 1995 *************** *** 0 **** --- 1,7 ---- + I had to change some things to get Ingres going in ELF. However, I think the + changes will work with a.out as well. As a matter of fact all problems were + due to some hacking (redefining of libc symbols, uninitialized structures, + ...). Once these were removed everything worked well again. + + Michael + meskes@informatik.rwth-aachen.de diff -c -r ingres/source/conf/Makefile /home/ingres/source/conf/Makefile *** ingres/source/conf/Makefile Wed Jan 20 10:54:55 1993 --- /home/ingres/source/conf/Makefile Thu Oct 12 09:23:17 1995 *************** *** 105,111 **** # # Assorted commands & other garbage # ! CFLAGS= $(CONFIG) -I$H -O LDFLAGS= CHMOD= install -m BINMODE=751 --- 105,111 ---- # # Assorted commands & other garbage # ! CFLAGS= $(CONFIG) -I$H -O -I../ctlmod LDFLAGS= CHMOD= install -m BINMODE=751 *************** *** 128,156 **** # # Sysmodfunc ! sysmodfunc: version.o sysmodfunc.o $(DBULIB) $(CTLMOD) $(ALLLIB) ! $(CC) $(LDFLAGS) version.o $@.o $(DBULIB) $(OTHERS) $(ALLLIB) -o $@ $(INSTALL) -m $(SUMODE) $@ $(BIN) rm $@ # Sysdump ! sysdump: version.o sysdump.o $(CTLMOD) $(ALLLIB) ! $(CC) $(LDFLAGS) version.o $@.o $(OTHERS) $(ALLLIB) -o $@ $(INSTALL) -m $(SUMODE) $@ $(BIN) rm $@ # Monitor ! monitor: version.o monitor.o $(MONITOR) $(CTLMOD) $(IUTIL) $(GUTIL) ! $(CC) $(LDFLAGS) version.o $@.o $(OTHERS) $(MONITOR) $(CTLMOD) $(IUTIL) $(GUTIL) -o $@ $(INSTALL) -m $(BINMODE) $@ $(BIN) rm $@ # SysMonitor ! sysmonitor: version.o sysmonitor.o $(SYSMONITOR) $(DBULIB) $(IUTIL) $(GUTIL) ! $(CC) $(LDFLAGS) version.o $@.o $(OTHERS) $(SYSMONITOR) $(CTLMOD) $(IUTIL) $(GUTIL) -o $@ $(INSTALL) -m $(BINMODE) $@ $(BIN) rm $@ --- 128,156 ---- # # Sysmodfunc ! sysmodfunc: version.o sysmodfunc.o main.o $(DBULIB) $(CTLMOD) $(ALLLIB) ! $(CC) $(LDFLAGS) version.o $@.o main.o $(DBULIB) $(OTHERS) $(ALLLIB) -o $@ $(INSTALL) -m $(SUMODE) $@ $(BIN) rm $@ # Sysdump ! sysdump: version.o sysdump.o main.o $(CTLMOD) $(ALLLIB) ! $(CC) $(LDFLAGS) version.o $@.o main.o $(OTHERS) $(ALLLIB) -o $@ $(INSTALL) -m $(SUMODE) $@ $(BIN) rm $@ # Monitor ! monitor: version.o monitor.o main.o $(MONITOR) $(CTLMOD) $(IUTIL) $(GUTIL) ! $(CC) $(LDFLAGS) version.o $@.o main.o $(OTHERS) $(MONITOR) $(CTLMOD) $(IUTIL) $(GUTIL) -o $@ $(INSTALL) -m $(BINMODE) $@ $(BIN) rm $@ # SysMonitor ! sysmonitor: version.o sysmonitor.o main.o $(SYSMONITOR) $(DBULIB) $(IUTIL) $(GUTIL) ! $(CC) $(LDFLAGS) version.o $@.o main.o $(OTHERS) $(SYSMONITOR) $(CTLMOD) $(IUTIL) $(GUTIL) -o $@ $(INSTALL) -m $(BINMODE) $@ $(BIN) rm $@ *************** *** 158,165 **** ALLLIBS=$(PARSER) $(QRYMOD) $(DECOMP) $(OVQP) $(DBULIB) $(ALLLIB) ! univingres: version.o univingres.o $(ALLLIBS) ! $(CC) $(LDFLAGS) version.o $@.o $(OTHERS) $(ALLLIBS) $(MATH) -o $@ $(INSTALL) -m $(SUMODE) $@ $(BIN) rm $@ --- 158,165 ---- ALLLIBS=$(PARSER) $(QRYMOD) $(DECOMP) $(OVQP) $(DBULIB) $(ALLLIB) ! univingres: version.o univingres.o main.o $(ALLLIBS) ! $(CC) $(LDFLAGS) version.o $@.o main.o $(OTHERS) $(ALLLIBS) $(MATH) -o $@ $(INSTALL) -m $(SUMODE) $@ $(BIN) rm $@ diff -c -r ingres/source/conf/main.c /home/ingres/source/conf/main.c *** ingres/source/conf/main.c Fri Oct 13 13:54:53 1995 --- /home/ingres/source/conf/main.c Thu Oct 12 12:36:51 1995 *************** *** 0 **** --- 1,348 ---- + # include + # include + # include "ctlmod.h" + # include "pipes.h" + # include + # include + # include + # include + + + /* + ** MAIN -- initialize control module + ** + ** Called only once, this routine sets everything up. + ** + ** The format of the argv is as follows: + ** argv[0] -- pathname + ** argv[1] -- file descriptor for input pipe or'ed with + ** 0100 to make it printable in a 'ps'. + ** argv[2] -- Fileset + ** argv[3] -- Usercode + ** argv[4] -- Database + ** argv[5] -- Pathname + ** + ** Parameters: + ** argc, argv -- as usual + ** + ** Returns: + ** none + ** + ** Side Effects: + ** Many; see code. + ** Proc_name is set to the working process name. + ** Fileset, Database, Usercode -- set from argv. + ** Trace vectors are initialized. + ** + ** Requires: + ** markopen -- to mark the open files. + ** The input pipe must have the Cm struct in it as + ** the first data. + ** + ** Trace Flags: + ** 1 + */ + + extern struct resp Resp; /* State response structure */ + extern struct _cm_t Cm; /* the system topography map */ + extern struct _ctx_t Ctx; /* the current context */ + extern int Syncs[CM_MAXPROC];/* expected SYNC's from each proc */ + + /* General System Information */ + extern char *Proc_name; /* the 'name' of the currently running proc */ + extern char *Fileset; /* a unique string to make filenames from */ + extern char *Database; /* the name of the current database */ + extern char *Usercode; /* the code of the current user */ + extern char *Pathname; /* the pathname of the root of INGRES */ + extern int Equel; /* set if running an Equel program */ + extern int RubLevel; /* rubout level, -1 if ignored */ + extern struct out_arg Out_arg; /* output arguments */ + extern jmp_buf CmReset; /* restart addr on interrupt */ + # ifdef xMONITOR + extern struct monitor CmMonBuf; /* monitor buffer for CM overhead */ + # endif xMONITOR + + void + main(argc, argv) + int argc; + char **argv; + { + register int i; + struct fn_def *f; + register char **q; + register char *p; + pb_t pb; + static int reenter; + extern void rubcatch(); + extern error(); + bool nobuffer; + extern pb_t *MonPpb; + extern long CmOfiles; /* defined in markopen.c */ + int lock_type = -1; /* type of data base lock to request */ + int wait_action = -1; /* type of wait action on the data abse */ + char *args; /* used to process args of sysmod */ + int j; + + memset(&pb,0,sizeof(pb_t)); + Ctx.ctx_name = Proc_name = argv[0]; + argv[argc] = NULL; + nobuffer = tTrace(argv, argv[1][1], FuncVect[0]->fn_tvect, 30); + Ctx.ctx_tvect = tT; + reenter = 0; + setjmp(CmReset); + if (reenter++) + exit(-1); + if (signal(SIGINT, SIG_IGN) == SIG_DFL) + signal(SIGINT, rubcatch); + else + RubLevel = -1; + MonPpb = &pb; + + /* mark all currently open files */ + acc_init(); + markopen(&CmOfiles); + + /* + ** Process argument vector. + ** The easy ones just involve saving a pointer. + ** argv[1] is used to get a file descriptor; this + ** becomes the initial input. This file + ** is read to fill in the Cm (configuration) + ** structure. + */ + + if (tTf(1, 0) || argc < 6) + prargs(argc, argv); + + if (argc < 6) + syserr("main: argc=%d", argc); + q = &argv[2]; + Fileset = *q++; + Usercode = *q++; + Database = *q++; + Pathname = *q++; + + i = read(argv[1][0] & 077, (char *) &Cm, sizeof Cm); + if (i != sizeof Cm) + syserr("main: read %d", i); + + /* set up other globals */ + Ctx.ctx_name = Proc_name = Cm.cm_myname; + initbuf(Qbuf, QbufSize, ERR_QBUF, error); + Ctx.ctx_cmark = Ctx.ctx_pmark = markbuf(Qbuf); + + if ( !sequal( Proc_name, "SYSMOD")) + { + /* process flags */ + for (; (p = *q) != NULL; q++) + { + if (p[0] != '-') + continue; + switch (p[1]) + { + case 'l': /* Lock type */ + if ( Alockdes < 0 ) + break; + if ( p[2] < '0' || p[2] > '9' ) + syserr("Illegal lock number %s",&p[2]); + lock_type = atoi(&p[2]); + if ( wait_action < 0 ) + break; + if ( setdbl(wait_action,lock_type) < 0 ) + { + syserr("Data base temporarily unavailable"); + } + break; + case 'W': + /* + ** type of data base wait to preform + */ + if ( Alockdes < 0 ) + break; + if ( p[2] < '0' || p[2] > '9' ) + syserr("Illegal wait action %s",&p[2]); + wait_action = atoi(&p[2]); + if ( lock_type < 0 ) + break; + if ( setdbl(wait_action,lock_type) < 0 ) + { + syserr("Data base temporarily unavailable"); + } + break; + case '&': /* equel program */ + Equel = 1; + if (p[6] != '\0') + Equel = 2; + break; + + case 'c': /* c0 sizes */ + Out_arg.c0width = atoi(&p[2]); + break; + + case 'i': /* iNsizes */ + switch (p[2]) + { + + case '1': + Out_arg.i1width = atoi(&p[3]); + break; + + case '2': + Out_arg.i2width = atoi(&p[3]); + break; + + case '4': + Out_arg.i4width = atoi(&p[3]); + break; + + } + break; + + case 'f': /* fN sizes */ + p = &p[3]; + i = *p++; + while (*p != '.') + p++; + *p++ = 0; + if ((*q)[2] == '4') + { + Out_arg.f4width = atoi(&(*q)[4]); + Out_arg.f4prec = atoi(p); + Out_arg.f4style = i; + } + else + { + Out_arg.f8width = atoi(&(*q)[4]); + Out_arg.f8prec = atoi(p); + Out_arg.f8style = i; + } + *--p = '.'; /* restore parm for dbu's */ + break; + + case 'v': /* vertical seperator */ + Out_arg.coldelim = p[2]; + break; + + } + } + + } + /* set up trace flags */ + for (i = 0; i < NumFunc; i++) + { + f = FuncVect[i]; + if (f->fn_tflag != '\0') + nobuffer |= tTrace(argv, f->fn_tflag, f->fn_tvect, f->fn_tsize); + Ctx.ctx_name = Proc_name = f->fn_name; + (*f->fn_initfn)(argc, argv); + } + /* end of ingres flags */ + + /* + ** Buffer standard output + ** + ** Since VM/UNIX always buffers, we force non-buffered + ** output if any trace flags are set. + */ + + if (!nobuffer) + set_so_buf(); + else + setbuf(stdout, NULL); + + /* if Equel, tell the program to go ahead */ + if (Equel && Cm.cm_myproc == 1) + { + pb_prime(&pb, PB_REG); + pb.pb_st = PB_FRONT; + pb_flush(&pb); + } + + /* + ** Start executing routines. + ** + ** Do_seq knows to exit if we get an EOF on the input pipe. + */ + + i = setjmp(CmReset); + # ifdef xMONITOR + markperf(&CmMonBuf); + # endif xMONITOR + initbuf(Qbuf, QbufSize, ERR_QBUF, error); + clrmem((char *) &Ctx, sizeof Ctx); + Ctx.ctx_cmark = Ctx.ctx_pmark = markbuf(Qbuf); + Ctx.ctx_name = Proc_name = Cm.cm_myname; + Ctx.ctx_tvect = tT = FuncVect[0]->fn_tvect; + # ifdef xCTR2 + if (tTf(1, 1)) + lprintf("main: setjmp: %d\n", i); + # endif + if (RubLevel >= 0) + signal(SIGINT, rubcatch); + closeall(FALSE, CmOfiles); + for (;;) + { + Cm.cm_input = Cm.cm_rinput; + pb.pb_st = PB_UNKNOWN; + do_seq(&pb); + } + } + /* + ** RUBPROC -- process rubout signals + ** + ** This routine does the processing needed on rubouts + ** when running with the control module. It basically + ** flushes pipes. + ** + ** Parameters: + ** none. + ** + ** Returns: + ** never + ** + ** Side Effects: + ** Flushes pipes, etc. + */ + + rubproc() + { + register int i; + pb_t pb; + register int stat; + + /* + ** Update the world for consistency. + */ + + fflush(stdout); + closecatalog(FALSE); + i = pageflush(NULL); + if (i != 0) + syserr("rubproc: pageflush %d", i); + + /* + ** Send SYNC blocks to all processes that are adjacent + ** in the write direction. + ** Arrange to ignore blocks from all processes that + ** are adjacent in the read direction. + */ + + pb_prime(&pb, PB_SYNC); + for (i = 0; i < CM_MAXPROC; i++) + { + stat = Cm.cm_proc[i].pr_stat; + if ((stat & PR_RADJCT) != 0) + Syncs[i]++; + if ((stat & PR_WADJCT) != 0) + { + pb.pb_proc = i; + pb_write(&pb); + } + } + + /* + ** Cleanup and exit. + */ + + cm_cleanup(2); + } diff -c -r ingres/source/ctlmod/Makefile /home/ingres/source/ctlmod/Makefile *** ingres/source/ctlmod/Makefile Mon Jan 18 16:32:33 1993 --- /home/ingres/source/ctlmod/Makefile Tue Sep 26 15:26:22 1995 *************** *** 19,25 **** cm_reset.o cm_cleanup.o cm_close.o \ prvect.o getp.o monitor.o av_files.o HDRS= pipes.h proc.h state.h ctlmod.h ! SRCS1= main.c error.c proc_err.c initp.c setp.c resetp.c \ init_qt.c call.c sysdump.c mapvars.c \ do_seq.c readinput.c do_st.c send_off.c call_fn.c \ readmon.c readqry.c writeqry.c range.c treepr.c --- 19,25 ---- cm_reset.o cm_cleanup.o cm_close.o \ prvect.o getp.o monitor.o av_files.o HDRS= pipes.h proc.h state.h ctlmod.h ! SRCS1= main.c error.c proc_err.c initp.c setp.c resetp.c \ init_qt.c call.c sysdump.c mapvars.c \ do_seq.c readinput.c do_st.c send_off.c call_fn.c \ readmon.c readqry.c writeqry.c range.c treepr.c Only in /home/ingres/source/ctlmod: do_seq.c~ diff -c -r ingres/source/ctlmod/main.c /home/ingres/source/ctlmod/main.c *** ingres/source/ctlmod/main.c Tue Nov 24 11:00:04 1992 --- /home/ingres/source/ctlmod/main.c Thu Oct 12 15:46:42 1995 *************** *** 7,48 **** # include # include - - /* - ** MAIN -- initialize control module - ** - ** Called only once, this routine sets everything up. - ** - ** The format of the argv is as follows: - ** argv[0] -- pathname - ** argv[1] -- file descriptor for input pipe or'ed with - ** 0100 to make it printable in a 'ps'. - ** argv[2] -- Fileset - ** argv[3] -- Usercode - ** argv[4] -- Database - ** argv[5] -- Pathname - ** - ** Parameters: - ** argc, argv -- as usual - ** - ** Returns: - ** none - ** - ** Side Effects: - ** Many; see code. - ** Proc_name is set to the working process name. - ** Fileset, Database, Usercode -- set from argv. - ** Trace vectors are initialized. - ** - ** Requires: - ** markopen -- to mark the open files. - ** The input pipe must have the Cm struct in it as - ** the first data. - ** - ** Trace Flags: - ** 1 - */ - struct resp Resp; /* State response structure */ struct _cm_t Cm; /* the system topography map */ struct _ctx_t Ctx; /* the current context */ --- 7,12 ---- *************** *** 56,349 **** char *Pathname; /* the pathname of the root of INGRES */ int Equel; /* set if running an Equel program */ int RubLevel; /* rubout level, -1 if ignored */ - extern struct out_arg Out_arg; /* output arguments */ jmp_buf CmReset; /* restart addr on interrupt */ # ifdef xMONITOR struct monitor CmMonBuf; /* monitor buffer for CM overhead */ # endif xMONITOR - void - main(argc, argv) - int argc; - char **argv; - { - register int i; - struct fn_def *f; - register char **q; - register char *p; - pb_t pb; - static int reenter; - extern void rubcatch(); - extern error(); - bool nobuffer; - extern pb_t *MonPpb; - extern long CmOfiles; /* defined in markopen.c */ - int lock_type = -1; /* type of data base lock to request */ - int wait_action = -1; /* type of wait action on the data abse */ - char *args; /* used to process args of sysmod */ - int j; - - Ctx.ctx_name = Proc_name = argv[0]; - argv[argc] = NULL; - nobuffer = tTrace(argv, argv[1][1], FuncVect[0]->fn_tvect, 30); - Ctx.ctx_tvect = tT; - reenter = 0; - setjmp(CmReset); - if (reenter++) - exit(-1); - if (signal(SIGINT, SIG_IGN) == SIG_DFL) - signal(SIGINT, rubcatch); - else - RubLevel = -1; - MonPpb = &pb; - - /* mark all currently open files */ - acc_init(); - markopen(&CmOfiles); - - /* - ** Process argument vector. - ** The easy ones just involve saving a pointer. - ** argv[1] is used to get a file descriptor; this - ** becomes the initial input. This file - ** is read to fill in the Cm (configuration) - ** structure. - */ - - if (tTf(1, 0) || argc < 6) - prargs(argc, argv); - - if (argc < 6) - syserr("main: argc=%d", argc); - q = &argv[2]; - Fileset = *q++; - Usercode = *q++; - Database = *q++; - Pathname = *q++; - - i = read(argv[1][0] & 077, (char *) &Cm, sizeof Cm); - if (i != sizeof Cm) - syserr("main: read %d", i); - - - /* set up other globals */ - Ctx.ctx_name = Proc_name = Cm.cm_myname; - initbuf(Qbuf, QbufSize, ERR_QBUF, error); - Ctx.ctx_cmark = Ctx.ctx_pmark = markbuf(Qbuf); - - - if ( !sequal( Proc_name, "SYSMOD")) - { - /* process flags */ - for (; (p = *q) != NULL; q++) - { - if (p[0] != '-') - continue; - switch (p[1]) - { - case 'l': /* Lock type */ - if ( Alockdes < 0 ) - break; - if ( p[2] < '0' || p[2] > '9' ) - syserr("Illegal lock number %s",&p[2]); - lock_type = atoi(&p[2]); - if ( wait_action < 0 ) - break; - if ( setdbl(wait_action,lock_type) < 0 ) - { - syserr("Data base temporarily unavailable"); - } - break; - case 'W': - /* - ** type of data base wait to preform - */ - if ( Alockdes < 0 ) - break; - if ( p[2] < '0' || p[2] > '9' ) - syserr("Illegal wait action %s",&p[2]); - wait_action = atoi(&p[2]); - if ( lock_type < 0 ) - break; - if ( setdbl(wait_action,lock_type) < 0 ) - { - syserr("Data base temporarily unavailable"); - } - break; - case '&': /* equel program */ - Equel = 1; - if (p[6] != '\0') - Equel = 2; - break; - - case 'c': /* c0 sizes */ - Out_arg.c0width = atoi(&p[2]); - break; - - case 'i': /* iNsizes */ - switch (p[2]) - { - - case '1': - Out_arg.i1width = atoi(&p[3]); - break; - - case '2': - Out_arg.i2width = atoi(&p[3]); - break; - - case '4': - Out_arg.i4width = atoi(&p[3]); - break; - - } - break; - - case 'f': /* fN sizes */ - p = &p[3]; - i = *p++; - while (*p != '.') - p++; - *p++ = 0; - if ((*q)[2] == '4') - { - Out_arg.f4width = atoi(&(*q)[4]); - Out_arg.f4prec = atoi(p); - Out_arg.f4style = i; - } - else - { - Out_arg.f8width = atoi(&(*q)[4]); - Out_arg.f8prec = atoi(p); - Out_arg.f8style = i; - } - *--p = '.'; /* restore parm for dbu's */ - break; - - case 'v': /* vertical seperator */ - Out_arg.coldelim = p[2]; - break; - - } - } - - } - /* set up trace flags */ - for (i = 0; i < NumFunc; i++) - { - f = FuncVect[i]; - if (f->fn_tflag != '\0') - nobuffer |= tTrace(argv, f->fn_tflag, f->fn_tvect, f->fn_tsize); - Ctx.ctx_name = Proc_name = f->fn_name; - (*f->fn_initfn)(argc, argv); - } - /* end of ingres flags */ - - /* - ** Buffer standard output - ** - ** Since VM/UNIX always buffers, we force non-buffered - ** output if any trace flags are set. - */ - - if (!nobuffer) - set_so_buf(); - else - setbuf(stdout, NULL); - - /* if Equel, tell the program to go ahead */ - if (Equel && Cm.cm_myproc == 1) - { - pb_prime(&pb, PB_REG); - pb.pb_st = PB_FRONT; - pb_flush(&pb); - } - - /* - ** Start executing routines. - ** - ** Do_seq knows to exit if we get an EOF on the input pipe. - */ - - i = setjmp(CmReset); - # ifdef xMONITOR - markperf(&CmMonBuf); - # endif xMONITOR - initbuf(Qbuf, QbufSize, ERR_QBUF, error); - clrmem((char *) &Ctx, sizeof Ctx); - Ctx.ctx_cmark = Ctx.ctx_pmark = markbuf(Qbuf); - Ctx.ctx_name = Proc_name = Cm.cm_myname; - Ctx.ctx_tvect = tT = FuncVect[0]->fn_tvect; - # ifdef xCTR2 - if (tTf(1, 1)) - lprintf("main: setjmp: %d\n", i); - # endif - if (RubLevel >= 0) - signal(SIGINT, rubcatch); - closeall(FALSE, CmOfiles); - for (;;) - { - Cm.cm_input = Cm.cm_rinput; - pb.pb_st = PB_UNKNOWN; - do_seq(&pb); - } - } - /* - ** RUBPROC -- process rubout signals - ** - ** This routine does the processing needed on rubouts - ** when running with the control module. It basically - ** flushes pipes. - ** - ** Parameters: - ** none. - ** - ** Returns: - ** never - ** - ** Side Effects: - ** Flushes pipes, etc. - */ - - rubproc() - { - register int i; - pb_t pb; - register int stat; - - /* - ** Update the world for consistency. - */ - - fflush(stdout); - closecatalog(FALSE); - i = pageflush(NULL); - if (i != 0) - syserr("rubproc: pageflush %d", i); - - /* - ** Send SYNC blocks to all processes that are adjacent - ** in the write direction. - ** Arrange to ignore blocks from all processes that - ** are adjacent in the read direction. - */ - - pb_prime(&pb, PB_SYNC); - for (i = 0; i < CM_MAXPROC; i++) - { - stat = Cm.cm_proc[i].pr_stat; - if ((stat & PR_RADJCT) != 0) - Syncs[i]++; - if ((stat & PR_WADJCT) != 0) - { - pb.pb_proc = i; - pb_write(&pb); - } - } - - /* - ** Cleanup and exit. - */ - - cm_cleanup(2); - } --- 20,27 ---- Only in /home/ingres/source/ctlmod: pb_write.c~ diff -c -r ingres/source/gutil/perror.c /home/ingres/source/gutil/perror.c *** ingres/source/gutil/perror.c Wed Jan 23 20:56:10 1985 --- /home/ingres/source/gutil/perror.c Thu Oct 12 08:52:56 1995 *************** *** 10,19 **** * on 1, instead of 2 (which is usally closed). */ ! int errno; ! int sys_nerr; ! char *sys_errlist[]; ! perror(s) char *s; { register char *c; --- 10,19 ---- * on 1, instead of 2 (which is usally closed). */ ! extern int errno; ! extern int sys_nerr; ! extern char *sys_errlist[]; ! p_error(s) char *s; { register char *c; diff -c -r ingres/source/gutil/syserr.c /home/ingres/source/gutil/syserr.c *** ingres/source/gutil/syserr.c Fri Sep 18 03:13:31 1992 --- /home/ingres/source/gutil/syserr.c Thu Oct 12 08:54:25 1995 *************** *** 54,60 **** if (errno) { exitvalue = errno; ! perror("UNIX error"); } if (Accerror != 0) { --- 54,60 ---- if (errno) { exitvalue = errno; ! p_error("UNIX error"); } if (Accerror != 0) { diff -c -r ingres/source/iutil/lock.c /home/ingres/source/iutil/lock.c *** ingres/source/iutil/lock.c Mon Jan 18 20:51:24 1993 --- /home/ingres/source/iutil/lock.c Thu Oct 12 08:54:56 1995 *************** *** 36,42 **** { # ifdef xATR1 if ( tTf(28,4) ) ! perror("set_up_lock getservbyname"); # endif return ( -1 ); } --- 36,42 ---- { # ifdef xATR1 if ( tTf(28,4) ) ! p_error("set_up_lock getservbyname"); # endif return ( -1 ); } *************** *** 48,54 **** { # ifdef xATR1 if ( tTf(28,4) ) ! perror("set_up_lock socket"); # endif return ( -1 ); } --- 48,54 ---- { # ifdef xATR1 if ( tTf(28,4) ) ! p_error("set_up_lock socket"); # endif return ( -1 ); } *************** *** 66,72 **** { # ifdef xATR1 if ( tTf(28,4) ) ! perror("set_up_lock connect"); # endif close(to_driver); return ( -1 ); --- 66,72 ---- { # ifdef xATR1 if ( tTf(28,4) ) ! p_error("set_up_lock connect"); # endif close(to_driver); return ( -1 ); diff -c -r ingres/source/support/Makefile /home/ingres/source/support/Makefile *** ingres/source/support/Makefile Tue Jan 19 00:53:58 1993 --- /home/ingres/source/support/Makefile Thu Oct 12 09:17:22 1995 *************** *** 93,99 **** $(CC) $(CFLAGS) -I../ctlmod -c ingres.c ingreslock: ildr.o initsocket.o ! $(CC) $(LDFLAGS) -o ingreslock ildr.o initsocket.o $(CHMOD) $(BINMODE) ingreslock $(BIN) rm $@ --- 93,99 ---- $(CC) $(CFLAGS) -I../ctlmod -c ingres.c ingreslock: ildr.o initsocket.o ! $(CC) $(LDFLAGS) -o ingreslock ildr.o initsocket.o $(LIBS1) $(CHMOD) $(BINMODE) ingreslock $(BIN) rm $@ diff -c -r ingres/source/support/destroydb.c /home/ingres/source/support/destroydb.c *** ingres/source/support/destroydb.c Mon Jan 18 20:43:15 1993 --- /home/ingres/source/support/destroydb.c Thu Oct 12 08:55:44 1995 *************** *** 152,158 **** if ( unlink(ztack(ztack(Pathname,"/data/base/"),dbase)) == -1 ) syserr("Can't unlink the indirect file %s",dbase); if (rmdir(dbase)) ! perror("removing database"); } } --- 152,158 ---- if ( unlink(ztack(ztack(Pathname,"/data/base/"),dbase)) == -1 ) syserr("Can't unlink the indirect file %s",dbase); if (rmdir(dbase)) ! p_error("removing database"); } } diff -c -r ingres/source/support/ildr.c /home/ingres/source/support/ildr.c *** ingres/source/support/ildr.c Mon Jan 18 22:31:10 1993 --- /home/ingres/source/support/ildr.c Thu Oct 12 08:56:32 1995 *************** *** 104,110 **** if ( num_des == -1 ) { # ifdef DEBUG ! perror("DRIVER:num_des = -1"); # endif DEBUG /* ** a bit of defensive programming. --- 104,110 ---- if ( num_des == -1 ) { # ifdef DEBUG ! p_error("DRIVER:num_des = -1"); # endif DEBUG /* ** a bit of defensive programming. *************** *** 155,161 **** # ifdef DEBUG else { ! perror("accept"); sleep(1); } printf("DRIVER: new file %d (%o)\n",fd,(1<