X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2Fupdate.c;h=c8fca0c5a7c79da702d1bac53dff862d187fc2ff;hb=93906c238d9309f95afeddfa9ac8d7ce92351e70;hp=5e9ab98ba2c30690505a145128b5e096966c8891;hpb=cd7bdd4076ca154575bbef85eb2157e59befcfe2;p=chaz%2Ftar diff --git a/src/update.c b/src/update.c index 5e9ab98..c8fca0c 100644 --- a/src/update.c +++ b/src/update.c @@ -1,7 +1,7 @@ /* Update a tar archive. - Copyright 1988, 1992, 1994, 1996-1997, 1999-2001, 2003-2005, 2007, 2010, - 2013 Free Software Foundation, Inc. + Copyright 1988, 1992, 1994, 1996-1997, 1999-2001, 2003-2005, 2007, + 2010, 2013-2014 Free Software Foundation, Inc. This file is part of GNU tar. @@ -145,16 +145,8 @@ update_archive (void) { if (S_ISDIR (s.st_mode)) { - char *p, *dirp; - DIR *stream = NULL; - int fd = openat (chdir_fd, name->name, - open_read_flags | O_DIRECTORY); - if (fd < 0) - open_error (name->name); - else if (! ((stream = fdopendir (fd)) - && (dirp = streamsavedir (stream)))) - savedir_error (name->name); - else + char *p, *dirp = tar_savedir (name->name, 1); + if (dirp) { namebuf_t nbuf = namebuf_create (name->name); @@ -167,11 +159,6 @@ update_archive (void) remname (name); } - - if (stream - ? closedir (stream) != 0 - : 0 <= fd && close (fd) != 0) - savedir_error (name->name); } else if (tar_timespec_cmp (get_stat_mtime (&s), current_stat_info.mtime) @@ -229,7 +216,7 @@ update_archive (void) while ((p = name_from_list ()) != NULL) { char *file_name = p->name; - if (excluded_name (file_name)) + if (excluded_name (file_name, NULL)) continue; if (interactive_option && !confirm ("add", file_name)) continue;