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

Diff for /mandoc/mandoc.c between version 1.49 and 1.50

version 1.49, 2011/04/30 10:18:24 version 1.50, 2011/05/14 16:06:09
Line 23 
Line 23 
   
 #include <assert.h>  #include <assert.h>
 #include <ctype.h>  #include <ctype.h>
   #include <errno.h>
   #include <limits.h>
 #include <stdlib.h>  #include <stdlib.h>
 #include <stdio.h>  #include <stdio.h>
 #include <string.h>  #include <string.h>
Line 686  mandoc_getcontrol(const char *cp, int *ppos)
Line 688  mandoc_getcontrol(const char *cp, int *ppos)
         *ppos = pos;          *ppos = pos;
         return(1);          return(1);
 }  }
   
   /*
    * Convert a string to a long that may not be <0.
    * If the string is invalid, or is less than 0, return -1.
    */
   int
   mandoc_strntou(const char *p, size_t sz, int base)
   {
           char             buf[32];
           char            *ep;
           long             v;
   
           if (sz > 31)
                   return(-1);
   
           memcpy(buf, p, sz);
           buf[sz] = '\0';
   
           errno = 0;
           v = strtol(buf, &ep, base);
   
           if (buf[0] == '\0' || *ep != '\0')
                   return(-1);
   
           if ((errno == ERANGE &&
                           (v == LONG_MAX || v == LONG_MIN)) ||
                           (v > INT_MAX || v < 0))
                   return(-1);
   
           return((int)v);
   }
   

Legend:
Removed from v.1.49  
changed lines
  Added in v.1.50

CVSweb