aboutsummaryrefslogtreecommitdiff
path: root/usr.bin/ar/acpyacc.y
diff options
context:
space:
mode:
authorEd Maste <emaste@FreeBSD.org>2021-08-04 13:54:17 +0000
committerEd Maste <emaste@FreeBSD.org>2021-08-11 23:12:46 +0000
commitd20e9e02db3dde383c3de1ce8cec3a8c35b3eee6 (patch)
tree61d4296e25814416aa71c0e24ed3de42d6388a2e /usr.bin/ar/acpyacc.y
parentee6dc333e1a1af08afa3d14b83e963e4cf90b77b (diff)
downloadsrc-d20e9e02db3dde383c3de1ce8cec3a8c35b3eee6.tar.gz
src-d20e9e02db3dde383c3de1ce8cec3a8c35b3eee6.zip
ar: diff reduction against ELF Tool Chain
- Drop exit status from bsdar_errc. ELF Tool Chain always returns EXIT_FAILURE in bsdar_errc. - Remove ar_mode_* wrappers and call ar_read_archive / ar_write_archive directly. Obtained from: ELF Tool Chain Reviewed by: markj Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D31496
Diffstat (limited to 'usr.bin/ar/acpyacc.y')
-rw-r--r--usr.bin/ar/acpyacc.y48
1 files changed, 22 insertions, 26 deletions
diff --git a/usr.bin/ar/acpyacc.y b/usr.bin/ar/acpyacc.y
index 5d4eb9fb6b37..34156e1d2d58 100644
--- a/usr.bin/ar/acpyacc.y
+++ b/usr.bin/ar/acpyacc.y
@@ -42,7 +42,6 @@ __FBSDID("$FreeBSD$");
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-#include <sysexits.h>
#include <unistd.h>
#include "ar.h"
@@ -250,7 +249,7 @@ arscp_open(char *fname)
int r;
if ((a = archive_read_new()) == NULL)
- bsdar_errc(bsdar, EX_SOFTWARE, 0, "archive_read_new failed");
+ bsdar_errc(bsdar, 0, "archive_read_new failed");
archive_read_support_format_ar(a);
AC(archive_read_open_filename(a, fname, DEF_BLKSZ));
if ((r = archive_read_next_header(a, &entry)))
@@ -277,15 +276,15 @@ arscp_create(char *in, char *out)
/* Delete previously created temporary archive, if any. */
if (tmpac) {
if (unlink(tmpac) < 0)
- bsdar_errc(bsdar, EX_IOERR, errno, "unlink failed");
+ bsdar_errc(bsdar, errno, "unlink failed");
free(tmpac);
}
tmpac = strdup(TEMPLATE);
if (tmpac == NULL)
- bsdar_errc(bsdar, EX_SOFTWARE, errno, "strdup failed");
+ bsdar_errc(bsdar, errno, "strdup failed");
if ((ofd = mkstemp(tmpac)) < 0)
- bsdar_errc(bsdar, EX_IOERR, errno, "mkstemp failed");
+ bsdar_errc(bsdar, errno, "mkstemp failed");
if (in) {
/*
@@ -308,8 +307,7 @@ arscp_create(char *in, char *out)
* (archive with only global header)
*/
if ((a = archive_write_new()) == NULL)
- bsdar_errc(bsdar, EX_SOFTWARE, 0,
- "archive_write_new failed");
+ bsdar_errc(bsdar, 0, "archive_write_new failed");
archive_write_set_format_ar_svr4(a);
AC(archive_write_open_fd(a, ofd));
AC(archive_write_close(a));
@@ -350,7 +348,7 @@ arscp_copy(int ifd, int ofd)
}
}
if (munmap(p, sb.st_size) < 0)
- bsdar_errc(bsdar, EX_SOFTWARE, errno, "munmap failed");
+ bsdar_errc(bsdar, errno, "munmap failed");
if (bytes > 0)
return (1);
@@ -369,7 +367,7 @@ arscp_addlib(char *archive, struct list *list)
return;
arscp_mlist2argv(list);
bsdar->addlib = archive;
- ar_mode_A(bsdar);
+ ar_write_archive(bsdar, 'A');
arscp_free_argv();
arscp_free_mlist(list);
}
@@ -382,7 +380,7 @@ arscp_addmod(struct list *list)
if (!arscp_target_exist())
return;
arscp_mlist2argv(list);
- ar_mode_q(bsdar);
+ ar_write_archive(bsdar, 'q');
arscp_free_argv();
arscp_free_mlist(list);
}
@@ -395,7 +393,7 @@ arscp_delete(struct list *list)
if (!arscp_target_exist())
return;
arscp_mlist2argv(list);
- ar_mode_d(bsdar);
+ ar_write_archive(bsdar, 'd');
arscp_free_argv();
arscp_free_mlist(list);
}
@@ -408,7 +406,7 @@ arscp_extract(struct list *list)
if (!arscp_target_exist())
return;
arscp_mlist2argv(list);
- ar_mode_x(bsdar);
+ ar_read_archive(bsdar, 'x');
arscp_free_argv();
arscp_free_mlist(list);
}
@@ -424,7 +422,7 @@ arscp_list(void)
bsdar->argv = NULL;
/* Always verbose. */
bsdar->options |= AR_V;
- ar_mode_t(bsdar);
+ ar_read_archive(bsdar, 't');
bsdar->options &= ~AR_V;
}
@@ -439,8 +437,7 @@ arscp_dir(char *archive, struct list *list, char *rlt)
if (rlt) {
out = stdout;
if ((stdout = fopen(rlt, "w")) == NULL)
- bsdar_errc(bsdar, EX_IOERR, errno,
- "fopen %s failed", rlt);
+ bsdar_errc(bsdar, errno, "fopen %s failed", rlt);
}
bsdar->filename = archive;
@@ -452,13 +449,12 @@ arscp_dir(char *archive, struct list *list, char *rlt)
}
if (verbose)
bsdar->options |= AR_V;
- ar_mode_t(bsdar);
+ ar_read_archive(bsdar, 't');
bsdar->options &= ~AR_V;
if (rlt) {
if (fclose(stdout) == EOF)
- bsdar_errc(bsdar, EX_IOERR, errno,
- "fclose %s failed", rlt);
+ bsdar_errc(bsdar, errno, "fclose %s failed", rlt);
stdout = out;
free(rlt);
}
@@ -477,7 +473,7 @@ arscp_replace(struct list *list)
if (!arscp_target_exist())
return;
arscp_mlist2argv(list);
- ar_mode_r(bsdar);
+ ar_write_archive(bsdar, 'r');
arscp_free_argv();
arscp_free_mlist(list);
}
@@ -490,7 +486,7 @@ arscp_save(void)
if (target) {
if (rename(tmpac, target) < 0)
- bsdar_errc(bsdar, EX_IOERR, errno, "rename failed");
+ bsdar_errc(bsdar, errno, "rename failed");
/*
* mkstemp creates temp files with mode 0600, here we
* set target archive mode per process umask.
@@ -498,7 +494,7 @@ arscp_save(void)
mask = umask(0);
umask(mask);
if (chmod(target, 0666 & ~mask) < 0)
- bsdar_errc(bsdar, EX_IOERR, errno, "chmod failed");
+ bsdar_errc(bsdar, errno, "chmod failed");
free(tmpac);
free(target);
tmpac = NULL;
@@ -520,7 +516,7 @@ arscp_clear(void)
if (target) {
new_target = strdup(target);
if (new_target == NULL)
- bsdar_errc(bsdar, EX_SOFTWARE, errno, "strdup failed");
+ bsdar_errc(bsdar, errno, "strdup failed");
arscp_create(NULL, new_target);
}
}
@@ -537,7 +533,7 @@ arscp_end(int eval)
free(target);
if (tmpac) {
if (unlink(tmpac) == -1)
- bsdar_errc(bsdar, EX_IOERR, errno, "unlink %s failed",
+ bsdar_errc(bsdar, errno, "unlink %s failed",
tmpac);
free(tmpac);
}
@@ -568,7 +564,7 @@ arscp_mlist(struct list *list, char *str)
l = malloc(sizeof(*l));
if (l == NULL)
- bsdar_errc(bsdar, EX_SOFTWARE, errno, "malloc failed");
+ bsdar_errc(bsdar, errno, "malloc failed");
l->str = str;
l->next = list;
@@ -610,12 +606,12 @@ arscp_mlist2argv(struct list *list)
n = arscp_mlist_len(list);
argv = malloc(n * sizeof(*argv));
if (argv == NULL)
- bsdar_errc(bsdar, EX_SOFTWARE, errno, "malloc failed");
+ bsdar_errc(bsdar, errno, "malloc failed");
/* Note that module names are stored in reverse order in mlist. */
for(i = n - 1; i >= 0; i--, list = list->next) {
if (list == NULL)
- bsdar_errc(bsdar, EX_SOFTWARE, errno, "invalid mlist");
+ bsdar_errc(bsdar, errno, "invalid mlist");
argv[i] = list->str;
}