aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEthan Sommer <e5ten.arch@gmail.com>2020-04-14 20:11:18 -0400
committerRob Landley <rob@landley.net>2020-04-15 00:32:28 -0500
commitf2866cf58a07c9d681ecd6695ea969ac70e59a3d (patch)
tree5567f0486294cd143badb2b779cc3c9b12ae3012
parentf4c9a32a111652ed4a454f6a6d7d7d0091b983e4 (diff)
downloadtoybox-f2866cf58a07c9d681ecd6695ea969ac70e59a3d.tar.gz
cpio: fix --trailer flag check, switch to FLAG() macros.
-rw-r--r--toys/posix/cpio.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/toys/posix/cpio.c b/toys/posix/cpio.c
index 97b4035f..eb76d6cf 100644
--- a/toys/posix/cpio.c
+++ b/toys/posix/cpio.c
@@ -80,7 +80,7 @@ static unsigned x8u(char *hex)
void cpio_main(void)
{
// Subtle bit: FLAG_o is 1 so we can just use it to select stdin/stdout.
- int pipe, afd = toys.optflags & FLAG_o;
+ int pipe, afd = FLAG(o);
pid_t pid = 0;
// In passthrough mode, parent stays in original dir and generates archive
@@ -99,17 +99,17 @@ void cpio_main(void)
}
if (TT.F) {
- int perm = (toys.optflags & FLAG_o) ? O_CREAT|O_WRONLY|O_TRUNC : O_RDONLY;
+ int perm = FLAG(o) ? O_CREAT|O_WRONLY|O_TRUNC : O_RDONLY;
afd = xcreate(TT.F, perm, 0644);
}
// read cpio archive
- if (toys.optflags & (FLAG_i|FLAG_t)) for (;;) {
+ if (FLAG(i) || FLAG(t)) for (;;) {
char *name, *tofree, *data;
unsigned size, mode, uid, gid, timestamp;
- int test = toys.optflags & FLAG_t, err = 0;
+ int test = FLAG(t), err = 0;
// Read header and name.
if (!(size =readall(afd, toybuf, 110))) break;
@@ -130,7 +130,7 @@ void cpio_main(void)
gid = x8u(toybuf+30);
timestamp = x8u(toybuf+46); // unsigned 32 bit, so year 2100 problem
- if (toys.optflags & (FLAG_t|FLAG_v)) puts(name);
+ if (FLAG(t) || FLAG(v)) puts(name);
if (!test && strrchr(name, '/') && mkpath(name)) {
perror_msg("mkpath '%s'", name);
@@ -147,7 +147,7 @@ void cpio_main(void)
if (!test) err = symlink(data, name);
free(data);
// Can't get a filehandle to a symlink, so do special chown
- if (!err && !geteuid() && !(toys.optflags & FLAG_no_preserve_owner))
+ if (!err && !geteuid() && !FLAG(no_preserve_owner))
err = lchown(name, uid, gid);
} else if (S_ISREG(mode)) {
int fd = test ? 0 : open(name, O_CREAT|O_WRONLY|O_TRUNC|O_NOFOLLOW, mode);
@@ -173,7 +173,7 @@ void cpio_main(void)
if (!test) {
// set owner, restore dropped suid bit
- if (!geteuid() && !(toys.optflags & FLAG_no_preserve_owner)) {
+ if (!geteuid() && !FLAG(no_preserve_owner)) {
err = fchown(fd, uid, gid);
if (!err) err = fchmod(fd, mode);
}
@@ -189,7 +189,7 @@ void cpio_main(void)
// Check that we at least have the right type of entity open, and do
// NOT restore dropped suid bit in this case.
if (!S_ISREG(mode) && !S_ISLNK(mode) && !geteuid()
- && !(toys.optflags & FLAG_no_preserve_owner))
+ && !FLAG(no_preserve_owner))
{
int fd = open(name, O_RDONLY|O_NOFOLLOW);
struct stat st;
@@ -274,7 +274,7 @@ void cpio_main(void)
}
free(name);
- if (FLAG_trailer) {
+ if (FLAG(trailer)) {
memset(toybuf, 0, sizeof(toybuf));
xwrite(afd, toybuf,
sprintf(toybuf, "070701%040X%056X%08XTRAILER!!!", 1, 0x0b, 0)+4);