1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- #include <u.h>
- #include <libc.h>
- void
- erase(char *part)
- {
- char file[256];
- int fd;
- snprint(file, sizeof file, "%sctl", part);
- fd = open(file, ORDWR);
- if(fd < 0)
- return;
- fprint(fd, "erase");
- close(fd);
- }
- char*
- readfile(char *file)
- {
- char buf[512];
- int n, fd;
- uchar *p;
- fd = open(file, OREAD);
- if(fd < 0)
- sysfatal("opening %s: %r", file);
- n = read(fd, buf, sizeof(buf)-1);
- close(fd);
- if(n < 0)
- return "";
- buf[n] = 0;
- for(p = (uchar*)buf; *p; p++)
- if(*p == 0xff){
- *p = 0;
- break;
- }
- return strdup(buf);
- }
- void
- writefile(char *file, char *data)
- {
- int fd;
- fd = open(file, OWRITE);
- if(fd < 0)
- fd = create(file, OWRITE, 0664);
- if(fd < 0)
- return;
- write(fd, data, strlen(data));
- close(fd);
- }
- void
- main(int argc, char **argv)
- {
- int from = 0;
- char *params;
- char *file = "/tmp/tmpparams";
- char *part;
- ARGBEGIN {
- case 'f':
- from++;
- break;
- } ARGEND;
- if(argc)
- part = argv[0];
- else
- part = "/dev/flash/user";
- if(from){
- params = readfile(part);
- writefile(file, params);
- } else {
- params = readfile(file);
- erase(part);
- writefile(part, params);
- free(params);
- }
- }
|