diff options
author | Rangi <remy.oukaour+rangi42@gmail.com> | 2020-09-21 10:02:38 -0400 |
---|---|---|
committer | Rangi <remy.oukaour+rangi42@gmail.com> | 2020-09-21 10:02:38 -0400 |
commit | b3381a2f458926439fc74d433ad10c35f4d4ddc7 (patch) | |
tree | 51b6976d8d26e543011d97e31f10974c2c263a77 | |
parent | d40cdfc279dacdf6be3a9cdbcb01848ea6ca2722 (diff) |
xor_compress: use argv[0] as the program name if it exists
-rw-r--r-- | tools/xor_compress.c | 16 | ||||
-rw-r--r-- | tools/xor_compress.py | 8 | ||||
-rw-r--r-- | tools/xor_compress.rs | 12 |
3 files changed, 17 insertions, 19 deletions
diff --git a/tools/xor_compress.c b/tools/xor_compress.c index 555274a..56a74be 100644 --- a/tools/xor_compress.c +++ b/tools/xor_compress.c @@ -4,9 +4,7 @@ #include <string.h> #include <errno.h> -#define PROGRAM_NAME "xor_compress" - -extern int errno; +char *program_name; size_t file_size(FILE *f) { if (fseek(f, 0, SEEK_END) == -1) return 0; @@ -40,7 +38,7 @@ unsigned char *read_files(char *filenames[], int num_files, size_t *buf_size, in fclose(f); if (read_size != f_size) { // fread does not set errno - fprintf(stderr, PROGRAM_NAME ": %s: Read error\n", filename); + fprintf(stderr, "%s: %s: Read error\n", program_name, filename); *err = 1; return buffer; } @@ -50,7 +48,7 @@ unsigned char *read_files(char *filenames[], int num_files, size_t *buf_size, in return buffer; failure: - fprintf(stderr, PROGRAM_NAME ": %s: %s\n", filename, strerror(errno)); + fprintf(stderr, "%s: %s: %s\n", program_name, filename, strerror(errno)); *err = errno; return buffer; } @@ -58,7 +56,7 @@ failure: int write_compressed(const char *filename, unsigned char *data, size_t n, int *err) { FILE *f = fopen(filename, "wb"); if (!f) { - fprintf(stderr, PROGRAM_NAME ": %s: %s\n", filename, strerror(errno)); + fprintf(stderr, "%s: %s: %s\n", program_name, filename, strerror(errno)); *err = errno; return 0; } @@ -98,6 +96,8 @@ int write_compressed(const char *filename, unsigned char *data, size_t n, int *e } int main(int argc, char *argv[]) { + program_name = argc ? argv[0] : "xor_compress"; + bool verbose = argc > 1 && !strcmp(argv[1], "-v"); if (verbose) { argv++; @@ -105,7 +105,7 @@ int main(int argc, char *argv[]) { } if (argc < 3) { - fputs("Usage: " PROGRAM_NAME " [-v] file... files.xor\n", stderr); + fprintf(stderr, "Usage: %s [-v] file... files.xor\n", program_name); exit(1); } argv++; @@ -119,7 +119,7 @@ int main(int argc, char *argv[]) { if (!err) { int runs = write_compressed(out_filename, data, data_size, &err); if (!err && verbose) { - printf(PROGRAM_NAME ": %s: ld bc, $%x\n", out_filename, runs); + printf("%s: %s: ld bc, $%x\n", program_name, out_filename, runs); } } free(data); diff --git a/tools/xor_compress.py b/tools/xor_compress.py index 42d091f..ab39627 100644 --- a/tools/xor_compress.py +++ b/tools/xor_compress.py @@ -2,16 +2,14 @@ import sys -PROGRAM_NAME = "xor_compress.py" - -sys.argv.pop(0) +program_name = sys.argv.pop(0) if sys.argv else "xor_compress.py" verbose = sys.argv and sys.argv[0] == '-v' if verbose: sys.argv.pop(0) if len(sys.argv) < 2: - print('Usage: %s [-v] file... files.xor' % PROGRAM_NAME, file=sys.stderr) + print('Usage: %s [-v] file... files.xor' % program_name, file=sys.stderr) exit(1) out_filename = sys.argv.pop() @@ -61,4 +59,4 @@ with open(out_filename, 'wb') as f: f.write(output) if verbose: - print('%s: %s: ld bc, $%x' % (PROGRAM_NAME, out_filename, runs)) + print('%s: %s: ld bc, $%x' % (program_name, out_filename, runs)) diff --git a/tools/xor_compress.rs b/tools/xor_compress.rs index c9c47e7..20fe8d1 100644 --- a/tools/xor_compress.rs +++ b/tools/xor_compress.rs @@ -3,8 +3,6 @@ use std::process::exit; use std::fs::{File, write}; use std::io::{Read, Error}; -const PROGRAM_NAME: &str = "xor-compress"; - fn compress_files<'a>(in_filenames: &'a [String], out_filename: &'a String) -> Result<u32, (&'a String, Error)> { let mut data = Vec::new(); for filename in in_filenames { @@ -63,7 +61,9 @@ fn compress_files<'a>(in_filenames: &'a [String], out_filename: &'a String) -> R } fn main() { - let mut argv: Vec<String> = args().skip(1).collect(); + let mut argv_iter = args(); + let program_name = argv_iter.next().expect("xor-compress"); + let mut argv: Vec<String> = argv_iter.collect(); let verbose = !argv.is_empty() && argv[0] == "-v"; if verbose { @@ -71,17 +71,17 @@ fn main() { } if argv.len() < 2 { - eprintln!("Usage: {} [-v] file... files.xor", PROGRAM_NAME); + eprintln!("Usage: {} [-v] file... files.xor", program_name); exit(1); } let out_filename = argv.pop().unwrap(); match compress_files(&argv[..], &out_filename) { Ok(runs) => if verbose { - println!("{}: {}: ld bc, ${:x}", PROGRAM_NAME, out_filename, runs); + println!("{}: {}: ld bc, ${:x}", program_name, out_filename, runs); }, Err((filename, err)) => { - eprintln!("{}: {}: {}", PROGRAM_NAME, filename, err); + eprintln!("{}: {}: {}", program_name, filename, err); exit(err.raw_os_error().unwrap_or(1)); } } |