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

Diff for /texi2mdoc/main.c between version 1.35 and 1.39

version 1.35, 2015/02/23 15:09:09 version 1.39, 2015/02/23 20:54:53
Line 14 
Line 14 
  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */   */
   #if defined(__linux__) || defined(__MINT__)
   # define _GNU_SOURCE /* memmem */
   #endif
 #include <sys/mman.h>  #include <sys/mman.h>
 #include <sys/stat.h>  #include <sys/stat.h>
   
Line 532  doignblock(struct texi *p, enum texicmd cmd, 
Line 535  doignblock(struct texi *p, enum texicmd cmd, 
          */           */
         term = memmem(&buf[*pos], sz, end, endsz);          term = memmem(&buf[*pos], sz, end, endsz);
         endpos = NULL == term ? sz :          endpos = NULL == term ? sz :
                 *pos + term - &buf[*pos];                  *pos + (size_t)(term - &buf[*pos]);
         assert(endpos <= sz);          assert(endpos <= sz);
         while (*pos < endpos)          while (*pos < endpos)
                 advance(p, buf, pos);                  advance(p, buf, pos);
Line 664  doverbatim(struct texi *p, enum texicmd cmd, 
Line 667  doverbatim(struct texi *p, enum texicmd cmd, 
          */           */
         term = memmem(&buf[*pos], sz, end, endsz);          term = memmem(&buf[*pos], sz, end, endsz);
         endpos = NULL == term ? sz :          endpos = NULL == term ? sz :
                 *pos + term - &buf[*pos];                  *pos + (size_t)(term - &buf[*pos]);
   
         teximacro(p, "Bd -literal -offset indent");          teximacro(p, "Bd -literal -offset indent");
         assert(endpos <= sz);          assert(endpos <= sz);
Line 1061  dosymbol(struct texi *p, enum texicmd cmd, 
Line 1064  dosymbol(struct texi *p, enum texicmd cmd, 
         case (TEXICMD_SQUIGGLE_RIGHT):          case (TEXICMD_SQUIGGLE_RIGHT):
                 texiputchars(p, "}");                  texiputchars(p, "}");
                 break;                  break;
         case (TEXICMD_TIE):          case (TEXICMD_TEXSYM):
                 texiputchars(p, "TeX");                  texiputchars(p, "TeX");
                 break;                  break;
         case (TEXICMD_TEXSYM):          case (TEXICMD_TIE):
                 texiputchars(p, "\\ ");                  texiputchars(p, "\\ ");
                 break;                  break;
         case (TEXICMD_COLON):          case (TEXICMD_COLON):
Line 1209  dolink(struct texi *p, enum texicmd cmd, 
Line 1212  dolink(struct texi *p, enum texicmd cmd, 
                 break;                  break;
         case (TEXICMD_XREF):          case (TEXICMD_XREF):
                 texiputchars(p, "See Section");                  texiputchars(p, "See Section");
                 teximacroopen(p, "Qq");                  teximacroopen(p, "Dq");
                 break;                  break;
         case (TEXICMD_PXREF):          case (TEXICMD_PXREF):
                 texiputchars(p, "see Section");                  texiputchars(p, "see Section");
                 teximacroopen(p, "Qq");                  teximacroopen(p, "Dq");
                 break;                  break;
         case (TEXICMD_INFOREF):          case (TEXICMD_INFOREF):
                 texiputchars(p, "See Info file node");                  texiputchars(p, "See Info file node");
                 teximacroopen(p, "Qq");                  teximacroopen(p, "Dq");
                 break;                  break;
         default:          default:
                 abort();                  abort();
Line 1355  dosp(struct texi *p, enum texicmd cmd, 
Line 1358  dosp(struct texi *p, enum texicmd cmd, 
         const char *buf, size_t sz, size_t *pos)          const char *buf, size_t sz, size_t *pos)
 {  {
   
         texivspace(p);          if (p->literal)
                   texiputchar(p, '\n');
           else
                   texivspace(p);
         /* FIXME: ignore and parseeoln. */          /* FIXME: ignore and parseeoln. */
         advanceeoln(p, buf, sz, pos, 1);          advanceeoln(p, buf, sz, pos, 1);
 }  }
Line 1631  main(int argc, char *argv[])
Line 1637  main(int argc, char *argv[])
 {  {
         struct texi      texi;          struct texi      texi;
         int              c;          int              c;
         char            *path, *dir;          char            *dirpath, *dir, *ccp;
         const char      *progname, *Idir, *cp;          const char      *progname, *Idir, *cp;
   
         progname = strrchr(argv[0], '/');          progname = strrchr(argv[0], '/');
Line 1656  main(int argc, char *argv[])
Line 1662  main(int argc, char *argv[])
         if (0 == (argc -= optind))          if (0 == (argc -= optind))
                 goto usage;                  goto usage;
   
         if (NULL == (path = strdup(argv[0])))          if (NULL == (dirpath = strdup(argv[0])))
                 texiabort(&texi, NULL);                  texiabort(&texi, NULL);
         else if (NULL == (dir = dirname(path)))          if (NULL == (dir = dirname(dirpath)))
                 texiabort(&texi, NULL);                  texiabort(&texi, NULL);
   
         free(path);  
   
         if (NULL != (cp = strrchr(argv[0], '/')))          if (NULL != (cp = strrchr(argv[0], '/')))
                 texi.title = strdup(cp + 1);                  texi.title = strdup(cp + 1);
         else          else
Line 1670  main(int argc, char *argv[])
Line 1674  main(int argc, char *argv[])
   
         if (NULL == texi.title)          if (NULL == texi.title)
                 texiabort(&texi, NULL);                  texiabort(&texi, NULL);
         else if (NULL != (path = strchr(texi.title, '.')))          else if (NULL != (ccp = strchr(texi.title, '.')))
                 *path = '\0';                  *ccp = '\0';
   
         texi.ign = 1;          texi.ign = 1;
         texi.dirs = parsedirs(&texi, dir, Idir, &texi.dirsz);          texi.dirs = parsedirs(&texi, dir, Idir, &texi.dirsz);
           free(dirpath);
         parsefile(&texi, argv[0], 1);          parsefile(&texi, argv[0], 1);
         /* We shouldn't get here. */          /* We shouldn't get here. */
         texiexit(&texi);          texiexit(&texi);

Legend:
Removed from v.1.35  
changed lines
  Added in v.1.39

CVSweb