home *** CD-ROM | disk | FTP | other *** search
- From: kent@sparky.imd.sterling.com (Kent Landfield)
- Newsgroups: comp.sources.misc
- Subject: v19i020: rkive - Usenet sources archiver, Patch01b/3
- Message-ID: <1991May9.175644.19503@sparky.IMD.Sterling.COM>
- Date: 9 May 91 17:56:44 GMT
- Approved: kent@sparky.imd.sterling.com
-
- Submitted-by: Kent Landfield <kent@sparky.imd.sterling.com>
- Posting-number: Volume 19, Issue 20
- Archive-name: rkive/patch01b
- Patch-To: rkive: Volume 17, Issue 17-22
-
- #!/bin/sh
- # do not concatenate these parts, unpack them in order with /bin/sh
- # file patch2.1 continued
- #
- if test ! -r _shar_seq_.tmp; then
- echo 'Please unpack part 1 first!'
- exit 1
- fi
- (read Scheck
- if test "$Scheck" != 2; then
- echo Please unpack part "$Scheck" next!
- exit 1
- else
- exit 0
- fi
- ) < _shar_seq_.tmp || exit 1
- if test ! -f _shar_wnt_.tmp; then
- echo 'x - still skipping patch2.1'
- else
- echo 'x - continuing file patch2.1'
- sed 's/^X//' << 'SHAR_EOF' >> 'patch2.1' &&
- X
- ! 9. Use the posted date for chronological archiving instead of the
- ! archived date.
- X
- ! 10. Mail on error only.
- X
- ! 11. 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.
- +
- + 12. Have a post capability in which the output from rkive would be posted
- + to a local newsgroup instead of mailing it to a list of users or maybe
- + as well as.
- 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)
- Only in .: INSTALL
- diff -cr ../usenet/MANIFEST ./MANIFEST
- *** ../usenet/MANIFEST Wed May 8 21:31:59 1991
- --- ./MANIFEST Thu May 9 01:23:25 1991
- ***************
- *** 1,9 ****
- ! File Name Archive # Description
- ! -----------------------------------------------------------
- X Changes 1 General description of changes in each version.
- X IDEAS 1 Contains future improvement ideas.
- X MANIFEST 1 This shipping list
- ! Makefile 2 rkive make file for generating the software.
- X README 1 Information posting that should be read first.
- X article.1 2 Manual page for article command.
- X article.c 2 Source containing article main routines.
- --- 1,10 ----
- ! # File Name Archive # Description
- ! #-----------------------------------------------------------
- X Changes 1 General description of changes in each version.
- X IDEAS 1 Contains future improvement ideas.
- + INSTALL 1 Instructions on installing rkive.
- X MANIFEST 1 This shipping list
- ! Makefile.dst 2 rkive distribution Makefile.
- X README 1 Information posting that should be read first.
- X article.1 2 Manual page for article command.
- X article.c 2 Source containing article main routines.
- ***************
- *** 16,21 ****
- --- 17,23 ----
- X efopen.c 1 Fopen a file with error checking.
- X format.c 2 Formatting output for indexes, logs, articles.
- X header.c 3 News article header reading routines.
- + localize.smpl 3 Local configuration script example.
- X makedir.c 1 Make directory routines.
- X match.y 1 Matching routines for globbing support.
- X news_arc.c 4 News archiving gut functions.
- ***************
- *** 30,40 ****
- X rkive.5 2 Manual page for the rkive configuration file.
- X rkive.c 4 Source containing rkive main routines.
- X rkive.cf 3 Template configuration file.
- ! rkive.h 2 Include file for rkive software.
- X setup.c 3 Routines to read the rkive configuration file.
- X str.c 1 String manipulation routines.
- X suffix.c 1 Compression suffix addition/removal routines.
- X suffix.h 1 Include for suffix structure and table.
- X t.cf 1 Test archive config file. Not the template.
- X update_netdocs 1 Script to archive Usenet periodic articles.
- X version.c 1 Print the current version and patchlevel.
- --- 32,43 ----
- X rkive.5 2 Manual page for the rkive configuration file.
- X rkive.c 4 Source containing rkive main routines.
- X rkive.cf 3 Template configuration file.
- ! rkive.h.dst 2 Distribution include file for rkive software.
- X setup.c 3 Routines to read the rkive configuration file.
- X str.c 1 String manipulation routines.
- X suffix.c 1 Compression suffix addition/removal routines.
- X suffix.h 1 Include for suffix structure and table.
- + sys.cf 1 Test archive config file. Could be a template.
- X t.cf 1 Test archive config file. Not the template.
- X update_netdocs 1 Script to archive Usenet periodic articles.
- X version.c 1 Print the current version and patchlevel.
- Only in ../usenet: Makefile
- Only in .: Makefile.dst
- diff -cr ../usenet/README ./README
- *** ../usenet/README Wed May 8 21:31:50 1991
- --- ./README Thu May 9 01:33:33 1991
- ***************
- *** 1,7 ****
- X
- X USENET Sources Archiver
- X
- ! @(#)README 2.2 2/23/91
- X
- X Copyright (c) 1989, 1990, 1991 by Kent Landfield.
- X
- --- 1,7 ----
- X
- X USENET Sources Archiver
- X
- ! @(#)README 2.3 5/9/91
- X
- X Copyright (c) 1989, 1990, 1991 by Kent Landfield.
- X
- ***************
- *** 68,108 ****
- X to a specified list of users or aliases. The indexes and log file formats
- X are specifiable by the person configuring the rkive configuration file.
- X
- ! -------------------------------------------------------------------
- ! The following defines are possible. Please note that the Directory
- ! Creation defines are specified in Makefile while the rest are specified
- ! in rkive.h.
- !
- ! ***************************
- ! rkive.h - General Defines
- ! ***************************
- !
- ! -D REDUCE_HEADERS : Archived article header reduction code.
- ! Disk space is saved by removing header lines that have no
- ! further use after the article is stored in the archive.
- ! As currently defined, all headers *except* for From:, Newsgroups:,
- ! Subject:, Message-ID:, Approved:, and Date: are removed if this
- ! is defined.
- ! The list of headers to be saved can be added to or reduced by
- ! modifying the table "hdrs" in news_arc.c.
- !
- ! -D SUBJECT_LINE : Specify that the local mailer has -s option
- ! such as /usr/bin/mailx or /usr/ucb/Mail.
- !
- ! *************************************
- ! Makefile - Directory Creation Defines
- ! *************************************
- !
- ! -D HAVE_MKDIR : use the mkdir() function in the system library.
- ! (AT&T 5.2 or earlier systems are probably out of luck..)
- !
- ! -D USE_SYSMKDIR : have rkive system off /bin/mkdir.
- ! (not recommended for *real* use...)
- !
- ! If you do not define either, the function makedir() will create the
- ! directory itself. I suggest that if you do not have mkdir() in your
- ! system libraries, use the builtin if you can. *Please* verify you can
- ! use it *first*.
- X
- X ---------------------------
- X Archive Member Compression:
- --- 68,76 ----
- X to a specified list of users or aliases. The indexes and log file formats
- X are specifiable by the person configuring the rkive configuration file.
- X
- ! Please read the file INSTALL for specifics on installation of rkive and
- ! is associated applications. What follows is a little background information
- ! that might be helpful to read prior to reading INSTALL.
- X
- X ---------------------------
- X Archive Member Compression:
- diff -cr ../usenet/article.1 ./article.1
- *** ../usenet/article.1 Wed May 8 21:31:56 1991
- --- ./article.1 Thu May 9 01:36:32 1991
- ***************
- *** 1,4 ****
- ! 'br "@(#)article.1 2.2 2/23/91"
- X .op 1i
- X .TH ARTICLE 1
- X .SH NAME
- --- 1,4 ----
- ! 'br "@(#)article.1 2.3 5/9/91"
- X .op 1i
- X .TH ARTICLE 1
- X .SH NAME
- ***************
- *** 81,89 ****
- X D - Print the Date line.
- X E - Print the Reposted-by line.
- X F - Print the From line.
- ! H - Print the Original-posting-by line.
- ! I - Print the Original-subject line.
- ! J - Print the Archive-directory.
- X K - Print the Keywords line.
- X L - Print the Lines line.
- X M - Print the Message-ID line.
- --- 81,89 ----
- X D - Print the Date line.
- X E - Print the Reposted-by line.
- X F - Print the From line.
- ! H - Print the Comp.archives Original-posting-by line.
- ! I - Print the Comp.archives Original-subject line.
- ! J - Print the Comp.archives Archive-directory line.
- X K - Print the Keywords line.
- X L - Print the Lines line.
- X M - Print the Message-ID line.
- ***************
- *** 92,99 ****
- X Q - Print the Expires line.
- X R - Print the References line.
- X S - Print the Subject line.
- - T - Print the Subject Topic.
- - V - Print the Volume-Issue article filename.
- X W - Print the Architecture line.
- X X - Print the Version-number.
- X a - Print the Archive-name line.
- --- 92,97 ----
- ***************
- *** 102,108 ****
- X d - Print the Distribution line.
- X e - Print the Environment line.
- X f - Print the Followup-to line.
- ! h - Print the X-Checksum-Snefru line.
- X o - Print the Organization line.
- X p - Print the Posting-number line.
- X r - Print the Reply-to line.
- --- 100,107 ----
- X d - Print the Distribution line.
- X e - Print the Environment line.
- X f - Print the Followup-to line.
- ! h - Print the X-Md4-Signature line or
- ! Print the X-Checksum-Snefru line.
- X o - Print the Organization line.
- X p - Print the Posting-number line.
- X r - Print the Reply-to line.
- ***************
- *** 118,123 ****
- --- 117,124 ----
- X B - Print the base file name.
- X G - Print the newsGroup name.
- X O - Print the Full path of the specified file.
- + Z - Print the Relative path of the file within the
- + newsgroup archive directory.
- X i - Print the issue (if archive) line.
- X l - Print the Author's logon address line.
- X n - Print the Author's name.
- ***************
- *** 126,133 ****
- X Additional Specification Characters
- X
- X T - Print the Subject line's topic information.
- X % - Print a %, no argument is converted.
- ! ..nr
- X .PP
- X In addition to the conversion characters, the following
- X characters have meaning during the formatting of the output.
- --- 127,135 ----
- X Additional Specification Characters
- X
- X T - Print the Subject line's topic information.
- + V - Print the Volume-Issue article filename.
- X % - Print a %, no argument is converted.
- ! .nf
- X .PP
- X In addition to the conversion characters, the following
- X characters have meaning during the formatting of the output.
- diff -cr ../usenet/article.h ./article.h
- *** ../usenet/article.h Wed May 8 21:31:57 1991
- --- ./article.h Thu May 9 01:36:32 1991
- ***************
- *** 1,5 ****
- X /*
- ! ** @(#)article.h 2.2 2/23/91
- X **
- X */
- X
- --- 1,5 ----
- X /*
- ! ** @(#)article.h 2.3 5/9/91
- X **
- X */
- X
- ***************
- *** 57,63 ****
- X #define ARCH_NAME 23
- X #define ARTICLEID 24
- X #define PATCH_TO 25
- ! #define X_CHECKSUM_SNEFRU 26
- X #define ORIGINAL_POSTING_BY 27
- X #define ORIGINAL_SUBJECT 28
- X #define ARCHIVE_SITE 29
- --- 57,63 ----
- X #define ARCH_NAME 23
- X #define ARTICLEID 24
- X #define PATCH_TO 25
- ! #define X_CHECKSUM 26
- X #define ORIGINAL_POSTING_BY 27
- X #define ORIGINAL_SUBJECT 28
- X #define ARCHIVE_SITE 29
- ***************
- *** 103,109 ****
- X char posting_num[BUFLEN]; /* Posting-number: */
- X char archive_name[BUFLEN]; /* Archive-name: */
- X char patch_to[BUFLEN]; /* Patch-To: */
- ! char x_checksum_snefru[BUFLEN]; /* X-Checksum-Snefru: */
- X char orig_poster[BUFLEN]; /* Original-posting-by: */
- X char orig_subject[BUFLEN]; /* Original-subject: */
- X char archive_site[BUFLEN]; /* Archive-site: */
- --- 103,110 ----
- X char posting_num[BUFLEN]; /* Posting-number: */
- X char archive_name[BUFLEN]; /* Archive-name: */
- X char patch_to[BUFLEN]; /* Patch-To: */
- ! char x_checksum[BUFLEN]; /* X-Checksum-Snefru: or */
- ! /* X-Md4-Signature: */
- X char orig_poster[BUFLEN]; /* Original-posting-by: */
- X char orig_subject[BUFLEN]; /* Original-subject: */
- X char archive_site[BUFLEN]; /* Archive-site: */
- diff -cr ../usenet/ckconfig.c ./ckconfig.c
- *** ../usenet/ckconfig.c Wed May 8 21:31:57 1991
- --- ./ckconfig.c Thu May 9 01:39:07 1991
- ***************
- *** 24,30 ****
- X ** all ideas to me. This software is going to be maintained and
- X ** enhanced as deemed necessary by the community.
- X */
- ! char sccsid[] = "@(#)ckconfig.c 2.2 2/23/91";
- X
- X #include <sys/types.h>
- X #include <stdio.h>
- --- 24,30 ----
- X ** all ideas to me. This software is going to be maintained and
- X ** enhanced as deemed necessary by the community.
- X */
- ! char sccsid[] = "@(#)ckconfig.c 2.3 5/9/91";
- X
- X #include <sys/types.h>
- X #include <stdio.h>
- ***************
- *** 125,135 ****
- X default_type == ONLY_ARCHIVE_NAME ? "Only-Archive-Name":
- X default_type == EXTERNAL_COMMAND ? "External-Command":
- X "Article-Number");
- ! if (default_type == EXTERNAL_COMMAND) {
- ! /* Must have an ARCHIVE_CMD line... */
- ! (void) fprintf(logfp,"Archive Command: %s\n",
- ! *arch_command ? arch_command : "ERROR - NOT SPECIFIED");
- ! }
- X
- X (void) fprintf(logfp,"Patches Type: %s\n",
- X default_patch_type == PACKAGE ? "Package" : "Historical");
- --- 125,132 ----
- X default_type == ONLY_ARCHIVE_NAME ? "Only-Archive-Name":
- X default_type == EXTERNAL_COMMAND ? "External-Command":
- X "Article-Number");
- ! (void) fprintf(logfp,"Archive Command: %s\n",
- ! *arch_command ? arch_command : "NOT SPECIFIED");
- X
- X (void) fprintf(logfp,"Patches Type: %s\n",
- X default_patch_type == PACKAGE ? "Package" : "Historical");
- diff -cr ../usenet/disp_grp.c ./disp_grp.c
- *** ../usenet/disp_grp.c Wed May 8 21:32:00 1991
- --- ./disp_grp.c Thu May 9 01:41:16 1991
- ***************
- *** 8,14 ****
- X **
- X */
- X #ifndef lint
- ! static char SID[] = "@(#)disp_grp.c 2.2 2/23/91";
- X #endif
- X
- X #include <sys/types.h>
- --- 8,14 ----
- X **
- X */
- X #ifndef lint
- ! static char SID[] = "@(#)disp_grp.c 2.3 5/9/91";
- X #endif
- X
- X #include <sys/types.h>
- ***************
- *** 26,31 ****
- --- 26,32 ----
- X extern char mail[];
- X extern char compress[];
- X extern char checkhash[];
- + extern char arch_command[];
- X
- X struct passwd *pw;
- X struct passwd *getpwuid();
- ***************
- *** 88,95 ****
- X "Article-Number");
- X if (ng->type == EXTERNAL_COMMAND) {
- X /* Must have an ARCHIVE_CMD line... */
- ! (void) fprintf(logfp,"\tArchive Command: %s\n",
- ! *(ng->arch_command) ? ng->arch_command : "ERROR - NOT SPECIFIED");
- X }
- X
- X (void) fprintf(logfp,"\tPatches Type: %s\n",
- --- 89,98 ----
- X "Article-Number");
- X if (ng->type == EXTERNAL_COMMAND) {
- X /* Must have an ARCHIVE_CMD line... */
- ! (void)fprintf(logfp,"\tArchive Command: %-15s\n",
- ! *ng->arch_command != '\0' ? ng->arch_command :
- ! !*arch_command ? "ERROR - (*NO* DEFAULT)" :
- ! fill_in_defaults ? arch_command : "NOT SPECIFIED (DEFAULT)");
- X }
- X
- X (void) fprintf(logfp,"\tPatches Type: %s\n",
- diff -cr ../usenet/format.c ./format.c
- *** ../usenet/format.c Wed May 8 21:31:53 1991
- --- ./format.c Thu May 9 01:44:09 1991
- ***************
- *** 8,14 ****
- X **
- X */
- X #if !defined(lint) && !defined(SABER)
- ! static char SID[] = "@(#)format.c 2.2 2/23/91";
- X #endif
- X
- X #include <stdio.h>
- --- 8,14 ----
- X **
- X */
- X #if !defined(lint) && !defined(SABER)
- ! static char SID[] = "@(#)format.c 2.3 5/9/91";
- X #endif
- X
- X #include <stdio.h>
- ***************
- *** 40,45 ****
- --- 40,46 ----
- X extern int default_modes;
- X # ifdef NNTP
- X extern char nntp[];
- + extern char nntp_tmp_path[];
- X # endif /*NNTP*/
- X #endif /* RKIVE */
- X
- ***************
- *** 243,248 ****
- --- 244,254 ----
- X case 'X': /* Version-number */
- X cp = add_string(cp, header.version_number);
- X continue;
- + #ifdef RKIVE
- + case 'Z': /* Relative pathname of archived file */
- + cp = add_string(cp,substr(filename,newsgrp->location)?filename+strlen(newsgrp->location)+1:filename);
- + continue;
- + #endif
- X case 'a': /* Archive-name */
- X cp = add_string(cp, header.archive_name);
- X continue;
- ***************
- *** 261,268 ****
- X case 'f': /* Followup-to */
- X cp = add_string(cp, header.followup_to);
- X continue;
- ! case 'h': /* X-Checksum-Snefru */
- ! cp = add_string(cp, header.x_checksum_snefru);
- X continue;
- X case 'i': /* issue (if archive) */
- X cp = add_string(cp,itoa(article.issue));
- --- 267,274 ----
- X case 'f': /* Followup-to */
- X cp = add_string(cp, header.followup_to);
- X continue;
- ! case 'h': /* X-Checksum-Snefru or X-Md4-Signature */
- ! cp = add_string(cp, header.x_checksum);
- X continue;
- X case 'i': /* issue (if archive) */
- X cp = add_string(cp,itoa(article.issue));
- ***************
- *** 419,424 ****
- --- 425,433 ----
- X cp = add_string(cp,newsgrp->mail_list);
- X continue;
- X #ifdef NNTP
- + case 'F': /* NNTP Temporary transfer file */
- + cp = add_string(cp,nntp_tmp_path);
- + continue;
- X case 'N': /* NNTP */
- X /* print out according to precedence. */
- X if (*newsgrp->nntp)
- diff -cr ../usenet/header.c ./header.c
- *** ../usenet/header.c Wed May 8 21:31:51 1991
- --- ./header.c Thu May 9 01:45:11 1991
- ***************
- *** 9,15 ****
- X */
- X
- X #if !defined(lint) && !defined(SABER)
- ! static char SID[] = "@(#)header.c 2.2 2/23/91";
- X #endif
- X
- X #include <stdio.h>
- --- 9,15 ----
- X */
- X
- X #if !defined(lint) && !defined(SABER)
- ! static char SID[] = "@(#)header.c 2.3 5/9/91";
- X #endif
- X
- X #include <stdio.h>
- ***************
- *** 78,93 ****
- X if (its("Patch-to: "))
- X return PATCH_TO;
- X
- ! /* The X-Checksum-Snefru archive is being used by */
- ! /* comp.sources.unix and comp.sources.misc to */
- ! /* verify articles. */
- X
- X if (its("X-Checksum-Snefru: "))
- ! return X_CHECKSUM_SNEFRU;
- X
- X /* The following lines are used by comp.sources.games */
- X /* currently to indicate the environmental keywords */
- X /* indicating what is required by the software to run. */
- X
- X if (its("Environment: "))
- X return ENVIRONMENT;
- --- 78,99 ----
- X if (its("Patch-to: "))
- X return PATCH_TO;
- X
- ! /* The X-Checksum-Snefru archive was being used by */
- ! /* comp.sources.unix and comp.sources.misc to verify */
- ! /* articles. Once snefru was broken, the moderators */
- ! /* of c.s.u and c.s.m switched to use X-Md4-Signature: */
- ! /* which is based on MD4 (RFC1186). */
- X
- X if (its("X-Checksum-Snefru: "))
- ! return X_CHECKSUM;
- ! if (its("X-Md4-Signature: "))
- ! return X_CHECKSUM;
- X
- X /* The following lines are used by comp.sources.games */
- X /* currently to indicate the environmental keywords */
- X /* indicating what is required by the software to run. */
- + /* Supersedes: is also used by comp.sources.misc to */
- + /* indicate when a posting totally replaces another. */
- X
- X if (its("Environment: "))
- X return ENVIRONMENT;
- ***************
- *** 288,294 ****
- X header.posting_num[0] = '\0'; /* Posting-number: */
- X header.archive_name[0] = '\0'; /* Archive-name: */
- X header.patch_to[0] = '\0'; /* Patch-To: */
- ! header.x_checksum_snefru[0] = '\0'; /* X-Checksum-Snefru: */
- X header.orig_poster[0] = '\0'; /* Original-posting-by: */
- X header.orig_subject[0] = '\0'; /* Original-subject: */
- X header.archive_site[0] = '\0'; /* Archive-site: */
- --- 294,301 ----
- X header.posting_num[0] = '\0'; /* Posting-number: */
- X header.archive_name[0] = '\0'; /* Archive-name: */
- X header.patch_to[0] = '\0'; /* Patch-To: */
- ! header.x_checksum[0] = '\0'; /* X-Checksum-Snefru: or */
- ! /* X-Md4-Signature */
- X header.orig_poster[0] = '\0'; /* Original-posting-by: */
- X header.orig_subject[0] = '\0'; /* Original-subject: */
- X header.archive_site[0] = '\0'; /* Archive-site: */
- ***************
- *** 736,743 ****
- X *sp = '\0';
- X break;
- X
- ! case X_CHECKSUM_SNEFRU:
- ! data(header.x_checksum_snefru,sizeof(header.x_checksum_snefru),"X_CHECKSUM_SNEFRU:", X_CHECKSUM_SNEFRU);
- X break;
- X
- X case ORIGINAL_POSTING_BY:
- --- 743,750 ----
- X *sp = '\0';
- X break;
- X
- ! case X_CHECKSUM:
- ! data(header.x_checksum,sizeof(header.x_checksum),"X_CHECKSUM:", X_CHECKSUM);
- X break;
- X
- X case ORIGINAL_POSTING_BY:
- Only in .: localize.smpl
- diff -cr ../usenet/makedir.c ./makedir.c
- *** ../usenet/makedir.c Wed May 8 21:32:01 1991
- --- ./makedir.c Thu May 9 01:48:11 1991
- ***************
- *** 9,15 ****
- X */
- X
- X #if !defined(lint) && !defined(SABER)
- ! static char SID[] = "@(#)makedir.c 2.1 2/21/91";
- X #endif
- X
- X #include <sys/types.h>
- --- 9,15 ----
- X */
- X
- X #if !defined(lint) && !defined(SABER)
- ! static char SID[] = "@(#)makedir.c 2.2 5/9/91";
- X #endif
- X
- X #include <sys/types.h>
- ***************
- *** 34,40 ****
- X int strlen();
- X int chown();
- X
- ! #ifndef HAVE_MKDIR
- X # ifndef USE_SYSMKDIR
- X
- X char *strcat();
- --- 34,40 ----
- X int strlen();
- X int chown();
- X
- ! #ifndef MKDIR
- X # ifndef USE_SYSMKDIR
- X
- X char *strcat();
- ***************
- *** 58,69 ****
- X
- X char crnt_dir[MAXNAMLEN];
- X
- ! #else /* HAVE_MKDIR */
- X
- X int mkdir();
- X int svmask; /* Old umask value */
- X
- ! #endif /* HAVE_MKDIR */
- X
- X if ((strlen(dirpath) == 0) || (dirpath[0] == '\0')) {
- X (void) fprintf(errfp,"%s: cannot make %s\n", progname,dirpath);
- --- 58,69 ----
- X
- X char crnt_dir[MAXNAMLEN];
- X
- ! #else /* MKDIR */
- X
- X int mkdir();
- X int svmask; /* Old umask value */
- X
- ! #endif /* MKDIR */
- X
- X if ((strlen(dirpath) == 0) || (dirpath[0] == '\0')) {
- X (void) fprintf(errfp,"%s: cannot make %s\n", progname,dirpath);
- ***************
- *** 76,82 ****
- X return(0);
- X }
- X
- ! #ifdef HAVE_MKDIR
- X
- X /*
- X ** mkdir function supplied in system library.
- --- 76,82 ----
- X return(0);
- X }
- X
- ! #ifdef MKDIR
- X
- X /*
- X ** mkdir function supplied in system library.
- ***************
- *** 176,181 ****
- X return(-1);
- X }
- X #endif /* USE_SYSMKDIR */
- ! #endif /* HAVE_MKDIR */
- X return(0);
- X }
- --- 176,181 ----
- X return(-1);
- X }
- X #endif /* USE_SYSMKDIR */
- ! #endif /* MKDIR */
- X return(0);
- X }
- diff -cr ../usenet/news_arc.c ./news_arc.c
- *** ../usenet/news_arc.c Wed May 8 21:31:46 1991
- --- ./news_arc.c Thu May 9 01:49:47 1991
- ***************
- *** 9,15 ****
- X */
- X
- X #if !defined(lint) && !defined(SABER)
- ! static char SID[] = "@(#)news_arc.c 2.2 2/23/91";
- X #endif
- X
- X #include <sys/types.h>
- --- 9,15 ----
- X */
- X
- X #if !defined(lint) && !defined(SABER)
- ! static char SID[] = "@(#)news_arc.c 2.3 5/9/91";
- X #endif
- X
- X #include <sys/types.h>
- ***************
- *** 58,63 ****
- --- 58,64 ----
- X void store_line();
- X void dump_article();
- X void record_problem();
- + void write_patch_log();
- X
- X void get_header(filename)
- X char *filename;
- ***************
- *** 120,125 ****
- --- 121,127 ----
- X { "Date:", (sizeof "Date:") },
- X { "Approved:", (sizeof "Approved:") },
- X { "X-Checksum-Snefru:", (sizeof "X-Checksum-Snefru:") },
- + { "X-Md4-Signature:", (sizeof "X-Md4-Signature:") },
- X { NULL, 0 },
- X };
- X
- ***************
- *** 252,258 ****
- X char *path;
- X {
- X void write_archived();
- - void write_patch_log();
- X
- X if (copy(filename,path) != 0) {
- X (void) fprintf(errfp,"copy failed for %s to %s\n",filename,path);
- --- 254,259 ----
- ***************
- *** 308,316 ****
- X */
- X
- X /*
- ! ** If the Snefru header exists, check the article checksum for validity.
- X */
- ! if (header.x_checksum_snefru[0]) {
- X if (*(ng->checkhash)) {
- X if (do_checkhash(ng->checkhash, filename) != 0)
- X return(do_problem(CHECKHASH_PROB,ng,filename,path));
- --- 309,318 ----
- X */
- X
- X /*
- ! ** If the MD4 or Snefru headers exists, check the article's
- ! ** checksum for validity.
- X */
- ! if (header.x_checksum[0]) {
- X if (*(ng->checkhash)) {
- X if (do_checkhash(ng->checkhash, filename) != 0)
- X return(do_problem(CHECKHASH_PROB,ng,filename,path));
- ***************
- *** 421,431 ****
- X ** issue number to be used is available.
- X ** There should be no duplicates here ever... :-)
- X ** [ just don't blow away your .archived file... :-( ]
- X */
- X do {
- ! ++inum;
- ! chronpath(ng->location, path, inum);
- ! } while (stat(path ,&sb) == 0);
- X break;
- X case ONLY_ARCHIVE_NAME:
- X /*
- --- 423,442 ----
- X ** issue number to be used is available.
- X ** There should be no duplicates here ever... :-)
- X ** [ just don't blow away your .archived file... :-( ]
- + ** Need to assure that the compression suffix in not attached
- + ** as well since the prior run that day may use compression.
- X */
- X do {
- ! do {
- ! ++inum;
- ! chronpath(ng->location, path, inum);
- ! } while (stat(path ,&sb) == 0);
- ! /*
- ! ** expand the path to the file to include the
- ! ** compression suffix if necessary.
- ! */
- ! final_path = expand_name(path, ng);
- ! } while (stat(final_path ,&sb) == 0);
- X break;
- X case ONLY_ARCHIVE_NAME:
- X /*
- ***************
- *** 517,523 ****
- X if (*ng->arch_command)
- X (void) strcpy(command, ng->arch_command);
- X else if (*arch_command)
- ! (void) strcpy(command, ng->arch_command);
- X else
- X return(do_problem(EXTERNAL_PROB,ng,filename,path));
- X
- --- 528,534 ----
- X if (*ng->arch_command)
- X (void) strcpy(command, ng->arch_command);
- X else if (*arch_command)
- ! (void) strcpy(command, arch_command);
- X else
- X return(do_problem(EXTERNAL_PROB,ng,filename,path));
- X
- ***************
- *** 643,648 ****
- --- 654,660 ----
- X #endif /*MV_ORIGINAL */
- X
- X char pmess[BUFSIZ];
- + char *final_path;
- X int nm;
- X struct stat sb;
- X
- ***************
- *** 670,679 ****
- X (void) strcat(pmess,"has an invalid archive TYPE specified.\n");
- X break;
- X case CHECKHASH_PROB:
- ! (void) strcat(pmess,"failed Snefru checkhash test.\n");
- X break;
- X case MSNG_HASH_PROB:
- ! (void) strcat(pmess,"is missing expected Snefru header.\n");
- X break;
- X case DUP_PROB:
- X if (article.repost != TRUE)
- --- 682,691 ----
- X (void) strcat(pmess,"has an invalid archive TYPE specified.\n");
- X break;
- X case CHECKHASH_PROB:
- ! (void) strcat(pmess,"failed article checksum verification test.\n");
- X break;
- X case MSNG_HASH_PROB:
- ! (void) strcat(pmess,"is missing expected article checksum verifications header.\n");
- X break;
- X case DUP_PROB:
- X if (article.repost != TRUE)
- ***************
- *** 780,789 ****
- X
- X nm = 1;
- X
- ! while (stat(path, &sb) == 0) {
- ! (void) sprintf(path,"%s/%s/%s.%d",problems_dir,ng->ng_path,file,nm);
- ! ++nm;
- ! }
- X
- X /* Display and record the actions */
- X (void) sprintf(pmess,"\tStoring Article %s at %s\n", file, path);
- --- 792,812 ----
- X
- X nm = 1;
- X
- ! do {
- ! final_path = expand_name(path, ng);
- ! /*
- ! ** Let's assure that neither the uncompressed or
- ! ** the compressed version of the article number
- ! ** exists where we want to put this problem.
- ! ** Don't need to create a different problem...
- ! */
- ! if ((stat(path, &sb) == 0) || (stat(final_path, &sb) == 0)) {
- ! (void) sprintf(path,"%s/%s/%s.%d",problems_dir,ng->ng_path,file,nm);
- ! ++nm;
- ! }
- ! else
- ! nm = 0;
- ! } while (nm != 0);
- X
- X /* Display and record the actions */
- X (void) sprintf(pmess,"\tStoring Article %s at %s\n", file, path);
- ***************
- *** 849,854 ****
- --- 872,878 ----
- X VOLUME, now.tm_year, month[now.tm_mon],
- X now.tm_year,now.tm_mon+1,now.tm_mday,seqnum);
- X #endif /* NO_MONTH_DIR */
- + article.volume = now.tm_year;
- X }
- X
- X void write_patch_log(ng, path)
- ***************
- *** 954,957 ****
- X else
- X return(0);
- X }
- -
- --- 978,980 ----
- diff -cr ../usenet/nntpart.c ./nntpart.c
- *** ../usenet/nntpart.c Wed May 8 21:31:54 1991
- --- ./nntpart.c Thu May 9 01:52:17 1991
- ***************
- *** 9,15 ****
- X */
- X
- X #if !defined(lint) && !defined(SABER)
- ! static char *SID = "@(#)nntpart.c 2.1 2/21/91";
- X #endif
- X
- X /*LINTLIBRARY*/
- --- 9,15 ----
- X */
- X
- X #if !defined(lint) && !defined(SABER)
- ! static char *SID = "@(#)nntpart.c 2.2 5/9/91";
- X #endif
- X
- X /*LINTLIBRARY*/
- ***************
- *** 155,161 ****
- --- 155,169 ----
- X return;
- X }
- X
- + /*
- + ** nntp_tmp_path[]
- + **
- + ** Holds the full pathname of the nntp transfer file.
- + ** For use with external command archiving...
- + */
- X
- + char nntp_tmp_path[MAXNAMLEN];
- +
- X int nntp_retrieve_article(filename,which_time)
- X char *filename;
- X int which_time;
- ***************
- *** 249,254 ****
- --- 257,263 ----
- X ** the Article-Number form of archiving.
- X */
- X (void) sprintf(filename,"%d",f);
- + (void) sprintf(nntp_tmp_path,"%s/%d",TMPDIR,f);
- X
- X /*
- X ** Build the nntp command string
- diff -cr ../usenet/patchlevel.h ./patchlevel.h
- *** ../usenet/patchlevel.h Wed May 8 21:32:02 1991
- --- ./patchlevel.h Thu May 9 01:53:31 1991
- ***************
- *** 1,5 ****
- X /*
- ! ** @(#)patchlevel.h 2.2 2/23/91
- X */
- X #define RELEASE 2
- ! #define PATCHLEVEL 0
- --- 1,5 ----
- X /*
- ! ** @(#)patchlevel.h 2.3 5/9/91
- X */
- X #define RELEASE 2
- ! #define PATCHLEVEL 1
- Common subdirectories: ../usenet/port and ./port
- diff -cr ../usenet/record_arc.c ./record_arc.c
- *** ../usenet/record_arc.c Wed May 8 21:32:03 1991
- --- ./record_arc.c Thu May 9 01:55:39 1991
- ***************
- *** 9,15 ****
- X */
- X
- X #if !defined(lint) && !defined(SABER)
- ! static char SID[] = "@(#)record_arc.c 2.1 2/21/91";
- X #endif
- X
- X #include <sys/types.h>
- --- 9,15 ----
- X */
- X
- X #if !defined(lint) && !defined(SABER)
- ! static char SID[] = "@(#)record_arc.c 2.2 5/9/91";
- X #endif
- X
- X #include <sys/types.h>
- ***************
- *** 130,137 ****
- X if (test)
- X return;
- X
- ! if ((stat(path ,&sb) != 0))
- ! if (mkparents(path) == -1)
- X return; /* unable to build parent directories */
- X
- X /*
- --- 130,137 ----
- X if (test)
- X return;
- X
- ! if ((stat(newsgrp->arc_done ,&sb) != 0))
- ! if (mkparents(newsgrp->arc_done) == -1)
- X return; /* unable to build parent directories */
- X
- X /*
- diff -cr ../usenet/retrieve.c ./retrieve.c
- *** ../usenet/retrieve.c Wed May 8 21:31:58 1991
- --- ./retrieve.c Thu May 9 01:57:18 1991
- ***************
- *** 9,15 ****
- X */
- X
- X #if !defined(lint) && !defined(SABER)
- ! static char SID[] = "@(#)retrieve.c 2.1 2/21/91";
- X #endif
- X
- X #include <sys/types.h>
- --- 9,15 ----
- X */
- X
- X #if !defined(lint) && !defined(SABER)
- ! static char SID[] = "@(#)retrieve.c 2.2 5/9/91";
- X #endif
- X
- X #include <sys/types.h>
- ***************
- *** 17,22 ****
- --- 17,24 ----
- X #include <stdio.h>
- X #include "rkive.h"
- X
- + #define TMPDIR "/tmp"
- +
- X char newsgroup_directory[MAXNAMLEN];
- X
- X extern FILE *inputfp;
- ***************
- *** 70,77 ****
- X ** to retrieve an article:
- X ** 1. Retrieve an article from a remote site via NNTP,
- X ** 2. Search the newsgroup directory for newsarticles,
- ! ** 3. Receive a newsarticle filename on standard input,
- ! ** 4. Receive newsarticle filenames from a batch file.
- X */
- X
- X int retrieve_article(filename,which_time)
- --- 72,80 ----
- X ** to retrieve an article:
- X ** 1. Retrieve an article from a remote site via NNTP,
- X ** 2. Search the newsgroup directory for newsarticles,
- ! ** 3. Read an article from standard input,
- ! ** 4. Receive a newsarticle filename on standard input,
- ! ** 5. Receive newsarticle filenames from a batch file.
- X */
- X
- X int retrieve_article(filename,which_time)
- ***************
- *** 83,88 ****
- --- 86,92 ----
- X int strlen();
- X int unlink();
- X int fclose();
- + int creat();
- X char *strcpy();
- X
- X FILE *efopen();
- ***************
- *** 95,105 ****
- X static DIR *dfd;
- X static char *dir = ".";
- X char ibuf[BUFSIZ];
- X
- - #ifdef NNTP
- - if (retrieve == FROM_NNTP)
- - return(nntp_retrieve_article(filename,which_time));
- - #endif /*NNTP*/
- X
- X if (which_time == 1) {
- X (void) strcpy(newsgrp->ng_path, newsgrp->ng_name);
- --- 99,107 ----
- X static DIR *dfd;
- X static char *dir = ".";
- X char ibuf[BUFSIZ];
- + int len;
- + int tmpfp;
- X
- X
- X if (which_time == 1) {
- X (void) strcpy(newsgrp->ng_path, newsgrp->ng_name);
- ***************
- *** 115,121 ****
- X *rp = '/'; /* to create */
- X rp++; /* the disk */
- X } /* location */
- !
- X (void) sprintf(newsgroup_directory,"%s/%s", spooldir,newsgrp->ng_path);
- X
- X if (chdir(newsgroup_directory) != 0) {
- --- 117,130 ----
- X *rp = '/'; /* to create */
- X rp++; /* the disk */
- X } /* location */
- ! }
- !
- ! #ifdef NNTP
- ! if (retrieve == FROM_NNTP)
- ! return(nntp_retrieve_article(filename,which_time));
- ! #endif /*NNTP*/
- !
- ! if (which_time == 1) {
- X (void) sprintf(newsgroup_directory,"%s/%s", spooldir,newsgrp->ng_path);
- X
- X if (chdir(newsgroup_directory) != 0) {
- ***************
- *** 164,174 ****
- X }
- X
- X /*
- X ** The following code is for retrieval types FROM_NAME and FROM_BATCHFILE
- X ** only. Any other type is an unknown software error ...
- X */
- X if (retrieve != FROM_NAME && retrieve != FROM_BATCHFILE) {
- ! (void) fprintf(errfp, "Invalid retrieval type encountered - %d\n",retrieve);
- X return(ERROR_ENCOUNTERED);
- X }
- X
- --- 173,242 ----
- X }
- X
- X /*
- + ** FROM_STDIN archiving.
- + **
- + ** First create a temp file name and write the information into
- + ** the temp file. Write the data passed on stdin into the temp file.
- + ** Then pass the temp file name back to rkive to use from then on.
- + */
- +
- + if (retrieve == FROM_STDIN) {
- + if ((rp = tempnam(TMPDIR, "rkiveXXXXXX")) == NULL) {
- + (void) fprintf(errfp, "Can't create tmpfile name\n");
- + return(ERROR_ENCOUNTERED);
- + }
- +
- + if ((tmpfp = creat(rp, 0644)) == NULL) {
- + (void) fprintf(errfp, "Can't create tmpfile\n");
- + return(ERROR_ENCOUNTERED);
- + }
- +
- + len = -1;
- +
- + while (fgets(ibuf, BUFSIZ, inputfp) != NULL) {
- + len = strlen(ibuf);
- + if (write(tmpfp, ibuf, len) != len)
- + perror("write");
- + }
- + (void) close(tmpfp);
- +
- + /*
- + ** If len was never assigned then stdin was closed.
- + ** and no reason at all to go any further, we are
- + ** done. Return so...
- + */
- + if (len == -1) {
- + /*
- + ** no more filenames on inputfp...
- + */
- +
- + (void) unlink(rp);
- + return(DONE);
- + }
- +
- + /*
- + ** Check to assure the file is available and contains
- + ** some data...
- + */
- + if (!valid_disk_article(rp,rp)) {
- + return(ERROR_ENCOUNTERED);
- + }
- +
- + /*
- + ** We have real data here...
- + */
- + (void) strcpy(filename,rp);
- + free(rp);
- + return(RETRIEVED);
- + }
- +
- + /*
- X ** The following code is for retrieval types FROM_NAME and FROM_BATCHFILE
- X ** only. Any other type is an unknown software error ...
- X */
- X if (retrieve != FROM_NAME && retrieve != FROM_BATCHFILE) {
- ! (void) fprintf(errfp, "Invalid retrieval type encountered - %d\n",
- ! retrieve);
- X return(ERROR_ENCOUNTERED);
- X }
- X
- diff -cr ../usenet/rkive.5 ./rkive.5
- *** ../usenet/rkive.5 Wed May 8 21:31:54 1991
- --- ./rkive.5 Thu May 9 01:58:47 1991
- ***************
- *** 1,4 ****
- ! 'br "@(#)rkive.5 2.3 2/24/91"
- X .TH RKIVE 5
- X .SH NAME
- X rkive.cf \- USENET Source Archiver Configuration File.
- --- 1,4 ----
- ! 'br "@(#)rkive.5 2.4 5/9/91"
- X .TH RKIVE 5
- X .SH NAME
- X rkive.cf \- USENET Source Archiver Configuration File.
- ***************
- *** 117,125 ****
- X .IP "CHECKHASH ="
- X The location of the checkhash utility if the files are to be tested for
- X transit damage. Currently, only comp.sources.unix and comp.sources.misc
- ! supports this test with the X-Checksum-Snerfu: header. If this variable
- ! is specified, it must contain the full path to the command used to perform
- ! the test.
- X .IP "NNTP ="
- X The location of the NNTP server where the articles are to be archived from.
- X This can be specified globally if all or most newsgroups are archived
- --- 117,126 ----
- X .IP "CHECKHASH ="
- X The location of the checkhash utility if the files are to be tested for
- X transit damage. Currently, only comp.sources.unix and comp.sources.misc
- ! supports this type of testing. The X-Checksum-Snerfu: header has been used
- ! in the past. This header is being phased out in favor of the X-Md4-Signature:
- ! header. If this variable is specified, it must contain the full path to the
- ! command used to perform the verification testing on the articles.
- X .IP "NNTP ="
- X The location of the NNTP server where the articles are to be archived from.
- X This can be specified globally if all or most newsgroups are archived
- ***************
- *** 263,271 ****
- X used to perform the compression.
- X .IP "CHECKHASH :"
- X The location of the checkhash utility if the files are to be tested for
- ! transit damage. Currently, only comp.sources.unix supports this test with
- ! the X-Checksum-Snerfu: header. If this variable is specified, it must contain
- ! the full path to the command used to perform the test.
- X .IP "NNTP :"
- X The location of the NNTP server where the articles are to be archived from.
- X This can be specified globally if all or most newsgroups are archived
- --- 264,272 ----
- X used to perform the compression.
- X .IP "CHECKHASH :"
- X The location of the checkhash utility if the files are to be tested for
- ! transit damage. Currently, only comp.sources.unix supports this type of
- ! testing. If this variable is specified, it must contain the full path to
- ! the command used to perform the test.
- X .IP "NNTP :"
- X The location of the NNTP server where the articles are to be archived from.
- X This can be specified globally if all or most newsgroups are archived
- ***************
- *** 331,337 ****
- X .br
- X g - GROUP - Group id specified.
- X .br
- ! h - CHECKHASH - Path to the checkhash utility.
- X .br
- X i - INDEX - Location of the newsgroup index.
- X .br
- --- 332,338 ----
- X .br
- X g - GROUP - Group id specified.
- X .br
- ! h - CHECKHASH - Path to checkhash or checkmd4 utility.
- X .br
- X i - INDEX - Location of the newsgroup index.
- X .br
- ***************
- *** 358,363 ****
- --- 359,366 ----
- X b - Newsgroup's spool directory path.
- X .br
- X n - Newsgroup name.
- + .br
- + N - Disk path to the NNTP temporary transfer file.
- X .br
- X P - Actual disk path to the file to be archived.
- X .br
- diff -cr ../usenet/rkive.c ./rkive.c
- *** ../usenet/rkive.c Wed May 8 21:31:49 1991
- --- ./rkive.c Thu May 9 02:00:19 1991
- ***************
- *** 37,45 ****
- X #include "cfg.h"
- X
- X #ifdef NNTP
- ! char sccsid[] = "@(#)rkive.c 2.2 2/23/91 - NNTP Version";
- X #else
- ! char sccsid[] = "@(#)rkive.c 2.2 2/23/91";
- X #endif /*!NNTP*/
- X
- X /*
- --- 37,45 ----
- X #include "cfg.h"
- X
- X #ifdef NNTP
- ! char sccsid[] = "@(#)rkive.c 2.3 5/9/91 - NNTP Version";
- X #else
- ! char sccsid[] = "@(#)rkive.c 2.3 5/9/91";
- X #endif /*!NNTP*/
- X
- X /*
- ***************
- *** 46,63 ****
- X ** This is necessary since the builtin makedir call uses
- X ** mknod which is a superuser only call for directories.
- X */
- ! #if (!HAVE_MKDIR && !USE_SYSMKDIR)
- ! #define ROOT_ONLY
- X #endif
- X
- - /*
- - ** The following define is use for compilation
- - ** so that format_output can use the extended
- - ** fomating characters that are not available
- - ** in article.
- - */
- - #define RKIVE
- -
- X char tmp_mailfile[] = "/tmp/rkive.mail";
- X char global_mailfile[] = "/tmp/gbl.mail";
- X
- --- 46,57 ----
- X ** This is necessary since the builtin makedir call uses
- X ** mknod which is a superuser only call for directories.
- X */
- ! #ifndef MKDIR
- ! # ifndef USE_SYSMKDIR
- ! # define ROOT_ONLY
- ! # endif
- X #endif
- X
- X char tmp_mailfile[] = "/tmp/rkive.mail";
- X char global_mailfile[] = "/tmp/gbl.mail";
- X
- ***************
- *** 131,136 ****
- --- 125,132 ----
- X (void)fprintf(stderr," Specify alternate configuration file to be used.\n");
- X (void)fprintf(stderr," -n newsgroup\n");
- X (void)fprintf(stderr," Specify newsgroup to archive or display status for.\n");
- + (void)fprintf(stderr," -A newsgroup\n");
- + (void)fprintf(stderr," Take an article to archive from stdin.\n");
- X (void)fprintf(stderr," -B batchfile\n");
- X (void)fprintf(stderr," Read names of articles to archive from batchfile.\n");
- X (void)fprintf(stderr," Note: Use of the -B option requires a newsgroup\n");
- ***************
- *** 171,178 ****
- X config_file = LOCATION;
- X
- X if (argc > 1) {
- ! while ((c = getopt(argc, argv, "?dgstuvVn:f:B:S:y")) != EOF) {
- X switch (c) {
- X case 'B': /* take filenames from batch file */
- X retrieve = FROM_BATCHFILE;
- X batch_file = optarg;
- --- 167,178 ----
- X config_file = LOCATION;
- X
- X if (argc > 1) {
- ! while ((c = getopt(argc, argv, "?dgstuvVn:f:A:B:S:y")) != EOF) {
- X switch (c) {
- + case 'A': /* stdin article archiving */
- + retrieve = FROM_STDIN;
- + nwsg = optarg;
- + break;
- X case 'B': /* take filenames from batch file */
- X retrieve = FROM_BATCHFILE;
- X batch_file = optarg;
- ***************
- *** 237,242 ****
- --- 237,262 ----
- X return(1);
- X }
- X }
- + /*
- + ** If the user has specified that the article is to be read from stdin,
- + ** the user must specify a a newsgroup as well. A request for status
- + ** on an article from stdin makes little sense to me... If I am wrong
- + ** let me know...
- + */
- + else if (retrieve == FROM_STDIN) {
- + if (nwsg == NULL) {
- + (void) fprintf(errfp, "%s: Must specify a newsgroup\n",progname);
- + (void) fprintf(errfp,"Sample command line...\n");
- + (void) fprintf(errfp,"\t%s -A newsgroup-here\n",progname);
- + return(1);
- + }
- + if (status_only != 0) {
- + (void) fprintf(errfp,"%s: can't get status for an article on stdin\n", progname);
- + (void) fprintf(errfp,"Sample command line...\n");
- + (void) fprintf(errfp,"\t%s -A newsgroup-here\n",progname);
- + return(1);
- + }
- + }
- X
- X setup_defaults();
- X
- ***************
- *** 387,392 ****
- --- 407,413 ----
- X /*
- X ** If the user has specified that a quick status
- X ** listing should be produced then hop to it....
- + ** FROM_STDIN is not allowed to have status requests.
- X */
- X
- X if (status_only) {
- ***************
- *** 485,490 ****
- --- 506,516 ----
- X if (retrieve == FROM_NNTP)
- X (void) unlink(article_name);
- X #endif /*NNTP*/
- + /*
- + ** Remove the tmpfile if the article came from stdin.
- + */
- + if (retrieve == FROM_STDIN)
- + (void) unlink(article_name);
- X continue;
- X }
- X
- ***************
- *** 502,507 ****
- --- 528,538 ----
- X if (retrieve == FROM_NNTP)
- X (void) unlink(article_name);
- X #endif /*NNTP*/
- + /*
- + ** Remove the tmpfile if the article came from stdin.
- + */
- + if (retrieve == FROM_STDIN)
- + (void) unlink(article_name);
- X continue;
- X }
- X
- ***************
- *** 519,524 ****
- --- 550,560 ----
- X if (retrieve == FROM_NNTP)
- X (void) unlink(article_name);
- X #endif /*NNTP*/
- + /*
- + ** Remove the tmpfile if the article came from stdin.
- + */
- + if (retrieve == FROM_STDIN)
- + (void) unlink(article_name);
- X continue;
- X }
- X }
- ***************
- *** 548,554 ****
- X
- X if (!problem_article) {
- X log_activities(archived_file,newsgrp);
- ! build_index(new_member,newsgrp);
- X notify_users(archived_file,newsgrp,cct++);
- X }
- X }
- --- 584,590 ----
- X
- X if (!problem_article) {
- X log_activities(archived_file,newsgrp);
- ! build_index(archived_file,newsgrp);
- X notify_users(archived_file,newsgrp,cct++);
- X }
- X }
- ***************
- *** 566,571 ****
- --- 602,612 ----
- X if (retrieve == FROM_NNTP)
- X (void) unlink(article_name);
- X #endif /*NNTP*/
- + /*
- + ** Remove the tmpfile if the article came from stdin.
- + */
- + if (retrieve == FROM_STDIN)
- + (void) unlink(article_name);
- X }
- X
- X if (!status_only) {
- ***************
- *** 833,839 ****
- X char *filename;
- X {
- X char *comp_cmd;
- - char *kp;
- X char cmd[BUFSIZ];
- X
- X (void) sprintf(cmd,"%s %s", packit, filename);
- --- 874,879 ----
- ***************
- *** 849,865 ****
- X if (!test)
- X (void) system(cmd);
- X
- ! /*
- ! ** Need to remove any compression command
- ! ** options if they exist. (compress -f)
- ! */
- !
- ! (void) sprintf(cmd,"%s", comp_cmd);
- !
- ! if ((kp = strchr(cmd,' ')) != NULL) {
- ! *kp = '\0';
- ! }
- ! return(suffix(cmd));
- X }
- X
- X
- --- 889,895 ----
- X if (!test)
- X (void) system(cmd);
- X
- ! return(suffix(comp_cmd));
- X }
- X
- X
- ***************
- *** 877,883 ****
- X /*
- X ** This function is used in the event that a problem
- X ** has occurred during archiving. It mails a message
- ! ** to the newsgroup speecified list and it mails a
- X ** message to the globally specified users.
- X **
- X ** It then logs the fact into both the newsgroup
- --- 907,913 ----
- X /*
- X ** This function is used in the event that a problem
- X ** has occurred during archiving. It mails a message
- ! ** to the newsgroup specified list and it mails a
- X ** message to the globally specified users.
- X **
- X ** It then logs the fact into both the newsgroup
- ***************
- *** 890,895 ****
- --- 920,932 ----
- X if ( *mail )
- X logit(global_mailfile, msg_fmt,filename);
- X
- + /*
- + ** Assure that the file you are logging information to
- + ** has a directory to exist in.. If it fails, oh well..
- + */
- +
- + (void)mkparents(ng->logfile);
- X logit(ng->logfile, msg_fmt, filename);
- + (void)mkparents(log);
- X logit(log, msg_fmt, filename);
- X }
- diff -cr ../usenet/rkive.cf ./rkive.cf
- *** ../usenet/rkive.cf Wed May 8 21:31:48 1991
- --- ./rkive.cf Thu May 9 02:50:40 1991
- ***************
- *** 1,5 ****
- X #
- ! # @(#)rkive.cf 2.2 2/23/91
- X #
- X # An rkive.cf template.
- X # Copy and edit this to reflect the local archive conditions.
- --- 1,5 ----
- X #
- ! # @(#)rkive.cf 2.3 5/9/91
- X #
- X # An rkive.cf template.
- X # Copy and edit this to reflect the local archive conditions.
- ***************
- *** 82,94 ****
- X # the available selection format capabilities.
- X # COMPRESS - The location of the compression utility if the
- X # files are to be reduced.
- ! # CHECKHASH - The location of the checkhash utility if the
- SHAR_EOF
- true || echo 'restore of patch2.1 failed'
- fi
- echo 'End of part 2'
- echo 'File patch2.1 is continued in part 3'
- echo 3 > _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.
-