亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? wrapper.c

?? samba-3.0.22.tar.gz 編譯smb服務器的源碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
int symlink(const char *topath, const char *frompath){	int p1, p2;                check_init("symlink");        	p1 = smbw_path((char *) topath); 	p2 = smbw_path((char *) frompath); 	if (p1 || p2) {		/* can't handle symlinks */		errno = EPERM;		return -1;	}                return (* smbw_libc.symlink)((char *) topath, (char *) frompath);}int dup(int fd){        check_init("dup");        	if (smbw_fd(fd)) {		return smbw_dup(fd);	}                return (* smbw_libc.dup)(fd);}int dup2(int oldfd, int newfd){        check_init("dup2");        	if (smbw_fd(newfd)) {		(* smbw_libc.close)(newfd);	}        	if (smbw_fd(oldfd)) {		return smbw_dup2(oldfd, newfd);	}                return (* smbw_libc.dup2)(oldfd, newfd);}DIR *opendir(const char *name){        check_init("opendir");        	if (smbw_path((char *) name)) {		return (void *)smbw_opendir((char *) name);	}                return (* smbw_libc.opendir)((char *) name);}struct dirent *readdir(DIR *dir){        check_init("readdir");        	if (smbw_dirp(dir)) {                static struct dirent external;                struct SMBW_dirent * internal = (void *)smbw_readdir(dir);                if (internal != NULL) {                        dirent_convert(internal, &external);                        return &external;                }                return NULL;	}        return (* smbw_libc.readdir)(dir);}int closedir(DIR *dir){        check_init("closedir");        	if (smbw_dirp(dir)) {		return smbw_closedir(dir);	}                return (* smbw_libc.closedir)(dir);}long telldir(DIR *dir){        check_init("telldir");        	if (smbw_dirp(dir)) {		return (long) smbw_telldir(dir);	}                return (* smbw_libc.telldir)(dir);}void seekdir(DIR *dir, long offset){        check_init("seekdir");        	if (smbw_dirp(dir)) {		smbw_seekdir(dir, (long long) offset);		return;	}                (* smbw_libc.seekdir)(dir, offset);}int creat(const char *path, mode_t mode){	extern int creat_bits;                check_init("creat");	return openx((char *) path, creat_bits, mode, smbw_libc.open);}int creat64(const char *path, mode_t mode){	extern int creat_bits;                check_init("creat64");	return openx((char *) path, creat_bits, mode, smbw_libc.open64);}int __xstat64 (int ver, const char *name, struct stat64 *st64){        check_init("__xstat64");        	if (smbw_path((char *) name)) {                struct SMBW_stat statbuf;		int ret = smbw_stat((char *) name, &statbuf);		stat64_convert(&statbuf, st64);		return ret;	}                return (* smbw_libc.__xstat64)(ver, (char *) name, st64);}int stat64(const char *name, struct stat64 *st64){        check_init("stat64");        	if (smbw_path((char *) name)) {                struct SMBW_stat statbuf;		int ret = smbw_stat((char *) name, &statbuf);		stat64_convert(&statbuf, st64);		return ret;	}                return (* smbw_libc.stat64)((char *) name, st64);}int __fxstat64(int ver, int fd, struct stat64 *st64){        check_init("__fxstat64");        	if (smbw_fd(fd)) {                struct SMBW_stat statbuf;		int ret = smbw_fstat(fd, &statbuf);		stat64_convert(&statbuf, st64);		return ret;	}                return (* smbw_libc.__fxstat64)(ver, fd, st64);}int fstat64(int fd, struct stat64 *st64){        check_init("fstat64");        	if (smbw_fd(fd)) {                struct SMBW_stat statbuf;		int ret = smbw_fstat(fd, &statbuf);		stat64_convert(&statbuf, st64);		return ret;	}                return (* smbw_libc.fstat64)(fd, st64);}int __lxstat64(int ver, const char *name, struct stat64 *st64){        check_init("__lxstat64");        	if (smbw_path((char *) name)) {                struct SMBW_stat statbuf;		int ret = smbw_stat(name, &statbuf);		stat64_convert(&statbuf, st64);		return ret;	}                return (* smbw_libc.__lxstat64)(ver, (char *) name, st64);}int lstat64(const char *name, struct stat64 *st64){        check_init("lstat64");        	if (smbw_path((char *) name)) {                struct SMBW_stat statbuf;		int ret = smbw_stat((char *) name, &statbuf);		stat64_convert(&statbuf, st64);		return ret;	}                return (* smbw_libc.lstat64)((char *) name, st64);}int _llseek(unsigned int fd,  unsigned  long  offset_high, unsigned  long  offset_low,  loff_t  *result, unsigned int whence){        check_init("_llseek");        	if (smbw_fd(fd)) {		*result = lseek(fd, offset_low, whence);                return (*result < 0 ? -1 : 0);	}                return (* smbw_libc._llseek)(fd, offset_high, offset_low, result, whence);}struct dirent64 *readdir64(DIR *dir){        check_init("readdir64");        	if (smbw_dirp(dir)) {                static struct dirent64 external;                struct SMBW_dirent * internal = (void *)smbw_readdir(dir);                if (internal != NULL) {                        dirent64_convert(internal, &external);                        return &external;                }                return NULL;	}                return (* smbw_libc.readdir64)(dir);}int readdir_r(DIR *dir, struct dirent *external, struct dirent **result){        check_init("readdir_r");        	if (smbw_dirp(dir)) {                struct SMBW_dirent internal;                int ret = smbw_readdir_r(dir, &internal, NULL);                if (ret == 0) {                        dirent_convert(&internal, external);                        *result = external;                }		return ret;	}                return (* smbw_libc.readdir_r)(dir, external, result);}int readdir64_r(DIR *dir, struct dirent64 *external, struct dirent64 **result){        check_init("readdir64_r");        	if (smbw_dirp(dir)) {                struct SMBW_dirent internal;                int ret = smbw_readdir_r(dir, &internal, NULL);                if (ret == 0) {                        dirent64_convert(&internal, external);                        *result = external;                }		return ret;	}                return (* smbw_libc.readdir64_r)(dir, external, result);}int fork(void){        check_init("fork");	return smbw_fork();}int setxattr(const char *fname,             const char *name,             const void *value,             size_t size,             int flags){	if (smbw_path(fname)) {		return smbw_setxattr(fname, name, value, size, flags);	}                return (* smbw_libc.setxattr)(fname, name, value, size, flags);}int lsetxattr(const char *fname,              const char *name,              const void *value,              size_t size,              int flags){	if (smbw_path(fname)) {		return smbw_lsetxattr(fname, name, value, size, flags);	}                return (* smbw_libc.lsetxattr)(fname, name, value, size, flags);}int fsetxattr(int fd,              const char *name,              const void *value,              size_t size,              int flags){	if (smbw_fd(fd)) {		return smbw_fsetxattr(fd, name, value, size, flags);	}                return (* smbw_libc.fsetxattr)(fd, name, value, size, flags);}int getxattr(const char *fname,             const char *name,             const void *value,             size_t size){	if (smbw_path(fname)) {		return smbw_getxattr(fname, name, value, size);	}                return (* smbw_libc.getxattr)(fname, name, value, size);}int lgetxattr(const char *fname,              const char *name,              const void *value,              size_t size){	if (smbw_path(fname)) {		return smbw_lgetxattr(fname, name, value, size);	}                return (* smbw_libc.lgetxattr)(fname, name, value, size);}int fgetxattr(int fd,              const char *name,              const void *value,              size_t size){	if (smbw_fd(fd)) {		return smbw_fgetxattr(fd, name, value, size);	}                return (* smbw_libc.fgetxattr)(fd, name, value, size);}int removexattr(const char *fname,                const char *name){	if (smbw_path(fname)) {		return smbw_removexattr(fname, name);	}                return (* smbw_libc.removexattr)(fname, name);}int lremovexattr(const char *fname,                 const char *name){	if (smbw_path(fname)) {		return smbw_lremovexattr(fname, name);	}                return (* smbw_libc.lremovexattr)(fname, name);}int fremovexattr(int fd,                 const char *name){	if (smbw_fd(fd)) {		return smbw_fremovexattr(fd, name);	}                return (* smbw_libc.fremovexattr)(fd, name);}int listxattr(const char *fname,              char *list,              size_t size){	if (smbw_path(fname)) {		return smbw_listxattr(fname, list, size);	}                return (* smbw_libc.listxattr)(fname, list, size);}int llistxattr(const char *fname,               char *list,               size_t size){	if (smbw_path(fname)) {		return smbw_llistxattr(fname, list, size);	}                return (* smbw_libc.llistxattr)(fname, list, size);}int flistxattr(int fd,               char *list,               size_t size){	if (smbw_fd(fd)) {                return smbw_flistxattr(fd, list, size);	}                return (* smbw_libc.flistxattr)(fd, list, size);}/* * We're ending up with a different implementation of malloc() with smbwrapper * than without it.  The one with it does not support returning a non-NULL * pointer from a call to malloc(0), and many apps depend on getting a valid * pointer when requesting zero length (e.g. df, emacs). * * Unfortunately, initializing the smbw_libc[] array via the dynamic link * library (libdl) requires malloc so we can't just do the same type of * mapping to the C library as we do with everything else.  We need to * implement a different way of allocating memory that ensures that the C * library version of malloc() gets used.  This is the only place where we * kludge the code to use an undocumented interface to the C library. * * If anyone can come up with a way to dynamically link to the C library * rather than using this undocumented interface, I'd sure love to hear about * it.  Better yet, if you can figure out where the alternate malloc() * functions are coming from and arrange for them not to be called, that would * be even better.  We should try to avoid wrapping functions that don't * really require it. */void *malloc(size_t size){        void *__libc_malloc(size_t size);        return __libc_malloc(size);}void *calloc(size_t nmemb, size_t size){        void *__libc_calloc(size_t nmemb, size_t size);        return __libc_calloc(nmemb, size);}void *realloc(void *ptr, size_t size){        void *__libc_realloc(void *ptr, size_t size);        return __libc_realloc(ptr, size);}void free(void *ptr){        static int      in_progress = 0;        void __libc_free(void *ptr);                if (in_progress) return;        in_progress = 1;        __libc_free(ptr);        in_progress = 0;}#if 0                           /* SELECT */static struct sigaction user_action[_NSIG];static voidsmbw_sigaction_handler(int signum,                       siginfo_t *info,                       void *context){        /* Our entire purpose for trapping signals is to call this! */        sys_select_signal();                /* Call the user's handler */        if (user_action[signum].sa_handler != SIG_IGN &&            user_action[signum].sa_handler != SIG_DFL &&            user_action[signum].sa_handler != SIG_ERR) {                (* user_action[signum].sa_sigaction)(signum, info, context);        }}/* * Every Samba signal handler must call sys_select_signal() to avoid a race * condition, so we'll take whatever signal handler is currently assigned, * call call sys_select_signal() in addition to their call. */static intdo_select(int n,          fd_set *readfds,          fd_set *writefds,          fd_set *exceptfds,          struct timeval *timeout,          int (* select_fn)(int n,                            fd_set *readfds,                            fd_set *writefds,                            fd_set *exceptfds,                            struct timeval *timeout)){        int i;        int ret;        int saved_errno;        sigset_t sigset;        struct sigaction new_action;                saved_errno = errno;        for (i=1; i<_NSIG; i++) {                sigemptyset(&sigset);                new_action.sa_mask = sigset;                new_action.sa_flags = SA_SIGINFO;                new_action.sa_sigaction = smbw_sigaction_handler;                                if (sigaction(i, &new_action, &user_action[i]) < 0) {                        if (errno != EINVAL) {                                return -1;                        }                }        }        errno = saved_errno;                ret = (* select_fn)(n, readfds, writefds, exceptfds, timeout);        saved_errno = errno;                for (i=0; i<_NSIG; i++) {                (void) sigaction(i, &user_action[i], NULL);        }                errno = saved_errno;        return ret;}intselect(int n,       fd_set *readfds,       fd_set *writefds,       fd_set *exceptfds,       struct timeval *timeout){        check_init("select");                return do_select(n, readfds, writefds, exceptfds,                         timeout, smbw_libc.select);}int_select(int n,        fd_set *readfds,        fd_set *writefds,        fd_set *exceptfds,        struct timeval *timeout){        check_init("_select");                return do_select(n, readfds, writefds, exceptfds,                         timeout, smbw_libc._select);}int__select(int n,         fd_set *readfds,         fd_set *writefds,         fd_set *exceptfds,         struct timeval *timeout){        check_init("__select");                return do_select(n, readfds, writefds, exceptfds,                         timeout, smbw_libc.__select);}#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人性视频网站| 日韩欧美一级二级| 欧美成人乱码一区二区三区| 久久久三级国产网站| 亚洲一区二区精品视频| 国产精品亚洲一区二区三区妖精| 欧洲日韩一区二区三区| 欧美激情中文字幕一区二区| 日本伊人色综合网| 一本大道久久a久久精品综合| 久久精品亚洲国产奇米99| 日韩黄色小视频| 日本久久一区二区| 亚洲女人的天堂| 成人美女视频在线观看18| 欧美xxx久久| 奇米精品一区二区三区在线观看| 91成人国产精品| 亚洲视频香蕉人妖| 成人午夜电影网站| 亚洲国产激情av| 国产91丝袜在线播放0| 久久综合色鬼综合色| 日本美女一区二区| 日韩欧美一区中文| 捆绑调教一区二区三区| 欧美丰满嫩嫩电影| 日韩不卡一二三区| 91精品蜜臀在线一区尤物| 亚洲r级在线视频| 欧美久久一二区| 天天综合日日夜夜精品| 欧美日韩国产美| 午夜日韩在线观看| 日韩一级大片在线| 国内成人精品2018免费看| 欧美精品一区二区精品网| 韩国视频一区二区| 欧美国产亚洲另类动漫| 99久久亚洲一区二区三区青草| 国产精品久久久久久一区二区三区| 成人av资源站| 一级日本不卡的影视| 欧美日韩精品三区| 强制捆绑调教一区二区| 欧美α欧美αv大片| 懂色av一区二区三区免费看| 成人免费一区二区三区在线观看| 99热在这里有精品免费| 一区二区三区鲁丝不卡| 欧美精品视频www在线观看| 寂寞少妇一区二区三区| 欧美国产精品一区| 欧美视频中文字幕| 久久精品国产一区二区三| 国产日韩亚洲欧美综合| 在线日韩一区二区| 精品在线一区二区三区| 国产精品全国免费观看高清 | 久久机这里只有精品| 精品久久久久久久久久久久久久久| 国产乱子伦一区二区三区国色天香| 国产精品三级电影| 欧美精品丝袜中出| 国产91丝袜在线播放九色| 亚洲福中文字幕伊人影院| 久久夜色精品国产欧美乱极品| 99热这里都是精品| 久久精品99国产国产精| 玉米视频成人免费看| 日韩免费电影一区| 欧美中文字幕一区| 国产盗摄一区二区| 日本一区中文字幕| 亚洲女同ⅹxx女同tv| 久久久一区二区| 欧美色图在线观看| 成人午夜私人影院| 免费观看成人鲁鲁鲁鲁鲁视频| 国产精品久久久久久久久久免费看 | 美女视频黄 久久| 中文字幕一区二区三区四区| 91麻豆精品国产91久久久久久 | 一区二区三区**美女毛片| 久久综合色一综合色88| 精品视频一区二区不卡| 大陆成人av片| 麻豆国产一区二区| 亚洲国产婷婷综合在线精品| 国产精品污网站| 精品国产一区二区亚洲人成毛片| 欧洲一区二区三区免费视频| www.欧美.com| 国产精品99久久久久| 美女在线视频一区| 亚洲一区视频在线| 亚洲激情av在线| 亚洲欧洲日韩一区二区三区| 久久久久99精品一区| 欧美va亚洲va在线观看蝴蝶网| 欧美日韩国产首页在线观看| 色悠悠久久综合| 色综合天天性综合| 成人免费看的视频| 成人永久免费视频| 岛国av在线一区| 国产91在线观看丝袜| 国产成人av电影免费在线观看| 激情综合亚洲精品| 久久99精品久久久久久久久久久久 | 9191精品国产综合久久久久久| 91看片淫黄大片一级| av在线一区二区| 99久久99久久精品国产片果冻| 国产成人综合视频| 成人国产免费视频| 99精品国产91久久久久久| 99re亚洲国产精品| 91蝌蚪porny| 在线一区二区视频| 欧美日产国产精品| 日韩欧美黄色影院| 国产亚洲欧美日韩在线一区| 国产网站一区二区| 综合久久给合久久狠狠狠97色| 亚洲乱码日产精品bd| 亚洲电影在线播放| 日韩电影免费一区| 国产乱码精品一区二区三区av | 91精品国产免费| 精品国产sm最大网站免费看 | 日韩欧美综合在线| 久久精品在这里| 亚洲欧美一区二区不卡| 丝袜诱惑亚洲看片| 国内精品写真在线观看| av电影一区二区| 欧美日韩高清一区二区不卡| 欧美一区二区三区播放老司机| 久久影院视频免费| 亚洲欧美经典视频| 免费观看久久久4p| 成年人午夜久久久| 宅男噜噜噜66一区二区66| xfplay精品久久| 最新欧美精品一区二区三区| 日日摸夜夜添夜夜添亚洲女人| 国产自产v一区二区三区c| jvid福利写真一区二区三区| 欧美日韩视频一区二区| 精品国产露脸精彩对白| 一区二区三区精品视频在线| 狠狠色综合日日| 色香蕉成人二区免费| 欧美一区二区视频在线观看2022 | 日韩亚洲欧美一区| 亚洲视频一区二区免费在线观看| 丝袜脚交一区二区| 99久久综合精品| 日韩免费视频线观看| 亚洲激情图片小说视频| 国产一区二区三区| 欧美日韩精品三区| √…a在线天堂一区| 久久国产生活片100| 欧美性videosxxxxx| 欧美国产一区二区| 久久99精品国产麻豆婷婷| 日本二三区不卡| 中文字幕高清一区| 精品系列免费在线观看| 欧美日韩中文另类| 亚洲三级视频在线观看| 国产精品中文字幕欧美| 日韩美女主播在线视频一区二区三区 | 国产片一区二区| 麻豆中文一区二区| 91久久精品日日躁夜夜躁欧美| 国产亚洲精久久久久久| 麻豆91在线看| 制服.丝袜.亚洲.中文.综合| 亚洲精品成人悠悠色影视| 成人午夜精品在线| 久久嫩草精品久久久精品| 秋霞成人午夜伦在线观看| 欧美日韩久久一区| 亚洲一区二区综合| 色中色一区二区| 一区二区三区.www| 在线精品视频一区二区三四| 亚洲啪啪综合av一区二区三区| 成人动漫中文字幕| 国产精品久久久久久久久晋中| 国产丶欧美丶日本不卡视频| 国产喷白浆一区二区三区| 成人性色生活片免费看爆迷你毛片| 久久久久久久综合日本| 国产一区二区免费视频| 久久久国产精华| 高清国产一区二区三区|