re-establish kernel assert()s.
[minix.git] / commands / simple / newroot.c
blobe6ea8cc27d399e0b707de8f276c167ed706d6e9c
1 /*
2 newroot.c
4 Replace the current root with a new one
5 */
7 #include <errno.h>
8 #include <stdio.h>
9 #include <stdlib.h>
10 #include <string.h>
11 #include <sys/mount.h>
13 void usage(void) {
14 fprintf(stderr, "Usage: newroot [-i] <block-special>\n");
15 fprintf(stderr, "-i: copy mfs binary from boot image to memory\n");
16 exit(1);
19 int main(int argc, char *argv[])
21 int r;
22 char *dev;
23 int mountflags;
25 r = 0;
26 mountflags = 0; /* !read-only */
28 if (argc != 2 && argc != 3) usage();
29 if(argc == 2) {
30 dev = argv[1];
31 } else if(argc == 3) {
32 /* -i flag was supposedly entered. Verify.*/
33 if(strcmp(argv[1], "-i") != 0) usage();
34 mountflags |= MS_REUSE;
35 dev = argv[2];
38 r = mount(dev, "/", mountflags, NULL, NULL);
39 if (r != 0) {
40 fprintf(stderr, "newroot: mount failed: %s\n",strerror(errno));
41 exit(1);
44 return 0;