Lines Matching refs:bsdar
91 static void set_mode(struct bsdar *bsdar, char opt);
92 static void only_mode(struct bsdar *bsdar, const char *opt,
100 struct bsdar *bsdar, bsdar_storage; in main() local
105 bsdar = &bsdar_storage; in main()
106 memset(bsdar, 0, sizeof(*bsdar)); in main()
111 if ((bsdar->progname = getprogname()) == NULL) in main()
112 bsdar->progname = "ar"; in main()
116 len = strlen(bsdar->progname); in main()
118 strcmp(bsdar->progname + len - strlen("ranlib"), "ranlib") == 0) { in main()
150 bsdar->options |= AR_D; in main()
151 bsdar->options |= AR_S; in main()
152 while ((bsdar->filename = *argv++) != NULL) in main()
153 if (ar_write_archive(bsdar, 's')) in main()
164 bsdar_errc(bsdar, errno, "malloc failed"); in main()
175 bsdar->options |= AR_A; in main()
179 bsdar->options |= AR_B; in main()
182 bsdar->options |= AR_CC; in main()
185 bsdar->options |= AR_C; in main()
188 set_mode(bsdar, opt); in main()
195 bsdar->options |= AR_TR; in main()
204 set_mode(bsdar, opt); in main()
207 set_mode(bsdar, opt); in main()
210 bsdar->options |= AR_O; in main()
213 set_mode(bsdar, opt); in main()
216 set_mode(bsdar, opt); in main()
219 set_mode(bsdar, opt); in main()
222 bsdar->options |= AR_SS; in main()
225 bsdar->options |= AR_S; in main()
231 set_mode(bsdar, opt); in main()
238 bsdar->options |= AR_U; in main()
244 bsdar->options |= AR_V; in main()
247 set_mode(bsdar, opt); in main()
262 if (*argv == NULL && bsdar->mode != 'M') in main()
265 if (bsdar->options & AR_A && bsdar->options & AR_B) in main()
266 bsdar_errc(bsdar, 0, in main()
269 if (bsdar->options & AR_J && bsdar->options & AR_Z) in main()
270 bsdar_errc(bsdar, 0, "only one of -j and -z options allowed"); in main()
272 if (bsdar->options & AR_S && bsdar->options & AR_SS) in main()
273 bsdar_errc(bsdar, 0, "only one of -s and -S options allowed"); in main()
275 if (bsdar->options & (AR_A | AR_B)) { in main()
277 bsdar_errc(bsdar, 0, "no position operand specified"); in main()
278 if ((bsdar->posarg = basename(*argv)) == NULL) in main()
279 bsdar_errc(bsdar, errno, "basename failed"); in main()
285 if (Dflag || (Uflag == 0 && (bsdar->mode == 'q' || bsdar->mode == 'r' || in main()
286 (bsdar->mode == '\0' && bsdar->options & AR_S)))) in main()
287 bsdar->options |= AR_D; in main()
289 if (bsdar->options & AR_A) in main()
290 only_mode(bsdar, "-a", "mqr"); in main()
291 if (bsdar->options & AR_B) in main()
292 only_mode(bsdar, "-b", "mqr"); in main()
293 if (bsdar->options & AR_C) in main()
294 only_mode(bsdar, "-c", "qr"); in main()
295 if (bsdar->options & AR_CC) in main()
296 only_mode(bsdar, "-C", "x"); in main()
298 only_mode(bsdar, "-D", "qr"); in main()
300 only_mode(bsdar, "-U", "qr"); in main()
301 if (bsdar->options & AR_O) in main()
302 only_mode(bsdar, "-o", "x"); in main()
303 if (bsdar->options & AR_SS) in main()
304 only_mode(bsdar, "-S", "mqr"); in main()
305 if (bsdar->options & AR_U) in main()
306 only_mode(bsdar, "-u", "qrx"); in main()
308 if (bsdar->mode == 'M') { in main()
309 ar_mode_script(bsdar); in main()
313 if ((bsdar->filename = *argv) == NULL) in main()
316 bsdar->argc = --argc; in main()
317 bsdar->argv = ++argv; in main()
319 if ((!bsdar->mode || strchr("ptx", bsdar->mode)) && in main()
320 bsdar->options & AR_S) { in main()
321 exitcode = ar_write_archive(bsdar, 's'); in main()
322 if (!bsdar->mode) in main()
326 switch(bsdar->mode) { in main()
328 exitcode = ar_write_archive(bsdar, bsdar->mode); in main()
331 exitcode = ar_read_archive(bsdar, bsdar->mode, stdout); in main()
338 for (i = 0; i < bsdar->argc; i++) { in main()
339 if (bsdar->argv[i] != NULL) { in main()
340 bsdar_warnc(bsdar, 0, "%s: not found in archive", in main()
341 bsdar->argv[i]); in main()
350 set_mode(struct bsdar *bsdar, char opt) in set_mode() argument
353 if (bsdar->mode != '\0' && bsdar->mode != opt) in set_mode()
354 bsdar_errc(bsdar, 0, "Can't specify both -%c and -%c", opt, in set_mode()
355 bsdar->mode); in set_mode()
356 bsdar->mode = opt; in set_mode()
360 only_mode(struct bsdar *bsdar, const char *opt, const char *valid_modes) in only_mode() argument
363 if (strchr(valid_modes, bsdar->mode) == NULL) in only_mode()
364 bsdar_errc(bsdar, 0, "Option %s is not permitted in mode -%c", in only_mode()
365 opt, bsdar->mode); in only_mode()