]> Dogcows Code - chaz/tar/blobdiff - src/common.h
(main): Do not check for volume_label_option unless subcommand_option is CREATE_SUBCO...
[chaz/tar] / src / common.h
index c8625cc9b0a1af0c1c84589281ad2fd7e65e1ba6..9ec6e3f0cbcbb8ab0103d3c9c4c8fe56f0664be1 100644 (file)
 #define PREFIX_FIELD_SIZE 155
 #define UNAME_FIELD_SIZE   32
 #define GNAME_FIELD_SIZE   32
+
+/* FIXME */
+#define MAXOCTAL11      017777777777L
+#define MAXOCTAL7       07777777
+
+
 \f
 /* Some various global definitions.  */
 
@@ -268,18 +274,7 @@ GLOBAL bool dev_null_output;
   GLOBAL time_t start_time;
 #endif
 
-/* Name of file read from the archive header */
-GLOBAL char *orig_file_name;
-
-/* Name of file for the current archive entry after being normalized.  */
-GLOBAL char *current_file_name;
-
-/* Nonzero if the current archive entry had a trailing slash before it
-   was normalized.  */
-GLOBAL int current_trailing_slash;
-
-/* Name of link for the current archive entry.  */
-GLOBAL char *current_link_name;
+GLOBAL struct tar_stat_info current_stat_info;
 
 /* List of tape drive names, number of such tape drives, allocated number,
    and current cursor in list.  */
@@ -369,6 +364,8 @@ void check_links (void);
 #define TIME_TO_CHARS(val, where) time_to_chars (val, where, sizeof (where))
 #define UID_TO_CHARS(val, where) uid_to_chars (val, where, sizeof (where))
 #define UINTMAX_TO_CHARS(val, where) uintmax_to_chars (val, where, sizeof (where))
+#define UNAME_TO_CHARS(name,buf) string_to_chars (name, buf, sizeof(buf))
+#define GNAME_TO_CHARS(name,buf) string_to_chars (name, buf, sizeof(buf))
 
 void gid_to_chars (gid_t, char *, size_t);
 void major_to_chars (major_t, char *, size_t);
@@ -379,6 +376,7 @@ void size_to_chars (size_t, char *, size_t);
 void time_to_chars (time_t, char *, size_t);
 void uid_to_chars (uid_t, char *, size_t);
 void uintmax_to_chars (uintmax_t, char *, size_t);
+void string_to_chars (char *, char *, size_t);
 
 /* Module diffarch.c.  */
 
@@ -420,14 +418,21 @@ enum read_header
   HEADER_FAILURE               /* ill-formed header, or bad checksum */
 };
 
+struct xheader
+{
+  struct obstack *stk;
+  size_t size;
+  char *buffer;
+};
+
+GLOBAL struct xheader extended_header;
 extern union block *current_header;
-extern struct stat current_stat;
 extern enum archive_format current_format;
 extern size_t recent_long_name_blocks;
 extern size_t recent_long_link_blocks;
 
-void decode_header (union block *, struct stat *,
-                           enum archive_format *, int);
+void decode_header (union block *, struct tar_stat_info *,
+                   enum archive_format *, int);
 #define STRINGIFY_BIGINT(i, b) \
   stringify_uintmax_t_backwards ((uintmax_t) (i), (b) + UINTMAX_STRSIZE_BOUND)
 char *stringify_uintmax_t_backwards (uintmax_t, char *);
@@ -537,10 +542,10 @@ void xpipe (int[2]);
 
 extern struct name *gnu_list_name;
 
-void gid_to_gname (gid_t, char gname[GNAME_FIELD_SIZE]);
-int gname_to_gid (char gname[GNAME_FIELD_SIZE], gid_t *);
-void uid_to_uname (uid_t, char uname[UNAME_FIELD_SIZE]);
-int uname_to_uid (char uname[UNAME_FIELD_SIZE], uid_t *);
+void gid_to_gname (gid_t, char **gname);
+int gname_to_gid (char *gname, gid_t *);
+void uid_to_uname (uid_t, char **uname);
+int uname_to_uid (char *uname, uid_t *);
 
 void init_names (void);
 void name_add (const char *);
@@ -570,9 +575,18 @@ bool contains_dot_dot (char const *);
 
 int confirm (const char *, const char *);
 void request_stdin (const char *);
+void destroy_stat (struct tar_stat_info *);
 
 /* Module update.c.  */
 
 extern char *output_start;
 
 void update_archive (void);
+
+/* Module xheader.c.  */
+
+void xheader_decode (struct tar_stat_info *);
+void xheader_store (char const *, struct tar_stat_info const *);
+void xheader_read (union block *, size_t);
+void xheader_finish (struct xheader *);
+void xheader_destroy (struct xheader *);
This page took 0.023159 seconds and 4 git commands to generate.