4 Copyright (C) 2006-2009 Jonathan Zarate
11 #define MAX_NVPARSE 255
15 static int print_wlnv(int idx
, int unit
, int subunit
, void *param
)
20 nv
= wl_nvname(k
+ 3, unit
, subunit
);
21 web_printf("\t'%s': '", nv
); // AB multiSSID
22 web_putj(nvram_safe_get(nv
));
28 // <% nvram("x,y,z"); %> -> nvram = {'x': '1','y': '2','z': '3'};
29 void asp_nvram(int argc
, char **argv
)
34 if ((argc
!= 1) || ((list
= strdup(argv
[0])) == NULL
)) return;
35 web_puts("\nnvram = {\n");
37 while ((k
= strsep(&p
, ",")) != NULL
) {
38 if (*k
== 0) continue;
39 if (strcmp(k
, "wl_unit") == 0)
42 web_printf("\t'%s': '", k
); // AB multiSSID
43 web_putj(nvram_safe_get(k
));
46 if (strncmp(k
, "wl_", 3) == 0) {
47 foreach_wif(1, k
, print_wlnv
);
52 web_puts("\t'wl_unit': '"); // AB multiSSID
53 web_putj(nvram_safe_get("wl_unit"));
56 web_puts("\t'http_id': '"); // AB multiSSID
57 web_putj(nvram_safe_get("http_id"));
60 web_puts("\t'web_mx': '"); // AB multiSSID
61 web_putj(nvram_safe_get("web_mx"));
64 web_puts("\t'web_pb': '"); // AB multiSSID
65 web_putj(nvram_safe_get("web_pb"));
69 // <% nvramseq('foo', 'bar%d', 5, 8); %> -> foo = ['a','b','c'];
70 void asp_nvramseq(int argc
, char **argv
)
75 if (argc
!= 4) return;
77 web_printf("\n%s = [\n", argv
[0]);
79 for (i
= atoi(argv
[2]); i
<= e
; ++i
) {
80 snprintf(s
, sizeof(s
), argv
[1], i
);
82 web_putj(nvram_safe_get(s
));
83 web_puts((i
== e
) ? "'" : "',");
88 void asp_nv(int argc
, char **argv
)
91 web_puts(nvram_safe_get(argv
[0]));
95 void asp_nvstat(int argc
, char **argv
)
98 struct nvram_header header
;
99 int part
, size
, used
= 0;
102 if (mtd_getinfo("nvram", &part
, &size
)) {
103 sprintf(s
, MTD_DEV(%dro
), part
);
105 if ((fp
= fopen(s
, "r"))) {
106 if (fseek(fp
, size
>= NVRAM_SPACE
? size
- NVRAM_SPACE
: 0, SEEK_SET
) == 0) {
107 if ((fread(&header
, sizeof(header
), 1, fp
) == 1) &&
108 (header
.magic
== NVRAM_MAGIC
)) {
116 web_printf("\nnvstat = { size: %d, free: %d };\n", NVRAM_SPACE
, NVRAM_SPACE
- used
);