コード例 #1
0
ファイル: nvram.c プロジェクト: eckyecky/rt-n56u
/* NVRAM utility */
int
main(int argc, char **argv)
{
	char *name, *value;

	/* 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) {
				char buf[1024];
				strncpy(value = buf, *argv, sizeof(buf)-1);
				name = strsep(&value, "=");
				nvram_set(name, value);
			}
		}
		else if (!strncmp(*argv, "unset", 5)) {
			if (*++argv)
				nvram_unset(*argv);
		}
		else if (!strncmp(*argv, "commit", 6)) {
			nvram_commit();
		}
		else if (!strncmp(*argv, "clear", 5)) {
			nvram_clear();
		}
		else if (!strncmp(*argv, "save", 4)) 
		{
			if (*++argv) 
				nvram_save_new(*argv);
		}
		else if (!strncmp(*argv, "restore", 7)) 
		{
			if (*++argv) 
				nvram_restore_new(*argv);
		}
		else if (!strncmp(*argv, "show", 4) || !strncmp(*argv, "getall", 6)) {
			nvram_show_new();
		}
		if (!*argv)
			break;
	}

	return 0;
}
コード例 #2
0
ファイル: main.c プロジェクト: themiron/asuswrt-merlin
/* NVRAM utility */
int
main(int argc, char **argv)
{
	char *name, *value, buf[MAX_NVRAM_SPACE];
	char *tmpbuf;	//Andy Chiu, 2015/06/09
	int size;

	/* Skip program name */
	--argc;
	++argv;

	if (!*argv)
		usage();

	/* Process the arguments */
	for (; *argv; ++argv) {
		if (!strcmp(*argv, "get")) {
			if (*++argv) {
				if ((value = nvram_get(*argv)))
					puts(value);
			}
		} else if (!strcmp(*argv, "set")) {
			if (*++argv) {
				strncpy(value = buf, *argv, sizeof(buf));
				name = strsep(&value, "=");
				nvram_set(name, value);
			}
		} else if (!strcmp(*argv, "unset")) {
			if (*++argv)
				nvram_unset(*argv);
		} else if (!strcmp(*argv, "commit")) {
			nvram_commit();
		} else if (!strcmp(*argv, "save")) {
			if (*++argv)
			{
				nvram_getall(buf, NVRAM_SPACE);
				nvram_save_new(*argv, buf);
			}
		//Andy Chiu, 2015/06/09
		}else if(!strncmp(*argv, "fb_save", 7)) {
			if (*++argv) 
			{
				tmpbuf = malloc(MAX_NVRAM_SPACE);
				if(!tmpbuf)
				{
					fprintf(stderr, "Can NOT alloc memory!!!");
					return 0;
				}				
				nvram_getall(buf, MAX_NVRAM_SPACE);
				memcpy(tmpbuf, buf, MAX_NVRAM_SPACE);
				_secure_conf(tmpbuf);
#if 0
				FILE *fp = fopen("/tmp/var/fb_conf.test", "w");
				if(fp)
				{
					fwrite(tmpbuf, 1, MAX_NVRAM_SPACE, fp);
					fclose(fp);
				}
#endif
				nvram_save_new(*argv, tmpbuf);
				free(tmpbuf);
			}			
		} else if (!strcmp(*argv, "restore")) {
			if (*++argv) 
				nvram_restore_new(*argv, buf);
		} else if (!strcmp(*argv, "erase")) {
			system("nvram_erase");
		} else if (!strcmp(*argv, "show") ||
		           !strcmp(*argv, "dump")) {
			nvram_getall(buf, sizeof(buf));
			for (name = buf; *name; name += strlen(name) + 1)
				puts(name);
			size = sizeof(struct nvram_header) + (int) name - (int) buf;
			if (**argv != 'd')
				fprintf(stderr, "size: %d bytes (%d left)\n",
				        size, MAX_NVRAM_SPACE - size);
		} else
			usage();
	}

	return 0;
}
コード例 #3
0
/* NVRAM utility */
int
main(int argc, char **argv)
{
	char *name, *value, *buf;
	int size;
	char *tmpbuf;	//Andy Chiu, 2015/06/09
#ifdef RTCONFIG_CFE_NVRAM_CHK
	int ret = 0;
	FILE *fp;
#endif

	/* Skip program name */
	--argc;
	++argv;

	if (!*argv) 
		usage();
	
	buf = malloc (MAX_NVRAM_SPACE);
	if (buf == NULL)	{
		perror ("Out of memory!\n");
		return -1;
	}
	
	/* 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, MAX_NVRAM_SPACE);
				name = strsep(&value, "=");
				
#ifdef RTCONFIG_CFE_NVRAM_CHK
				ret = nvram_set(name, value);
				if(ret == 2) {
					fp = fopen("/var/log/cfecommit_ret", "w");
					if(fp!=NULL) {
		                                fprintf(fp,"Illegal nvram\n");
						fclose(fp);
					}
					puts("Illegal nvram format!");
				}
#else
				nvram_set(name, value);
#endif
			}
		}
		else if (!strncmp(*argv, "unset", 5)) {
			if (*++argv)
				nvram_unset(*argv);
		}
		else if (!strncmp(*argv, "commit", 5)) {
			nvram_commit();
		}
		else if (!strncmp(*argv, "save", 4)) 
		{
			if (*++argv) 
			{
				nvram_getall(buf, MAX_NVRAM_SPACE);
				nvram_save_new(*argv, buf);
			}
			
		}
		//Andy Chiu, 2015/06/09
		else if (!strncmp(*argv, "fb_save", 7))
		{
			if (*++argv)
			{
				tmpbuf = malloc(MAX_NVRAM_SPACE);
				if(!tmpbuf)
				{
					fprintf(stderr, "Can NOT alloc memory!!!");
					return 0;
				}
				nvram_getall(buf, MAX_NVRAM_SPACE);
				memcpy(tmpbuf, buf, MAX_NVRAM_SPACE);
				_secure_conf(tmpbuf);
#if 0
				FILE *fp = fopen("/tmp/var/fb_conf.test", "w");
				if(fp)
				{
					fwrite(tmpbuf, 1, MAX_NVRAM_SPACE, fp);
					fclose(fp);
				}
#endif
				nvram_save_new(*argv, tmpbuf);
				free(tmpbuf);
			}
		}
		else if (!strncmp(*argv, "restore", 7)) 
		{
			if (*++argv) 
			{
				nvram_restore_new(*argv, buf);
			}
			
		}
		else if (!strncmp(*argv, "show", 4) || !strncmp(*argv, "getall", 6)) {
			nvram_getall(buf, MAX_NVRAM_SPACE);
			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, MAX_NVRAM_SPACE - size);
		}
		if (!*argv)
			break;
	}

	if (buf != NULL)
		free (buf);
	return 0;
}