summaryrefslogtreecommitdiffstats
path: root/collage/commands.c
diff options
context:
space:
mode:
authorErik Troan <ewt@redhat.com>2000-05-30 21:38:15 +0000
committerErik Troan <ewt@redhat.com>2000-05-30 21:38:15 +0000
commit4a7c9c2e1d4c38f3d1618badf24ed04ce12e8d3d (patch)
treea9b12e10e4a5fd662f5a4cf623f588ae215fdd83 /collage/commands.c
parent8b8cac329eeb9c7ce6f8a4a9ac63f47f20e37c5a (diff)
downloadanaconda-4a7c9c2e1d4c38f3d1618badf24ed04ce12e8d3d.tar.gz
anaconda-4a7c9c2e1d4c38f3d1618badf24ed04ce12e8d3d.tar.xz
anaconda-4a7c9c2e1d4c38f3d1618badf24ed04ce12e8d3d.zip
1) added chroot
2) cleaned up error reporting for mount 3) fixed misc build complaints
Diffstat (limited to 'collage/commands.c')
-rw-r--r--collage/commands.c32
1 files changed, 28 insertions, 4 deletions
diff --git a/collage/commands.c b/collage/commands.c
index 810c4a162..c27fae26c 100644
--- a/collage/commands.c
+++ b/collage/commands.c
@@ -122,7 +122,7 @@ int mountCommand(int argc, char ** argv) {
}
if (doPwMount(dev, dir, fs, 0, 1, NULL, NULL)) {
- fprintf(strerror, "mount failed: %s\n", strerror(errno));
+ fprintf(stderr, "mount failed: %s\n", strerror(errno));
return 1;
}
@@ -280,6 +280,30 @@ int rmCommand(int argc, char ** argv) {
return 0;
}
+int chrootCommand(int argc, char ** argv) {
+ char * defaultCommand[] = { "/bin/sh", NULL };
+ char ** command = defaultCommand;
+
+ if (argc < 2) {
+ fprintf(stderr, "usage: chroot <dir> [<cmd>...]\n");
+ return 1;
+ }
+
+ if (chroot(argv[1])) {
+ fprintf(stderr, "chroot failed: %s\n", strerror(errno));
+ return 1;
+ }
+
+ if (argc > 2)
+ command = argv + 2;
+
+ execvp(command[0], command);
+
+ fprintf(stderr, "exec failed: %s\n", strerror(errno));
+
+ return 1;
+}
+
int chmodCommand(int argc, char ** argv) {
char ** argptr = argv + 2;
int mode;
@@ -366,7 +390,7 @@ int dfCommand(int argc, char ** argv) {
badjust = fs.f_bsize / 1024;
- printf("%-30s %-10d %-10d %-10d\n",
+ printf("%-30s %-10ld %-10ld %-10ld\n",
buf, fs.f_blocks * badjust,
(fs.f_blocks - fs.f_bfree) * badjust,
fs.f_bfree * badjust);
@@ -400,7 +424,7 @@ int lsCommand(int argc, char ** argv) {
{ NULL, '\0', 0, NULL, '\0' }
};
- optCon = poptGetContext(NULL, argc, argv, ksOptions, 0);
+ optCon = poptGetContext(NULL, argc, (const char **) argv, ksOptions, 0);
if (isatty(1)) flags |= SENDDIR_MULTICOLUMN;
while ((rc = poptGetNextOpt(optCon)) >= 0) {
@@ -434,7 +458,7 @@ int lsCommand(int argc, char ** argv) {
} else {
idInit();
- argv = poptGetArgs(optCon);
+ argv = (char **) poptGetArgs(optCon);
if (argv) {
while (*argv) {
if (argv[0][0] == '/')