10 static nvram_handle_t
* nvram_open_rdonly(void)
12 const char *file
= nvram_find_staging();
15 file
= nvram_find_mtd();
18 return nvram_open(file
, NVRAM_RO
);
23 static nvram_handle_t
* nvram_open_staging(void)
25 if( nvram_find_staging() != NULL
|| nvram_to_staging() == 0 )
26 return nvram_open(NVRAM_STAGING
, NVRAM_RW
);
31 static int do_show(nvram_handle_t
*nvram
)
36 if( (t
= nvram_getall(nvram
)) != NULL
)
40 printf("%s=%s\n", t
->name
, t
->value
);
50 static int do_get(nvram_handle_t
*nvram
, const char *var
)
55 if( (val
= nvram_get(nvram
, var
)) != NULL
)
64 static int do_unset(nvram_handle_t
*nvram
, const char *var
)
66 return nvram_unset(nvram
, var
);
69 static int do_set(nvram_handle_t
*nvram
, const char *pair
)
71 char *val
= strstr(pair
, "=");
72 char var
[strlen(pair
)];
77 memset(var
, 0, sizeof(var
));
78 strncpy(var
, pair
, (int)(val
-pair
));
79 stat
= nvram_set(nvram
, var
, (char *)(val
+ 1));
86 int main( int argc
, const char *argv
[] )
88 nvram_handle_t
*nvram
;
94 /* Ugly... iterate over arguments to see whether we can expect a write */
95 for( i
= 1; i
< argc
; i
++ )
96 if( ( !strcmp(argv
[i
], "set") && ++i
< argc
) ||
97 ( !strcmp(argv
[i
], "unset") && ++i
< argc
) ||
98 !strcmp(argv
[i
], "commit") )
105 if( (nvram
= write
? nvram_open_staging() : nvram_open_rdonly()) != NULL
)
107 for( i
= 1; i
< argc
; i
++ )
109 if( !strcmp(argv
[i
], "show") )
111 stat
= do_show(nvram
);
113 else if( !strcmp(argv
[i
], "get") && ++i
< argc
)
115 stat
= do_get(nvram
, argv
[i
]);
117 else if( !strcmp(argv
[i
], "unset") && ++i
< argc
)
119 stat
= do_unset(nvram
, argv
[i
]);
121 else if( !strcmp(argv
[i
], "set") && ++i
< argc
)
123 stat
= do_set(nvram
, argv
[i
]);
125 else if( !strcmp(argv
[i
], "commit") )
134 " nvram get variable\n"
135 " nvram set variable=value [set ...]\n"
136 " nvram unset variable [unset ...]\n"
145 stat
= nvram_commit(nvram
);
150 stat
= staging_to_nvram();