usr.bin/ar/acpyacc.y
250
bsdar_errc(bsdar, 0, "archive_read_new failed");
usr.bin/ar/acpyacc.y
254
bsdar_warnc(bsdar, archive_errno(a), "%s",
usr.bin/ar/acpyacc.y
277
bsdar_errc(bsdar, errno, "unlink failed");
usr.bin/ar/acpyacc.y
283
bsdar_errc(bsdar, errno, "strdup failed");
usr.bin/ar/acpyacc.y
285
bsdar_errc(bsdar, errno, "mkstemp failed");
usr.bin/ar/acpyacc.y
293
bsdar_warnc(bsdar, errno, "open failed");
usr.bin/ar/acpyacc.y
297
bsdar_warnc(bsdar, 0, "arscp_copy failed");
usr.bin/ar/acpyacc.y
308
bsdar_errc(bsdar, 0, "archive_write_new failed");
usr.bin/ar/acpyacc.y
320
bsdar->filename = tmpac;
usr.bin/ar/acpyacc.y
333
bsdar_warnc(bsdar, errno, "fstate failed");
usr.bin/ar/acpyacc.y
338
bsdar_warnc(bsdar, errno, "mmap failed");
usr.bin/ar/acpyacc.y
344
bsdar_warnc(bsdar, errno, "write failed");
usr.bin/ar/acpyacc.y
349
bsdar_errc(bsdar, errno, "munmap failed");
usr.bin/ar/acpyacc.y
367
bsdar->addlib = archive;
usr.bin/ar/acpyacc.y
368
ar_write_archive(bsdar, 'A');
usr.bin/ar/acpyacc.y
381
ar_write_archive(bsdar, 'q');
usr.bin/ar/acpyacc.y
394
ar_write_archive(bsdar, 'd');
usr.bin/ar/acpyacc.y
407
ar_read_archive(bsdar, 'x', stdout);
usr.bin/ar/acpyacc.y
419
bsdar->argc = 0;
usr.bin/ar/acpyacc.y
420
bsdar->argv = NULL;
usr.bin/ar/acpyacc.y
422
bsdar->options |= AR_V;
usr.bin/ar/acpyacc.y
423
ar_read_archive(bsdar, 't', stdout);
usr.bin/ar/acpyacc.y
424
bsdar->options &= ~AR_V;
usr.bin/ar/acpyacc.y
437
bsdar_errc(bsdar, errno, "fopen %s failed", rlt);
usr.bin/ar/acpyacc.y
440
bsdar->filename = archive;
usr.bin/ar/acpyacc.y
444
bsdar->argc = 0;
usr.bin/ar/acpyacc.y
445
bsdar->argv = NULL;
usr.bin/ar/acpyacc.y
448
bsdar->options |= AR_V;
usr.bin/ar/acpyacc.y
449
ar_read_archive(bsdar, 't', out);
usr.bin/ar/acpyacc.y
450
bsdar->options &= ~AR_V;
usr.bin/ar/acpyacc.y
454
bsdar_errc(bsdar, errno, "fclose %s failed", rlt);
usr.bin/ar/acpyacc.y
458
bsdar->filename = tmpac;
usr.bin/ar/acpyacc.y
472
ar_write_archive(bsdar, 'r');
usr.bin/ar/acpyacc.y
485
bsdar_errc(bsdar, errno, "rename failed");
usr.bin/ar/acpyacc.y
493
bsdar_errc(bsdar, errno, "chmod failed");
usr.bin/ar/acpyacc.y
498
bsdar->filename = NULL;
usr.bin/ar/acpyacc.y
500
bsdar_warnc(bsdar, 0, "no open output archive");
usr.bin/ar/acpyacc.y
515
bsdar_errc(bsdar, errno, "strdup failed");
usr.bin/ar/acpyacc.y
532
bsdar_errc(bsdar, errno, "unlink %s failed",
usr.bin/ar/acpyacc.y
551
bsdar_warnc(bsdar, 0, "no open output archive");
usr.bin/ar/acpyacc.y
563
bsdar_errc(bsdar, errno, "malloc failed");
usr.bin/ar/acpyacc.y
605
bsdar_errc(bsdar, errno, "malloc failed");
usr.bin/ar/acpyacc.y
610
bsdar_errc(bsdar, errno, "invalid mlist");
usr.bin/ar/acpyacc.y
614
bsdar->argc = n;
usr.bin/ar/acpyacc.y
615
bsdar->argv = argv;
usr.bin/ar/acpyacc.y
624
for(i = 0; i < bsdar->argc; i++)
usr.bin/ar/acpyacc.y
625
free(bsdar->argv[i]);
usr.bin/ar/acpyacc.y
627
free(bsdar->argv);
usr.bin/ar/acpyacc.y
643
ar_mode_script(struct bsdar *ar)
usr.bin/ar/acpyacc.y
646
bsdar = ar;
usr.bin/ar/acpyacc.y
81
static struct bsdar *bsdar;
usr.bin/ar/ar.c
100
struct bsdar *bsdar, bsdar_storage;
usr.bin/ar/ar.c
105
bsdar = &bsdar_storage;
usr.bin/ar/ar.c
106
memset(bsdar, 0, sizeof(*bsdar));
usr.bin/ar/ar.c
111
if ((bsdar->progname = getprogname()) == NULL)
usr.bin/ar/ar.c
112
bsdar->progname = "ar";
usr.bin/ar/ar.c
116
len = strlen(bsdar->progname);
usr.bin/ar/ar.c
118
strcmp(bsdar->progname + len - strlen("ranlib"), "ranlib") == 0) {
usr.bin/ar/ar.c
150
bsdar->options |= AR_D;
usr.bin/ar/ar.c
151
bsdar->options |= AR_S;
usr.bin/ar/ar.c
152
while ((bsdar->filename = *argv++) != NULL)
usr.bin/ar/ar.c
153
if (ar_write_archive(bsdar, 's'))
usr.bin/ar/ar.c
164
bsdar_errc(bsdar, errno, "malloc failed");
usr.bin/ar/ar.c
175
bsdar->options |= AR_A;
usr.bin/ar/ar.c
179
bsdar->options |= AR_B;
usr.bin/ar/ar.c
182
bsdar->options |= AR_CC;
usr.bin/ar/ar.c
185
bsdar->options |= AR_C;
usr.bin/ar/ar.c
188
set_mode(bsdar, opt);
usr.bin/ar/ar.c
195
bsdar->options |= AR_TR;
usr.bin/ar/ar.c
204
set_mode(bsdar, opt);
usr.bin/ar/ar.c
207
set_mode(bsdar, opt);
usr.bin/ar/ar.c
210
bsdar->options |= AR_O;
usr.bin/ar/ar.c
213
set_mode(bsdar, opt);
usr.bin/ar/ar.c
216
set_mode(bsdar, opt);
usr.bin/ar/ar.c
219
set_mode(bsdar, opt);
usr.bin/ar/ar.c
222
bsdar->options |= AR_SS;
usr.bin/ar/ar.c
225
bsdar->options |= AR_S;
usr.bin/ar/ar.c
231
set_mode(bsdar, opt);
usr.bin/ar/ar.c
238
bsdar->options |= AR_U;
usr.bin/ar/ar.c
244
bsdar->options |= AR_V;
usr.bin/ar/ar.c
247
set_mode(bsdar, opt);
usr.bin/ar/ar.c
262
if (*argv == NULL && bsdar->mode != 'M')
usr.bin/ar/ar.c
265
if (bsdar->options & AR_A && bsdar->options & AR_B)
usr.bin/ar/ar.c
266
bsdar_errc(bsdar, 0,
usr.bin/ar/ar.c
269
if (bsdar->options & AR_J && bsdar->options & AR_Z)
usr.bin/ar/ar.c
270
bsdar_errc(bsdar, 0, "only one of -j and -z options allowed");
usr.bin/ar/ar.c
272
if (bsdar->options & AR_S && bsdar->options & AR_SS)
usr.bin/ar/ar.c
273
bsdar_errc(bsdar, 0, "only one of -s and -S options allowed");
usr.bin/ar/ar.c
275
if (bsdar->options & (AR_A | AR_B)) {
usr.bin/ar/ar.c
277
bsdar_errc(bsdar, 0, "no position operand specified");
usr.bin/ar/ar.c
278
if ((bsdar->posarg = basename(*argv)) == NULL)
usr.bin/ar/ar.c
279
bsdar_errc(bsdar, errno, "basename failed");
usr.bin/ar/ar.c
285
if (Dflag || (Uflag == 0 && (bsdar->mode == 'q' || bsdar->mode == 'r' ||
usr.bin/ar/ar.c
286
(bsdar->mode == '\0' && bsdar->options & AR_S))))
usr.bin/ar/ar.c
287
bsdar->options |= AR_D;
usr.bin/ar/ar.c
289
if (bsdar->options & AR_A)
usr.bin/ar/ar.c
290
only_mode(bsdar, "-a", "mqr");
usr.bin/ar/ar.c
291
if (bsdar->options & AR_B)
usr.bin/ar/ar.c
292
only_mode(bsdar, "-b", "mqr");
usr.bin/ar/ar.c
293
if (bsdar->options & AR_C)
usr.bin/ar/ar.c
294
only_mode(bsdar, "-c", "qr");
usr.bin/ar/ar.c
295
if (bsdar->options & AR_CC)
usr.bin/ar/ar.c
296
only_mode(bsdar, "-C", "x");
usr.bin/ar/ar.c
298
only_mode(bsdar, "-D", "qr");
usr.bin/ar/ar.c
300
only_mode(bsdar, "-U", "qr");
usr.bin/ar/ar.c
301
if (bsdar->options & AR_O)
usr.bin/ar/ar.c
302
only_mode(bsdar, "-o", "x");
usr.bin/ar/ar.c
303
if (bsdar->options & AR_SS)
usr.bin/ar/ar.c
304
only_mode(bsdar, "-S", "mqr");
usr.bin/ar/ar.c
305
if (bsdar->options & AR_U)
usr.bin/ar/ar.c
306
only_mode(bsdar, "-u", "qrx");
usr.bin/ar/ar.c
308
if (bsdar->mode == 'M') {
usr.bin/ar/ar.c
309
ar_mode_script(bsdar);
usr.bin/ar/ar.c
313
if ((bsdar->filename = *argv) == NULL)
usr.bin/ar/ar.c
316
bsdar->argc = --argc;
usr.bin/ar/ar.c
317
bsdar->argv = ++argv;
usr.bin/ar/ar.c
319
if ((!bsdar->mode || strchr("ptx", bsdar->mode)) &&
usr.bin/ar/ar.c
320
bsdar->options & AR_S) {
usr.bin/ar/ar.c
321
exitcode = ar_write_archive(bsdar, 's');
usr.bin/ar/ar.c
322
if (!bsdar->mode)
usr.bin/ar/ar.c
326
switch(bsdar->mode) {
usr.bin/ar/ar.c
328
exitcode = ar_write_archive(bsdar, bsdar->mode);
usr.bin/ar/ar.c
331
exitcode = ar_read_archive(bsdar, bsdar->mode, stdout);
usr.bin/ar/ar.c
338
for (i = 0; i < bsdar->argc; i++) {
usr.bin/ar/ar.c
339
if (bsdar->argv[i] != NULL) {
usr.bin/ar/ar.c
340
bsdar_warnc(bsdar, 0, "%s: not found in archive",
usr.bin/ar/ar.c
341
bsdar->argv[i]);
usr.bin/ar/ar.c
350
set_mode(struct bsdar *bsdar, char opt)
usr.bin/ar/ar.c
353
if (bsdar->mode != '\0' && bsdar->mode != opt)
usr.bin/ar/ar.c
354
bsdar_errc(bsdar, 0, "Can't specify both -%c and -%c", opt,
usr.bin/ar/ar.c
355
bsdar->mode);
usr.bin/ar/ar.c
356
bsdar->mode = opt;
usr.bin/ar/ar.c
360
only_mode(struct bsdar *bsdar, const char *opt, const char *valid_modes)
usr.bin/ar/ar.c
363
if (strchr(valid_modes, bsdar->mode) == NULL)
usr.bin/ar/ar.c
364
bsdar_errc(bsdar, 0, "Option %s is not permitted in mode -%c",
usr.bin/ar/ar.c
365
opt, bsdar->mode);
usr.bin/ar/ar.c
91
static void set_mode(struct bsdar *bsdar, char opt);
usr.bin/ar/ar.c
92
static void only_mode(struct bsdar *bsdar, const char *opt,
usr.bin/ar/ar.h
115
void ar_mode_script(struct bsdar *ar);
usr.bin/ar/ar.h
116
int ar_read_archive(struct bsdar *ar, int mode, FILE *out);
usr.bin/ar/ar.h
117
int ar_write_archive(struct bsdar *ar, int mode);
usr.bin/ar/ar.h
118
void bsdar_errc(struct bsdar *, int _code, const char *fmt, ...) __dead2;
usr.bin/ar/ar.h
119
void bsdar_warnc(struct bsdar *, int _code, const char *fmt, ...);
usr.bin/ar/ar.h
55
bsdar_errc(bsdar, archive_errno(a), "%s", \
usr.bin/ar/read.c
103
bsdar_errc(bsdar, errno,
usr.bin/ar/read.c
117
if (bsdar->options & AR_V) {
usr.bin/ar/read.c
136
bsdar_warnc(bsdar, archive_errno(a), "%s",
usr.bin/ar/read.c
147
if (bsdar->options & AR_V) {
usr.bin/ar/read.c
157
bsdar_warnc(bsdar, 0,
usr.bin/ar/read.c
159
bsdar->filename);
usr.bin/ar/read.c
164
if (bsdar->options & AR_CC)
usr.bin/ar/read.c
166
if (bsdar->options & AR_U &&
usr.bin/ar/read.c
172
if (bsdar->options & AR_V)
usr.bin/ar/read.c
176
bsdar_warnc(bsdar, 0,
usr.bin/ar/read.c
183
if (bsdar->options & AR_O)
usr.bin/ar/read.c
190
bsdar_warnc(bsdar, archive_errno(a), "%s",
usr.bin/ar/read.c
48
ar_read_archive(struct bsdar *bsdar, int mode, FILE *out)
usr.bin/ar/read.c
69
bsdar_errc(bsdar, 0, "archive_read_new failed");
usr.bin/ar/read.c
71
AC(archive_read_open_filename(a, bsdar->filename, DEF_BLKSZ));
usr.bin/ar/read.c
79
bsdar_warnc(bsdar, archive_errno(a), "%s",
usr.bin/ar/read.c
84
bsdar_warnc(bsdar, 0, "Retrying...");
usr.bin/ar/read.c
96
if (bsdar->argc > 0) {
usr.bin/ar/read.c
98
for(i = 0; i < bsdar->argc; i++) {
usr.bin/ar/read.c
99
av = &bsdar->argv[i];
usr.bin/ar/util.c
40
static void bsdar_vwarnc(struct bsdar *, int code,
usr.bin/ar/util.c
42
static void bsdar_verrc(struct bsdar *bsdar, int code,
usr.bin/ar/util.c
46
bsdar_vwarnc(struct bsdar *bsdar, int code, const char *fmt, va_list ap)
usr.bin/ar/util.c
49
fprintf(stderr, "%s: warning: ", bsdar->progname);
usr.bin/ar/util.c
57
bsdar_warnc(struct bsdar *bsdar, int code, const char *fmt, ...)
usr.bin/ar/util.c
62
bsdar_vwarnc(bsdar, code, fmt, ap);
usr.bin/ar/util.c
67
bsdar_verrc(struct bsdar *bsdar, int code, const char *fmt, va_list ap)
usr.bin/ar/util.c
70
fprintf(stderr, "%s: fatal: ", bsdar->progname);
usr.bin/ar/util.c
78
bsdar_errc(struct bsdar *bsdar, int code, const char *fmt, ...)
usr.bin/ar/util.c
83
bsdar_verrc(bsdar, code, fmt, ap);
usr.bin/ar/write.c
100
bsdar_errc(bsdar, errno, "strdup failed");
usr.bin/ar/write.c
102
bsdar_errc(bsdar, errno, "basename failed");
usr.bin/ar/write.c
103
if (bsdar->options & AR_TR && strlen(bname) > _TRUNCATE_LEN) {
usr.bin/ar/write.c
105
bsdar_errc(bsdar, errno, "malloc failed");
usr.bin/ar/write.c
110
bsdar_errc(bsdar, errno, "strdup failed");
usr.bin/ar/write.c
114
bsdar_warnc(bsdar, errno, "can't fstat file: %s", obj->name);
usr.bin/ar/write.c
118
bsdar_warnc(bsdar, 0, "%s is not an ordinary file", obj->name);
usr.bin/ar/write.c
128
if (mtime != 0 && bsdar->options & AR_U && sb.st_mtime <= mtime)
usr.bin/ar/write.c
137
if (bsdar->options & AR_D) {
usr.bin/ar/write.c
159
bsdar_warnc(bsdar, errno, "can't mmap file: %s", obj->name);
usr.bin/ar/write.c
163
bsdar_errc(bsdar, errno, "close failed: %s",
usr.bin/ar/write.c
170
bsdar_errc(bsdar, errno, "close failed: %s",
usr.bin/ar/write.c
181
free_obj(struct bsdar *bsdar, struct ar_obj *obj)
usr.bin/ar/write.c
187
bsdar_warnc(bsdar, errno,
usr.bin/ar/write.c
197
insert_obj(struct bsdar *bsdar, struct ar_obj *obj, struct ar_obj *pos)
usr.bin/ar/write.c
200
bsdar_errc(bsdar, 0, "try to insert a null obj");
usr.bin/ar/write.c
209
if (bsdar->options & AR_B) {
usr.bin/ar/write.c
213
if (bsdar->options & AR_A) {
usr.bin/ar/write.c
214
TAILQ_INSERT_AFTER(&bsdar->v_obj, pos, obj, objs);
usr.bin/ar/write.c
219
TAILQ_INSERT_TAIL(&bsdar->v_obj, obj, objs);
usr.bin/ar/write.c
230
read_objs(struct bsdar *bsdar, const char *archive, int checkargv)
usr.bin/ar/write.c
243
bsdar_errc(bsdar, 0, "archive_read_new failed");
usr.bin/ar/write.c
249
bsdar_errc(bsdar, archive_errno(a), "%s",
usr.bin/ar/write.c
254
bsdar_warnc(bsdar, archive_errno(a), "%s",
usr.bin/ar/write.c
257
bsdar_warnc(bsdar, 0, "Retrying...");
usr.bin/ar/write.c
273
if (checkargv && bsdar->argc > 0) {
usr.bin/ar/write.c
275
for(i = 0; i < bsdar->argc; i++) {
usr.bin/ar/write.c
276
av = &bsdar->argv[i];
usr.bin/ar/write.c
280
bsdar_errc(bsdar, errno,
usr.bin/ar/write.c
297
bsdar_errc(bsdar, errno, "malloc failed");
usr.bin/ar/write.c
299
bsdar_warnc(bsdar, archive_errno(a), "%s",
usr.bin/ar/write.c
309
bsdar_errc(bsdar, errno, "malloc failed");
usr.bin/ar/write.c
312
bsdar_errc(bsdar, errno, "strdup failed");
usr.bin/ar/write.c
326
TAILQ_INSERT_TAIL(&bsdar->v_obj, obj, objs);
usr.bin/ar/write.c
336
ar_write_archive(struct bsdar *bsdar, int mode)
usr.bin/ar/write.c
344
TAILQ_INIT(&bsdar->v_obj);
usr.bin/ar/write.c
357
if (stat(bsdar->filename, &sb) != 0) {
usr.bin/ar/write.c
359
bsdar_warnc(bsdar, 0, "stat %s failed",
usr.bin/ar/write.c
360
bsdar->filename);
usr.bin/ar/write.c
366
bsdar_warnc(bsdar, 0, "%s: no such file",
usr.bin/ar/write.c
367
bsdar->filename);
usr.bin/ar/write.c
372
if (!(bsdar->options & AR_C))
usr.bin/ar/write.c
373
bsdar_warnc(bsdar, 0, "creating %s", bsdar->filename);
usr.bin/ar/write.c
380
read_objs(bsdar, bsdar->filename, 0);
usr.bin/ar/write.c
408
read_objs(bsdar, bsdar->addlib, 1);
usr.bin/ar/write.c
415
if (bsdar->options & AR_A || bsdar->options & AR_B) {
usr.bin/ar/write.c
416
TAILQ_FOREACH(obj, &bsdar->v_obj, objs) {
usr.bin/ar/write.c
417
if (strcmp(obj->name, bsdar->posarg) == 0) {
usr.bin/ar/write.c
428
bsdar->options &= ~(AR_A | AR_B);
usr.bin/ar/write.c
431
for (i = 0; i < bsdar->argc; i++) {
usr.bin/ar/write.c
432
av = &bsdar->argv[i];
usr.bin/ar/write.c
434
TAILQ_FOREACH_SAFE(obj, &bsdar->v_obj, objs, obj_temp) {
usr.bin/ar/write.c
436
bsdar_errc(bsdar, errno, "basename failed");
usr.bin/ar/write.c
437
if (bsdar->options & AR_TR) {
usr.bin/ar/write.c
449
nobj = create_obj_from_file(bsdar, *av,
usr.bin/ar/write.c
457
if (bsdar->options & AR_V)
usr.bin/ar/write.c
461
TAILQ_REMOVE(&bsdar->v_obj, obj, objs);
usr.bin/ar/write.c
463
free_obj(bsdar, obj);
usr.bin/ar/write.c
466
insert_obj(bsdar, obj, pos);
usr.bin/ar/write.c
468
insert_obj(bsdar, nobj, pos);
usr.bin/ar/write.c
484
for (i = 0; i < bsdar->argc; i++) {
usr.bin/ar/write.c
485
av = &bsdar->argv[i];
usr.bin/ar/write.c
487
nobj = create_obj_from_file(bsdar, *av, 0);
usr.bin/ar/write.c
493
insert_obj(bsdar, nobj, pos);
usr.bin/ar/write.c
494
if (bsdar->options & AR_V && nobj != NULL)
usr.bin/ar/write.c
501
write_objs(bsdar);
usr.bin/ar/write.c
502
write_cleanup(bsdar);
usr.bin/ar/write.c
511
write_cleanup(struct bsdar *bsdar)
usr.bin/ar/write.c
515
TAILQ_FOREACH_SAFE(obj, &bsdar->v_obj, objs, obj_temp) {
usr.bin/ar/write.c
516
TAILQ_REMOVE(&bsdar->v_obj, obj, objs);
usr.bin/ar/write.c
517
free_obj(bsdar, obj);
usr.bin/ar/write.c
520
free(bsdar->as);
usr.bin/ar/write.c
521
free(bsdar->s_so);
usr.bin/ar/write.c
522
free(bsdar->s_sn);
usr.bin/ar/write.c
523
bsdar->as = NULL;
usr.bin/ar/write.c
524
bsdar->s_so = NULL;
usr.bin/ar/write.c
525
bsdar->s_so_max = 0;
usr.bin/ar/write.c
526
bsdar->s_sn = NULL;
usr.bin/ar/write.c
556
write_data(struct bsdar *bsdar, struct archive *a, const void *buf, size_t s)
usr.bin/ar/write.c
56
static void add_to_ar_str_table(struct bsdar *bsdar, const char *name);
usr.bin/ar/write.c
564
bsdar_errc(bsdar, archive_errno(a), "%s",
usr.bin/ar/write.c
57
static void add_to_ar_sym_table(struct bsdar *bsdar, const char *name);
usr.bin/ar/write.c
575
write_objs(struct bsdar *bsdar)
usr.bin/ar/write.c
58
static struct ar_obj *create_obj_from_file(struct bsdar *bsdar,
usr.bin/ar/write.c
588
bsdar_errc(bsdar, 0, "ELF library initialization failed: %s",
usr.bin/ar/write.c
591
bsdar->rela_off = 0;
usr.bin/ar/write.c
594
TAILQ_FOREACH(obj, &bsdar->v_obj, objs) {
usr.bin/ar/write.c
595
if (!(bsdar->options & AR_SS) && obj->maddr != NULL)
usr.bin/ar/write.c
596
create_symtab_entry(bsdar, obj->maddr, obj->size);
usr.bin/ar/write.c
598
add_to_ar_str_table(bsdar, obj->name);
usr.bin/ar/write.c
599
bsdar->rela_off += _ARHDR_LEN + obj->size + obj->size % 2;
usr.bin/ar/write.c
60
static void create_symtab_entry(struct bsdar *bsdar, void *maddr,
usr.bin/ar/write.c
607
if (bsdar->s_cnt != 0 && bsdar->s_sn_sz % 2 != 0)
usr.bin/ar/write.c
608
bsdar->s_sn[bsdar->s_sn_sz++] = '\0';
usr.bin/ar/write.c
615
if (bsdar->as != NULL && bsdar->as_sz % 2 != 0)
usr.bin/ar/write.c
616
bsdar->as[bsdar->as_sz++] = '\n';
usr.bin/ar/write.c
62
static void free_obj(struct bsdar *bsdar, struct ar_obj *obj);
usr.bin/ar/write.c
626
if (bsdar->s_cnt != 0) {
usr.bin/ar/write.c
627
s_sz = (bsdar->s_cnt + 1) * sizeof(uint32_t) + bsdar->s_sn_sz;
usr.bin/ar/write.c
629
if (bsdar->as != NULL)
usr.bin/ar/write.c
63
static void insert_obj(struct bsdar *bsdar, struct ar_obj *obj,
usr.bin/ar/write.c
630
pm_sz += _ARHDR_LEN + bsdar->as_sz;
usr.bin/ar/write.c
632
if (bsdar->s_so_max > UINT32_MAX - pm_sz) {
usr.bin/ar/write.c
635
s_sz = (bsdar->s_cnt + 1) * sizeof(uint64_t) +
usr.bin/ar/write.c
636
bsdar->s_sn_sz;
usr.bin/ar/write.c
639
for (i = 0; i < bsdar->s_cnt; i++)
usr.bin/ar/write.c
640
bsdar->s_so[i] =
usr.bin/ar/write.c
641
htobe64(bsdar->s_so[i] + pm_sz);
usr.bin/ar/write.c
647
for (i = 0; i < bsdar->s_cnt; i++)
usr.bin/ar/write.c
648
((uint32_t *)(bsdar->s_so))[i] =
usr.bin/ar/write.c
649
htobe32(bsdar->s_so[i] + pm_sz);
usr.bin/ar/write.c
654
bsdar_errc(bsdar, 0, "archive_write_new failed");
usr.bin/ar/write.c
658
AC(archive_write_open_filename(a, bsdar->filename));
usr.bin/ar/write.c
66
static void read_objs(struct bsdar *bsdar, const char *archive,
usr.bin/ar/write.c
665
if ((bsdar->s_cnt != 0 && !(bsdar->options & AR_SS)) ||
usr.bin/ar/write.c
666
bsdar->options & AR_S) {
usr.bin/ar/write.c
669
bsdar_errc(bsdar, 0, "archive_entry_new failed");
usr.bin/ar/write.c
674
if ((bsdar->options & AR_D) == 0)
usr.bin/ar/write.c
676
archive_entry_set_size(entry, (bsdar->s_cnt + 1) * w_sz +
usr.bin/ar/write.c
677
bsdar->s_sn_sz);
usr.bin/ar/write.c
68
static void write_cleanup(struct bsdar *bsdar);
usr.bin/ar/write.c
680
nr = htobe64(bsdar->s_cnt);
usr.bin/ar/write.c
681
write_data(bsdar, a, &nr, sizeof(nr));
usr.bin/ar/write.c
683
nr32 = htobe32((uint32_t)bsdar->s_cnt);
usr.bin/ar/write.c
684
write_data(bsdar, a, &nr32, sizeof(nr32));
usr.bin/ar/write.c
686
write_data(bsdar, a, bsdar->s_so, w_sz * bsdar->s_cnt);
usr.bin/ar/write.c
687
write_data(bsdar, a, bsdar->s_sn, bsdar->s_sn_sz);
usr.bin/ar/write.c
69
static void write_data(struct bsdar *bsdar, struct archive *a,
usr.bin/ar/write.c
692
if (bsdar->as != NULL) {
usr.bin/ar/write.c
695
bsdar_errc(bsdar, 0, "archive_entry_new failed");
usr.bin/ar/write.c
697
archive_entry_set_size(entry, bsdar->as_sz);
usr.bin/ar/write.c
699
write_data(bsdar, a, bsdar->as, bsdar->as_sz);
usr.bin/ar/write.c
704
TAILQ_FOREACH(obj, &bsdar->v_obj, objs) {
usr.bin/ar/write.c
707
bsdar_errc(bsdar, 0, "archive_entry_new failed");
usr.bin/ar/write.c
71
static void write_objs(struct bsdar *bsdar);
usr.bin/ar/write.c
718
write_data(bsdar, a, obj->maddr, obj->size);
usr.bin/ar/write.c
730
create_symtab_entry(struct bsdar *bsdar, void *maddr, size_t size)
usr.bin/ar/write.c
742
bsdar_warnc(bsdar, 0, "elf_memory() failed: %s",
usr.bin/ar/write.c
752
bsdar_warnc(bsdar, 0, "elf_getshstrndx failed: %s",
usr.bin/ar/write.c
762
bsdar_warnc(bsdar, 0,
usr.bin/ar/write.c
767
bsdar_warnc(bsdar, 0,
usr.bin/ar/write.c
778
bsdar_warnc(bsdar, 0, "elf_nextscn failed: %s",
usr.bin/ar/write.c
781
bsdar_warnc(bsdar, 0, "can't find .strtab section");
usr.bin/ar/write.c
789
bsdar_warnc(bsdar, 0, "elf_getshdr failed: %s",
usr.bin/ar/write.c
79
create_obj_from_file(struct bsdar *bsdar, const char *name, time_t mtime)
usr.bin/ar/write.c
803
bsdar_warnc(bsdar, 0,
usr.bin/ar/write.c
820
bsdar_warnc(bsdar, 0,
usr.bin/ar/write.c
826
add_to_ar_sym_table(bsdar, name);
usr.bin/ar/write.c
832
bsdar_warnc(bsdar, 0, "elf_nextscn failed: %s",
usr.bin/ar/write.c
842
add_to_ar_str_table(struct bsdar *bsdar, const char *name)
usr.bin/ar/write.c
845
if (bsdar->as == NULL) {
usr.bin/ar/write.c
846
bsdar->as_cap = _INIT_AS_CAP;
usr.bin/ar/write.c
847
bsdar->as_sz = 0;
usr.bin/ar/write.c
848
if ((bsdar->as = malloc(bsdar->as_cap)) == NULL)
usr.bin/ar/write.c
849
bsdar_errc(bsdar, errno, "malloc failed");
usr.bin/ar/write.c
856
while (bsdar->as_sz + strlen(name) + 3 > bsdar->as_cap) {
usr.bin/ar/write.c
857
bsdar->as_cap *= 2;
usr.bin/ar/write.c
858
bsdar->as = realloc(bsdar->as, bsdar->as_cap);
usr.bin/ar/write.c
859
if (bsdar->as == NULL)
usr.bin/ar/write.c
860
bsdar_errc(bsdar, errno, "realloc failed");
usr.bin/ar/write.c
862
strncpy(&bsdar->as[bsdar->as_sz], name, strlen(name));
usr.bin/ar/write.c
863
bsdar->as_sz += strlen(name);
usr.bin/ar/write.c
864
bsdar->as[bsdar->as_sz++] = '/';
usr.bin/ar/write.c
865
bsdar->as[bsdar->as_sz++] = '\n';
usr.bin/ar/write.c
872
add_to_ar_sym_table(struct bsdar *bsdar, const char *name)
usr.bin/ar/write.c
875
if (bsdar->s_so == NULL) {
usr.bin/ar/write.c
876
if ((bsdar->s_so = malloc(_INIT_SYMOFF_CAP)) ==
usr.bin/ar/write.c
878
bsdar_errc(bsdar, errno, "malloc failed");
usr.bin/ar/write.c
879
bsdar->s_so_cap = _INIT_SYMOFF_CAP;
usr.bin/ar/write.c
880
bsdar->s_cnt = 0;
usr.bin/ar/write.c
883
if (bsdar->s_sn == NULL) {
usr.bin/ar/write.c
884
if ((bsdar->s_sn = malloc(_INIT_SYMNAME_CAP)) == NULL)
usr.bin/ar/write.c
885
bsdar_errc(bsdar, errno, "malloc failed");
usr.bin/ar/write.c
886
bsdar->s_sn_cap = _INIT_SYMNAME_CAP;
usr.bin/ar/write.c
887
bsdar->s_sn_sz = 0;
usr.bin/ar/write.c
890
if (bsdar->s_cnt * sizeof(uint64_t) >= bsdar->s_so_cap) {
usr.bin/ar/write.c
891
bsdar->s_so_cap *= 2;
usr.bin/ar/write.c
892
bsdar->s_so = realloc(bsdar->s_so, bsdar->s_so_cap);
usr.bin/ar/write.c
893
if (bsdar->s_so == NULL)
usr.bin/ar/write.c
894
bsdar_errc(bsdar, errno, "realloc failed");
usr.bin/ar/write.c
896
bsdar->s_so[bsdar->s_cnt] = bsdar->rela_off;
usr.bin/ar/write.c
897
if ((uint64_t)bsdar->rela_off > bsdar->s_so_max)
usr.bin/ar/write.c
898
bsdar->s_so_max = (uint64_t)bsdar->rela_off;
usr.bin/ar/write.c
899
bsdar->s_cnt++;
usr.bin/ar/write.c
905
while (bsdar->s_sn_sz + strlen(name) + 2 > bsdar->s_sn_cap) {
usr.bin/ar/write.c
906
bsdar->s_sn_cap *= 2;
usr.bin/ar/write.c
907
bsdar->s_sn = realloc(bsdar->s_sn, bsdar->s_sn_cap);
usr.bin/ar/write.c
908
if (bsdar->s_sn == NULL)
usr.bin/ar/write.c
909
bsdar_errc(bsdar, errno, "realloc failed");
usr.bin/ar/write.c
91
bsdar_errc(bsdar, errno, "malloc failed");
usr.bin/ar/write.c
911
strncpy(&bsdar->s_sn[bsdar->s_sn_sz], name, strlen(name));
usr.bin/ar/write.c
912
bsdar->s_sn_sz += strlen(name);
usr.bin/ar/write.c
913
bsdar->s_sn[bsdar->s_sn_sz++] = '\0';
usr.bin/ar/write.c
93
bsdar_warnc(bsdar, errno, "can't open file: %s", name);