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

Diff for /mandoc/preconv.c between version 1.4 and 1.7

version 1.4, 2011/05/26 21:13:07 version 1.7, 2014/08/10 23:54:41
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.
  */   */
 #ifdef HAVE_CONFIG_H  
 #include "config.h"  #include "config.h"
 #endif  
   
   #include <sys/types.h>
   #ifdef HAVE_MMAP
 #include <sys/stat.h>  #include <sys/stat.h>
 #include <sys/mman.h>  #include <sys/mman.h>
   #endif
   
 #include <assert.h>  #include <assert.h>
 #include <fcntl.h>  #include <fcntl.h>
Line 30 
Line 31 
   
 /*  /*
  * The read_whole_file() and resize_buf() functions are copied from   * The read_whole_file() and resize_buf() functions are copied from
  * read.c, including all dependency code (MAP_FILE, etc.).   * read.c, including all dependency code.
  */   */
   
 #ifndef MAP_FILE  
 #define MAP_FILE        0  
 #endif  
   
 enum    enc {  enum    enc {
         ENC_UTF_8, /* UTF-8 */          ENC_UTF_8, /* UTF-8 */
         ENC_US_ASCII, /* US-ASCII */          ENC_US_ASCII, /* US-ASCII */
Line 244  static int
Line 241  static int
 read_whole_file(const char *f, int fd,  read_whole_file(const char *f, int fd,
                 struct buf *fb, int *with_mmap)                  struct buf *fb, int *with_mmap)
 {  {
         struct stat      st;  
         size_t           off;          size_t           off;
         ssize_t          ssz;          ssize_t          ssz;
   
   #ifdef  HAVE_MMAP
           struct stat      st;
         if (-1 == fstat(fd, &st)) {          if (-1 == fstat(fd, &st)) {
                 perror(f);                  perror(f);
                 return(0);                  return(0);
Line 268  read_whole_file(const char *f, int fd, 
Line 266  read_whole_file(const char *f, int fd, 
         if (S_ISREG(st.st_mode)) {          if (S_ISREG(st.st_mode)) {
                 *with_mmap = 1;                  *with_mmap = 1;
                 fb->sz = (size_t)st.st_size;                  fb->sz = (size_t)st.st_size;
                 fb->buf = mmap(NULL, fb->sz, PROT_READ,                  fb->buf = mmap(NULL, fb->sz, PROT_READ, MAP_SHARED, fd, 0);
                                 MAP_FILE|MAP_SHARED, fd, 0);  
                 if (fb->buf != MAP_FAILED)                  if (fb->buf != MAP_FAILED)
                         return(1);                          return(1);
         }          }
   #endif
   
         /*          /*
          * If this isn't a regular file (like, say, stdin), then we must           * If this isn't a regular file (like, say, stdin), then we must
Line 510  main(int argc, char *argv[])
Line 508  main(int argc, char *argv[])
   
         rc = EXIT_SUCCESS;          rc = EXIT_SUCCESS;
 out:  out:
   #ifdef  HAVE_MMAP
         if (map)          if (map)
                 munmap(b.buf, b.sz);                  munmap(b.buf, b.sz);
         else          else
   #endif
                 free(b.buf);                  free(b.buf);
   
         if (fd > STDIN_FILENO)          if (fd > STDIN_FILENO)

Legend:
Removed from v.1.4  
changed lines
  Added in v.1.7

CVSweb