X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2Fupdate.c;h=53ce553b0ca680944ae0a33b6d08126369c1752e;hb=d7db30d0e80997b15cd3c976f612b08d95d091e9;hp=0f5dadf71e49b5616b985981ccb79b88fd0c40bb;hpb=cac45fffc58cc10056c528582ee4b78b8ee175e0;p=chaz%2Ftar diff --git a/src/update.c b/src/update.c index 0f5dadf..53ce553 100644 --- a/src/update.c +++ b/src/update.c @@ -1,7 +1,7 @@ /* Update a tar archive. Copyright (C) 1988, 1992, 1994, 1996, 1997, 1999, 2000, 2001, 2003, - 2004, 2005, 2007 Free Software Foundation, Inc. + 2004, 2005, 2007, 2010 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the @@ -114,7 +114,9 @@ update_archive (void) while (!found_end) { - enum read_header status = read_header (false); + enum read_header status = read_header (¤t_header, + ¤t_stat_info, + read_header_auto); switch (status) { @@ -148,14 +150,14 @@ update_archive (void) else { namebuf_t nbuf = namebuf_create (name->name); - + for (p = dirp; *p; p += strlen (p) + 1) addname (namebuf_name (nbuf, p), 0, false, NULL); - + namebuf_free (nbuf); free (dirp); - + remname (name); } } @@ -165,7 +167,7 @@ update_archive (void) remname (name); } } - + skip_member (); break; } @@ -222,11 +224,12 @@ update_archive (void) if (subcommand_option == CAT_SUBCOMMAND) append_file (file_name); else - dump_file (file_name, 1, (dev_t) 0); + dump_file (0, file_name, file_name); } } write_eot (); close_archive (); + finish_deferred_unlinks (); names_notfound (); }