xref: /386bsd/usr/src/usr.bin/cpio/extern.h (revision a2142627)
1 /* extern.h - External declarations for cpio.  Requires system.h.
2    Copyright (C) 1990, 1991, 1992 Free Software Foundation, Inc.
3 
4    This program is free software; you can redistribute it and/or modify
5    it under the terms of the GNU General Public License as published by
6    the Free Software Foundation; either version 2, or (at your option)
7    any later version.
8 
9    This program is distributed in the hope that it will be useful,
10    but WITHOUT ANY WARRANTY; without even the implied warranty of
11    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12    GNU General Public License for more details.
13 
14    You should have received a copy of the GNU General Public License
15    along with this program; if not, write to the Free Software
16    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
17 
18 enum archive_format
19 {
20   arf_unknown, arf_binary, arf_oldascii, arf_newascii, arf_crcascii,
21   arf_tar, arf_ustar, arf_hpoldascii, arf_hpbinary
22 };
23 extern enum archive_format archive_format;
24 extern int reset_time_flag;
25 extern int io_block_size;
26 extern int create_dir_flag;
27 extern int rename_flag;
28 extern int table_flag;
29 extern int unconditional_flag;
30 extern int verbose_flag;
31 extern int dot_flag;
32 extern int link_flag;
33 extern int retain_time_flag;
34 extern int crc_i_flag;
35 extern int append_flag;
36 extern int swap_bytes_flag;
37 extern int swap_halfwords_flag;
38 extern int swapping_bytes;
39 extern int swapping_halfwords;
40 extern int set_owner_flag;
41 extern uid_t set_owner;
42 extern int set_group_flag;
43 extern gid_t set_group;
44 extern int no_chown_flag;
45 extern int last_header_start;
46 extern int copy_matching_files;
47 extern int numeric_uid;
48 extern char *pattern_file_name;
49 extern char *new_media_message;
50 extern char *new_media_message_with_number;
51 extern char *new_media_message_after_number;
52 extern int archive_des;
53 extern char *archive_name;
54 extern unsigned long crc;
55 #ifdef DEBUG_CPIO
56 extern int debug_flag;
57 #endif
58 
59 extern char *input_buffer, *output_buffer;
60 extern char *in_buff, *out_buff;
61 extern long input_size, output_size;
62 extern long input_bytes, output_bytes;
63 extern char zeros_512[];
64 extern char *directory_name;
65 extern char **save_patterns;
66 extern int num_patterns;
67 extern char name_end;
68 extern char input_is_special;
69 extern char output_is_special;
70 extern char input_is_seekable;
71 extern char output_is_seekable;
72 extern int f_force_local;
73 extern char *program_name;
74 extern int (*xstat) ();
75 extern void (*copy_function) ();
76 
77 #if __STDC__ || defined(__MSDOS__)
78 # define P_(s) s
79 #else
80 # define P_(s) ()
81 #endif
82 
83 /* copyin.c */
84 void read_in_header P_((struct new_cpio_header *file_hdr, int in_des));
85 void read_in_old_ascii P_((struct new_cpio_header *file_hdr, int in_des));
86 void read_in_new_ascii P_((struct new_cpio_header *file_hdr, int in_des));
87 void read_in_binary P_((struct new_cpio_header *file_hdr, int in_des));
88 void swab_array P_((char *arg, int count));
89 void process_copy_in P_((void));
90 void long_format P_((struct new_cpio_header *file_hdr, char *link_name));
91 void print_name_with_quoting P_((char *p));
92 
93 /* copyout.c */
94 void write_out_header P_((struct new_cpio_header *file_hdr, int out_des));
95 void process_copy_out P_((void));
96 
97 /* copypass.c */
98 void process_copy_pass P_((void));
99 
100 /* dirname.c */
101 char *dirname P_((char *path));
102 
103 /* error.c */
104 void error P_((int status, int errnum, char *message, ...));
105 
106 /* filemode.c */
107 void mode_string P_((unsigned int mode, char *str));
108 
109 /* idcache.c */
110 #ifndef __MSDOS__
111 char *getgroup ();
112 char *getuser ();
113 uid_t *getuidbyname ();
114 gid_t *getgidbyname ();
115 #endif
116 
117 /* main.c */
118 void process_args P_((int argc, char *argv[]));
119 void initialize_buffers P_((void));
120 
121 /* makepath.c */
122 int make_path P_((char *argpath, int mode, int parent_mode,
123 		  uid_t owner, gid_t group, char *verbose_fmt_string));
124 
125 /* stripslash.c */
126 void strip_trailing_slashes P_((char *path));
127 
128 /* tar.c */
129 void write_out_tar_header P_((struct new_cpio_header *file_hdr, int out_des));
130 int null_block P_((long *block, int size));
131 void read_in_tar_header P_((struct new_cpio_header *file_hdr, int in_des));
132 int otoa P_((char *s, unsigned long *n));
133 int is_tar_header P_((char *buf));
134 int is_tar_filename_too_long P_((char *name));
135 
136 /* userspec.c */
137 #ifndef __MSDOS__
138 char *parse_user_spec P_((char *name, uid_t *uid, gid_t *gid,
139 			  char **username, char **groupname));
140 #endif
141 
142 /* util.c */
143 void empty_output_buffer P_((int out_des));
144 void swahw_array P_((char *ptr, int count));
145 void fill_input_buffer P_((int in_des, int num_bytes));
146 void copy_buf_out P_((char *in_buf, int out_des, long num_bytes));
147 void copy_in_buf P_((char *in_buf, int in_des, long num_bytes));
148 int peek_in_buf P_((char *peek_buf, int in_des, int num_bytes));
149 void toss_input P_((int in_des, long num_bytes));
150 void copy_files P_((int in_des, int out_des, long num_bytes));
151 void create_all_directories P_((char *name));
152 void prepare_append P_((int out_file_des));
153 char *find_inode_file P_((unsigned long node_num,
154 			  unsigned long major_num, unsigned long minor_num));
155 void add_inode P_((unsigned long node_num, char *file_name,
156 		   unsigned long major_num, unsigned long minor_num));
157 int open_archive P_((char *file));
158 void tape_offline P_((int tape_des));
159 void get_next_reel P_((int tape_des));
160 void set_new_media_message P_((char *message));
161 #ifdef __MSDOS__
162 int chown P_((char *path, int owner, int group));
163 #endif
164 #ifdef __TURBOC__
165 int utime P_((char *filename, struct utimbuf *utb));
166 #endif
167 #ifdef HPUX_CDF
168 char *add_cdf_double_slashes P_((char *filename));
169 #endif
170 
171 /* xmalloc.c */
172 char *xmalloc P_((unsigned n));
173 char *xrealloc P_((char *p, unsigned n));
174 
175 /* xstrdup.c */
176 char *xstrdup P_((char *string));
177