if (i == argc) {
if (argv[i][2] == '\0' && i == argc) {
int main(int argc, char *argv[]){    int i, idlfiles;    IncludePathEntry *inc, *inc_head, **inc_tail;    char *basename = NULL;    ModeData *mode = NULL;    inc_head = xpidl_malloc(sizeof *inc);#ifndef XP_MAC    inc_head->directory = ".";#else    inc_head->directory = "";#endif    inc_head->next = NULL;    inc_tail = &inc_head->next;    for (i = 1; i < argc; i++) {        if (argv[i][0] != '-')            break;        switch (argv[i][1]) {          case '-':            argc++;             /* pretend we didn't see this */            /* fall through */          case 0:               /* - is a legal input filename (stdin)  */            goto done_options;          case 'w':            enable_warnings = TRUE;            break;          case 'v':            verbose_mode = TRUE;            break;          case 's':            emit_js_stub_decls = TRUE;            break;          case 'I':            if (i == argc) {                fputs("ERROR: missing path after -I\n", stderr);                xpidl_usage(argc, argv);                return 1;            }            inc = xpidl_malloc(sizeof *inc);            inc->directory = argv[++i];#ifdef DEBUG_shaver_includes            fprintf(stderr, "adding %s to include path\n", inc->directory);#endif            inc->next = NULL;            *inc_tail = inc;            inc_tail = &inc->next;            break;          case 'o':            if (i == argc) {                fprintf(stderr, "ERROR: missing basename after -o\n");                xpidl_usage(argc, argv);                return 1;            }            basename = argv[i + 1];            i++;            break;          case 'h':             /* legacy stuff, already! */            mode = FindMode("header");            if (!mode) {                xpidl_usage(argc, argv);                return 1;            }            break;          case 'm':            if (i == argc) {                fprintf(stderr, "ERROR: missing modename after -m\n");                xpidl_usage(argc, argv);                return 1;            }            if (mode) {                fprintf(stderr,                        "ERROR: must specify exactly one mode "                        "(first \"%s\", now \"%s\")\n", mode->mode,                        argv[i + 1]);                xpidl_usage(argc, argv);                return 1;            }            mode = FindMode(argv[++i]);            if (!mode) {                fprintf(stderr, "ERROR: unknown mode \"%s\"\n", argv[i]);                xpidl_usage(argc, argv);                return 1;            }            break;          default:            fprintf(stderr, "unknown option %s\n", argv[i]);            xpidl_usage(argc, argv);            return 1;        }    } done_options:    if (!mode) {        fprintf(stderr, "ERROR: must specify output mode\n");        xpidl_usage(argc, argv);        return 1;    }    for (idlfiles = 0; i < argc; i++)        idlfiles += xpidl_process_idl(argv[i], inc_head, basename, mode);    if (!idlfiles)        return 1;    return 0;}