source: freewrt/package/nvram/src/main.c@ 0ea1f3f

freewrt_1_0 freewrt_2_0
Last change on this file since 0ea1f3f was 475ad56, checked in by Waldemar Brodkorb <wbx@…>, 20 years ago

add OpenWrt trunk revision 3830.

git-svn-id: svn://www.freewrt.org/trunk/freewrt@1 afb5a338-a214-0410-bd46-81f09a774fd1

  • Property mode set to 100644
File size: 1.9 KB
Line 
1/*
2 * Frontend command-line utility for Linux NVRAM layer
3 *
4 * Copyright 2004, Broadcom Corporation
5 * All Rights Reserved.
6 *
7 * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
8 * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
9 * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
10 * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
11 *
12 * $Id: main.c 3089 2006-01-31 15:22:43Z wbx $
13 */
14
15#include <stdio.h>
16#include <stdlib.h>
17#include <string.h>
18
19#include <typedefs.h>
20#include <bcmnvram.h>
21
22static void
23usage(void)
24{
25 fprintf(stderr, "usage: nvram [get name] [set name=value] [unset name] [show]\n");
26 exit(0);
27}
28
29/* hack for some PMON default nvram values which have '\r' appended */
30void
31puts_trim_cr(char *str)
32{
33 int len= strlen(str);
34 if (len && (str[len-1] == '\r')) len--;
35 printf("%.*s\n", len, str);
36}
37
38/* NVRAM utility */
39int
40main(int argc, char **argv)
41{
42 char *name, *value, buf[NVRAM_SPACE];
43 int size;
44
45 /* Skip program name */
46 --argc;
47 ++argv;
48
49 if (!*argv)
50 usage();
51
52 /* Process the remaining arguments. */
53 for (; *argv; argv++) {
54 if (!strncmp(*argv, "get", 3)) {
55 if (*++argv) {
56 if ((value = nvram_get(*argv))) {
57 puts_trim_cr(value);
58 }
59 }
60 }
61 else if (!strncmp(*argv, "set", 3)) {
62 if (*++argv) {
63 strncpy(value = buf, *argv, sizeof(buf));
64 name = strsep(&value, "=");
65 nvram_set(name, value);
66 }
67 }
68 else if (!strncmp(*argv, "unset", 5)) {
69 if (*++argv)
70 nvram_unset(*argv);
71 }
72 else if (!strncmp(*argv, "commit", 5)) {
73 nvram_commit();
74 }
75 else if (!strncmp(*argv, "show", 4) ||
76 !strncmp(*argv, "getall", 6)) {
77 nvram_getall(buf, sizeof(buf));
78 for (name = buf; *name; name += strlen(name) + 1)
79 puts_trim_cr(name);
80 size = sizeof(struct nvram_header) + (int) name - (int) buf;
81 fprintf(stderr, "size: %d bytes (%d left)\n", size, NVRAM_SPACE - size);
82 }
83 if (!*argv)
84 break;
85 }
86
87 return 0;
88}
Note: See TracBrowser for help on using the repository browser.