Lines 1101-1107
Link Here
|
1101 |
bool doneone = false; |
1101 |
bool doneone = false; |
1102 |
int retval, opt, depoptions = RC_DEP_TRACE; |
1102 |
int retval, opt, depoptions = RC_DEP_TRACE; |
1103 |
RC_STRING *svc; |
1103 |
RC_STRING *svc; |
1104 |
char path[PATH_MAX], lnk[PATH_MAX], *dir, *save = NULL, pidstr[10]; |
1104 |
char path[PATH_MAX], lnk[PATH_MAX], *dir, pidstr[10]; |
|
|
1105 |
char *save = NULL, *savedir = NULL, *savelnk = NULL; |
1105 |
size_t l = 0, ll; |
1106 |
size_t l = 0, ll; |
1106 |
const char *file; |
1107 |
const char *file; |
1107 |
struct stat stbuf; |
1108 |
struct stat stbuf; |
Lines 1132-1144
Link Here
|
1132 |
if (readlink(argv[1], lnk, sizeof(lnk)-1)) { |
1133 |
if (readlink(argv[1], lnk, sizeof(lnk)-1)) { |
1133 |
dir = dirname(path); |
1134 |
dir = dirname(path); |
1134 |
if (strchr(lnk, '/')) { |
1135 |
if (strchr(lnk, '/')) { |
1135 |
save = xstrdup(dir); |
1136 |
savedir = xstrdup(dir); |
|
|
1137 |
savelnk = xstrdup(lnk); |
1136 |
dir = dirname(lnk); |
1138 |
dir = dirname(lnk); |
1137 |
if (strcmp(dir, save) == 0) |
1139 |
if (strcmp(dir, savedir) == 0) |
1138 |
file = basename_c(argv[1]); |
1140 |
file = basename_c(argv[1]); |
1139 |
else |
1141 |
else |
1140 |
file = basename_c(lnk); |
1142 |
file = basename_c(savelnk); |
1141 |
dir = save; |
1143 |
dir = savedir; |
1142 |
} else |
1144 |
} else |
1143 |
file = basename_c(argv[1]); |
1145 |
file = basename_c(argv[1]); |
1144 |
ll = strlen(dir) + strlen(file) + 2; |
1146 |
ll = strlen(dir) + strlen(file) + 2; |
Lines 1146-1154
Link Here
|
1146 |
snprintf(service, ll, "%s/%s", dir, file); |
1148 |
snprintf(service, ll, "%s/%s", dir, file); |
1147 |
if (stat(service, &stbuf) != 0) { |
1149 |
if (stat(service, &stbuf) != 0) { |
1148 |
free(service); |
1150 |
free(service); |
1149 |
service = xstrdup(lnk); |
1151 |
service = xstrdup(savelnk); |
1150 |
} |
1152 |
} |
1151 |
free(save); |
1153 |
free(savedir); |
|
|
1154 |
free(savelnk); |
1152 |
} |
1155 |
} |
1153 |
if (!service) |
1156 |
if (!service) |
1154 |
service = xstrdup(path); |
1157 |
service = xstrdup(path); |