diff options
Diffstat (limited to 'target/linux/package/nvram/src/main.c')
| -rw-r--r-- | target/linux/package/nvram/src/main.c | 78 | 
1 files changed, 78 insertions, 0 deletions
| diff --git a/target/linux/package/nvram/src/main.c b/target/linux/package/nvram/src/main.c new file mode 100644 index 000000000..a64430f7b --- /dev/null +++ b/target/linux/package/nvram/src/main.c @@ -0,0 +1,78 @@ +/* + * Frontend command-line utility for Linux NVRAM layer + * + * Copyright 2004, Broadcom Corporation + * All Rights Reserved. + *  + * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY + * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM + * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE. + * + * $Id$ + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include <typedefs.h> +#include <bcmnvram.h> + +static void +usage(void) +{ +	fprintf(stderr, "usage: nvram [get name] [set name=value] [unset name] [show]\n"); +	exit(0); +} + +/* NVRAM utility */ +int +main(int argc, char **argv) +{ +	char *name, *value, buf[NVRAM_SPACE]; +	int size; + +	/* Skip program name */ +	--argc; +	++argv; + +	if (!*argv)  +		usage(); + +	/* Process the remaining arguments. */ +	for (; *argv; argv++) { +		if (!strncmp(*argv, "get", 3)) { +			if (*++argv) { +				if ((value = nvram_get(*argv))) +					puts(value); +			} +		} +		else if (!strncmp(*argv, "set", 3)) { +			if (*++argv) { +				strncpy(value = buf, *argv, sizeof(buf)); +				name = strsep(&value, "="); +				nvram_set(name, value); +			} +		} +		else if (!strncmp(*argv, "unset", 5)) { +			if (*++argv) +				nvram_unset(*argv); +		} +		else if (!strncmp(*argv, "commit", 5)) { +			nvram_commit(); +		} +		else if (!strncmp(*argv, "show", 4) || +			   !strncmp(*argv, "getall", 6)) { +			nvram_getall(buf, sizeof(buf)); +			for (name = buf; *name; name += strlen(name) + 1) +				puts(name); +			size = sizeof(struct nvram_header) + (int) name - (int) buf; +			fprintf(stderr, "size: %d bytes (%d left)\n", size, NVRAM_SPACE - size); +		} +		if (!*argv) +			break; +	} + +	return 0; +}	 | 
