Path: utzoo!attcan!uunet!lll-winken!lll-tis!helios.ee.lbl.gov!pasteur!ucbvax!CORNELLC.CCS.CORNELL.EDU.BITNET!ewilts%Ins.MRC.AdhocNet.CA%Stasis.MRC.AdhocNet.CA%UNCAEDU.
From: ewilts%Ins.MRC.AdhocNet.CA%Stasis.MRC.AdhocNet.CA%UNCAEDU.@CORNELLC.CCS.CORNELL.EDU.BITNET (Ed Wilts)
Newsgroups: comp.os.vms
Subject: ARC_C.SHAR03_OF_19
Message-ID: <880624092323.023@Ins.MRC.AdhocNet.CA>
Date: 24 Jun 88 15:23:21 GMT
Sender: daemon@ucbvax.BERKELEY.EDU
Organization: The Internet
Lines: 233
$Part03:
$ File_is="ARCCVT.C"
$ Check_Sum_is=1752392383
$ Copy SYS$Input VMS_SHAR_DUMMY.DUMMY
Xstatic char *RCSid = "$Header: arccvt.c,v 1.2 86/07/15 07:52:46 turner Exp $";
X
X/*
X * $Log:`009arccvt.c,v $
X * Hack-attack 1.3 86/12/20 01:23:45 wilhite@usceast.uucp
X * `009Bludgeoned into submission for VAX 11/780 BSD4.2
X *`009(ugly code, but fewer core dumps)
X *
X * Revision 1.2 86/07/15 07:52:46 turner
X *
X *
X * Revision 1.1 86/06/26 14:59:56 turner
X * initial version
X *
X *
X */
X
X/* ARC - Archive utility - ARCCVT
X
X$define(tag,$$segment(@1,$$index(@1,=)+1))#
X$define(version,Version $tag(
XTED_VERSION DB =1.16), created on $tag(
XTED_DATE DB =02/03/86) at $tag(
XTED_TIME DB =22:53:02))#
X$undefine(tag)#
X $version
X
X(C) COPYRIGHT 1985 by System Enhancement Associates; ALL RIGHTS RESERVED
X
X By: Thom Henderson
X
X Description:
X This file contains the routines used to convert archives to use
X newer file storage methods.
X
X Language:
X Computer Innovations Optimizing C86
X*/
X#include
X#include "arc.h"
X
Xstatic char tempname[STRLEN]; /* temp file name */
X
XINT cvtarc(num,arg) /* convert archive */
XINT num; /* number of arguments */
Xchar *arg[]; /* pointers to arguments */
X{
X struct heads hdr; /* file header */
X INT cvt; /* true to convert current file */
X INT did[MAXARG]; /* true when argument was used */
X INT n; /* index */
X char *makefnam(); /* filename fixer */
X FILE *fopen(); /* file opener */
X INT cvtfile();
X
X if(arctemp) /* use temp area if specified */
X sprintf(tempname,"%s.CVT",arctemp);
X else makefnam("$ARCTEMP.CVT",arcname,tempname);
X
X openarc(1); /* open archive for changes */
X
X for(n=0; nname); fflush(stdout);}
X
X unpack(arc,tmp,hdr); /* unpack the entry */
X fseek(tmp,0L,0); /* reset temp for reading */
X starts = ftell(new); /* note where header goes */
X hdrver = ARCVER; /* anything but end marker */
X writehdr(hdr,new); /* write out header skeleton */
X pack(tmp,new,hdr); /* pack file into archive */
X fseek(new,starts,0); /* move back to header skeleton */
X writehdr(hdr,new); /* write out real header */
X fseek(new,hdr->size,1); /* skip over data to next header */
X fclose(tmp); /* all done with the file */
X if(unlink(tempname) && warn)
X { printf("Cannot unsave %s\n",tempname);
X nerrs++;
X }
X}
X
$ GoSub Convert_File
$ File_is="ARCDEL.C"
$ Check_Sum_is=1634934886
$ Copy SYS$Input VMS_SHAR_DUMMY.DUMMY
Xstatic char *RCSid = "$Header: arcdel.c,v 1.2 86/07/15 07:52:53 turner Exp $";
X
X/*
X * $Log:`009arcdel.c,v $
X * Hack-attack 1.3 86/12/20 01:23:45 wilhite@usceast.uucp
X * `009Bludgeoned into submission for VAX 11/780 BSD4.2
X *`009(ugly code, but fewer core dumps)
X *
X * Revision 1.2 86/07/15 07:52:53 turner
X *
X *
X * Revision 1.1 86/06/26 15:00:04 turner
X * initial version
X *
X *
X */
X
X/* ARC - Archive utility - ARCDEL
X
X$define(tag,$$segment(@1,$$index(@1,=)+1))#
X$define(version,Version $tag(
XTED_VERSION DB =2.09), created on $tag(
XTED_DATE DB =02/03/86) at $tag(
XTED_TIME DB =22:53:27))#
X$undefine(tag)#
X $version
X
X(C) COPYRIGHT 1985 by System Enhancement Associates; ALL RIGHTS RESERVED
X
X By: Thom Henderson
X
X Description:
X This file contains the routines used to delete entries
X in an archive.
X
X Language:
X Computer Innovations Optimizing C86
X*/
X#include
X#include "arc.h"
X
XINT delarc(num,arg) /* remove files from archive */
XINT num; /* number of arguments */
Xchar *arg[]; /* pointers to arguments */
X{
X struct heads hdr; /* header data */
X INT del; /* true to delete a file */
X INT did[MAXARG]; /* true when argument used */
X INT n; /* index */
X
X if(!num) /* she must specify which */
X abort("You must tell me which files to delete!");
X
X for(n=0; n