shithub: pokecrystal

Download patch

ref: e888b2f826d357c81acdfbf31ddf22d357a0beaf
parent: 824d6bbaf2d453318c1de85534c4a7b567a9c4ac
author: Rangi <remy.oukaour+rangi42@gmail.com>
date: Wed Mar 2 16:39:13 EST 2022

Rename `*_verbose` functions to idiomatic `x*`

--- a/tools/common.h
+++ b/tools/common.h
@@ -27,7 +27,7 @@
 int 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) {
+void *xmalloc(size_t size) {
 	errno = 0;
 	void *m = malloc(size);
 	if (!m) {
@@ -36,7 +36,7 @@
 	return m;
 }
 
-void *calloc_verbose(size_t size) {
+void *xcalloc(size_t size) {
 	errno = 0;
 	void *m = calloc(size, 1);
 	if (!m) {
@@ -45,7 +45,16 @@
 	return m;
 }
 
-FILE *fopen_verbose(const char *filename, char rw) {
+void *xrealloc(void *m, size_t size) {
+	errno = 0;
+	m = realloc(m, size);
+	if (!m) {
+		error_exit("Could not allocate %zu bytes: %s\n", size, strerror(errno));
+	}
+	return m;
+}
+
+FILE *xfopen(const char *filename, char rw) {
 	char mode[3] = {rw, 'b', '\0'};
 	errno = 0;
 	FILE *f = fopen(filename, mode);
@@ -55,7 +64,7 @@
 	return f;
 }
 
-void fread_verbose(uint8_t *data, size_t size, const char *filename, FILE *f) {
+void xfread(uint8_t *data, size_t size, const char *filename, FILE *f) {
 	errno = 0;
 	if (fread(data, 1, size, f) != size) {
 		fclose(f);
@@ -63,7 +72,7 @@
 	}
 }
 
-void fwrite_verbose(const uint8_t *data, size_t size, const char *filename, FILE *f) {
+void xfwrite(const uint8_t *data, size_t size, const char *filename, FILE *f) {
 	errno = 0;
 	if (fwrite(data, 1, size, f) != size) {
 		fclose(f);
@@ -71,7 +80,7 @@
 	}
 }
 
-long file_size_verbose(const char *filename, FILE *f) {
+long xfsize(const char *filename, FILE *f) {
 	long size = -1;
 	errno = 0;
 	if (!fseek(f, 0, SEEK_END)) {
@@ -87,24 +96,24 @@
 }
 
 uint8_t *read_u8(const char *filename, long *size) {
-	FILE *f = fopen_verbose(filename, 'r');
-	*size = file_size_verbose(filename, f);
-	uint8_t *data = malloc_verbose(*size);
-	fread_verbose(data, *size, filename, f);
+	FILE *f = xfopen(filename, 'r');
+	*size = xfsize(filename, f);
+	uint8_t *data = xmalloc(*size);
+	xfread(data, *size, filename, f);
 	fclose(f);
 	return data;
 }
 
 void write_u8(const char *filename, uint8_t *data, size_t size) {
-	FILE *f = fopen_verbose(filename, 'w');
-	fwrite_verbose(data, size, filename, f);
+	FILE *f = xfopen(filename, 'w');
+	xfwrite(data, size, filename, f);
 	fclose(f);
 }
 
-uint32_t read_png_width_verbose(const char *filename) {
-	FILE *f = fopen_verbose(filename, 'r');
+uint32_t read_png_width(const char *filename) {
+	FILE *f = xfopen(filename, 'r');
 	uint8_t header[16] = {0};
-	fread_verbose(header, sizeof(header), filename, f);
+	xfread(header, sizeof(header), filename, f);
 	static uint8_t expected_header[16] = {
 		0x89, 'P', 'N', 'G', '\r', '\n', 0x1A, '\n', // signature
 		0, 0, 0, 13,                                 // IHDR chunk length
@@ -115,7 +124,7 @@
 		error_exit("Not a valid PNG file: \"%s\"\n", filename);
 	}
 	uint8_t bytes[4] = {0};
-	fread_verbose(bytes, sizeof(bytes), filename, f);
+	xfread(bytes, sizeof(bytes), filename, f);
 	fclose(f);
 	return (bytes[0] << 24) | (bytes[1] << 16) | (bytes[2] << 8) | bytes[3];
 }
--- a/tools/gfx.c
+++ b/tools/gfx.c
@@ -61,7 +61,7 @@
 			break;
 		case 'r':
 			for (char *token = strtok(optarg, ","); token; token = strtok(NULL, ",")) {
-				options.preserved = realloc(options.preserved, ++options.num_preserved * sizeof(*options.preserved));
+				options.preserved = xrealloc(options.preserved, ++options.num_preserved * sizeof(*options.preserved));
 				options.preserved[options.num_preserved-1] = strtoul(token, NULL, 0);
 			}
 			break;
@@ -212,7 +212,7 @@
 };
 
 bool flip_exists(const uint8_t *tile, const uint8_t *tiles, int tile_size, int num_tiles, bool xflip, bool yflip) {
-	uint8_t flip[tile_size];
+	uint8_t flip[tile_size]; // VLA
 	memset(flip, 0, tile_size);
 	int half_size = tile_size / 2;
 	for (int i = 0; i < tile_size; i++) {
@@ -250,7 +250,7 @@
 	int tile_size = options.depth * 8;
 	int width_tiles = width / 8;
 	int num_tiles = graphic->size / tile_size;
-	uint8_t *interleaved = malloc(graphic->size);
+	uint8_t *interleaved = xmalloc(graphic->size);
 	for (int i = 0; i < num_tiles; i++) {
 		int row = i / width_tiles;
 		int tile = i * 2 - (row % 2 ? width_tiles * (row + 1) - 1 : width_tiles * row);
@@ -280,7 +280,7 @@
 		if (!options.png_file) {
 			error_exit("--interleave needs --png to infer dimensions");
 		}
-		int width = read_png_width_verbose(options.png_file);
+		int width = read_png_width(options.png_file);
 		interleave(&graphic, width);
 	}
 	if (options.remove_duplicates) {
--- a/tools/png_dimensions.c
+++ b/tools/png_dimensions.c
@@ -4,7 +4,7 @@
 #include "common.h"
 
 uint8_t read_png_dimensions(const char *filename) {
-	uint32_t width_px = read_png_width_verbose(filename);
+	uint32_t width_px = read_png_width(filename);
 	if (width_px != 40 && width_px != 48 && width_px != 56) {
 		error_exit("Not a valid width for \"%s\": %" PRIu32 " px\n", filename, width_px);
 	}
--- a/tools/pokemon_animation.c
+++ b/tools/pokemon_animation.c
@@ -78,21 +78,21 @@
 	int num_tiles_per_frame = width * width;
 	int num_frames = tilemap_size / num_tiles_per_frame - 1;
 
-	frames->frames = malloc_verbose((sizeof *frames->frames) * num_frames);
+	frames->frames = xmalloc((sizeof *frames->frames) * num_frames);
 	frames->num_frames = num_frames;
 
-	bitmasks->bitmasks = malloc_verbose((sizeof *bitmasks->bitmasks) * num_frames);
+	bitmasks->bitmasks = xmalloc((sizeof *bitmasks->bitmasks) * num_frames);
 	bitmasks->num_bitmasks = 0;
 
 	const uint8_t *first_frame = &tilemap[0];
 	const uint8_t *this_frame = &tilemap[num_tiles_per_frame];
 	for (int i = 0; i < num_frames; i++) {
-		struct Frame *frame = malloc_verbose(sizeof *frame);
-		frame->data = malloc_verbose(num_tiles_per_frame);
+		struct Frame *frame = xmalloc(sizeof *frame);
+		frame->data = xmalloc(num_tiles_per_frame);
 		frame->size = 0;
 
-		struct Bitmask *bitmask = malloc_verbose(sizeof *bitmask);
-		bitmask->data = calloc_verbose((num_tiles_per_frame + 7) / 8);
+		struct Bitmask *bitmask = xmalloc(sizeof *bitmask);
+		bitmask->data = xcalloc((num_tiles_per_frame + 7) / 8);
 		bitmask->bitlength = 0;
 
 		for (int j = 0; j < num_tiles_per_frame; j++) {
--- a/tools/pokemon_animation_graphics.c
+++ b/tools/pokemon_animation_graphics.c
@@ -40,7 +40,7 @@
 #define TILE_SIZE 16
 
 void transpose_tiles(uint8_t *tiles, int width, int size) {
-	uint8_t *new_tiles = malloc_verbose(size);
+	uint8_t *new_tiles = xmalloc(size);
 	for (int i = 0; i < size; i++) {
 		int j = i / TILE_SIZE * width * TILE_SIZE;
 		j = (j / size) * TILE_SIZE + j % size + i % TILE_SIZE;
@@ -91,7 +91,7 @@
 		// Ensure space for a duplicate of tile 0 at the end
 		max_size += TILE_SIZE;
 	}
-	uint8_t *data = malloc_verbose(max_size);
+	uint8_t *data = xmalloc(max_size);
 
 	int num_tiles = 0;
 #define DATA_APPEND_TILES(tile, length) do { \
@@ -119,7 +119,7 @@
 
 void write_tilemap(const char *filename, const uint8_t *tiles, long tiles_size, int num_tiles_per_frame, bool girafarig) {
 	int size = tiles_size / TILE_SIZE;
-	uint8_t *data = malloc_verbose(size);
+	uint8_t *data = xmalloc(size);
 
 	int num_tiles = num_tiles_per_frame;
 	// Copy the first frame directly
--- a/tools/scan_includes.c
+++ b/tools/scan_includes.c
@@ -34,9 +34,9 @@
 		}
 	}
 
-	long size = file_size_verbose(filename, f);
-	char *contents = malloc_verbose(size + 1);
-	fread_verbose((uint8_t *)contents, size, filename, f);
+	long size = xfsize(filename, f);
+	char *contents = xmalloc(size + 1);
+	xfread((uint8_t *)contents, size, filename, f);
 	fclose(f);
 	contents[size] = '\0';