]> Dogcows Code - chaz/tar/blobdiff - src/common.h
(exclusion_tag_warning, check_exclusion_tags): Remove static qualifier.
[chaz/tar] / src / common.h
index b8c124e7cb01f198aa1394fa8679cd85a0073c57..b158a373b0b3b330a3fbb2200ac2e05e8ef67254 100644 (file)
@@ -1,11 +1,11 @@
 /* Common declarations for the tar program.
 
    Copyright (C) 1988, 1992, 1993, 1994, 1996, 1997, 1999, 2000, 2001,
 /* Common declarations for the tar program.
 
    Copyright (C) 1988, 1992, 1993, 1994, 1996, 1997, 1999, 2000, 2001,
-   2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+   2003, 2004, 2005, 2006, 2007 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
 
    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
-   Free Software Foundation; either version 2, or (at your option) any later
+   Free Software Foundation; either version 3, or (at your option) any later
    version.
 
    This program is distributed in the hope that it will be useful, but
    version.
 
    This program is distributed in the hope that it will be useful, but
@@ -150,8 +150,18 @@ GLOBAL int check_links_option;
 /* Patterns that match file names to be excluded.  */
 GLOBAL struct exclude *excluded;
 
 /* Patterns that match file names to be excluded.  */
 GLOBAL struct exclude *excluded;
 
-/* Exclude directories containing a cache directory tag. */
-GLOBAL bool exclude_caches_option;
+enum exclusion_tag_type
+  {
+    exclusion_tag_none,
+     /* Exclude the directory contents, but preserve the directory
+       itself and the exclusion tag file */
+    exclusion_tag_contents,
+    /* Exclude everything below the directory, preserving the directory
+       itself */
+    exclusion_tag_under,
+    /* Exclude entire directory  */
+    exclusion_tag_all,
+  };
 
 /* Specified value to be put into tar file in place of stat () results, or
    just -1 if such an override should not take place.  */
 
 /* Specified value to be put into tar file in place of stat () results, or
    just -1 if such an override should not take place.  */
@@ -406,6 +416,7 @@ void mv_end (void);
 void mv_total_size (off_t size);
 void mv_size_left (off_t size);
 
 void mv_total_size (off_t size);
 void mv_size_left (off_t size);
 
+void buffer_write_global_xheader (void);
 
 /* Module create.c.  */
 
 
 /* Module create.c.  */
 
@@ -417,7 +428,10 @@ enum dump_status
     dump_status_not_implemented
   };
 
     dump_status_not_implemented
   };
 
-void add_exclude_tag (const char *name);
+void add_exclusion_tag (const char *name, enum exclusion_tag_type type,
+                       bool (*)(const char*));
+bool cachedir_file_p (const char *name);
+
 bool file_dumpable_p (struct tar_stat_info *st);
 void create_archive (void);
 void pad_archive (off_t size_left);
 bool file_dumpable_p (struct tar_stat_info *st);
 void create_archive (void);
 void pad_archive (off_t size_left);
@@ -431,7 +445,11 @@ union block * write_extended (bool global, struct tar_stat_info *st,
 union block *start_private_header (const char *name, size_t size);
 void write_eot (void);
 void check_links (void);
 union block *start_private_header (const char *name, size_t size);
 void write_eot (void);
 void check_links (void);
-
+void exclusion_tag_warning (const char *dirname, const char *tagname,
+                           const char *message);
+enum exclusion_tag_type check_exclusion_tags (char *dirname,
+                                             const char **tag_file_name);
+     
 #define GID_TO_CHARS(val, where) gid_to_chars (val, where, sizeof (where))
 #define MAJOR_TO_CHARS(val, where) major_to_chars (val, where, sizeof (where))
 #define MINOR_TO_CHARS(val, where) minor_to_chars (val, where, sizeof (where))
 #define GID_TO_CHARS(val, where) gid_to_chars (val, where, sizeof (where))
 #define MAJOR_TO_CHARS(val, where) major_to_chars (val, where, sizeof (where))
 #define MINOR_TO_CHARS(val, where) minor_to_chars (val, where, sizeof (where))
@@ -499,14 +517,6 @@ enum read_header
   HEADER_FAILURE               /* ill-formed header, or bad checksum */
 };
 
   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 enum archive_format current_format;
 extern size_t recent_long_name_blocks;
 extern union block *current_header;
 extern enum archive_format current_format;
 extern size_t recent_long_name_blocks;
@@ -579,7 +589,6 @@ void undo_last_backup (void);
 
 int deref_stat (bool deref, char const *name, struct stat *buf);
 
 
 int deref_stat (bool deref, char const *name, struct stat *buf);
 
-void closeopen (void);
 int chdir_arg (char const *dir);
 void chdir_do (int dir);
 
 int chdir_arg (char const *dir);
 void chdir_do (int dir);
 
@@ -663,23 +672,22 @@ void update_archive (void);
 
 /* Module xheader.c.  */
 
 
 /* Module xheader.c.  */
 
+void xheader_init (struct xheader *xhdr);
 void xheader_decode (struct tar_stat_info *stat);
 void xheader_decode (struct tar_stat_info *stat);
-void xheader_decode_global (void);
-void xheader_store (char const *keyword, struct tar_stat_info const *st,
+void xheader_decode_global (struct xheader *xhdr);
+void xheader_store (char const *keyword, struct tar_stat_info *st,
                    void const *data);
                    void const *data);
-void xheader_read (union block *header, size_t size);
+void xheader_read (struct xheader *xhdr, union block *header, size_t size);
 void xheader_write (char type, char *name, struct xheader *xhdr);
 void xheader_write (char type, char *name, struct xheader *xhdr);
-void xheader_write_global (void);
+void xheader_write_global (struct xheader *xhdr);
 void xheader_finish (struct xheader *hdr);
 void xheader_destroy (struct xheader *hdr);
 char *xheader_xhdr_name (struct tar_stat_info *st);
 char *xheader_ghdr_name (void);
 void xheader_finish (struct xheader *hdr);
 void xheader_destroy (struct xheader *hdr);
 char *xheader_xhdr_name (struct tar_stat_info *st);
 char *xheader_ghdr_name (void);
-void xheader_write (char type, char *name, struct xheader *xhdr);
-void xheader_write_global (void);
 void xheader_set_option (char *string);
 void xheader_set_option (char *string);
-void xheader_string_begin (void);
-void xheader_string_add (char const *s);
-bool xheader_string_end (char const *keyword);
+void xheader_string_begin (struct xheader *xhdr);
+void xheader_string_add (struct xheader *xhdr, char const *s);
+bool xheader_string_end (struct xheader *xhdr, char const *keyword);
 bool xheader_keyword_deleted_p (const char *kw);
 char *xheader_format_name (struct tar_stat_info *st, const char *fmt,
                           size_t n);
 bool xheader_keyword_deleted_p (const char *kw);
 char *xheader_format_name (struct tar_stat_info *st, const char *fmt,
                           size_t n);
@@ -721,6 +729,14 @@ bool string_ascii_p (const char *str);
 bool utf8_convert (bool to_utf, char const *input, char **output);
 
 /* Module transform.c */
 bool utf8_convert (bool to_utf, char const *input, char **output);
 
 /* Module transform.c */
+typedef enum
+  {
+    xform_regfile,
+    xform_link,
+    xform_symlink
+  } xform_type;
+
 void set_transform_expr (const char *expr);
 bool transform_name (char **pinput);
 void set_transform_expr (const char *expr);
 bool transform_name (char **pinput);
-bool transform_name_fp (char **pinput, char *(*fun)(char *));
+bool transform_member_name (char **pinput, xform_type type);
+bool transform_name_fp (char **pinput, char *(*fun)(char *, void *), void *);
This page took 0.024454 seconds and 4 git commands to generate.