home *** CD-ROM | disk | FTP | other *** search
Text File | 1991-12-11 | 204.4 KB | 6,744 lines |
- *** /tmp/release17219/EzMenu/EzMenu.c Tue Nov 12 16:52:44 1991
- --- EzMenu/EzMenu.c Sat Nov 2 17:22:40 1991
- ***************
- *** 363,371 ****
- EzMenuWidget newez = (EzMenuWidget) new;
- EzMenuWidget requestez = (EzMenuWidget) request;
-
- ! #ifdef DEBUG
- fprintf(stderr,"Initialize %s\n",
- ! XtWidgetName(request);
- #endif
-
- /* just copy the string that will be used to initialize the menu */
- --- 363,371 ----
- EzMenuWidget newez = (EzMenuWidget) new;
- EzMenuWidget requestez = (EzMenuWidget) request;
-
- ! #ifdef EZMENU_DEBUG
- fprintf(stderr,"Initialize %s\n",
- ! XtName(request);
- #endif
-
- /* just copy the string that will be used to initialize the menu */
- *** /tmp/release17219/Imakefile Tue Nov 12 16:52:56 1991
- --- Imakefile Sat Nov 2 20:26:11 1991
- ***************
- *** 32,48 ****
- # How excited are you about debugging? This can be -g, -O, or nothing.
- CDEBUGFLAGS = -g
-
- ! # Are you using gcc? If so, read on:
- ! # [from Brendan Kehoe (brendan@cs.widener.edu)]
- ! # dirsend.c shouldn't be compiled with Gnu C. Until gcc 2.0, structure
- ! # passing is completely hosed on Suns -- and the inet_ntoa() calls in
- ! # dirsend will seg fault.
- ! # You should uncommment this if you're using gcc.
- ! #dirsend.o:
- ! # cc -c $(CFLAGS) dirsend.c
-
- ! # Does your system have re_comp() and re_exec()? If not, uncomment the
- ! # following definitions.
- #REGEXC = regex.c
- #REGEXO = regex.o
-
- --- 32,42 ----
- # How excited are you about debugging? This can be -g, -O, or nothing.
- CDEBUGFLAGS = -g
-
- ! # To enable Prospero tracing (controlled by the -debug option), uncomment this
- ! #PDEBUG = -DDEBUG
-
- ! # Does your system have re_comp() and re_exec(), or regcmp() and regex()
- ! # [in the case of A/UX]? If not, uncomment the following definitions.
- #REGEXC = regex.c
- #REGEXO = regex.o
-
- ***************
- *** 55,73 ****
- MakeSubdirs($(SUBDIRS))
-
- ASRCS = aquery.c atalloc.c dirsend.c get_pauth.c get_vdir.c \
- ! p_err_text.c ptalloc.c stcopy.c support.c vl_comp.c vlalloc.c
- XSRCS = xarchie.c db.c actions.c types.c classnames.c procquery.c settings.c \
- ! ftp.c alert.c confirm.c
-
- AOBJS = aquery.o atalloc.o dirsend.o get_pauth.o get_vdir.o \
- ! p_err_text.o ptalloc.o stcopy.o support.o vl_comp.o vlalloc.o
- XOBJS = xarchie.o db.o actions.o types.o classnames.o procquery.o settings.o \
- ! ftp.o alert.o confirm.o
-
- SRCS = $(ASRCS) $(XSRCS) $(REGEXC)
- OBJS = $(AOBJS) $(XOBJS) $(REGEXO)
-
- ! DEFINES = -DARCHIE -DXARCHIE
- INCLUDES = -I. -I$(EZMENUDIR)
-
- DEPLIBS = $(EZMENULIB) XawClientDepLibs
- --- 49,67 ----
- MakeSubdirs($(SUBDIRS))
-
- ASRCS = aquery.c atalloc.c dirsend.c get_pauth.c get_vdir.c \
- ! perrmesg.c ptalloc.c stcopy.c support.c vl_comp.c vlalloc.c
- XSRCS = xarchie.c db.c actions.c types.c classnames.c procquery.c settings.c \
- ! ftp.c alert.c confirm.c dialog.c
-
- AOBJS = aquery.o atalloc.o dirsend.o get_pauth.o get_vdir.o \
- ! perrmesg.o ptalloc.o stcopy.o support.o vl_comp.o vlalloc.o
- XOBJS = xarchie.o db.o actions.o types.o classnames.o procquery.o settings.o \
- ! ftp.o alert.o confirm.o dialog.o
-
- SRCS = $(ASRCS) $(XSRCS) $(REGEXC)
- OBJS = $(AOBJS) $(XOBJS) $(REGEXO)
-
- ! DEFINES = -DARCHIE -DXARCHIE $(PDEBUG)
- INCLUDES = -I. -I$(EZMENUDIR)
-
- DEPLIBS = $(EZMENULIB) XawClientDepLibs
- ***************
- *** 89,95 ****
- $(MAKE) $(MFLAGS) 'CDEBUGFLAGS=$(CDEBUGFLAGS)' all);
-
- #
- ! # C code for fallback resources
- #
- Xarchie.ad.h: Xarchie.ad
- $(AD2C) Xarchie.ad >Xarchie.ad.h
- --- 83,89 ----
- $(MAKE) $(MFLAGS) 'CDEBUGFLAGS=$(CDEBUGFLAGS)' all);
-
- #
- ! # Make C code for fallback resources from application resource file
- #
- Xarchie.ad.h: Xarchie.ad
- $(AD2C) Xarchie.ad >Xarchie.ad.h
- *** /tmp/release17219/MANIFEST Tue Nov 12 16:53:01 1991
- --- MANIFEST Sat Nov 2 16:52:38 1991
- ***************
- *** 38,55 ****
- classnames.h 1
- confirm.c 2 Popup yes/no confirmer
- confirm.h 1
- ! copyright.h 1 +From Archie client distribution (renamed)
- db.c 6 Database for results of queries
- db.h 1
- dirsend.c 7 +From Archie client distribution (#ifdef'd)
- ftp.c 1 File retrieval code
- ftp.h 1
- get_pauth.c 1 +From Archie client distribution
- get_vdir.c 5 +From Archie client distribution
- - p_err_text.c 4 +From Archie client distribution
- patchlevel.h 1 Version control information
- pauthent.h 1 +From Archie client distribution
- pcompat.h 1 +From Archie client distribution
- perrno.h 2 +From Archie client distribution
- pfs.h 4 +From Archie client distribution
- pmachine.h 1 +From Archie client distribution
- --- 38,57 ----
- classnames.h 1
- confirm.c 2 Popup yes/no confirmer
- confirm.h 1
- ! copyright.h 1 +From Archie client distribution
- db.c 6 Database for results of queries
- db.h 1
- + dialog.c X Popup string entry box
- + dialog.h X
- dirsend.c 7 +From Archie client distribution (#ifdef'd)
- ftp.c 1 File retrieval code
- ftp.h 1
- get_pauth.c 1 +From Archie client distribution
- get_vdir.c 5 +From Archie client distribution
- patchlevel.h 1 Version control information
- pauthent.h 1 +From Archie client distribution
- pcompat.h 1 +From Archie client distribution
- + perrmesg.c 4 +From Archie client distribution
- perrno.h 2 +From Archie client distribution
- pfs.h 4 +From Archie client distribution
- pmachine.h 1 +From Archie client distribution
- ***************
- *** 57,63 ****
- procquery.c 2 +From Archie client distribution (#ifdef'd)
- procquery.h 1 +From Archie client distribution
- ptalloc.c 1 +From Archie client distribution
- ! regex.c 7 +From Archie client distribution (non-static)
- regex.h 7 New to allow regex.c to be linked with
- settings.c 4 Settings panel
- settings.h 1
- --- 59,66 ----
- procquery.c 2 +From Archie client distribution (#ifdef'd)
- procquery.h 1 +From Archie client distribution
- ptalloc.c 1 +From Archie client distribution
- ! rdgram.h X +From Archie client distribution
- ! regex.c 7 +From Archie client distribution
- regex.h 7 New to allow regex.c to be linked with
- settings.c 4 Settings panel
- settings.h 1
- ***************
- *** 65,70 ****
- --- 68,74 ----
- support.c 6 +From Archie client distribution
- types.c 2 Newly defined types and converters
- types.h 1
- + udp.c X Standalone program to test UDP traffic
- vl_comp.c 1 +From Archie client distribution
- vlalloc.c 2 +From Archie client distribution
- xarchie.c 5 Main program file for xarchie
- *** /tmp/release17219/Makefile Tue Nov 12 16:53:05 1991
- --- Makefile Fri Nov 8 13:05:21 1991
- ***************
- *** 7,13 ****
- #
-
- ###########################################################################
- ! # Makefile generated from "Imake.tmpl" and </tmp/IIf.a00891>
- # $XConsortium: Imake.tmpl,v 1.77 89/12/18 17:01:37 jim Exp $
- #
- # Platform-specific parameters may be set in the appropriate .cf
- --- 7,13 ----
- #
-
- ###########################################################################
- ! # Makefile generated from "Imake.tmpl" and </tmp/IIf.a15629>
- # $XConsortium: Imake.tmpl,v 1.77 89/12/18 17:01:37 jim Exp $
- #
- # Platform-specific parameters may be set in the appropriate .cf
- ***************
- *** 230,236 ****
- #
- # Imakefile for xarchie : X11 Browser interface to Archie
- #
- ! # George Ferguson, ferguson@cs.rochester.edu, 11 Sep 1991.
- #
-
- # Where do you want this stuff? Uncomment and adjust these to change the
- --- 230,236 ----
- #
- # Imakefile for xarchie : X11 Browser interface to Archie
- #
- ! # George Ferguson, ferguson@cs.rochester.edu, 12 Sep 1991.
- #
-
- # Where do you want this stuff? Uncomment and adjust these to change the
- ***************
- *** 261,277 ****
- # How excited are you about debugging? This can be -g, -O, or nothing.
- CDEBUGFLAGS = -g
-
- ! # Are you using gcc? If so, read on:
- ! # [from Brendan Kehoe (brendan@cs.widener.edu)]
- ! # dirsend.c shouldn't be compiled with Gnu C. Until gcc 2.0, structure
- ! # passing is completely hosed on Suns -- and the inet_ntoa() calls in
- ! # dirsend will seg fault.
- ! # You should uncommment this if you're using gcc.
- ! #dirsend.o:
- ! # cc -c $(CFLAGS) dirsend.c
-
- ! # Does your system have re_comp() and re_exec()? If not, uncomment the
- ! # following definitions.
- #REGEXC = regex.c
- #REGEXO = regex.o
-
- --- 261,271 ----
- # How excited are you about debugging? This can be -g, -O, or nothing.
- CDEBUGFLAGS = -g
-
- ! # To enable Prospero tracing (controlled by the -debug option), uncomment this
- ! #PDEBUG = -DDEBUG
-
- ! # Does your system have re_comp() and re_exec(), or regcmp() and regex()
- ! # [in the case of A/UX]? If not, uncomment the following definitions.
- #REGEXC = regex.c
- #REGEXO = regex.o
-
- ***************
- *** 289,307 ****
- done
-
- ASRCS = aquery.c atalloc.c dirsend.c get_pauth.c get_vdir.c \
- ! p_err_text.c ptalloc.c stcopy.c support.c vl_comp.c vlalloc.c
- XSRCS = xarchie.c db.c actions.c types.c classnames.c procquery.c settings.c \
- ! ftp.c alert.c confirm.c
-
- AOBJS = aquery.o atalloc.o dirsend.o get_pauth.o get_vdir.o \
- ! p_err_text.o ptalloc.o stcopy.o support.o vl_comp.o vlalloc.o
- XOBJS = xarchie.o db.o actions.o types.o classnames.o procquery.o settings.o \
- ! ftp.o alert.o confirm.o
-
- SRCS = $(ASRCS) $(XSRCS) $(REGEXC)
- OBJS = $(AOBJS) $(XOBJS) $(REGEXO)
-
- ! DEFINES = -DARCHIE -DXARCHIE
- INCLUDES = -I. -I$(EZMENUDIR)
-
- DEPLIBS = $(EZMENULIB) $(DEPXAWLIB) $(DEPXMULIB) $(DEPXTOOLLIB) $(DEPXLIB)
- --- 283,301 ----
- done
-
- ASRCS = aquery.c atalloc.c dirsend.c get_pauth.c get_vdir.c \
- ! perrmesg.c ptalloc.c stcopy.c support.c vl_comp.c vlalloc.c
- XSRCS = xarchie.c db.c actions.c types.c classnames.c procquery.c settings.c \
- ! ftp.c alert.c confirm.c dialog.c
-
- AOBJS = aquery.o atalloc.o dirsend.o get_pauth.o get_vdir.o \
- ! perrmesg.o ptalloc.o stcopy.o support.o vl_comp.o vlalloc.o
- XOBJS = xarchie.o db.o actions.o types.o classnames.o procquery.o settings.o \
- ! ftp.o alert.o confirm.o dialog.o
-
- SRCS = $(ASRCS) $(XSRCS) $(REGEXC)
- OBJS = $(AOBJS) $(XOBJS) $(REGEXO)
-
- ! DEFINES = -DARCHIE -DXARCHIE $(PDEBUG)
- INCLUDES = -I. -I$(EZMENUDIR)
-
- DEPLIBS = $(EZMENULIB) $(DEPXAWLIB) $(DEPXMULIB) $(DEPXTOOLLIB) $(DEPXLIB)
- ***************
- *** 354,360 ****
- $(MAKE) $(MFLAGS) 'CDEBUGFLAGS=$(CDEBUGFLAGS)' all);
-
- #
- ! # C code for fallback resources
- #
- Xarchie.ad.h: Xarchie.ad
- $(AD2C) Xarchie.ad >Xarchie.ad.h
- --- 348,354 ----
- $(MAKE) $(MFLAGS) 'CDEBUGFLAGS=$(CDEBUGFLAGS)' all);
-
- #
- ! # Make C code for fallback resources from application resource file
- #
- Xarchie.ad.h: Xarchie.ad
- $(AD2C) Xarchie.ad >Xarchie.ad.h
- ***************
- *** 516,532 ****
- atalloc.o: /usr/include/netinet/in.h pmachine.h
- dirsend.o: copyright.h /usr/include/stdio.h /usr/include/errno.h
- dirsend.o: /usr/include/sys/errno.h /usr/include/sys/time.h
- ! dirsend.o: /usr/include/sys/time.h /usr/include/netdb.h
- ! dirsend.o: /usr/include/strings.h /usr/include/sys/types.h
- dirsend.o: /usr/include/sys/stdtypes.h /usr/include/sys/sysmacros.h
- ! dirsend.o: /usr/include/sys/socket.h pfs.h /usr/include/netinet/in.h pprot.h
- ! dirsend.o: /usr/include/sys/param.h /usr/include/machine/param.h
- ! dirsend.o: /usr/include/sys/signal.h /usr/include/vm/faultcode.h pcompat.h
- ! dirsend.o: perrno.h pmachine.h
- ! get_pauth.o: copyright.h /usr/include/stdio.h /usr/include/strings.h
- ! get_pauth.o: /usr/include/pwd.h /usr/include/sys/types.h
- get_pauth.o: /usr/include/sys/stdtypes.h /usr/include/sys/sysmacros.h
- ! get_pauth.o: pcompat.h pauthent.h
- get_vdir.o: copyright.h /usr/include/stdio.h /usr/include/strings.h pfs.h
- get_vdir.o: /usr/include/sys/types.h /usr/include/sys/stdtypes.h
- get_vdir.o: /usr/include/sys/sysmacros.h /usr/include/netinet/in.h pprot.h
- --- 510,534 ----
- atalloc.o: /usr/include/netinet/in.h pmachine.h
- dirsend.o: copyright.h /usr/include/stdio.h /usr/include/errno.h
- dirsend.o: /usr/include/sys/errno.h /usr/include/sys/time.h
- ! dirsend.o: /usr/include/sys/time.h /usr/include/strings.h
- ! dirsend.o: /usr/include/netdb.h /usr/include/sys/types.h
- dirsend.o: /usr/include/sys/stdtypes.h /usr/include/sys/sysmacros.h
- ! dirsend.o: pmachine.h /usr/include/sys/socket.h /usr/include/netinet/in.h
- ! dirsend.o: /usr/include/arpa/inet.h pfs.h pprot.h /usr/include/sys/param.h
- ! dirsend.o: /usr/include/machine/param.h /usr/include/sys/signal.h
- ! dirsend.o: /usr/include/vm/faultcode.h pcompat.h perrno.h
- ! dirsend.o: /usr/staff/include/X11/Intrinsic.h /usr/staff/include/X11/Xlib.h
- ! dirsend.o: /usr/staff/include/X11/X.h /usr/staff/include/X11/Xutil.h
- ! dirsend.o: /usr/staff/include/X11/Xresource.h /usr/staff/include/X11/Xos.h
- ! dirsend.o: /usr/include/sys/file.h /usr/include/sys/fcntlcom.h
- ! dirsend.o: /usr/include/sys/stat.h /usr/staff/include/X11/Core.h
- ! dirsend.o: /usr/staff/include/X11/Composite.h
- ! dirsend.o: /usr/staff/include/X11/Constraint.h
- ! dirsend.o: /usr/staff/include/X11/Object.h /usr/staff/include/X11/RectObj.h
- ! get_pauth.o: copyright.h /usr/include/stdio.h /usr/include/sys/types.h
- get_pauth.o: /usr/include/sys/stdtypes.h /usr/include/sys/sysmacros.h
- ! get_pauth.o: /usr/include/strings.h /usr/include/pwd.h pcompat.h pauthent.h
- ! get_pauth.o: /usr/include/netinet/in.h
- get_vdir.o: copyright.h /usr/include/stdio.h /usr/include/strings.h pfs.h
- get_vdir.o: /usr/include/sys/types.h /usr/include/sys/stdtypes.h
- get_vdir.o: /usr/include/sys/sysmacros.h /usr/include/netinet/in.h pprot.h
- ***************
- *** 533,539 ****
- get_vdir.o: /usr/include/sys/param.h /usr/include/machine/param.h
- get_vdir.o: /usr/include/sys/signal.h /usr/include/vm/faultcode.h perrno.h
- get_vdir.o: pcompat.h pauthent.h pmachine.h
- ! p_err_text.o: copyright.h
- ptalloc.o: copyright.h /usr/include/stdio.h pfs.h /usr/include/sys/types.h
- ptalloc.o: /usr/include/sys/stdtypes.h /usr/include/sys/sysmacros.h
- ptalloc.o: /usr/include/netinet/in.h pmachine.h
- --- 535,541 ----
- get_vdir.o: /usr/include/sys/param.h /usr/include/machine/param.h
- get_vdir.o: /usr/include/sys/signal.h /usr/include/vm/faultcode.h perrno.h
- get_vdir.o: pcompat.h pauthent.h pmachine.h
- ! perrmesg.o: copyright.h perrno.h /usr/include/stdio.h
- ptalloc.o: copyright.h /usr/include/stdio.h pfs.h /usr/include/sys/types.h
- ptalloc.o: /usr/include/sys/stdtypes.h /usr/include/sys/sysmacros.h
- ptalloc.o: /usr/include/netinet/in.h pmachine.h
- ***************
- *** 540,547 ****
- stcopy.o: copyright.h /usr/include/stdio.h /usr/include/strings.h
- support.o: copyright.h /usr/include/stdio.h /usr/include/strings.h
- support.o: /usr/include/errno.h /usr/include/sys/errno.h /usr/include/netdb.h
- ! support.o: /usr/include/sys/file.h /usr/include/sys/types.h
- ! support.o: /usr/include/sys/stdtypes.h /usr/include/sys/sysmacros.h
- support.o: /usr/include/sys/fcntlcom.h /usr/include/sys/stat.h
- support.o: /usr/include/sys/param.h /usr/include/machine/param.h
- support.o: /usr/include/sys/signal.h /usr/include/vm/faultcode.h pfs.h
- --- 542,549 ----
- stcopy.o: copyright.h /usr/include/stdio.h /usr/include/strings.h
- support.o: copyright.h /usr/include/stdio.h /usr/include/strings.h
- support.o: /usr/include/errno.h /usr/include/sys/errno.h /usr/include/netdb.h
- ! support.o: /usr/include/sys/types.h /usr/include/sys/stdtypes.h
- ! support.o: /usr/include/sys/sysmacros.h /usr/include/sys/file.h
- support.o: /usr/include/sys/fcntlcom.h /usr/include/sys/stat.h
- support.o: /usr/include/sys/param.h /usr/include/machine/param.h
- support.o: /usr/include/sys/signal.h /usr/include/vm/faultcode.h pfs.h
- ***************
- *** 583,589 ****
- xarchie.o: /usr/staff/include/X11/Xaw/AsciiSink.h
- xarchie.o: /usr/staff/include/X11/Xaw/Command.h
- xarchie.o: /usr/staff/include/X11/Xaw/Cardinals.h types.h appres.h
- ! xarchie.o: classnames.h db.h actions.h patchlevel.h Xarchie.ad.h
- db.o: /usr/staff/include/X11/Intrinsic.h /usr/staff/include/X11/Xlib.h
- db.o: /usr/include/sys/types.h /usr/include/sys/stdtypes.h
- db.o: /usr/include/sys/sysmacros.h /usr/staff/include/X11/X.h
- --- 585,591 ----
- xarchie.o: /usr/staff/include/X11/Xaw/AsciiSink.h
- xarchie.o: /usr/staff/include/X11/Xaw/Command.h
- xarchie.o: /usr/staff/include/X11/Xaw/Cardinals.h types.h appres.h
- ! xarchie.o: classnames.h db.h actions.h settings.h patchlevel.h Xarchie.ad.h
- db.o: /usr/staff/include/X11/Intrinsic.h /usr/staff/include/X11/Xlib.h
- db.o: /usr/include/sys/types.h /usr/include/sys/stdtypes.h
- db.o: /usr/include/sys/sysmacros.h /usr/staff/include/X11/X.h
- ***************
- *** 597,611 ****
- db.o: /usr/staff/include/X11/Xaw/Cardinals.h
- db.o: /usr/staff/include/X11/Xaw/List.h /usr/staff/include/X11/Xaw/Simple.h
- db.o: xarchie.h db.h alert.h
- ! actions.o: /usr/staff/include/X11/Intrinsic.h /usr/staff/include/X11/Xlib.h
- ! actions.o: /usr/include/sys/types.h /usr/include/sys/stdtypes.h
- ! actions.o: /usr/include/sys/sysmacros.h /usr/staff/include/X11/X.h
- ! actions.o: /usr/staff/include/X11/Xutil.h /usr/staff/include/X11/Xresource.h
- ! actions.o: /usr/staff/include/X11/Xos.h /usr/include/strings.h
- ! actions.o: /usr/include/sys/file.h /usr/include/sys/fcntlcom.h
- ! actions.o: /usr/include/sys/stat.h /usr/include/sys/time.h
- ! actions.o: /usr/include/sys/time.h /usr/staff/include/X11/Core.h
- ! actions.o: /usr/staff/include/X11/Composite.h
- actions.o: /usr/staff/include/X11/Constraint.h
- actions.o: /usr/staff/include/X11/Object.h /usr/staff/include/X11/RectObj.h
- actions.o: /usr/staff/include/X11/StringDefs.h
- --- 599,613 ----
- db.o: /usr/staff/include/X11/Xaw/Cardinals.h
- db.o: /usr/staff/include/X11/Xaw/List.h /usr/staff/include/X11/Xaw/Simple.h
- db.o: xarchie.h db.h alert.h
- ! actions.o: /usr/include/stdio.h /usr/staff/include/X11/Intrinsic.h
- ! actions.o: /usr/staff/include/X11/Xlib.h /usr/include/sys/types.h
- ! actions.o: /usr/include/sys/stdtypes.h /usr/include/sys/sysmacros.h
- ! actions.o: /usr/staff/include/X11/X.h /usr/staff/include/X11/Xutil.h
- ! actions.o: /usr/staff/include/X11/Xresource.h /usr/staff/include/X11/Xos.h
- ! actions.o: /usr/include/strings.h /usr/include/sys/file.h
- ! actions.o: /usr/include/sys/fcntlcom.h /usr/include/sys/stat.h
- ! actions.o: /usr/include/sys/time.h /usr/include/sys/time.h
- ! actions.o: /usr/staff/include/X11/Core.h /usr/staff/include/X11/Composite.h
- actions.o: /usr/staff/include/X11/Constraint.h
- actions.o: /usr/staff/include/X11/Object.h /usr/staff/include/X11/RectObj.h
- actions.o: /usr/staff/include/X11/StringDefs.h
- ***************
- *** 615,621 ****
- actions.o: /usr/staff/include/X11/Xaw/AsciiSrc.h
- actions.o: /usr/staff/include/X11/Xaw/AsciiSink.h
- actions.o: /usr/staff/include/X11/Xaw/Cardinals.h procquery.h xarchie.h
- ! actions.o: types.h appres.h db.h settings.h ftp.h alert.h regex.h
- types.o: /usr/staff/include/X11/IntrinsicP.h
- types.o: /usr/staff/include/X11/Intrinsic.h /usr/staff/include/X11/Xlib.h
- types.o: /usr/include/sys/types.h /usr/include/sys/stdtypes.h
- --- 617,624 ----
- actions.o: /usr/staff/include/X11/Xaw/AsciiSrc.h
- actions.o: /usr/staff/include/X11/Xaw/AsciiSink.h
- actions.o: /usr/staff/include/X11/Xaw/Cardinals.h procquery.h xarchie.h
- ! actions.o: types.h appres.h db.h settings.h ftp.h alert.h confirm.h dialog.h
- ! actions.o: regex.h
- types.o: /usr/staff/include/X11/IntrinsicP.h
- types.o: /usr/staff/include/X11/Intrinsic.h /usr/staff/include/X11/Xlib.h
- types.o: /usr/include/sys/types.h /usr/include/sys/stdtypes.h
- ***************
- *** 715,724 ****
- settings.o: /usr/staff/include/X11/Xaw/AsciiSink.h EzMenu/EzMenu.h
- settings.o: /usr/staff/include/X11/Xaw/SimpleMenu.h
- settings.o: /usr/staff/include/X11/Xaw/Cardinals.h xarchie.h types.h appres.h
- ! settings.o: alert.h confirm.h
- ftp.o: /usr/include/stdio.h /usr/include/pwd.h /usr/include/sys/types.h
- ! ftp.o: /usr/include/sys/stdtypes.h /usr/include/sys/sysmacros.h appres.h
- ! ftp.o: types.h
- alert.o: /usr/staff/include/X11/Intrinsic.h /usr/staff/include/X11/Xlib.h
- alert.o: /usr/include/sys/types.h /usr/include/sys/stdtypes.h
- alert.o: /usr/include/sys/sysmacros.h /usr/staff/include/X11/X.h
- --- 718,735 ----
- settings.o: /usr/staff/include/X11/Xaw/AsciiSink.h EzMenu/EzMenu.h
- settings.o: /usr/staff/include/X11/Xaw/SimpleMenu.h
- settings.o: /usr/staff/include/X11/Xaw/Cardinals.h xarchie.h types.h appres.h
- ! settings.o: rdgram.h copyright.h alert.h confirm.h
- ftp.o: /usr/include/stdio.h /usr/include/pwd.h /usr/include/sys/types.h
- ! ftp.o: /usr/include/sys/stdtypes.h /usr/include/sys/sysmacros.h
- ! ftp.o: /usr/staff/include/X11/Intrinsic.h /usr/staff/include/X11/Xlib.h
- ! ftp.o: /usr/staff/include/X11/X.h /usr/staff/include/X11/Xutil.h
- ! ftp.o: /usr/staff/include/X11/Xresource.h /usr/staff/include/X11/Xos.h
- ! ftp.o: /usr/include/strings.h /usr/include/sys/file.h
- ! ftp.o: /usr/include/sys/fcntlcom.h /usr/include/sys/stat.h
- ! ftp.o: /usr/include/sys/time.h /usr/include/sys/time.h
- ! ftp.o: /usr/staff/include/X11/Core.h /usr/staff/include/X11/Composite.h
- ! ftp.o: /usr/staff/include/X11/Constraint.h /usr/staff/include/X11/Object.h
- ! ftp.o: /usr/staff/include/X11/RectObj.h appres.h types.h
- alert.o: /usr/staff/include/X11/Intrinsic.h /usr/staff/include/X11/Xlib.h
- alert.o: /usr/include/sys/types.h /usr/include/sys/stdtypes.h
- alert.o: /usr/include/sys/sysmacros.h /usr/staff/include/X11/X.h
- ***************
- *** 748,750 ****
- --- 759,776 ----
- confirm.o: /usr/staff/include/X11/Xaw/Dialog.h
- confirm.o: /usr/staff/include/X11/Xaw/Form.h
- confirm.o: /usr/staff/include/X11/Xaw/Cardinals.h /usr/include/stdio.h
- + dialog.o: /usr/staff/include/X11/Intrinsic.h /usr/staff/include/X11/Xlib.h
- + dialog.o: /usr/include/sys/types.h /usr/include/sys/stdtypes.h
- + dialog.o: /usr/include/sys/sysmacros.h /usr/staff/include/X11/X.h
- + dialog.o: /usr/staff/include/X11/Xutil.h /usr/staff/include/X11/Xresource.h
- + dialog.o: /usr/staff/include/X11/Xos.h /usr/include/strings.h
- + dialog.o: /usr/include/sys/file.h /usr/include/sys/fcntlcom.h
- + dialog.o: /usr/include/sys/stat.h /usr/include/sys/time.h
- + dialog.o: /usr/include/sys/time.h /usr/staff/include/X11/Core.h
- + dialog.o: /usr/staff/include/X11/Composite.h
- + dialog.o: /usr/staff/include/X11/Constraint.h /usr/staff/include/X11/Object.h
- + dialog.o: /usr/staff/include/X11/RectObj.h
- + dialog.o: /usr/staff/include/X11/StringDefs.h /usr/staff/include/X11/Shell.h
- + dialog.o: /usr/staff/include/X11/Xaw/Dialog.h
- + dialog.o: /usr/staff/include/X11/Xaw/Form.h
- + dialog.o: /usr/staff/include/X11/Xaw/Cardinals.h /usr/include/stdio.h
- *** /tmp/release17219/README Tue Nov 12 16:53:11 1991
- --- README Tue Nov 12 12:52:28 1991
- ***************
- *** 2,12 ****
-
- George Ferguson, ferguson@cs.rochester.edu
-
- ! Last Change: 12 Sep 1991
-
- DISCLAIMER:
-
- ! This is release 1.2.
-
- This software is provided as is with no warranty expressed or
- implied. I hope you find it useful, but I won't be held responsible
- --- 2,13 ----
-
- George Ferguson, ferguson@cs.rochester.edu
-
- ! Last Change: 12 Nov 1991
-
- DISCLAIMER:
-
- ! This is release 1.3 of xarchie -- an X browser interface to
- ! the Archie Internet information system.
-
- This software is provided as is with no warranty expressed or
- implied. I hope you find it useful, but I won't be held responsible
- ***************
- *** 21,33 ****
- See the file "copyright.h" for details. Examples of other things
- Prospero can do are in the file "README.PROSP" in this distribution.
-
- The original standalone archie client was written by Brendan Kehoe,
- (brendan@cs.widener.edu), based on the Prospero archie client by
- Clifford Neuman, (bcn@isi.edu). The file "README.FILES" describes
- the files that are shared with these clients. The archie service was
- ! conceived of and implemented by Alan Emtage (bajan@cs.mcgill.ca) and
- ! Peter Deutsch (peterd@expresso.cc.mcgill.ca).
-
- INSTALLATION:
-
- 1. Edit the Imakefile to reflect any changes for your site. These
- --- 22,46 ----
- See the file "copyright.h" for details. Examples of other things
- Prospero can do are in the file "README.PROSP" in this distribution.
-
- + CREDITS:
- +
- The original standalone archie client was written by Brendan Kehoe,
- (brendan@cs.widener.edu), based on the Prospero archie client by
- Clifford Neuman, (bcn@isi.edu). The file "README.FILES" describes
- the files that are shared with these clients. The archie service was
- ! conceived of and implemented by Alan Emtage (bajan@cs.mcgill.ca),
- ! Peter Deutsch (peterd@expresso.cc.mcgill.ca), and Bill Heelan
- ! (wheelan@cs.mcgill.ca).
-
- + REPORTING BUGS/KUDOS:
- +
- + When reporting bugs, problems, suggestions or contributions, please
- + be sure to send them to the right place. I (George Ferguson) am really
- + only interested in the working of the X interface. Brendan Kehoe is
- + is charge of the archie clients and the network stuff underlying xarchie,
- + Cliff Neuman is in charge of Prospero, and Alan Emtage and the others
- + are in charge of the Archie service itself.
- +
- INSTALLATION:
-
- 1. Edit the Imakefile to reflect any changes for your site. These
- ***************
- *** 34,46 ****
- include setting BINDIR, LIBDIR, and MANDIR if needed, and
- checking CDEBUGFLAGS if debugging or optimization is desired.
-
- - [from Brendan Kehoe (brendan@cs.widener.edu)]
- - If your default C compiler is gcc, dirsend.c shouldn't be compiled
- - with Gnu C. Until gcc 2.0, structure passing is completely hosed
- - on Suns -- and the inet_ntoa() calls in dirsend will seg fault.
- - There is a suitable target that you can uncomment if you are
- - using gcc.
- -
- If your system doesn't have re_comp() and re_exec(), then you
- need to uncomment the appropriate section in the Imakefile to
- include those routines.
- --- 47,52 ----
- ***************
- *** 72,78 ****
- IMPORTANT: Ignore the error message from makedepend if Xarchie.ad.h
- is not found; it will be created automatically.
-
- ! 4. Make the package using
- % make
- or install it directly with
- % make install install.man
- --- 78,84 ----
- IMPORTANT: Ignore the error message from makedepend if Xarchie.ad.h
- is not found; it will be created automatically.
-
- ! 5. Make the package using
- % make
- or install it directly with
- % make install install.man
- ***************
- *** 82,87 ****
- --- 88,103 ----
- % make install.xarchie
- to install xarchie, its resource file, and its man page only.
-
- + DEBUGGING:
- +
- + The Prospero protocol that underlies xarchie requires that UDP traffic
- + be enabled on your system. If you get nothing but timeouts from dirsend,
- + then either the server is just too heavily loaded or UDP traffic is
- + disabled. To test the latter hypothesis, compile udp.c and follow the
- + directions at the top of the file. If UDP traffic is in fact disabled,
- + talk to to your syadmins. Otherwise, if you're *sure* it isn't just a
- + loaded server, report the situation in detail to brendan@cs.widener.edu.
- +
- HISTORY:
- Version 1.1 - 4 Sep 1991
- Released to comp.sources.x.
- ***************
- *** 104,106 ****
- --- 120,161 ----
- and: Alan B Clegg <abc@concert.net>
- - Changed some widget names in resource file since the Settings
- form wasn't being laid out correctly.
- +
- + Version 1.3 - 12 Nov 1991
- + - Separated EzMenu widget creation from others by adding .menus
- + resource and slightly changing initWidgets() in xarchie.c. This
- + hopefully prevents those annoying core dumps under old or otherwise
- + strange version of X. Also renamed the "hostText" on the Settings
- + form to "setHostText" again in hopes of avoiding the problem.
- + - Added archie.sura.net to hostMenu and made it the default elsewhere.
- + - "-debug" formerly didn't want an argument -- fixed.
- + - Made dirsend() asynchronous by restructuring it, so xarchie will
- + now refresh and can be interrupted during queries. Added "Abort"
- + button to interrupt queries.
- + - Removed comments about gcc from this file and the Imakefile since
- + it's handled automatically in dirsend.c using SUN_GNU_FIX.
- + - From the TODO file: Fixed default-settings() action so it uses
- + as defaults the values of the application resources when xarchie
- + starts up.
- + - Added confirmation of quitting and -expert flag (and expert
- + resource) to avoid it if desired.
- + - Tweaked resources for better layout, better resizing, etc, etc.
- + - From: bajan@cs.mcgill.ca
- + - Updated man page and added Bill Heelan acknowledgement.
- + - From: khushro@zip.eecs.umich.edu
- + - Added "save-to-file()" action.
- + - From: Dennis Shiao <shiao@ans.net>
- + - ftp.c called alert0() rather than alert1().
- + - From: Lee M J McLoughlin <lmjm@doc.imperial.ac.uk>
- + - Added archie.doc.ic.ac.uk to hostMenu
- + - From: Amos Shapira <amoss@cs.huji.ac.il>
- + - Added cs.huji.ac.il to hostMenu.
- + - From: brendan@cs.widener.edu (Brendan Kehoe)
- + - Changes to many files from the "archie" distribution, including
- + more portable #includes and Prospero warning message handling.
- + Includes new file perrmesg.c.
- + - Provide udp.c to test whether UDP traffic is enabled.
- + - From bcn@isi.edu (Clifford Neuman)
- + - Changed dirsend.c to compare connection id's rather than
- + hostnames, based on an observation from Lee McLoughlin,
- + among other Prospero stuff.
- *** /tmp/release17219/README.FILES Tue Nov 12 16:53:15 1991
- --- README.FILES Tue Oct 22 09:10:04 1991
- ***************
- *** 20,25 ****
- --- 20,26 ----
-
- The following file is from the standalone archie client distribution:
- pmachine.h
- + rdgram.h
-
- The following file is from the standalone archie client distribution, and
- was put together from parts of the Prospero distribution:
- ***************
- *** 41,52 ****
- Prospero distribution:
- regex.c
-
- ! The following file is identical to the Prospero version except for code
- ! surrounded by "#ifdef XARCHIE" conditionals:
- ! dirsend.c
- !
- ! The following file is identical to the standalone archie client version
- except for code surrounded by "#ifdef XARCHIE" conditionals:
- procquery.c
-
- The following files are solely in the xarchie distribution:
- --- 42,50 ----
- Prospero distribution:
- regex.c
-
- ! The following file are identical to the standalone archie client version
- except for code surrounded by "#ifdef XARCHIE" conditionals:
- + dirsend.c
- procquery.c
-
- The following files are solely in the xarchie distribution:
- ***************
- *** 63,68 ****
- --- 61,68 ----
- confirm.h
- db.c
- db.h
- + dialog.c
- + dialog.h
- ftp.c
- ftp.h
- procquery.c
- *** /tmp/release17219/TODO Tue Nov 12 16:53:20 1991
- --- TODO Tue Oct 22 08:14:59 1991
- ***************
- *** 17,26 ****
- - Make the "Nice Level" button a different color or shade when the value
- is >0.
-
- - - Make the "Default" button on the Settings panel use the values that
- - we had at startup (ie. in main() copy the appResources into variables
- - for the button's use).
- -
- - Try to improve the status calls so that the message "grows" as more
- things are received (look for "recvd_thru = htons(...)" in get_vdir.c).
-
- --- 17,22 ----
- *** /tmp/release17219/Xarchie.ad Tue Nov 12 16:53:24 1991
- --- Xarchie.ad Tue Nov 12 12:46:59 1991
- ***************
- *** 1,13 ****
- !
- ! Xarchie.ad : Application defaults for the X11 browser interface to Archie
- !
- ! ! George Ferguson, ferguson@cs.rochester.edu, 12 Sep 1991.
- !
-
- ! - - - - - - - - -
- ! Non-widget resources
-
- ! Xarchie.archieHost: archie.mcgill.ca
-
- ! Possible values are: exact, substr, subcase, or regexp
- Xarchie.searchType: exact
- --- 1,13 ----
- !
- ! Xarchie.ad : Application defaults for the X11 browser interface to Archie
- !
- ! ! George Ferguson, ferguson@cs.rochester.edu, 12 Nov 1991.
- !
-
- ! - - - - - - - - -
- ! Non-widget resources
-
- ! Xarchie.archieHost: archie.sura.net
-
- ! Possible values are: exact, substr, subcase, or regexp
- Xarchie.searchType: exact
- ***************
- *** 36,44 ****
- --- 36,53 ----
- ! Transfer mode for ftp() action
- Xarchie.ftpMode: binary
-
- + ! If True, then results of save-to-file() are printed one entry per line.
- + ! If False, then results are pretty-printed.
- + Xarchie.saveFormatOneLine: False
- +
- ! Bigger numbers == more verbose, if -DDEBUG was given at compile-time
- Xarchie.debugLevel: 0
-
- + ! If True, don't confirm things like quitting
- + Xarchie.expert: False
- +
- + ! - - - - - - - - -
- +
- ! Main display widget hierachy:
- Xarchie.widgets: \
- toplevel Paned outerPaned \
- ***************
- *** 46,58 ****
- outerPaned Form buttonForm \
- outerPaned.buttonForm Command quitButton \
- outerPaned.buttonForm Command queryButton \
- outerPaned.buttonForm Command ftpButton \
- outerPaned.buttonForm MenuButton searchButton \
- - outerPaned.buttonForm.searchButton EzMenu searchNowMenu \
- outerPaned.buttonForm MenuButton sortButton \
- - outerPaned.buttonForm.sortButton EzMenu sortNowMenu \
- outerPaned.buttonForm MenuButton niceButton \
- - outerPaned.buttonForm.niceButton EzMenu niceNowMenu \
- outerPaned.buttonForm Command settingsButton \
- outerPaned.buttonForm Label statusLabel \
- outerPaned.buttonForm AsciiText statusText \
- --- 55,66 ----
- outerPaned Form buttonForm \
- outerPaned.buttonForm Command quitButton \
- outerPaned.buttonForm Command queryButton \
- + outerPaned.buttonForm Command abortButton \
- + outerPaned.buttonForm Command saveButton \
- outerPaned.buttonForm Command ftpButton \
- outerPaned.buttonForm MenuButton searchButton \
- outerPaned.buttonForm MenuButton sortButton \
- outerPaned.buttonForm MenuButton niceButton \
- outerPaned.buttonForm Command settingsButton \
- outerPaned.buttonForm Label statusLabel \
- outerPaned.buttonForm AsciiText statusText \
- ***************
- *** 81,86 ****
- --- 89,100 ----
- outerPaned.stringForm Label dateLabel \
- outerPaned.stringForm AsciiText dateText
-
- + ! Main window menus have to be created separately (puke-ola)
- + Xarchie.menus:\
- + outerPaned.buttonForm.searchButton EzMenu searchNowMenu \
- + outerPaned.buttonForm.sortButton EzMenu sortNowMenu \
- + outerPaned.buttonForm.niceButton EzMenu niceNowMenu
- +
- ! Settings panel widget hierarchy
- Xarchie.settingsWidgets:\
- toplevel TopLevelShell settingsShell \
- ***************
- *** 97,103 ****
- settingsShell.settingsForm Label sortLabel \
- settingsShell.settingsForm MenuButton hostButton \
- settingsShell.settingsForm EzMenu hostMenu \
- ! settingsShell.settingsForm AsciiText hostText \
- settingsShell.settingsForm Label maxHitsLabel \
- settingsShell.settingsForm AsciiText maxHitsText \
- settingsShell.settingsForm Label timeoutLabel \
- --- 111,117 ----
- settingsShell.settingsForm Label sortLabel \
- settingsShell.settingsForm MenuButton hostButton \
- settingsShell.settingsForm EzMenu hostMenu \
- ! settingsShell.settingsForm AsciiText setHostText \
- settingsShell.settingsForm Label maxHitsLabel \
- settingsShell.settingsForm AsciiText maxHitsText \
- settingsShell.settingsForm Label timeoutLabel \
- ***************
- *** 172,182 ****
- ! vary if you change the fonts. The "fromVert" and "fromHoriz" resources
- ! make the buttons "pile up" properly. You can change them subject to
- ! the widget creation order which is the same as the order in which the
- ! ! widgets are described in this file.
-
- Xarchie*buttonForm*quitButton.label: Quit
- Xarchie*buttonForm*quitButton.translations:#override\n\
- ! <Btn1Down>,<Btn1Up>: quit() \n
-
- Xarchie*buttonForm*queryButton.label: Query
- Xarchie*buttonForm*queryButton.fromHoriz: quitButton
- --- 186,206 ----
- ! vary if you change the fonts. The "fromVert" and "fromHoriz" resources
- ! make the buttons "pile up" properly. You can change them subject to
- ! the widget creation order which is the same as the order in which the
- ! ! widgets are listed in the .widgets (or similar) resource.
-
- + ! These keep the buttons from getting bigger or smaller when the panes
- + ! resize. Thus only the browser grows.
- + Xarchie*buttonForm.min: 50
- + Xarchie*buttonForm.max: 50
- +
- + ! No point in having grips since only the browser can grow, and then only
- + ! if the whole application grows.
- + Xarchie*buttonForm.showGrip: False
- +
- Xarchie*buttonForm*quitButton.label: Quit
- Xarchie*buttonForm*quitButton.translations:#override\n\
- ! Shift<Btn1Down>,<Btn1Up>: quit(always) \n\
- ! <Btn1Down>,<Btn1Up>: quit() \n
-
- Xarchie*buttonForm*queryButton.label: Query
- Xarchie*buttonForm*queryButton.fromHoriz: quitButton
- ***************
- *** 183,190 ****
- Xarchie*buttonForm*queryButton.translations:#override\n\
- <Btn1Down>,<Btn1Up>: query() \n
-
- Xarchie*buttonForm*ftpButton.label: Ftp
- ! Xarchie*buttonForm*ftpButton.fromHoriz: queryButton
- Xarchie*buttonForm*ftpButton.translations:#override\n\
- <Btn1Down>,<Btn1Up>: ftp() \n
-
- --- 207,225 ----
- Xarchie*buttonForm*queryButton.translations:#override\n\
- <Btn1Down>,<Btn1Up>: query() \n
-
- + Xarchie*buttonForm*abortButton.label: Abort
- + Xarchie*buttonForm*abortButton.fromHoriz: queryButton
- + Xarchie*buttonForm*abortButton.translations:#override\n\
- + <Btn1Down>,<Btn1Up>: abort() \n
- +
- + Xarchie*buttonForm*saveButton.label: Save
- + Xarchie*buttonForm*saveButton.fromHoriz: abortButton
- + Xarchie*buttonForm*saveButton.translations:#override\n\
- + Shift<Btn1Down>,<Btn1Up>: save-to-file("%s.lst") \n\
- + <Btn1Down>,<Btn1Up>: save-to-file() \n
- +
- Xarchie*buttonForm*ftpButton.label: Ftp
- ! Xarchie*buttonForm*ftpButton.fromHoriz: saveButton
- Xarchie*buttonForm*ftpButton.translations:#override\n\
- <Btn1Down>,<Btn1Up>: ftp() \n
-
- ***************
- *** 214,219 ****
- --- 249,256 ----
- Xarchie*buttonForm*statusText*editType: read
- ! Don't give a border since it's "read-only"
- Xarchie*buttonForm*statusText.borderWidth: 0
- + ! Don't ever give a scrollbar since it's just confusing
- + Xarchie*buttonForm*statusText*scrollHorizontal: never
- ! Don't ever show the caret in the status line
- Xarchie*buttonForm*statusText*translations:#override\n
-
- ***************
- *** 222,227 ****
- --- 259,269 ----
-
- Xarchie*innerPaned.orientation: horizontal
-
- + ! No point in having grips since only the browser can grow, and then only
- + ! if the whole application grows.
- + Xarchie*innerPaned.showGrip: False
- +
- +
- ! - - - - - - - - -
- ! Bottom String Form
-
- ***************
- *** 230,238 ****
- --- 272,291 ----
- Xarchie*stringForm.min: 120
- Xarchie*stringForm.max: 120
-
- + ! Left justify labels or they'll move on resize
- + Xarchie*stringForm*Label.justify: left
- + ! De-emphasize most labels
- + Xarchie*stringForm*Label.font: fixed
- +
- + ! Disable typing into most Text widgets
- + Xarchie*stringForm*AsciiSrc.editType: read
- +
- + ! Except the search term items, which can be edited and should stand out
- Xarchie*stringForm*searchLabel.label: Search Term:
- + Xarchie*stringForm*searchLabel.font: *fixed*bold*
- Xarchie*stringForm*searchText*width: 375
- Xarchie*stringForm*searchText.fromHoriz: searchLabel
- + Xarchie*stringForm*searchText*editType: edit
- Xarchie*stringForm*searchText*translations:#override\n\
- <Enter>: display-caret(True) \n\
- <Leave>: display-caret(False) \n\
- ***************
- *** 242,266 ****
- Xarchie*stringForm*hostLabel.fromVert: searchLabel
- Xarchie*stringForm*hostText.fromVert: searchLabel
- Xarchie*stringForm*hostText.fromHoriz: hostLabel
- ! Xarchie*stringForm*hostText.width: 424
-
- Xarchie*stringForm*locationLabel.label: Location:
- Xarchie*stringForm*locationLabel.fromVert: hostLabel
- Xarchie*stringForm*locationText.fromHoriz: locationLabel
- Xarchie*stringForm*locationText.fromVert: hostLabel
- ! Xarchie*stringForm*locationText.width: 396
-
- Xarchie*stringForm*fileLabel.label: File:
- Xarchie*stringForm*fileLabel.fromVert: locationLabel
- Xarchie*stringForm*fileText.fromHoriz: fileLabel
- Xarchie*stringForm*fileText.fromVert: locationLabel
- ! Xarchie*stringForm*fileText.width: 424
-
- Xarchie*stringForm*sizeLabel.label: Size:
- Xarchie*stringForm*sizeLabel.fromVert: fileLabel
- Xarchie*stringForm*sizeText.fromHoriz: sizeLabel
- Xarchie*stringForm*sizeText.fromVert: fileLabel
- ! Xarchie*stringForm*sizeText*width: 111
-
- Xarchie*stringForm*modesLabel.label: Mode:
- Xarchie*stringForm*modesLabel.fromHoriz:sizeText
- --- 295,319 ----
- Xarchie*stringForm*hostLabel.fromVert: searchLabel
- Xarchie*stringForm*hostText.fromVert: searchLabel
- Xarchie*stringForm*hostText.fromHoriz: hostLabel
- ! Xarchie*stringForm*hostText.width: 429
-
- Xarchie*stringForm*locationLabel.label: Location:
- Xarchie*stringForm*locationLabel.fromVert: hostLabel
- Xarchie*stringForm*locationText.fromHoriz: locationLabel
- Xarchie*stringForm*locationText.fromVert: hostLabel
- ! Xarchie*stringForm*locationText.width: 405
-
- Xarchie*stringForm*fileLabel.label: File:
- Xarchie*stringForm*fileLabel.fromVert: locationLabel
- Xarchie*stringForm*fileText.fromHoriz: fileLabel
- Xarchie*stringForm*fileText.fromVert: locationLabel
- ! Xarchie*stringForm*fileText.width: 429
-
- Xarchie*stringForm*sizeLabel.label: Size:
- Xarchie*stringForm*sizeLabel.fromVert: fileLabel
- Xarchie*stringForm*sizeText.fromHoriz: sizeLabel
- Xarchie*stringForm*sizeText.fromVert: fileLabel
- ! Xarchie*stringForm*sizeText*width: 112
-
- Xarchie*stringForm*modesLabel.label: Mode:
- Xarchie*stringForm*modesLabel.fromHoriz:sizeText
- ***************
- *** 274,280 ****
- Xarchie*stringForm*dateLabel.fromVert: fileLabel
- Xarchie*stringForm*dateText.fromHoriz: dateLabel
- Xarchie*stringForm*dateText.fromVert: fileLabel
- ! Xarchie*stringForm*dateText*width: 111
-
- ! - - - - - - - - -
- ! Popup settings editor
- --- 327,333 ----
- Xarchie*stringForm*dateLabel.fromVert: fileLabel
- Xarchie*stringForm*dateText.fromHoriz: dateLabel
- Xarchie*stringForm*dateText.fromVert: fileLabel
- ! Xarchie*stringForm*dateText*width: 125
-
- ! - - - - - - - - -
- ! Popup settings editor
- ***************
- *** 317,325 ****
- Xarchie*settingsForm*hostButton.label: Host:
- Xarchie*settingsForm*hostButton.menuName: hostMenu
- Xarchie*settingsForm*hostButton.fromVert: setSortButton
- ! Xarchie*settingsForm*hostText.fromVert: setSortButton
- ! Xarchie*settingsForm*hostText.fromHoriz: hostButton
- ! Xarchie*settingsForm*hostText*width: 200
-
- Xarchie*settingsForm*maxHitsLabel.label: Max Hits:
- Xarchie*settingsForm*maxHitsLabel.fromVert: hostButton
- --- 370,378 ----
- Xarchie*settingsForm*hostButton.label: Host:
- Xarchie*settingsForm*hostButton.menuName: hostMenu
- Xarchie*settingsForm*hostButton.fromVert: setSortButton
- ! Xarchie*settingsForm*setHostText.fromVert: setSortButton
- ! Xarchie*settingsForm*setHostText.fromHoriz: hostButton
- ! Xarchie*settingsForm*setHostText*width: 200
-
- Xarchie*settingsForm*maxHitsLabel.label: Max Hits:
- Xarchie*settingsForm*maxHitsLabel.fromVert: hostButton
- ***************
- *** 377,385 ****
- Xarchie*hostMenu.label: Archie Hosts
- Xarchie*hostMenu.menu:\
- (line) \
- (item "archie.mcgill.ca" (action "set-host(archie.mcgill.ca)")) \
- (item "archie.funet.fi" (action "set-host(archie.funet.fi)")) \
- ! (item "archie.au" (action "set-host(archie.au)"))
-
- Xarchie*niceMenu.label: Nice Levels
- Xarchie*niceMenu.menu:\
- --- 430,441 ----
- Xarchie*hostMenu.label: Archie Hosts
- Xarchie*hostMenu.menu:\
- (line) \
- + (item "archie.sura.net" (action "set-host(archie.sura.net)")) \
- (item "archie.mcgill.ca" (action "set-host(archie.mcgill.ca)")) \
- (item "archie.funet.fi" (action "set-host(archie.funet.fi)")) \
- ! (item "archie.au" (action "set-host(archie.au)")) \
- ! (item "archie.doc.ic.ac.uk" (action "set-host(archie.doc.ic.ac.uk)")) \
- ! (item "cs.huji.ac.il" (action "set-host(cs.huji.ac.il)"))
-
- Xarchie*niceMenu.label: Nice Levels
- Xarchie*niceMenu.menu:\
- ***************
- *** 426,431 ****
- --- 482,488 ----
-
- Xarchie*allowShellResize: True
- Xarchie*Dialog*Label.resizable: True
- + Xarchie*Dialog*Text*scrollHorizontal: never
- Xarchie*Dialog.icon: xlogo32
-
- Xarchie*alertDialog*okButton.label: Ok
- ***************
- *** 432,434 ****
- --- 489,498 ----
-
- Xarchie*confirmDialog*yesButton.label: Yes
- Xarchie*confirmDialog*noButton.label: No
- +
- + Xarchie*dialogDialog*okButton.label: Ok
- + Xarchie*dialogDialog*cancelButton.label:Cancel
- + Xarchie*dialogDialog.value*translations:#override\n\
- + <Key>Return: dialog-ok() \n\
- + <Enter>: display-caret(True) \n\
- + <Leave>: display-caret(False) \n
- *** /tmp/release17219/Xarchie.ad.h Tue Nov 12 16:53:30 1991
- --- Xarchie.ad.h Tue Nov 12 12:53:03 1991
- ***************
- *** 1,4 ****
- ! "Xarchie.archieHost: archie.mcgill.ca",
- "Xarchie.searchType: exact",
- "Xarchie.sortType: default",
- "Xarchie.maxHits: 99",
- --- 1,4 ----
- ! "Xarchie.archieHost: archie.sura.net",
- "Xarchie.searchType: exact",
- "Xarchie.sortType: default",
- "Xarchie.maxHits: 99",
- ***************
- *** 8,14 ****
- --- 8,16 ----
- "Xarchie.niceLevel: 0",
- "Xarchie.ftpDir: .",
- "Xarchie.ftpMode: binary",
- + "Xarchie.saveFormatOneLine: False",
- "Xarchie.debugLevel: 0",
- + "Xarchie.expert: False",
- "Xarchie.widgets: \
- toplevel Paned outerPaned \
- \
- ***************
- *** 15,27 ****
- outerPaned Form buttonForm \
- outerPaned.buttonForm Command quitButton \
- outerPaned.buttonForm Command queryButton \
- outerPaned.buttonForm Command ftpButton \
- outerPaned.buttonForm MenuButton searchButton \
- - outerPaned.buttonForm.searchButton EzMenu searchNowMenu \
- outerPaned.buttonForm MenuButton sortButton \
- - outerPaned.buttonForm.sortButton EzMenu sortNowMenu \
- outerPaned.buttonForm MenuButton niceButton \
- - outerPaned.buttonForm.niceButton EzMenu niceNowMenu \
- outerPaned.buttonForm Command settingsButton \
- outerPaned.buttonForm Label statusLabel \
- outerPaned.buttonForm AsciiText statusText \
- --- 17,28 ----
- outerPaned Form buttonForm \
- outerPaned.buttonForm Command quitButton \
- outerPaned.buttonForm Command queryButton \
- + outerPaned.buttonForm Command abortButton \
- + outerPaned.buttonForm Command saveButton \
- outerPaned.buttonForm Command ftpButton \
- outerPaned.buttonForm MenuButton searchButton \
- outerPaned.buttonForm MenuButton sortButton \
- outerPaned.buttonForm MenuButton niceButton \
- outerPaned.buttonForm Command settingsButton \
- outerPaned.buttonForm Label statusLabel \
- outerPaned.buttonForm AsciiText statusText \
- ***************
- *** 49,54 ****
- --- 50,59 ----
- outerPaned.stringForm AsciiText modesText \
- outerPaned.stringForm Label dateLabel \
- outerPaned.stringForm AsciiText dateText ",
- + "Xarchie.menus:\
- + outerPaned.buttonForm.searchButton EzMenu searchNowMenu \
- + outerPaned.buttonForm.sortButton EzMenu sortNowMenu \
- + outerPaned.buttonForm.niceButton EzMenu niceNowMenu",
- "Xarchie.settingsWidgets:\
- toplevel TopLevelShell settingsShell \
- settingsShell Form settingsForm \
- ***************
- *** 64,70 ****
- settingsShell.settingsForm Label sortLabel \
- settingsShell.settingsForm MenuButton hostButton \
- settingsShell.settingsForm EzMenu hostMenu \
- ! settingsShell.settingsForm AsciiText hostText \
- settingsShell.settingsForm Label maxHitsLabel \
- settingsShell.settingsForm AsciiText maxHitsText \
- settingsShell.settingsForm Label timeoutLabel \
- --- 69,75 ----
- settingsShell.settingsForm Label sortLabel \
- settingsShell.settingsForm MenuButton hostButton \
- settingsShell.settingsForm EzMenu hostMenu \
- ! settingsShell.settingsForm AsciiText setHostText \
- settingsShell.settingsForm Label maxHitsLabel \
- settingsShell.settingsForm AsciiText maxHitsText \
- settingsShell.settingsForm Label timeoutLabel \
- ***************
- *** 105,119 ****
- <Enter>: display-caret(True) \\n\
- <Leave>: display-caret(False) \\n",
- "Xarchie*outerPaned.orientation: vertical",
- "Xarchie*buttonForm*quitButton.label: Quit",
- "Xarchie*buttonForm*quitButton.translations:#override\\n\
- ! <Btn1Down>,<Btn1Up>: quit() \\n",
- "Xarchie*buttonForm*queryButton.label: Query",
- "Xarchie*buttonForm*queryButton.fromHoriz: quitButton",
- "Xarchie*buttonForm*queryButton.translations:#override\\n\
- <Btn1Down>,<Btn1Up>: query() \\n",
- "Xarchie*buttonForm*ftpButton.label: Ftp",
- ! "Xarchie*buttonForm*ftpButton.fromHoriz: queryButton",
- "Xarchie*buttonForm*ftpButton.translations:#override\\n\
- <Btn1Down>,<Btn1Up>: ftp() \\n",
- "Xarchie*buttonForm*searchButton.label: Search Type",
- --- 110,137 ----
- <Enter>: display-caret(True) \\n\
- <Leave>: display-caret(False) \\n",
- "Xarchie*outerPaned.orientation: vertical",
- + "Xarchie*buttonForm.min: 50",
- + "Xarchie*buttonForm.max: 50",
- + "Xarchie*buttonForm.showGrip: False",
- "Xarchie*buttonForm*quitButton.label: Quit",
- "Xarchie*buttonForm*quitButton.translations:#override\\n\
- ! Shift<Btn1Down>,<Btn1Up>: quit(always) \\n\
- ! <Btn1Down>,<Btn1Up>: quit() \\n",
- "Xarchie*buttonForm*queryButton.label: Query",
- "Xarchie*buttonForm*queryButton.fromHoriz: quitButton",
- "Xarchie*buttonForm*queryButton.translations:#override\\n\
- <Btn1Down>,<Btn1Up>: query() \\n",
- + "Xarchie*buttonForm*abortButton.label: Abort",
- + "Xarchie*buttonForm*abortButton.fromHoriz: queryButton",
- + "Xarchie*buttonForm*abortButton.translations:#override\\n\
- + <Btn1Down>,<Btn1Up>: abort() \\n",
- + "Xarchie*buttonForm*saveButton.label: Save",
- + "Xarchie*buttonForm*saveButton.fromHoriz: abortButton",
- + "Xarchie*buttonForm*saveButton.translations:#override\\n\
- + Shift<Btn1Down>,<Btn1Up>: save-to-file(\"%s.lst\") \\n\
- + <Btn1Down>,<Btn1Up>: save-to-file() \\n",
- "Xarchie*buttonForm*ftpButton.label: Ftp",
- ! "Xarchie*buttonForm*ftpButton.fromHoriz: saveButton",
- "Xarchie*buttonForm*ftpButton.translations:#override\\n\
- <Btn1Down>,<Btn1Up>: ftp() \\n",
- "Xarchie*buttonForm*searchButton.label: Search Type",
- ***************
- *** 136,148 ****
- --- 154,173 ----
- "Xarchie*buttonForm*statusText*width: 410",
- "Xarchie*buttonForm*statusText*editType: read",
- "Xarchie*buttonForm*statusText.borderWidth: 0",
- + "Xarchie*buttonForm*statusText*scrollHorizontal: never",
- "Xarchie*buttonForm*statusText*translations:#override\\n",
- "Xarchie*innerPaned.orientation: horizontal",
- + "Xarchie*innerPaned.showGrip: False",
- "Xarchie*stringForm.min: 120",
- "Xarchie*stringForm.max: 120",
- + "Xarchie*stringForm*Label.justify: left",
- + "Xarchie*stringForm*Label.font: fixed",
- + "Xarchie*stringForm*AsciiSrc.editType: read",
- "Xarchie*stringForm*searchLabel.label: Search Term:",
- + "Xarchie*stringForm*searchLabel.font: *fixed*bold*",
- "Xarchie*stringForm*searchText*width: 375",
- "Xarchie*stringForm*searchText.fromHoriz: searchLabel",
- + "Xarchie*stringForm*searchText*editType: edit",
- "Xarchie*stringForm*searchText*translations:#override\\n\
- <Enter>: display-caret(True) \\n\
- <Leave>: display-caret(False) \\n\
- ***************
- *** 151,172 ****
- "Xarchie*stringForm*hostLabel.fromVert: searchLabel",
- "Xarchie*stringForm*hostText.fromVert: searchLabel",
- "Xarchie*stringForm*hostText.fromHoriz: hostLabel",
- ! "Xarchie*stringForm*hostText.width: 424",
- "Xarchie*stringForm*locationLabel.label: Location:",
- "Xarchie*stringForm*locationLabel.fromVert: hostLabel",
- "Xarchie*stringForm*locationText.fromHoriz: locationLabel",
- "Xarchie*stringForm*locationText.fromVert: hostLabel",
- ! "Xarchie*stringForm*locationText.width: 396",
- "Xarchie*stringForm*fileLabel.label: File:",
- "Xarchie*stringForm*fileLabel.fromVert: locationLabel",
- "Xarchie*stringForm*fileText.fromHoriz: fileLabel",
- "Xarchie*stringForm*fileText.fromVert: locationLabel",
- ! "Xarchie*stringForm*fileText.width: 424",
- "Xarchie*stringForm*sizeLabel.label: Size:",
- "Xarchie*stringForm*sizeLabel.fromVert: fileLabel",
- "Xarchie*stringForm*sizeText.fromHoriz: sizeLabel",
- "Xarchie*stringForm*sizeText.fromVert: fileLabel",
- ! "Xarchie*stringForm*sizeText*width: 111",
- "Xarchie*stringForm*modesLabel.label: Mode:",
- "Xarchie*stringForm*modesLabel.fromHoriz:sizeText",
- "Xarchie*stringForm*modesLabel.fromVert: fileLabel",
- --- 176,197 ----
- "Xarchie*stringForm*hostLabel.fromVert: searchLabel",
- "Xarchie*stringForm*hostText.fromVert: searchLabel",
- "Xarchie*stringForm*hostText.fromHoriz: hostLabel",
- ! "Xarchie*stringForm*hostText.width: 429",
- "Xarchie*stringForm*locationLabel.label: Location:",
- "Xarchie*stringForm*locationLabel.fromVert: hostLabel",
- "Xarchie*stringForm*locationText.fromHoriz: locationLabel",
- "Xarchie*stringForm*locationText.fromVert: hostLabel",
- ! "Xarchie*stringForm*locationText.width: 405",
- "Xarchie*stringForm*fileLabel.label: File:",
- "Xarchie*stringForm*fileLabel.fromVert: locationLabel",
- "Xarchie*stringForm*fileText.fromHoriz: fileLabel",
- "Xarchie*stringForm*fileText.fromVert: locationLabel",
- ! "Xarchie*stringForm*fileText.width: 429",
- "Xarchie*stringForm*sizeLabel.label: Size:",
- "Xarchie*stringForm*sizeLabel.fromVert: fileLabel",
- "Xarchie*stringForm*sizeText.fromHoriz: sizeLabel",
- "Xarchie*stringForm*sizeText.fromVert: fileLabel",
- ! "Xarchie*stringForm*sizeText*width: 112",
- "Xarchie*stringForm*modesLabel.label: Mode:",
- "Xarchie*stringForm*modesLabel.fromHoriz:sizeText",
- "Xarchie*stringForm*modesLabel.fromVert: fileLabel",
- ***************
- *** 178,184 ****
- "Xarchie*stringForm*dateLabel.fromVert: fileLabel",
- "Xarchie*stringForm*dateText.fromHoriz: dateLabel",
- "Xarchie*stringForm*dateText.fromVert: fileLabel",
- ! "Xarchie*stringForm*dateText*width: 111",
- "Xarchie*settingsForm*Text*borderWidth: 0",
- "Xarchie*settingsForm*Label*resizable: True",
- "Xarchie*settingsShell.title: Xarchie Settings Panel",
- --- 203,209 ----
- "Xarchie*stringForm*dateLabel.fromVert: fileLabel",
- "Xarchie*stringForm*dateText.fromHoriz: dateLabel",
- "Xarchie*stringForm*dateText.fromVert: fileLabel",
- ! "Xarchie*stringForm*dateText*width: 125",
- "Xarchie*settingsForm*Text*borderWidth: 0",
- "Xarchie*settingsForm*Label*resizable: True",
- "Xarchie*settingsShell.title: Xarchie Settings Panel",
- ***************
- *** 210,218 ****
- "Xarchie*settingsForm*hostButton.label: Host:",
- "Xarchie*settingsForm*hostButton.menuName: hostMenu",
- "Xarchie*settingsForm*hostButton.fromVert: setSortButton",
- ! "Xarchie*settingsForm*hostText.fromVert: setSortButton",
- ! "Xarchie*settingsForm*hostText.fromHoriz: hostButton",
- ! "Xarchie*settingsForm*hostText*width: 200",
- "Xarchie*settingsForm*maxHitsLabel.label: Max Hits:",
- "Xarchie*settingsForm*maxHitsLabel.fromVert: hostButton",
- "Xarchie*settingsForm*maxHitsText.fromVert: hostButton",
- --- 235,243 ----
- "Xarchie*settingsForm*hostButton.label: Host:",
- "Xarchie*settingsForm*hostButton.menuName: hostMenu",
- "Xarchie*settingsForm*hostButton.fromVert: setSortButton",
- ! "Xarchie*settingsForm*setHostText.fromVert: setSortButton",
- ! "Xarchie*settingsForm*setHostText.fromHoriz: hostButton",
- ! "Xarchie*settingsForm*setHostText*width: 200",
- "Xarchie*settingsForm*maxHitsLabel.label: Max Hits:",
- "Xarchie*settingsForm*maxHitsLabel.fromVert: hostButton",
- "Xarchie*settingsForm*maxHitsText.fromVert: hostButton",
- ***************
- *** 256,264 ****
- "Xarchie*hostMenu.label: Archie Hosts",
- "Xarchie*hostMenu.menu:\
- (line) \
- (item \"archie.mcgill.ca\" (action \"set-host(archie.mcgill.ca)\")) \
- (item \"archie.funet.fi\" (action \"set-host(archie.funet.fi)\")) \
- ! (item \"archie.au\" (action \"set-host(archie.au)\"))",
- "Xarchie*niceMenu.label: Nice Levels",
- "Xarchie*niceMenu.menu:\
- (line) \
- --- 281,292 ----
- "Xarchie*hostMenu.label: Archie Hosts",
- "Xarchie*hostMenu.menu:\
- (line) \
- + (item \"archie.sura.net\" (action \"set-host(archie.sura.net)\")) \
- (item \"archie.mcgill.ca\" (action \"set-host(archie.mcgill.ca)\")) \
- (item \"archie.funet.fi\" (action \"set-host(archie.funet.fi)\")) \
- ! (item \"archie.au\" (action \"set-host(archie.au)\")) \
- ! (item \"archie.doc.ic.ac.uk\" (action \"set-host(archie.doc.ic.ac.uk)\")) \
- ! (item \"cs.huji.ac.il\" (action \"set-host(cs.huji.ac.il)\"))",
- "Xarchie*niceMenu.label: Nice Levels",
- "Xarchie*niceMenu.menu:\
- (line) \
- ***************
- *** 294,300 ****
- --- 322,335 ----
- (item \"Nicest\" (action \"set-nice-level-now(32765)\"))",
- "Xarchie*allowShellResize: True",
- "Xarchie*Dialog*Label.resizable: True",
- + "Xarchie*Dialog*Text*scrollHorizontal: never",
- "Xarchie*Dialog.icon: xlogo32",
- "Xarchie*alertDialog*okButton.label: Ok",
- "Xarchie*confirmDialog*yesButton.label: Yes",
- "Xarchie*confirmDialog*noButton.label: No",
- + "Xarchie*dialogDialog*okButton.label: Ok",
- + "Xarchie*dialogDialog*cancelButton.label:Cancel",
- + "Xarchie*dialogDialog.value*translations:#override\\n\
- + <Key>Return: dialog-ok() \\n\
- + <Enter>: display-caret(True) \\n\
- + <Leave>: display-caret(False) \\n",
- *** /tmp/release17219/actions.c Tue Nov 12 16:53:34 1991
- --- actions.c Tue Nov 12 12:47:14 1991
- ***************
- *** 6,15 ****
- * which are imported. Eventually there may be more actions, and they'll
- * be put here.
- *
- ! * George Ferguson, ferguson@cs.rochester.edu, 12 Sep 1991.
- *
- */
-
- #include <X11/Intrinsic.h>
- #include <X11/StringDefs.h>
- #include <X11/Xaw/Text.h>
- --- 6,16 ----
- * which are imported. Eventually there may be more actions, and they'll
- * be put here.
- *
- ! * George Ferguson, ferguson@cs.rochester.edu, 12 Nov 1991.
- *
- */
-
- + #include <stdio.h>
- #include <X11/Intrinsic.h>
- #include <X11/StringDefs.h>
- #include <X11/Xaw/Text.h>
- ***************
- *** 22,38 ****
- #include "settings.h" /* for settings actions */
- #include "ftp.h"
- #include "alert.h"
- #include "regex.h"
-
- /*
- * Functions defined here
- */
- static void quitAction(),queryAction(),ftpAction();
-
- /*
- * Data defined here:
- */
- ! XtActionsRec actionTable[15] = { /* check size in actions.h! */
- { "quit", quitAction },
- { "query", queryAction },
- { "ftp", ftpAction },
- --- 23,45 ----
- #include "settings.h" /* for settings actions */
- #include "ftp.h"
- #include "alert.h"
- + #include "confirm.h"
- + #include "dialog.h"
- #include "regex.h"
- + extern char *progname;
- + extern Database *db;
- + extern abortDirsend(); /* dirsend.c */
-
- /*
- * Functions defined here
- */
- static void quitAction(),queryAction(),ftpAction();
- + static void saveAction(),abortAction();
-
- /*
- * Data defined here:
- */
- ! XtActionsRec actionTable[22] = { /* check size in actions.h! */
- { "quit", quitAction },
- { "query", queryAction },
- { "ftp", ftpAction },
- ***************
- *** 48,54 ****
- --- 55,69 ----
- { "set-host-now", setHostNowAction },
- { "set-nice-level", setNiceLevelAction },
- { "set-nice-level-now", setNiceLevelNowAction },
- + { "save-to-file", saveAction },
- + { "abort", abortAction },
- + { "alert-ok", alertOk },
- + { "confirm-yes", confirmYes },
- + { "confirm-no", confirmNo },
- + { "dialog-ok", dialogOk },
- + { "dialog-cancel", dialogCancel },
- };
- + static Boolean doingQuery;
-
- /* - - - - - - - - */
-
- ***************
- *** 60,67 ****
- String *params;
- Cardinal *num_params;
- {
- ! XtDestroyApplicationContext(appContext);
- ! exit(0);
- }
-
- /*ARGSUSED*/
- --- 75,85 ----
- String *params;
- Cardinal *num_params;
- {
- ! if (*num_params > ZERO || appResources.expert ||
- ! confirm0("Really quit xarchie?")) {
- ! XtDestroyApplicationContext(appContext);
- ! exit(0);
- ! }
- }
-
- /*ARGSUSED*/
- ***************
- *** 77,82 ****
- --- 95,106 ----
- int len;
- Boolean gif;
-
- + if (doingQuery) {
- + /* Don't do anything using popups since we could be in dirsend()
- + by now. */
- + XBell(display,0);
- + return;
- + }
- XtSetArg(args[0],XtNstring,&s);
- XtGetValues(searchText,args,ONE);
- if (*s == '\0') {
- ***************
- *** 114,119 ****
- --- 138,148 ----
- return;
- }
- #endif /* DONT_CATCH_GIFS */
- + doingQuery = True;
- + if (queryButton != NULL)
- + XtSetSensitive(queryButton,False);
- + if (abortButton != NULL)
- + XtSetSensitive(abortButton,True);
- if (appResources.sortType == GfInvdate)
- procquery(appResources.archieHost,s,appResources.maxHits,
- appResources.offset,appResources.searchType,True,0);
- ***************
- *** 120,125 ****
- --- 149,159 ----
- else
- procquery(appResources.archieHost,s,appResources.maxHits,
- appResources.offset,appResources.searchType,False,0);
- + doingQuery = False;
- + if (abortButton != NULL)
- + XtSetSensitive(abortButton,False);
- + if (queryButton != NULL)
- + XtSetSensitive(queryButton,True);
- }
-
- /*ARGSUSED*/
- ***************
- *** 141,144 ****
- --- 175,245 ----
- }
- ftp(selectedHostEntry->hostname,selectedLocEntry->linkpath,
- selectedFileEntry->name);
- + }
- +
- + /*ARGSUSED*/
- + static void
- + saveAction(w,event,params,num_params)
- + Widget w;
- + XEvent *event;
- + String *params;
- + Cardinal *num_params;
- + {
- + static char filename[256];
- + Arg args[1];
- + char *s;
- + FILE *fp;
- + HostEntry *hostp;
- + LocEntry *locp;
- + FileEntry *filep;
- +
- + if (*num_params == ZERO) {
- + if ((s=dialog("Filename to save to:",filename)) == NULL || *s == '\0')
- + return;
- + strncpy(filename,s,255);
- + } else if (*num_params == ONE) {
- + XtSetArg(args[0],XtNstring,&s);
- + XtGetValues(searchText,args,ONE);
- + sprintf(filename,*params,s);
- + } else {
- + fprintf(stderr,"%s: wrong number of args to \"save-to-file()\"",
- + progname);
- + return;
- + }
- + if ((fp=fopen(filename,"w")) == NULL) {
- + alert1("Can't open %s for writing",filename);
- + return;
- + }
- + status1("Writing %s...",filename);
- + if (appResources.saveFormatOneLine) {
- + for (hostp=db->hostEntries; hostp != NULL; hostp = hostp->next)
- + for (locp=hostp->locEntries; locp != NULL; locp = locp->next)
- + for (filep=locp->fileEntries; filep != NULL; filep=filep->next)
- + fprintf(fp,"%s %10d %s %s:%s/%s\n",
- + filep->modes,filep->size,filep->date,
- + hostp->hostname,locp->linkpath,filep->name);
- + } else {
- + for (hostp=db->hostEntries; hostp != NULL; hostp = hostp->next) {
- + fprintf(fp,"%s\n",hostp->hostname);
- + for (locp=hostp->locEntries; locp != NULL; locp = locp->next) {
- + fprintf(fp,"\t%s\n",locp->linkpath);
- + for (filep=locp->fileEntries; filep != NULL; filep=filep->next)
- + fprintf(fp,"\t\t%s %10d %s %s\n",
- + filep->modes,filep->size,filep->date,filep->name);
- + }
- + }
- + }
- + fclose(fp);
- + status0("Ready");
- + }
- +
- + /*ARGSUSED*/
- + static void
- + abortAction(w,event,params,num_params)
- + Widget w;
- + XEvent *event;
- + String *params;
- + Cardinal *num_params;
- + {
- + abortDirsend();
- }
- *** /tmp/release17219/actions.h Tue Nov 12 16:53:38 1991
- --- actions.h Tue Oct 22 08:31:03 1991
- ***************
- *** 1,7 ****
- /*
- * actions.h : Definition of the action table so its size is known
- *
- ! * George Ferguson, ferguson@cs.rochester.edu, 4 Sep 1991.
- *
- */
-
- --- 1,7 ----
- /*
- * actions.h : Definition of the action table so its size is known
- *
- ! * George Ferguson, ferguson@cs.rochester.edu, 20 Oct 1991.
- *
- */
-
- ***************
- *** 8,13 ****
- #ifndef ACTIONS_H
- #define ACTIONS_H
-
- ! extern XtActionsRec actionTable[15];
-
- #endif /* ACTIONS_H */
- --- 8,13 ----
- #ifndef ACTIONS_H
- #define ACTIONS_H
-
- ! extern XtActionsRec actionTable[22];
-
- #endif /* ACTIONS_H */
- *** /tmp/release17219/appres.h Tue Nov 12 16:53:44 1991
- --- appres.h Tue Nov 12 12:47:49 1991
- ***************
- *** 2,8 ****
- * appres.h : External defs for files needing the application
- * resources.
- *
- ! * George Ferguson, ferguson@cs.rochester.edu, 12 Sep 1991.
- *
- */
-
- --- 2,8 ----
- * appres.h : External defs for files needing the application
- * resources.
- *
- ! * George Ferguson, ferguson@cs.rochester.edu, 12 Nov 1991.
- *
- */
-
- ***************
- *** 13,18 ****
- --- 13,19 ----
-
- typedef struct {
- String widgets;
- + String menus;
- SearchType searchType;
- SortType sortType;
- String archieHost;
- ***************
- *** 25,30 ****
- --- 26,33 ----
- String ftpType;
- int debugLevel;
- String settingsWidgets;
- + Boolean saveFormatOneLine;
- + Boolean expert;
- } AppResources;
-
- extern AppResources appResources;
- *** /tmp/release17219/aquery.c Tue Nov 12 16:53:48 1991
- --- aquery.c Sat Nov 2 16:48:27 1991
- ***************
- *** 11,23 ****
- * and new sorting code by George Ferguson (ferguson@cs.rochester.edu)
- * and Brendan Kehoe (brendan@cs.widener.edu).
- *
- ! * v1.1.1 - bcn 08/20/91 - make it do it properly (new invdatecmplink)
- ! * v1.1.1 - bpk 08/20/91 - made sorting go inverted as we purport it does
- */
- #include <copyright.h>
-
- #include <stdio.h>
- ! #include <strings.h> /* for char *index() */
-
- #include <pfs.h>
- #include <perrno.h>
- --- 11,29 ----
- * and new sorting code by George Ferguson (ferguson@cs.rochester.edu)
- * and Brendan Kehoe (brendan@cs.widener.edu).
- *
- ! * v1.2.0 - 09/17/91 (bpk) - added BULL & USG stuff, thanks to Jim Sillas
- ! * v1.1.3 - 08/30/91 (bpk) - cast index()
- ! * v1.1.2 - 08/20/91 (bcn) - make it do it properly (new invdatecmplink)
- ! * v1.1.1 - 08/20/91 (bpk) - made sorting go inverted as we purport it does
- */
- #include <copyright.h>
-
- #include <stdio.h>
- ! #if defined(USG) || defined(UTS) || defined(_AIX)
- ! # include <string.h> /* for char *index() */
- ! #else
- ! # include <strings.h> /* for char *index() */
- ! #endif
-
- #include <pfs.h>
- #include <perrno.h>
- ***************
- *** 26,31 ****
- --- 32,40 ----
-
- static void translateArchieResponse();
-
- + extern int pwarn;
- + extern char p_warn_string[];
- +
- /*
- * archie_query : Sends a request to _host_, telling it to search for
- * _string_ using _query_type_ as the search method.
- ***************
- *** 83,89 ****
- max_hits,offset,query_type,string);
-
- /* Initialize Prospero structures */
- ! perrno = 0; *p_err_string = '\0';
- vdir_init(dir);
-
- /* Retrieve the list of matches, return error if there was one */
- --- 92,99 ----
- max_hits,offset,query_type,string);
-
- /* Initialize Prospero structures */
- ! perrno = PSUCCESS; *p_err_string = '\0';
- ! pwarn = PNOWARN; *p_warn_string = '\0';
- vdir_init(dir);
-
- /* Retrieve the list of matches, return error if there was one */
- ***************
- *** 181,187 ****
- if (strncmp(l->filename,"ARCHIE/HOST",11) == 0) {
- l->type = stcopyr("EXTERNAL(AFTP,DIRECTORY)",l->type);
- l->host = stcopyr(l->filename+12,l->host);
- ! slash = index(l->host,'/');
- if (slash) {
- l->filename = stcopyr(slash,l->filename);
- *slash++ = '\0';
- --- 191,197 ----
- if (strncmp(l->filename,"ARCHIE/HOST",11) == 0) {
- l->type = stcopyr("EXTERNAL(AFTP,DIRECTORY)",l->type);
- l->host = stcopyr(l->filename+12,l->host);
- ! slash = (char *)index(l->host,'/');
- if (slash) {
- l->filename = stcopyr(slash,l->filename);
- *slash++ = '\0';
- ***************
- *** 197,202 ****
- --- 207,213 ----
- * belongs before q, > 0 if p belongs after q, and == 0 if their
- * host and filename fields are identical.
- */
- + int
- defcmplink(p,q)
- VLINK p,q;
- {
- ***************
- *** 216,221 ****
- --- 227,233 ----
- * same, it then calls defcmplink() and returns its
- * value.
- */
- + int
- invdatecmplink(p,q)
- VLINK p,q;
- {
- *** /tmp/release17219/archie.h Tue Nov 12 16:53:51 1991
- --- archie.h Mon Oct 21 12:38:21 1991
- ***************
- *** 4,18 ****
- * Written by Brendan Kehoe (brendan@cs.widener.edu),
- * George Ferguson (ferguson@cs.rochester.edu), and
- * Clifford Neuman (bcn@isi.edu).
- - *
- */
-
- /*
- ! * Archie server (one of): archie.mcgill.ca
- * archie.funet.fi
- * archie.au
- */
- ! #define ARCHIE_HOST "ARCHIE.MCGILL.CA"
-
- /*
- * Default value for max hits. Note that this is normally different
- --- 4,18 ----
- * Written by Brendan Kehoe (brendan@cs.widener.edu),
- * George Ferguson (ferguson@cs.rochester.edu), and
- * Clifford Neuman (bcn@isi.edu).
- */
-
- /*
- ! * Archie server (one of): archie.sura.net
- ! * archie.mcgill.ca
- * archie.funet.fi
- * archie.au
- */
- ! #define ARCHIE_HOST "ARCHIE.SURA.NET"
-
- /*
- * Default value for max hits. Note that this is normally different
- ***************
- *** 19,25 ****
- * for different client implementations. Doing so makes it easier to
- * collect statistics on the use of the various clients.
- */
- ! #define MAX_HITS 99
-
- /*
- * CLIENT_VERSION may be used to identify the version of the client if
- --- 19,33 ----
- * for different client implementations. Doing so makes it easier to
- * collect statistics on the use of the various clients.
- */
- ! #ifdef VMS
- ! # define MAX_HITS 98 /* VMS Client */
- ! #else
- ! # ifdef XARCHIE
- ! # define MAX_HITS 99 /* X Client */
- ! # else
- ! # define MAX_HITS 95 /* Normal client */
- ! # endif
- ! #endif
-
- /*
- * CLIENT_VERSION may be used to identify the version of the client if
- ***************
- *** 26,35 ****
- * distributed separately from the Prospero distribution. The version
- * command should then identify both the client version and the Prospero
- * version identifiers.
- - *
- - * #define CLIENT_VERSION "xyz"
- */
- ! #define CLIENT_VERSION "xarchie"
-
- /* Procedures from user/aquery.c */
-
- --- 34,45 ----
- * distributed separately from the Prospero distribution. The version
- * command should then identify both the client version and the Prospero
- * version identifiers.
- */
- ! #ifdef XARCHIE
- ! # define CLIENT_VERSION "1.3-X"
- ! #else
- ! # define CLIENT_VERSION "1.2"
- ! #endif
-
- /* Procedures from user/aquery.c */
-
- ***************
- *** 47,50 ****
- /* Flags */
- #define AQ_NOSORT 0x01 /* Don't sort */
- #define AQ_NOTRANS 0x02 /* Don't translate Archie responses */
- -
- --- 57,59 ----
- *** /tmp/release17219/atalloc.c Tue Nov 12 16:53:55 1991
- --- atalloc.c Mon Oct 21 12:39:23 1991
- ***************
- *** 52,57 ****
- --- 52,58 ----
- * ATFREE takes a pointer to a PATTRRIB structure and adds it to
- * the free list for later reuse.
- */
- + void
- atfree(at)
- PATTRIB at;
- {
- ***************
- *** 77,82 ****
- --- 78,84 ----
- * PATTRIB structures. It is used to free an entrie list of PATTRIB
- * structures.
- */
- + void
- atlfree(at)
- PATTRIB at;
- {
- *** /dev/null Tue Nov 12 16:30:11 1991
- --- dialog.c Sun Oct 20 15:58:33 1991
- ***************
- *** 0 ****
- --- 1,110 ----
- + /*
- + * dialog.c : A popup string entry box
- + *
- + * George Ferguson, ferguson@cs.rochester.edu, 20 Oct 1991.
- + *
- + */
- +
- + #include <X11/Intrinsic.h>
- + #include <X11/StringDefs.h>
- + #include <X11/Shell.h>
- + #include <X11/Xaw/Dialog.h>
- + #include <X11/Xaw/Cardinals.h>
- + #include <stdio.h>
- + extern Widget toplevel; /* this is the only external */
- +
- + /*
- + * Functions defined here
- + */
- + char *dialog0(); /* main public routine */
- + void dialogOk(), dialogCancel(); /* public action procedures */
- +
- + static Widget dialogShell,dialogDialog;
- + static Boolean dialogDone;
- + static char *dialogResult;
- +
- + char *
- + dialog(str,value)
- + char *str,*value;
- + {
- + Arg args[2];
- + XEvent event;
- + Window rwin,child;
- + int rx,ry,cx,cy,x,y;
- + unsigned int but;
- + Dimension w,h;
- +
- + /* Go synchronous or the widgets don't resize properly */
- + XSynchronize(XtDisplay(toplevel),True);
- + if (dialogShell == NULL) {
- + dialogShell = XtCreatePopupShell("dialogShell",
- + transientShellWidgetClass,
- + toplevel,NULL,ZERO);
- + dialogDialog = XtCreateManagedWidget("dialogDialog",
- + dialogWidgetClass,
- + dialogShell,NULL,ZERO);
- + XawDialogAddButton(dialogDialog,"okButton",dialogOk,NULL);
- + XawDialogAddButton(dialogDialog,"cancelButton",dialogCancel,NULL);
- + XtRealizeWidget(dialogShell);
- + }
- + /* Set the label and initial value */
- + XtSetArg(args[0],XtNlabel,str);
- + XtSetArg(args[1],XtNvalue,(value ? value : ""));
- + XtSetValues(dialogDialog,args,TWO);
- + /* Center the popup over the mouse */
- + XtSetArg(args[0],XtNwidth,&w);
- + XtSetArg(args[1],XtNheight,&h);
- + XtGetValues(dialogShell,args,TWO);
- + XQueryPointer(XtDisplay(toplevel),XtWindow(toplevel),
- + &rwin,&child,&rx,&ry,&cx,&cy,&but);
- + x = rx-w/2;
- + if (x < 0)
- + x = 0;
- + else if (x > WidthOfScreen(XtScreen(toplevel))-w)
- + x = WidthOfScreen(XtScreen(toplevel))-w;
- + y = ry-h/2;
- + if (y < 0)
- + y = 0;
- + else if (y > HeightOfScreen(XtScreen(toplevel))-h)
- + y = WidthOfScreen(XtScreen(toplevel))-h;
- + XtSetArg(args[0],XtNx,x);
- + XtSetArg(args[1],XtNy,y);
- + XtSetValues(dialogShell,args,TWO);
- + /* Pop it up and block until one of the buttons is clicked */
- + dialogDone = False;
- + XtPopup(dialogShell,XtGrabExclusive);
- + while (!dialogDone) {
- + XtAppNextEvent(XtWidgetToApplicationContext(toplevel),&event);
- + XtDispatchEvent(&event);
- + }
- + /* Okay, pop it down */
- + XtPopdown(dialogShell);
- + /* Back to normal */
- + XSynchronize(XtDisplay(toplevel),False);
- + /* And here's the entered value */
- + return(dialogResult);
- + }
- +
- + /*ARGSUSED*/
- + void
- + dialogOk(w,event,params,num_params)
- + Widget w;
- + XEvent *event;
- + String *params;
- + Cardinal *num_params;
- + {
- + dialogResult = XawDialogGetValueString(dialogDialog);
- + dialogDone = True;
- + }
- +
- + /*ARGSUSED*/
- + void
- + dialogCancel(w,event,params,num_params)
- + Widget w;
- + XEvent *event;
- + String *params;
- + Cardinal *num_params;
- + {
- + dialogResult = NULL;
- + dialogDone = True;
- + }
- *** /dev/null Tue Nov 12 16:30:11 1991
- --- dialog.h Sun Oct 20 15:54:11 1991
- ***************
- *** 0 ****
- --- 1,10 ----
- + /*
- + * dialog.h : A popup string entry box.
- + *
- + * George Ferguson, ferguson@cs.rochester.edu, 20 Oct 1991.
- + *
- + */
- +
- + extern char *dialog(/* str,value */);
- + extern void dialogOk(/* w,event,params,numparams */);
- + extern void dialogCancel(/* w,event,params,numparams */);
- *** /tmp/release17219/dirsend.c Tue Nov 12 16:54:39 1991
- --- dirsend.c Thu Nov 7 10:05:57 1991
- ***************
- *** 4,44 ****
- * For copying and distribution information, please see the file
- * <copyright.h>.
- *
- ! * Modified for xarchie by George Ferguson, ferguson@cs.rochester.edu,
- ! * 4 Sep 1991.
- */
-
- #include <copyright.h>
- #include <stdio.h>
- #include <errno.h>
- - #include <sys/time.h>
- - #include <netdb.h>
- - #include <strings.h>
-
- ! #include <sys/types.h>
- ! #include <sys/socket.h>
- ! #ifdef AIX
- ! #include <sys/select.h>
- ! #endif
-
- -
- #include <pfs.h>
- #include <pprot.h>
- #include <pcompat.h>
- #include <perrno.h>
- - #include <pmachine.h>
-
-
- static int notprived = 0;
- extern int errno;
- extern int perrno;
- #ifdef DEBUG
- extern int pfs_debug;
- #endif
- extern int pfs_disable_flag;
-
- - int rdgram_priority = 0;
- -
- char *nlsindex();
-
- #define max(X, Y) ((X) > (Y) ? (X) : (Y))
- --- 4,88 ----
- * For copying and distribution information, please see the file
- * <copyright.h>.
- *
- ! * v1.2.3 - 11/04/91 (bcn) - removed host comparison and replaced with check
- ! for connection id (undoes effect of v1.2.2.).
- ! * v1.2.2 - 11/02/91 (gf) - removed extra inet_ntoa() calls and stuff for
- ! multi-interface nets (lmjm@doc.imperial.ac.uk)
- ! * v1.2.1 - 10/20/91 (gf) - asynch implementation
- ! * v1.2.0 - 09/17/91 (bpk) - added BULL & USG stuff, thanks to Jim Sillas
- ! * v1.1.2 - 08/30/91 (bpk) - added VMS support
- ! * v1.1.1 - 08/29/91 (bcn) - changed backoff handling
- ! * v1.1.0 - 08/13/91 (gf) - added XArchie status calls
- ! *
- ! * gf: 20 Oct 1991:
- ! * Broken into pieces so that under X dirsend() doesn't block in select()
- ! * but rather uses Xt calls to allow continued event processing. If
- ! * XARCHIE is not defined, can still be used since processEvent() will
- ! * use select() in this case.
- ! *
- ! * lmjm: 2 Nov 1991:
- ! * I've found that dirsend.c checks to see if the ip address of the response
- ! * is the same as the ip address that it sent to. With multiple interfaces
- ! * this is not always true and a valid response is rejected.
- */
-
- #include <copyright.h>
- #include <stdio.h>
- #include <errno.h>
-
- ! #ifdef VMS
- ! # ifdef WALLONGONG
- ! # include "twg$tcp:[netdist.include]netdb.h"
- ! # else /* Multinet */
- ! # include "multinet_root:[multinet.include]netdb.h"
- ! # endif
- ! # include <vms.h>
- ! #else /* not VMS */
- ! # ifdef NEED_TIME_H
- ! # include <time.h>
- ! # else
- ! # include <sys/time.h>
- ! # endif
- ! # if defined(USG) || defined(UTS) || defined(_AIX)
- ! # include <string.h>
- ! # else
- ! # include <strings.h>
- ! # endif
- ! # include <netdb.h>
- ! # include <sys/types.h>
- ! # include <pmachine.h>
- ! # include <sys/socket.h>
- ! # ifdef NEED_SELECT_H
- ! # include <sys/select.h>
- ! # endif /* NEED_SELECT_H */
- ! #endif /* !VMS */
- ! #include <netinet/in.h>
- ! #include <arpa/inet.h>
-
- #include <pfs.h>
- #include <pprot.h>
- #include <pcompat.h>
- #include <perrno.h>
-
- + /* Gnu C currently fails to pass structures on Sparcs properly. This directly
- + effects the calling of inet_ntoa(). To get around it, we use this hack;
- + take the address of what's being called to inet_ntoa, so it gets it
- + properly. This won't be necessary with gcc 2.0. */
- + #if defined(sun) && defined(__GNUC__)
- + # define SUN_GNU_FIX &
- + #else
- + # define SUN_GNU_FIX
- + #endif
-
- static int notprived = 0;
- extern int errno;
- extern int perrno;
- + extern int rdgram_priority;
- #ifdef DEBUG
- extern int pfs_debug;
- #endif
- extern int pfs_disable_flag;
-
- char *nlsindex();
-
- #define max(X, Y) ((X) > (Y) ? (X) : (Y))
- ***************
- *** 55,60 ****
- --- 99,191 ----
- static int client_dirsrv_retry = CLIENT_DIRSRV_RETRY;
- #endif /* XARCHIE */
-
- + /* These were parameters to dirsend() */
- + static PTEXT pkt;
- + static char *hostname;
- + static struct sockaddr_in *hostaddr;
- +
- + /* These were locals in dirsend(). Note that the initializations here
- + * are really meaningless since we have to redo them for each call to
- + * dirsend() since they were formerly automatically initialized.
- + */
- + static PTEXT first = NULL; /* First returned packet */
- + static PTEXT next; /* The one we are waiting for */
- + static PTEXT vtmp; /* For reorganizing linked list */
- + static PTEXT comp_thru; /* We have all packets though */
- + static int lp = -1; /* Opened UDP port */
- + static int hdr_len; /* Header Length */
- + static int nd_pkts; /* Number of packets we want */
- + static int no_pkts; /* Number of packets we have */
- + static int pkt_cid; /* Packet connection identifier */
- + static unsigned short this_conn_id; /* Connection ID we are using */
- + static unsigned short recvd_thru; /* Received through */
- + static short priority; /* Priority for request */
- + static short one = 0; /* Pointer to value 1 */
- + static short zero = 0; /* Pointer to value 0 */
- + static char *seqtxt; /* Pointer to text w/ sequence # */
- + static struct sockaddr_in us; /* Our address */
- + static struct sockaddr_in to; /* Address to send query */
- + static struct sockaddr_in from; /* Reply received from */
- + static int from_sz; /* Size of from structure */
- + static struct hostent *host; /* Host info from gethostbyname */
- + static long newhostaddr; /* New host address from *host */
- + static int req_udp_port=0; /* Requested port (optional) */
- + static char *openparen; /* Delimits port in name */
- + static char hostnoport[500];/* Host name without port */
- + static int ns; /* Number of bytes actually sent */
- + static int nr; /* Number of bytes received */
- + static fd_set readfds; /* Used for select */
- + static int tmp;
- + static char *ctlptr; /* Pointer to control field */
- + static short stmp; /* Temp short for conversions */
- + static int backoff; /* Server requested backoff */
- + static unsigned char rdflag11; /* First byte of flags (bit vect)*/
- + static unsigned char rdflag12; /* Second byte of flags (int) */
- + static int scpflag = 0; /* Set if any sequencd cont pkts */
- + static int ackpend = 0; /* Acknowledgement pending */
- + static int gaps = 0; /* Gaps present in recvd pkts */
- + static struct timeval timeout; /* Time to wait for response */
- + static struct timeval ackwait; /* Time to wait before acking */
- + static struct timeval gapwait; /* Time to wait b4 filling gaps */
- + static struct timeval *selwait; /* Time to wait for select */
- + static int retries; /* was = client_dirsrv_retry */
- + char to_hostname[512]; /* lmjm: saves inet_ntoa() str */
- +
- + /* These are added so dirsend() "blocks" properly */
- + static PTEXT dirsendReturn;
- + static int dirsendDone;
- +
- + /* And here are the values for dirsendDone */
- + #define DSRET_DONE 1
- + #define DSRET_SEND_ERROR -1
- + #define DSRET_RECV_ERROR -2
- + #define DSRET_SELECT_ERROR -3
- + #define DSRET_TIMEOUT -4
- + #define DSRET_ABORTED -5
- +
- + /* New procedures to break up dirsend() */
- + static int initDirsend();
- + static void retryDirsend(), keepWaitingDirsend();
- + static void timeoutProc();
- + static void readProc();
- +
- + /* Wrappers around X calls to allow non-X usage */
- + static void addInputSource(), removeInputSource();
- + static void addTimeOut(), removeTimeOut();
- + static void processEvent();
- +
- + /* Extra stuff for the asynchronous X version of dirsend() */
- + #ifdef XARCHIE
- + #include <X11/Intrinsic.h>
- + extern XtAppContext appContext;
- + #else
- + typedef char *XtPointer;
- + typedef char *XtInputId;
- + typedef char *XtIntervalId;
- + #endif
- + static XtInputId inputId;
- + static XtIntervalId timerId = (XtIntervalId)0;
- +
- /*
- * dirsend - send packet and receive response
- *
- ***************
- *** 75,129 ****
- * The packet is freed even if dirsend fails.
- */
- PTEXT
- ! dirsend(pkt,hostname,hostaddr)
- ! PTEXT pkt;
- ! char *hostname;
- ! struct sockaddr_in *hostaddr;
- {
- ! PTEXT first = NULL; /* First returned packet */
- ! PTEXT next; /* The one we are waiting for */
- ! PTEXT vtmp; /* For reorganizing linked list */
- ! PTEXT comp_thru; /* We have all packets though */
- ! int lp = -1; /* Opened UDP port */
- ! int hdr_len; /* Header Length */
- ! int nd_pkts; /* Number of packets we want */
- ! int no_pkts; /* Number of packets we have */
- ! int pkt_cid; /* Packet connection identifier */
- ! unsigned short this_conn_id; /* Connection ID we are using */
- ! unsigned short recvd_thru; /* Received through */
- ! short priority; /* Priority for request */
- ! static short one = 0; /* Pointer to value 1 */
- ! static short zero = 0; /* Pointer to value 0 */
- ! char *seqtxt; /* Pointer to text w/ sequence # */
- ! struct sockaddr_in us; /* Our address */
- ! struct sockaddr_in to; /* Address to send query */
- ! struct sockaddr_in from; /* Reply received from */
- ! int from_sz; /* Size of from structure */
- ! struct hostent *host; /* Host info from gethostbyname */
- ! long newhostaddr; /* New host address from *host */
- ! int req_udp_port=0; /* Requested port (optional) */
- ! char *openparen; /* Delimits port in name */
- ! char hostnoport[500];/* Host name without port */
- ! int ns; /* Number of bytes actually sent */
- ! int nr; /* Number of bytes received */
- ! fd_set readfds; /* Used for select */
- ! int tmp;
- ! char *ctlptr; /* Pointer to control field */
- ! short stmp; /* Temp short for conversions */
- ! int backoff; /* Server requested backoff */
- ! unsigned char rdflag11; /* First byte of flags (bit vect)*/
- ! unsigned char rdflag12; /* Second byte of flags (int) */
- ! int scpflag = 0; /* Set if any sequencd cont pkts */
-
- ! int ackpend = 0; /* Acknowledgement pending */
- ! int gaps = 0; /* Gaps present in recvd pkts */
- ! struct timeval timeout; /* Time to wait for response */
- ! struct timeval ackwait; /* Time to wait before acking */
- ! struct timeval gapwait; /* Time to wait b4 filling gaps */
- ! struct timeval *selwait; /* Time to wait for select */
- ! int retries = client_dirsrv_retry;
-
- #ifdef XARCHIE
- status0("Initializing");
- #endif
-
- --- 206,271 ----
- * The packet is freed even if dirsend fails.
- */
- PTEXT
- ! dirsend(pkt_p,hostname_p,hostaddr_p)
- ! PTEXT pkt_p;
- ! char *hostname_p;
- ! struct sockaddr_in *hostaddr_p;
- {
- ! /* copy parameters to globals since other routines use them */
- ! pkt = pkt_p;
- ! hostname = hostname_p;
- ! hostaddr = hostaddr_p;
- ! /* Do the initializations of formerly auto variables */
- ! first = NULL;
- ! lp = -1;
- ! one = 0;
- ! zero = 0;
- ! req_udp_port=0;
- ! scpflag = 0;
- ! ackpend = 0;
- ! gaps = 0;
- ! retries = client_dirsrv_retry;
-
- ! if (initDirsend() < 0)
- ! return(NULL);
- ! addInputSource();
- ! /* set the first timeout */
- ! retryDirsend();
-
- + dirsendReturn = NULL;
- + dirsendDone = 0;
- + /* Until one of the callbacks says to return, keep processing events */
- + while (!dirsendDone)
- + processEvent();
- + /* Clean up event generators */
- + removeTimeOut();
- + removeInputSource();
- #ifdef XARCHIE
- + /* Set status if needed (has to be outside of loop or X will crash) */
- + switch (dirsendDone) {
- + case DSRET_SEND_ERROR: status0("Send error"); break;
- + case DSRET_RECV_ERROR: status0("Recv error"); break;
- + case DSRET_TIMEOUT:
- + status1("Connection to %s timed out",to_hostname);
- + break;
- + case DSRET_ABORTED: status0("Aborted"); break;
- + }
- + #endif
- + /* Return whatever we're supposed to */
- + return(dirsendReturn);
- + }
- +
- +
- + /* - - - - - - - - */
- + /* This function does all the initialization that used to be done at the
- + * start of dirsend(), including opening the socket descriptor "lp". It
- + * returns the descriptor if successful, otherwise -1 to indicate that
- + * dirsend() should return NULL immediately.
- + */
- + static int
- + initDirsend()
- + {
- + #ifdef XARCHIE
- status0("Initializing");
- #endif
-
- ***************
- *** 196,202 ****
- #endif
- perrno = DIRSEND_BAD_HOSTNAME;
- ptlfree(pkt);
- ! return(NULL);
- }
- /* If a port is included, save it away */
- if(openparen = index(hostname,'(')) {
- --- 338,345 ----
- #endif
- perrno = DIRSEND_BAD_HOSTNAME;
- ptlfree(pkt);
- ! /* return(NULL); */
- ! return(-1);
- }
- /* If a port is included, save it away */
- if(openparen = index(hostname,'(')) {
- ***************
- *** 219,225 ****
- #endif
- perrno = DIRSEND_BAD_HOSTNAME;
- ptlfree(pkt);
- ! return(NULL);
- }
- bzero((char *)&to, S_AD_SZ);
- to.sin_family = AF_INET;
- --- 362,369 ----
- #endif
- perrno = DIRSEND_BAD_HOSTNAME;
- ptlfree(pkt);
- ! /* return(NULL); */
- ! return(-1);
- }
- bzero((char *)&to, S_AD_SZ);
- to.sin_family = AF_INET;
- ***************
- *** 235,240 ****
- --- 379,388 ----
- }
- }
- else bcopy(hostaddr,&to, S_AD_SZ);
- + /* lmjm: Save away the hostname */
- + strncpy(to_hostname,
- + inet_ntoa(SUN_GNU_FIX *(struct in_addr *)&to.sin_addr),
- + sizeof(to_hostname)-1);
-
- if(req_udp_port) to.sin_port = htons(req_udp_port);
- else to.sin_port = dir_udp_port;
- ***************
- *** 254,260 ****
- #endif
- perrno = DIRSEND_UDP_CANT;
- ptlfree(pkt);
- ! return(NULL);
- }
-
- /* Try to bind it to a privileged port - loop through candidate */
- --- 402,409 ----
- #endif
- perrno = DIRSEND_UDP_CANT;
- ptlfree(pkt);
- ! /* return(NULL); */
- ! return(-1);
- }
-
- /* Try to bind it to a privileged port - loop through candidate */
- ***************
- *** 305,317 ****
- if (to.sin_family == AF_INET) {
- if(req_udp_port)
- fprintf(stderr,"Sending message to %s+%d(%d)...",
- ! inet_ntoa(*(struct in_addr *)&to.sin_addr), req_udp_port, ntohs(this_conn_id));
- else fprintf(stderr,"Sending message to %s(%d)...",
- ! inet_ntoa(*(struct in_addr *)&to.sin_addr), ntohs(this_conn_id));
- }
- #else
- if (to.sin_family == AF_INET)
- ! fprintf(stderr,"Sending message to %s...", inet_ntoa(*(struct in_addr *)&to.sin_addr));
- #endif
- else
- fprintf(stderr,"Sending message...");
- --- 454,466 ----
- if (to.sin_family == AF_INET) {
- if(req_udp_port)
- fprintf(stderr,"Sending message to %s+%d(%d)...",
- ! to_hostname, req_udp_port, ntohs(this_conn_id));
- else fprintf(stderr,"Sending message to %s(%d)...",
- ! to_hostname, ntohs(this_conn_id));
- }
- #else
- if (to.sin_family == AF_INET)
- ! fprintf(stderr,"Sending message to %s...", to_hostname);
- #endif
- else
- fprintf(stderr,"Sending message...");
- ***************
- *** 323,333 ****
- next = first;
-
- #ifdef XARCHIE
- ! status1("Connecting to %s",inet_ntoa(*(struct in_addr *)&to.sin_addr));
- #endif
-
- ! retry:
- !
- gaps = ackpend = 0;
-
- ns = sendto(lp,(char *)(pkt->start), pkt->length, 0, (struct sockaddr *)&to, S_AD_SZ);
- --- 472,492 ----
- next = first;
-
- #ifdef XARCHIE
- ! status1("Connecting to %s",to_hostname);
- #endif
- + return(lp);
- + }
-
- ! /* - - - - - - - - */
- ! /*
- ! * This used to be a label to goto to retry the last packet. Now we resend
- ! * the packet and call keepWaitingDirsend() to wait for a reply. (We
- ! * call keepWaitingDirsend() because formerly the code dropped through
- ! * the keep_waiting label.)
- ! */
- ! static void
- ! retryDirsend()
- ! {
- gaps = ackpend = 0;
-
- ns = sendto(lp,(char *)(pkt->start), pkt->length, 0, (struct sockaddr *)&to, S_AD_SZ);
- ***************
- *** 334,340 ****
- if(ns != pkt->length) {
- #ifdef DEBUG
- if (pfs_debug) {
- ! fprintf(stderr,"\nsent only %d/%d: ",ns, pkt->length);
- perror("");
- }
- #endif
- --- 493,499 ----
- if(ns != pkt->length) {
- #ifdef DEBUG
- if (pfs_debug) {
- ! fprintf(stderr,"\nsent only %d/%d: ",ns, pkt->length);
- perror("");
- }
- #endif
- ***************
- *** 342,360 ****
- perrno = DIRSEND_NOT_ALL_SENT;
- ptlfree(first);
- ptlfree(pkt);
- ! #ifdef XARCHIE
- ! status0("Send Error");
- ! #endif
- ! return(NULL);
- }
- #ifdef DEBUG
- if (pfs_debug > 2) fprintf(stderr,"Sent.\n");
- #endif
- /* We come back to this point (by a goto) if the packet */
- /* received is only part of the response, or if the */
- /* response came from the wrong host */
-
- - keep_waiting:
- #ifdef DEBUG
- if (pfs_debug > 2) fprintf(stderr,"Waiting for reply...");
- #endif
- --- 501,530 ----
- perrno = DIRSEND_NOT_ALL_SENT;
- ptlfree(first);
- ptlfree(pkt);
- ! /* return(NULL); */
- ! dirsendReturn = NULL;
- ! dirsendDone = DSRET_SEND_ERROR;
- }
- #ifdef DEBUG
- if (pfs_debug > 2) fprintf(stderr,"Sent.\n");
- #endif
- + keepWaitingDirsend();
- + }
- +
- + /* - - - - - - - - */
- + /*
- + * This used to be a label to goto to set the appropriate timeout value
- + * and blocked in select(). Now we set selwait and the fd_sets to the
- + * appropriate values, and in X register a new timeout, then return to
- + * allow event processing.
- + */
- + static void
- + keepWaitingDirsend()
- + {
- /* We come back to this point (by a goto) if the packet */
- /* received is only part of the response, or if the */
- /* response came from the wrong host */
-
- #ifdef DEBUG
- if (pfs_debug > 2) fprintf(stderr,"Waiting for reply...");
- #endif
- ***************
- *** 365,375 ****
- else if(gaps) selwait = &gapwait;
- else selwait = &timeout;
-
- ! /* select - either recv is ready, or timeout */
- ! /* see if timeout or error or wrong descriptor */
- ! tmp = select(lp + 1, &readfds, (fd_set *)0, (fd_set *)0, selwait);
-
- ! if((tmp == 0) && (gaps || ackpend)) { /* Send acknowledgment */
- /* Acks are piggybacked on retries - If we have received */
- /* an ack from the server, then the packet sent is only */
- /* an ack and the rest of the message will be empty */
- --- 535,555 ----
- else if(gaps) selwait = &gapwait;
- else selwait = &timeout;
-
- ! addTimeOut();
- ! }
-
- ! /* - - - - - - - - */
- ! /*
- ! * This routine is called when a timeout occurs. It includes the code that
- ! * was formerly used when select() returned 0 (indicating a timeout).
- ! */
- ! /*ARGSUSED*/
- ! static void
- ! timeoutProc(client_data,id)
- ! XtPointer client_data;
- ! XtIntervalId *id;
- ! {
- ! if (gaps || ackpend) { /* Send acknowledgment */
- /* Acks are piggybacked on retries - If we have received */
- /* an ack from the server, then the packet sent is only */
- /* an ack and the rest of the message will be empty */
- ***************
- *** 379,388 ****
- (ackpend ? "requested" : "gaps"));
- }
- #endif
- ! goto retry;
- }
-
- ! if((tmp == 0) && (retries-- > 0)) {
- timeout.tv_sec = CLIENT_DIRSRV_BACKOFF(timeout.tv_sec);
- #ifdef DEBUG
- if (pfs_debug > 2) {
- --- 559,569 ----
- (ackpend ? "requested" : "gaps"));
- }
- #endif
- ! retryDirsend();
- ! return;
- }
-
- ! if (retries-- > 0) {
- timeout.tv_sec = CLIENT_DIRSRV_BACKOFF(timeout.tv_sec);
- #ifdef DEBUG
- if (pfs_debug > 2) {
- ***************
- *** 393,420 ****
- #ifdef XARCHIE
- status1("Timed out -- retrying (%d seconds)",timeout.tv_sec);
- #endif
- ! goto retry;
- }
-
- - if((tmp < 1) || !FD_ISSET(lp, &readfds)) {
- #ifdef DEBUG
- ! if (pfs_debug) {
- ! fprintf(stderr, "select failed: readfds=%x ",
- ! readfds);
- ! perror("");
- ! }
- ! #endif
- ! close(lp);
- ! perrno = DIRSEND_SELECT_FAILED;
- ! ptlfree(first);
- ! ptlfree(pkt);
- ! #ifdef XARCHIE
- ! status1("Couldn't connect to %s",
- ! inet_ntoa(*(struct in_addr *)&to.sin_addr));
- ! #endif
- ! return(NULL);
- }
-
-
- from_sz = sizeof(from);
- next->start = next->dat;
- --- 574,614 ----
- #ifdef XARCHIE
- status1("Timed out -- retrying (%d seconds)",timeout.tv_sec);
- #endif
- ! retryDirsend();
- ! return;
- }
-
- #ifdef DEBUG
- ! if (pfs_debug) {
- ! fprintf(stderr, "select failed(timeoutProc): readfds=%x ",
- ! readfds);
- ! perror("");
- }
- + #endif
- + close(lp);
- + perrno = DIRSEND_SELECT_FAILED;
- + ptlfree(first);
- + ptlfree(pkt);
- + /* return(NULL); */
- + dirsendReturn = NULL;
- + dirsendDone = DSRET_TIMEOUT;
- + }
-
- + /* - - - - - - - - */
- + /*
- + * This function is called whenever there's something to read on the
- + * connection. It includes the code that was run when select() returned
- + * greater than 0 (indicating read ready).
- + */
- + /*ARGSUSED*/
- + static void
- + readProc(client_data,source,id)
- + XtPointer client_data;
- + int *source;
- + XtInputId *id;
- + {
- + /* We got something to read, so clear the timer */
- + removeTimeOut();
-
- from_sz = sizeof(from);
- next->start = next->dat;
- ***************
- *** 426,435 ****
- perrno = DIRSEND_BAD_RECV;
- ptlfree(first);
- ptlfree(pkt);
- ! #ifdef XARCHIE
- ! status0("Recv Error");
- ! #endif
- ! return(NULL);
- }
-
- next->length = nr;
- --- 620,629 ----
- perrno = DIRSEND_BAD_RECV;
- ptlfree(first);
- ptlfree(pkt);
- ! /* return(NULL) */
- ! dirsendReturn = NULL;
- ! dirsendDone = DSRET_RECV_ERROR;
- ! return;
- }
-
- next->length = nr;
- ***************
- *** 437,462 ****
- *(next->start + next->length) = NULL;
-
- #ifdef DEBUG
- ! if (pfs_debug > 2)
- ! fprintf(stderr,"Received packet from %s\n", inet_ntoa(*(struct in_addr *)&from.sin_addr));
- #endif
- - if (to.sin_addr.s_addr != from.sin_addr.s_addr) {
- - #ifdef DEBUG
- - if (pfs_debug) {
- - fprintf(stderr, "dirsend: received packet from wrong host! (%x)\n",
- - from.sin_addr.s_addr);
- - (void) fflush(stdout);
- - }
- - #endif
- - goto keep_waiting;
- - }
-
- #ifdef XARCHIE
- {
- static int num = 2;
- if (num == 2)
- ! status1("Connected to %s",
- ! inet_ntoa(*(struct in_addr *)&to.sin_addr));
- else
- status1("Receiving...%c",(num?'+':'*'));
- num = !num;
- --- 631,646 ----
- *(next->start + next->length) = NULL;
-
- #ifdef DEBUG
- ! if (pfs_debug > 2)
- ! fprintf(stderr,"Received packet from %s\n",
- ! inet_ntoa(SUN_GNU_FIX *(struct in_addr *)&from.sin_addr);
- #endif
-
- #ifdef XARCHIE
- {
- static int num = 2;
- if (num == 2)
- ! status1("Connected to %s",to_hostname);
- else
- status1("Receiving...%c",(num?'+':'*'));
- num = !num;
- ***************
- *** 474,479 ****
- --- 658,669 ----
- if(stmp) pkt_cid = ntohs(stmp);
- ctlptr += 2;
- }
- + if(pkt_cid && this_conn_id && (pkt_cid != this_conn_id)) {
- + /* The packet is not for us */
- + /* goto keep_waiting; */
- + keepWaitingDirsend();
- + return;
- + }
- if(hdr_len >= 5) { /* Packet number */
- bcopy(ctlptr,&stmp,2);
- next->seq = ntohs(stmp);
- ***************
- *** 543,549 ****
- bcopy(ctlptr,&rdflag12,1);
- ctlptr += 1;
- }
- ! if(next->seq == 0) goto keep_waiting;
- if(next->length >= 0) next->length -= hdr_len;
- next->start += hdr_len;
- goto done_old;
- --- 733,743 ----
- bcopy(ctlptr,&rdflag12,1);
- ctlptr += 1;
- }
- ! if(next->seq == 0) {
- ! /* goto keep_waiting; */
- ! keepWaitingDirsend();
- ! return;
- ! }
- if(next->length >= 0) next->length -= hdr_len;
- next->start += hdr_len;
- goto done_old;
- ***************
- *** 564,569 ****
- --- 758,769 ----
- bcopy(ctlptr,&stmp,2);
- if(stmp) pkt_cid = ntohs(stmp);
- ctlptr += 2;
- + if(pkt_cid && this_conn_id && (pkt_cid != this_conn_id)) {
- + /* The packet is not for us */
- + /* goto keep_waiting; */
- + keepWaitingDirsend();
- + return;
- + }
- /* Packet number */
- if(ctlptr < (next->start + next->length)) {
- bcopy(ctlptr,&stmp,2);
- ***************
- *** 592,598 ****
- if(backoff) timeout.tv_sec = backoff;
- ctlptr += 2;
- }
- ! if(next->seq == 0) goto keep_waiting;
- goto done_old;
-
- }
- --- 792,802 ----
- if(backoff) timeout.tv_sec = backoff;
- ctlptr += 2;
- }
- ! if(next->seq == 0) {
- ! /* goto keep_waiting; */
- ! keepWaitingDirsend();
- ! return;
- ! }
- goto done_old;
-
- }
- ***************
- *** 625,631 ****
- else gaps++;
- no_pkts = 1;
- next = ptalloc();
- ! goto keep_waiting;
- }
-
- if(comp_thru && (next->seq <= comp_thru->seq))
- --- 829,837 ----
- else gaps++;
- no_pkts = 1;
- next = ptalloc();
- ! /* goto keep_waiting; */
- ! keepWaitingDirsend();
- ! return;
- }
-
- if(comp_thru && (next->seq <= comp_thru->seq))
- ***************
- *** 687,693 ****
-
- if ((nd_pkts == 0) || (no_pkts < nd_pkts)) {
- next = ptalloc();
- ! goto keep_waiting;
- }
-
- all_done:
- --- 893,901 ----
-
- if ((nd_pkts == 0) || (no_pkts < nd_pkts)) {
- next = ptalloc();
- ! /* goto keep_waiting; */
- ! keepWaitingDirsend();
- ! return;
- }
-
- all_done:
- ***************
- *** 696,702 ****
- if (pfs_debug > 2) {
- if (to.sin_family == AF_INET)
- fprintf(stderr,"Acknowledging final packet to %s(%d)\n",
- ! inet_ntoa(*(struct in_addr *)&to.sin_addr), ntohs(this_conn_id));
- else
- fprintf(stderr,"Acknowledging final packet\n");
- (void) fflush(stderr);
- --- 904,910 ----
- if (pfs_debug > 2) {
- if (to.sin_family == AF_INET)
- fprintf(stderr,"Acknowledging final packet to %s(%d)\n",
- ! to_hostname, ntohs(this_conn_id));
- else
- fprintf(stderr,"Acknowledging final packet\n");
- (void) fflush(stderr);
- ***************
- *** 741,746 ****
- }
- }
-
- ! return(first);
-
- }
- --- 949,1052 ----
- }
- }
-
- ! /* return(first); */
- ! dirsendReturn = first;
- ! dirsendDone = DSRET_DONE;
-
- + }
- + /* - - - - - - - - */
- + /* These routines allow dirsend() to run with or without X by providing
- + * wrappers around the calls that handle the asynchronous communication.
- + * All parameters are passed using globals.
- + * Under X: The input sources and timeouts are set using Xt calls, and
- + * processEvent() just calls XtAppProcessEvent().
- + * Non-X: None of the input sources and timeouts are used, and
- + * processEvent() calls select() to handle both timeouts and the
- + * socket file descriptor. The return value of select() is used
- + * to determine which callback routine to call.
- + */
- +
- + static void
- + addInputSource()
- + {
- + #ifdef XARCHIE
- + inputId = XtAppAddInput(appContext,lp,XtInputReadMask,readProc,NULL);
- + #endif
- + }
- +
- + static void
- + removeInputSource()
- + {
- + #ifdef XARCHIE
- + XtRemoveInput(inputId);
- + #endif
- + }
- +
- + static void
- + addTimeOut()
- + {
- + #ifdef XARCHIE
- + unsigned long timeoutLen = selwait->tv_sec*1000 + selwait->tv_usec/1000;
- +
- + /* old timeout can still be there if we are being called after the
- + * file descriptor was read, so we remove it just to be sure. */
- + removeTimeOut();
- + timerId = XtAppAddTimeOut(appContext,timeoutLen,timeoutProc,NULL);
- + #endif
- + }
- +
- + static void
- + removeTimeOut()
- + {
- + #ifdef XARCHIE
- + if (timerId != (XtIntervalId)0) {
- + XtRemoveTimeOut(timerId);
- + timerId = (XtIntervalId)0;
- + }
- + #endif
- + }
- +
- + static void
- + processEvent()
- + {
- + #ifdef XARCHIE
- + XtAppProcessEvent(appContext,XtIMAll);
- + #else
- + /* select - either recv is ready, or timeout */
- + /* see if timeout or error or wrong descriptor */
- + tmp = select(lp + 1, &readfds, (fd_set *)0, (fd_set *)0, selwait);
- + if (tmp == 0) {
- + timeoutProc(NULL,&timerId);
- + } else if ((tmp < 0) || !FD_ISSET(lp,&readfds)) {
- + #ifdef DEBUG
- + if (pfs_debug) {
- + fprintf(stderr, "select failed(processEvent): readfds=%x ",
- + readfds);
- + perror("");
- + }
- + #endif
- + close(lp);
- + perrno = DIRSEND_SELECT_FAILED;
- + ptlfree(first);
- + ptlfree(pkt);
- + /* return(NULL); */
- + dirsendReturn = NULL;
- + dirsendDone = DSRET_SELECT_ERROR;
- + } else {
- + readProc(NULL,&lp,&inputId);
- + }
- + #endif /* XARCHIE */
- + }
- +
- + void
- + abortDirsend()
- + {
- + if (!dirsendDone) {
- + close(lp);
- + ptlfree(first);
- + ptlfree(pkt);
- + dirsendReturn = NULL;
- + dirsendDone = DSRET_ABORTED;
- + }
- + return;
- }
- *** /tmp/release17219/ftp.c Tue Nov 12 16:54:45 1991
- --- ftp.c Tue Nov 12 12:48:35 1991
- ***************
- *** 1,7 ****
- /*
- * ftp.c : Fetches a file by anonymous ftp.
- *
- ! * George Ferguson, ferguson@cs.rochester.edu, 12 Sep 1991.
- *
- * This is just an initial cut at providing the real kind of ftp
- * services that we want. In particular, we will eventually be using
- --- 1,7 ----
- /*
- * ftp.c : Fetches a file by anonymous ftp.
- *
- ! * George Ferguson, ferguson@cs.rochester.edu, 12 Nov 1991.
- *
- * This is just an initial cut at providing the real kind of ftp
- * services that we want. In particular, we will eventually be using
- ***************
- *** 59,64 ****
- fprintf(fp,"get %s\n",file);
- status = pclose(fp) >> 8;
- if (status)
- ! alert0("Ftp returned error code %d",status);
- status0("Ready");
- }
- --- 59,64 ----
- fprintf(fp,"get %s\n",file);
- status = pclose(fp) >> 8;
- if (status)
- ! alert1("Ftp returned error code %d",status);
- status0("Ready");
- }
- *** /tmp/release17219/get_pauth.c Tue Nov 12 16:54:49 1991
- --- get_pauth.c Sat Nov 2 16:48:39 1991
- ***************
- *** 3,15 ****
- *
- * For copying and distribution information, please see the file
- * <copyright.h>.
- */
-
- #include <copyright.h>
- #include <stdio.h>
- ! #include <strings.h>
- ! #include <pwd.h>
-
- #include <pcompat.h>
- #include <pauthent.h>
-
- --- 3,32 ----
- *
- * For copying and distribution information, please see the file
- * <copyright.h>.
- + *
- + * v1.2.1 - 09/17/91 (bpk) - added BULL & USG stuff, thanks to Jim Sillas
- + * v1.2.0 - 09/17/91 (bpk) - fixed it up (thanks to synful)
- + * v1.1.1 - 08/30/91 (bpk) - added VMS support
- */
-
- #include <copyright.h>
- #include <stdio.h>
- ! #ifndef VMS
- ! # include <sys/types.h>
- ! #endif
-
- + #if defined(USG) || defined(UTS) || defined(_AIX)
- + # include <string.h>
- + #else
- + # include <strings.h>
- + #endif
- +
- + #ifndef VMS
- + # include <pwd.h>
- + #else
- + # include <jpidef.h>
- + #endif
- +
- #include <pcompat.h>
- #include <pauthent.h>
-
- ***************
- *** 19,26 ****
- {
- static PAUTH_ST no_auth_st;
- static PAUTH no_auth = NULL;
- !
- struct passwd *whoiampw;
-
- if(no_auth == NULL) {
- no_auth = &no_auth_st;
- --- 36,54 ----
- {
- static PAUTH_ST no_auth_st;
- static PAUTH no_auth = NULL;
- ! #ifndef VMS
- struct passwd *whoiampw;
- + #else
- + char username[13];
- + unsigned short usernamelen;
- + struct {
- + unsigned short buflen;
- + unsigned short itmcod;
- + char *bufadr;
- + unsigned short *retlenadr;
- + unsigned long null;
- + } jpi_itemlist;
- + #endif
-
- if(no_auth == NULL) {
- no_auth = &no_auth_st;
- ***************
- *** 27,35 ****
- --- 55,77 ----
- strcpy(no_auth->auth_type,"UNAUTHENTICATED");
-
- /* find out who we are */
- + #ifndef VMS
- DISABLE_PFS(whoiampw = getpwuid(getuid()));
- if (whoiampw == 0) strcpy(no_auth->authenticator,"nobody");
- else strcpy(no_auth->authenticator, whoiampw->pw_name);
- + #else
- + jpi_itemlist.buflen = sizeof(username);
- + jpi_itemlist.itmcod = JPI$_USERNAME;
- + jpi_itemlist.bufadr = &username;
- + jpi_itemlist.retlenadr = &usernamelen;
- + jpi_itemlist.null = 0;
- + if (SYS$GETJPI(0, 0, 0, &jpi_itemlist, 0, 0, 0) & 0x1)
- + {
- + username[usernamelen] = 0;
- + strcpy(no_auth->authenticator, username);
- + } else
- + strcpy(no_auth->authenticator, "nobody");
- + #endif
- }
- return(no_auth);
- }
- *** /tmp/release17219/get_vdir.c Tue Nov 12 16:54:53 1991
- --- get_vdir.c Sun Nov 3 18:17:54 1991
- ***************
- *** 3,13 ****
- *
- * For copying and distribution information, please see the file
- * <copyright.h>.
- */
-
- #include <copyright.h>
- #include <stdio.h>
- ! #include <strings.h>
-
- #include <pfs.h>
- #include <pprot.h>
- --- 3,21 ----
- *
- * For copying and distribution information, please see the file
- * <copyright.h>.
- + *
- + * v1.2.1 - 10/23/91 (bpk) - added missing code
- + * v1.2.0 - 09/17/91 (bpk) - added new get_vdir code
- + * v1.1.1 - 08/30/91 (bpk) - cast rindex()
- */
-
- #include <copyright.h>
- #include <stdio.h>
- ! #if defined(USG) || defined(UTS) || defined(_AIX)
- ! # include <string.h>
- ! #else
- ! # include <strings.h>
- ! #endif
-
- #include <pfs.h>
- #include <pprot.h>
- ***************
- *** 20,25 ****
- --- 28,35 ----
- extern int pfs_debug;
- #endif
-
- + extern int pwarn;
- + extern char p_warn_string[];
- extern int perrno;
- extern char p_err_string[];
-
- ***************
- *** 67,72 ****
- --- 77,83 ----
- * Doesn't process errors returned from server
- * Doesn't expand union links if requested to
- */
- + int
- get_vdir(dhost,dfile,components,dir,flags,filters,acomp)
- char *dhost; /* Host on which directory resides */
- char *dfile; /* Name of file on that host */
- ***************
- *** 91,96 ****
- --- 102,109 ----
- int getattrib = 0; /* Get attributes from server */
- int vl_insert_flag; /* Flags to vl_insert */
-
- + int fwdcnt = MAX_FWD_DEPTH;
- +
- int no_links = 0; /* Count of number of links found */
-
- char options[40]; /* LIST option */
- ***************
- *** 200,207 ****
- char l_ntype[MAX_DIR_LINESIZE];
- char l_fname[MAX_DIR_LINESIZE];
- int l_version;
- - int l_magic;
- char t_unresolved[MAX_DIR_LINESIZE];
- int tmp;
-
- case 'L': /* LINK or LINK-INFO */
- --- 213,220 ----
- char l_ntype[MAX_DIR_LINESIZE];
- char l_fname[MAX_DIR_LINESIZE];
- int l_version;
- char t_unresolved[MAX_DIR_LINESIZE];
- + int l_magic;
- int tmp;
-
- case 'L': /* LINK or LINK-INFO */
- ***************
- *** 231,237 ****
- break;
- }
-
- ! /* Not LINK-INFO, must be LINK */
-
- /* If only verifying, don't want to change dir */
- if(flags == GVD_VERIFY) {
- --- 244,251 ----
- break;
- }
-
- ! /* Not LINK-INFO, must be LINK - if not check for error */
- ! if(strncmp(line,"LINK",4) != 0) goto scanerr;
-
- /* If only verifying, don't want to change dir */
- if(flags == GVD_VERIFY) {
- ***************
- *** 292,304 ****
- break;
-
- case 'F': /* FILTER, FAILURE or FORWARDED*/
- - /* FAILURE (treat as NOT-A-DIRECTORY, let caller know) */
- - if(strncmp(line,"FAILURE",7) == 0) {
- - perrno = scan_error(line);
- - return(perrno);
- - }
- /* FORWARDED */
- if(strncmp(line,"FORWARDED",9) == 0) {
- /* parse and start over */
-
- tmp = sscanf(line,"FORWARDED %s %s %s %s %d %d",
- --- 306,318 ----
- break;
-
- case 'F': /* FILTER, FAILURE or FORWARDED*/
- /* FORWARDED */
- if(strncmp(line,"FORWARDED",9) == 0) {
- + if(fwdcnt-- <= 0) {
- + ptlfree(resp);
- + perrno = PFS_MAX_FWD_DEPTH;
- + return(perrno);
- + }
- /* parse and start over */
-
- tmp = sscanf(line,"FORWARDED %s %s %s %s %d %d",
- ***************
- *** 316,321 ****
- --- 330,336 ----
- ptlfree(resp);
- goto startover;
- }
- + if(strncmp(line,"FILTER",6) != 0) goto scanerr;
- break;
-
-
- ***************
- *** 324,335 ****
- break;
-
- case 'N': /* NOT-A-DIRECTORY or NONE-FOUND */
- - /* NOT-A-DIRECTORY, let caller know */
- - if(strncmp(line,"NOT-A-DIRECTORY",15) == 0) {
- - perrno = DIRSRV_NOT_DIRECTORY;
- - return(perrno);
- - }
- -
- /* NONE-FOUND, we just have no links to insert */
- /* It is not an error, but we must clear any */
- /* old links in the directory arg */
- --- 339,344 ----
- ***************
- *** 348,370 ****
- }
- break;
- }
-
- - perrno = DIRSRV_BAD_FORMAT;
- - break;
- -
- - case 'E': /* ERROR */
- - if(strncmp(line,"ERROR",5) == 0) {
- - perrno = DIRSRV_ERROR;
- - strncpy(p_err_string,line+6,P_ERR_STRING_SZ);
- - return(perrno);
- - }
- - perrno = DIRSRV_BAD_FORMAT;
- - break;
- -
- case 'U': /* UNRESOLVED */
- if(strncmp(line,"UNRESOLVED",10) != 0) {
- ! perrno = DIRSRV_BAD_FORMAT;
- ! break;
- }
- tmp = sscanf(line,"UNRESOLVED %s", t_unresolved);
- if(tmp < 1) {
- --- 357,368 ----
- }
- break;
- }
- + /* If NOT-A-DIRECTORY or anything else, scan error */
- + goto scanerr;
-
- case 'U': /* UNRESOLVED */
- if(strncmp(line,"UNRESOLVED",10) != 0) {
- ! goto scanerr;
- }
- tmp = sscanf(line,"UNRESOLVED %s", t_unresolved);
- if(tmp < 1) {
- ***************
- *** 377,383 ****
- /* ulcomp is the components that were resolved */
- *(ulcomp+strlen(acomp)-strlen(t_unresolved)-1) = '\0';
- /* Comp gets the last component resolved */
- ! comp = rindex(ulcomp,'/');
- if(comp) comp++;
- else comp = ulcomp;
- /* Let rd_vdir know what remains */
- --- 375,381 ----
- /* ulcomp is the components that were resolved */
- *(ulcomp+strlen(acomp)-strlen(t_unresolved)-1) = '\0';
- /* Comp gets the last component resolved */
- ! comp = (char *) rindex(ulcomp,'/');
- if(comp) comp++;
- else comp = ulcomp;
- /* Let rd_vdir know what remains */
- ***************
- *** 391,400 ****
- perrno = DIRSRV_BAD_VERS;
- return(perrno);
- }
- ! perrno = DIRSRV_BAD_FORMAT;
- ! break;
- default:
- ! if(*line) perrno = DIRSRV_BAD_FORMAT;
- break;
- }
- }
- --- 389,402 ----
- perrno = DIRSRV_BAD_VERS;
- return(perrno);
- }
- ! goto scanerr;
- !
- ! scanerr:
- default:
- ! if(*line && (tmp = scan_error(line))) {
- ! ptlfree(resp);
- ! return(tmp);
- ! }
- break;
- }
- }
- ***************
- *** 410,416 ****
- /* ulcomp is the components that were resolved */
- strcpy(ulcomp,acomp);
- /* Comp gets the last component resolved */
- ! comp = rindex(ulcomp,'/');
- if(comp) comp++;
- else comp = ulcomp;
- /* If we have union links to resolve, only one component remains */
- --- 412,418 ----
- /* ulcomp is the components that were resolved */
- strcpy(ulcomp,acomp);
- /* Comp gets the last component resolved */
- ! comp = (char *) rindex(ulcomp,'/');
- if(comp) comp++;
- else comp = ulcomp;
- /* If we have union links to resolve, only one component remains */
- *** /tmp/release17219/patchlevel.h Tue Nov 12 16:54:57 1991
- --- patchlevel.h Tue Nov 12 16:52:18 1991
- ***************
- *** 1,10 ****
- /*
- * patchlevel.h : xarchie version control
- *
- ! * George Ferguson, ferguson@cs.rochester.edu, 12 Sep 1991.
- *
- */
-
- int xarchieMajorVersion = 1;
- ! int xarchieMinorVersion = 2;
- !
- --- 1,10 ----
- /*
- * patchlevel.h : xarchie version control
- *
- ! * George Ferguson, ferguson@cs.rochester.edu, 12 Nov 1991.
- *
- */
-
- int xarchieMajorVersion = 1;
- ! int xarchieMinorVersion = 3;
- ! char *xarchieExtraVersion = "";
- *** /tmp/release17219/pauthent.h Tue Nov 12 16:55:00 1991
- --- pauthent.h Sat Nov 2 12:50:54 1991
- ***************
- *** 19,24 ****
- --- 19,28 ----
-
- PAUTH get_pauth();
-
- + #ifndef VMS
- + #include <netinet/in.h>
- + #endif
- +
- struct client_info {
- int ainfo_type;
- char *auth_type;
- ***************
- *** 25,31 ****
- char *authenticator;
- char *userid;
- short port;
- ! long haddr;
- struct pfs_auth_info *previous;
- struct pfs_auth_info *next;
- };
- --- 29,35 ----
- char *authenticator;
- char *userid;
- short port;
- ! struct in_addr haddr;
- struct pfs_auth_info *previous;
- struct pfs_auth_info *next;
- };
- *** /dev/null Tue Nov 12 16:30:11 1991
- --- perrmesg.c Sat Nov 2 20:55:53 1991
- ***************
- *** 0 ****
- --- 1,195 ----
- + /*
- + * Copyright (c) 1989, 1990, 1991 by the University of Washington
- + *
- + * For copying and distribution information, please see the file
- + * <copyright.h>.
- + */
- +
- + #include <copyright.h>
- + #include <perrno.h>
- + #include <stdio.h>
- +
- + /* This file and perrno.h should always be updated simultaneously */
- +
- + int perrno = 0;
- + int pwarn = 0;
- + char p_err_string[P_ERR_STRING_SZ];
- + char p_warn_string[P_ERR_STRING_SZ];
- +
- + char *p_err_text[256] = {
- + /* 0 */ "Success (prospero)",
- + /* 1 */ "Port unknown (dirsend)",
- + /* 2 */ "Can't open local UDP port (dirsend)",
- + /* 3 */ "Can't resolve hostname (dirsend)",
- + /* 4 */ "Unable to send entire message (dirsend)",
- + /* 5 */ "Timed out (dirsend)",
- + /* 6 */ "Recvfrom failed (dirsend)",
- + /* 7 */ "", /* 8 */ "", /* 9 */ "", /* 10 */ "",
- + /* 11 */ "Sendto failed (reply)",
- + /* 12 */ "", /* 13 */ "", /* 14 */ "", /* 15 */ "",
- + /* 16 */ "", /* 17 */ "", /* 18 */ "", /* 19 */ "",
- + /* 20 */ "",
- + /* 21 */ "Link already exists (vl_insert)",
- + /* 22 */ "Link with same name already exists (vl_insert)",
- + /* 23 */ "", /* 24 */ "",
- + /* 25 */ "Link already exists (ul_insert)",
- + /* 26 */ "Replacing existing link (ul_insert)",
- + /* 27 */ "Previous entry not found in dir->ulinks (ul_insert)",
- + /* 28 */ "", /* 29 */ "", /* 30 */ "", /* 31 */ "",
- + /* 32 */ "", /* 33 */ "", /* 34 */ "", /* 35 */ "",
- + /* 36 */ "", /* 37 */ "", /* 38 */ "", /* 39 */ "",
- + /* 40 */ "",
- + /* 41 */ "Temporary not found (rd_vdir)",
- + /* 42 */ "Namespace not closed with object (rd_vdir)",
- + /* 43 */ "Alias for namespace not defined (rd_vdir)",
- + /* 44 */ "Specified namespace not found (rd_vdir)",
- + /* 45 */ "", /* 46 */ "", /* 47 */ "", /* 48 */ "",
- + /* 49 */ "", /* 50 */ "",
- + /* 51 */ "File access method not supported (pfs_access)",
- + /* 52 */ "", /* 53 */ "", /* 54 */ "",
- + /* 55 */ "Pointer to cached copy - delete on close (pmap_cache)",
- + /* 56 */ "Unable to retrieve file (pmap_cache)",
- + /* 57 */ "", /* 58 */ "", /* 59 */ "", /* 60 */ "",
- + /* 61 */ "Directory already exists (mk_vdir)",
- + /* 62 */ "Link with same name already exists (mk_vdir)",
- + /* 63 */ "", /* 64 */ "",
- + /* 65 */ "Not a virtual system (vfsetenv)",
- + /* 66 */ "Can't find directory (vfsetenv)",
- + /* 67 */ "", /* 68 */ "", /* 69 */ "", /* 70 */ "",
- + /* 71 */ "Link already exists (add_vlink)",
- + /* 72 */ "Link with same name already exists (add_vlink)",
- + /* 73 */ "", /* 74 */ "", /* 75 */ "", /* 76 */ "",
- + /* 77 */ "", /* 78 */ "", /* 79 */ "", /* 80 */ "",
- + /* 81 */ "", /* 82 */ "", /* 83 */ "", /* 84 */ "",
- + /* 85 */ "", /* 86 */ "", /* 87 */ "", /* 88 */ "",
- + /* 89 */ "", /* 90 */ "", /* 91 */ "", /* 92 */ "",
- + /* 93 */ "", /* 94 */ "", /* 95 */ "", /* 96 */ "",
- + /* 97 */ "", /* 98 */ "", /* 99 */ "", /* 100 */ "",
- + /* 101 */ "", /* 102 */ "", /* 103 */ "", /* 104 */ "",
- + /* 105 */ "", /* 106 */ "", /* 107 */ "", /* 108 */ "",
- + /* 109 */ "", /* 110 */ "", /* 111 */ "", /* 112 */ "",
- + /* 113 */ "", /* 114 */ "", /* 115 */ "", /* 116 */ "",
- + /* 117 */ "", /* 118 */ "", /* 119 */ "", /* 120 */ "",
- + /* 121 */ "", /* 122 */ "", /* 123 */ "", /* 124 */ "",
- + /* 125 */ "", /* 126 */ "", /* 127 */ "", /* 128 */ "",
- + /* 129 */ "", /* 130 */ "", /* 131 */ "", /* 132 */ "",
- + /* 133 */ "", /* 134 */ "", /* 135 */ "", /* 136 */ "",
- + /* 137 */ "", /* 138 */ "", /* 139 */ "", /* 140 */ "",
- + /* 141 */ "", /* 142 */ "", /* 143 */ "", /* 144 */ "",
- + /* 145 */ "", /* 146 */ "", /* 147 */ "", /* 148 */ "",
- + /* 149 */ "", /* 150 */ "", /* 151 */ "", /* 152 */ "",
- + /* 153 */ "", /* 154 */ "", /* 155 */ "", /* 156 */ "",
- + /* 157 */ "", /* 158 */ "", /* 159 */ "", /* 160 */ "",
- + /* 161 */ "", /* 162 */ "", /* 163 */ "", /* 164 */ "",
- + /* 165 */ "", /* 166 */ "", /* 167 */ "", /* 168 */ "",
- + /* 169 */ "", /* 170 */ "", /* 171 */ "", /* 172 */ "",
- + /* 173 */ "", /* 174 */ "", /* 175 */ "", /* 176 */ "",
- + /* 177 */ "", /* 178 */ "", /* 179 */ "", /* 180 */ "",
- + /* 181 */ "", /* 182 */ "", /* 183 */ "", /* 184 */ "",
- + /* 185 */ "", /* 186 */ "", /* 187 */ "", /* 188 */ "",
- + /* 189 */ "", /* 190 */ "", /* 191 */ "", /* 192 */ "",
- + /* 193 */ "", /* 194 */ "", /* 195 */ "", /* 196 */ "",
- + /* 197 */ "", /* 198 */ "", /* 199 */ "", /* 200 */ "",
- + /* 201 */ "", /* 202 */ "", /* 203 */ "", /* 204 */ "",
- + /* 205 */ "", /* 206 */ "", /* 207 */ "", /* 208 */ "",
- + /* 209 */ "", /* 210 */ "", /* 211 */ "", /* 212 */ "",
- + /* 213 */ "", /* 214 */ "", /* 215 */ "", /* 216 */ "",
- + /* 217 */ "", /* 218 */ "", /* 219 */ "", /* 220 */ "",
- + /* 221 */ "", /* 222 */ "", /* 223 */ "", /* 224 */ "",
- + /* 225 */ "", /* 226 */ "", /* 227 */ "", /* 228 */ "",
- + /* 229 */ "",
- + /* 230 */ "File not found (prospero)",
- + /* 231 */ "Directory not found (prospero)",
- + /* 232 */ "Symbolic links nested too deep (prospero)",
- + /* 233 */ "Environment not initialized - source vfsetup.source then run vfsetup",
- + /* 234 */ "Can't traverse an external file (prospero)",
- + /* 235 */ "Forwarding chain is too long (prospero)",
- + /* 236 */ "", /* 237 */ "", /* 238 */ "", /* 239 */ "",
- + /* 240 */ "", /* 241 */ "",
- + /* 242 */ "Authentication required (prospero server)",
- + /* 243 */ "Not authorized (prospero server)",
- + /* 244 */ "Not found (prospero server)",
- + /* 245 */ "Bad version number (prospero server)",
- + /* 246 */ "Not a directory (prospero server)",
- + /* 247 */ "Already exists (prospero server)",
- + /* 248 */ "Link with same name already exists (prospero server)",
- + /* 249 */ "", /* 250 */ "",
- + /* 251 */ "Command not implemented on server (dirsrv)",
- + /* 252 */ "Bad format for response (dirsrv)",
- + /* 253 */ "Protocol error (prospero server)",
- + /* 254 */ "Unspecified server failure (prospero server)",
- + /* 255 */ "Generic Failure (prospero)"};
- +
- + char *p_warn_text[256] = {
- + /* 0 */ "No warning",
- + /* 1 */ "You are using an old version of this program",
- + /* 2 */ "From server",
- + /* 3 */ "Unrecognized line in response from server",
- + /* 4-254 */ "", "", "", "", "", "", "", "", "", "", "", "", "",
- + "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
- + "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
- + "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
- + "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
- + "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
- + "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
- + "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
- + "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
- + "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
- + "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
- + "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
- + "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
- + "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
- + "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
- + /* 255 */ ""};
- +
- + #ifndef ARCHIE
- + perrmesg(prefix,no,text)
- + char *prefix;
- + int no;
- + char *text;
- + {
- + fprintf(stderr,"%s%s%s%s\n", (prefix ? prefix : ""),
- + (no ? p_err_text[no] : p_err_text[perrno]),
- + ((text ? (*text ? " - " : "") :
- + (!no && *p_err_string ? " - " : ""))),
- + (text ? text : (no ? "" : p_err_string)));
- + }
- +
- + sperrmesg(buf,prefix,no,text)
- + char *buf;
- + char *prefix;
- + int no;
- + char *text;
- + {
- + sprintf(buf,"%s%s%s%s\n", (prefix ? prefix : ""),
- + (no ? p_err_text[no] : p_err_text[perrno]),
- + ((text ? (*text ? " - " : "") :
- + (!no && *p_err_string ? " - " : ""))),
- + (text ? text : (no ? "" : p_err_string)));
- + }
- +
- + pwarnmesg(prefix,no,text)
- + char *prefix;
- + int no;
- + char *text;
- + {
- + fprintf(stderr,"%s%s%s%s\n", (prefix ? prefix : ""),
- + (no ? p_warn_text[no] : p_warn_text[pwarn]),
- + ((text ? (*text ? " - " : "") :
- + (!no && *p_warn_string ? " - " : ""))),
- + (text ? text : (no ? "" : p_warn_string)));
- + }
- +
- + spwarnmesg(buf,prefix,no,text)
- + char *buf;
- + char *prefix;
- + int no;
- + char *text;
- + {
- + sprintf(buf,"%s%s%s%s\n", (prefix ? prefix : ""),
- + (no ? p_warn_text[no] : p_warn_text[pwarn]),
- + ((text ? (*text ? " - " : "") :
- + (!no && *p_warn_string ? " - " : ""))),
- + (text ? text : (no ? "" : p_warn_string)));
- + }
- + #endif
- *** /tmp/release17219/perrno.h Tue Nov 12 16:55:10 1991
- --- perrno.h Mon Oct 21 12:54:42 1991
- ***************
- *** 17,28 ****
- * libraries.
- */
-
- ! /**/ /* Means that this code should be replace by the 24X series code */
-
- extern int perrno;
- extern char p_err_string[];
- extern char *p_err_text[];
-
- /* Error codes returned or found in verrno */
-
- #ifndef PSUCCESS
- --- 17,32 ----
- * libraries.
- */
-
- ! #define P_ERR_STRING_SZ 100 /* Size of error string */
-
- extern int perrno;
- extern char p_err_string[];
- extern char *p_err_text[];
-
- + extern int pwarn;
- + extern char p_warn_string[];
- + extern char *p_warn_text[];
- +
- /* Error codes returned or found in verrno */
-
- #ifndef PSUCCESS
- ***************
- *** 88,93 ****
- --- 92,98 ----
- #define PFS_SYMLINK_DEPTH 232 /* Max sym-link depth exceeded */
- #define PFS_ENV_NOT_INITIALIZED 233 /* Can't read environment */
- #define PFS_EXT_USED_AS_DIR 234 /* Can't use externals as dirs */
- + #define PFS_MAX_FWD_DEPTH 235 /* Exceeded max forward depth */
-
- /* Error codes returned by directory server */
- /* some of these duplicate errors from individual routines */
- ***************
- *** 100,105 ****
- --- 105,111 ----
- #define DIRSRV_ALREADY_EXISTS 247 /* Identical link already exists */
- #define DIRSRV_NAME_CONFLICT 248 /* Link with name already exists */
-
- + #define DIRSRV_UNIMPLEMENTED 251 /* Unimplemented command */
- #define DIRSRV_BAD_FORMAT 252
- #define DIRSRV_ERROR 253
- #define DIRSRV_SERVER_FAILED 254 /* Unspecified server failure */
- ***************
- *** 107,109 ****
- --- 113,123 ----
- #ifndef PFAILURE
- #define PFAILURE 255
- #endif
- +
- + /* Warning codes */
- +
- + #define PNOWARN 0 /* No warning indicated */
- + #define PWARN_OUT_OF_DATE 1 /* Software is out of date */
- + #define PWARN_MSG_FROM_SERVER 2 /* Warning in p_warn_string */
- + #define PWARN_UNRECOGNIZED_RESP 3 /* Unrecognized line in response */
- + #define PWARNING 255 /* Warning in p_warn_string */
- *** /tmp/release17219/pfs.h Tue Nov 12 16:55:14 1991
- --- pfs.h Sat Nov 2 13:25:03 1991
- ***************
- *** 3,23 ****
- *
- * For copying and distribution information, please see the file
- * <copyright.h>.
- */
-
- #include <copyright.h>
-
- ! #ifndef _TYPES_
- ! #include <sys/types.h>
- ! #endif /* _TYPES_ */
-
- - #include <netinet/in.h>
- -
- #ifndef NULL
- #define NULL 0
- #endif /* NULL */
-
- ! #define PFS_RELEASE "Beta.4.2"
- /* moved up for vdir_init */
- #define ZERO(p) bzero((char *)(p), sizeof(*(p)))
-
- --- 3,29 ----
- *
- * For copying and distribution information, please see the file
- * <copyright.h>.
- + *
- + * v1.1.2 - bpk 08/30/91 - added VMS support
- + * v1.1.1 - bpk 08/20/91 - 4.2 -> 4.2B
- */
-
- #include <copyright.h>
-
- ! #ifdef VMS
- ! # include <vms.h>
- ! #else /* not VMS */
- ! # ifndef _TYPES_
- ! # include <sys/types.h>
- ! # endif /* _TYPES_ */
- ! # include <netinet/in.h>
- ! #endif /* VMS */
-
- #ifndef NULL
- #define NULL 0
- #endif /* NULL */
-
- ! #define PFS_RELEASE "Beta.4.2D"
- /* moved up for vdir_init */
- #define ZERO(p) bzero((char *)(p), sizeof(*(p)))
-
- ***************
- *** 46,51 ****
- --- 52,59 ----
- /* Request structure: maintains information about server requests */
- struct preq {
- int cid; /* Connection ID */
- + short priority; /* Connection priority */
- + int pf_priority; /* Priority assigned by pri_func */
- int recv_tot; /* Total # of packets received */
- int trns_tot; /* Total # of packets to transmit */
- struct ptext *cpkt; /* Current packet being filled in */
- ***************
- *** 61,67 ****
- typedef struct preq PREQ_ST;
-
-
- ! /* Definition of structure contining information on virtual link */
-
- struct vlink {
- int dontfree; /* Flag: don't free this link */
- --- 69,75 ----
- typedef struct preq PREQ_ST;
-
-
- ! /* Definition of structure containing information on virtual link */
-
- struct vlink {
- int dontfree; /* Flag: don't free this link */
- ***************
- *** 299,304 ****
- --- 307,315 ----
-
- #define PSUCCESS 0
- #define PFAILURE 255
- +
- + /* Hush up warnings. */
- + void vllfree();
-
- /* Procedures in libpfs.a */
-
- *** /tmp/release17219/pmachine.h Tue Nov 12 16:55:18 1991
- --- pmachine.h Sat Nov 2 16:48:59 1991
- ***************
- *** 5,14 ****
- * barely resembles the pmachine.h that comes with the real Prospero, tho.
- */
-
- - #if defined(NOREGEX)
- - #define REGEX_FILE "regex.c" /* originally "../../misc/regex.c in wcmatch.c */
- - #endif
- -
- #ifdef FUNCS
- #define index strchr
- #define rindex strrchr
- --- 5,10 ----
- ***************
- *** 18,27 ****
- #endif
- #endif
-
- /*
- * FD_SET: lib/pfs/dirsend.c, user/vget/ftp.c
- */
- ! #ifndef FD_SET
- #define NFDBITS 32
- #define FD_SETSIZE 32
- #define FD_SET(n, p) ((p)->fds_bits[(n)/NFDBITS] |= (1 << ((n) % NFDBITS)))
- --- 14,36 ----
- #endif
- #endif
-
- + #if defined(RS6000) || defined(BULL)
- + # define NEED_SELECT_H
- + #endif
- +
- + #if defined(_AIX) || defined(UTS) || defined(AUX) || defined(USG)
- + # define NEED_TIME_H
- + #endif
- +
- + #ifdef VMS
- + /* Get the system status stuff. */
- + # include <ssdef.h>
- + #endif /* VMS */
- +
- /*
- * FD_SET: lib/pfs/dirsend.c, user/vget/ftp.c
- */
- ! #if !defined(FD_SET) && !defined(VMS)
- #define NFDBITS 32
- #define FD_SETSIZE 32
- #define FD_SET(n, p) ((p)->fds_bits[(n)/NFDBITS] |= (1 << ((n) % NFDBITS)))
- *** /tmp/release17219/pprot.h Tue Nov 12 16:55:21 1991
- --- pprot.h Sat Nov 2 13:26:49 1991
- ***************
- *** 8,14 ****
- #include <copyright.h>
-
- #ifndef MAXPATHLEN
- ! #include <sys/param.h>
- #endif
-
- /* Protocol Definitions */
- --- 8,18 ----
- #include <copyright.h>
-
- #ifndef MAXPATHLEN
- ! # ifdef VMS
- ! # define MAXPATHLEN 32
- ! # else /* not VMS */
- ! # include <sys/param.h>
- ! # endif /* VMS */
- #endif
-
- /* Protocol Definitions */
- ***************
- *** 23,28 ****
- --- 27,34 ----
- #define MAXPKT 1024 /* Max size of response from server */
- #define SEQ_SIZE 32 /* Max size of sequence text in resp */
- #define MAX_DIR_LINESIZE 160+MAXPATHLEN /* Max linesize in directory */
- +
- + #define MAX_FWD_DEPTH 20 /* Max fwd pointers to follow */
-
- #define S_AD_SZ sizeof(struct sockaddr_in)
-
- *** /tmp/release17219/procquery.c Tue Nov 12 16:55:25 1991
- --- procquery.c Sat Nov 2 21:03:58 1991
- ***************
- *** 10,16 ****
- * For copying and distribution information, please see the file
- * <copyright.h>.
- *
- ! * v1.1.1 - bpk 08/20/91 - took out archie_query from error msg
- */
- #include <copyright.h>
- #include <stdio.h>
- --- 10,18 ----
- * For copying and distribution information, please see the file
- * <copyright.h>.
- *
- ! * v1.2.1 - 10/18/91 (bpk) - warning stuff
- ! * v1.2.0 - 09/20/91 (bpk) - VMS under Multinet 3.0 too
- ! * v1.1.1 - 08/20/91 (bpk) - took out archie_query from error msg
- */
- #include <copyright.h>
- #include <stdio.h>
- ***************
- *** 18,28 ****
- #include <perrno.h>
- #include <pmachine.h>
- #include <archie.h>
- ! #if defined(AUX) || defined (AIX)
- # include <time.h>
- #else
- ! # include <sys/time.h>
- #endif
- extern int client_dirsrv_timeout,client_dirsrv_retry; /* dirsend.c */
- extern char *progname;
-
- --- 20,34 ----
- #include <perrno.h>
- #include <pmachine.h>
- #include <archie.h>
- !
- ! #ifdef NEED_TIME_H
- # include <time.h>
- #else
- ! # ifndef VMS
- ! # include <sys/time.h>
- ! # endif
- #endif
- +
- extern int client_dirsrv_timeout,client_dirsrv_retry; /* dirsend.c */
- extern char *progname;
-
- ***************
- *** 35,40 ****
- --- 41,47 ----
- extern Database *db; /* database for all queries */
- static HostEntry *currentHostEntry; /* current host, this query */
- static LocEntry *currentLocEntry; /* current location, this query */
- + static int numMatches; /* num hits this query */
- #endif
-
- /*
- ***************
- *** 45,57 ****
- /*
- * Data defined here
- */
- ! int perrno, pfs_debug;
- static struct tm *presenttime;
-
- /* - - - - - - - - */
- /*
- * display_link : Prints the contents of the given virtual link. If
- ! * listflag is 0, then this uses static variables to save state
- * between calls for a less verbose output. If listflag is non-zero
- * then all information is printed every time.
- */
- --- 52,67 ----
- /*
- * Data defined here
- */
- ! extern int pwarn, perrno;
- ! int pfs_debug;
- static struct tm *presenttime;
- + static char lastpath[MAX_VPATH] = "\001";
- + static char lasthost[MAX_VPATH] = "\001";
-
- /* - - - - - - - - */
- /*
- * display_link : Prints the contents of the given virtual link. If
- ! * listflag is 0, then this uses last{host,path} to save state
- * between calls for a less verbose output. If listflag is non-zero
- * then all information is printed every time.
- */
- ***************
- *** 60,68 ****
- VLINK l;
- int listflag;
- {
- - static char lastpath[MAX_VPATH] = "\001";
- - static char lasthost[MAX_VPATH] = "\001";
- -
- PATTRIB ap;
- char linkpath[MAX_VPATH];
- int dirflag = 0;
- --- 70,75 ----
- ***************
- *** 146,157 ****
- currentLocEntry = addLocEntry("*UNKNOWN*",currentHostEntry,NULL);
- }
- (void)addFileEntry(linkpath,size,modes,archie_date,currentLocEntry,NULL);
- ! doPendingEvents();
- #else
- /* Print this link's information */
- if (listflag)
- printf("%s %6d %s %s%s\n",gt_date,size,l->host,l->filename,
- ! (dirflag ? "/" : ""));
- else
- printf(" %9s %s %10d %s %s\n",(dirflag ? "DIRECTORY" : "FILE"),
- modes,size,archie_date,l->name);
- --- 153,164 ----
- currentLocEntry = addLocEntry("*UNKNOWN*",currentHostEntry,NULL);
- }
- (void)addFileEntry(linkpath,size,modes,archie_date,currentLocEntry,NULL);
- ! numMatches += 1;
- #else
- /* Print this link's information */
- if (listflag)
- printf("%s %6d %s %s%s\n",gt_date,size,l->host,l->filename,
- ! (dirflag ? "/" : ""));
- else
- printf(" %9s %s %10d %s %s\n",(dirflag ? "DIRECTORY" : "FILE"),
- modes,size,archie_date,l->name);
- ***************
- *** 193,198 ****
- --- 200,206 ----
- clearDb(db);
- currentHostEntry = HOST_NULL;
- currentLocEntry = LOC_NULL;
- + numMatches = 0;
- #endif
-
- /* Do the query */
- ***************
- *** 204,228 ****
- /* Error? */
- if (perrno != PSUCCESS) {
- #ifdef XARCHIE
- ! if (*p_err_string)
- ! alert2("Prospero error: %.100s - %.100s",p_err_text[perrno],
- ! p_err_string);
- else
- ! alert1("Prospero error: %.200s",p_err_text[perrno]);
- status0("Ready");
- #else
- ! if (*p_err_string)
- ! fprintf(stderr, "%s: failed: %s - %s\n", progname,
- ! p_err_text[perrno], p_err_string);
- else
- ! fprintf(stderr, "%s failed: %s\n", progname, p_err_text[perrno]);
- #endif
- }
-
- /* Display the results */
- #ifdef XARCHIE
- status0("Parsing");
- #endif
- while (l != NULL) {
- display_link(l,listflag);
- l = l->next;
- --- 212,263 ----
- /* Error? */
- if (perrno != PSUCCESS) {
- #ifdef XARCHIE
- ! if (p_err_text[perrno]) {
- ! if (*p_err_string)
- ! alert2("Prospero error: %.100s - %.100s",p_err_text[perrno],
- ! p_err_string);
- ! else
- ! alert1("Prospero error: %.200s",p_err_text[perrno]);
- ! } else
- ! alert1("Prospero error: Undefined error %d (prospero)", perrno);
- ! status0("Ready");
- ! #else
- ! if (p_err_text[perrno]) {
- ! if (*p_err_string)
- ! fprintf(stderr, "%s: failed: %s - %s\n", progname,
- ! p_err_text[perrno], p_err_string);
- ! else
- ! fprintf(stderr, "%s failed: %s\n", progname, p_err_text[perrno]);
- ! } else
- ! fprintf(stderr, "%s failed: Undefined error %d (prospero)", perrno);
- ! #endif
- ! }
- !
- ! /* Warning? */
- ! if (pwarn != PNOWARN) {
- ! #ifdef XARCHIE
- ! if (*p_warn_string)
- ! alert2("Prospero warning: %.100s - %.100s",
- ! p_warn_text[pwarn], p_warn_string);
- else
- ! alert1("Prospero warning: %.200s",p_warn_text[pwarn]);
- status0("Ready");
- #else
- ! if (*p_warn_string)
- ! fprintf(stderr, "%s: Warning! %s - %s\n", progname,
- ! p_warn_text[pwarn], p_warn_string);
- else
- ! fprintf(stderr, "%s: Warning! %s\n", progname, p_warn_text[pwarn]);
- #endif
- }
-
- +
- /* Display the results */
- #ifdef XARCHIE
- status0("Parsing");
- #endif
- + *lasthost = '\001';
- + *lastpath = '\001';
- while (l != NULL) {
- display_link(l,listflag);
- l = l->next;
- ***************
- *** 229,234 ****
- }
- #ifdef XARCHIE
- displayHosts(db);
- ! status0("Ready");
- #endif
- }
- --- 264,269 ----
- }
- #ifdef XARCHIE
- displayHosts(db);
- ! status1("Found %d matches -- Ready",numMatches);
- #endif
- }
- *** /tmp/release17219/ptalloc.c Tue Nov 12 16:55:29 1991
- --- ptalloc.c Mon Oct 21 12:56:01 1991
- ***************
- *** 51,56 ****
- --- 51,57 ----
- * VTFREE takes a pointer to a VTEXT structure and adds it to
- * the free list for later reuse.
- */
- + void
- ptfree(vt)
- PTEXT vt;
- {
- ***************
- *** 67,72 ****
- --- 68,74 ----
- * VTEXT structures. It is used to free an entrie list of VTEXT
- * structures.
- */
- + void
- ptlfree(vt)
- PTEXT vt;
- {
- *** /dev/null Tue Nov 12 16:30:11 1991
- --- rdgram.h Sat Nov 2 13:31:22 1991
- ***************
- *** 0 ****
- --- 1,16 ----
- + /*
- + * Copyright (c) 1991 by the University of Washington
- + *
- + * For copying and distribution information, please see the file
- + * <copyright.h>.
- + */
- +
- + #include <copyright.h>
- +
- + /* Queuing priorities for datagrams */
- + #define RDGRAM_MAX_PRI 32765 /* Maximum user proiority */
- + #define RDGRAM_MAX_SPRI 32767 /* Maximum priority for system use */
- + #define RDGRAM_MIN_PRI -32765 /* Maximum user proiority */
- + #define RDGRAM_MIN_SPRI -32768 /* Maximum priority for system use */
- +
- + int rdgram_priority = 0;
- *** /tmp/release17219/regex.c Tue Nov 12 16:55:46 1991
- --- regex.c Tue Nov 12 16:50:52 1991
- ***************
- *** 1,74 ****
- /*
- ! * These routines are from "a pre-release of a bunch of berkelix
- ! * regex(3)/ed(1) compatible regular-expression routines" written by Ozan
- ! * S. Yigit, Dept. of Computer Science, York University. Parts of the
- ! * code that are not needed by Prospero have been removed, but most of
- ! * the accompanying information has been left intact. This file is to be
- ! * included on those operating systems that do not support re_comp and
- ! * re_exec.
- ! *
- ! * gf: 12 Sep 1991: Modified so routines aren't static, so we can link with
- ! * them instead of including the C code.
- */
-
- /*
- -
- - These routines are completely public domain. You can do whatever you
- - like with them, and hopefully you are professional enough not to strip
- - out the authorship information, acknowledgements and references.
- -
- - The reason for this being a *pre-release* is that I received a lot
- - of useful suggestions about packaging, about additional routines etc.
- - from a few people. I do not have too much time to do those changes
- - right now, so I am putting this package out for those who needed
- - it yesterday. Next release will include other routines, and better
- - packaging.
- -
- - These routines are *not* tested under SysV, but they are tested
- - under PRO/Venix (2.0) and BSD 4.2.
- -
- - In general, these routines run just as fast, or faster than regex library
- - routines under BSD 4.2. In some cases, they are slightly slower. I did not
- - try too hard to optimize the re_exec routine.
- -
- - Coding style is a la K&R, with lotsa short identifiers. I like it
- - that way. All flames should be fed to yetti!dragon.
- -
- - Acknowledgements: Henry Spencer, Hugh Redelmeier and Drew Sullivan made
- - a lot of important suggestions, some of which will be
- - incorporated into the next version.
- -
- - */
- -
- - /*
- * regex - Regular expression pattern matching
- * and replacement
- *
- ! *
- ! * By: Ozan S. Yigit (oz)
- ! * Dept. of Computer Science
- * York University
- - * [...!utzoo!yetti!oz || oz@yusol.BITNET || oz@yuyetti.BITNET]
- *
- * These routines are the PUBLIC DOMAIN equivalents
- * of regex routines as found in 4.nBSD UN*X, with minor
- * extensions.
- *
- ! * These routines are derived from various implementations
- ! * found in software tools books, and Conroy's grep. They
- ! * are NOT derived from licensed/restricted software.
- ! * For more interesting/academic/complicated implementations,
- ! * see Henry Spencer's regexp routines, or GNU Emacs pattern
- ! * matching module.
- *
- * Routines:
- * re_comp: compile a regular expression into
- ! * a DFA.
- *
- * char *re_comp(s)
- * char *s;
- *
- ! * re_exec: execute the DFA to match a pattern.
- *
- * int re_exec(s)
- * char *s;
- --- 1,52 ----
- + #ifdef NOREGEX
- /*
- ! * These routines are BSD regex(3)/ed(1) compatible regular-expression
- ! * routines written by Ozan S. Yigit, Computer Science, York University.
- ! * Parts of the code that are not needed by Prospero have been removed,
- ! * but most of the accompanying information has been left intact.
- ! * This file is to be included on those operating systems that do not
- ! * support re_comp and re_exec.
- */
-
- /*
- * regex - Regular expression pattern matching
- * and replacement
- *
- ! * by: Ozan S. Yigit (oz@nexus.yorku.ca)
- ! * Dept. of Computing Services
- * York University
- *
- * These routines are the PUBLIC DOMAIN equivalents
- * of regex routines as found in 4.nBSD UN*X, with minor
- * extensions.
- *
- ! * Modification history:
- *
- + * Log: regex.c,v
- + * Revision 1.3 89/04/01 14:18:09 oz
- + * Change all references to a dfa: this is actually an nfa.
- + *
- + * Revision 1.2 88/08/28 15:36:04 oz
- + * Use a complement bitmap to represent NCL.
- + * This removes the need to have seperate
- + * code in the pmatch case block - it is
- + * just CCL code now.
- + *
- + * Use the actual CCL code in the CLO
- + * section of pmatch. No need for a recursive
- + * pmatch call.
- + *
- + * Use a bitmap table to set char bits in an
- + * 8-bit chunk.
- + *
- * Routines:
- * re_comp: compile a regular expression into
- ! * a NFA.
- *
- * char *re_comp(s)
- * char *s;
- *
- ! * re_exec: execute the NFA to match a pattern.
- *
- * int re_exec(s)
- * char *s;
- ***************
- *** 91,102 ****
- *
- * [4] [set] matches one of the characters in the set.
- * If the first character in the set is "^",
- ! * it matches a character NOT in the set. A
- ! * shorthand S-E is used to specify a set of
- ! * characters S upto E, inclusive. The special
- ! * characters "]" and "-" have no special
- ! * meaning if they appear as the first chars
- ! * in the set.
- * examples: match:
- *
- * [a-z] any lowercase alpha
- --- 69,80 ----
- *
- * [4] [set] matches one of the characters in the set.
- * If the first character in the set is "^",
- ! * it matches a character NOT in the set, i.e.
- ! * complements the set. A shorthand S-E is
- ! * used to specify a set of characters S upto
- ! * E, inclusive. The special characters "]" and
- ! * "-" have no special meaning if they appear
- ! * as the first chars in the set.
- * examples: match:
- *
- * [a-z] any lowercase alpha
- ***************
- *** 155,168 ****
- * Grep [rsx-11 C dist] David Conroy
- * ed - text editor Un*x Programmer's Manual
- * Advanced editing on Un*x B. W. Kernighan
- ! * RegExp routines Henry Spencer
- *
- * Notes:
- *
- * This implementation uses a bit-set representation for character
- * classes for speed and compactness. Each character is represented
- ! * by one bit in a 128-bit block. Thus, CCL or NCL always takes a
- ! * constant 16 bytes in the internal dfa, and re_exec does a single
- * bit comparison to locate the character in the set.
- *
- * Examples:
- --- 133,146 ----
- * Grep [rsx-11 C dist] David Conroy
- * ed - text editor Un*x Programmer's Manual
- * Advanced editing on Un*x B. W. Kernighan
- ! * regexp routines Henry Spencer
- *
- * Notes:
- *
- * This implementation uses a bit-set representation for character
- * classes for speed and compactness. Each character is represented
- ! * by one bit in a 128-bit block. Thus, CCL always takes a
- ! * constant 16 bytes in the internal nfa, and re_exec does a single
- * bit comparison to locate the character in the set.
- *
- * Examples:
- ***************
- *** 172,178 ****
- * matches: fo foo fooo foobar fobar foxx ...
- *
- * pattern: fo[ob]a[rz]
- ! * compile: CHR f CHR o CCL 2 o b CHR a CCL bitset END
- * matches: fobar fooar fobaz fooaz
- *
- * pattern: foo\\+
- --- 150,156 ----
- * matches: fo foo fooo foobar fobar foxx ...
- *
- * pattern: fo[ob]a[rz]
- ! * compile: CHR f CHR o CCL bitset CHR a CCL bitset END
- * matches: fobar fooar fobaz fooaz
- *
- * pattern: foo\\+
- ***************
- *** 189,195 ****
- *
- */
-
- ! #define MAXDFA 1024
- #define MAXTAG 10
-
- #define OKP 1
- --- 167,173 ----
- *
- */
-
- ! #define MAXNFA 1024
- #define MAXTAG 10
-
- #define OKP 1
- ***************
- *** 198,218 ****
- #define CHR 1
- #define ANY 2
- #define CCL 3
- ! #define NCL 4
- ! #define BOL 5
- ! #define EOL 6
- ! #define BOT 7
- ! #define EOT 8
- ! #define BOW 9
- ! #define EOW 10
- ! #define REF 11
- ! #define CLO 12
-
- #define END 0
-
- /*
- * The following defines are not meant
- ! * to be changeable. They are for readibility
- * only.
- *
- */
- --- 176,195 ----
- #define CHR 1
- #define ANY 2
- #define CCL 3
- ! #define BOL 4
- ! #define EOL 5
- ! #define BOT 6
- ! #define EOT 7
- ! #define BOW 8
- ! #define EOW 9
- ! #define REF 10
- ! #define CLO 11
-
- #define END 0
-
- /*
- * The following defines are not meant
- ! * to be changeable. They are for readability
- * only.
- *
- */
- ***************
- *** 227,243 ****
- typedef /*unsigned*/ char CHAR;
-
- static int tagstk[MAXTAG]; /* subpat tag stack..*/
- ! static CHAR dfa[MAXDFA]; /* automaton.. */
- static int sta = NOP; /* status of lastpat */
-
- static CHAR bittab[BITBLK]; /* bit table for CCL */
-
- ! static int internal_error;
-
- static void
- ! chset(c) register CHAR c; { bittab[((c)&BLKIND)>>3] |= 1<<((c)&BITIND); }
-
- ! #define badpat(x) return(*dfa = END, x)
- #define store(x) *mp++ = x
-
- char *
- --- 204,226 ----
- typedef /*unsigned*/ char CHAR;
-
- static int tagstk[MAXTAG]; /* subpat tag stack..*/
- ! static CHAR nfa[MAXNFA]; /* automaton.. */
- static int sta = NOP; /* status of lastpat */
-
- static CHAR bittab[BITBLK]; /* bit table for CCL */
- + /* pre-set bits... */
- + static CHAR bitarr[] = {1,2,4,8,16,32,64,128};
-
- ! static int internal_error;
-
- static void
- ! chset(c)
- ! register CHAR c;
- ! {
- ! bittab[((c) & BLKIND) >> 3] |= bitarr[(c) & BITIND];
- ! }
-
- ! #define badpat(x) return (*nfa = END, x)
- #define store(x) *mp++ = x
-
- char *
- ***************
- *** 245,265 ****
- char *pat;
- {
- register char *p; /* pattern pointer */
- ! register CHAR *mp=dfa; /* dfa pointer */
- register CHAR *lp; /* saved pointer.. */
- ! register CHAR *sp=dfa; /* another one.. */
-
- register int tagi = 0; /* tag stack index */
- register int tagc = 1; /* actual tag count */
-
- register int n;
- int c1, c2;
-
- - internal_error = 0;
- -
- if (!pat || !*pat)
- if (sta)
- ! return(0);
- else
- badpat("No previous regular expression");
- sta = NOP;
- --- 228,247 ----
- char *pat;
- {
- register char *p; /* pattern pointer */
- ! register CHAR *mp = nfa; /* nfa pointer */
- register CHAR *lp; /* saved pointer.. */
- ! register CHAR *sp = nfa; /* another one.. */
-
- register int tagi = 0; /* tag stack index */
- register int tagc = 1; /* actual tag count */
-
- register int n;
- + register CHAR mask; /* xor mask -CCL/NCL */
- int c1, c2;
-
- if (!pat || !*pat)
- if (sta)
- ! return 0;
- else
- badpat("No previous regular expression");
- sta = NOP;
- ***************
- *** 291,303 ****
- break;
-
- case '[': /* match char class..*/
-
- if (*++p == '^') {
- ! store(NCL);
- p++;
- }
- else
- ! store(CCL);
-
- if (*p == '-') /* real dash */
- chset(*p++);
- --- 273,286 ----
- break;
-
- case '[': /* match char class..*/
- + store(CCL);
-
- if (*++p == '^') {
- ! mask = 0377;
- p++;
- }
- else
- ! mask = 0;
-
- if (*p == '-') /* real dash */
- chset(*p++);
- ***************
- *** 324,330 ****
- badpat("Missing ]");
-
- for (n = 0; n < BITBLK; bittab[n++] = (char) 0)
- ! store(bittab[n]);
-
- break;
-
- --- 307,313 ----
- badpat("Missing ]");
-
- for (n = 0; n < BITBLK; bittab[n++] = (char) 0)
- ! store(mask ^ bittab[n]);
-
- break;
-
- ***************
- *** 332,339 ****
- case '+': /* match 1 or more.. */
- if (p == pat)
- badpat("Empty closure");
- ! lp = sp; /* previous opcode */
- ! if (*lp == CLO) /* equivalence.. */
- break;
- switch(*lp) {
-
- --- 315,322 ----
- case '+': /* match 1 or more.. */
- if (p == pat)
- badpat("Empty closure");
- ! lp = sp; /* previous opcode */
- ! if (*lp == CLO) /* equivalence.. */
- break;
- switch(*lp) {
-
- ***************
- *** 449,455 ****
- badpat("Unmatched \\(");
- store(END);
- sta = OKP;
- ! return(0);
- }
-
-
- --- 432,438 ----
- badpat("Unmatched \\(");
- store(END);
- sta = OKP;
- ! return 0;
- }
-
-
- ***************
- *** 456,469 ****
- static char *bol;
- static char *bopat[MAXTAG];
- static char *eopat[MAXTAG];
- -
- char *pmatch();
-
- /*
- * re_exec:
- ! * execute dfa to find a match.
- *
- ! * special cases: (dfa[0])
- * BOL
- * Match only once, starting from the
- * beginning.
- --- 439,451 ----
- static char *bol;
- static char *bopat[MAXTAG];
- static char *eopat[MAXTAG];
- char *pmatch();
-
- /*
- * re_exec:
- ! * execute nfa to find a match.
- *
- ! * special cases: (nfa[0])
- * BOL
- * Match only once, starting from the
- * beginning.
- ***************
- *** 487,493 ****
- {
- register char c;
- register char *ep = 0;
- ! register CHAR *ap = dfa;
-
- bol = lp;
-
- --- 469,475 ----
- {
- register char c;
- register char *ep = 0;
- ! register CHAR *ap = nfa;
-
- bol = lp;
-
- ***************
- *** 512,518 ****
- while (*lp && *lp != c)
- lp++;
- if (!*lp) /* if EOS, fail, else fall thru. */
- ! return(0);
- default: /* regular matching all the way. */
- while (*lp) {
- if ((ep = pmatch(lp,ap)))
- --- 494,500 ----
- while (*lp && *lp != c)
- lp++;
- if (!*lp) /* if EOS, fail, else fall thru. */
- ! return 0;
- default: /* regular matching all the way. */
- while (*lp) {
- if ((ep = pmatch(lp,ap)))
- ***************
- *** 521,537 ****
- }
- break;
- case END: /* munged automaton. fail always */
- ! return(0);
- }
- if (!ep)
- ! return(0);
-
- ! if (internal_error)
- ! return(-1);
-
- bopat[0] = lp;
- eopat[0] = ep;
- ! return(1);
- }
-
- /*
- --- 503,519 ----
- }
- break;
- case END: /* munged automaton. fail always */
- ! return 0;
- }
- if (!ep)
- ! return 0;
-
- ! if (internal_error)
- ! return -1;
-
- bopat[0] = lp;
- eopat[0] = ep;
- ! return 1;
- }
-
- /*
- ***************
- *** 542,548 ****
- * grep written by David Conroy. The backref and
- * tag stuff, and various other mods are by oZ.
- *
- ! * special cases: (dfa[n], dfa[n+1])
- * CLO ANY
- * We KNOW ".*" will match ANYTHING
- * upto the end of line. Thus, go to
- --- 524,530 ----
- * grep written by David Conroy. The backref and
- * tag stuff, and various other mods are by oZ.
- *
- ! * special cases: (nfa[n], nfa[n+1])
- * CLO ANY
- * We KNOW ".*" will match ANYTHING
- * upto the end of line. Thus, go to
- ***************
- *** 559,565 ****
- * We can again scan the string forward
- * for the single char without recursion,
- * and at the point of failure, we execute
- ! * the remaining dfa recursively, as
- * described above.
- *
- * At the end of a successful match, bopat[n] and eopat[n]
- --- 541,547 ----
- * We can again scan the string forward
- * for the single char without recursion,
- * and at the point of failure, we execute
- ! * the remaining nfa recursively, as
- * described above.
- *
- * At the end of a successful match, bopat[n] and eopat[n]
- ***************
- *** 568,574 ****
- *
- */
-
- -
- /*
- * character classification table for word boundary
- * operators BOW and EOW. the reason for not using
- --- 550,555 ----
- ***************
- *** 597,603 ****
-
- #define inascii(x) (0177&(x))
- #define iswordc(x) chrtyp[inascii(x)]
- ! #define isinset(x,y) ((x)[((y)&BLKIND)>>3] & (1<<((y)&BITIND)))
-
- /*
- * skip values for CLO XXX to skip past the closure
- --- 578,584 ----
-
- #define inascii(x) (0177&(x))
- #define iswordc(x) chrtyp[inascii(x)]
- ! #define isinset(x,y) ((x)[((y)&BLKIND)>>3] & bitarr[(y)&BITIND])
-
- /*
- * skip values for CLO XXX to skip past the closure
- ***************
- *** 604,612 ****
- *
- */
-
- ! #define ANYSKIP 2 /* CLO ANY END ... */
- ! #define CHRSKIP 3 /* CLO CHR chr END ... */
- ! #define CCLSKIP 18 /* CLO CCL 16bytes END ... */
-
- static char *
- pmatch(lp, ap)
- --- 585,593 ----
- *
- */
-
- ! #define ANYSKIP 2 /* [CLO] ANY END ... */
- ! #define CHRSKIP 3 /* [CLO] CHR chr END ... */
- ! #define CCLSKIP 18 /* [CLO] CCL 16bytes END ... */
-
- static char *
- pmatch(lp, ap)
- ***************
- *** 613,622 ****
- register char *lp;
- register CHAR *ap;
- {
- register char *e; /* extra pointer for CLO */
- register char *bp; /* beginning of subpat.. */
- register char *ep; /* ending of subpat.. */
- - register int op, c, n;
- char *are; /* to save the line ptr. */
-
- while ((op = *ap++) != END)
- --- 594,603 ----
- register char *lp;
- register CHAR *ap;
- {
- + register int op, c, n;
- register char *e; /* extra pointer for CLO */
- register char *bp; /* beginning of subpat.. */
- register char *ep; /* ending of subpat.. */
- char *are; /* to save the line ptr. */
-
- while ((op = *ap++) != END)
- ***************
- *** 624,654 ****
-
- case CHR:
- if (*lp++ != *ap++)
- ! return(0);
- break;
- case ANY:
- if (!*lp++)
- ! return(0);
- break;
- case CCL:
- c = *lp++;
- if (!isinset(ap,c))
- ! return(0);
- ap += BITBLK;
- break;
- - case NCL:
- - c = *lp++;
- - if (isinset(ap,c))
- - return(0);
- - ap += BITBLK;
- - break;
- case BOL:
- if (lp != bol)
- ! return(0);
- break;
- case EOL:
- if (*lp)
- ! return(0);
- break;
- case BOT:
- bopat[*ap++] = lp;
- --- 605,629 ----
-
- case CHR:
- if (*lp++ != *ap++)
- ! return 0;
- break;
- case ANY:
- if (!*lp++)
- ! return 0;
- break;
- case CCL:
- c = *lp++;
- if (!isinset(ap,c))
- ! return 0;
- ap += BITBLK;
- break;
- case BOL:
- if (lp != bol)
- ! return 0;
- break;
- case EOL:
- if (*lp)
- ! return 0;
- break;
- case BOT:
- bopat[*ap++] = lp;
- ***************
- *** 657,669 ****
- eopat[*ap++] = lp;
- break;
- case BOW:
- ! if (!(lp!=bol && iswordc(lp[-1])) && iswordc(*lp))
- ! break;
- ! return(0);
- case EOW:
- ! if ((lp!=bol && iswordc(lp[-1])) && !iswordc(*lp))
- ! break;
- ! return(0);
- case REF:
- n = *ap++;
- bp = bopat[n];
- --- 632,644 ----
- eopat[*ap++] = lp;
- break;
- case BOW:
- ! if (lp!=bol && iswordc(lp[-1]) || !iswordc(*lp))
- ! return 0;
- ! break;
- case EOW:
- ! if (lp==bol || !iswordc(lp[-1]) || iswordc(*lp))
- ! return 0;
- ! break;
- case REF:
- n = *ap++;
- bp = bopat[n];
- ***************
- *** 670,676 ****
- ep = eopat[n];
- while (bp < ep)
- if (*bp++ != *lp++)
- ! return(0);
- break;
- case CLO:
- are = lp;
- --- 645,651 ----
- ep = eopat[n];
- while (bp < ep)
- if (*bp++ != *lp++)
- ! return 0;
- break;
- case CLO:
- are = lp;
- ***************
- *** 688,701 ****
- n = CHRSKIP;
- break;
- case CCL:
- ! case NCL:
- ! while (*lp && (e = pmatch(lp, ap)))
- ! lp = e;
- n = CCLSKIP;
- break;
- default:
- internal_error++;
- ! return(0);
- }
-
- ap += n;
- --- 663,675 ----
- n = CHRSKIP;
- break;
- case CCL:
- ! while ((c = *lp) && isinset(ap+1,c))
- ! lp++;
- n = CCLSKIP;
- break;
- default:
- internal_error++;
- ! return 0;
- }
-
- ap += n;
- ***************
- *** 702,716 ****
-
- while (lp >= are) {
- if (e = pmatch(lp, ap))
- ! return(e);
- --lp;
- }
- ! return(0);
- default:
- internal_error++;
- ! return(0);
- }
- ! return(lp);
- }
- !
- !
- --- 676,689 ----
-
- while (lp >= are) {
- if (e = pmatch(lp, ap))
- ! return e;
- --lp;
- }
- ! return 0;
- default:
- internal_error++;
- ! return 0;
- }
- ! return lp;
- }
- ! #endif /* Need regex libraries? Compile to nothing if not. */
- *** /tmp/release17219/regex.h Tue Nov 12 16:55:51 1991
- --- regex.h Mon Oct 21 12:57:03 1991
- ***************
- *** 9,13 ****
- --- 9,20 ----
- * George Ferguson, ferguson@cs.rochester.edu, 11 Sep 1991.
- */
-
- + #ifdef AUX
- + extern char *regcmp();
- + extern char *regex();
- + #define re_comp regcmp
- + #define re_exec regex
- + #else
- extern char *re_comp();
- extern int re_exec();
- + #endif
- *** /tmp/release17219/settings.c Tue Nov 12 16:55:54 1991
- --- settings.c Tue Oct 22 09:03:25 1991
- ***************
- *** 1,7 ****
- /*
- * settings.c : Set program parameters on a popup panel
- *
- ! * George Ferguson, ferguson@cs.rochester.edu, 12 Sep 1991.
- *
- */
- #include <stdio.h>
- --- 1,7 ----
- /*
- * settings.c : Set program parameters on a popup panel
- *
- ! * George Ferguson, ferguson@cs.rochester.edu, 22 Oct 1991.
- *
- */
- #include <stdio.h>
- ***************
- *** 17,22 ****
- --- 17,23 ----
- #include "xarchie.h"
- #include "types.h"
- #include "appres.h"
- + #include "rdgram.h"
- #include "alert.h"
- #include "confirm.h"
-
- ***************
- *** 23,29 ****
- /*
- * Functions declared in this file
- */
- ! void settingsAction();
- void applySettingsAction(),defaultSettingsAction(),doneSettingsAction();
- void setSearchTypeAction(),setSortTypeAction();
- void setHostAction(),setNiceLevelAction();
- --- 24,30 ----
- /*
- * Functions declared in this file
- */
- ! void settingsAction(),initSettingsDefaults();
- void applySettingsAction(),defaultSettingsAction(),doneSettingsAction();
- void setSearchTypeAction(),setSortTypeAction();
- void setHostAction(),setNiceLevelAction();
- ***************
- *** 42,48 ****
- static Widget applyButton;
- static Widget searchLabel;
- static Widget sortLabel;
- ! static Widget hostText;
- static Widget maxHitsText;
- static Widget timeoutText;
- static Widget retriesText;
- --- 43,49 ----
- static Widget applyButton;
- static Widget searchLabel;
- static Widget sortLabel;
- ! static Widget setHostText;
- static Widget maxHitsText;
- static Widget timeoutText;
- static Widget retriesText;
- ***************
- *** 49,58 ****
- static Widget niceText;
- static Widget ftpDirText,ftpTypeText;
-
- ! static SearchType currentSearchType;
- ! static SortType currentSortType;
- static Boolean settingsChanged,isPoppedUp;
-
- #define ACTION_PROC(NAME) void NAME(w,event,params,num_params) \
- Widget w; \
- XEvent *event; \
- --- 50,62 ----
- static Widget niceText;
- static Widget ftpDirText,ftpTypeText;
-
- ! static SearchType currentSearchType,defSearchType;
- ! static SortType currentSortType,defSortType;
- ! static char *defArchieHost,*defFtpDir,*defFtpType;
- ! static int defMaxHits,defTimeout,defRetries,defNiceLevel;
- static Boolean settingsChanged,isPoppedUp;
-
- +
- #define ACTION_PROC(NAME) void NAME(w,event,params,num_params) \
- Widget w; \
- XEvent *event; \
- ***************
- *** 69,76 ****
- /*ARGSUSED*/
- ACTION_PROC(settingsAction)
- {
- ! if (settingsShell == NULL)
- initSettingsShell();
- if (isPoppedUp) {
- XRaiseWindow(display,XtWindow(settingsShell));
- } else {
- --- 73,82 ----
- /*ARGSUSED*/
- ACTION_PROC(settingsAction)
- {
- ! if (settingsShell == NULL) {
- initSettingsShell();
- + initSettingsDefaults();
- + }
- if (isPoppedUp) {
- XRaiseWindow(display,XtWindow(settingsShell));
- } else {
- ***************
- *** 97,103 ****
- applyButton = XtNameToWidget(toplevel,"settingsShell*applyButton");
- searchLabel = XtNameToWidget(toplevel,"settingsShell*searchLabel");
- sortLabel = XtNameToWidget(toplevel,"settingsShell*sortLabel");
- ! hostText = XtNameToWidget(toplevel,"settingsShell*hostText");
- maxHitsText = XtNameToWidget(toplevel,"settingsShell*maxHitsText");
- timeoutText = XtNameToWidget(toplevel,"settingsShell*timeoutText");
- retriesText = XtNameToWidget(toplevel,"settingsShell*retriesText");
- --- 103,109 ----
- applyButton = XtNameToWidget(toplevel,"settingsShell*applyButton");
- searchLabel = XtNameToWidget(toplevel,"settingsShell*searchLabel");
- sortLabel = XtNameToWidget(toplevel,"settingsShell*sortLabel");
- ! setHostText = XtNameToWidget(toplevel,"settingsShell*setHostText");
- maxHitsText = XtNameToWidget(toplevel,"settingsShell*maxHitsText");
- timeoutText = XtNameToWidget(toplevel,"settingsShell*timeoutText");
- retriesText = XtNameToWidget(toplevel,"settingsShell*retriesText");
- ***************
- *** 105,111 ****
- ftpDirText = XtNameToWidget(toplevel,"settingsShell*ftpDirText");
- ftpTypeText = XtNameToWidget(toplevel,"settingsShell*ftpTypeText");
- /* add event handler for detecting changes */
- ! addTextEventHandler(hostText);
- addTextEventHandler(maxHitsText);
- addTextEventHandler(timeoutText);
- addTextEventHandler(retriesText);
- --- 111,117 ----
- ftpDirText = XtNameToWidget(toplevel,"settingsShell*ftpDirText");
- ftpTypeText = XtNameToWidget(toplevel,"settingsShell*ftpTypeText");
- /* add event handler for detecting changes */
- ! addTextEventHandler(setHostText);
- addTextEventHandler(maxHitsText);
- addTextEventHandler(timeoutText);
- addTextEventHandler(retriesText);
- ***************
- *** 125,130 ****
- --- 131,155 ----
-
- /* - - - - - - - - */
- /*
- + * initSettingsDefaults() : Stores away the values of the application
- + * resources at startup for use by the default-settings() action.
- + */
- + void
- + initSettingsDefaults()
- + {
- + defSearchType = appResources.searchType;
- + defSortType = appResources.sortType;
- + defArchieHost = XtNewString(appResources.archieHost);
- + defMaxHits = appResources.maxHits;
- + defTimeout = appResources.timeout;
- + defRetries = appResources.retries;
- + defNiceLevel = appResources.niceLevel;
- + defFtpDir = XtNewString(appResources.ftpDir);
- + defFtpType = XtNewString(appResources.ftpType);
- + }
- +
- + /* - - - - - - - - */
- + /*
- * initSettingsItems() : Sets the values in the settings editor from the
- * current state of the application resources.
- */
- ***************
- *** 135,144 ****
-
- setCurrentSearchType(appResources.searchType);
- setCurrentSortType(appResources.sortType);
- ! setText(hostText,appResources.archieHost);
- sprintf(buf,"%d",appResources.maxHits);
- setText(maxHitsText,buf);
- - setText(hostText,appResources.archieHost);
- sprintf(buf,"%d",appResources.timeout);
- setText(timeoutText,buf);
- sprintf(buf,"%d",appResources.retries);
- --- 160,168 ----
-
- setCurrentSearchType(appResources.searchType);
- setCurrentSortType(appResources.sortType);
- ! setText(setHostText,appResources.archieHost);
- sprintf(buf,"%d",appResources.maxHits);
- setText(maxHitsText,buf);
- sprintf(buf,"%d",appResources.timeout);
- setText(timeoutText,buf);
- sprintf(buf,"%d",appResources.retries);
- ***************
- *** 166,174 ****
-
- appResources.searchType = currentSearchType;
- appResources.sortType = currentSortType;
- ! if (hostText != NULL) {
- XtSetArg(args[0],XtNstring,&s);
- ! XtGetValues(hostText,args,ONE);
- if (strcmp(appResources.archieHost,s) != 0)
- appResources.archieHost = XtNewString(s); /* memory leak */
- }
- --- 190,198 ----
-
- appResources.searchType = currentSearchType;
- appResources.sortType = currentSortType;
- ! if (setHostText != NULL) {
- XtSetArg(args[0],XtNstring,&s);
- ! XtGetValues(setHostText,args,ONE);
- if (strcmp(appResources.archieHost,s) != 0)
- appResources.archieHost = XtNewString(s); /* memory leak */
- }
- ***************
- *** 191,200 ****
- XtSetArg(args[0],XtNstring,&s);
- XtGetValues(niceText,args,ONE);
- n = atoi(s);
- ! if (n < -32765) /* leave -32766 to -32768 alone */
- ! n = -32765;
- ! else if (n > 32767)
- ! n = 32767;
- appResources.niceLevel = n;
- }
- if (ftpDirText != NULL) {
- --- 215,224 ----
- XtSetArg(args[0],XtNstring,&s);
- XtGetValues(niceText,args,ONE);
- n = atoi(s);
- ! if (n < RDGRAM_MIN_PRI) /* leave -32766 to -32768 alone */
- ! n = RDGRAM_MIN_PRI;
- ! else if (n > RDGRAM_MAX_SPRI)
- ! n = RDGRAM_MAX_PRI;
- appResources.niceLevel = n;
- }
- if (ftpDirText != NULL) {
- ***************
- *** 219,233 ****
- /*ARGSUSED*/
- ACTION_PROC(defaultSettingsAction)
- {
- ! setCurrentSearchType(GfExact);
- ! setCurrentSortType(GfDefault);
- ! setText(hostText,"archie.mcgill.ca");
- ! setText(maxHitsText,"99");
- ! setText(timeoutText,"4");
- ! setText(retriesText,"3");
- ! setText(niceText,"0");
- ! setText(ftpDirText,".");
- ! setText(ftpTypeText,"binary");
- setChangedFlag(True);
- }
-
- --- 243,263 ----
- /*ARGSUSED*/
- ACTION_PROC(defaultSettingsAction)
- {
- ! char buf[8];
- !
- ! setCurrentSearchType(defSearchType);
- ! setCurrentSortType(defSortType);
- ! setText(setHostText,defArchieHost);
- ! sprintf(buf,"%d",defMaxHits);
- ! setText(maxHitsText,buf);
- ! sprintf(buf,"%d",defTimeout);
- ! setText(timeoutText,buf);
- ! sprintf(buf,"%d",defRetries);
- ! setText(retriesText,buf);
- ! sprintf(buf,"%d",defNiceLevel);
- ! setText(niceText,buf);
- ! setText(ftpDirText,defFtpDir);
- ! setText(ftpTypeText,defFtpType);
- setChangedFlag(True);
- }
-
- ***************
- *** 295,305 ****
- alert0("Incorrect number of arguments to set-host()");
- return;
- }
- ! if (hostText == NULL) {
- ! alert0("set-host() has no effect since hostText was not created");
- return;
- }
- ! setText(hostText,*params);
- setChangedFlag(True);
- }
-
- --- 325,335 ----
- alert0("Incorrect number of arguments to set-host()");
- return;
- }
- ! if (setHostText == NULL) {
- ! alert0("set-host() has no effect since setHostText was not created");
- return;
- }
- ! setText(setHostText,*params);
- setChangedFlag(True);
- }
-
- ***************
- *** 309,314 ****
- --- 339,345 ----
- /*ARGSUSED*/
- ACTION_PROC(setNiceLevelAction)
- {
- + char buf[8];
- int n;
-
- if (*num_params != ONE) {
- ***************
- *** 320,331 ****
- return;
- }
- n = atoi(*params);
- ! if (n < -32765) {
- alert1("Nice level too negative: %d",n);
- ! setText(niceText,"-32765");
- ! } else if (n > 32767) {
- alert1("Nice level too positive: %d",n);
- ! setText(niceText,"32767");
- } else {
- setText(niceText,*params);
- }
- --- 351,364 ----
- return;
- }
- n = atoi(*params);
- ! if (n < RDGRAM_MIN_PRI) {
- alert1("Nice level too negative: %d",n);
- ! sprintf(buf,"%d",RDGRAM_MIN_PRI);
- ! setText(niceText,buf);
- ! } else if (n > RDGRAM_MAX_PRI) {
- alert1("Nice level too positive: %d",n);
- ! sprintf(buf,"%d",RDGRAM_MAX_PRI);
- ! setText(niceText,buf);
- } else {
- setText(niceText,*params);
- }
- ***************
- *** 396,402 ****
- /* Memory leak */
- appResources.archieHost = XtNewString(*params);
- status1("Set host to %s",*params);
- ! setText(hostText,*params);
- }
-
- /*ARGSUSED*/
- --- 429,435 ----
- /* Memory leak */
- appResources.archieHost = XtNewString(*params);
- status1("Set host to %s",*params);
- ! setText(setHostText,*params);
- }
-
- /*ARGSUSED*/
- ***************
- *** 409,417 ****
- return;
- }
- n = atoi(*params);
- ! if (n < -32765) {
- alert1("Nice level too negative: %d -- not set",n);
- ! } else if (n > 32767) {
- alert1("Nice level too positive: %d -- not set",n);
- } else {
- appResources.niceLevel = n;
- --- 442,450 ----
- return;
- }
- n = atoi(*params);
- ! if (n < RDGRAM_MIN_PRI) {
- alert1("Nice level too negative: %d -- not set",n);
- ! } else if (n > RDGRAM_MAX_PRI) {
- alert1("Nice level too positive: %d -- not set",n);
- } else {
- appResources.niceLevel = n;
- *** /tmp/release17219/settings.h Tue Nov 12 16:55:59 1991
- --- settings.h Tue Oct 22 08:17:11 1991
- ***************
- *** 1,7 ****
- /*
- * settings.h : External defs for the settings panel
- *
- ! * George Ferguson, ferguson@cs.rochester.edu, 4 Sep 1991.
- *
- */
-
- --- 1,7 ----
- /*
- * settings.h : External defs for the settings panel
- *
- ! * George Ferguson, ferguson@cs.rochester.edu, 22 Oct 1991.
- *
- */
-
- ***************
- *** 8,14 ****
- #ifndef SETTINGS_H
- #define SETTINGS_H
-
- ! extern void settingsAction();
- extern void applySettingsAction();
- extern void defaultSettingsAction();
- extern void doneSettingsAction();
- --- 8,14 ----
- #ifndef SETTINGS_H
- #define SETTINGS_H
-
- ! extern void settingsAction(),initSettingsDefaults();
- extern void applySettingsAction();
- extern void defaultSettingsAction();
- extern void doneSettingsAction();
- *** /tmp/release17219/stcopy.c Tue Nov 12 16:56:02 1991
- --- stcopy.c Sat Nov 2 16:49:08 1991
- ***************
- *** 3,13 ****
- *
- * For copying and distribution information, please see the file
- * <copyright.h>.
- */
-
- #include <copyright.h>
- #include <stdio.h>
- ! #include <strings.h>
-
- char *stcopyr();
-
- --- 3,19 ----
- *
- * For copying and distribution information, please see the file
- * <copyright.h>.
- + *
- + * v1.2.0 - 09/17/91 (bpk) - added BULL & USG stuff, thanks to Jim Sillas
- */
-
- #include <copyright.h>
- #include <stdio.h>
- ! #if defined(USG) || defined(UTS) || defined(_AIX)
- ! # include <string.h>
- ! #else
- ! # include <strings.h>
- ! #endif
-
- char *stcopyr();
-
- ***************
- *** 29,35 ****
- if (!st) return(NULL);
- if (string_max < ++string_count) string_max = string_count;
-
- ! return strcpy(malloc(strlen(st) + 1), st);
- }
-
- /*
- --- 35,41 ----
- if (!st) return(NULL);
- if (string_max < ++string_count) string_max = string_count;
-
- ! return strcpy((char *)malloc(strlen(st) + 1), st);
- }
-
- /*
- ***************
- *** 81,86 ****
- --- 87,93 ----
- * STFREE takes a string that was returned by stcopy or stalloc
- * and frees the space that was allocated for the string.
- */
- + void
- stfree(st)
- char *st;
- {
- *** /tmp/release17219/support.c Tue Nov 12 16:56:06 1991
- --- support.c Sat Nov 2 16:49:17 1991
- ***************
- *** 4,10 ****
- * For copying and distribution information, please see the file
- * <copyright.h>.
- *
- ! * gf: 12 Sep 1991: Changed in include regex.h rather than regex.c
- */
-
- /*
- --- 4,12 ----
- * For copying and distribution information, please see the file
- * <copyright.h>.
- *
- ! * v1.2.1 - 09/23/91 (gf) - made it use regex.h---much nicer
- ! * v1.2.0 - 09/17/91 (bpk) - added BULL & USG stuff, thanks to Jim Sillas
- ! * v1.1.1 - 08/30/91 (bpk) - added VMS support; cast index()
- */
-
- /*
- ***************
- *** 13,27 ****
-
- #include <copyright.h>
- #include <stdio.h>
- ! #include <strings.h>
- #include <errno.h>
- - #include <netdb.h>
-
- ! #ifdef AUX
- ! #include <sys/types.h>
- ! #endif
- ! #include <sys/file.h>
- ! #include <sys/param.h>
-
- #include <pfs.h>
- #include <pprot.h>
- --- 15,41 ----
-
- #include <copyright.h>
- #include <stdio.h>
- ! #if defined(USG) || defined(UTS) || defined(_AIX)
- ! # include <string.h>
- ! #else
- ! # include <strings.h>
- ! #endif
- !
- #include <errno.h>
-
- ! #ifdef VMS
- ! # ifdef WALLONGONG
- ! # include "twg$tcp:[netdist.include]netdb.h"
- ! # else /* Multinet */
- ! # include "multinet_root:[multinet.include]netdb.h"
- ! # endif
- ! # include <vms.h>
- ! #else /* not VMS */
- ! # include <netdb.h>
- ! # include <sys/types.h>
- ! # include <sys/file.h>
- ! # include <sys/param.h>
- ! #endif /* VMS */
-
- #include <pfs.h>
- #include <pprot.h>
- ***************
- *** 30,45 ****
- #include <pauthent.h>
- #include <pmachine.h>
-
- int pfs_enable = PMAP_ATSIGN;
- - char p_err_string[P_ERR_STRING_SZ];
-
- #ifndef FALSE
- ! #define TRUE 1
- ! #define FALSE 0
- #endif
-
- - #include "regex.h"
- -
- /*
- * wcmatch - Match string s against template containing widlcards
- *
- --- 44,58 ----
- #include <pauthent.h>
- #include <pmachine.h>
-
- + #include "regex.h"
- +
- int pfs_enable = PMAP_ATSIGN;
-
- #ifndef FALSE
- ! # define TRUE 1
- ! # define FALSE 0
- #endif
-
- /*
- * wcmatch - Match string s against template containing widlcards
- *
- ***************
- *** 55,60 ****
- --- 68,74 ----
- * NOTE: If template is NULL, will return TRUE.
- *
- */
- + int
- wcmatch(s,template)
- char *s;
- char *template;
- ***************
- *** 81,87 ****
- --- 95,107 ----
-
- if(re_comp(temp)) return(FALSE);
-
- + #ifdef AUX
- + if (re_exec(s) == (char *)NULL)
- + return 0;
- + return 1;
- + #else
- return(re_exec(s));
- + #endif
- }
-
- /*
- ***************
- *** 105,110 ****
- --- 125,131 ----
- *
- * RETURNS: Success, or UL_INSERT_ALREADY_THERE or UL_INSERT_SUPERSEDING
- */
- + int
- ul_insert(ul,vd,p)
- VLINK ul; /* Link to be inserted */
- VDIR vd; /* Directory to receive link */
- ***************
- *** 204,209 ****
- --- 225,231 ----
- *
- * RETURNS: Success, or VL_INSERT_ALREADY_THERE
- */
- + int
- vl_insert(vl,vd,allow_conflict)
- VLINK vl; /* Link to be inserted */
- VDIR vd; /* Directory to receive link */
- ***************
- *** 331,337 ****
- return(curline);
-
- /* Check remaining lines of s1 */
- ! while((curline = index(curline,'\n')) != NULL) {
- curline++;
- if(strncmp(curline,s2,s2len) == 0)
- return(curline);
- --- 353,359 ----
- return(curline);
-
- /* Check remaining lines of s1 */
- ! while((curline = (char *) index(curline,'\n')) != NULL) {
- curline++;
- if(strncmp(curline,s2,s2len) == 0)
- return(curline);
- ***************
- *** 384,390 ****
- char *s = s1; /* Temp pointer to string */
-
- /* Check for first character of s2 */
- ! while((s = index(s,*s2)) != NULL) {
- if(strncmp(s,s2,s2len) == 0)
- return(s);
- s++;
- --- 406,412 ----
- char *s = s1; /* Temp pointer to string */
-
- /* Check for first character of s2 */
- ! while((s = (char *) index(s,*s2)) != NULL) {
- if(strncmp(s,s2,s2len) == 0)
- return(s);
- s++;
- ***************
- *** 394,399 ****
- --- 416,422 ----
- return(NULL);
- }
-
- + int
- scan_error(erst)
- char *erst;
- {
- ***************
- *** 402,444 ****
- if(strncmp(erst,"NOT-A-DIRECTORY",15) == 0)
- return(DIRSRV_NOT_DIRECTORY);
-
- /* The rest start with "FAILURE" */
-
- ! if(strncmp(erst,"FAILURE",7) != 0)
- ! return(DIRSRV_BAD_FORMAT);
- !
- ! if(strncmp(erst,"FAILURE ",8) != 0)
- ! return(PFAILURE);
- !
- erst += 8;
- -
- - sscanf(erst, "%*s %[^\n]", p_err_string);
-
- /* Still to add */
- /* DIRSRV_AUTHENT_REQ 242 */
- /* DIRSRV_BAD_VERS 245 */
-
- if(strncmp(erst,"NOT-FOUND",9) == 0)
- ! return(DIRSRV_NOT_FOUND);
-
- ! if(strncmp(erst,"NOT-AUTHORIZED",13) == 0)
- ! return(DIRSRV_NOT_AUTHORIZED);
- !
- ! if(strncmp(erst,"ALREADY-EXISTS",14) == 0)
- ! return(DIRSRV_ALREADY_EXISTS);
- !
- ! if(strncmp(erst,"NAME-CONFLICT",13) == 0)
- ! return(DIRSRV_NAME_CONFLICT);
- !
- ! if(strncmp(erst,"SERVER-FAILED",13) == 0)
- ! return(DIRSRV_SERVER_FAILED);
- !
- !
- ! /* Use it whether it starts with FAILURE or not */
- ! if(strncmp(erst,"NOT-A-DIRECTORY",15) == 0)
- ! return(DIRSRV_NOT_DIRECTORY);
- !
- ! return(PFAILURE);
- }
-
- PATTRIB
- --- 425,497 ----
- if(strncmp(erst,"NOT-A-DIRECTORY",15) == 0)
- return(DIRSRV_NOT_DIRECTORY);
-
- + if(strncmp(erst,"UNIMPLEMENTED",13) == 0) {
- + perrno = DIRSRV_UNIMPLEMENTED;
- + sscanf(erst+13,"%*[^\n \t\r]%*[ \t]%[^\n]",p_err_string);
- + return(perrno);
- + }
- +
- + if(strncmp(erst,"WARNING ",8) == 0) {
- + erst += 8;
- + *p_warn_string = '\0';
- + sscanf(erst,"%*[^\n \t\r]%*[ \t]%[^\n]",p_warn_string);
- + /* Return values for warnings are negative */
- + if(strncmp(erst,"OUT-OF-DATE",11) == 0) {
- + pwarn = PWARN_OUT_OF_DATE;
- + return(PSUCCESS);
- + }
- + if(strncmp(erst,"MESSAGE",7) == 0) {
- + pwarn = PWARN_MSG_FROM_SERVER;
- + return(PSUCCESS);
- + }
- + pwarn = PWARNING;
- + sscanf(erst,"%[^\n]",p_warn_string);
- + return(PSUCCESS);
- + }
- + else if(strncmp(erst,"ERROR",5) == 0) {
- + if(*(erst+5)) sscanf(erst+6,"%[^\n]",p_err_string);
- + perrno = DIRSRV_ERROR;
- + return(perrno);
- + }
- /* The rest start with "FAILURE" */
- + else if(strncmp(erst,"FAILURE",7) != 0) {
- + /* Unrecognized - Give warning, but return PSUCCESS */
- + if(pwarn == 0) {
- + *p_warn_string = '\0';
- + pwarn = PWARN_UNRECOGNIZED_RESP;
- + sscanf(erst,"%[^\n]",p_warn_string);
- + }
- + return(PSUCCESS);
- + }
-
- ! if(strncmp(erst,"FAILURE ",8) != 0) {
- ! perrno = PFAILURE;
- ! return(perrno);
- ! }
- erst += 8;
-
- + sscanf(erst,"%*[^\n \t\r]%*[ \t]%[^\n]",p_err_string);
- +
- /* Still to add */
- /* DIRSRV_AUTHENT_REQ 242 */
- /* DIRSRV_BAD_VERS 245 */
-
- if(strncmp(erst,"NOT-FOUND",9) == 0)
- ! perrno = DIRSRV_NOT_FOUND;
- ! else if(strncmp(erst,"NOT-AUTHORIZED",13) == 0)
- ! perrno = DIRSRV_NOT_AUTHORIZED;
- ! else if(strncmp(erst,"ALREADY-EXISTS",14) == 0)
- ! perrno = DIRSRV_ALREADY_EXISTS;
- ! else if(strncmp(erst,"NAME-CONFLICT",13) == 0)
- ! perrno = DIRSRV_NAME_CONFLICT;
- ! else if(strncmp(erst,"SERVER-FAILED",13) == 0)
- ! perrno = DIRSRV_SERVER_FAILED;
- ! /* Use it whether it starts with FAILURE or not */
- ! else if(strncmp(erst,"NOT-A-DIRECTORY",15) == 0)
- ! perrno = DIRSRV_NOT_DIRECTORY;
- ! else perrno = PFAILURE;
-
- ! return(perrno);
- }
-
- PATTRIB
- ***************
- *** 529,535 ****
- nxtline(s)
- char *s; /* String to be searched */
- {
- ! s = index(s,'\n');
- if(s) return(++s);
- else return(NULL);
- }
- --- 582,588 ----
- nxtline(s)
- char *s; /* String to be searched */
- {
- ! s = (char *) index(s,'\n');
- if(s) return(++s);
- else return(NULL);
- }
- *** /dev/null Tue Nov 12 16:30:11 1991
- --- udp.c Sat Nov 2 13:54:45 1991
- ***************
- *** 0 ****
- --- 1,81 ----
- + /*
- + * udp - Check if UDP traffic is allowed on this host; we open port 1527 on
- + * a system (default of cs.widener.edu), which is expecting it; the
- + * date is output (e.g. very similar to the daytime service). This
- + * will conclusively tell us if UDP traffic on ports > 1000 is allowed.
- + *
- + * It should print out the date if UDP traffic's not blocked on your
- + * system. If it just hangs, try these tests too:
- + * a. run it with -d (e.g. "udp -d"); that goes to the normal UDP port
- + * to print the date. If it works, then you can be sure that any
- + * UDP traffic > port 1000 is blocked on your system.
- + * b. if it hangs too, try "telnet 147.31.254.130 13" and see if
- + * _that_ prints the date; if it doesn't, it's another problem (your
- + * network can't get to me, e.g.).
- + *
- + * Compile by: cc -o udp udp.c
- + *
- + * Brendan Kehoe, brendan@cs.widener.edu, Oct 1991.
- + */
- +
- + #include <stdio.h>
- + #include <sys/types.h>
- + #include <sys/socket.h>
- + #include <netinet/in.h>
- + #include <arpa/inet.h>
- +
- + #define SIZE 2048
- + #define HOST "147.31.254.130" /* cs.widener.edu */
- + #define PORT 1527
- +
- + main (argc, argv)
- + int argc;
- + char **argv;
- + {
- + int s, len;
- + struct sockaddr_in server, sa;
- + char buf[SIZE];
- +
- + if ((s = socket (AF_INET, SOCK_DGRAM, IPPROTO_UDP)) < 0)
- + {
- + perror ("socket()");
- + exit (1);
- + }
- +
- + bzero ((char *) &sa, sizeof (sa));
- + sa.sin_family = AF_INET;
- + sa.sin_addr.s_addr = htonl (INADDR_ANY);
- + sa.sin_port = htons (0);
- +
- + if (bind (s, (struct sockaddr *) &sa, sizeof (sa)) < 0)
- + {
- + perror ("bind()");
- + exit (1);
- + }
- +
- + bzero ((char *) &server, sizeof (server));
- + server.sin_family = AF_INET;
- + server.sin_addr.s_addr = inet_addr (HOST);
- + if (argc > 1 && strcmp(*(argv + 1), "-d") == 0)
- + server.sin_port = htons ((unsigned short) 13);
- + else
- + server.sin_port = htons ((unsigned short) PORT);
- +
- + /* yoo hoo, we're here .. */
- + if (sendto (s, "\n", 1, 0, &server, sizeof (server)) < 0)
- + {
- + perror ("sendto()");
- + exit (1);
- + }
- +
- + /* slurp */
- + len = sizeof (server);
- + if (recvfrom (s, buf, sizeof (buf), 0, &server, &len) < 0)
- + {
- + perror ("recvfrom");
- + exit (1);
- + }
- +
- + printf ("%s", buf);
- + close (s);
- + }
- *** /tmp/release17219/vl_comp.c Tue Nov 12 16:56:18 1991
- --- vl_comp.c Mon Oct 21 12:57:51 1991
- ***************
- *** 24,29 ****
- --- 24,30 ----
- * native filenametype, native filename. The only time
- * the name will not exist if if the link is a union link.
- */
- + int
- vl_comp(vl1,vl2)
- VLINK vl1;
- VLINK vl2;
- ***************
- *** 53,58 ****
- --- 54,60 ----
- * RETURNS: 1 if equal, 0 if not equal
- *
- */
- + int
- vl_equal(vl1,vl2)
- VLINK vl1;
- VLINK vl2;
- *** /tmp/release17219/vlalloc.c Tue Nov 12 16:56:21 1991
- --- vlalloc.c Mon Oct 21 12:58:05 1991
- ***************
- *** 57,62 ****
- --- 57,63 ----
- * VLFREE takes a pointer to a VLINK structure and adds it to
- * the free list for later reuse.
- */
- + void
- vlfree(vl)
- VLINK vl;
- {
- ***************
- *** 92,97 ****
- --- 93,99 ----
- * VLINK structures. It is used to free an entrie list of VLINK
- * structures.
- */
- + void
- vllfree(vl)
- VLINK vl;
- {
- *** /tmp/release17219/xarchie.c Tue Nov 12 16:56:25 1991
- --- xarchie.c Tue Nov 12 12:50:32 1991
- ***************
- *** 10,16 ****
- * Finally, it provides the generic setText(), setLabel(), and status*()
- * routines which could go just about anywhere.
- *
- ! * George Ferguson, ferguson@cs.rochester.edu, 12 Sep 1991.
- *
- */
- #include <stdio.h>
- --- 10,16 ----
- * Finally, it provides the generic setText(), setLabel(), and status*()
- * routines which could go just about anywhere.
- *
- ! * George Ferguson, ferguson@cs.rochester.edu, 12 Nov 1991.
- *
- */
- #include <stdio.h>
- ***************
- *** 33,38 ****
- --- 33,39 ----
- #include "classnames.h"
- #include "db.h"
- #include "actions.h"
- + #include "settings.h"
- #include "patchlevel.h"
-
- /* - - - - - - - - */
- ***************
- *** 40,46 ****
- * Functions defined in this file:
- */
- int main();
- - void doPendingEvents();
- void initWidgetsFromString();
- void displayHostInfo(), clearHostInfo();
- void displayLocationInfo(), clearLocationInfo();
- --- 41,46 ----
- ***************
- *** 49,55 ****
- void status0(), status1(), status2();
- void fail0(), fail1();
-
- ! static void initGraphics(), initWidgets();
- static void selectItem();
- static void syntax();
-
- --- 49,55 ----
- void status0(), status1(), status2();
- void fail0(), fail1();
-
- ! static void initGraphics(), initWidgets(), initErrorHandlers();
- static void selectItem();
- static void syntax();
-
- ***************
- *** 67,72 ****
- --- 67,73 ----
- Widget toplevel;
- Widget hostList,locationList,fileList;
- Widget searchText;
- + Widget queryButton,abortButton; /* global since changes sensitivity */
-
- static Widget statusText;
- static Widget hostText,locationText,fileText,sizeText,modesText,dateText;
- ***************
- *** 88,99 ****
- static XtResource resources[] = {
- { "widgets", "Widgets", XtRString, sizeof(String),
- XtOffset(AppResources *,widgets), XtRImmediate, "" },
- { "searchType", "SearchType", GfRSearchType, sizeof(SearchType),
- XtOffset(AppResources *,searchType), XtRImmediate, (XtPointer)GfExact },
- { "sortType", "SortType", GfRSortType, sizeof(SortType),
- XtOffset(AppResources *,sortType), XtRImmediate, (XtPointer)GfDefault },
- { "archieHost", "ArchieHost", XtRString, sizeof(String),
- ! XtOffset(AppResources *,archieHost), XtRImmediate, "archie.mcgill.ca" },
- { "maxHits", "MaxHits", XtRInt, sizeof(int),
- XtOffset(AppResources *,maxHits), XtRImmediate, (XtPointer)99 },
- { "offset", "Offset", XtRInt, sizeof(int),
- --- 89,102 ----
- static XtResource resources[] = {
- { "widgets", "Widgets", XtRString, sizeof(String),
- XtOffset(AppResources *,widgets), XtRImmediate, "" },
- + { "menus", "Menus", XtRString, sizeof(String),
- + XtOffset(AppResources *,menus), XtRImmediate, "" },
- { "searchType", "SearchType", GfRSearchType, sizeof(SearchType),
- XtOffset(AppResources *,searchType), XtRImmediate, (XtPointer)GfExact },
- { "sortType", "SortType", GfRSortType, sizeof(SortType),
- XtOffset(AppResources *,sortType), XtRImmediate, (XtPointer)GfDefault },
- { "archieHost", "ArchieHost", XtRString, sizeof(String),
- ! XtOffset(AppResources *,archieHost), XtRImmediate, "archie.sura.net" },
- { "maxHits", "MaxHits", XtRInt, sizeof(int),
- XtOffset(AppResources *,maxHits), XtRImmediate, (XtPointer)99 },
- { "offset", "Offset", XtRInt, sizeof(int),
- ***************
- *** 112,117 ****
- --- 115,125 ----
- XtOffset(AppResources *,debugLevel), XtRImmediate, (XtPointer)0 },
- { "settingsWidgets", "SettingsWidgets", XtRString, sizeof(String),
- XtOffset(AppResources *,settingsWidgets), XtRImmediate, "" },
- + { "saveFormatOneLine", "SaveFormatOneLine", XtRBoolean, sizeof(Boolean),
- + XtOffset(AppResources *,saveFormatOneLine), XtRImmediate,
- + (XtPointer)False },
- + { "expert", "Expert", XtRBoolean, sizeof(Boolean),
- + XtOffset(AppResources *,expert), XtRImmediate, (XtPointer)False },
- };
-
- /*
- ***************
- *** 129,141 ****
- { "-sort", ".sortType", XrmoptionSepArg, (XtPointer)"default" },
- { "-t", ".sortType", XrmoptionNoArg, (XtPointer)"invdate" },
- { "-host", ".archieHost", XrmoptionSepArg,
- ! (XtPointer)"archie.mcgill.ca" },
- { "-maxhits", ".maxHits", XrmoptionSepArg, (XtPointer)"99" },
- { "-offset", ".offset", XrmoptionSepArg, (XtPointer)"0" },
- { "-nice", ".niceLevel", XrmoptionSepArg, (XtPointer)"0" },
- { "-N", ".niceLevel", XrmoptionSepArg, (XtPointer)"0" },
- ! { "-debug", ".debugLevel", XrmoptionNoArg, (XtPointer)"1" },
- { "-D", ".debugLevel", XrmoptionSepArg, (XtPointer)"1" },
- };
-
- /*
- --- 137,150 ----
- { "-sort", ".sortType", XrmoptionSepArg, (XtPointer)"default" },
- { "-t", ".sortType", XrmoptionNoArg, (XtPointer)"invdate" },
- { "-host", ".archieHost", XrmoptionSepArg,
- ! (XtPointer)"archie.sura.net" },
- { "-maxhits", ".maxHits", XrmoptionSepArg, (XtPointer)"99" },
- { "-offset", ".offset", XrmoptionSepArg, (XtPointer)"0" },
- { "-nice", ".niceLevel", XrmoptionSepArg, (XtPointer)"0" },
- { "-N", ".niceLevel", XrmoptionSepArg, (XtPointer)"0" },
- ! { "-debug", ".debugLevel", XrmoptionSepArg, (XtPointer)"1" },
- { "-D", ".debugLevel", XrmoptionSepArg, (XtPointer)"1" },
- + { "-expert", ".expert", XrmoptionNoArg, (XtPointer)"True" },
- };
-
- /*
- ***************
- *** 156,162 ****
- int argc;
- char **argv;
- {
- ! char buf[32];
-
- progname = argv[0];
- initGraphics(&argc,argv);
- --- 165,171 ----
- int argc;
- char **argv;
- {
- ! char buf[64];
-
- progname = argv[0];
- initGraphics(&argc,argv);
- ***************
- *** 165,177 ****
- XtDestroyApplicationContext(appContext);
- exit(1);
- }
- initWidgets();
- XtRealizeWidget(toplevel);
- /* Set window title to indicate version */
- ! sprintf(buf,"xarchie %d.%d",xarchieMajorVersion,xarchieMinorVersion);
- XStoreName(display,XtWindow(toplevel),buf);
- ! sprintf(buf,"Welcome to xarchie %d.%d",xarchieMajorVersion,
- ! xarchieMinorVersion);
- status0(buf);
- /* get the data structure for responses */
- db = newDb();
- --- 174,191 ----
- XtDestroyApplicationContext(appContext);
- exit(1);
- }
- + initErrorHandlers();
- + initSettingsDefaults();
- initWidgets();
- XtRealizeWidget(toplevel);
- /* Set window title to indicate version */
- ! sprintf(buf,"xarchie %d.%d%s",xarchieMajorVersion,
- ! xarchieMinorVersion,
- ! xarchieExtraVersion);
- XStoreName(display,XtWindow(toplevel),buf);
- ! sprintf(buf,"Welcome to xarchie %d.%d%s",xarchieMajorVersion,
- ! xarchieMinorVersion,
- ! xarchieExtraVersion);
- status0(buf);
- /* get the data structure for responses */
- db = newDb();
- ***************
- *** 180,191 ****
- /*NOTREACHED*/
- }
-
- ! void
- ! doPendingEvents()
- ! {
- ! while (XtAppPending(appContext))
- ! XtAppProcessEvent(appContext,XtIMAll);
- ! }
-
- static void
- initGraphics(argcp,argv)
- --- 194,201 ----
- /*NOTREACHED*/
- }
-
- ! /* - - - - - - - - */
- ! /* Initialization routines */
-
- static void
- initGraphics(argcp,argv)
- ***************
- *** 230,235 ****
- --- 240,249 ----
- sizeText = XtNameToWidget(toplevel,"*sizeText");
- modesText = XtNameToWidget(toplevel,"*modesText");
- dateText = XtNameToWidget(toplevel,"*dateText");
- + queryButton = XtNameToWidget(toplevel,"*queryButton");
- + abortButton = XtNameToWidget(toplevel,"*abortButton");
- + if (abortButton != NULL)
- + XtSetSensitive(abortButton,False);
- /* make the lists behave like a browser should */
- XtAddCallback(hostList,XtNcallback,selectItem,(XtPointer)1);
- XtAddCallback(locationList,XtNcallback,selectItem,(XtPointer)2);
- ***************
- *** 238,243 ****
- --- 252,259 ----
- clearList(hostList);
- clearList(locationList);
- clearList(fileList);
- + /* Some people crash when the EzMenu's are created earlier (puke-ola) */
- + initWidgetsFromString(appResources.menus,".menus");
- }
-
- #define ISSPACE(c) ((c) == ' ' || (c) == '\t' || (c) == '\n')
- ***************
- *** 308,313 ****
- --- 324,376 ----
- }
-
- /* - - - - - - - - */
- + /* The following functions attempt to provide information in the event of
- + * a crash. If you have trouble compiling them because of UNIX-isms in
- + * the signal handlers, then add -DDONT_CATCH_ERRORS to the definition
- + * of DEFINES in the Imakefile and re-make (or just #define it here).
- + */
- + #ifndef DONT_CATCH_ERRORS
- + static void crashHandler();
- + #endif /* DONT_CATCH_ERRORS */
- +
- + static void
- + initErrorHandlers()
- + {
- + #ifndef DONT_CATCH_ERRORS
- + signal(SIGBUS,crashHandler);
- + signal(SIGSEGV,crashHandler);
- + #endif /* DONT_CATCH_ERRORS */
- + }
- +
- + #ifndef DONT_CATCH_ERRORS
- + static void
- + crashHandler(sig)
- + int sig;
- + {
- + char *s;
- +
- + switch (sig) {
- + case SIGBUS: s = "SIGBUS"; break;
- + case SIGSEGV: s = "SIGSEGV"; break;
- + default: s = "UNKNOWN";
- + }
- + fprintf(stderr,"%s: caught a %s signal!\n",progname,s);
- + fprintf(stderr,"If a backtrace (using dbx or gdb or something) shows that the crash is\n");
- + fprintf(stderr,"is occurring in XtNameToWidget() or something similar, then before\n");
- + fprintf(stderr,"reporting an error, please check that your X distribution is up to date.\n");
- + fprintf(stderr,"Xarchie may not run under versions of X that are not at least X11R4\n");
- + fprintf(stderr,"with all fixes applied. Your copy of \".../include/X11/Intrinsic.h\"\n");
- + fprintf(stderr,"should have XConsortium revision number at least 1.139.\n");
- + fprintf(stderr,"If you still want to report an error, please indicate your hardware type,\n");
- + fprintf(stderr,"operating system, compiler, and your version of X and include a\n");
- + fprintf(stderr,"backtrace. Thanks.\n");
- + abort();
- + }
- +
- + #endif /* DONT_CATCH_ERRORS */
- +
- + /* - - - - - - - - */
- +
- /* Callback procedures */
-
- /*ARGSUSED*/
- ***************
- *** 412,418 ****
- }
- if (modesText != NULL)
- setText(modesText,filep->modes);
- ! if (sizeText != NULL)
- setText(dateText,filep->date);
- }
-
- --- 475,481 ----
- }
- if (modesText != NULL)
- setText(modesText,filep->modes);
- ! if (dateText != NULL)
- setText(dateText,filep->date);
- }
-
- ***************
- *** 470,476 ****
- {
- if (statusText != NULL)
- setText(statusText,str);
- - doPendingEvents();
- }
-
- void
- --- 533,538 ----
- *** /tmp/release17219/xarchie.h Tue Nov 12 16:56:29 1991
- --- xarchie.h Tue Nov 12 12:50:45 1991
- ***************
- *** 1,7 ****
- /*
- * xarchie.h : Definitions of the X globals and misc. functions
- *
- ! * George Ferguson, ferguson@cs.rochester.edu, 4 Sep 1991.
- *
- */
-
- --- 1,7 ----
- /*
- * xarchie.h : Definitions of the X globals and misc. functions
- *
- ! * George Ferguson, ferguson@cs.rochester.edu, 12 Nov 1991.
- *
- */
-
- ***************
- *** 16,23 ****
- extern Widget toplevel;
- extern Widget hostList,locationList,fileList;
- extern Widget searchText;
-
- - extern void doPendingEvents();
- extern void initWidgetsFromString();
- extern void displayHostInfo(), clearHostInfo();
- extern void displayLocationInfo(), clearLocationInfo();
- --- 16,23 ----
- extern Widget toplevel;
- extern Widget hostList,locationList,fileList;
- extern Widget searchText;
- + extern Widget queryButton,abortButton;
-
- extern void initWidgetsFromString();
- extern void displayHostInfo(), clearHostInfo();
- extern void displayLocationInfo(), clearLocationInfo();
- *** /tmp/release17219/xarchie.man Tue Nov 12 16:56:33 1991
- --- xarchie.man Tue Nov 12 12:51:08 1991
- ***************
- *** 1,9 ****
- .\"
- .\" xarchie : X11 browser interface to archie
- .\"
- ! .\" George Ferguson, ferguson@cs.rochester.edu, 12 Sep 1991.
- .\"
- ! .TH XARCHIE 1 "12 Sep 1991"
- .ds ]W U of Rochester
- .SH NAME
- xarchie \- X11 browser interface to archie
- --- 1,9 ----
- .\"
- .\" xarchie : X11 browser interface to archie
- .\"
- ! .\" George Ferguson, ferguson@cs.rochester.edu, 12 Nov 1991.
- .\"
- ! .TH XARCHIE 1 "12 Nov 1991"
- .ds ]W U of Rochester
- .SH NAME
- xarchie \- X11 browser interface to archie
- ***************
- *** 20,25 ****
- --- 20,26 ----
- [\-offset\ num]
- [\-nice lev\ |\ \-N\ lev]
- [\-debug\ num\ |\ \-D\ num]
- + [\-expert ]
- [\-help\ |\ -?]
- .in -8n
- .ad
- ***************
- *** 60,65 ****
- --- 61,77 ----
- itself, write to archie-l@cs.mcgill.ca. If you have questions about
- .IR Prospero ,
- write to info-prospero@isi.edu.
- + .PP
- + When reporting bugs, problems, suggestions or contributions, please
- + be sure to send them to the right place. Issues dealing with the X
- + interface should be sent to George Ferguson (ferguson@cs.rochester.edu).
- + Brendan Kehoe (brendan@cs.widener.edu) is charge of the archie clients
- + and the network stuff underlying
- + .IR xarchie ,
- + Cliff Neuman (bcn@isi.edu) is in charge of Prospero, and Alan Emtage
- + (bajan@cs.mcgill.edu) and the others are in charge of the
- + .I Archie
- + service itself.
- .SH USAGE
- .PP
- This section describes how to use
- ***************
- *** 72,80 ****
- .IR Xarchie 's
- display is divided into three horizontal areas. The top pane is a
- control panel. The "Quit" button exits
- ! .IR xarchie ,
- the "Query" button sends your search term (see below) to
- .IR Archie ,
- and the "Settings" button pops up a panel from which you can change
- various parameters of your queries. The buttons labelled "Search
- Type", "Sort Type", and "Nice Level" allow you to modify aspects of
- --- 84,96 ----
- .IR Xarchie 's
- display is divided into three horizontal areas. The top pane is a
- control panel. The "Quit" button exits
- ! .IR xarchie
- ! after prompting for confirmation (but see the
- ! .B \-expert
- ! option, below, or use Shift while clicking),
- the "Query" button sends your search term (see below) to
- .IR Archie ,
- + the "Abort" button allows to you to abort a long-running query,
- and the "Settings" button pops up a panel from which you can change
- various parameters of your queries. The buttons labelled "Search
- Type", "Sort Type", and "Nice Level" allow you to modify aspects of
- ***************
- *** 81,87 ****
- your search without using the Settings panel. Their use is described
- below under "The Settings Panel". The area labelled "Status" is
- updated to reflect the progress of your query when one is progress.
- ! The "Ftp" button is described below under "Retrieving Files".
- .SH "Querying"
- .PP
- You enter your "search term" (the string or expression you want to
- --- 97,104 ----
- your search without using the Settings panel. Their use is described
- below under "The Settings Panel". The area labelled "Status" is
- updated to reflect the progress of your query when one is progress.
- ! The "Save" and "Ftp" buttons are described below under "Retrieving
- ! Files".
- .SH "Querying"
- .PP
- You enter your "search term" (the string or expression you want to
- ***************
- *** 94,99 ****
- --- 111,124 ----
- Entries matching your search term will be displayed in middle pane of
- .IR xarchie 's
- display, which functions as a host-location-file browser.
- + .PP
- + If you find that your query is taking too long, you can abort it by
- + clicking on the "Abort" button when it is sensitive. Your query will
- + be aborted as soon as possible. You should note that while aborting a
- + query will allow you to enter a new query, it does not currently
- + remove the query from the server's queue. Thus aborting queries does
- + not reduce the load on the server -- just the opposite probably. Use
- + with discretion, like the rest of the service.
- .SH "The Browser"
- .PP
- The left-hand pane of the browser contains the names of hosts that have a
- ***************
- *** 122,130 ****
- pane lets you retrieve the file currently selected in the browser by
- anonymous ftp. This service is presently quite rudimentary. You must
- have selected a host, location, and file in the browser, and the
- ! selection must not be a directory. The file is retrieved to the
- ! current directory using binary mode. This functionality will be
- ! improved in the near future.
- .SH "The Settings Panel"
- .PP
- The panel popped up by clicking on the "Settings" button in the top
- --- 147,171 ----
- pane lets you retrieve the file currently selected in the browser by
- anonymous ftp. This service is presently quite rudimentary. You must
- have selected a host, location, and file in the browser, and the
- ! selection must not be a directory. The destination directory and mode
- ! of the file transfer can be set on the Settings panel, described below.
- ! This functionality will be improved in the near future.
- ! .PP
- ! To allow you to save the results of a query for later use, the button
- ! labelled "Save" in the top pane causes
- ! .I xarchie
- ! to write a file containing the information currently displayed in the
- ! browser. Clicking on this button prompts for the filename to save to,
- ! then writes the file. When clicked on with "Shift" held down, it uses
- ! the current search term with ".lst" appended. The format of the
- ! output file is controlled by the
- ! .B saveFormatOneLine
- ! resource, and the operation is actually performed by the
- ! .B save-to-file()
- ! action. Both of these are described below. Judicious use of "Save"
- ! will obviously help reduce the load on the
- ! .I Archie
- ! servers.
- .SH "The Settings Panel"
- .PP
- The panel popped up by clicking on the "Settings" button in the top
- ***************
- *** 171,182 ****
- .PP
- Clicking on the "Apply" button will apply the settings on the panel to
- .IR xarchie .
- ! Clicking on "Default" will reset the settings to their default values
- ! (but note that you will still have to apply them to have them take
- ! effect). Clicking on "Done" closes the Settings panel. A popup
- ! confirmer will appear if you did not apply your changes, allowing you
- ! to discard the changes or go back and apply them. Note that the
- ! "Apply" button is inactive until a change is made.
- .PP
- The menus available from the "Search Type", "Sort Type", and "Nice
- Level" buttons on the
- --- 212,225 ----
- .PP
- Clicking on the "Apply" button will apply the settings on the panel to
- .IR xarchie .
- ! Clicking on "Default" will reset the settings to the values they had
- ! when
- ! .I xarchie
- ! started (but note that you will still have to apply them to have
- ! them take effect). Clicking on "Done" closes the Settings panel. A
- ! popup confirmer will appear if you did not apply your changes,
- ! allowing you to discard the changes or go back and apply them. Note
- ! that the "Apply" button is inactive until a change is made.
- .PP
- The menus available from the "Search Type", "Sort Type", and "Nice
- Level" buttons on the
- ***************
- *** 298,303 ****
- --- 341,353 ----
- flag. This option corresponds to the
- .B debugLevel
- resource.
- + .IP "\fB-expert\fP"
- + Tells
- + .I xarchie
- + not to confirm operations like quitting. This option corresponds to
- + the
- + .B expert
- + resource.
- .IP "\fB-help\fP or \fB-?\fP"
- Prints the usage message summarizing
- .I xarchie
- ***************
- *** 389,394 ****
- --- 439,451 ----
- or
- .B \-D
- options.
- + .IP "\fBexpert\fP"
- + Tells
- + .I xarchie
- + not to confirm operations like quitting. This resource can be set with
- + the
- + .B \-expert
- + option.
- .IP "\fBtimeout\fP"
- Sets the initial timeout value, in seconds. The default is 4. This
- resource can be set on the Settings panel.
- ***************
- *** 407,412 ****
- --- 464,480 ----
- action will use the "type" command to set the transfer type before
- retrieving the file.
- This resource can be set on the Settings panel.
- + .IP "\fBsaveFormatOneLine\fP"
- + If True, then the file written by the
- + .B save-to-file()
- + action will have one line per entry, in the format
- + .ce
- + mode size date host:location/file
- + If False (the default), then the file format has hostnames starting at
- + the start of the line, location names indented one tab, and file
- + entries indented two tabs, all on separate lines. Hostnames and
- + locations are only printed once. The latter is more readable, the
- + former may be more useful if the output is to be used by a program.
- .IP "\fBwidgets\fP"
- Specifies the widget hierarchy, as described below. This should be a
- whitespace-separated list of
- ***************
- *** 416,421 ****
- --- 484,498 ----
- .I xarchie
- will fail with an error message if they are not. These are described
- in the next section.
- + .IP "\fBmenus\fP"
- + Due to problems with some versions of X, widgets of class EzMenu
- + must be created separately from the others. Thus any entries that
- + would normally go in the
- + .B widgets
- + resource with class EzMenu must instead be listed here. The format is
- + the same as for the
- + .B widgets
- + resource.
- .IP "\fBsettingsWidgets\fP"
- Specifies the widget hierarchy for the popup settings pane. These
- widgets are not created until they are needed. The format is the same
- ***************
- *** 441,449 ****
- Paned outerPaned
- Form buttonForm
- Command quitButton,queryButton
- ! Command ftpButton,searchButton
- ! Command sortButton,niceButton
- ! Command settingsButton
- Label,AsciiText status{Label,Text}
- Paned innerPaned
- Viewport hostView
- --- 518,527 ----
- Paned outerPaned
- Form buttonForm
- Command quitButton,queryButton
- ! Command abortButton
- ! Command saveButton,ftpButton
- ! Command searchButton,sortButton
- ! Command niceButton,settingButton
- Label,AsciiText status{Label,Text}
- Paned innerPaned
- Viewport hostView
- ***************
- *** 491,496 ****
- --- 569,589 ----
- off to
- .I archie .
- The
- + .I abortButton
- + invokes the
- + .B abort()
- + action to interrupt the current query. (Note that
- + .I xarchie
- + looks for a widget with this name to sensitize and desensitize, so if
- + you want the button be active only during queries, be sure to create it
- + with this name.)
- + The
- + .I saveButton
- + widget invokes the
- + .B save-to-file()
- + action which writes the currently displayed results to a file.
- + Without "Shift", it prompts for the filename. With "Shift" it uses the
- + current search term with ".lst" appended. The
- .I ftpButton
- invokes the
- .B ftp()
- ***************
- *** 633,641 ****
- "-now" forms of these actions (see below), thereby removing the need
- to "Apply" the changes.
- .PP
- ! Finally, two types of popup windows can appear. An Alert box signals
- ! an error and blocks until clicked in; a Confirm box allows the user to
- ! make a Yes/No decision. These have widget hierarchies
-
- .na
- .nf
- --- 726,735 ----
- "-now" forms of these actions (see below), thereby removing the need
- to "Apply" the changes.
- .PP
- ! Finally, three types of popup windows can appear. An Alert box signals
- ! an error and blocks until clicked in, a Confirm box allows the user to
- ! make a Yes/No decision, and a Dialog box allows the user to enter a
- ! string. These have widget hierarchies:
-
- .na
- .nf
- ***************
- *** 642,655 ****
- TransientShell alertShell
- Dialog alertDialog
- Command okButton
- ! .fi
- ! .ad
- ! and
- ! .na
- ! .nf
- TransientShell confirmShell
- Dialog confirmDialog
- Command yesButton,noButton
- .fi
- .ad
- respectively.
- --- 736,749 ----
- TransientShell alertShell
- Dialog alertDialog
- Command okButton
- !
- TransientShell confirmShell
- Dialog confirmDialog
- Command yesButton,noButton
- +
- + TransientShell dialogShell
- + Dialog dialogDialog
- + Command okButton,cancelButton
- .fi
- .ad
- respectively.
- ***************
- *** 667,674 ****
- .IP \fBquit()\fP
- Exit
- .IR xarchie .
- ! By default this is performed by clicking on the "Quit" button
- ! (\fIquitButton\fP).
- .IP \fBquery()\fP
- Send the current contents of the "Search Term" text widget
- (\fIsearchText\fP) to
- --- 761,772 ----
- .IP \fBquit()\fP
- Exit
- .IR xarchie .
- ! Prompts for confirmation unless either an argument is passed to the
- ! action procedure or the
- ! .B expert
- ! resource is True. By default this is called without arguments by
- ! clicking on the "Quit" button (\fIquitButton\fP), and is called with
- ! an argument to force exit if Shift-"Quit" is used.
- .IP \fBquery()\fP
- Send the current contents of the "Search Term" text widget
- (\fIsearchText\fP) to
- ***************
- *** 675,680 ****
- --- 773,791 ----
- .IR xarchie .
- By default this is performed by clicking on the "Query" button
- (\fIqueryButton\fP).
- + .IP \fBabort()\fP
- + Aborts the current query at the soonest possible time. Has no effect
- + is a query is not currently being processed. By default, this is
- + performed by clicking on the "Abort" button (\fIabortButton\fP).
- + .IP \fBsave-to-file()\fP
- + Writes a file containing the information displayed in the browser.
- + With no arguments, this action prompts for the filename to write to.
- + With one argument, the argument is passed to
- + .IR sprintf (3)
- + together with the current search term to form the filename. By
- + default, the "Save" button invokes \fBsave-to-file()\fP to prompt for
- + the filename and Shift-"Save" invokes
- + \fBsave-to-file(\fP"%s.lst"\fB)\fP.
- .IP \fBftp()\fP
- Attempts to fetch the currently selected file by anonymous ftp. It is
- currently an error if a file is not selected, and the selected file
- ***************
- *** 728,733 ****
- --- 839,862 ----
- .IP \fBset-nice-level-now()\fP
- Sets the niceLevel immediately without waiting for
- .BR apply\-settings() .
- + .PP
- + \fBalert-ok()\fP
- + .br
- + \fBconfirm-yes()\fP
- + .br
- + \fBconfirm-no()\fP
- + .br
- + \fBdialog-ok()\fP
- + .br
- + \fBdialog-cancel()\fP
- + .in +\n(INu
- + These actions are registered for use with the Alert, Confirm, and
- + Dialog popups. Registering them for widgets that are not popups will
- + at best have no effect. These actions are invoked by default by the
- + buttons on the popups. As well, by default pressing Return in a
- + Dialog popup's "value" sub-widget (where the value is entered) invokes
- + \fBdialog-ok()\fP.
- + .in
- .SH ENVIRONMENT
- .PP
- XAPPLRESDIR - Directory containing
- ***************
- *** 791,794 ****
- The
- .I archie
- service was conceived of and implemented by Alan Emtage
- ! (bajan@cs.mcgill.ca) and Peter Deutsch (peterd@expresso.cc.mcgill.ca).
- --- 920,925 ----
- The
- .I archie
- service was conceived of and implemented by Alan Emtage
- ! (bajan@cs.mcgill.ca), Peter Deutsch (peterd@expresso.cc.mcgill.ca),
- ! and Bill Heelan (wheelan@cs.mcgill.ca).
- !
-