Add a -Q/--very-quiet option to suppress normal output to console.

This commit is contained in:
Con Kolivas 2022-02-27 20:07:31 +11:00
parent 1974d68407
commit 41e8014d2c
2 changed files with 16 additions and 2 deletions

View file

@ -229,6 +229,7 @@ typedef sem_t cksem_t;
#define FLAG_TMP_OUTBUF (1 << 21) #define FLAG_TMP_OUTBUF (1 << 21)
#define FLAG_TMP_INBUF (1 << 22) #define FLAG_TMP_INBUF (1 << 22)
#define FLAG_ENCRYPT (1 << 23) #define FLAG_ENCRYPT (1 << 23)
#define FLAG_OUTPUT (1 << 24)
#define NO_MD5 (!(HASH_CHECK) && !(HAS_MD5)) #define NO_MD5 (!(HASH_CHECK) && !(HAS_MD5))
@ -308,6 +309,7 @@ typedef sem_t cksem_t;
#define TMP_OUTBUF (control->flags & FLAG_TMP_OUTBUF) #define TMP_OUTBUF (control->flags & FLAG_TMP_OUTBUF)
#define TMP_INBUF (control->flags & FLAG_TMP_INBUF) #define TMP_INBUF (control->flags & FLAG_TMP_INBUF)
#define ENCRYPT (control->flags & FLAG_ENCRYPT) #define ENCRYPT (control->flags & FLAG_ENCRYPT)
#define SHOW_OUTPUT (control->flags & FLAG_OUTPUT)
#define IS_FROM_FILE ( !!(control->inFILE) && !STDIN ) #define IS_FROM_FILE ( !!(control->inFILE) && !STDIN )
@ -547,6 +549,7 @@ static inline void print_err(const rzip_control *control, unsigned int line, con
} while (0) } while (0)
#define print_output(...) do {\ #define print_output(...) do {\
if (SHOW_OUTPUT) \
print_stuff(1, __VA_ARGS__); \ print_stuff(1, __VA_ARGS__); \
} while (0) } while (0)

15
main.c
View file

@ -87,8 +87,10 @@ static void usage(bool compat)
if (compat) { if (compat) {
print_output(" -L, --license display software version and license\n"); print_output(" -L, --license display software version and license\n");
print_output(" -P, --progress show compression progress\n"); print_output(" -P, --progress show compression progress\n");
} else } else {
print_output(" -q, --quiet don't show compression progress\n"); print_output(" -q, --quiet don't show compression progress\n");
print_output(" -Q, --very-quiet don't show any output\n");
}
print_output(" -r, --recursive operate recursively on directories\n"); print_output(" -r, --recursive operate recursively on directories\n");
print_output(" -t, --test test compressed file integrity\n"); print_output(" -t, --test test compressed file integrity\n");
print_output(" -v[v%s], --verbose Increase verbosity\n", compat ? "v" : ""); print_output(" -v[v%s], --verbose Increase verbosity\n", compat ? "v" : "");
@ -246,6 +248,7 @@ static struct option long_options[] = {
{"threads", required_argument, 0, 'p'}, {"threads", required_argument, 0, 'p'},
{"progress", no_argument, 0, 'P'}, {"progress", no_argument, 0, 'P'},
{"quiet", no_argument, 0, 'q'}, {"quiet", no_argument, 0, 'q'},
{"very-quiet", no_argument, 0, 'Q'},
{"recursive", no_argument, 0, 'r'}, {"recursive", no_argument, 0, 'r'},
{"suffix", required_argument, 0, 'S'}, {"suffix", required_argument, 0, 'S'},
{"test", no_argument, 0, 't'}, /* 25 */ {"test", no_argument, 0, 't'}, /* 25 */
@ -300,7 +303,7 @@ static void recurse_dirlist(char *indir, char **dirlist, int *entries)
closedir(dirp); closedir(dirp);
} }
static const char *loptions = "bcCdDefghHiKlL:nN:o:O:p:PqrS:tTUm:vVw:z?"; static const char *loptions = "bcCdDefghHiKlL:nN:o:O:p:PqQrS:tTUm:vVw:z?";
static const char *coptions = "bcCdefghHikKlLnN:o:O:p:PrS:tTUm:vVw:z?123456789"; static const char *coptions = "bcCdefghHikKlLnN:o:O:p:PrS:tTUm:vVw:z?123456789";
int main(int argc, char *argv[]) int main(int argc, char *argv[])
@ -324,6 +327,7 @@ int main(int argc, char *argv[])
initialise_control(control); initialise_control(control);
av = basename(argv[0]); av = basename(argv[0]);
control->flags |= FLAG_OUTPUT;
if (!strcmp(av, "lrunzip")) if (!strcmp(av, "lrunzip"))
control->flags |= FLAG_DECOMPRESS; control->flags |= FLAG_DECOMPRESS;
else if (!strcmp(av, "lrzcat")) { else if (!strcmp(av, "lrzcat")) {
@ -488,6 +492,10 @@ int main(int argc, char *argv[])
case 'q': case 'q':
control->flags &= ~FLAG_SHOW_PROGRESS; control->flags &= ~FLAG_SHOW_PROGRESS;
break; break;
case 'Q':
control->flags &= ~FLAG_SHOW_PROGRESS;
control->flags &= ~FLAG_OUTPUT;
break;
case 'r': case 'r':
recurse = true; recurse = true;
break; break;
@ -553,6 +561,9 @@ int main(int argc, char *argv[])
} }
} }
if (compat)
control->flags &= ~FLAG_OUTPUT;
argc -= optind; argc -= optind;
argv += optind; argv += optind;