summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkientzle <kientzle@FreeBSD.org>2010-02-07 01:35:28 +0000
committerkientzle <kientzle@FreeBSD.org>2010-02-07 01:35:28 +0000
commite3debd74cb13f99f183614845c9e80b401a4939a (patch)
treeaa09a0bb0a320d8b3bbeb9a3bb5be0a92cb6e8f3
parentec04c1933ed240957119a79ca182a485d69a483d (diff)
downloadFreeBSD-src-e3debd74cb13f99f183614845c9e80b401a4939a.zip
FreeBSD-src-e3debd74cb13f99f183614845c9e80b401a4939a.tar.gz
Style & Portability: Use archive_entry methods to examine
file information, change some functions to static, remove some unused headers.
-rw-r--r--usr.bin/tar/read.c51
-rw-r--r--usr.bin/tar/write.c13
2 files changed, 24 insertions, 40 deletions
diff --git a/usr.bin/tar/read.c b/usr.bin/tar/read.c
index def0953..ab66f89 100644
--- a/usr.bin/tar/read.c
+++ b/usr.bin/tar/read.c
@@ -29,11 +29,6 @@ __FBSDID("$FreeBSD$");
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
-#ifdef MAJOR_IN_MKDEV
-#include <sys/mkdev.h>
-#elif defined(MAJOR_IN_SYSMACROS)
-#include <sys/sysmacros.h>
-#endif
#ifdef HAVE_SYS_PARAM_H
#include <sys/param.h>
#endif
@@ -346,7 +341,6 @@ read_archive(struct bsdtar *bsdtar, char mode)
static void
list_item_verbose(struct bsdtar *bsdtar, FILE *out, struct archive_entry *entry)
{
- const struct stat *st;
char tmp[100];
size_t w;
const char *p;
@@ -354,8 +348,6 @@ list_item_verbose(struct bsdtar *bsdtar, FILE *out, struct archive_entry *entry)
time_t tim;
static time_t now;
- st = archive_entry_stat(entry);
-
/*
* We avoid collecting the entire list in memory at once by
* listing things as we see them. However, that also means we can't
@@ -371,12 +363,13 @@ list_item_verbose(struct bsdtar *bsdtar, FILE *out, struct archive_entry *entry)
time(&now);
fprintf(out, "%s %d ",
archive_entry_strmode(entry),
- (int)(st->st_nlink));
+ archive_entry_nlink(entry));
/* Use uname if it's present, else uid. */
p = archive_entry_uname(entry);
if ((p == NULL) || (*p == '\0')) {
- sprintf(tmp, "%lu ", (unsigned long)st->st_uid);
+ sprintf(tmp, "%lu ",
+ (unsigned long)archive_entry_uid(entry));
p = tmp;
}
w = strlen(p);
@@ -390,7 +383,8 @@ list_item_verbose(struct bsdtar *bsdtar, FILE *out, struct archive_entry *entry)
fprintf(out, "%s", p);
w = strlen(p);
} else {
- sprintf(tmp, "%lu", (unsigned long)st->st_gid);
+ sprintf(tmp, "%lu",
+ (unsigned long)archive_entry_gid(entry));
w = strlen(tmp);
fprintf(out, "%s", tmp);
}
@@ -400,37 +394,30 @@ list_item_verbose(struct bsdtar *bsdtar, FILE *out, struct archive_entry *entry)
* total width of group and devnum/filesize fields be gs_width.
* If gs_width is too small, grow it.
*/
- if (S_ISCHR(st->st_mode) || S_ISBLK(st->st_mode)) {
+ if (archive_entry_filetype(entry) == AE_IFCHR
+ || archive_entry_filetype(entry) == AE_IFBLK) {
sprintf(tmp, "%lu,%lu",
- (unsigned long)major(st->st_rdev),
- (unsigned long)minor(st->st_rdev)); /* ls(1) also casts here. */
+ (unsigned long)archive_entry_rdevmajor(entry),
+ (unsigned long)archive_entry_rdevminor(entry));
} else {
- /*
- * Note the use of platform-dependent macros to format
- * the filesize here. We need the format string and the
- * corresponding type for the cast.
- */
- sprintf(tmp, BSDTAR_FILESIZE_PRINTF,
- (BSDTAR_FILESIZE_TYPE)st->st_size);
+ strcpy(tmp, tar_i64toa(archive_entry_size(entry)));
}
if (w + strlen(tmp) >= bsdtar->gs_width)
bsdtar->gs_width = w+strlen(tmp)+1;
fprintf(out, "%*s", (int)(bsdtar->gs_width - w), tmp);
/* Format the time using 'ls -l' conventions. */
- tim = (time_t)st->st_mtime;
+ tim = archive_entry_mtime(entry);
+#define HALF_YEAR (time_t)365 * 86400 / 2
#if defined(_WIN32) && !defined(__CYGWIN__)
- /* Windows' strftime function does not support %e format. */
- if (abs(tim - now) > (365/2)*86400)
- fmt = bsdtar->day_first ? "%d %b %Y" : "%b %d %Y";
- else
- fmt = bsdtar->day_first ? "%d %b %H:%M" : "%b %d %H:%M";
+#define DAY_FMT "%d" /* Windows' strftime function does not support %e format. */
#else
- if (abs(tim - now) > (365/2)*86400)
- fmt = bsdtar->day_first ? "%e %b %Y" : "%b %e %Y";
- else
- fmt = bsdtar->day_first ? "%e %b %H:%M" : "%b %e %H:%M";
+#define DAY_FMT "%e" /* Day number without leading zeros */
#endif
+ if (tim < now - HALF_YEAR || tim > now + HALF_YEAR)
+ fmt = bsdtar->day_first ? DAY_FMT " %b %Y" : "%b " DAY_FMT " %Y";
+ else
+ fmt = bsdtar->day_first ? DAY_FMT " %b %H:%M" : "%b " DAY_FMT " %H:%M";
strftime(tmp, sizeof(tmp), fmt, localtime(&tim));
fprintf(out, " %s ", tmp);
safe_fprintf(out, "%s", archive_entry_pathname(entry));
@@ -439,6 +426,6 @@ list_item_verbose(struct bsdtar *bsdtar, FILE *out, struct archive_entry *entry)
if (archive_entry_hardlink(entry)) /* Hard link */
safe_fprintf(out, " link to %s",
archive_entry_hardlink(entry));
- else if (S_ISLNK(st->st_mode)) /* Symbolic link */
+ else if (archive_entry_symlink(entry)) /* Symbolic link */
safe_fprintf(out, " -> %s", archive_entry_symlink(entry));
}
diff --git a/usr.bin/tar/write.c b/usr.bin/tar/write.c
index a702161..f7861bc 100644
--- a/usr.bin/tar/write.c
+++ b/usr.bin/tar/write.c
@@ -44,9 +44,6 @@ __FBSDID("$FreeBSD$");
#ifdef HAVE_FCNTL_H
#include <fcntl.h>
#endif
-#ifdef HAVE_FNMATCH_H
-#include <fnmatch.h>
-#endif
#ifdef HAVE_GRP_H
#include <grp.h>
#endif
@@ -514,7 +511,7 @@ cleanup:
* cause the next line to be a directory to pass to chdir(). If
* --null is specified, then a line "-C" is just another filename.
*/
-void
+static void
archive_names_from_file(struct bsdtar *bsdtar, struct archive *a)
{
bsdtar->archive = a;
@@ -679,7 +676,7 @@ write_hierarchy(struct bsdtar *bsdtar, struct archive *a, const char *path)
return;
}
- while ((tree_ret = tree_next(tree))) {
+ while ((tree_ret = tree_next(tree)) != 0) {
int r;
const char *name = tree_current_path(tree);
const struct stat *st = NULL; /* info to use for this entry */
@@ -882,7 +879,7 @@ write_hierarchy(struct bsdtar *bsdtar, struct archive *a, const char *path)
archive_entry_pathname(entry));
/* Non-regular files get archived with zero size. */
- if (!S_ISREG(st->st_mode))
+ if (archive_entry_filetype(entry) != AE_IFREG)
archive_entry_set_size(entry, 0);
archive_entry_linkify(bsdtar->resolver, &entry, &spare_entry);
@@ -1016,7 +1013,7 @@ write_file_data(struct bsdtar *bsdtar, struct archive *a,
/*
* Test if the specified file is new enough to include in the archive.
*/
-int
+static int
new_enough(struct bsdtar *bsdtar, const char *path, const struct stat *st)
{
struct archive_dir_entry *p;
@@ -1103,7 +1100,7 @@ add_dir_list(struct bsdtar *bsdtar, const char *path,
}
}
-void
+static void
test_for_append(struct bsdtar *bsdtar)
{
struct stat s;
OpenPOWER on IntegriCloud