|
|
1.1 misho 1: #include "global.h"
2: #include "cmds.h"
3: #include "image.h"
4:
5:
6: linebuffer_t *line;
7: struct tagMtd mtd;
8: char image[MAXPATHLEN];
9: int imgfd;
10: size_t imgsiz;
11:
12:
13: void
14: Usage()
15: {
16: printf( " -= FWMAKER =- Firmware maker software ver.%s\n"
17: " (C)`25 ELWIX by Michael Pounov <misho@elwix.org> \n"
18: "==================================================\n"
19: " Syntax: fwmaker [-options] <image> [commands]\n\n"
20: "\t-i\t\t\tPrompt command\n"
21: "\t-d <0xmask>\t\tDebug mode\n"
22: "\t-v\t\t\tVerbose, more -v more verbosity\n"
23: "\t-h\t\t\tHelp, this screen\n", "0.1");
24: }
25:
26: static void
27: prepareCli()
28: {
29: cli_addCommand(line, "image", 1, cmd_Image, "image command", "image management");
30: cli_addCommand(line, "mtd", 1, cmd_Mtd, "mtd command", "mtd partition");
31: cli_addCommand(line, "show", 1, cmd_Show, "show command", "shows parameters");
32: }
33:
34: int
35: main(int argc, char **argv)
36: {
37: int ch, imode = 0, ret = 0;
38: char **args, cmdline[BUFSIZ] = { 0 };
39:
40: while ((ch = getopt(argc, argv, "hvid:")) != -1)
41: switch (ch) {
42: case 'i':
43: imode = 42;
44: break;
45: case 'd':
46: e_Debug = strtol(optarg, NULL, 0);
47: break;
48: case 'v':
49: e_incVerbose;
50: break;
51: case 'h':
52: default:
53: Usage();
54: return 1;
55: }
56: argc -= optind;
57: argv += optind;
58: if (!argc) {
59: printf("Error:: image not found!\n");
60: return 1;
61: } else {
62: strlcpy(image, *argv, sizeof image);
63: argc--;
64: argv++;
65:
66: imageOpen(0);
67: }
68:
69: openlog("fwmaker", LOG_PID | LOG_PERROR, LOG_USER);
70:
71: if (imode) {
72: if (!argc) {
73: printf("Error:: missing command line ...\n");
74: imageClose();
75: return 1;
76: } else
77: args = argv;
78: while (*args) {
79: strlcat(cmdline, *args++, sizeof cmdline);
80: strlcat(cmdline, " ", sizeof cmdline);
81: }
82: EVERBOSE(2, "imode: cmdline=%s", cmdline);
83: }
84:
85: line = cliInit(STDIN_FILENO, STDOUT_FILENO, "fwmaker");
86: if (!line) {
87: ELIBERR(cli);
88: imageClose();
89: return 2;
90: } else
91: EDEBUG(ELWIX_DEBUG_IO, "CLI init");
92:
93: prepareCli();
94:
95: if (imode)
96: ret = cliRun(line, cmdline, 0);
97: else
98: ret = cliLoop(line, NULL, -1);
99:
100: cliEnd(line);
101: imageClose();
102: EDEBUG(ELWIX_DEBUG_IO, "CLI end");
103: EDBGS(ELWIX_DEBUG_MEMORY)
104: mpool_dump(NULL, NULL);
105: closelog();
106: return ret;
107: }