int main(int argc, char *argv[]) { int r = 0; if (argc > 1 && argc != 4) { log_error("This program takes three or no arguments."); return EXIT_FAILURE; } if (argc > 1) arg_dest = argv[1]; log_set_target(LOG_TARGET_SAFE); log_parse_environment(); log_open(); umask(0022); r = parse_proc_cmdline(parse_proc_cmdline_item); if (r < 0) log_warning_errno(r, "Failed to parse kernel command line, ignoring: %m"); /* Always honour root= and usr= in the kernel command line if we are in an initrd */ if (in_initrd()) { r = add_root_mount(); if (r == 0) r = add_usr_mount(); } /* Honour /etc/fstab only when that's enabled */ if (arg_fstab_enabled) { int k; log_debug("Parsing /etc/fstab"); /* Parse the local /etc/fstab, possibly from the initrd */ k = parse_fstab(false); if (k < 0) r = k; /* If running in the initrd also parse the /etc/fstab from the host */ if (in_initrd()) { log_debug("Parsing /sysroot/etc/fstab"); k = parse_fstab(true); if (k < 0) r = k; } } free(arg_root_what); free(arg_root_fstype); free(arg_root_options); free(arg_usr_what); free(arg_usr_fstype); free(arg_usr_options); return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS; }
int main(int argc, char *argv[]) { int r; if (argc > 1 && argc != 4) { log_error("This program takes three or no arguments."); return EXIT_FAILURE; } if (argc > 1) arg_dest = argv[1]; log_set_target(LOG_TARGET_SAFE); log_parse_environment(); log_open(); umask(0022); if (parse_proc_cmdline() < 0) return EXIT_FAILURE; if (!arg_enabled) return EXIT_SUCCESS; r = parse_fstab(); return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS; }