[Settings] Add settings hierarchy
[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 = fetch_named_setting ( argv[1], buf,
20                                           sizeof ( buf ) ) ) < 0 ){
21                 printf ( "Could not find \"%s\": %s\n",
22                          argv[1], strerror ( rc ) );
23                 return 1;
24         }
25
26         printf ( "%s = %s\n", argv[1], buf );
27         return 0;
28 }
29
30 static int set_exec ( int argc, char **argv ) {
31         int rc;
32
33         if ( argc != 3 ) {
34                 printf ( "Syntax: %s <identifier> <value>\n", argv[0] );
35                 return 1;
36         }
37
38         if ( ( rc = store_named_setting ( argv[1], argv[2] ) ) != 0 ) {
39                 printf ( "Could not set \"%s\"=\"%s\": %s\n",
40                          argv[1], argv[2], strerror ( rc ) );
41                 return 1;
42         }
43
44         return 0;
45 }
46
47 static int clear_exec ( int argc, char **argv ) {
48         int rc;
49
50         if ( argc != 2 ) {
51                 printf ( "Syntax: %s <identifier>\n", argv[0] );
52                 return 1;
53         }
54
55         if ( ( rc = delete_named_setting ( argv[1] ) ) != 0 ) {
56                 printf ( "Could not clear \"%s\": %s\n",
57                          argv[1], strerror ( rc ) );
58                 return 1;
59         }
60         
61         return 0;
62 }
63
64 struct command nvo_commands[] __command = {
65         {
66                 .name = "show",
67                 .exec = show_exec,
68         },
69         {
70                 .name = "set",
71                 .exec = set_exec,
72         },      
73         {
74                 .name = "clear",
75                 .exec = clear_exec,
76         },
77 };