diff options
Diffstat (limited to 'src/extern.h')
-rw-r--r-- | src/extern.h | 155 |
1 files changed, 88 insertions, 67 deletions
diff --git a/src/extern.h b/src/extern.h index e6e3d6e28e94..2bed3ce8f0be 100644 --- a/src/extern.h +++ b/src/extern.h @@ -1,5 +1,5 @@ /* extern.h - External declarations for cpio. Requires system.h. - Copyright (C) 1990, 1991, 1992, 2001 Free Software Foundation, Inc. + Copyright (C) 1990, 1991, 1992, 2001, 2006 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 @@ -11,15 +11,21 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU General Public + License along with this program; if not, write to the Free + Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA. */ + +#include "paxlib.h" +#include "quotearg.h" +#include "quote.h" enum archive_format { arf_unknown, arf_binary, arf_oldascii, arf_newascii, arf_crcascii, arf_tar, arf_ustar, arf_hpoldascii, arf_hpbinary }; + extern enum archive_format archive_format; extern int reset_time_flag; extern int io_block_size; @@ -66,7 +72,7 @@ extern char *new_media_message_after_number; extern int archive_des; extern char *archive_name; extern char *rsh_command_option; -extern unsigned long crc; +extern unsigned int crc; extern int delayed_seek_count; #ifdef DEBUG_CPIO extern int debug_flag; @@ -81,7 +87,6 @@ extern long long input_bytes, output_bytes; #else extern long input_bytes, output_bytes; #endif -extern char zeros_512[]; extern char *directory_name; extern char **save_patterns; extern int num_patterns; @@ -94,38 +99,35 @@ extern char *program_name; extern int (*xstat) (); extern void (*copy_function) (); -#if defined PROTOTYPES || (defined __STDC__ && __STDC__) -# define P_(s) s -#else -# define P_(s) () -#endif /* copyin.c */ -void warn_junk_bytes P_((long bytes_skipped)); -void read_in_header P_((struct new_cpio_header *file_hdr, int in_des)); -void read_in_old_ascii P_((struct new_cpio_header *file_hdr, int in_des)); -void read_in_new_ascii P_((struct new_cpio_header *file_hdr, int in_des)); -void read_in_binary P_((struct new_cpio_header *file_hdr, int in_des)); -void swab_array P_((char *arg, int count)); -void process_copy_in P_((void)); -void long_format P_((struct new_cpio_header *file_hdr, char *link_name)); -void print_name_with_quoting P_((char *p)); +void warn_junk_bytes (long bytes_skipped); +/* FIXME: make read_* static in copyin.c */ +void read_in_header (struct cpio_file_stat *file_hdr, int in_des); +void read_in_old_ascii (struct cpio_file_stat *file_hdr, int in_des); +void read_in_new_ascii (struct cpio_file_stat *file_hdr, int in_des); +void read_in_binary (struct cpio_file_stat *file_hdr, + struct old_cpio_header *short_hdr, int in_des); +void swab_array (char *arg, int count); +void process_copy_in (void); +void long_format (struct cpio_file_stat *file_hdr, char *link_name); +void print_name_with_quoting (char *p); /* copyout.c */ -void write_out_header P_((struct new_cpio_header *file_hdr, int out_des)); -void process_copy_out P_((void)); +int write_out_header (struct cpio_file_stat *file_hdr, int out_des); +void process_copy_out (void); /* copypass.c */ -void process_copy_pass P_((void)); -int link_to_maj_min_ino P_((char *file_name, int st_dev_maj, - int st_dev_min, int st_ino)); -int link_to_name P_((char *link_name, char *link_target)); +void process_copy_pass (void); +int link_to_maj_min_ino (char *file_name, int st_dev_maj, + int st_dev_min, int st_ino); +int link_to_name (char *link_name, char *link_target); /* dirname.c */ -char *dirname P_((char *path)); +char *dirname (char *path); /* filemode.c */ -void mode_string P_((unsigned int mode, char *str)); +void mode_string (unsigned int mode, char *str); /* idcache.c */ #ifndef __MSDOS__ @@ -136,61 +138,63 @@ gid_t *getgidbyname (); #endif /* main.c */ -void process_args P_((int argc, char *argv[])); -void initialize_buffers P_((void)); +void process_args (int argc, char *argv[]); +void initialize_buffers (void); /* makepath.c */ -int make_path P_((char *argpath, int mode, int parent_mode, - uid_t owner, gid_t group, char *verbose_fmt_string)); +int make_path (char *argpath, int mode, int parent_mode, + uid_t owner, gid_t group, char *verbose_fmt_string); /* tar.c */ -void write_out_tar_header P_((struct new_cpio_header *file_hdr, int out_des)); -int null_block P_((long *block, int size)); -void read_in_tar_header P_((struct new_cpio_header *file_hdr, int in_des)); -int otoa P_((char *s, unsigned long *n)); -int is_tar_header P_((char *buf)); -int is_tar_filename_too_long P_((char *name)); +void write_out_tar_header (struct cpio_file_stat *file_hdr, int out_des); +int null_block (long *block, int size); +void read_in_tar_header (struct cpio_file_stat *file_hdr, int in_des); +int otoa (char *s, unsigned long *n); +int is_tar_header (char *buf); +int is_tar_filename_too_long (char *name); /* userspec.c */ #ifndef __MSDOS__ -char *parse_user_spec P_((char *name, uid_t *uid, gid_t *gid, - char **username, char **groupname)); +char *parse_user_spec (char *name, uid_t *uid, gid_t *gid, + char **username, char **groupname); #endif /* util.c */ -void tape_empty_output_buffer P_((int out_des)); -void disk_empty_output_buffer P_((int out_des)); -void swahw_array P_((char *ptr, int count)); -void tape_buffered_write P_((char *in_buf, int out_des, long num_bytes)); -void tape_buffered_read P_((char *in_buf, int in_des, long num_bytes)); -int tape_buffered_peek P_((char *peek_buf, int in_des, int num_bytes)); -void tape_toss_input P_((int in_des, long num_bytes)); -void copy_files_tape_to_disk P_((int in_des, int out_des, long num_bytes)); -void copy_files_disk_to_tape P_((int in_des, int out_des, long num_bytes, char *filename)); -void copy_files_disk_to_disk P_((int in_des, int out_des, long num_bytes, char *filename)); -void warn_if_file_changed P_((char *file_name, unsigned long old_file_size, - unsigned long old_file_mtime)); -void create_all_directories P_((char *name)); -void prepare_append P_((int out_file_des)); -char *find_inode_file P_((unsigned long node_num, - unsigned long major_num, unsigned long minor_num)); -void add_inode P_((unsigned long node_num, char *file_name, - unsigned long major_num, unsigned long minor_num)); -int open_archive P_((char *file)); -void tape_offline P_((int tape_des)); -void get_next_reel P_((int tape_des)); -void set_new_media_message P_((char *message)); +void tape_empty_output_buffer (int out_des); +void disk_empty_output_buffer (int out_des); +void swahw_array (char *ptr, int count); +void tape_buffered_write (char *in_buf, int out_des, off_t num_bytes); +void tape_buffered_read (char *in_buf, int in_des, off_t num_bytes); +int tape_buffered_peek (char *peek_buf, int in_des, int num_bytes); +void tape_toss_input (int in_des, off_t num_bytes); +void copy_files_tape_to_disk (int in_des, int out_des, off_t num_bytes); +void copy_files_disk_to_tape (int in_des, int out_des, off_t num_bytes, char *filename); +void copy_files_disk_to_disk (int in_des, int out_des, off_t num_bytes, char *filename); +void warn_if_file_changed (char *file_name, unsigned long old_file_size, + off_t old_file_mtime); +void create_all_directories (char *name); +void prepare_append (int out_file_des); +char *find_inode_file (unsigned long node_num, + unsigned long major_num, unsigned long minor_num); +void add_inode (unsigned long node_num, char *file_name, + unsigned long major_num, unsigned long minor_num); +int open_archive (char *file); +void tape_offline (int tape_des); +void get_next_reel (int tape_des); +void set_new_media_message (char *message); #if defined(__MSDOS__) && !defined(__GNUC__) -int chown P_((char *path, int owner, int group)); +int chown (char *path, int owner, int group); #endif #ifdef __TURBOC__ -int utime P_((char *filename, struct utimbuf *utb)); +int utime (char *filename, struct utimbuf *utb); #endif #ifdef HPUX_CDF -char *add_cdf_double_slashes P_((char *filename)); +char *add_cdf_double_slashes (char *filename); #endif - -#define DISK_IO_BLOCK_SIZE (512) +void write_nuls_to_file (off_t num_bytes, int out_des, + void (*writer) (char *in_buf, + int out_des, off_t num_bytes)); +#define DISK_IO_BLOCK_SIZE 512 /* FIXME: Move to system.h? */ #ifndef SYMLINK_USES_UMASK @@ -198,3 +202,20 @@ char *add_cdf_double_slashes P_((char *filename)); #else # define UMASKED_SYMLINK(name1,name2,mode) umasked_symlink(name1,name2,mode) #endif /* SYMLINK_USES_UMASK */ + +void set_perms (int fd, struct cpio_file_stat *header); +void set_file_times (int fd, const char *name, unsigned long atime, + unsigned long mtime); +void stat_to_cpio (struct cpio_file_stat *hdr, struct stat *st); +void cpio_safer_name_suffix (char *name, bool link_target, + bool absolute_names, bool strip_leading_dots); + +/* FIXME: These two defines should be defined in paxutils */ +#define LG_8 3 +#define LG_16 4 + +uintmax_t from_ascii (char const *where, size_t digs, unsigned logbase); + +#define FROM_OCTAL(f) from_ascii (f, sizeof f, LG_8) +#define FROM_HEX(f) from_ascii (f, sizeof f, LG_16) + |