Annotation of fwmaker/src/fwmaker.c, revision 1.1
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: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>