Subversion Repositories planix.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
/* $Source: /u/mark/src/pax/RCS/append.c,v $
2
 *
3
 * $Revision: 1.2 $
4
 *
5
 * append.c - append to a tape archive. 
6
 *
7
 * DESCRIPTION
8
 *
9
 *	Routines to allow appending of archives
10
 *
11
 * AUTHORS
12
 *
13
 *     	Mark H. Colburn, NAPS International (mark@jhereg.mn.org)
14
 *
15
 *
16
 * Sponsored by The USENIX Association for public distribution. 
17
 *
18
 * Copyright (c) 1989 Mark H. Colburn.
19
 * All rights reserved.
20
 *
21
 * Redistribution and use in source and binary forms are permitted
22
 * provided that the above copyright notice is duplicated in all such 
23
 * forms and that any documentation, advertising materials, and other 
24
 * materials related to such distribution and use acknowledge that the 
25
 * software was developed * by Mark H. Colburn and sponsored by The 
26
 * USENIX Association. 
27
 *
28
 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
29
 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
30
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
31
 *
32
 * $Log:	append.c,v $
33
 * Revision 1.2  89/02/12  10:03:58  mark
34
 * 1.2 release fixes
35
 * 
36
 * Revision 1.1  88/12/23  18:02:00  mark
37
 * Initial revision
38
 * 
39
 */
40
 
41
#ifndef lint
42
static char *ident = "$Id: append.c,v 1.2 89/02/12 10:03:58 mark Exp $";
43
static char *copyright = "Copyright (c) 1989 Mark H. Colburn.\nAll rights reserved.\n";
44
#endif /* ! lint */
45
 
46
 
47
/* Headers */
48
 
49
#include "pax.h"
50
 
51
 
52
/* append_archive - main loop for appending to a tar archive
53
 *
54
 * DESCRIPTION
55
 *
56
 *	Append_archive reads an archive until the end of the archive is
57
 *	reached once the archive is reached, the buffers are reset and the
58
 *	create_archive function is called to handle the actual writing of
59
 *	the appended archive data.  This is quite similar to the
60
 *	read_archive function, however, it does not do all the processing.
61
 */
62
 
63
#ifdef __STDC__
64
 
65
void append_archive(void)
66
 
67
#else
68
 
69
void append_archive()
70
 
71
#endif
72
{
73
    Stat            sb;
74
    char            name[PATH_MAX + 1];
75
 
76
    name[0] = '\0';
77
    while (get_header(name, &sb) == 0) {
78
	if (((ar_format == TAR)
79
	     ? buf_skip(ROUNDUP((OFFSET) sb.sb_size, BLOCKSIZE))
80
	     : buf_skip((OFFSET) sb.sb_size)) < 0) {
81
	    warn(name, "File data is corrupt");
82
	}
83
    }
84
    /* we have now gotten to the end of the archive... */
85
 
86
    /* reset the buffer now that we have read the entire archive */
87
    bufend = bufidx = bufstart;
88
    create_archive();
89
}