* Copyright (c) 1990, 1993
* The Regents of the University of California. All rights reserved.
* This code is derived from software contributed to Berkeley by
* Hugh Smith at The University of Guelph.
* %sccs.include.redist.c%
static char sccsid
[] = "@(#)extract.c 8.2 (Berkeley) %G%";
* Extract files from the named archive - if member names given only
* extract those members otherwise extract all members. If 'o' option
* selected modify date of newly created file to be same as archive
* members date otherwise date is time of extraction. Does not modify
tv
[0].tv_usec
= tv
[1].tv_usec
= 0;
afd
= open_archive(O_RDONLY
);
/* Read from an archive, write to disk; pad on read. */
SETCF(afd
, archive
, 0, 0, RPAD
);
for (all
= !*argv
; get_arobj(afd
);) {
else if (!(file
= files(argv
))) {
if (options
& AR_U
&& !stat(file
, &sb
) &&
if ((tfd
= open(file
, O_WRONLY
|O_CREAT
|O_TRUNC
, S_IWUSR
)) < 0) {
(void)printf("x - %s\n", file
);
if (fchmod(tfd
, (short)chdr
.mode
)) {
tv
[0].tv_sec
= tv
[1].tv_sec
= chdr
.date
;
warn("utimes: %s", file
);