Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 350910
Collapse All | Expand All

(-)runscript.c.orig (-7 / +10 lines)
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);

Return to bug 350910