summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pkgtools/pkg_install/files/admin/main.c49
1 files changed, 7 insertions, 42 deletions
diff --git a/pkgtools/pkg_install/files/admin/main.c b/pkgtools/pkg_install/files/admin/main.c
index 57b333a48cd..475f49c1acb 100644
--- a/pkgtools/pkg_install/files/admin/main.c
+++ b/pkgtools/pkg_install/files/admin/main.c
@@ -1,4 +1,4 @@
-/* $NetBSD: main.c,v 1.36 2008/03/09 20:36:22 joerg Exp $ */
+/* $NetBSD: main.c,v 1.37 2008/03/09 20:55:25 joerg Exp $ */
#if HAVE_CONFIG_H
#include "config.h"
@@ -8,7 +8,7 @@
#include <sys/cdefs.h>
#endif
#ifndef lint
-__RCSID("$NetBSD: main.c,v 1.36 2008/03/09 20:36:22 joerg Exp $");
+__RCSID("$NetBSD: main.c,v 1.37 2008/03/09 20:55:25 joerg Exp $");
#endif
/*-
@@ -439,86 +439,51 @@ main(int argc, char *argv[])
}
} else if (strcasecmp(argv[0], "lsall") == 0) {
- int saved_wd;
-
argv++; /* "lsall" */
- /* preserve cwd */
- saved_wd=open(".", O_RDONLY);
- if (saved_wd == -1)
- err(EXIT_FAILURE, "Cannot save working dir");
-
while (*argv != NULL) {
/* args specified */
int rc;
const char *basep, *dir;
- char cwd[MaxPathSize];
dir = lsdirp ? lsdirp : dirname_of(*argv);
basep = basename_of(*argv);
- fchdir(saved_wd);
- rc = chdir(dir);
- if (rc == -1)
- err(EXIT_FAILURE, "Cannot chdir to %s", dir);
-
- if (getcwd(cwd, sizeof(cwd)) == NULL)
- err(EXIT_FAILURE, "getcwd");
-
if (show_basename_only)
- rc = match_local_files(cwd, use_default_sfx, 1, basep, lsbasepattern, NULL);
+ rc = match_local_files(dir, use_default_sfx, 1, basep, lsbasepattern, NULL);
else
- rc = match_local_files(cwd, use_default_sfx, 1, basep, lspattern, cwd);
+ rc = match_local_files(dir, use_default_sfx, 1, basep, lspattern, (void *)dir);
if (rc == -1)
errx(EXIT_FAILURE, "Error from match_local_files(\"%s\", \"%s\", ...)",
- cwd, basep);
+ dir, basep);
argv++;
}
- close(saved_wd);
-
} else if (strcasecmp(argv[0], "lsbest") == 0) {
- int saved_wd;
-
argv++; /* "lsbest" */
- /* preserve cwd */
- saved_wd=open(".", O_RDONLY);
- if (saved_wd == -1)
- err(EXIT_FAILURE, "Cannot save working dir");
-
while (*argv != NULL) {
/* args specified */
const char *basep, *dir;
- char cwd[MaxPathSize];
char *p;
dir = lsdirp ? lsdirp : dirname_of(*argv);
basep = basename_of(*argv);
- fchdir(saved_wd);
- if (chdir(dir) == -1)
- err(EXIT_FAILURE, "Cannot chdir to %s", dir);
-
- if (getcwd(cwd, sizeof(cwd)) == NULL)
- err(EXIT_FAILURE, "getcwd");
-
- p = find_best_matching_file(cwd, basep, use_default_sfx, 1);
+ p = find_best_matching_file(dir, basep, use_default_sfx, 1);
if (p) {
if (show_basename_only)
printf("%s\n", p);
else
- printf("%s/%s\n", cwd, p);
+ printf("%s/%s\n", dir, p);
free(p);
}
argv++;
}
- close(saved_wd);
-
} else if (strcasecmp(argv[0], "list") == 0 ||
strcasecmp(argv[0], "dump") == 0) {