summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRangi <remy.oukaour+rangi42@gmail.com>2020-09-21 10:02:38 -0400
committerRangi <remy.oukaour+rangi42@gmail.com>2020-09-21 10:02:38 -0400
commitb3381a2f458926439fc74d433ad10c35f4d4ddc7 (patch)
tree51b6976d8d26e543011d97e31f10974c2c263a77
parentd40cdfc279dacdf6be3a9cdbcb01848ea6ca2722 (diff)
xor_compress: use argv[0] as the program name if it exists
-rw-r--r--tools/xor_compress.c16
-rw-r--r--tools/xor_compress.py8
-rw-r--r--tools/xor_compress.rs12
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));
}
}