[BACK]Return to manpage.c CVS log [TXT][DIR] Up to [cvsweb.bsd.lv] / mandoc

Diff for /mandoc/Attic/manpage.c between version 1.1 and 1.6

version 1.1, 2012/06/08 10:44:52 version 1.6, 2013/12/31 03:41:14
Line 1 
Line 1 
 /*      $Id$ */  /*      $Id$ */
 /*  /*
  * Copyright (c) 2012 Kristaps Dzonsons <kristaps@bsd.lv>   * Copyright (c) 2012 Kristaps Dzonsons <kristaps@bsd.lv>
    * Copyright (c) 2013 Ingo Schwarze <schwarze@openbsd.org>
  *   *
  * Permission to use, copy, modify, and distribute this software for any   * Permission to use, copy, modify, and distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above   * purpose with or without fee is hereby granted, provided that the above
Line 17 
Line 18 
 #ifdef HAVE_CONFIG_H  #ifdef HAVE_CONFIG_H
 #include "config.h"  #include "config.h"
 #endif  #endif
 #include <sys/param.h>  
   
 #include <assert.h>  #include <assert.h>
 #include <getopt.h>  #include <getopt.h>
   #include <limits.h>
   #include <stdint.h>
 #include <stdio.h>  #include <stdio.h>
 #include <stdlib.h>  #include <stdlib.h>
 #include <string.h>  #include <string.h>
Line 36  main(int argc, char *argv[])
Line 38  main(int argc, char *argv[])
 {  {
         int              ch, term;          int              ch, term;
         size_t           i, sz, len;          size_t           i, sz, len;
           struct mansearch search;
         struct manpage  *res;          struct manpage  *res;
         char            *conf_file, *defpaths, *auxpaths, *cp,          char            *conf_file, *defpaths, *auxpaths, *cp;
                         *arch, *sec;          char             buf[PATH_MAX];
         char             buf[MAXPATHLEN];  
         const char      *cmd;          const char      *cmd;
         struct manpaths  paths;          struct manpaths  paths;
         char            *progname;          char            *progname;
Line 54  main(int argc, char *argv[])
Line 56  main(int argc, char *argv[])
         else          else
                 ++progname;                  ++progname;
   
         auxpaths = defpaths = conf_file = arch = sec = NULL;          auxpaths = defpaths = conf_file = NULL;
         memset(&paths, 0, sizeof(struct manpaths));          memset(&paths, 0, sizeof(struct manpaths));
           memset(&search, 0, sizeof(struct mansearch));
   
         while (-1 != (ch = getopt(argc, argv, "C:M:m:S:s:")))          while (-1 != (ch = getopt(argc, argv, "C:M:m:S:s:")))
                 switch (ch) {                  switch (ch) {
Line 69  main(int argc, char *argv[])
Line 72  main(int argc, char *argv[])
                         auxpaths = optarg;                          auxpaths = optarg;
                         break;                          break;
                 case ('S'):                  case ('S'):
                         arch = optarg;                          search.arch = optarg;
                         break;                          break;
                 case ('s'):                  case ('s'):
                         sec = optarg;                          search.sec = optarg;
                         break;                          break;
                 default:                  default:
                         goto usage;                          goto usage;
Line 84  main(int argc, char *argv[])
Line 87  main(int argc, char *argv[])
         if (0 == argc)          if (0 == argc)
                 goto usage;                  goto usage;
   
           search.deftype = TYPE_Nm | TYPE_Nd;
   
         manpath_parse(&paths, conf_file, defpaths, auxpaths);          manpath_parse(&paths, conf_file, defpaths, auxpaths);
         ch = mansearch(&paths, arch, sec, argc, argv, &res, &sz);          ch = mansearch(&search, &paths, argc, argv, NULL, &res, &sz);
         manpath_free(&paths);          manpath_free(&paths);
   
         if (0 == ch)          if (0 == ch)
Line 102  main(int argc, char *argv[])
Line 107  main(int argc, char *argv[])
   
         for (i = 0; i < sz; i++) {          for (i = 0; i < sz; i++) {
                 printf("%6zu  %s: %s\n",                  printf("%6zu  %s: %s\n",
                         i + 1, res[i].file, res[i].desc);                          i + 1, res[i].names, res[i].desc);
                   free(res[i].names);
                 free(res[i].desc);                  free(res[i].desc);
                   free(res[i].output);
         }          }
   
         if (0 == term) {          if (0 == term) {
                   for (i = 0; i < sz; i++)
                           free(res[i].file);
                 free(res);                  free(res);
                 return(EXIT_SUCCESS);                  return(EXIT_SUCCESS);
         }          }
Line 123  main(int argc, char *argv[])
Line 132  main(int argc, char *argv[])
                 }                  }
   
         if (0 == i) {          if (0 == i) {
                   for (i = 0; i < sz; i++)
                           free(res[i].file);
                 free(res);                  free(res);
                 return(EXIT_SUCCESS);                  return(EXIT_SUCCESS);
         }          }
 show:  show:
         cmd = res[i - 1].form ? "mandoc" : "cat";          cmd = res[i - 1].form ? "mandoc" : "cat";
         strlcpy(buf, res[i - 1].file, MAXPATHLEN);          strlcpy(buf, res[i - 1].file, PATH_MAX);
           for (i = 0; i < sz; i++)
                   free(res[i].file);
         free(res);          free(res);
   
         show(cmd, buf);          show(cmd, buf);

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.6

CVSweb