From 4a02f0364fb09c9d4422206382fbea279c48a842 Mon Sep 17 00:00:00 2001 From: Andrew Kesterson Date: Sun, 10 May 2026 00:03:45 -0400 Subject: [PATCH] Start moving away from wrapping libc stuff in akerror, and move towards akstdlib that does this for me --- CMakeLists.txt | 20 ++++++++++--------- include/akgl/SDL_GameControllerDB.h | 2 +- src/game.c | 31 ++++++++--------------------- 3 files changed, 20 insertions(+), 33 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3a8e92a..aa3121d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,6 +9,7 @@ find_package(SDL3_image REQUIRED) find_package(SDL3_mixer REQUIRED) find_package(SDL3_ttf REQUIRED) find_package(akerror REQUIRED) +find_package(akstdlib REQUIRED) find_package(jansson REQUIRED) find_package(box2d REQUIRED) @@ -87,18 +88,19 @@ target_link_libraries(akgl SDL3_image::SDL3_image SDL3_mixer::SDL3_mixer SDL3_ttf::SDL3_ttf + akstdlib::akstdlib ) -target_link_libraries(test_actor PRIVATE akerror::akerror akgl SDL3::SDL3 SDL3_ttf::SDL3_ttf SDL3_image::SDL3_image SDL3_mixer::SDL3_mixer box2d::box2d jansson::jansson -lm) -target_link_libraries(test_bitmasks PRIVATE akerror::akerror akgl SDL3::SDL3 SDL3_ttf::SDL3_ttf SDL3_image::SDL3_image SDL3_mixer::SDL3_mixer box2d::box2d jansson::jansson -lm) -target_link_libraries(test_character PRIVATE akerror::akerror akgl SDL3::SDL3 SDL3_ttf::SDL3_ttf SDL3_image::SDL3_image SDL3_mixer::SDL3_mixer box2d::box2d jansson::jansson -lm) -target_link_libraries(test_registry PRIVATE akerror::akerror akgl SDL3::SDL3 SDL3_ttf::SDL3_ttf SDL3_image::SDL3_image SDL3_mixer::SDL3_mixer box2d::box2d jansson::jansson -lm) -target_link_libraries(test_sprite PRIVATE akerror::akerror akgl SDL3::SDL3 SDL3_ttf::SDL3_ttf SDL3_image::SDL3_image SDL3_mixer::SDL3_mixer box2d::box2d jansson::jansson -lm) -target_link_libraries(test_staticstring PRIVATE akerror::akerror akgl SDL3::SDL3 SDL3_ttf::SDL3_ttf SDL3_image::SDL3_image SDL3_mixer::SDL3_mixer box2d::box2d jansson::jansson -lm) -target_link_libraries(test_tilemap PRIVATE akerror::akerror akgl SDL3::SDL3 SDL3_ttf::SDL3_ttf SDL3_image::SDL3_image SDL3_mixer::SDL3_mixer box2d::box2d jansson::jansson -lm) -target_link_libraries(test_util PRIVATE akerror::akerror akgl SDL3::SDL3 SDL3_ttf::SDL3_ttf SDL3_image::SDL3_image SDL3_mixer::SDL3_mixer box2d::box2d jansson::jansson -lm) +target_link_libraries(test_actor PRIVATE akstdlib::akstdlib akerror::akerror akgl SDL3::SDL3 SDL3_ttf::SDL3_ttf SDL3_image::SDL3_image SDL3_mixer::SDL3_mixer box2d::box2d jansson::jansson -lm) +target_link_libraries(test_bitmasks PRIVATE akstdlib::akstdlib akerror::akerror akgl SDL3::SDL3 SDL3_ttf::SDL3_ttf SDL3_image::SDL3_image SDL3_mixer::SDL3_mixer box2d::box2d jansson::jansson -lm) +target_link_libraries(test_character PRIVATE akstdlib::akstdlib akerror::akerror akgl SDL3::SDL3 SDL3_ttf::SDL3_ttf SDL3_image::SDL3_image SDL3_mixer::SDL3_mixer box2d::box2d jansson::jansson -lm) +target_link_libraries(test_registry PRIVATE akstdlib::akstdlib akerror::akerror akgl SDL3::SDL3 SDL3_ttf::SDL3_ttf SDL3_image::SDL3_image SDL3_mixer::SDL3_mixer box2d::box2d jansson::jansson -lm) +target_link_libraries(test_sprite PRIVATE akstdlib::akstdlib akerror::akerror akgl SDL3::SDL3 SDL3_ttf::SDL3_ttf SDL3_image::SDL3_image SDL3_mixer::SDL3_mixer box2d::box2d jansson::jansson -lm) +target_link_libraries(test_staticstring PRIVATE akstdlib::akstdlib akerror::akerror akgl SDL3::SDL3 SDL3_ttf::SDL3_ttf SDL3_image::SDL3_image SDL3_mixer::SDL3_mixer box2d::box2d jansson::jansson -lm) +target_link_libraries(test_tilemap PRIVATE akstdlib::akstdlib akerror::akerror akgl SDL3::SDL3 SDL3_ttf::SDL3_ttf SDL3_image::SDL3_image SDL3_mixer::SDL3_mixer box2d::box2d jansson::jansson -lm) +target_link_libraries(test_util PRIVATE akstdlib::akstdlib akerror::akerror akgl SDL3::SDL3 SDL3_ttf::SDL3_ttf SDL3_image::SDL3_image SDL3_mixer::SDL3_mixer box2d::box2d jansson::jansson -lm) -target_link_libraries(charviewer PRIVATE akerror::akerror akgl SDL3::SDL3 SDL3_ttf::SDL3_ttf SDL3_image::SDL3_image SDL3_mixer::SDL3_mixer box2d::box2d jansson::jansson -lm) +target_link_libraries(charviewer PRIVATE akstdlib::akstdlib akerror::akerror akgl SDL3::SDL3 SDL3_ttf::SDL3_ttf SDL3_image::SDL3_image SDL3_mixer::SDL3_mixer box2d::box2d jansson::jansson -lm) set(main_lib_dest "lib/akgl-${MY_LIBRARY_VERSION}") install(FILES ${CMAKE_CURRENT_BINARY_DIR}/akgl.pc DESTINATION "lib/pkgconfig/") diff --git a/include/akgl/SDL_GameControllerDB.h b/include/akgl/SDL_GameControllerDB.h index 277ff13..f3546d5 100644 --- a/include/akgl/SDL_GameControllerDB.h +++ b/include/akgl/SDL_GameControllerDB.h @@ -1,7 +1,7 @@ #ifndef _SDL_GAMECONTROLLERDB_H_ #define _SDL_GAMECONTROLLERDB_H_ -// Taken from https://raw.githubusercontent.com/mdqinc/SDL_GameControllerDB/refs/heads/master/gamecontrollerdb.txt on Sat May 9 02:26:29 PM EDT 2026 +// Taken from https://raw.githubusercontent.com/mdqinc/SDL_GameControllerDB/refs/heads/master/gamecontrollerdb.txt on Sat May 9 11:58:41 PM EDT 2026 #define AKGL_SDL_GAMECONTROLLER_DB_LEN 2227 diff --git a/src/game.c b/src/game.c index 1db1d80..63de532 100644 --- a/src/game.c +++ b/src/game.c @@ -6,6 +6,7 @@ #include #include +#include #include #include #include @@ -235,9 +236,8 @@ akerr_ErrorContext AKERR_NOIGNORE *akgl_game_save(char *fpath) ATTEMPT { FAIL_ZERO_BREAK(errctx, fpath, AKERR_NULLPOINTER, "NULL file path"); - fp = fopen(fpath, "wb"); - FAIL_ZERO_BREAK(errctx, fp, errno, "%s", fpath); - fwrite(&game, 1, sizeof(akgl_Game), fp); + CATCH(errctx, aksl_fopen(fpath, "wb", &fp)); + CATCH(errctx, aksl_fwrite(&game, 1, sizeof(akgl_Game), fp)); CATCH(errctx, akgl_game_save_actors(fp)); } PROCESS(errctx) { } CLEANUP { @@ -256,18 +256,8 @@ akerr_ErrorContext AKERR_NOIGNORE *akgl_game_load_objectnamemap(FILE *fp, SDL_Pr PREPARE_ERROR(errctx); while ( 1 ) { - retval = fread((void *)&objname, 1, namelength, fp); - FAIL_NONZERO_RETURN( - errctx, - (retval != namelength), - AKERR_IO, - "Corrupt save file"); - retval = fread((void *)&ptr, 1, ptrlength, fp); - FAIL_NONZERO_RETURN( - errctx, - (retval != ptrlength), - AKERR_IO, - "Corrupt save file"); + CATCH(errctx, aksl_fread((void *)&objname, 1, namelength, fp)); + CATCH(errctx, aksl_fread((void *)&ptr, 1, ptrlength, fp)); // End of the map if ( ptr == 0x00 && objname[0] == 0x00 ) { break; @@ -280,7 +270,7 @@ akerr_ErrorContext AKERR_NOIGNORE *akgl_game_load_objectnamemap(FILE *fp, SDL_Pr // SDL_Properties objects can only use string keys, so we can't use the // old pointer as a key without first converting it to a string. - memset((void *)&ptrstring, 0x00, 32); + CATCH(errctx, aksl_memset((void *)&ptrstring, 0x00, 32)); snprintf((char *)&ptrstring, 32, "%p", ptr); SDL_SetPointerProperty( map, @@ -344,13 +334,8 @@ akerr_ErrorContext AKERR_NOIGNORE *akgl_game_load(char *fpath) FAIL_ZERO_RETURN(errctx, fpath, AKERR_NULLPOINTER, "NULL file path"); ATTEMPT { - fp = fopen(fpath, "rb"); - FAIL_ZERO_BREAK(errctx, fp, errno, "%s", fpath); - FAIL_NONZERO_BREAK( - errctx, - (fread((void *)&savegame, 1, sizeof(akgl_Game), fp) < sizeof(akgl_Game)), - AKERR_IO, - "Corrupt save file"); + CATCH(errctx, aksl_fopen(fpath, "rb", &fp)); + CATCH(errctx, aksl_fread((void *)&savegame, 1, sizeof(akgl_Game), fp)); CATCH(errctx, akgl_game_load_versioncmp("library", (char *)&savegame.libversion, (char *)AKGL_VERSION)); CATCH(errctx, akgl_game_load_versioncmp("game", (char *)&savegame.version, (char *)&game.version)); FAIL_NONZERO_RETURN(