simple_archiver_parse_args(argc, argv, &parsed);
- if ((parsed.flags & 0x2) == 0) {
+ if ((parsed.flags & 0x4) == 0) {
FILE *file = fopen(parsed.filename, "r");
if (file != NULL) {
fclose(file);
fprintf(stderr, "Usage flags:\n");
fprintf(stderr, "-c : create archive file\n");
fprintf(stderr, "-x : extract archive file\n");
+ fprintf(stderr, "-t : examine archive file\n");
fprintf(stderr, "-f <filename> : filename to work on\n");
fprintf(stderr,
"--compressor <full_compress_cmd> : requires --decompressor\n");
simple_archiver_print_usage();
exit(0);
} else if (strcmp(argv[0], "-c") == 0) {
- // unset first bit.
- out->flags &= 0xFFFFFFFE;
+ // unset first two bits.
+ out->flags &= 0xFFFFFFFC;
} else if (strcmp(argv[0], "-x") == 0) {
+ // unset first two bits.
+ out->flags &= 0xFFFFFFFC;
// set first bit.
out->flags |= 0x1;
+ } else if (strcmp(argv[0], "-t") == 0) {
+ // unset first two bits.
+ out->flags &= 0xFFFFFFFC;
+ // set second bit.
+ out->flags |= 0x2;
} else if (strcmp(argv[0], "-f") == 0 && argc > 1) {
int size = strlen(argv[1]) + 1;
out->filename = malloc(size);
--argc;
++argv;
} else if (strcmp(argv[0], "--overwrite-create") == 0) {
- out->flags |= 0x2;
+ out->flags |= 0x4;
} else if (argv[0][0] == '-' && argv[0][1] == '-' && argv[0][2] == 0) {
is_remaining_args = 1;
} else if (argv[0][0] != '-') {
typedef struct SDArchiverParsed {
/// Each bit is a flag.
- /// 0b0 - is creating.
- /// 0b1 - is extracting.
- /// 0b0x - Do NOT allow create archive overwrite.
- /// 0b1x - Allow create archive overwrite.
+ /// 0b xxxx xx00 - is creating.
+ /// 0b xxxx xx01 - is extracting.
+ /// 0b xxxx xx10 - is checking/examining.
+ /// 0b xxxx x0xx - Do NOT allow create archive overwrite.
+ /// 0b xxxx x1xx - Allow create archive overwrite.
unsigned int flags;
/// Null-terminated string.
char *filename;