#ifdef GDBARG argc = 2; argv[1] = GDBARG; #endif // mnem_init(argv[0]); while (argc >= 2 && *argv[1] == '-') { if (argc >= 2 && strcmp (argv[1], "-h") == 0) { memprintf("usage: i2c [-h] [-d -q -m -f] basename\noptions:\n"); memprintf(" -h help (this message)\n"); memprintf(" -d debug\n"); memprintf(" -q quiet (i.e. C code only)\n"); memprintf(" -m mangle names for safety\n"); memprintf(" -f use imp-style for loops\n"); exit(0); } if (argc >= 2 && strcmp (argv[1], "-d") == 0) { debug_input = TRUE; argc -= 1; argv += 1; } if (argc >= 2 && strcmp (argv[1], "-q") == 0) { opt_c_only = TRUE; argc -= 1; argv += 1; } if (argc >= 2 && strcmp (argv[1], "-m") == 0) { opt_safenames = TRUE; argc -= 1; argv += 1; } if (argc >= 2 && strcmp (argv[1], "-f") == 0) { opt_safeforloop = TRUE; argc -= 1; argv += 1; } } if (argc != 2) { fprintf(stderr, "syntax: i2c [-h] [-d -q -m -f] basename\n"); exit (1); } imp_dirname = malloc(strlen(argv[1])+2); /* heap lossage */ sprintf(imp_dirname, "%s#", argv[1]); cur_impfile = fopen("/dev/stdout", "w"); if ((mkdir(imp_dirname, 0777) < 0) && (errno != 17 /* don't care if it exists already */)) { fprintf(stderr, "i2c: cannot create work directory %s - %s", imp_dirname, strerror(errno)); exit(errno); } sprintf(icode_filename, "%s.icode", argv[1]); icode_file = fopen (icode_filename, "rb"); if (icode_file == NULL) { fprintf(stderr, "i2c: cannot open '%s' - %s\n", icode_filename, strerror (errno)); exit (2); } sprintf(source_filename, "%s.i", argv[1]); source_file = fopen (source_filename, "r"); for (d = 0; d < 255; d++) { cond[d] = "*ERROR*"; rcond[d] = "*ERROR*"; } for (d = 0; d < MAX_LINENOS; d++) { lineno[d] = 0; // linetype[d] = 0; } cond['<'] = "<"; cond['('] = "<="; cond['='] = "=="; cond['#'] = "!="; cond['>'] = ">"; cond[')'] = ">="; rcond['<'] = ">="; rcond['('] = ">"; rcond['='] = "!="; rcond['#'] = "=="; rcond['>'] = "<="; rcond[')'] = "<"; good_cop();