主頁面 | 字母順序列表 | 資料結構 | Directories | 檔案列表 | 資料欄位 | 全域資料

f_map.c

查看本檔案說明文件.
00001 #include <stdio.h>
00002 #include <fcntl.h>
00003 #include <sys/stat.h>
00004 #include <sys/mman.h>
00005 
00006 
00007 #ifdef MAP_FILE         /* 44BSD defines this & requires it to mmap files */
00008 #  define DAO_MAP       (MAP_SHARED | MAP_FILE)
00009 #else
00010 #  define DAO_MAP       (MAP_SHARED)
00011 #endif
00012 
00013 
00014 char *
00015 f_map(fpath, fsize)
00016   char *fpath;
00017   int *fsize;
00018 {
00019   int fd, size;
00020   struct stat st;
00021 
00022   if ((fd = open(fpath, O_RDONLY)) < 0)
00023     return (char *) -1;
00024 
00025   if (fstat(fd, &st) || !S_ISREG(st.st_mode) || (size = st.st_size) <= 0)
00026   {
00027     close(fd);
00028     return (char *) -1;
00029   }
00030 
00031   fpath = (char *) mmap(NULL, size, PROT_READ, DAO_MAP, fd, 0);
00032   close(fd);
00033   *fsize = size;
00034   return fpath;
00035 }

產生日期:Sat Oct 22 22:39:29 2005, 專案:MapleBBS-itoc, 產生器:  doxygen 1.4.1