--- wrapper-1.4.2.c.orig 2004-12-07 03:43:49.526950288 +0000 +++ wrapper-1.4.2.c 2004-12-07 04:01:48.052989408 +0000 @@ -39,7 +39,10 @@ static const char *wrapper_strerror(int err, struct wrapper_data *data) { - strerror_r(err, data->tmp, sizeof(data->tmp)); + /* this program doesn't need to be thread safe. If it becomes + ** more portable with strerror, I think its a good call. + */ + strncpy(data->tmp, strerror(err), sizeof(data->tmp)); return data->tmp; } @@ -155,7 +158,7 @@ /* A bash variable may be unquoted, quoted with " or * quoted with ', so extract the value without those .. */ - token = strsep(&strp, "\n\"\'"); + token = strtok(strp, "\n\"\'"); while (NULL != token) { @@ -165,7 +168,7 @@ return 1; } - token = strsep(&strp, "\n\"\'"); + token = strtok(NULL, "\n\"\'"); } } @@ -247,19 +250,15 @@ return; } - len = strlen(dname) + strlen(data->path) + 2; + len = strlen(dname) + strlen(data->path) + 2 + strlen("PATH") + 1; newpath = (char *)malloc(len); if (NULL == newpath) wrapper_exit("out of memory\n"); memset(newpath, 0, len); - snprintf(newpath, len, "%s:%s", dname, data->path); - setenv("PATH", newpath, 1); - - if (newpath) - free(newpath); - newpath = NULL; + snprintf(newpath, len, "PATH=%s:%s", dname, data->path); + putenv(newpath); } int main(int argc, char **argv)