All pastes #506810 Raw Edit

Someone

public text v1 · immutable
·published 2007-05-24 06:16 UTC
rendered paste body
void scanfile (FILE *infile, char *filename, listmap_ref map, option) {
   int linenr;
   for (linenr = 1;; ++linenr) {
      char buffer[1024];
      char *charptr = fgets (buffer, sizeof buffer, infile);
      listmap_itor_ref itor = NULL;
      if (charptr == NULL) break;
      charptr = strchr (buffer, '\n');
      if (charptr != NULL) {
         *charptr = '\0';
      }else {
         eprintf ("%s: %s: line %d: missing newline\n",
                  exec_name, filename, linenr);
      }
      xprintf ("%s: %d: %s\n", filename, linenr, buffer);
   }
}int main (int argc, char **argv) {

   bool eflag = FALSE;//-e option

   listmap_ref map = NULL;
   exec_name = basename (argv[0]);
   map = new_listmap ();

   opterr = FALSE;
   for(;;){
     int option = getopt(argc, argv, "e");
     if(option == EOF)break;
     switch(option){
     case 'e': eflag = TRUE; break;
     default : eprintf("%s: -%c: invalid option\n", exec_name, optopt);
                        exit_status = EXIT_FAILURE;
     };
   };

   if (argc < 2) {
      scanfile (stdin, stdin_filename, map, option);
   }else {
      int argi;
      for (argi = 1; argi < argc; ++argi) {
         if (strcmp (argv[argi], stdin_filename) == 0) {
            scanfile (stdin, stdin_filename, map, option);
         }else {
            char *filename = argv[argi];
            FILE *infile = fopen (filename, "r");
            if (infile == NULL) {
               eprintf ("%s: %s: %s\n",
                        exec_name, filename, strerror (errno));
            }else {
               scanfile (infile, filename, map, option);
               xfclose (infile);
            }
         };
      };
   };

   return exit_status;
}