summaryrefslogtreecommitdiff
path: root/tools/common.h
diff options
context:
space:
mode:
authorRangi <remy.oukaour+rangi42@gmail.com>2021-09-02 01:21:15 -0400
committerRangi <remy.oukaour+rangi42@gmail.com>2021-09-02 02:34:06 -0400
commit0d1a029e818c295b7cd04bef6527a20f3178f439 (patch)
tree4c23b8ba31836d5225802607cd61e1549b032f97 /tools/common.h
parent313deab55253ee49ef3872491f6805a03b5ea36b (diff)
Rewrite tools/scan_includes.c to use common.h and factor out a parse_args function
Diffstat (limited to 'tools/common.h')
-rw-r--r--tools/common.h15
1 files changed, 10 insertions, 5 deletions
diff --git a/tools/common.h b/tools/common.h
index 46b319919..60c5c1677 100644
--- a/tools/common.h
+++ b/tools/common.h
@@ -12,9 +12,10 @@
#include <getopt.h>
int getopt_long_index;
-#define getopt_long(c, v, s, l) getopt_long(c, v, s, l, &getopt_long_index)
+#define getopt_long(argc, argv, optstring, longopts) getopt_long(argc, argv, optstring, longopts, &getopt_long_index)
void *malloc_verbose(size_t size) {
+ errno = 0;
void *m = malloc(size);
if (!m) {
fprintf(stderr, "Could not allocate %zu bytes: %s\n", size, strerror(errno));
@@ -25,6 +26,7 @@ void *malloc_verbose(size_t size) {
FILE *fopen_verbose(const char *filename, char rw) {
char mode[3] = {rw, 'b', '\0'};
+ errno = 0;
FILE *f = fopen(filename, mode);
if (!f) {
fprintf(stderr, "Could not open file \"%s\": %s\n", filename, strerror(errno));
@@ -34,6 +36,7 @@ FILE *fopen_verbose(const char *filename, char rw) {
}
void fread_verbose(uint8_t *data, size_t size, const char *filename, FILE *f) {
+ errno = 0;
if (fread(data, 1, size, f) != size) {
fprintf(stderr, "Could not read from file \"%s\": %s\n", filename, strerror(errno));
fclose(f);
@@ -42,6 +45,7 @@ void fread_verbose(uint8_t *data, size_t size, const char *filename, FILE *f) {
}
void fwrite_verbose(const uint8_t *data, size_t size, const char *filename, FILE *f) {
+ errno = 0;
if (fwrite(data, 1, size, f) != size) {
fprintf(stderr, "Could not write to file \"%s\": %s\n", filename, strerror(errno));
fclose(f);
@@ -49,15 +53,16 @@ void fwrite_verbose(const uint8_t *data, size_t size, const char *filename, FILE
}
}
-long file_size(const char *filename, FILE *f) {
- long size = 0;
+long file_size_verbose(const char *filename, FILE *f) {
+ long size = -1;
+ errno = 0;
if (!fseek(f, 0, SEEK_END)) {
size = ftell(f);
if (size != -1) {
rewind(f);
}
}
- if (errno) {
+ if (size == -1) {
fprintf(stderr, "Could not measure file \"%s\": %s\n", filename, strerror(errno));
exit(1);
}
@@ -66,7 +71,7 @@ long file_size(const char *filename, FILE *f) {
uint8_t *read_u8(const char *filename, long *size) {
FILE *f = fopen_verbose(filename, 'r');
- *size = file_size(filename, f);
+ *size = file_size_verbose(filename, f);
uint8_t *data = malloc_verbose(*size);
fread_verbose(data, *size, filename, f);
fclose(f);