log_warn an incorrect -D arg.

log_fatal possible exit points.
This commit is contained in:
onyx-and-iris 2024-07-03 12:58:34 +01:00
parent b95c40265c
commit b7fa15d87d
2 changed files with 17 additions and 14 deletions

View File

@ -6,6 +6,7 @@
enum kind enum kind
{ {
UNKNOWN = -1,
BASIC = 1, BASIC = 1,
BANANA, BANANA,
POTATO, POTATO,

View File

@ -36,7 +36,7 @@ struct result
void help(void); void help(void);
enum kind set_kind(char *kval); enum kind set_kind(char *kval);
int init_voicemeeter(T_VBVMR_INTERFACE *vmr, int kind); int init_voicemeeter(T_VBVMR_INTERFACE *vmr, enum kind kind);
void interactive(T_VBVMR_INTERFACE *vmr); void interactive(T_VBVMR_INTERFACE *vmr);
void parse_input(T_VBVMR_INTERFACE *vmr, char *input, int len); void parse_input(T_VBVMR_INTERFACE *vmr, char *input, int len);
void parse_command(T_VBVMR_INTERFACE *vmr, char *command); void parse_command(T_VBVMR_INTERFACE *vmr, char *command);
@ -46,11 +46,10 @@ bool vflag = false;
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
bool iflag = false; bool iflag = false,
bool mflag = false; mflag = false,
bool sflag = false; sflag = false;
int opt; int opt;
char *kvalue = "";
int dvalue; int dvalue;
enum kind kind = BANANAX64; enum kind kind = BANANAX64;
@ -70,8 +69,12 @@ int main(int argc, char *argv[])
help(); help();
exit(EXIT_SUCCESS); exit(EXIT_SUCCESS);
case 'k': case 'k':
kvalue = optarg; kind = set_kind(optarg);
kind = set_kind(kvalue); if (kind == UNKNOWN)
{
log_fatal("Unknown Voicemeeter kind '%s'", optarg);
exit(EXIT_FAILURE);
}
break; break;
case 'm': case 'm':
mflag = true; mflag = true;
@ -90,7 +93,7 @@ int main(int argc, char *argv[])
} }
else else
{ {
log_error( log_warn(
"-D arg out of range, expected value from 0 up to 5\n" "-D arg out of range, expected value from 0 up to 5\n"
"Log level will default to LOG_WARN (3).\n"); "Log level will default to LOG_WARN (3).\n");
} }
@ -193,8 +196,7 @@ enum kind set_kind(char *kval)
} }
else else
{ {
log_error("Unknown Voicemeeter kind '%s'\n", kval); return UNKNOWN;
exit(EXIT_FAILURE);
} }
} }
@ -206,18 +208,18 @@ enum kind set_kind(char *kval)
* @param kind * @param kind
* @return int * @return int
*/ */
int init_voicemeeter(T_VBVMR_INTERFACE *vmr, int kind) int init_voicemeeter(T_VBVMR_INTERFACE *vmr, enum kind kind)
{ {
int rep = initialize_dll_interfaces(vmr); int rep = initialize_dll_interfaces(vmr);
if (rep < 0) if (rep < 0)
{ {
if (rep == -100) if (rep == -100)
{ {
log_error("Voicemeeter is not installed"); log_fatal("Voicemeeter is not installed");
} }
else else
{ {
log_error("Error loading Voicemeeter dll with code %d\n", rep); log_fatal("Error loading Voicemeeter dll with code %d\n", rep);
} }
return rep; return rep;
} }
@ -225,7 +227,7 @@ int init_voicemeeter(T_VBVMR_INTERFACE *vmr, int kind)
rep = login(vmr, kind); rep = login(vmr, kind);
if (rep != 0) if (rep != 0)
{ {
log_error("Error logging into Voicemeeter"); log_fatal("Error logging into Voicemeeter");
return rep; return rep;
} }