X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2Fcreate.c;h=4f623ac1bb0b4e6ad77aaa4a0c3e369f20b88283;hb=f9bd340c1bdcb47ce99e33bc995ef28de5f6d2eb;hp=41726613fcb92e86c54beeff5fcf9b894f9ffaa7;hpb=36f41eabf478e0bca057bc5eda97d11157149db9;p=chaz%2Ftar diff --git a/src/create.c b/src/create.c index 4172661..4f623ac 100644 --- a/src/create.c +++ b/src/create.c @@ -1,7 +1,7 @@ /* Create a tar archive. Copyright (C) 1985, 1992, 1993, 1994, 1996, 1997, 1999, 2000, 2001, - 2003, 2004, 2005 Free Software Foundation, Inc. + 2003, 2004, 2005, 2006 Free Software Foundation, Inc. Written by John Gilmore, on 1985-08-25. @@ -494,7 +494,7 @@ split_long_name (const char *name, size_t length) size_t i; if (length > PREFIX_FIELD_SIZE) - length = PREFIX_FIELD_SIZE+2; + length = PREFIX_FIELD_SIZE + 1; for (i = length - 1; i > 0; i--) if (ISSLASH (name[i])) break; @@ -1182,7 +1182,7 @@ dump_dir (int fd, struct tar_stat_info *st, int top_level, dev_t parent_device) void create_archive (void) { - char *p; + const char *p; open_archive (ACCESS_WRITE); xheader_write_global (); @@ -1387,7 +1387,7 @@ check_links (void) exit_status to failure, a clear diagnostic has been issued. */ static void -dump_file0 (struct tar_stat_info *st, char const *p, +dump_file0 (struct tar_stat_info *st, const char *p, int top_level, dev_t parent_device) { union block *header; @@ -1404,6 +1404,8 @@ dump_file0 (struct tar_stat_info *st, char const *p, assign_string (&st->file_name, safer_name_suffix (p, false, absolute_names_option)); + transform_name (&st->file_name); + if (deref_stat (dereference_option, p, &st->stat) != 0) { stat_diag (p); @@ -1667,7 +1669,7 @@ dump_file0 (struct tar_stat_info *st, char const *p, } void -dump_file (char *p, int top_level, dev_t parent_device) +dump_file (const char *p, int top_level, dev_t parent_device) { struct tar_stat_info st; tar_stat_init (&st);