[Settings] Start revamping the configuration settings API.
[people/dverkamp/gpxe.git] / src / hci / commands / nvo_cmd.c
1 #include <stdint.h>
2 #include <stdlib.h>
3 #include <stdio.h>
4 #include <string.h>
5 #include <errno.h>
6 #include <getopt.h>
7 #include <gpxe/settings.h>
8 #include <gpxe/command.h>
9
10 static int show_exec ( int argc, char **argv ) {
11         char buf[256];
12         int rc;
13
14         if ( argc != 2 ) {
15                 printf ( "Syntax: %s <identifier>\n", argv[0] );
16                 return 1;
17         }
18
19         if ( ( rc = get_named_setting ( argv[1], buf, sizeof ( buf ) ) ) < 0 ){
20                 printf ( "Could not find \"%s\": %s\n",
21                          argv[1], strerror ( rc ) );
22                 return 1;
23         }
24
25         printf ( "%s = %s\n", argv[1], buf );
26         return 0;
27 }
28
29 static int set_exec ( int argc, char **argv ) {
30         int rc;
31
32         if ( argc != 3 ) {
33                 printf ( "Syntax: %s <identifier> <value>\n", argv[0] );
34                 return 1;
35         }
36
37         if ( ( rc = set_named_setting ( argv[1], argv[2] ) ) != 0 ) {
38                 printf ( "Could not set \"%s\"=\"%s\": %s\n",
39                          argv[1], argv[2], strerror ( rc ) );
40                 return 1;
41         }
42
43         return 0;
44 }
45
46 static int clear_exec ( int argc, char **argv ) {
47         int rc;
48
49         if ( argc != 2 ) {
50                 printf ( "Syntax: %s <identifier>\n", argv[0] );
51                 return 1;
52         }
53
54         if ( ( rc = delete_named_setting ( argv[1] ) ) != 0 ) {
55                 printf ( "Could not clear \"%s\": %s\n",
56                          argv[1], strerror ( rc ) );
57                 return 1;
58         }
59         
60         return 0;
61 }
62
63 struct command nvo_commands[] __command = {
64         {
65                 .name = "show",
66                 .exec = show_exec,
67         },
68         {
69                 .name = "set",
70                 .exec = set_exec,
71         },      
72         {
73                 .name = "clear",
74                 .exec = clear_exec,
75         },
76 };