home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Format CD 28
/
amigaformatcd28.iso
/
-seriously_amiga-
/
archivers
/
arcppc
/
src
/
rcs
/
arclst.c,v
< prev
next >
Wrap
Text File
|
1998-04-23
|
7KB
|
372 lines
head 1.5;
branch ;
access ;
symbols arc521:1.5;
locks hyc:1.5; strict;
comment @ * @;
1.5
date 88.06.01.18.05.57; author hyc; state Exp;
branches ;
next 1.4;
1.4
date 88.06.01.15.41.54; author hyc; state Exp;
branches ;
next 1.3;
1.3
date 88.06.01.15.41.19; author hyc; state Exp;
branches ;
next 1.2;
1.2
date 88.04.11.18.03.10; author hyc; state Exp;
branches ;
next 1.1;
1.1
date 88.04.11.18.01.46; author hyc; state Exp;
branches ;
next ;
desc
@@
1.5
log
@Merge ARC 5.21 changes
@
text
@/*
* $Header: arclst.c,v 1.4 88/06/01 15:41:54 hyc Locked $
*/
/* ARC - Archive utility - ARCLST
Version 2.39, created on 04/22/87 at 13:48:29
(C) COPYRIGHT 1985-87 by System Enhancement Associates; ALL RIGHTS RESERVED
By: Thom Henderson
Description:
This file contains the routines used to list the contents
of an archive.
Language:
Computer Innovations Optimizing C86
*/
#include <stdio.h>
#include "arc.h"
void rempath(), openarc(), closearc();
int readhdr(), match();
void
lstarc(num, arg) /* list files in archive */
int num; /* number of arguments */
char *arg[]; /* pointers to arguments */
{
struct heads hdr; /* header data */
int list; /* true to list a file */
int did[MAXARG]; /* true when argument was used */
long tnum, tlen, tsize; /* totals */
int n; /* index */
void lstfile();
tnum = tlen = tsize = 0;/* reset totals */
for (n = 0; n < num; n++) /* for each argument */
did[n] = 0; /* reset usage flag */
rempath(num, arg); /* strip off paths */
if (note && !kludge) {
printf("Name Length ");
if (bose)
printf(" Stowage SF Size now");
printf(" Date ");
if (bose)
printf(" Time CRC");
printf("\n");
printf("============ ========");
if (bose)
printf(" ======== ==== ========");
printf(" =========");
if (bose)
printf(" ====== ====");
printf("\n");
}
openarc(0); /* open archive for reading */
if (num) { /* if files were named */
while (readhdr(&hdr, arc)) { /* process all archive files */
list = 0; /* reset list flag */
for (n = 0; n < num; n++) { /* for each template
* given */
if (match(hdr.name, arg[n])) {
list = 1; /* turn on list flag */
did[n] = 1; /* turn on usage flag */
break; /* stop looking */
}
}
if (list) { /* if this file is wanted */
if (!kludge)
lstfile(&hdr); /* then tell about it */
tnum++; /* update totals */
tlen += hdr.length;
tsize += hdr.size;
}
fseek(arc, hdr.size, 1); /* move to next header */
}
} else
while (readhdr(&hdr, arc)) { /* else report on all files */
if (!kludge)
lstfile(&hdr);
tnum++; /* update totals */
tlen += hdr.length;
tsize += hdr.size;
fseek(arc, hdr.size, 1); /* skip to next header */
}
closearc(0); /* close archive after reading */
if (note && !kludge) {
printf(" ==== ========");
if (bose)
printf(" ==== ========");
printf("\n");
}
if (note) {
printf("Total %6ld %8ld", tnum, tlen);
if (bose) {
if (tlen)
printf(" %3ld%%", 100L - (100L * tsize) / tlen);
else
printf(" ---");
printf(" %8ld", tsize);
}
printf("\n");
for (n = 0; n < num; n++) { /* report unused args */
if (!did[n]) {
printf("File not found: %s\n", arg[n]);
nerrs++;
}
}
}
}
void
lstfile(hdr) /* tell about a file */
struct heads *hdr; /* pointer to header data */
{
int yr, mo, dy; /* parts of a date */
int hh, mm; /* parts of a time */
static char *mon[] = /* month abbreviations */
{
"Jan", "Feb", "Mar", "Apr",
"May", "Jun", "Jul", "Aug",
"Sep", "Oct", "Nov", "Dec"
};
if (!note) { /* no notes means short listing */
printf("%s\n", hdr->name);
return;
}
yr = (hdr->date >> 9) & 0x7f; /* dissect the date */
mo = (hdr->date >> 5) & 0x0f;
dy = hdr->date & 0x1f;
hh = (hdr->time >> 11) & 0x1f; /* dissect the time */
mm = (hdr->time >> 5) & 0x3f;
/* ss = (hdr->time & 0x1f) * 2; seconds, not used. */
printf("%-12s %8ld ", hdr->name, hdr->length);
if (bose) {
switch (hdrver) {
case 1:
case 2:
printf(" -- ");
break;
case 3:
printf(" Packed ");
break;
case 4:
printf("Squeezed");
break;
case 5:
case 6:
case 7:
printf("crunched");
break;
case 8:
printf("Crunched");
break;
case 9:
printf("Squashed");
break;
default:
printf("Unknown!");
}
if (hdr->length)
printf(" %3ld%%", 100L - (100L * hdr->size) / hdr->length);
else
printf(" ---");
printf(" %8ld ", hdr->size);
}
printf("%2d %3s %02d", dy, mon[mo - 1], (yr + 80) % 100);
if (bose)
printf(" %2d:%02d%c %04x",
(hh > 12 ? hh - 12 : hh), mm, (hh > 11 ? 'p' : 'a'),
hdr->crc & 0xffff);
printf("\n");
}
@
1.4
log
@Merge Atari ST code
@
text
@d2 1
a2 1
* $Header: arclst.c,v 1.3 88/06/01 15:41:19 hyc Locked $
d5 15
a19 14
/*
* ARC - Archive utility - ARCLST
*
* Version 2.38, created on 07/25/86 at 17:52:20
*
* (C) COPYRIGHT 1985,86 by System Enhancement Associates; ALL RIGHTS RESERVED
*
* By: Thom Henderson
*
* Description: This file contains the routines used to list the contents of an
* archive.
*
* Language: Computer Innovations Optimizing C86
*/
a21 3
void rempath(), openarc(), closearc();
int readhdr(), match();
d23 3
d33 1
a33 1
int did[MAXARG];/* true when argument was used */
d44 1
a44 1
if (!kludge) {
d96 1
a96 1
if (!kludge) {
d102 10
a111 9
printf("Total %6ld %8ld", tnum, tlen);
if (bose) {
if (tlen)
printf(" %3ld%%", 100L - (100L * tsize) / tlen);
else
printf(" ---");
printf(" %8ld", tsize);
}
printf("\n");
a112 1
if (note) {
d127 1
a127 1
int hh, mm; /* parts of a time */
d135 5
@
1.3
log
@Fix declarations
@
text
@d2 1
a2 1
* $Header: arclst.c,v 1.4 88/04/18 15:52:20 hyc Exp $
d173 1
a173 1
printf(" %3d%%", 100L - (100L * hdr->size) / hdr->length);
@
1.2
log
@added support for squashing, re-synch with MTS
@
text
@d2 1
a2 11
* $Log: arclst.c,v $
* Revision 1.1 88/04/11 18:01:46 hyc
* Initial revision
*
* Revision 1.4 87/08/13 17:03:30 hyc
* Run thru the indent program...
* Revision 1.3 87/07/21 11:41:35 hyc *** empty
* log message ***
*
* Revision 1.2 87/07/21 08:23:17 hyc *** empty log message ***
*
d21 3
d25 1
a25 1
INT
d27 1
a27 1
INT num; /* number of arguments */
d31 5
a35 5
INT list; /* true to list a file */
INT did[25];/* true when argument was used */
LONG tnum, tlen, tsize; /* totals */
INT n; /* index */
INT lstfile();
d121 1
a121 1
INT
d125 2
a126 2
INT yr, mo, dy; /* parts of a date */
INT hh, mm, ss; /* parts of a time */
d141 1
a141 1
ss = (hdr->time & 0x1f) * 2;
@
1.1
log
@Initial revision
@
text
@d2 4
a5 1
* $Log: arclst.c,v $
d72 1
a72 1
for (n = 0; n < num; n++) { /* for each template *
d128 1
a128 1
static INT
d171 3
@