From fd95a526d02abfb8c2b4d7f07d1df2734f565716 Mon Sep 17 00:00:00 2001 From: RepellantMold Date: Fri, 5 Apr 2024 21:17:47 -0700 Subject: [PATCH] alright, i'll add more casts... --- CMakeLists.txt | 10 ++--- main.c | 110 ++++++++++++++++++++++++++----------------------- 2 files changed, 63 insertions(+), 57 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5cc46c3..eae3c76 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,13 +1,13 @@ cmake_minimum_required(VERSION 3.0) -project(DumbSThreeMHeaderEditor) +project(dstmhe) set(CMAKE_C_STANDARD 90) set(CMAKE_C_EXTENSIONS OFF) -add_executable(DumbSThreeMHeaderEditor main.c) +add_executable(dstmhe main.c) # https://stackoverflow.com/a/50882216 if(MSVC) - target_compile_options(DumbSThreeMHeaderEditor PRIVATE /W4 /WX) -else() - target_compile_options(DumbSThreeMHeaderEditor PRIVATE -Wall -Wextra -Wpedantic -Werror -march=native) + target_compile_options(dstmhe PRIVATE /W4 /WX) +elseif(GNU) + target_compile_options(dstmhe PRIVATE -Wall -Wextra -Wpedantic -Werror -march=native) endif() \ No newline at end of file diff --git a/main.c b/main.c index f5e8919..c507e64 100644 --- a/main.c +++ b/main.c @@ -23,53 +23,53 @@ main(int argc, char* argv[]) { puts("Dumb S3M Header Editor\nby RepellantMold (2023, 2024)\n\n"); switch (argc) { - case 2: - s3m = fopen(argv[1], "rb+"); - if (s3m == NULL) { - perror("Failed to open the file"); - return 1; - } + case 2: break; - (void)!fread(header, sizeof(char), sizeof(header), s3m); + case 0: + case 1: + printf("Expected usage: %s ", argv[0]); + return 1; + break; - if (check_s3m_header(header)) { - puts("Not a valid S3M file."); - return 2; - } + default: + puts("Too many arguments."); + return 1; + break; + } - /* Null terminated string */ - printf("Song title: %.28s\n", header); + s3m = fopen(argv[1], "rb+"); + if (s3m == NULL) { + perror("Failed to open the file"); + return 1; + } - check_s3m_tracker_version(header); + (void)!fread(header, sizeof(char), sizeof(header), s3m); - handle_s3m_flags(header); + if (check_s3m_header(header)) { + puts("Not a valid S3M file."); + return 2; + } - handle_stereo_toggle(header); + /* Null terminated string */ + printf("Song title: %.28s\n", header); - handle_s3m_channels(header); + check_s3m_tracker_version(header); - rewind(s3m); + handle_s3m_flags(header); - fwrite(header, sizeof(char), sizeof(header), s3m); + handle_stereo_toggle(header); - fclose(s3m); + handle_s3m_channels(header); - puts("Done!"); + rewind(s3m); - return 0; - break; + fwrite(header, sizeof(char), sizeof(header), s3m); - case 0: - case 1: - puts("Expected usage: DumbS3MHeaderEditor "); - return 1; - break; + fclose(s3m); - default: - puts("Too many arguments."); - return 1; - break; - } + puts("Done!"); + + return 0; } int @@ -91,7 +91,7 @@ check_s3m_tracker_version(unsigned char* header) { return; } - trackerinfo = ((header[41] << 8) + header[40]); + trackerinfo = ((header[41] << 8) | header[40]); (void)!printf("Tracker info: %04X, which translates to...\n", trackerinfo); @@ -154,9 +154,11 @@ handle_s3m_channels(unsigned char* header) { for (i = 0; i < 32; i++) { (void)!printf("Enter the value for channel %02d (decimal):", (unsigned char)i + 1); - if(scanf("%3u", &a) == 1) + if (scanf("%3u", &a) == 1) { header[64 + i] = (unsigned char)a; - else continue; + } else { + continue; + } } } @@ -169,19 +171,21 @@ handle_s3m_flags(unsigned char* header) { } (void)!puts("\nThe bit meanings for the song flags (hex):\n" - "0 (+1): ST2 vibrato (deprecated)\n" - "1 (+2): ST2 tempo (deprecated)\n" - "2 (+4): Amiga slides (deprecated)\n" - "3 (+8): 0-vol optimizations\n" - "4 (+10): Enforce Amiga limits\n" - "5 (+20): Enable SoundBlaster filter/FX (deprecated)\n" - "6 (+40): Fast volume slides\n" - "7 (+80): Pointer to special data is valid\n\n" - "Enter your new value (hexadecimal):"); - - if (scanf("%2X", &flaggos) == 1) - header[38] = flaggos; - else return; + "0 (+1): ST2 vibrato (deprecated)\n" + "1 (+2): ST2 tempo (deprecated)\n" + "2 (+4): Amiga slides (deprecated)\n" + "3 (+8): 0-vol optimizations\n" + "4 (+10): Enforce Amiga limits\n" + "5 (+20): Enable SoundBlaster filter/FX (deprecated)\n" + "6 (+40): Fast volume slides\n" + "7 (+80): Pointer to special data is valid\n\n" + "Enter your new value (hexadecimal):"); + + if (scanf("%2X", &flaggos) == 1) { + header[38] = (unsigned char)flaggos; + } else { + return; + } } void @@ -193,7 +197,9 @@ handle_stereo_toggle(unsigned char* header) { } (void)!puts("Would you like the song to be in stereo (1) or mono (0)?"); - if (scanf("%1u", &stereotoggle) == 1) - header[51] |= stereotoggle << 7; - else return; + if (scanf("%1u", &stereotoggle) == 1) { + header[51] |= (unsigned char)stereotoggle << 7; + } else { + return; + } }