#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();