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

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

?? smbw_dir.c

?? samba-3.0.22.tar.gz 編譯smb服務器的源碼
?? C
字號:
/*    Unix SMB/Netbios implementation.   Version 2.0   SMB wrapper directory functions   Copyright (C) Andrew Tridgell 1998   Copyright (C) Derrell Lipman 2003-2005      This program is free software; you can redistribute it and/or modify   it under the terms of the GNU General Public License as published by   the Free Software Foundation; either version 2 of the License, or   (at your option) any later version.      This program is distributed in the hope that it will be useful,   but WITHOUT ANY WARRANTY; without even the implied warranty of   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the   GNU General Public License for more details.      You should have received a copy of the GNU General Public License   along with this program; if not, write to the Free Software   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.*/#include "smbw.h"#include "bsd-strlfunc.h"/***************************************************** determine if a directory handle is a smb one*******************************************************/int smbw_dirp(DIR * dirp){        return ((char *) dirp >= (char *) smbw_fd_map &&                (char *) dirp < (char *) &smbw_fd_map[__FD_SETSIZE] &&                *(int *) dirp != -1);}/***************************************************** a wrapper for getdents()*******************************************************/int smbw_getdents(unsigned int fd_smbw,                  struct SMBW_dirent *dirent_external,                  int count){        int remaining;        int fd_client = smbw_fd_map[fd_smbw];        struct smbc_dirent *dirent_internal;        for (remaining = count;             remaining > sizeof(struct SMBW_dirent);             dirent_external++) {                /*                 * We do these one at a time because there's otherwise no way                 * to limit how many smbc_getdents() will return for us, and                 * if it returns too many, it also doesn't give us offsets to                 * be able to seek back to where we need to be.  In practice,                 * this one-at-a-time retrieval isn't a problem because the                 * time-consuming network transaction is all done at                 * smbc_opendir() time.                 */                dirent_internal = smbc_readdir(fd_client);                if (dirent_internal == NULL) {                        break;                }                remaining -= sizeof(struct SMBW_dirent);                dirent_external->d_ino = -1; /* not supported */		dirent_external->d_off = smbc_telldir(fd_client);		dirent_external->d_reclen = sizeof(struct SMBW_dirent);                dirent_external->d_type = dirent_internal->smbc_type;                smbw_strlcpy(dirent_external->d_name,                             dirent_internal->name,                             sizeof(dirent_external->d_name) - 1);                smbw_strlcpy(dirent_external->d_comment,                             dirent_internal->comment,                             sizeof(dirent_external->d_comment) - 1);	}	return(count - remaining);}/***************************************************** a wrapper for chdir()*******************************************************/int smbw_chdir(const char *name){        int simulate;        struct stat statbuf;        char path[PATH_MAX];        char *p;	SMBW_INIT();	if (!name) {		errno = EINVAL;                return -1;	}	if (! smbw_path((char *) name)) {		if ((* smbw_libc.chdir)(name) == 0) {                        *smbw_cwd = '\0';                        return 0;		}                return -1;	}        smbw_fix_path(name, path);        /* ensure it exists */        p = path + 6;           /* look just past smb:// */        simulate = (strchr(p, '/') == NULL);        /* special case for full-network scan, workgroups, and servers */        if (! simulate) {                        if (smbc_stat(path, &statbuf) < 0) {                return -1;            }                        /* ensure it's a directory */            if (! S_ISDIR(statbuf.st_mode)) {                errno = ENOTDIR;                return -1;            }        }        smbw_strlcpy(smbw_cwd, path, PATH_MAX);	/* we don't want the old directory to be busy */	(* smbw_libc.chdir)("/");	return 0;}/***************************************************** a wrapper for mkdir()*******************************************************/int smbw_mkdir(const char *fname, mode_t mode){        char path[PATH_MAX];	if (!fname) {		errno = EINVAL;		return -1;	}	SMBW_INIT();        smbw_fix_path(fname, path);        return smbc_mkdir(path, mode);}/***************************************************** a wrapper for rmdir()*******************************************************/int smbw_rmdir(const char *fname){        char path[PATH_MAX];	if (!fname) {		errno = EINVAL;		return -1;	}	SMBW_INIT();        smbw_fix_path(fname, path);        return smbc_rmdir(path);}/***************************************************** a wrapper for getcwd()*******************************************************/char *smbw_getcwd(char *buf, size_t size){	SMBW_INIT();        if (*smbw_cwd == '\0') {                return (* smbw_libc.getcwd)(buf, size);        }        if (buf == NULL) {                if (size == 0) {                        size = strlen(smbw_cwd) + 1;                }                buf = malloc(size);                if (buf == NULL) {                        errno = ENOMEM;                        return NULL;                }        }        smbw_strlcpy(buf, smbw_cwd, size);        buf[size-1] = '\0';	return buf;}/***************************************************** a wrapper for fchdir()*******************************************************/int smbw_fchdir(int fd_smbw){        int ret;        SMBW_INIT();        if (! smbw_fd(fd_smbw)) {                ret = (* smbw_libc.fchdir)(fd_smbw);                (void) (* smbw_libc.getcwd)(smbw_cwd, PATH_MAX);                return ret;        }        errno = EACCES;        return -1;}/***************************************************** open a directory on the server*******************************************************/DIR *smbw_opendir(const char *fname){        int fd_client;        int fd_smbw;	char path[PATH_MAX];        DIR * dirp;	SMBW_INIT();	if (!fname) {		errno = EINVAL;		return NULL;	}	fd_smbw = (smbw_libc.open)(SMBW_DUMMY, O_WRONLY, 0200);	if (fd_smbw == -1) {		errno = EMFILE;                return NULL;	}        smbw_fix_path(fname, path);        fd_client =  smbc_opendir(path);        if (fd_client < 0) {                (* smbw_libc.close)(fd_smbw);                return NULL;        }        smbw_fd_map[fd_smbw] = fd_client;        smbw_ref(fd_client, SMBW_RCT_Increment);        dirp = (DIR *) &smbw_fd_map[fd_smbw];        return dirp;}/***************************************************** read one entry from a directory*******************************************************/struct SMBW_dirent *smbw_readdir(DIR *dirp){        int fd_smbw;        int fd_client;        struct smbc_dirent *dirent_internal;        static struct SMBW_dirent dirent_external;        fd_smbw = (int *) dirp - smbw_fd_map;        fd_client = smbw_fd_map[fd_smbw];	if ((dirent_internal = smbc_readdir(fd_client)) == NULL) {		return NULL;        }         dirent_external.d_ino = -1; /* not supported */        dirent_external.d_off = smbc_telldir(fd_client);        dirent_external.d_reclen = sizeof(struct SMBW_dirent);        dirent_external.d_type = dirent_internal->smbc_type;        smbw_strlcpy(dirent_external.d_name,                     dirent_internal->name,                     sizeof(dirent_external.d_name) - 1);        smbw_strlcpy(dirent_external.d_comment,                     dirent_internal->comment,                     sizeof(dirent_external.d_comment) - 1);	return &dirent_external;}/***************************************************** read one entry from a directory in a reentrant fashionha!  samba is not re-entrant, and neither is thelibsmbclient library*******************************************************/int smbw_readdir_r(DIR *dirp,                   struct SMBW_dirent *__restrict entry,                   struct SMBW_dirent **__restrict result){        SMBW_dirent *dirent;        dirent = smbw_readdir(dirp);        if (dirent != NULL) {                *entry = *dirent;                if (result != NULL) {                        *result = entry;                }                return 0;        }        if (result != NULL) {                *result = NULL;        }	return EBADF;}/***************************************************** close a DIR********************************************************/int smbw_closedir(DIR *dirp){        int fd_smbw = (int *) dirp - smbw_fd_map;        int fd_client = smbw_fd_map[fd_smbw];        (* smbw_libc.close)(fd_smbw);        if (smbw_ref(fd_client, SMBW_RCT_Decrement) > 0) {                return 0;        }        smbw_fd_map[fd_smbw] = -1;        return smbc_closedir(fd_client);}/***************************************************** seek in a directory*******************************************************/void smbw_seekdir(DIR *dirp, long long offset){        int fd_smbw = (int *) dirp - smbw_fd_map;        int fd_client = smbw_fd_map[fd_smbw];        smbc_lseekdir(fd_client, offset);}/***************************************************** current loc in a directory*******************************************************/long long smbw_telldir(DIR *dirp){        int fd_smbw = (int *) dirp - smbw_fd_map;        int fd_client = smbw_fd_map[fd_smbw];        return (long long) smbc_telldir(fd_client);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
麻豆一区二区三区| 国产精品综合视频| 亚洲制服丝袜av| 国产成人免费高清| 国产在线精品一区二区夜色| 视频一区视频二区中文字幕| 亚洲大片免费看| 精品一区二区三区蜜桃| 狠狠色丁香婷婷综合久久片| 成人激情小说乱人伦| 欧美午夜精品久久久久久孕妇| 在线观看91精品国产麻豆| 欧美大片日本大片免费观看| 中文字幕一区二区三区四区| 亚洲一区二区三区视频在线| 国产麻豆日韩欧美久久| 91麻豆自制传媒国产之光| 日韩一区二区在线看片| 国产精品毛片久久久久久久| 首页国产欧美久久| 色婷婷久久综合| 国产精品不卡在线观看| 国产精品1024| 精品久久免费看| 秋霞午夜鲁丝一区二区老狼| 欧美性猛交一区二区三区精品| 国产精品黄色在线观看| 成人一二三区视频| 欧美激情中文字幕| 国产精品小仙女| 欧美极品美女视频| www.成人网.com| 精品日韩一区二区三区免费视频| 爽好多水快深点欧美视频| 欧美主播一区二区三区美女| 日韩三级免费观看| 国产无遮挡一区二区三区毛片日本| 午夜激情一区二区三区| 狠狠色综合日日| 国产馆精品极品| 精品剧情在线观看| 国产成人夜色高潮福利影视| 97久久精品人人做人人爽50路| 欧美精品电影在线播放| 亚洲美女在线国产| 国内精品视频666| 在线观看视频91| 成人激情免费网站| 日日摸夜夜添夜夜添国产精品| 精品夜夜嗨av一区二区三区| 高清视频一区二区| 91精品国产综合久久福利软件| 日韩欧美一二区| 亚洲国产日韩综合久久精品| 欧美午夜不卡视频| 亚洲色图20p| 欧美视频三区在线播放| 久久精品无码一区二区三区| 91精品国产综合久久小美女| 欧美专区亚洲专区| 成人免费视频国产在线观看| 国产精品久久久久久久久免费丝袜 | 在线观看日韩av先锋影音电影院| 亚洲电影一级片| 精品国产凹凸成av人网站| 精品一区二区三区免费播放| 亚洲视频资源在线| 久久亚洲一区二区三区四区| 91官网在线观看| 奇米色一区二区| 午夜一区二区三区在线观看| 中文字幕乱码久久午夜不卡 | 99re66热这里只有精品3直播 | 一区二区三区在线视频观看| 日韩欧美一级二级三级久久久| 色乱码一区二区三区88| 亚洲国产精品麻豆| 中文字幕欧美日本乱码一线二线 | 99久久亚洲一区二区三区青草 | 色哟哟一区二区在线观看| 蜜臀av性久久久久蜜臀aⅴ流畅 | 久久综合九色综合97_久久久 | 免费成人在线网站| 午夜电影网亚洲视频| 亚洲午夜av在线| 一区二区三区精品在线| 天天综合色天天| 午夜精品一区在线观看| 五月激情综合网| 国产在线观看免费一区| 国产91精品在线观看| 国产精品资源在线| 在线一区二区观看| 欧美一区二区二区| 国产精品国产三级国产aⅴ无密码| 国产精品久久久久久妇女6080| 中文字幕国产一区| 亚洲三级在线观看| 麻豆国产精品视频| 欧亚洲嫩模精品一区三区| 精品欧美乱码久久久久久| 国产精品久久网站| 久久国产日韩欧美精品| 欧美主播一区二区三区美女| 久久夜色精品国产噜噜av | 日韩三级中文字幕| 一区av在线播放| 国产九色sp调教91| 在线观看av一区二区| 国产精品天美传媒沈樵| 美女在线观看视频一区二区| 在线视频你懂得一区二区三区| 欧美精品一区二| 麻豆成人av在线| 欧美影视一区二区三区| 一区二区三区在线免费播放| 91在线视频官网| 国产精品每日更新在线播放网址| 国产精品乡下勾搭老头1| 日韩色在线观看| 极品少妇xxxx精品少妇| 日韩一区二区在线观看视频| 亚洲永久免费av| 日韩欧美一区二区免费| 九九热在线视频观看这里只有精品| 8x8x8国产精品| 国产专区欧美精品| 国产精品久久久久久久久晋中| 色天使久久综合网天天| 亚洲福利电影网| 日韩精品资源二区在线| 国产精品91xxx| 日韩高清一区在线| 中文子幕无线码一区tr| 欧美久久久久久久久中文字幕| 蜜桃久久久久久久| 亚洲区小说区图片区qvod| 欧美二区三区91| 成人黄页在线观看| 日日夜夜免费精品| 国产精品国产三级国产有无不卡 | 国产精品天干天干在观线| av一区二区久久| 激情综合亚洲精品| 亚洲电影你懂得| 国产精品久久影院| 国产无一区二区| 亚洲精品一区二区三区香蕉| 国产精品一区二区果冻传媒| 午夜电影一区二区三区| 亚洲激情欧美激情| 欧美激情一区二区三区不卡| 制服.丝袜.亚洲.中文.综合| 欧美综合一区二区三区| 99久久精品免费| 99免费精品在线观看| 免费在线视频一区| 青椒成人免费视频| 日韩综合一区二区| 亚洲综合色噜噜狠狠| 一区二区三区四区在线| 亚洲女女做受ⅹxx高潮| 伊人色综合久久天天人手人婷| 久久久99精品久久| 中文字幕成人在线观看| 亚洲欧美中日韩| 亚洲精品国产一区二区三区四区在线| 中文字幕一区免费在线观看 | 青草av.久久免费一区| 青青草视频一区| 不卡一卡二卡三乱码免费网站| 久久国产精品免费| www.视频一区| 欧美一区二区三区免费视频| 日韩欧美国产一区二区三区 | 精品日韩99亚洲| 国产无一区二区| 日本va欧美va精品发布| 国产精品888| 精品婷婷伊人一区三区三| 久久久久久久久一| 亚洲超碰精品一区二区| 国产在线播放一区二区三区| 91免费看视频| 久久精品一区二区| 亚洲国产综合人成综合网站| 不卡高清视频专区| 久久久亚洲精品一区二区三区| 最新高清无码专区| 成人免费视频caoporn| 欧美电影免费观看高清完整版| 国产精品免费av| 97超碰欧美中文字幕| 久久久亚洲精品一区二区三区| 免费成人美女在线观看.| 欧美精品18+| 韩国一区二区在线观看| 欧美日韩不卡在线| 激情五月婷婷综合网| 日韩欧美三级在线|