home *** CD-ROM | disk | FTP | other *** search
- From: kent@sparky.imd.sterling.com (Kent Landfield)
- Newsgroups: comp.sources.misc
- Subject: v19i019: rkive - Usenet sources archiver, Patch01a/3
- Message-ID: <1991May9.175613.19441@sparky.IMD.Sterling.COM>
- Date: 9 May 91 17:56:13 GMT
- Approved: kent@sparky.imd.sterling.com
-
- Submitted-by: Kent Landfield <kent@sparky.imd.sterling.com>
- Posting-number: Volume 19, Issue 19
- Archive-name: rkive/patch01a
- Patch-To: rkive: Volume 17, Issue 17-22
-
- The following three parts make up the first patch to rkive and article
- release 2. The highlights of this patch are:
-
- Local configuration is like its done in B News with a localize.sh.
-
- An INSTALL file has been added describing how to make localize.sh scripts
- and discusses just what some of the configuration parameters are/mean.
-
- Supports the new X-Md4-Signature: header in use in comp.sources.misc.
-
- rkive can now accept articles on standard input... Yes, this time it
- is real... :-) A sys.cf configuration file is supplied as a sample
- configuration file for sys file usage.
-
- article now allows the user to specify articles without a compression
- suffix and it will determine if it deals with the article transparently.
-
- Fixed some NNTP usage bugs with external archiving.
- Fixed some Global External-Archiving usage bugs.
-
- Added support for a relative path filename from where the BASEDIR to the
- actual storage location. This is done with a %Z format character.
-
- Added the ability for external command archiving to use the NNTP temporary
- transfer file if they need to. Added the $F specification character to
- support this.
-
- Updated update_netdocs with some new FAQs. Also shut off "set -x" as the
- default. That was left over from debugging... :-)
-
- I would like to thank the following people for pointing me in the right
- direction and helping out with fixes and ideas!
-
- John Beaudin <uunet!utai!mnetor!tmsoft!beaudin!john>
- Chip Rosenthal <uunet!cs.utexas.edu!chinacat!chip>
- Chet Wood <uunet!apple.com!arc!chet>
- Dean Brooks <uunet!coplex!dean>
-
- Patch Installation Instructions:
-
- - copy the three parts to the rkive sources directory,
- - cd to the rkive sources directory,
- - unshar the three parts to this patch, and
- - patch the sources by executing "patch < patch2.1".
-
- Please read the INSTALL file that describes how to create a localize.sh
- script for making local configuration changes to rkive sources.
-
- -----------
- For those who do not know what rkive is ...
- -----------
- rkive - archive USENET source groups
-
- rkive is used to archive USENET sources groups, as well as general newsgroups,
- to an alternate location as specified in an rkive configuration file. Archives
- can be maintained in different ways:
-
- Archive-Name, Volume-Issue, Comp-Archives, Chronological,
- Article-Number, Only-Archive-Name, and External-Command.
-
- Archive-Name and Volume-Issue methods are for use in archiving the moderated
- sources groups specificially. Comp-Archives is used to archive the newsgroup
- comp.archives. Chronological and Article-Number can be used for general
- newsgroups. The Only-Archive-Name: method of archiving works well for groups
- such as alt.sources. It only archives files that have Archive-name: lines.
- The External-Command allows rkive to use a script/program specified by the
- archive administrator to do the actual storage of the packages (unshar in a
- script, script to maintain periodic postings) while rkive writes the log and
- index file entries, etc. There is an example of an External-Command script
- included. update_netdocs maintains a set of periodic postings in a common area
- for all to access. This is an example of a good usage of external command
- archiving but it is only an example. If someone wants to do and contribute
- a real implementation in perl I'll gladly include it in future releases.
-
- By means of a configuration file, the archive administrator is able to control
- how archiving is performed. The administrator can specify on a per newsgroup
- basis:
-
- o The type of the archiving, such as Volume-Issue
- Archive-Name, Article Number archiving, etc,
- o Where the newsgroup archive is to be stored on disk,
- o The location of log file for the newsgroup,
- o The format of the logfile records,
- o The location of index file for the newsgroup,
- o The format of the index file records,
- o A list of users to be sent mail when an article is archived,
- o The owner/group and modes of each archived member,
- o Only archive articles whose header lines match a pattern,
- o The method for archiving patches, whether with the package or inline,
- o An external program to deal with the located articles,
- o Whether the article is to be verified by some checksum mechanism,
- o Whether the archived members should be compressed or not and
- o Whether the news spool directory is local or accessed via NNTP
-
- article - print formatted news article header information
-
- article allows the user to display information contained in news
- article headers. This information includes the auxiliary headers
- added by the moderators of the source newsgroups. article takes
- the names of article files from standard input or as specified on
- the command line. The user can select almost any information contained
- within a news article header and can then specify the way in which
- the information should be displayed. The format that the user specifies
- is much like that of a C printf statement. article selects, formats,
- and prints its output under control of the format. The format is a
- character string that contains two types of objects: plain characters,
- which are copied directly to the output stream, and selection specifications.
- Specifying a selection results in fetching the selected items from
- the news article. This tool is extremely useful when dealing with
- the news system in general as well as dealing with archives. article
- knows about compression facilities and can deal directly with a compressed
- set of archive files instead of having to "zcat filename | article".
-
- Please see the README in the rkive version 2 release posted to the
- newsgroup comp.sources.misc for more information on rkive and article's
- capabilities.
-
- -Kent+
- ----
- #!/bin/sh
- # This is a shell archive (produced by shar 3.49)
- # To extract the files from this archive, save it to a file, remove
- # everything above the "!/bin/sh" line above, and type "sh file_name".
- #
- # made 05/09/1991 15:44 UTC by kent@sparky.IMD.Sterling.COM
- # Source directory /s/zoro/home/kent/projects/archive/patch
- #
- # existing files will NOT be overwritten unless -c is specified
- #
- # This is part 1 of a multipart archive
- # do not concatenate these parts, unpack them in order with /bin/sh
- #
- # This shar contains:
- # length mode name
- # ------ ---------- ------------------------------------------
- # 11561 -rw-rw-r-- INSTALL
- # 7882 -rw-rw-r-- Makefile.dst
- # 2596 -rw-r--r-- localize.smpl
- # 991 -r--r--r-- sys.cf
- # 10930 -r--r--r-- rkive.h.dst
- # 91391 -rw-rw-r-- patch2.1
- #
- if test -r _shar_seq_.tmp; then
- echo 'Must unpack archives in sequence!'
- echo Please unpack part `cat _shar_seq_.tmp` next
- exit 1
- fi
- # ============= INSTALL ==============
- if test -f 'INSTALL' -a X"$1" != X"-c"; then
- echo 'x - skipping INSTALL (File already exists)'
- rm -f _shar_wnt_.tmp
- else
- > _shar_wnt_.tmp
- echo 'x - extracting INSTALL (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'INSTALL' &&
- @(#)INSTALL 1.1 5/9/91
- The first step to installing rkive is to customize the configuration to
- suit your local needs. In the past, you had to take a fresh distribution
- and edit the rkive.h file and Makefile to suit local preferences. If you
- had many local changes, or didn't record the local changes, upgrading
- could be a pain...
- X
- Nearly every site will need to make changes to the rkive configuration
- as distributed. Local configuration of the rkive software requires you
- to edit a couple files. The rkive.h and Makefile files must be created
- from their templates rkive.h.dst and Makefile.dst. You should create a
- shell script called localize.sh which copies the files and makes local
- changes to the copies. A sample localize shell script can be found in
- localize.smpl.
- X
- The localize.sh shell script you create should copy rkive.h.dst to rkive.h,
- and copy Makefile.dst to Makefile. It should chmod the files so that your
- script can make changes and write the changes out. It should then invoke
- ed(1) on the files, making any necessary local changes. Use localize.smpl
- as a reference if you need to. The easiest thing to do is just copy the
- localize.smpl to localize.sh and make your local changes to that. It contains
- just about every configurable parameter specified in rkive.h and the Makefile.
- Just delete the entries that you don't want to change and modify the ones
- you do...
- X
- Once you're finished editing localize.sh, create a rkive.h and Makefile
- tailored for your site with the command
- X
- X sh ./localize.sh
- X
- Inspect rkive.h and Makefile to ensure that all your local customizations
- got into your final versions. If you saw a "?" when you ran localize.sh,
- one or both of the files is certainly wrong. It's a good idea to anchor
- the patterns in localize.sh's ed(1) scripts. For instance, use /^BINDIR/
- instead of /BINDIR/.
- X
- Now that you know how to do it, just what things do you need to consider
- when customizing rkive ?
- X
- RKIVE.H:
- X
- Ownership: (OWNER, GROUP)
- X Who will the default owner of the archives be ? You might want to
- X consider setting up a user and group just to support the archives for
- X a little added security... Values specified in rkive.h are overridden
- X by values specified in the rkive.cf configuration file.
- X
- X
- File Modes: (MODES, DIR_MODE)
- X What will the default modes of the files be when created. What will
- X the default directory modes be on creation ? I personally like to keep
- X the archives as just that. Let the others copy the files to another location
- X to unpack. For that reason, I keep file creation as readable by all,
- X writable by none... Values specified in rkive.h are overridden by
- X values specified in the rkive.cf configuration file.
- X
- X
- Mailer: (SUBJECT_LINE, MAIL)
- X If you have a smart mailer that supports a "-s subject" command
- X and you wish to have the subject line added when archived mail
- X is sent, define SUBJECT_LINE. Specify which mail program to use
- X to send the mail by setting MAIL.
- X
- X
- Problem Article Storage: (PROBLEMS_DIR)
- X The PROBLEMS_DIR is the default directory to use in the event
- X problems are encountered such as duplicate article names and the
- X execution flags do not specify overwriting. The new, inbound article
- X is stored in the PROBLEMS_DIR in problems_dir/newsgroup/volume/filename
- X so that the administrator can review and fix the problem whenever time
- X becomes available... The PROBLEMS_DIR define is used only if the
- X administrator has not specified the PROBLEMS path variable inside of
- X the LOCATION (rkive.cf config) file.
- X
- X
- News Spool Directory: (SPOOLDIR)
- X I am sure you can figure this one out...
- X
- X
- Location of the Rkive Configuration file: (LOCATION)
- X This specifies the location of the default rkive configuration
- X file, rkive.cf.
- X
- X
- Dealing With Repostings: (ADD_REPOST_SUFFIX, REPOST_SUFFIX, MV_ORIGINAL)
- X If ADD_REPOST_SUFFIX is defined, all reposts will have the
- X string specified in REPOST_SUFFIX appended to the archive
- X filename so that a repost of elm/part07 would appear in
- X the archive as elm/part07-repost prior to any compression.
- X *** CAUTION ***
- X This should *not* be used on a filesystem with 14
- X character file name limits. If you are going to be
- X making your archive available to the general community
- X do *not* use this. The portability of filenames is
- X greatly reduced. This has been added with much hesitation.
- X The rational was that there was no reason to punish/limit
- X the functionality just because of limitations of a specific
- X "brand" of unix and since that "brand" was correcting its
- X "error" in the future, why not put it in now ? This is *NOT*
- X a configuration item on a per newsgroup basis. It might be
- X useful for Historical archiving using only Volume/Issue
- X archiving with no COMPRESSION.
- X
- X If MV_ORIGINAL is defined, the original article is placed into an
- X "original" directory within the problems directory (if duplicated).
- X The inbound reposted article is placed into the archive in the correct
- X position.
- X
- X If No Reposting Defines are specified, the inbound article is placed
- X into the archive in the correct position only if the initial article
- X is not in the archive. Otherwise the reposted article is placed in
- X the problems directory as a normal duplicate article is now.
- X
- X
- Volume Directory Basename: (VOLUME)
- X If you wish your volume directories to be Volume, VOL, vOLuMe
- X or any other such nonsense, change the VOLUME define.
- X
- X
- Zero Pad Volume Directory Names: (ZEROFILL)
- X A very small change to construct change the volume directory names
- X from "volume1" to "volume01". In this manner all of the archive
- X volume directories appear in lexical order instead of jumbled
- X together in directory listings.
- X
- X
- Removing Unnecessary Article Headers: (REDUCE_HEADERS)
- X If you wish to have the headers "trimmed" when the file is archived,
- X assure that REDUCE_HEADERS is defined. Currently all header lines that
- X are not either;
- X From:, Newsgroups:, Subject:, Message-ID: Approved:, and Date:
- X will be removed. See news_arc.c if you wish to add or subtract header
- X lines to keep. This can produce a savings of between 200 to 500 bytes
- X per archived article.
- X
- X
- Default Record Formats: (DEFAULT_INDEX_FORMAT, DEFAULT_LOG_FORMAT)
- X These two defines specify a default format for generating either
- X index or log file records in the event that there is no index or
- X log file format specified for either the newsgroup or for the global
- X default. See article.1 for a discussion of the different types of
- X selection characters available for use in the format specifications.
- X
- X
- How Many Newsgroups Are To Be Archived?: (NUM_NEWSGROUPS)
- X The size of the group array. If you are archiving the world
- X you might need to bump this up...
- X
- X
- Chronological Archiving Storage: (NO_MONTH_DIR)
- X The ifdef NO_MONTH_DIR is used to decide which way Chronological
- X archives are to be stored. By default for format is something like
- X
- X /usenet/alt/sources/volume89/Jun/890629.01
- X
- X If you wish not to have the month directory, define NO_MONTH_DIR
- X and the archives will be stored as
- X
- X /usenet/alt/sources/volume89/890629.01
- X
- X
- Which mkdir function do you want to use ?: (MKDIR, USE_SYSMKDIR)
- X Define MKDIR if there is a mkdir() function in your
- X system library (AT&T 5.2 or earlier systems are probably
- X out of luck..)
- X Define USE_SYSMKDIR if you wish to system off /bin/mkdir.
- X If you do not define either, the function makedir will
- X create the directory itself. PLEASE ASSURE THAT IT WILL
- X WORK FOR YOUR SYSTEM PRIOR TO USING IT... (Should work on
- X System 5.3 and prior SYSV systems.)
- X
- X
- MAKEFILE:
- X
- Do you wish to have this built with NNTP capabilities ?
- X This requires that you have networking libraries and the
- X NNTP source code available to you during compilation.
- X You will need to specify the base directory location of
- X the nntp sources using NNTPSRCDIR. If you wish debugging
- X turned on in NNTP, specify that using NNTPDEBUG. You should
- X not have to touch the NNTPFLAGS, NNTPSRCS and NNTPOBJS.
- X If you need EXCELAN networking support defined for nntp,
- X uncomment EXOSFLAGS and EXOSLIBS.
- X
- X
- Are you on a Sequent ?
- X If so, uncomment SFLAGS and since there is not getopt() function
- X available, uncomment GETOPTO and GETOPTC.
- X
- X
- X
- Is your system missing the getopt() function ?
- X Uncomment GETOPTO and GETOPTC.
- X
- X
- Which Compiler to use ?
- X Define your favorite C compiler using CC.
- X
- X
- Special Compilation Flags needed ?
- X Use FLAGS to set special flags like -g or -O or -Wall...
- X The list goes on...
- X
- X
- YACC Compilation support:
- X Set yacc flags using YFLAGS. Specify which yacc to use with YACC.
- X
- X
- Directory Access Routines Location:
- X rkive needs to have POSIX Compatible directory access routines.
- X If you do not have it builtin to your system libraries then specify
- X the -l option. If you use Doug Gwyn's routines, (or other compatible
- X routines) define the library in which they appear such as -lndir or
- X -lposix.
- X NOTE THE FOLLOWING PLEASE ...
- X I really need to make it clear that I do not want to cobble up
- X the sources with directory access methods for every different
- X flavor of unix. I did that with lc and it is truly ugly... :-(
- X If you don't believe me, look for yourself. I have adopted a policy
- X of using only the dirent directory access routines. Most vendors
- X are moving towards the POSIX directory access library compatibility
- X so it seemed like a good idea then and now. For the systems that do
- X not have that capability, I use Doug Gwyn's POSIX compatible directory
- X access library that was posted to c.s.unix. Its well worth installing
- X and its availability can help you out in more than just rkive.
- X I encourage you to send me patches for all you enhancements and fixes
- X but do not send me patches to add support for your directory routines.
- X
- X
- Additional Libraries:
- X If your system requires additional libraries or if you wish to
- X use shared libraries, add the -l declarations to LIBS below such
- X as -lc_s
- X
- X
- General Items:
- X LP, PR, and NROFF let you configure those items as local taste
- X suits you.
- X
- X
- Where To Put Rkive Executables:
- X Specify where you want to install the rkive executables by setting
- X BINDIR.
- X
- X
- Where To Put Rkive Support Files:
- X Rkive has a couple of support files such as the rkive.cf and
- X update_netdocs. You may want to put other rkive local external
- X commands somewhere are well. Use RKIVEDIR to specify where they
- X should go.
- X
- X
- **** NOTE ****
- X
- rkive can be called from the command line using the default rkive.cf or
- you can specify a different one to use. If you rkive both from the sys
- file and from cron or a command line you will most assuredly need more
- than one .cf file. You can use different configuration files to logically
- group operations by the time you want it run. An example might be that
- you want to use the update_netdocs script (or some other external command)
- to archive the monthly postings so that they are not checked each night.
- The point here is that you have a lot of flexibility here and it is worth
- you while to spend a little time deciding how you want to use rkive to
- best suit your individual site needs.
- X
- SHAR_EOF
- chmod 0664 INSTALL ||
- echo 'restore of INSTALL failed'
- Wc_c="`wc -c < 'INSTALL'`"
- test 11561 -eq "$Wc_c" ||
- echo 'INSTALL: original size 11561, current size' "$Wc_c"
- rm -f _shar_wnt_.tmp
- fi
- # ============= Makefile.dst ==============
- if test -f 'Makefile.dst' -a X"$1" != X"-c"; then
- echo 'x - skipping Makefile.dst (File already exists)'
- rm -f _shar_wnt_.tmp
- else
- > _shar_wnt_.tmp
- echo 'x - extracting Makefile.dst (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'Makefile.dst' &&
- ##########################################################
- #
- # @(#)Makefile.dst 2.3 5/9/91 - USENET Source Archiver
- #
- # This software is Copyright (c) 1989, 1990, 1991 by Kent Landfield.
- #
- # Permission is hereby granted to copy, distribute or otherwise
- # use any part of this package as long as you do not try to make
- # money from it or pretend that you wrote it. This copyright
- # notice must be maintained in any copy made.
- #
- # Use of this software constitutes acceptance for use in an AS IS
- # condition. There are NO warranties with regard to this software.
- # In no event shall the author be liable for any damages whatsoever
- # arising out of or in connection with the use or performance of this
- # software. Any use of this software is at the user's own risk.
- #
- # If you make modifications to this software that you feel
- # increases it usefulness for the rest of the community, please
- # email the changes, enhancements, bug fixes as well as any and
- # all ideas to me. This software is going to be maintained and
- # enhanced as deemed necessary by the community.
- #
- # Kent Landfield
- # uunet!sparky!kent
- # kent@sparky.imd.sterling.com
- #
- ##########################################################
- X
- #
- # Do you wish to have this built with NNTP capabilities ?
- # This requires that you have networking libraries and the
- # NNTP source code available to you during compilation.
- #
- # Excelan support needed for nntp
- # Uncomment if needed...
- #
- #EXOSFLAGS= -I/usr/include/EXOS -DUSG -DEXCELAN
- #EXOSLIBS= -lsocket
- #
- # Specify the base directory location of the nntp sources
- # if you wish to give rkive the ability to use nntp to archive.
- #
- #NNTPSRCDIR=/usr/src/local/cmd/nntp
- #NNTPDEBUG=-DDEBUG
- #NNTPFLAGS=$(EXOSFLAGS) -I$(NNTPSRCDIR)/common -DNNTP $(NNTPDEBUG)
- #NNTPSRCS= $(NNTPSRCDIR)/common/clientlib.c nntpart.c
- #NNTPOBJS= clientlib.o nntpart.o
- X
- #
- # Sequent's Compilation flags..
- #
- #SFLAGS=-Iport
- #
- # If your system does not have getopt,
- # uncomment the next two lines.
- #
- #GETOPTO=getopt.o
- #GETOPTC=./port/getopt.c
- X
- #
- # Define your favorite C compiler here...
- #
- CC=cc
- X
- #
- # Compilation flags..
- #
- FLAGS=-g
- CFLAGS=$(SFLAGS) $(FLAGS) $(NNTPFLAGS)
- X
- #
- # Yacc flags for compilation of match.y
- #
- YFLAGS=
- YACC=yacc
- X
- #
- # Define flags to be passed to lint.
- #
- LINTFLAGS=$(NNTPFLAGS)
- X
- # rkive needs to have POSIX Compatible directory access routines.
- # If you do not have it builtin to your system libraries then specify
- # the -l option. If you use Doug Gwyn's routines, (or other compatible
- # routines) define the library in which they appear such as -lndir or
- # -lposix.
- #
- ACCESSLIB=
- X
- LDFLAGS=$(EXOSLIBS) $(ACCESSLIB)
- X
- #
- # If your system requires additional libraries or if you wish to
- # use shared libraries, add the -l declarations to LIBS below such
- # as -lc_s
- #
- LIBS=
- X
- I = /usr/include
- LP=lpr
- PR=nl -n
- NROFF=nroff
- BINDIR=/usr/local/bin
- RKIVEDIR=/usr/local/lib/rkive
- MAN1=/usr/man/man1
- MAN5=/usr/man/man5
- X
- MANS= $(MAN1)/article.1 \
- X $(MAN1)/rkive.1 \
- X $(MAN1)/ckconfig.1 \
- X $(MAN5)/rkive.5
- X
- CONFIG= $(RKIVEDIR)/rkive.cf
- X
- SCRIPTS= $(RKIVEDIR)/update_netdocs
- X
- SUPPORT = Makefile README IDEAS MANIFEST
- INCLUDES = rkive.h article.h cfg.h patchlevel.h suffix.h
- X
- ARTICLE_SRCS = article.c format.c header.c str.c version.c zfopen.c $(GETOPTC)
- ARTICLE_OBJS = article.o afmt.o header.o str.o version.o zfopen.o $(GETOPTO)
- X
- CKCONFIG_SRCS= ckconfig.c disp_grp.c efopen.c setup.c str.c version.c $(GETOPTC)
- CKCONFIG_OBJS= ckconfig.o disp_grp.o efopen.o setup.o str.o version.o $(GETOPTO)
- X
- ARCHIVE_SRCS = ck_name.c disp_grp.c efopen.c format.c header.c \
- X makedir.c news_arc.c $(NNTPSRCS) record_arc.c retrieve.c \
- X rkive.c setup.c str.c suffix.c version.c $(GETOPTC)
- ARCHIVE_OBJS = ck_name.o disp_grp.o efopen.o rfmt.o header.o \
- X makedir.o news_arc.o $(NNTPOBJS) record_arc.o retrieve.o \
- X match.o rkive.o setup.o str.o suffix.o version.o $(GETOPTO)
- X
- SRCS = article.c ckconfig.c ck_name.c disp_grp.c efopen.c format.c \
- X header.c makedir.c news_arc.c nntpart.c retrieve.c rkive.c \
- X match.y record_arc.c setup.c str.c suffix.c version.c zfopen.c \
- X $(GETOPTC)
- X
- INSTALLED_PROGS=\
- X $(BINDIR)/article \
- X $(BINDIR)/ckconfig \
- X $(BINDIR)/rkive
- X
- PROGS = article ckconfig rkive
- X
- #all: $(PROGS) $(MANS) $(SCRIPTS)
- all: $(PROGS)
- X
- $(MANS):
- X cp `basename $@` $@
- X chmod 444 $@
- X
- install: $(MANS) $(SCRIPTS) $(CONFIG) $(INSTALLED_PROGS)
- #install: $(INSTALLED_PROGS)
- X
- $(INSTALLED_PROGS):
- X @strip $@ > /dev/null 2>&1
- X cp `basename $@` $@
- X
- $(CONFIG):
- X cp `basename $@` $@
- X chmod 444 $@
- X
- $(SCRIPTS):
- X cp `basename $@` $@
- X chmod 755 $@
- X
- $(RKIVEDIR) $(MAN1) $(MAN5):
- X mkdir $(MKDIRFLAGS) $@
- X chmod 775 $@
- X
- cf: $(CONFIG)
- X
- ckconfig: $(CKCONFIG_OBJS)
- X $(CC) $(CFLAGS) -o ckconfig $(CKCONFIG_OBJS) $(LIBS)
- X
- article: $(ARTICLE_OBJS)
- X $(CC) $(CFLAGS) -o article $(ARTICLE_OBJS) $(LIBS)
- X
- rkive: $(ARCHIVE_OBJS)
- X $(CC) $(CFLAGS) -o rkive $(ARCHIVE_OBJS) $(LDFLAGS) $(LIBS)
- X
- $(BINDIR)/article: article
- $(BINDIR)/ckconfig: ckconfig
- $(BINDIR)/rkive: rkive
- X
- $(CKCONFIG_OBJS): $(INCLUDES)
- $(ARTICLE_OBJS): $(INCLUDES)
- $(ARCHIVE_OBJS): $(INCLUDES)
- ################################
- # Print
- ################################
- X
- print: print_docs print_support print_include
- X $(LP) $(SRCS)
- X
- print_support:
- X $(PR) $(SUPPORT) | $(LP)
- X
- print_include:
- X $(LP) $(INCLUDES)
- X
- print_article:
- X $(LP) $(ARTICLE_SRCS)
- X
- print_ckconfig:
- X $(LP) $(CKCONFIG_SRCS)
- X
- print_rkive:
- X $(LP) $(ARCHIVE_SRCS)
- X
- print_docs:
- X $(NROFF) -man $(DOCS) | $(LP)
- X
- ################################
- # LINT
- ################################
- X
- lint:
- X @echo "linting Article sources: " > Lint.out
- X lint $(LINTFLAGS) $(ARTICLE_SRCS) | tee -a Lint.out
- X @echo "linting Ckconfig sources: " >> Lint.out
- X lint $(LINTFLAGS) $(CKCONFIG_SRCS) | tee -a Lint.out
- X @echo "linting Archiver sources: " >> Lint.out
- X lint $(LINTFLAGS) $(ARCHIVE_SRCS) | tee -a Lint.out
- X
- lint_article:
- X @echo "linting Article sources: " > Lint.out
- X lint $(LINTFLAGS) $(ARTICLE_SRCS) 2>&1 | tee -a Lint.out
- X
- lint_ckconfig:
- X @echo "linting Ckconfig sources: " > Lint.out
- X lint $(LINTFLAGS) $(CKCONFIG_SRCS) | tee -a Lint.out
- X
- lint_rkive:
- X @echo "linting Archiver sources: " > Lint.out
- X lint $(LINTFLAGS) $(ARCHIVE_SRCS) | tee -a Lint.out
- X
- ################################
- # General
- ################################
- X
- clean:
- X rm -f *.o Lint.out *.bak
- X
- clobber: clean
- X rm -f $(PROGS)
- X rm -f Makefile.old rkive.h.old
- X rm -f y.output y.tab.h y.tab.c
- X
- inspection:
- X -inspect -abv $(ARTICLE_SRCS)
- X -inspect -abv $(CKCONFIG_SRCS)
- X -inspect -abv $(ARCHIVE_SRCS)
- X
- inspect_rkive:
- X -inspect -abv $(ARCHIVE_SRCS)
- X
- saber_article_src:
- X #load $(CFLAGS) $(ARTICLE_SRCS) $(LIBS)
- X
- saber_article_obj:
- X #load $(ARTICLE_OBJS) $(LIBS)
- X
- saber_ckconfig_src:
- X #load $(CFLAGS) $(CKCONFIG_SRCS) $(LIBS)
- X
- saber_ckconfig_obj:
- X #load $(CKCONFIG_OBJS) $(LIBS)
- X
- saber_rkive_src:
- X #load $(CFLAGS) $(ARCHIVE_SRCS) $(LIBS)
- X
- saber_rkive_obj:
- X #load $(ARCHIVE_OBJS) $(LIBS)
- X
- man:
- X $(NROFF) -man $(MANS)
- X
- depend:
- X makedepend -- $(CFLAGS) -- $(SRCS)
- X
- ################################
- # Dependencies
- ################################
- X
- getopt.o: ./port/getopt.c
- X $(CC) $(CFLAGS) $(TARGET_ARCH) -c ./port/getopt.c
- X
- clientlib.o: $(NNTPSRCDIR)/common/clientlib.c
- X $(CC) $(CFLAGS) $(TARGET_ARCH) -c $(NNTPSRCDIR)/common/clientlib.c
- X
- match.o: match.y article.h
- X
- #
- # The format junk here could be cleaned up with -o if all
- # versions of make had it... I could reorg the code but that's
- # work... :-)
- #
- rfmt.o: format.c
- X $(CC) -DRKIVE $(CFLAGS) $(TARGET_ARCH) -c format.c
- X mv format.o rfmt.o
- X
- afmt.o: format.c
- X $(CC) $(CFLAGS) $(TARGET_ARCH) -c format.c
- X mv format.o afmt.o
- X
- $(RKIVEDIR)/rkive.cf: rkive.cf $(RKIVEDIR)
- $(RKIVEDIR)/update_netdocs: update_netdocs $(RKIVEDIR)
- $(MAN1)/article.1: article.1 $(MAN1)
- $(MAN1)/rkive.1: rkive.1 $(MAN1)
- $(MAN1)/ckconfig.1: ckconfig.1 $(MAN1)
- $(MAN5)/rkive.5: rkive.5 $(MAN5)
- X
- # DO NOT DELETE THIS LINE -- make depend depends on it.
- SHAR_EOF
- chmod 0664 Makefile.dst ||
- echo 'restore of Makefile.dst failed'
- Wc_c="`wc -c < 'Makefile.dst'`"
- test 7882 -eq "$Wc_c" ||
- echo 'Makefile.dst: original size 7882, current size' "$Wc_c"
- rm -f _shar_wnt_.tmp
- fi
- # ============= localize.smpl ==============
- if test -f 'localize.smpl' -a X"$1" != X"-c"; then
- echo 'x - skipping localize.smpl (File already exists)'
- rm -f _shar_wnt_.tmp
- else
- > _shar_wnt_.tmp
- echo 'x - extracting localize.smpl (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'localize.smpl' &&
- #!/bin/sh
- #
- # @(#)localize.smpl 1.1 5/9/91
- #
- # The purpose of this file is to make changes to
- # rkive's Makefile and rkive.h. This allows for
- # local configuration modifications to be isolated
- # to this file.
- #set -x
- if [ -f Makefile ]
- then
- X mv Makefile Makefile.old
- X echo "Storing original Makefile in Makefile.old"
- fi
- X
- echo "Extracting Makefile"
- cp Makefile.dst Makefile
- chmod u+w Makefile
- echo "Performing substitutions on Makefile"
- ed - Makefile <<'EOF'
- /^#EXOSFLAGS/s;^#;;
- /^#EXOSLIBS/s;^#;;
- /^#NNTPSRCDIR/s;^#;;
- /^#NNTPDEBUG/s;^#;;
- /^#NNTPFLAGS/s;^#;;
- /^#NNTPSRCS/s;^#;;
- /^#NNTPOBJS/s;^#;;
- /^#SFLAGS/s;^#;;
- /^#GETOPTO/s;^#;;
- /^#GETOPTC/s;^#;;
- /^CC/s;cc;gcc;
- /^FLAGS/s;-g;-O;
- /^YFLAGS/s;=;=-v;
- /^YACC/s;yacc;bison;
- /^ACCESSLIB/s;=;=-lndir;
- /^LIBS/s;=;=-lc_s;
- /^LP/s;lpr;lp;
- /^PR/s;nl -n;pr;
- /^NROFF/s;nroff;troff;
- /^BINDIR/s;/usr/local/bin;/home/kent/bin;
- /^RKIVEDIR/s;/usr/local/lib;/home/kent/rkive;
- /^MAN1/s;/usr/man/man1;/usr/man/local/man1;
- /^MAN5/s;/usr/man/man5;/usr/man/local/man5;
- w
- q
- EOF
- X
- echo
- X
- if [ -f rkive.h ]
- then
- X mv rkive.h rkive.h.old
- X echo "Storing original rkive.h in rkive.h.old"
- fi
- X
- echo "Extracting rkive.h"
- cp rkive.h.dst rkive.h
- chmod u+w rkive.h
- echo "Performing substitutions on rkive.h"
- ed - rkive.h <<'EOF'
- /OWNER/s;0;78;
- /GROUP/s;3;21;
- /MODES/s;0444;0644;
- /DIR_MODE/s;0755;0775;
- /^#define SUBJECT_LINE/s;define;undef;
- /^#define MAIL/s;/usr/ucb/Mail;/usr/local/bin/elm;
- /^#define SPOOLDIR/s;/usr/spool/news;/var/spool/news;
- /^#define PROBLEMS_DIR/s;/usenet/problems;/home/kent/rkive/problems;
- /^#define LOCATION/s;/usr/local/lib/rkive/rkive.cf;/home/kent/rkive/rkive.cf;
- /^#undef ADD_REPOST_SUFFIX/s;undef;define;
- /^#define MV_ORIGINAL/s;define;undef;
- /^#define REPOST_SUFFIX/s;-repost;.rp;
- /^#define VOLUME/s;volume;vol;
- /^#undef ZEROFILL/s;undef;define;
- /^#define REDUCE_HEADERS/s;define;undef;
- /^#define NUM_NEWSGROUPS/s;64;128;
- /^#undef NO_MONTH_DIR/s;undef;define;
- /^#undef USE_SYSMKDIR/s;undef;define;
- /^#define MKDIR/s;define;undef;
- /^#define DEFAULT_INDEX_FORMAT/s;%B\\t%S;%O\\t%T;
- /^#define DEFAULT_LOG_FORMAT/s;%O\\t%T;%B\\t%S;
- w
- q
- EOF
- cat << 'EOM'
- X
- Done. Did you see a '?' appear while running this ? If so you need to
- do a little more work to get it working right. If not...
- X
- Check over the Makefile and rkive.h to assure that things are the way
- that you want them. If they are not, make the appropriate changes to
- this script and rerun it. When things are correct, type
- X
- $ make
- X
- This will build the three executables, article, ckconfig and rkive.
- When you feel brave enough, install the software in place by typing
- X
- $ make install
- X
- EOM
- SHAR_EOF
- chmod 0644 localize.smpl ||
- echo 'restore of localize.smpl failed'
- Wc_c="`wc -c < 'localize.smpl'`"
- test 2596 -eq "$Wc_c" ||
- echo 'localize.smpl: original size 2596, current size' "$Wc_c"
- rm -f _shar_wnt_.tmp
- fi
- # ============= sys.cf ==============
- if test -f 'sys.cf' -a X"$1" != X"-c"; then
- echo 'x - skipping sys.cf (File already exists)'
- rm -f _shar_wnt_.tmp
- else
- > _shar_wnt_.tmp
- echo 'x - extracting sys.cf (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'sys.cf' &&
- #
- # @(#)sys.cf 1.1 5/9/91
- # - Used to contain newsgroup
- # archive specifications for
- # newsgroups processed through
- # the /usr/lib/news/sys file.
- #
- # typical line for rkive in the Cnews sys file.
- # csd:world,usa,local,comp.sources.d::/usr/local/bin/rkive -A comp.sources.d -f /usr/local/lib/rkive/sys.cf
- #
- ##################### GLOBAL SPECIFICATIONS ##########################
- #
- SPOOLDIR=/usr/spool/news
- PROBLEMS=/usenet/problems
- TYPE=Chronological
- #
- # If you turn on mail here you will get a mail message for
- # each article processed through /usr/lib/news/sys. YOU HAVE
- # BEEN WARNED... :-) :-)
- #
- #MAIL=kent
- OWNER=news
- GROUP=news
- MODE=0444
- COMPRESS=/usr/ucb/compress
- #
- ###################### NEWSGROUP SPECIFICS ###########################
- #
- $$comp.sources.d
- X BASEDIR: /usenet/comp.sources.d
- X INDEX: /tmp/usenet/comp.sources.d/index
- X INDEX_FORMAT: "%B %a %T"
- X
- SHAR_EOF
- chmod 0444 sys.cf ||
- echo 'restore of sys.cf failed'
- Wc_c="`wc -c < 'sys.cf'`"
- test 991 -eq "$Wc_c" ||
- echo 'sys.cf: original size 991, current size' "$Wc_c"
- rm -f _shar_wnt_.tmp
- fi
- # ============= rkive.h.dst ==============
- if test -f 'rkive.h.dst' -a X"$1" != X"-c"; then
- echo 'x - skipping rkive.h.dst (File already exists)'
- rm -f _shar_wnt_.tmp
- else
- > _shar_wnt_.tmp
- echo 'x - extracting rkive.h.dst (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'rkive.h.dst' &&
- /*
- ** @(#)rkive.h.dst 2.3 5/9/91
- **
- ** This is the rkive source configuration header file.
- ** Please examine and change to suite your own site's needs..
- **
- */
- X
- /*
- ** The default owner, group and modes of the archived files
- ** need to be stated below. The values are only used if the
- ** appropriate values are not in the configuration file.
- */
- X
- #define OWNER 0
- #define GROUP 3
- #define MODES 0444
- #define DIR_MODE 0755 /* directory creation modes */
- X
- /*
- ** If you have a smart mailer that supports a "-s subject" command
- ** and you wish to have the subject line added when archived mail
- ** is sent, define SUBJECT_LINE.
- */
- X
- #define SUBJECT_LINE
- X
- #ifdef SUBJECT_LINE
- #define MAIL "/usr/ucb/Mail" /* mail program to use */
- # ifdef NOTDEF
- # define MAIL "/usr/local/bin/elm"
- # define MAIL "/usr/bin/mailx" /* mail program to use */
- # define MAIL "/usr/local/bin/mush"
- # endif /*NOTDEF*/
- #else
- #define MAIL "/bin/mail" /* mail program to use */
- #endif
- X
- /*
- ** The PROBLEMS_DIR is the default directory to use in the event
- ** problems are encountered such as duplicate article names and
- ** the execution flags do not specify overwriting.
- **
- ** The new, inbound article is stored in the PROBLEMS_DIR in the
- ** problems_dir/newsgroup/volume/filename so that the administrator
- ** can review and fix the problem whenever time becomes available...
- **
- ** The PROBLEMS_DIR define is used only if the administrator has not
- ** specified the PROBLEMS path variable inside of the LOCATION
- ** (config) file.
- */
- X
- #define PROBLEMS_DIR "/usenet/problems"
- X
- /*
- ** Home directory for news
- */
- X
- #define SPOOLDIR "/usr/spool/news"
- X
- /*
- ** Location of the default rkive configuration file.
- */
- X
- #define LOCATION "/usr/local/lib/rkive/rkive.cf"
- X
- /*
- ** Defines to control the handling of repostings.
- **
- ** ADD_REPOST_SUFFIX && REPOST_SUFFIX
- **
- ** If ADD_REPOST_SUFFIX is defined, all reposts will have the
- ** string specified in REPOST_SUFFIX appended to the archive
- ** filename so that a repost of elm/part07 would appear in
- ** the archive as elm/part07-repost prior to any compression.
- **
- ** CAUTION: This should *not* be used on a filesystem with
- ** 14 character file name limits. If you are going
- ** to be making your archive available to the general
- ** community do *not* use this. The portability of
- ** filenames is greatly reduced. This has been added
- ** with much hesitation. The rational was that there
- ** was no reason to punish/limit the functionality
- ** just because of limitations of a specific "brand"
- ** of unix and since that "brand" was correcting its
- ** "error" in the future, why not put it in now ?
- ** This is not a configuration item on a per newsgroup
- ** basis. It might be useful for Historical archiving
- ** using only Volume/Issue archiving with no COMPRESSION.
- **
- ** MV_ORIGINAL
- ** The original article is placed into a "original" directory in
- ** the problems directory (if duplicated). The inbound reposted
- ** article is placed into the archive in the correct position.
- **
- ** No Reposting Defines specified:
- ** The inbound article would be placed into the archive in the
- ** correct position only if the initial article is not in the archive.
- ** Otherwise the reposted article is placed in the problems directory
- ** as a normal duplicate article is now.
- */
- X
- #undef ADD_REPOST_SUFFIX
- #define MV_ORIGINAL
- X
- #ifdef ADD_REPOST_SUFFIX
- #define REPOST_SUFFIX "-repost"
- #endif
- X
- /*
- ** If you wish your volume directories to be Volume, VOL, vOLuMe
- ** or any other such nonsense, change the VOLUME define below.
- */
- X
- #define VOLUME "volume"
- X
- /*
- ** Very small change to construct change the volume directory names
- ** from "volume1" to "volume01". In this manner all of the archive
- ** volume directories appear in lexical order instead of jumbled
- ** together in directory listings. This option was "requested"...
- */
- X
- #undef ZEROFILL
- X
- /*
- ** If you wish to have the headers "trimmed" when the file is archived,
- ** assure that REDUCE_HEADERS is defined. Currenlty all header lines that
- ** are not either;
- ** From:, Newsgroups:, Subject:, Message-ID: Approved:, and Date:
- ** will be removed. See news_arc.c if you wish to add or subtract header
- ** lines to keep. This can produce a savings of between 200 to 500 bytes
- ** per archived article.
- */
- X
- #define REDUCE_HEADERS
- X
- /*
- ** The following define specifies a default format for generating
- ** index file records in the event that there is no index format
- ** specified for either the newsgroup or for the global default.
- ** See article.1 for a discussion of the different types of selection
- ** characters available for use in the format specifications.
- */
- X
- #define DEFAULT_INDEX_FORMAT "%B\t%S"
- X
- /*
- ** The following define specifies a default format for generating
- ** log file records in the event that there is no log format
- ** specified for either the newsgroup or for the global default.
- */
- #define DEFAULT_LOG_FORMAT "%O\t%T"
- X
- /*
- ** The size of the group array. If you are archiving the world
- ** you might need to bump this up...
- */
- X
- #define NUM_NEWSGROUPS 64
- X
- /*
- ** The ifdef NO_MONTH_DIR is used to decide which way Chronological
- ** archives are to be stored. By default for format is something like
- **
- ** /usenet/alt/sources/volume89/Jun/890629.01
- **
- ** If you wish not to have the month directory, define NO_MONTH_DIR
- ** and the archives will be stored as
- **
- ** /usenet/alt/sources/volume89/890629.01
- */
- #undef NO_MONTH_DIR
- X
- /*
- ** Which mkdir function do you want to use ?
- **
- ** Define MKDIR if there is a mkdir() function in your
- ** system library (AT&T 5.2 or earlier systems are probably
- ** out of luck..)
- **
- ** Define USE_SYSMKDIR if you wish to system off /bin/mkdir.
- **
- ** If you do not define either, the function makedir will
- ** create the directory itself. PLEASE ASSURE THAT IT WILL
- ** WORK FOR YOUR SYSTEM PRIOR TO USING IT... (Should work on
- ** System 5.3 and prior SYSV systems.)
- */
- #undef USE_SYSMKDIR /**/
- #define MKDIR /**/
- X
- /**********************************************************************
- ******************* NO CHANGES REQUIRED PAST HERE *******************
- **********************************************************************/
- X
- /*
- ** check to assure repost defines are in order...
- */
- #if defined(ADD_REPOST_SUFFIX) + defined(MV_ORIGINAL) > 1
- #include "ERROR - Can only specify a maximum of one way to handle reposts!"
- #endif
- X
- /*
- ** check to assure mkdir defines are in order...
- */
- #if defined(MKDIR) + defined(USE_SYSMKDIR) > 1
- #include "ERROR - Can only specify a maximum of one way to make directories!"
- #endif
- X
- #include <dirent.h>
- X
- int fprintf();
- X
- /*
- ** Standard stuff
- */
- X
- #ifndef TRUE
- #define TRUE 1
- #endif
- X
- #ifndef FALSE
- #define FALSE 0
- #endif
- X
- /*
- ** The MAXNAMLEN define is here for systems such as SCO
- ** that have MAXNAMLEN in other then dirent.h
- ** Samuel Lam <uunet!van-bc!skl>
- */
- #ifndef MAXNAMLEN
- #define MAXNAMLEN 255
- #endif
- X
- /*
- ** retrieve_article() return values
- */
- #define ERROR_ENCOUNTERED -1
- #define DONE 0
- #define RETRIEVED 1
- X
- /*
- ** retrieve_article() from defines
- */
- #define FROM_DISK 0
- #define FROM_NAME 1
- #define FROM_BATCHFILE 2
- #define FROM_STDIN 3
- #ifdef NNTP
- # define FROM_NNTP 4
- #endif /*NNTP*/
- X
- /*
- ** archive type defines
- **
- ** These defines are used to determine which type of archiving
- ** methods the administrator has requested for the newsgroup.
- **
- */
- X
- #define ARCHIVE_NAME 0 /* Archive as "elm/part03" */
- X /* and moderator info also. */
- #define VOLUME_ISSUE 1 /* Archive as "v16i003" */
- #define ARTICLE_NUMBER 2 /* Archive with same name */
- X /* as the file to archive */
- #define CHRONOLOGICAL 3 /* Archive as "890619002" */
- X /* or YYMMDDIII format */
- #define COMP_ARCHIVES 4 /* Archive for comp.archives*/
- #define EXTERNAL_COMMAND 5 /* Archive by piping the */
- X /* articles to the external */
- X /* command specified int the*/
- X /* rkive.cf file. */
- #define ONLY_ARCHIVE_NAME 6 /* Archive as "elm/part03" */
- X
- #define MAXMATCHLEN 10000 /* Length for Match-expression. */
- X
- X
- /*
- ** patch handling type defines
- **
- ** These defines are used to determine which type of
- ** method the administrator has requested for the the
- ** handling of patches received in the newsgroup.
- **
- */
- X
- #define HISTORICAL 0 /* Archive as normally done. */
- #define PACKAGE 1 /* Archive patches in the directory */
- X /* containing the initial posting. */
- X
- struct group_archive {
- X int owner; /* owner id of the archive files */
- X int group; /* group id of the archive files */
- X int modes; /* modes of the stored archive files */
- X int type; /* Type of archiving to be used. */
- X /* 0 = Archive-Name */
- X /* 1 = Volume-Issue */
- X /* 2 = Article-Number */
- X /* 3 = Chronological */
- X /* 4 = Comp-Archives */
- X /* 5 = External-Command */
- X int patch_type; /* Method of handling patches. */
- X /* 0 = Historical */
- X /* 1 = Package */
- X char ng_name[MAXNAMLEN]; /* Newsgroup to be archived. */
- X char ng_path[MAXNAMLEN]; /* Path to archive's base directory. */
- X char location[MAXNAMLEN]; /* Path to archive's base directory. */
- X char arc_done[MAXNAMLEN]; /* Archive's .archived already file */
- X char mail_list[BUFSIZ]; /* List of users to mail when new */
- X /* members are added to the archive. */
- X char logfile[MAXNAMLEN]; /* Path to archive specific log file */
- X char index[MAXNAMLEN]; /* Path to archive specific index. */
- X char patchlog[MAXNAMLEN]; /* Path to archive's patches log. */
- X char logformat[BUFSIZ]; /* Format of the logfile entry. */
- X char indformat[BUFSIZ]; /* Format of the index entry. */
- X char compress[MAXNAMLEN]; /* Command line to use to compress */
- X /* new archive members, optional. */
- X char arch_command[MAXNAMLEN]; /* Command line to use to archive */
- X /* the articles in the newsgroup. */
- X char checkhash[MAXNAMLEN]; /* Command line to use to test */
- X /* articles for transit damage. */
- X char match[MAXMATCHLEN]; /* Match-expression */
- #ifdef NNTP
- X char nntp[MAXNAMLEN]; /* Name of system with nntp server */
- #endif /*NNTP*/
- };
- SHAR_EOF
- chmod 0444 rkive.h.dst ||
- echo 'restore of rkive.h.dst failed'
- Wc_c="`wc -c < 'rkive.h.dst'`"
- test 10930 -eq "$Wc_c" ||
- echo 'rkive.h.dst: original size 10930, current size' "$Wc_c"
- rm -f _shar_wnt_.tmp
- fi
- # ============= patch2.1 ==============
- if test -f 'patch2.1' -a X"$1" != X"-c"; then
- echo 'x - skipping patch2.1 (File already exists)'
- rm -f _shar_wnt_.tmp
- else
- > _shar_wnt_.tmp
- echo 'x - extracting patch2.1 (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'patch2.1' &&
- diff -cr ../usenet/Changes ./Changes
- *** ../usenet/Changes Wed May 8 21:31:55 1991
- --- ./Changes Thu May 9 01:14:37 1991
- ***************
- *** 1,101 ****
- ! @(#)Changes 2.1 2/21/91
- ! WARNING **** WARNING **** WARNING **** WARNING **** WARNING **** WARNING ****
- X
- ! The .archived files now store the message id of the article instead of the
- ! article number. This is done so that NNTP support could be added. The news
- ! article numbering on one system may not be the same on another system and
- ! worse yet, they might collide resulting in lost articles. For this reason,
- ! the message-id is stored in the .archived file. This complicates the maintance
- ! of the .archived files greatly. Currently they are growing without bounds...
- ! Ideas please. A separate process run from cron to trim the files... ?? Help...
- X
- ! WARNING **** WARNING **** WARNING **** WARNING **** WARNING **** WARNING ****
- X
- ! What follows is a list of changes that have occured during this release...
- ! ------------------------------------------------------------------------------
- X
- ! general:
- X
- ! Modified the Makefile handle dependencies better.
- X
- ! Moved the rkive.cf file into /usr/local/lib/rkive. This new directory
- ! is being used to store all the external applications such as update_netdocs
- ! as well.
- X
- ! Added the decompression routines to the compression suffix table.
- X
- ! rename.c used in the 1.x versions but is not used anymore...
- X
- - Removed alot of duplicated code and added some more.
- X
- - Removed the History lines from the files. Little, if any informational
- - content. Just bulks up the source files unnecessarily. History is in
- - the sccs files... If you really want it, send me email and I will send
- - you prs output... :-)
- X
- ! article:
- X
- - Added support for comp.archives auxiliary headers
- X
- ! Added support for comp.sources.apple2 extended auxiliary headers
- X
- ! Added compression recognition to article so that it can deal
- ! transparently with compressed/packed files. There is no longer
- ! a need to "zcat filename | article".
- X
- X
- ! rkive:
- X
- - Added the ability to use the X-Checksun-Snefru: auxiliary header line
- - used in c.s.unix and comp.sources.misc.
- X
- ! Added the ability to archive comp.archives using the auxiliary headers
- ! supplied by the moderator's posting software.
- X
- ! Added the ability to archive comp.sources.apple2 using the extended
- ! auxiliary headers.
- X
- ! Added the ability to pass parameter flags to the Compression utility
- ! specified in rkive.cf
- X
- ! Added NNTP support so that the archives can be maintained on a remote
- ! system(s) In this manner as well, an archive site can use multiple
- ! spool directories locatated on multiple systems to assure timely
- ! update and better news access reliability.
- !
- ! Added the ability to support globbing. rkive now allows the user to
- ! specify a match string to search for in the newsgroup. When a match is
- ! found, that article is archive. Only articles that match the specific
- ! patterns are archived. This mechanism works for all the different types
- ! of archiving.
- !
- ! Added the ability for archive to execute external applications as
- ! if it was done internally. It logs and writes index files for these
- ! as specified in the rkive.cf configuration file.
- !
- ! Added the update_netdocs script and the appropriate entries in the
- ! supplied rkive.cf. This script provides an example of how the
- ! external archive mechanism works. It also allows a site to maintain
- ! the set of periodic postings that are specified in the rkive.cf and
- ! the update_netdocs. This script was a QUICK AND DIRTY EXAMPLE. It
- ! needs rewriting to be really used.
- !
- ! Rkive can now accept articles on stdin.
- !
- ! Rkive can now accept articles to be archived from a batch file
- ! This allows the rkive use a batch file generated by the news system
- ! in order to determine which articles need to be archived.
- !
- ! #ifdef added to allow the volumes to be zero-padded so that volume1
- ! now becomes volume01
- !
- ! Added aditional format specifications to format.c so that the information
- ! contained in the rkive.cf file could be supplied to external commands
- ! for their specific use.
- !
- ! Does a better job going through saber and lint now.. :-)
- !
- ! Added the ability for the person configuring the rkive.cf to specify
- ! where the .patchlog and .archived files are to reside. This was needed
- ! for maintaining uunet's c.s.misc archives.
- X
- --- 1,85 ----
- ! @(#)Changes 2.2 5/9/91
- X
- ! A different configuration method is being used. A localize.sh script
- ! is created at the local site that allows you to isolate changes to
- ! a single file. This makes upgrades and patches easier and local configuration
- ! is easier to manage. Local configuration is like its done in B News.
- X
- ! An INSTALL file has been added describing how to make localize.sh scripts
- ! and discusses just what some of the configuration parameters are/mean.
- X
- ! The rkive.h and Makefiles are distributed as the rkive.h.dst and
- ! Makefile.dst and are a template of the target rkive.h and Makefile
- ! that will be created by localize.sh.
- X
- ! Moved the mkdir() defines into rkive.h instead of the Makefile.
- ! Changed defines from HAVE_MKDIR to MKDIR... Don't ask...
- X
- ! Added support for the new X-Md4-Signature: header in use in comp.sources.misc.
- X
- ! Added the ability for rkive to accept articles on standard input... Yes, this
- ! time it is real... :-) A sys.cf configuration file is supplied as a sample
- ! configuration file for sys file usage.
- X
- ! Corrected a problem locating the next higest problem article number to
- ! use in the event of problem storage. This was encountered when two systems
- ! had problems with an article that had the same news article number. One
- ! of the articles was from a local news system, one was via NNTP, same group
- ! from two different sources...
- X
- ! In 2.0 I added the support for article to deal directly with compressed
- ! articles when the user specified the filename with the commpression suffix
- ! attached. ("article *.Z") This time I added the ability for article to deal
- ! with compressed articles better by allowing the user to specify the files
- ! without the compression suffix. This means that if I say "article v17i016"
- ! it will find v17i016.Z. If you have two files, one compressed, one
- ! uncompressed, article will find the one you specify.
- X
- X
- X
- ! uunet!utai!mnetor!tmsoft!beaudin!john (John Beaudin) pointed out two
- ! problems with global external archiving. Global External archiving
- ! works now.. I think.. :-)
- X
- X
- ! Chip Rosenthal <uunet!cs.utexas.edu!chinacat!chip> alerted me to:
- X
- ! A matching problem in the suffix() routine was fixed. It was not stripping
- ! the options correctly,
- X
- + NO_MONTH_DIR was missing from rkive.h, and
- X
- ! When using the "Chronological" mode, with the "NO_MONTH_DIR" defined,
- ! a "%v" in the index format yielded a "v-1" rather than a "v91". Incorrect
- ! initialization, fixed.
- X
- X
- ! Chet Wood <uunet!apple.com!arc!chet> for directing me to the following five
- ! problems/ideas and gave me a couple more to ponder... :-)
- X
- ! Corrected write_archived so that it assures that the directories exist
- ! prior to attempting to write a record to the newsgroup's .archived file.
- ! Boundary condition :-) If the first article in a newsgroup was a problem
- ! article, rkive could not write the .archived record since the directory
- ! did not exist.
- !
- ! Assured that the filename specified within the INDEX_FORMAT contained the
- ! final path name which may or may not have a compression suffix attached.
- !
- ! Added support for a relative path filename from where the BASEDIR to the
- ! actual storage location. This is done with a %Z format character.
- !
- ! Added the ability for external command archiving to use the NNTP temporary
- ! transfer file if they need to. Added the $F specification character to
- ! support this.
- !
- ! Updated update_netdocs with some new FAQs. Also shut off "set -x" as the
- ! default. That was left over from debugging... :-)
- !
- ! *** THANKS ALL! ***
- X
- ! Updated article.1 and rkive.5 to reflect the format specification character
- ! changes.
- X
- ! Various other minor fixes as well...
- X
- diff -cr ../usenet/IDEAS ./IDEAS
- *** ../usenet/IDEAS Wed May 8 21:31:59 1991
- --- ./IDEAS Thu May 9 01:16:32 1991
- ***************
- *** 1,4 ****
- ! @(#)IDEAS 2.1 2/21/91
- X What follows is my ideas file. It gives you a glimse into some enhancements,
- X ideas, problems and work in progress for rkive. This is a minimal list but
- X it will grow after you send me your good ideas. :-)
- --- 1,4 ----
- ! @(#)IDEAS 2.2 5/9/91
- X What follows is my ideas file. It gives you a glimse into some enhancements,
- X ideas, problems and work in progress for rkive. This is a minimal list but
- X it will grow after you send me your good ideas. :-)
- ***************
- *** 13,60 ****
- X All articles should be storable in *as many* of the user-requested
- X formats as possible.
- X
- ! 3. Add a Configure.sh to handle configuration of default parameters
- ! and to setup the software.
- !
- ! 4. Better and more extensive documentation as well as documentation
- X that explains archiving in general.
- X
- ! 6. An application that would allow retrieval requests from the archives
- X by reading the rkive.cf file to determine the location of the
- X newsgroup's archive and to retrieve packages by any of the archive
- X methods. This may end up using software like narc to actually do
- X the unpacking for the requester. This too is just an idea now...
- X
- ! 7. An application that would allow retrieval requests from the archives
- X for patches or entire packages including all posted patches. This is
- X still currently in progress... :-) The mythical "random downloader" :-)
- X
- ! 8. Have rkive be able to handle crosspostings intelligently instead of
- ! making to copies of the article as it does now.
- X
- ! 9. Changes needed to prevent the attempted compression of articles
- ! whose basenames are longer than 12 characters on systems that support
- ! only 14 character file names.
- X
- ! 10. Why not make the archive types specified by a table then it would be easy
- ! to add extra types. Surely the more the merry.
- X
- ! 11. Ta-rkive - have rkive feed the articles to be archived into tar
- ! by printing the article on stdout so that rkive -T | tar cvf - > date.tar
- ! could be used for putting the articles on to tape. tarkive would be
- ! an application that does only the article reading and taring.
- X
- ! 12. Allow for directory modes in the .cf file.
- X
- ! 13. Program to clean up the INDEX file and move the sources to tape.
- !
- ! 14. Use the posted date for chronological archiving instead of the
- ! archived date.
- !
- ! 15. Mail on error only.
- !
- ! 16. Add a selection control-character which gives the local system article
- X number to put in 'log' and 'index'. Would help if one runs into trouble.
- X
- X Well that's the direction I am heading... If you have *any* additional
- X ideas that are constructive, positive or negative (flames to /nev/dull)
- --- 13,51 ----
- X All articles should be storable in *as many* of the user-requested
- X formats as possible.
- X
- ! 3. Better and more extensive documentation as well as documentation
- X that explains archiving in general.
- X
- ! 4. An application that would allow retrieval requests from the archives
- X by reading the rkive.cf file to determine the location of the
- X newsgroup's archive and to retrieve packages by any of the archive
- X methods. This may end up using software like narc to actually do
- X the unpacking for the requester. This too is just an idea now...
- X
- ! 5. An application that would allow retrieval requests from the archives
- X for patches or entire packages including all posted patches. This is
- X still currently in progress... :-) The mythical "random downloader" :-)
- X
- ! 6. Changes needed to prevent the attempted compression of articles
- ! whose basenames are longer than 12 characters on systems that support
- ! only 14 character file names.
- X
- ! 7. Why not make the archive types specified by a table then it would be easy
- ! to add extra types. Surely the more the merry.
- X
- ! 8. Allow for directory modes in the .cf file.
- SHAR_EOF
- true || echo 'restore of patch2.1 failed'
- fi
- echo 'End of part 1'
- echo 'File patch2.1 is continued in part 2'
- echo 2 > _shar_seq_.tmp
- exit 0
- exit 0 # Just in case...
- --
- Kent Landfield INTERNET: kent@sparky.IMD.Sterling.COM
- Sterling Software, IMD UUCP: uunet!sparky!kent
- Phone: (402) 291-8300 FAX: (402) 291-4362
- Please send comp.sources.misc-related mail to kent@uunet.uu.net.
-