source: bootcd/isolinux/syslinux-6.03/gpxe/src/hci/commands/sanboot_cmd.c

Last change on this file was e16e8f2, checked in by Edwin Eefting <edwin@datux.nl>, 3 years ago

bootstuff

  • Property mode set to 100644
File size: 1.3 KB
Line 
1#include <stdio.h>
2#include <string.h>
3#include <getopt.h>
4#include <gpxe/command.h>
5#include <usr/autoboot.h>
6
7FILE_LICENCE ( GPL2_OR_LATER );
8
9/**
10 * "sanboot" command syntax message
11 *
12 * @v argv              Argument list
13 */
14static void sanboot_syntax ( char **argv ) {
15        printf ( "Usage:\n"
16                 "  %s <root-path>\n"
17                 "\n"
18                 "Boot from SAN target\n",
19                 argv[0] );
20}
21
22/**
23 * The "sanboot" command
24 *
25 * @v argc              Argument count
26 * @v argv              Argument list
27 * @ret rc              Exit code
28 */
29static int sanboot_exec ( int argc, char **argv ) {
30        static struct option longopts[] = {
31                { "help", 0, NULL, 'h' },
32                { NULL, 0, NULL, 0 },
33        };
34        const char *root_path = NULL;
35        int c;
36        int rc;
37
38        /* Parse options */
39        while ( ( c = getopt_long ( argc, argv, "h", longopts, NULL ) ) >= 0 ){
40                switch ( c ) {
41                case 'h':
42                        /* Display help text */
43                default:
44                        /* Unrecognised/invalid option */
45                        sanboot_syntax ( argv );
46                        return 1;
47                }
48        }
49
50        /* Need exactly one image name remaining after the options */
51        if ( optind != ( argc - 1 ) ) {
52                sanboot_syntax ( argv );
53                return 1;
54        }
55        root_path = argv[optind];
56
57        /* Boot from root path */
58        if ( ( rc = boot_root_path ( root_path ) ) != 0 ) {
59                printf ( "Could not boot from %s: %s\n",
60                         root_path, strerror ( rc ) );
61                return 1;
62        }
63
64        return 0;
65}
66
67struct command sanboot_command __command = {
68        .name = "sanboot",
69        .exec = sanboot_exec,
70};
Note: See TracBrowser for help on using the repository browser.