Skip to content

Commit

Permalink
alright, i'll add more casts...
Browse files Browse the repository at this point in the history
  • Loading branch information
RepellantMold committed Apr 6, 2024
1 parent 07a83d0 commit fd95a52
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 57 deletions.
10 changes: 5 additions & 5 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -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()
110 changes: 58 additions & 52 deletions main.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 <filename.s3m>", 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 <filename.s3m>");
return 1;
break;
fclose(s3m);

default:
puts("Too many arguments.");
return 1;
break;
}
puts("Done!");

return 0;
}

int
Expand All @@ -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);

Expand Down Expand Up @@ -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;
}
}
}

Expand All @@ -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
Expand All @@ -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;
}
}

0 comments on commit fd95a52

Please sign in to comment.