static int swapsystem(char *cmd) { char *prog, *args; int retcode; for (; elvspace(*cmd); cmd++) { } prog = safedup(cmd); for (args = prog; *args && !elvspace(*args); args++) { } if (*args) *args++ = '\0'; retcode = do_exec(prog, args, USE_ALL|HIDE_FILE, 0xFFFF, NULL); if (retcode == RC_NOFILE) { safefree(prog); prog = safealloc(strlen(cmd) + 4, sizeof(char)); strcpy(prog, "/c "); strcat(prog, cmd); retcode = do_exec(tochar8(o_shell), prog, USE_ALL|HIDE_FILE, 0xFFFF, NULL); } safefree(prog); return retcode; }
/* strdup variant that returns "<null>" in case of out-of-memory */ static char * safedup( char * in ) { char * p = strdup( in ); return ( p == NULL ) ? "<null>" : p; } /* find number given in msn_list, return index */ static int find_msn _P2((string, msn_list), char * string, char ** msn_list ) { int i, len, len2; char * p; lprintf( L_NOISE, "MSN: '%s'", string ); CalledNr = safedup(string); /* save away */ if ( msn_list == NULL ) return 0; /* nothing to match against */ len=strlen(string); /* hack off sub-addresses ("<msn>/<subaddr>") * (future versions could do comparisons with and without subaddr...) */ p = strchr( string, '/' ); if ( p != NULL ) { len = (p - string); } for( i=0; msn_list[i] != NULL; i++ ) { lprintf( L_JUNK, "match: '%s'", msn_list[i] ); len2=strlen( msn_list[i] ); if ( len2 <= len &&