Add "--overwrite-create"
All checks were successful
Run Unit Tests / build-and-run-unit-tests (push) Successful in 45s
All checks were successful
Run Unit Tests / build-and-run-unit-tests (push) Successful in 45s
Default behavior is now to NOT overwrite existing archive files for storing output unless "--overwrite-create" is specified.
This commit is contained in:
parent
e315ac5c33
commit
efffb8c147
3 changed files with 22 additions and 6 deletions
19
src/main.c
19
src/main.c
|
@ -32,13 +32,24 @@ int print_list_fn(void *data, __attribute__((unused)) void *ud) {
|
|||
}
|
||||
|
||||
int main(int argc, const char **argv) {
|
||||
simple_archiver_print_usage();
|
||||
|
||||
__attribute__((cleanup(simple_archiver_free_parsed)))
|
||||
SDArchiverParsed parsed = simple_archiver_create_parsed();
|
||||
__attribute__((
|
||||
cleanup(simple_archiver_free_parsed))) SDArchiverParsed parsed =
|
||||
simple_archiver_create_parsed();
|
||||
|
||||
simple_archiver_parse_args(argc, argv, &parsed);
|
||||
|
||||
if ((parsed.flags & 0x2) == 0) {
|
||||
FILE *file = fopen(parsed.filename, "r");
|
||||
if (file != NULL) {
|
||||
fclose(file);
|
||||
fprintf(
|
||||
stderr,
|
||||
"ERROR: Archive file exists but --overwrite-create not specified!\n");
|
||||
simple_archiver_print_usage();
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
__attribute__((cleanup(simple_archiver_list_free)))
|
||||
SDArchiverLinkedList *filenames =
|
||||
simple_archiver_parsed_to_filenames(&parsed);
|
||||
|
|
|
@ -140,6 +140,7 @@ void simple_archiver_print_usage(void) {
|
|||
puts("-f <filename> : filename to work on");
|
||||
puts("--compressor <full_compress_cmd> : requires --decompressor");
|
||||
puts("--decompressor <full_decompress_cmd> : requires --compressor");
|
||||
puts("--overwrite-create : allows overwriting an archive file");
|
||||
puts("-- : specifies remaining arguments are files to archive/extract");
|
||||
puts("If creating archive file, remaining args specify files to archive.");
|
||||
puts("If extracting archive file, remaining args specify files to extract.");
|
||||
|
@ -204,6 +205,8 @@ int simple_archiver_parse_args(int argc, const char **argv,
|
|||
strncpy(out->decompressor, argv[1], size);
|
||||
--argc;
|
||||
++argv;
|
||||
} else if (strcmp(argv[0], "--overwrite-create") == 0) {
|
||||
out->flags |= 0x2;
|
||||
} else if (argv[0][0] == '-' && argv[0][1] == '-' && argv[0][2] == 0) {
|
||||
is_remaining_args = 1;
|
||||
} else if (argv[0][0] != '-') {
|
||||
|
|
|
@ -25,6 +25,8 @@ 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.
|
||||
unsigned int flags;
|
||||
/// Null-terminated string.
|
||||
char *filename;
|
||||
|
|
Loading…
Reference in a new issue