X-Git-Url: http://git.samba.org/?a=blobdiff_plain;f=killbysubdir.c;h=7413167af294c3011553e1faf844730536f3e435;hb=bbaa8f3bf3a38c7c1d5f7d02a90a8bcc7b440c7a;hp=e7fb83d7799f9527b84dbb32e5828d6db0635cb9;hpb=1647959ad0f15db389964b0fcd404140c92a285b;p=build-farm.git diff --git a/killbysubdir.c b/killbysubdir.c index e7fb83d7..7413167a 100644 --- a/killbysubdir.c +++ b/killbysubdir.c @@ -7,6 +7,9 @@ #include #include #include +#ifndef PATH_MAX +#define PATH_MAX 1024 +#endif int main(int argc, char *argv[]) { @@ -26,11 +29,18 @@ int main(int argc, char *argv[]) /* make it absolute */ if (directory[0] != '/') { char *cwd = getcwd(buf, sizeof(buf)); + char *dir; + int len; if (cwd == NULL) { perror("cwd"); exit(1); } - asprintf(&directory, "%s/%s", cwd, directory); + /* Add 2 for / + \0 */ + len = strlen(cwd) + strlen(directory) +2; + dir = (char*)malloc(len * sizeof(char)); + sprintf(dir, "%s/%s", cwd, directory); + dir[len-1] = '\0'; + directory = dir; } /* resolve links etc */ @@ -54,15 +64,26 @@ int main(int argc, char *argv[]) char *cwd_path, *real_cwd; char cwd[PATH_MAX], buf2[PATH_MAX]; ssize_t link_size; + int len; if (!isdigit(name[0])) continue; - asprintf(&cwd_path, "/proc/%s/cwd", name); + #ifdef __sun + len = strlen(name) + strlen("/proc//path/cwd") + 1; + cwd_path = (char*)malloc(len * sizeof(char)); + sprintf(cwd_path, "/proc/%s/path/cwd", name); + #else + len = strlen(name) + strlen("/proc//cwd") + 1; + cwd_path = (char*)malloc(len * sizeof(char)); + sprintf(cwd_path, "/proc/%s/cwd", name); + #endif + cwd_path[len - 1] = '\0'; link_size = readlink(cwd_path, cwd, sizeof(cwd)); free(cwd_path); if (link_size == -1 || link_size >= sizeof(cwd)) { continue; } + cwd[link_size] = '\0'; real_cwd = realpath(cwd, buf2); if (real_cwd == NULL) { continue;