From:	CSBVAX::MRGATE!info-vax-RELAY@KL.SRI.COM@SMTP  9-JUL-1988 01:53
To:	ARISIA::EVERHART
Subj:	ARC_H.SHAR


Received: from CORNELLC.CCS.CORNELL.EDU by KL.SRI.COM with TCP; Fri, 24 Jun 88 18:30:34 PDT
Received: from UNCAEDU.BITnet by CORNELLC.CCS.CORNELL.EDU ; Fri, 24 Jun 88 21:30:50 EDT
Received: from Stasis.MRC.AdhocNet.CA by UcEdu.UNCA.AdhocNet.CA with DECNET ;
          Fri, 24 Jun 88 09:41:08 MDT
Date:    Fri, 24 Jun 88 09:31:23 MDT
From:     ewilts%Ins.MRC.AdhocNet.CA%Stasis.MRC.AdhocNet.CA%UNCAEDU.@CORNELLC.CCS.CORNELL.EDU
         BITnet (Ed Wilts)
Message-Id: <880624093125.02l@Ins.MRC.AdhocNet.CA>
Subject: ARC_H.SHAR
To:       info-vax@kl.sri.com
X-ST-Vmsmail-To: INFOVAX

........................ Cut between dotted lines and save .....................
..
$!..............................................................................
$! VAX/VMS archive file created by VMS_SHAR V-5.01 01-Oct-1987
$! which was written by Michael Bednarek (U3369429@ucsvc.dn.mu.oz.au)
$! To unpack, simply save and execute (@) this file.
$!
$! This archive was created by EWILTS
$! on Friday 24-JUN-1988 08:03:06.58
$!
$! It contains the following 4 files:
$! ARC.H ARCM.H ARCS.H DIR.H
$!==============================================================================
$ Set Symbol/Scope=(NoLocal,NoGlobal)
$ Version=F$GetSYI("VERSION") ! See what VMS version we have here:
$ If Version.ges."V4.4" then goto Version_OK
$ Write SYS$Output "Sorry, you are running VMS ",Version, -
                ", but this procedure requires V4.4 or higher."
$ Exit 44
$Version_OK: CR[0,8]=13
$ Pass_or_Failed="failed!,passed."
$ Goto Start
$Convert_File:
$ Read/Time_Out=0/Error=No_Error1/Prompt="creating ''File_is'" SYS$Command ddd
$No_Error1: Define/User_Mode SYS$Output NL:
$ Edit/TPU/NoSection/NoDisplay/Command=SYS$Input/Output='File_is' -
        VMS_SHAR_DUMMY.DUMMY
f:=Get_Info(Command_Line,"File_Name");b:=Create_Buffer("",f);
o:=Get_Info(Command_Line,"Output_File");Set(Output_File,b,o);
Position(Beginning_of(b));Loop x:=Erase_Character(1);Loop ExitIf x<>"V";
Move_Vertical(1);x:=Erase_Character(1);Append_Line;
Move_Horizontal(-Current_Offset);EndLoop;Move_Vertical(1);
ExitIf Mark(None)=End_of(b) EndLoop;Position(Beginning_of(b));Loop
x:=Search("`",Forward,Exact);ExitIf x=0;Position(x);Erase_Character(1);
If Current_Character='`' then Move_Horizontal(1);else
Copy_Text(ASCII(INT(Erase_Character(3))));EndIf;EndLoop;Exit;
$ Delete VMS_SHAR_DUMMY.DUMMY;*
$ Checksum 'File_is
$ Success=F$Element(Check_Sum_is.eq.CHECKSUM$CHECKSUM,",",Pass_or_Failed)+CR
$ Read/Time_Out=0/Error=No_Error2/Prompt=" CHECKSUM ''Success'" SYS$Command ddd
$No_Error2: Return
$Start:
$ File_is="ARC.H"
$ Check_Sum_is=1969132421
$ Copy SYS$Input VMS_SHAR_DUMMY.DUMMY
X/*
X * $Header: arc.h,v 1.2 86/07/15 07:52:34 turner Exp $
X */
X
X/*
X * $Log:`009arc.h,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:34  turner
X *
X *
X * Revision 1.1  86/06/26  15:01:23  turner
X * initial version
X *
X *
X */
X
X#define`009ST`0090`009/* Atari 520ST or 1040 `009`009 */
X#define BSD`0091`009/* BSD4.2 on a vax`009`009 */
X#define MSDOS`0090`009/* MSDOS on an IBM PC or Wannabe */
X
X#if ST
X#define EXTERN
X#define INT short
X#endif
X
X#if BSD
X#include <ctype.h>`009/* for isupper etc.                  */
X#define EXTERN
X#define INT short
X#define envfind getenv
X#endif
X
X#if MSDOS
X#define EXTERN extern
X#define INT int
X#endif
X
X#ifdef VAXC
X#define abort vabort
X#define unlink(x) delete(x)
X#endif
X
X/*
X * added macro def's in C format 6/26/86 jmt
X */
X#include "arcm.h"
X
X/*  ARC - Archive utility - ARC Header
X
X    Version 2.14, created on 02/03/86 at 22:48:29
X
X(C) COPYRIGHT 1985 by System Enhancement Associates; ALL RIGHTS RESERVED
X
X    By:  Thom Henderson
X
X    Description:
X         This is the header file for the ARC archive utility.  It defines
X         global parameters and the references to the external data.
X
X
X    Language:
X         Computer Innovations Optimizing C86
X */
X
X#include "arcs.h"
X
XEXTERN INT keepbak;             /* true if saving the old archive */
XEXTERN INT warn;                /* true to print warnings */
XEXTERN INT note;                /* true to print comments */
XEXTERN INT bose;                /* true to be verbose */
XEXTERN INT nocomp;              /* true to suppress compression */
XEXTERN INT kludge;              /* kludge flag */
XEXTERN char arctemp[STRLEN];       /* arc temp file prefix */
XEXTERN char *password;          /* encryption password pointer */
XEXTERN INT nerrs;               /* number of errors encountered */
X
XEXTERN char hdrver;                      /* header version */
X
XEXTERN FILE *arc;                        /* the old archive */
XEXTERN FILE *new;                        /* the new archive */
X
XEXTERN char arcname[STRLEN];           /* storage for archive name */
XEXTERN char bakname[STRLEN];           /* storage for backup copy name */
XEXTERN char newname[STRLEN];           /* storage for new archive name */
XEXTERN unsigned INT arcdate;    /* archive date stamp */
XEXTERN unsigned INT arctime;    /* archive time stamp */
XEXTERN int dosquash;
X
X#ifdef VAXC
XEXTERN int vmsstats;`009`009/* Flag for VMS statistics */
X#endif VAXC
$ GoSub Convert_File
$ File_is="ARCM.H"
$ Check_Sum_is=1783726930
$ Copy SYS$Input VMS_SHAR_DUMMY.DUMMY
X/*
X * $Header: arcm.h,v 1.2 86/07/15 07:53:40 turner Exp $
X */
X
X/*
X * $Log:`009arcm.h,v $
X * Revision 1.2  86/07/15  07:53:40  turner
X *
X *
X * Revision 1.1  86/06/26  15:01:25  turner
X * initial version
X *
X *
X */
X
X/*
X *
X * ARC archive utility - standard MACRO insert file.
X *
X * parameters:
X *
X */
X
X#define ARCMARK 26 /*                   special archive marker        */
X#define ARCVER 9   /*                   archive header version code   */
X/* For VMS we need to allow for the directory structure */
X#ifdef VAXC
X#define STRLEN 255 /*                   system standard string length */
X#else
X#define STRLEN 100 /*                   system standard string length */
X#endif VAXC
X#define FNLEN 13   /*                   file name length              */
X#define MAXARG 25  /*                   maximum number of arguments   */
X
X#define ARC 1
X#define XARC 0
X
$ GoSub Convert_File
$ File_is="ARCS.H"
$ Check_Sum_is=1932684631
$ Copy SYS$Input VMS_SHAR_DUMMY.DUMMY
X/*
X * $Header: arcs.h,v 1.2 86/07/15 07:54:02 turner Exp $
X */
X
X/*
X * $Log:`009arcs.h,v $
X * Revision 1.2  86/07/15  07:54:02  turner
X *
X *
X * Revision 1.1  86/06/26  15:01:27  turner
X * initial version
X *
X *
X */
X
X/*  ARC - Archive utility - Archive file header format
X
X    Version 2.12, created on 12/17/85 at 14:40:26
X
X(C) COPYRIGHT 1985 by System Enhancement Associates; ALL RIGHTS RESERVED
X
X    By:  Thom Henderson
X
X    Description:
X         This file defines the format of an archive file header, excluding
X         the archive marker and the header version number.
X
X         Each entry in an archive begins with a one byte archive marker,
X         which is set to 26.  The marker is followed by a one byte
X         header type code, from zero to 7.
X
X         If the header type code is zero, then it is an end marker, and
X         no more data should be read from the archive.
X
X         If the header type code is in the range 2 to 7, then it is
X         followed by a standard archive header, which is defined below.
X
X         If the header type code is one, then it is followed by an older
X         format archive header.  The older format header does not contain
X         the true length.  A header should be read for a length of
X         sizeof(struct heads)-sizeof(long).  Then set length equal to size
X         and change the header version to 2.
X
X    Programming note:
X         The crc value given in the header is based on the unpacked data.
X
X    Language:
X         Computer Innovations Optimizing C86
X*/
X
Xstruct heads                           /* archive entry header format */
X{   char name[FNLEN];                 /* file name */
X    long size;                         /* size of file, in bytes */
X    unsigned INT date;                 /* creation date */
X    unsigned INT time;                 /* creation time */
X INT crc;                           /* cyclic redundancy check */
X    long length;                       /* true file length */
X}   ;
X
$ GoSub Convert_File
$ File_is="DIR.H"
$ Check_Sum_is=1734141157
$ Copy SYS$Input VMS_SHAR_DUMMY.DUMMY
X
X/*
X * template DIR.h
X * This header file is not part of VAXC.  It needed to be created
X * so VAXC could compile ARCDIR.C correctly.
X */
X
Xstruct direct {
X    int d_namlen;
X    char d_name[256];
X};
X
X/*
X * Used by parsedir as the flags argument
X */
X
X#define PARSE_NODE`0090x001
X#define PARSE_DEVICE`0090x002
X#define PARSE_DIRECTORY`0090x004
X#define PARSE_NAME`0090x008
X#define PARSE_TYPE`0090x010
X#define PARSE_VERSION`0090x020
$ GoSub Convert_File
$ Exit
