diff --git a/src/sbbs3/umonitor/umonitor.c b/src/sbbs3/umonitor/umonitor.c index 98e440cab1efa357cf89367a5fcbd8797fec536c..1f1bf1f35ef7581404cb8036f81e23ed63a23ae6 100644 --- a/src/sbbs3/umonitor/umonitor.c +++ b/src/sbbs3/umonitor/umonitor.c @@ -898,21 +898,27 @@ int main(int argc, char** argv) { boxch.tr=(char)187; boxch.bl=(char)200; boxch.br=(char)188; + + str_list_t arg_list = strListInit(); for(i=1;i<argc;i++) { if(strcmp(argv[i], "-insert") == 0) { uifc.insert_mode = TRUE; + strListAppendFormat(&arg_list, "'%s'", argv[i]); continue; } if(argv[i][0]=='-') switch(toupper(argv[i][1])) { case 'C': uifc.mode|=UIFC_COLOR; + strListAppendFormat(&arg_list, "'%s'", argv[i]); break; - case 'L': + case 'L': uifc.scrn_len=atoi(argv[i]+2); + strListAppendFormat(&arg_list, "'%s'", argv[i]); break; case 'E': uifc.esc_delay=atoi(argv[i]+2); + strListAppendFormat(&arg_list, "'%s'", argv[i]); break; case 'S': idle_sleep=atoi(argv[i]+2); @@ -944,6 +950,7 @@ int main(int argc, char** argv) { default: goto USAGE; } + strListAppendFormat(&arg_list, "'%s'", argv[i]); break; default: USAGE: @@ -970,6 +977,9 @@ USAGE: } } + char args[1024]; + strListJoin(arg_list, args, sizeof args, " "); + #ifdef SIGPIPE signal(SIGPIPE, SIG_IGN); #endif @@ -1113,39 +1123,19 @@ USAGE: done=1; break; case 0: - sprintf(str,"%sscfg ",cfg.exec_dir); - for(j=1; j<argc; j++) { - strcat(str,"'"); - strcat(str,argv[j]); - strcat(str,"' "); - } + snprintf(str, sizeof str, "%sscfg %s", cfg.exec_dir, args); do_cmd(str); break; case 1: - sprintf(str,"%sechocfg ",cfg.exec_dir); - for(j=1; j<argc; j++) { - strcat(str,"'"); - strcat(str,argv[j]); - strcat(str,"' "); - } + snprintf(str, sizeof str, "%sechocfg %s", cfg.exec_dir, args); do_cmd(str); break; case 2: - sprintf(str,"%suedit ",cfg.exec_dir); - for(j=1; j<argc; j++) { - strcat(str,"'"); - strcat(str,argv[j]); - strcat(str,"' "); - } + snprintf(str, sizeof str, "%suedit %s", cfg.exec_dir, args); do_cmd(str); break; case 3: - sprintf(str,"%ssyncterm ",cfg.exec_dir); - for(j=1; j<argc; j++) { - strcat(str,"'"); - strcat(str,argv[j]); - strcat(str,"' "); - } + snprintf(str, sizeof str, "%ssyncterm %s", cfg.exec_dir, args); do_cmd(str); break; case 4: @@ -1302,12 +1292,7 @@ USAGE: switch(uifc.list(WIN_MID|WIN_SAV|WIN_ACT,0,0,0,&i,0,"Node Options",opt)) { case 0: /* Edit Users */ - sprintf(str,"%suedit %d",cfg.exec_dir,node.useron); - for(j=1; j<argc; j++) { - strcat(str,"'"); - strcat(str,argv[j]); - strcat(str,"' "); - } + snprintf(str, sizeof str, "%suedit %d %s", cfg.exec_dir, node.useron, args); do_cmd(str); break;