diff options
Diffstat (limited to 'riemann.fmi.uni-sofia.bg/programs/nlogin-0.3-pre/__prepare_parse.c')
| -rw-r--r-- | riemann.fmi.uni-sofia.bg/programs/nlogin-0.3-pre/__prepare_parse.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/riemann.fmi.uni-sofia.bg/programs/nlogin-0.3-pre/__prepare_parse.c b/riemann.fmi.uni-sofia.bg/programs/nlogin-0.3-pre/__prepare_parse.c new file mode 100644 index 0000000..1cf86a4 --- /dev/null +++ b/riemann.fmi.uni-sofia.bg/programs/nlogin-0.3-pre/__prepare_parse.c @@ -0,0 +1,22 @@ +#include <sys/types.h> +#include <unistd.h> +#include <fcntl.h> +#include <sys/mman.h> +#include "parselib.h" + +void __prepare_parse(const char* filename,struct state* s) /*EXTRACT_INCL*/{ + int fd; + s->cur=0; + if (s->buffirst) return; /* already mapped */ + fd=open(filename,O_RDONLY); + if (fd>=0) { + s->buflen=lseek(fd,0,SEEK_END); + s->buffirst=mmap(0,s->buflen,PROT_READ,MAP_PRIVATE,fd,0); + if (s->buffirst==(const char*)-1) + s->buffirst=0; + close(fd); + } else { + s->buflen=0; + s->buffirst=0; + } +} |
