/
arctst.c
53 lines (48 loc) · 1.25 KB
/
arctst.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
/*
* ARC - Archive utility - ARCTST
*
* Version 2.12, created on 02/03/86 at 23:00:40
*
* (C) COPYRIGHT 1985-87 by System Enhancement Associates.
* You may copy and distribute this program freely,
* under the terms of the General Public License.
*
* By: Thom Henderson
*
* Description: This file contains the routines used to test archive integrity.
*
* Language: Computer Innovations Optimizing C86
*/
#include "arc.h"
VOID openarc();
int unpack();
VOID
tstarc(void)
{ /* test integrity of an archive */
struct heads hdr; /* file header */
long arcsize, ftell(); /* archive size */
openarc(0); /* open archive for reading */
fseek(arc, 0L, 2); /* move to end of archive */
arcsize = ftell(arc); /* see how big it is */
fseek(arc, 0L, 0); /* return to top of archive */
while (readhdr(&hdr, arc)) {
if (ftell(arc) + hdr.size > arcsize) {
printf("Archive truncated in file %s\n", hdr.name);
nerrs++;
break;
} else {
printf("Testing file: %-12s ", hdr.name);
fflush(stdout);
if (unpack(arc, NULL, &hdr))
nerrs++;
else
printf("okay\n");
}
}
if (nerrs < 1)
printf("No errors detected\n");
else if (nerrs == 1)
printf("One error detected\n");
else
printf("%d errors detected\n", nerrs);
}