/src/barebox/commands/state.c
Line | Count | Source |
1 | | // SPDX-License-Identifier: GPL-2.0-or-later |
2 | | // SPDX-FileCopyrightText: © 2012 Jan Luebbe <j.luebbe@pengutronix.de> |
3 | | |
4 | | #include <common.h> |
5 | | #include <getopt.h> |
6 | | #include <command.h> |
7 | | #include <state.h> |
8 | | |
9 | | static int do_state(int argc, char *argv[]) |
10 | 0 | { |
11 | 0 | int opt, ret = 0; |
12 | 0 | struct state *state = NULL; |
13 | 0 | int do_save = 0, do_load = 0; |
14 | 0 | const char *statename = "state"; |
15 | 0 | int no_auth = 0; |
16 | |
|
17 | 0 | while ((opt = getopt(argc, argv, "sln")) > 0) { |
18 | 0 | switch (opt) { |
19 | 0 | case 's': |
20 | 0 | do_save = 1; |
21 | 0 | break; |
22 | 0 | case 'l': |
23 | 0 | do_load = 1; |
24 | 0 | break; |
25 | 0 | case 'n': |
26 | 0 | no_auth = 1; |
27 | 0 | break; |
28 | 0 | default: |
29 | 0 | return COMMAND_ERROR_USAGE; |
30 | 0 | } |
31 | 0 | } |
32 | | |
33 | 0 | if (!do_save && !do_load) { |
34 | 0 | state_info(); |
35 | 0 | return 0; |
36 | 0 | } |
37 | | |
38 | 0 | if (optind < argc) |
39 | 0 | statename = argv[optind]; |
40 | |
|
41 | 0 | state = state_by_name(statename); |
42 | 0 | if (!state) { |
43 | 0 | printf("cannot find state %s\n", statename); |
44 | 0 | return -ENOENT; |
45 | 0 | } |
46 | | |
47 | 0 | if (do_load) { |
48 | 0 | if (no_auth) |
49 | 0 | ret = state_load_no_auth(state); |
50 | 0 | else |
51 | 0 | ret = state_load(state); |
52 | 0 | } else if (do_save) { |
53 | 0 | ret = state_save(state); |
54 | 0 | } |
55 | |
|
56 | 0 | if (ret == -ENOMEDIUM) |
57 | 0 | ret = 0; |
58 | |
|
59 | 0 | return ret; |
60 | 0 | } |
61 | | |
62 | | BAREBOX_CMD_HELP_START(state) |
63 | | BAREBOX_CMD_HELP_TEXT("Usage: state [OPTIONS] [STATENAME]") |
64 | | BAREBOX_CMD_HELP_TEXT("") |
65 | | BAREBOX_CMD_HELP_TEXT("options:") |
66 | | BAREBOX_CMD_HELP_OPT ("-s", "save state") |
67 | | BAREBOX_CMD_HELP_OPT ("-l", "load state") |
68 | | BAREBOX_CMD_HELP_OPT ("-n", "no authentication") |
69 | | BAREBOX_CMD_HELP_END |
70 | | |
71 | | BAREBOX_CMD_START(state) |
72 | | .cmd = do_state, |
73 | | BAREBOX_CMD_DESC("load or save state information") |
74 | | BAREBOX_CMD_OPTS("[-sln] [STATENAME]") |
75 | | BAREBOX_CMD_GROUP(CMD_GRP_MISC) |
76 | | BAREBOX_CMD_HELP(cmd_state_help) |
77 | | BAREBOX_CMD_END |