diff -u -r1.25 btsco.c --- btsco.c 9 May 2005 04:57:29 -0000 1.25 +++ btsco.c 9 May 2005 22:11:43 -0000 @@ -713,10 +713,7 @@ int substl = 0; subst = NULL; - - // add the current sco mode to the command string - sysbuf = malloc(strlen(args)+1); - sprintf(sysbuf,args,sco_mode); + sysbuf = strdup(args); for(i = 0; sysbuf[i]; i++) { if((sysbuf[i] == '\\') && (sysbuf[i + 1] >= '0') && (sysbuf[i + 1] <= '9')) { @@ -730,6 +727,10 @@ subst = malloc(11); /* For potentially 32-bit PIDs */ substl = snprintf(subst, 11, "%i", getpid()); } + if((sysbuf[i] == '\\') && (sysbuf[i + 1] == 's')) { + subst = malloc(11); /* same as above, for SCO mode */ + substl = snprintf(subst, 11, "%d", sco_mode); + } if(subst != NULL) { sysbuf = realloc(sysbuf, strlen(sysbuf) + substl - 1); memmove(sysbuf + i + substl, sysbuf + i + 2, strlen(sysbuf) - i - 1);