diff --git a/include/util.h b/include/util.h index ac5e3ed..870cb46 100644 --- a/include/util.h +++ b/include/util.h @@ -2,7 +2,8 @@ #define __UTIL_H__ void remove_name_in_path(char *szPath); -void replace_multiple_space_with_one(char *s, size_t len); +int replace_multiple_space_with_one(char *s, size_t len); +char *kind_as_string(char *s, enum kind kind, int n); char *version_as_string(char *, long v, int n); #endif /* __UTIL_H__ */ \ No newline at end of file diff --git a/include/vmr.h b/include/vmr.h index a31622b..f229807 100644 --- a/include/vmr.h +++ b/include/vmr.h @@ -9,7 +9,9 @@ enum kind BASIC = 1, BANANA, POTATO, - POTATOX64 = 6 + BASICX64, + BANANAX64, + POTATOX64, }; long login(T_VBVMR_INTERFACE *iVMR, int kind); diff --git a/src/util.c b/src/util.c index e6999f6..adf9d9f 100644 --- a/src/util.c +++ b/src/util.c @@ -1,5 +1,6 @@ #include #include +#include "vmr.h" #include "util.h" void remove_name_in_path(char *szPath) @@ -14,7 +15,14 @@ void remove_name_in_path(char *szPath) *p = '\0'; } -void replace_multiple_space_with_one(char *s, size_t len) +/** + * @brief replaces multiple newlines and tabs with single spaces + * + * @param s the string to be reduced + * @param len current length of the string + * @return int new length of the string + */ +int replace_multiple_space_with_one(char *s, size_t len) { int j = 0; int count = 0; @@ -22,11 +30,11 @@ void replace_multiple_space_with_one(char *s, size_t len) if (len == 1 && (s[0] == ' ' || s[0] == '\t')) { s[0] = '\0'; - return; + return len; } if (len < 2) - return; + return len; for (int i = 0; s[i] != '\0'; i++) { @@ -46,8 +54,31 @@ void replace_multiple_space_with_one(char *s, size_t len) } } s[j] = '\0'; + return j; } +char *kind_as_string(char *s, enum kind kind, int n) +{ + char *kinds[] = { + "Basic", + "Banana", + "Potato", + "Basic x64", + "Banana x64", + "Potato x64", + }; + snprintf(s, n, kinds[kind - 1]); + return s; +} + +/** + * @brief returns Voicemeeter's version as a string + * + * @param s string buffer the version will be written to + * @param v unprocessed version as a long int + * @param n maximum number of characters to be written to the buffer + * @return char* + */ char *version_as_string(char *s, long v, int n) { long v1 = (v & 0xFF000000) >> 24, diff --git a/src/vmr.c b/src/vmr.c index 771ef32..a9167d5 100644 --- a/src/vmr.c +++ b/src/vmr.c @@ -6,6 +6,7 @@ #include "util.h" #define VERSION_STR_LEN 128 +#define KIND_STR_LEN 64 long login(T_VBVMR_INTERFACE *vmr, int kind) { @@ -16,21 +17,8 @@ long login(T_VBVMR_INTERFACE *vmr, int kind) if (rep == 1) { run_voicemeeter(vmr, kind); - switch (kind) - { - case BASIC: - log_info("Launching Voicemeeter Basic GUI"); - break; - case BANANA: - log_info("Launching Voicemeeter Banana GUI"); - break; - case POTATO: - log_info("Launching Voicemeeter Potato GUI"); - break; - case POTATOX64: - log_info("Launching Voicemeeter Potato x64 GUI"); - break; - } + char kind_s[KIND_STR_LEN]; + log_info("Launching Voicemeeter %s GUI", kind_as_string(kind_s, kind, KIND_STR_LEN)); time_t endwait; int timeout = 2; diff --git a/src/vmrcli.c b/src/vmrcli.c index 5363ec4..3c29841 100644 --- a/src/vmrcli.c +++ b/src/vmrcli.c @@ -26,7 +26,7 @@ struct result }; void help(void); -int set_kind(char *kval); +enum kind set_kind(char *kval); int init_voicemeeter(T_VBVMR_INTERFACE *vmr, int kind); void interactive(T_VBVMR_INTERFACE *vmr); void parse_command(T_VBVMR_INTERFACE *vmr, char *command); @@ -38,7 +38,7 @@ int main(int argc, char *argv[]) int opt; char *kvalue = ""; int dvalue; - int kind = BANANA; + enum kind kind = BANANAX64; if (argc == 1) { @@ -109,6 +109,10 @@ int main(int argc, char *argv[]) return EXIT_FAILURE; } +/** + * @brief prints the help dialogue + * + */ void help() { puts( @@ -120,15 +124,27 @@ void help() "\tD: Set log level 0=TRACE, 1=DEBUG, 2=INFO, 3=WARN, 4=ERROR, 5=FATAL"); } -int set_kind(char *kval) +/** + * @brief Set the kind object + * + * @param kval + * @return enum kind + */ +enum kind set_kind(char *kval) { if (strcmp(kval, "basic") == 0) { - return BASIC; + if (sizeof(void *) == 8) + return BASICX64; + else + return BASIC; } else if (strcmp(kval, "banana") == 0) { - return BANANA; + if (sizeof(void *) == 8) + return BANANAX64; + else + return BANANA; } else if (strcmp(kval, "potato") == 0) {