~ubuntu-branches/ubuntu/raring/wxwidgets2.8/raring

« back to all changes in this revision

Viewing changes to src/expat/xmlwf/unixfilemap.c

  • Committer: Package Import Robot
  • Author(s): Stéphane Graber
  • Date: 2012-01-07 13:59:25 UTC
  • mfrom: (1.1.9) (5.1.10 sid)
  • Revision ID: package-import@ubuntu.com-20120107135925-2601miy9ullcon9j
Tags: 2.8.12.1-6ubuntu1
* Resync from Debian, changes that were kept:
  - debian/rules: re-enable mediactrl. This allows libwx_gtk2u_media-2.8 to be
    built, as this is required by some applications (LP: #632984)
  - debian/control: Build-dep on libxt-dev for mediactrl.
  - Patches
    + fix-bashism-in-example
* Add conflict on python-wxgtk2.8 (<< 2.8.12.1-6ubuntu1~) to python-wxversion
  to guarantee upgrade ordering when moving from pycentral to dh_python2.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
2
 
   See the file COPYING for copying permission.
3
 
*/
4
 
 
5
 
#include <sys/types.h>
6
 
#include <sys/mman.h>
7
 
#include <sys/stat.h>
8
 
#include <fcntl.h>
9
 
#include <errno.h>
10
 
#include <string.h>
11
 
#include <stdio.h>
12
 
#include <unistd.h>
13
 
 
14
 
#ifndef MAP_FILE
15
 
#define MAP_FILE 0
16
 
#endif
17
 
 
18
 
#include "filemap.h"
19
 
 
20
 
int
21
 
filemap(const char *name,
22
 
        void (*processor)(const void *, size_t, const char *, void *arg),
23
 
        void *arg)
24
 
{
25
 
  int fd;
26
 
  size_t nbytes;
27
 
  struct stat sb;
28
 
  void *p;
29
 
 
30
 
  fd = open(name, O_RDONLY);
31
 
  if (fd < 0) {
32
 
    perror(name);
33
 
    return 0;
34
 
  }
35
 
  if (fstat(fd, &sb) < 0) {
36
 
    perror(name);
37
 
    close(fd);
38
 
    return 0;
39
 
  }
40
 
  if (!S_ISREG(sb.st_mode)) {
41
 
    close(fd);
42
 
    fprintf(stderr, "%s: not a regular file\n", name);
43
 
    return 0;
44
 
  }
45
 
 
46
 
  nbytes = sb.st_size;
47
 
  p = (void *)mmap((caddr_t)0, (size_t)nbytes, PROT_READ,
48
 
                   MAP_FILE|MAP_PRIVATE, fd, (off_t)0);
49
 
  if (p == (void *)-1) {
50
 
    perror(name);
51
 
    close(fd);
52
 
    return 0;
53
 
  }
54
 
  processor(p, nbytes, name, arg);
55
 
  munmap((caddr_t)p, nbytes);
56
 
  close(fd);
57
 
  return 1;
58
 
}