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

Diff for /mandoc/main.c between version 1.319 and 1.325

version 1.319, 2019/03/03 13:02:11 version 1.325, 2019/05/03 16:14:42
Line 21 
Line 21 
 #include <sys/types.h>  #include <sys/types.h>
 #include <sys/ioctl.h>  #include <sys/ioctl.h>
 #include <sys/param.h>  /* MACHINE */  #include <sys/param.h>  /* MACHINE */
 #include <sys/termios.h>  
 #include <sys/wait.h>  #include <sys/wait.h>
   
 #include <assert.h>  #include <assert.h>
Line 40 
Line 39 
 #include <stdint.h>  #include <stdint.h>
 #include <stdlib.h>  #include <stdlib.h>
 #include <string.h>  #include <string.h>
   #include <termios.h>
 #include <time.h>  #include <time.h>
 #include <unistd.h>  #include <unistd.h>
   
Line 125  main(int argc, char *argv[])
Line 125  main(int argc, char *argv[])
         char            *conf_file, *defpaths, *auxpaths;          char            *conf_file, *defpaths, *auxpaths;
         char            *oarg, *tagarg;          char            *oarg, *tagarg;
         unsigned char   *uc;          unsigned char   *uc;
         size_t           i, sz;          size_t           i, sz, ssz;
         int              prio, best_prio;          int              prio, best_prio;
         enum outmode     outmode;          enum outmode     outmode;
         int              fd, startdir;          int              fd, startdir;
Line 355  main(int argc, char *argv[])
Line 355  main(int argc, char *argv[])
                 } else if (argc > 1 &&                  } else if (argc > 1 &&
                     ((uc = (unsigned char *)argv[0]) != NULL) &&                      ((uc = (unsigned char *)argv[0]) != NULL) &&
                     ((isdigit(uc[0]) && (uc[1] == '\0' ||                      ((isdigit(uc[0]) && (uc[1] == '\0' ||
                       (isalpha(uc[1]) && uc[2] == '\0'))) ||                        isalpha(uc[1]))) ||
                      (uc[0] == 'n' && uc[1] == '\0'))) {                       (uc[0] == 'n' && uc[1] == '\0'))) {
                         search.sec = (char *)uc;                          search.sec = (char *)uc;
                         argv++;                          argv++;
Line 411  main(int argc, char *argv[])
Line 411  main(int argc, char *argv[])
                                 res[sz].file = mandoc_strdup(argv[c]);                                  res[sz].file = mandoc_strdup(argv[c]);
                                 res[sz].names = NULL;                                  res[sz].names = NULL;
                                 res[sz].output = NULL;                                  res[sz].output = NULL;
                                   res[sz].bits = 0;
                                 res[sz].ipath = SIZE_MAX;                                  res[sz].ipath = SIZE_MAX;
                                 res[sz].sec = 10;                                  res[sz].sec = 10;
                                 res[sz].form = FORM_SRC;                                  res[sz].form = FORM_SRC;
Line 433  main(int argc, char *argv[])
Line 434  main(int argc, char *argv[])
   
                 if (outmode == OUTMODE_ONE) {                  if (outmode == OUTMODE_ONE) {
                         argc = 1;                          argc = 1;
                         best_prio = 20;                          best_prio = 40;
                 } else if (outmode == OUTMODE_ALL)                  } else if (outmode == OUTMODE_ALL)
                         argc = (int)sz;                          argc = (int)sz;
   
Line 452  main(int argc, char *argv[])
Line 453  main(int argc, char *argv[])
                                 sec = res[i].file;                                  sec = res[i].file;
                                 sec += strcspn(sec, "123456789");                                  sec += strcspn(sec, "123456789");
                                 if (sec[0] == '\0')                                  if (sec[0] == '\0')
                                         continue;                                          continue; /* No section at all. */
                                 prio = sec_prios[sec[0] - '1'];                                  prio = sec_prios[sec[0] - '1'];
                                 if (sec[1] != '/')                                  if (search.sec != NULL) {
                                         prio += 10;                                          ssz = strlen(search.sec);
                                           if (strncmp(sec, search.sec, ssz) == 0)
                                                   sec += ssz;
                                   } else
                                           sec++; /* Prefer without suffix. */
                                   if (*sec != '/')
                                           prio += 10; /* Wrong dir name. */
                                   if (search.sec != NULL &&
                                       (strlen(sec) <= ssz  + 3 ||
                                        strcmp(sec + strlen(sec) - ssz,
                                         search.sec) != 0))
                                           prio += 20; /* Wrong file ext. */
                                 if (prio >= best_prio)                                  if (prio >= best_prio)
                                         continue;                                          continue;
                                 best_prio = prio;                                  best_prio = prio;
Line 761  found:
Line 773  found:
         page->file = file;          page->file = file;
         page->names = NULL;          page->names = NULL;
         page->output = NULL;          page->output = NULL;
           page->bits = NAME_FILE & NAME_MASK;
         page->ipath = ipath;          page->ipath = ipath;
         page->sec = (*sec >= '1' && *sec <= '9') ? *sec - '1' + 1 : 10;          page->sec = (*sec >= '1' && *sec <= '9') ? *sec - '1' + 1 : 10;
         page->form = form;          page->form = form;
Line 797  fs_search(const struct mansearch *cfg, const struct ma
Line 810  fs_search(const struct mansearch *cfg, const struct ma
                 }                  }
                 if (res != NULL && *ressz == lastsz &&                  if (res != NULL && *ressz == lastsz &&
                     strchr(*argv, '/') == NULL) {                      strchr(*argv, '/') == NULL) {
                         if (cfg->sec == NULL)                          if (cfg->arch != NULL &&
                               arch_valid(cfg->arch, OSENUM) == 0)
                                   warnx("Unknown architecture \"%s\".",
                                       cfg->arch);
                           else if (cfg->sec == NULL)
                                 warnx("No entry for %s in the manual.",                                  warnx("No entry for %s in the manual.",
                                     *argv);                                      *argv);
                         else                          else
Line 1157  spawn_pager(struct tag_files *tag_files)
Line 1174  spawn_pager(struct tag_files *tag_files)
         char            *argv[MAX_PAGER_ARGS];          char            *argv[MAX_PAGER_ARGS];
         const char      *pager;          const char      *pager;
         char            *cp;          char            *cp;
   #if HAVE_LESS_T
         size_t           cmdlen;          size_t           cmdlen;
   #endif
         int              argc, use_ofn;          int              argc, use_ofn;
         pid_t            pager_pid;          pid_t            pager_pid;
   
Line 1189  spawn_pager(struct tag_files *tag_files)
Line 1208  spawn_pager(struct tag_files *tag_files)
         /* For less(1), use the tag file. */          /* For less(1), use the tag file. */
   
         use_ofn = 1;          use_ofn = 1;
   #if HAVE_LESS_T
         if ((cmdlen = strlen(argv[0])) >= 4) {          if ((cmdlen = strlen(argv[0])) >= 4) {
                 cp = argv[0] + cmdlen - 4;                  cp = argv[0] + cmdlen - 4;
                 if (strcmp(cp, "less") == 0) {                  if (strcmp(cp, "less") == 0) {
Line 1201  spawn_pager(struct tag_files *tag_files)
Line 1221  spawn_pager(struct tag_files *tag_files)
                         }                          }
                 }                  }
         }          }
   #endif
         if (use_ofn)          if (use_ofn)
                 argv[argc++] = tag_files->ofn;                  argv[argc++] = tag_files->ofn;
         argv[argc] = NULL;          argv[argc] = NULL;

Legend:
Removed from v.1.319  
changed lines
  Added in v.1.325

CVSweb