Skip to content

Commit 85f864f

Browse files
committed
qfile: no point in comparing resolved to a non-resolved path in qfile_cb
When ROOT is given, the entries from VDB are always resolved, so no point in comparing against a non-resolved path. Signed-off-by: Fabian Groffen <[email protected]>
1 parent 9220a81 commit 85f864f

File tree

1 file changed

+9
-9
lines changed

1 file changed

+9
-9
lines changed

qfile.c

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -166,11 +166,10 @@ static int qfile_cb(tree_pkg_ctx *pkg_ctx, void *priv)
166166
{
167167
struct qfile_opt_state *state = priv;
168168
const char *catname = pkg_ctx->cat_ctx->name;
169-
char *real_root = state->real_root;
170169
qfile_args_t *args = &state->args;
171170
qfile_str_len_t *base_names = args->basenames;
172171
qfile_str_len_t *dir_names = args->dirnames;
173-
qfile_str_len_t *real_dir_names = args->dirnames;
172+
qfile_str_len_t *real_dir_names = args->realdirnames;
174173
short *non_orphans = args->non_orphans;
175174
int *results = args->results;
176175
char *line;
@@ -239,23 +238,22 @@ static int qfile_cb(tree_pkg_ctx *pkg_ctx, void *priv)
239238

240239
path_ok = false;
241240

242-
if (dir_names[i].len > 0 &&
243-
dir_names[i].len == dirname_len &&
241+
if (dir_names[i].len == dirname_len &&
244242
memcmp(e->name, dir_names[i].str, dir_names[i].len) == 0)
245243
{
246244
/* dir_name == dirname(CONTENTS) */
247245
path_ok = true;
248-
} else if (real_dir_names[i].len > 0 &&
249-
real_dir_names[i].len == dirname_len &&
246+
} else if (real_dir_names[i].len == dirname_len &&
250247
memcmp(e->name, real_dir_names[i].str,
251248
real_dir_names[i].len) == 0)
252249
{
253250
/* real_dir_name == dirname(CONTENTS) */
254251
path_ok = true;
255-
} else if (real_root[0]) {
252+
} else if (state->real_root_len > 0) {
256253
char rpath[_Q_PATH_MAX + 1];
257254
char *_rpath;
258255
char fullpath[_Q_PATH_MAX + 1];
256+
char *real_root = state->real_root;
259257
size_t real_root_len = state->real_root_len;
260258

261259
snprintf(fullpath, sizeof(fullpath), "%s%s",
@@ -275,6 +273,7 @@ static int qfile_cb(tree_pkg_ctx *pkg_ctx, void *priv)
275273
warn("Real path of \"%s\" is not under ROOT: %s",
276274
fullpath, rpath);
277275
} else if (dir_names[i].len > 0 &&
276+
real_dir_names[i].len == 0 &&
278277
strcmp(_rpath, dir_names[i].str) == 0) {
279278
/* dir_name == realpath(dirname(CONTENTS)) */
280279
path_ok = true;
@@ -444,7 +443,7 @@ prepare_qfile_args(const int argc, const char **argv, struct qfile_opt_state *st
444443
tmppath, abspath);
445444
goto skip_query_item;
446445
}
447-
if (strcmp(dirnames[i].str, abspath + real_root_len))
446+
if (strcmp(dirnames[i].str, abspath + real_root_len) != 0)
448447
{
449448
realdirnames[i].str = xstrdup(abspath + real_root_len);
450449
realdirnames[i].len = strlen(realdirnames[i].str);
@@ -567,12 +566,13 @@ int qfile_main(int argc, char **argv)
567566
state.pwd = xstrdup(state.pwd);
568567
if (state.pwd[lastc] == '/')
569568
state.pwd[lastc] = '\0';
569+
state.pwd_len = strlen(state.pwd);
570570
}
571571

572572
/* Get realpath of $ROOT, with no trailing slash */
573573
if (portroot[0] == '/')
574574
p = realpath(portroot, NULL);
575-
else if (state.pwd) {
575+
else if (state.pwd_len > 0) {
576576
snprintf(state.buf, state.buflen, "%s/%s", state.pwd, portroot);
577577
p = realpath(state.buf, NULL);
578578
} else

0 commit comments

Comments
 (0)