Annotation of fwmaker/src/fwmaker.c, revision 1.1.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>