Annotation of fwmaker/src/fwmaker.c, revision 1.2

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

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>