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

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

?? doscalls.c

?? MC Linux/Unix 終端下文件管理器
?? C
字號:
/*    Unix SMB/Netbios implementation.   Version 1.9.   Samba system utilities   Copyright (C) Jeremy Allison 1992-1998      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 "includes.h"/* * Wrappers for calls that need to translate to * DOS/Windows semantics. Note that the pathnames * in all these functions referred to as 'DOS' names * are actually in UNIX path format (ie. '/' instead of * '\' directory separators etc.), but the codepage they * are in is still the client codepage, hence the 'DOS' * name. */extern int DEBUGLEVEL;/******************************************************************* Unlink wrapper that calls dos_to_unix.********************************************************************/int dos_unlink(char *fname){  return(unlink(dos_to_unix(fname,False)));}/******************************************************************* Open() wrapper that calls dos_to_unix.********************************************************************/int dos_open(char *fname,int flags,mode_t mode){  return(sys_open(dos_to_unix(fname,False),flags,mode));}/******************************************************************* Opendir() wrapper that calls dos_to_unix.********************************************************************/DIR *dos_opendir(char *dname){  return(opendir(dos_to_unix(dname,False)));}/******************************************************************* Readdirname() wrapper that calls unix_to_dos.********************************************************************/char *dos_readdirname(DIR *p){  char *dname = readdirname(p);  if (!dname)    return(NULL);   unix_to_dos(dname, True);  return(dname);}/******************************************************************* A chown() wrapper that calls dos_to_unix.********************************************************************/int dos_chown(char *fname, uid_t uid, gid_t gid){  return(sys_chown(dos_to_unix(fname,False),uid,gid));}/******************************************************************* A stat() wrapper that calls dos_to_unix.********************************************************************/int dos_stat(char *fname,SMB_STRUCT_STAT *sbuf){  return(sys_stat(dos_to_unix(fname,False),sbuf));}/******************************************************************* An lstat() that calls dos_to_unix.********************************************************************/int dos_lstat(char *fname,SMB_STRUCT_STAT *sbuf){  return(sys_lstat(dos_to_unix(fname,False),sbuf));}/******************************************************************* Mkdir() that calls dos_to_unix.********************************************************************/int dos_mkdir(char *dname,mode_t mode){  return(mkdir(dos_to_unix(dname,False),mode));}/******************************************************************* Rmdir() - call dos_to_unix.********************************************************************/int dos_rmdir(char *dname){  return(rmdir(dos_to_unix(dname,False)));}/******************************************************************* chdir() - call dos_to_unix.********************************************************************/int dos_chdir(char *dname){  return(chdir(dos_to_unix(dname,False)));}/******************************************************************* Utime() - call dos_to_unix.********************************************************************/int dos_utime(char *fname,struct utimbuf *times){  /* if the modtime is 0 or -1 then ignore the call and     return success */  if (times->modtime == (time_t)0 || times->modtime == (time_t)-1)    return 0;    /* if the access time is 0 or -1 then set it to the modtime */  if (times->actime == (time_t)0 || times->actime == (time_t)-1)    times->actime = times->modtime;     return(utime(dos_to_unix(fname,False),times));}/********************************************************* For rename across filesystems Patch from Warren Birnbaum  <warrenb@hpcvscdp.cv.hp.com>**********************************************************/static int copy_reg(char *source, const char *dest){  SMB_STRUCT_STAT source_stats;  int ifd;  int ofd;  char *buf;  int len;                      /* Number of bytes read into `buf'. */  sys_lstat (source, &source_stats);  if (!S_ISREG (source_stats.st_mode))    return 1;  if (unlink (dest) && errno != ENOENT)    return 1;  if((ifd = sys_open (source, O_RDONLY, 0)) < 0)    return 1;  if((ofd = sys_open (dest, O_WRONLY | O_CREAT | O_TRUNC, 0600)) < 0 )  {    close (ifd);    return 1;  }  if((buf = malloc( COPYBUF_SIZE )) == NULL)  {    close (ifd);      close (ofd);      unlink (dest);    return 1;  }  while ((len = read(ifd, buf, COPYBUF_SIZE)) > 0)  {    if (write_data(ofd, buf, len) < 0)    {      close (ifd);      close (ofd);      unlink (dest);      free(buf);      return 1;    }  }  free(buf);  if (len < 0)  {    close (ifd);    close (ofd);    unlink (dest);    return 1;  }  if (close (ifd) < 0)  {    close (ofd);    return 1;  }  if (close (ofd) < 0)    return 1;  /* chown turns off set[ug]id bits for non-root,     so do the chmod last.  */  /* Try to copy the old file's modtime and access time.  */  {    struct utimbuf tv;    tv.actime = source_stats.st_atime;    tv.modtime = source_stats.st_mtime;    if (utime (dest, &tv))      return 1;  }  /* Try to preserve ownership.  For non-root it might fail, but that's ok.     But root probably wants to know, e.g. if NFS disallows it.  */  if (chown (dest, source_stats.st_uid, source_stats.st_gid)      && (errno != EPERM))    return 1;  if (chmod (dest, source_stats.st_mode & 07777))    return 1;  unlink (source);  return 0;}/******************************************************************* Rename() - call dos_to_unix.********************************************************************/int dos_rename(char *from, char *to){    int rcode;      pstring zfrom, zto;    pstrcpy (zfrom, dos_to_unix (from, False));    pstrcpy (zto, dos_to_unix (to, False));    rcode = rename (zfrom, zto);    if (errno == EXDEV)     {      /* Rename across filesystems needed. */      rcode = copy_reg (zfrom, zto);            }    return rcode;}/******************************************************************* Chmod - call dos_to_unix.********************************************************************/int dos_chmod(char *fname,mode_t mode){  return(chmod(dos_to_unix(fname,False),mode));}/******************************************************************* Getwd - takes a UNIX directory name and returns the name in dos format.********************************************************************/char *dos_getwd(char *unix_path){	char *wd;	wd = sys_getwd(unix_path);	if (wd)		unix_to_dos(wd, True);	return wd;}/******************************************************************* Check if a DOS file exists.********************************************************************/BOOL dos_file_exist(char *fname,SMB_STRUCT_STAT *sbuf){  return file_exist(dos_to_unix(fname, False), sbuf);}/******************************************************************* Check if a DOS directory exists.********************************************************************/BOOL dos_directory_exist(char *dname,SMB_STRUCT_STAT *st){  return directory_exist(dos_to_unix(dname, False), st);}/******************************************************************* Return the modtime of a DOS pathname.********************************************************************/time_t dos_file_modtime(char *fname){  return file_modtime(dos_to_unix(fname, False));}/******************************************************************* Return the file size of a DOS pathname.********************************************************************/SMB_OFF_T dos_file_size(char *file_name){  return file_size(dos_to_unix(file_name, False));}/******************************************************************* A wrapper for dos_chdir().********************************************************************/int dos_ChDir(char *path){  int res;  static pstring LastDir="";  if (strcsequal(path,"."))    return(0);  if (*path == '/' && strcsequal(LastDir,path))    return(0);  DEBUG(3,("dos_ChDir to %s\n",path));  res = dos_chdir(path);  if (!res)    pstrcpy(LastDir,path);  return(res);}/* number of list structures for a caching GetWd function. */#define MAX_GETWDCACHE (50)struct{  SMB_DEV_T dev; /* These *must* be compatible with the types returned in a stat() call. */  SMB_INO_T inode; /* These *must* be compatible with the types returned in a stat() call. */  char *dos_path; /* The pathname in DOS format. */  BOOL valid;} ino_list[MAX_GETWDCACHE];BOOL use_getwd_cache=True;/**************************************************************************** Prompte a ptr (to make it recently used)****************************************************************************/static void array_promote(char *array,int elsize,int element){  char *p;  if (element == 0)    return;  p = (char *)malloc(elsize);  if (!p)    {      DEBUG(5,("Ahh! Cannot malloc\n"));      return;    }  memcpy(p,array + element * elsize, elsize);  memmove(array + elsize,array,elsize*element);  memcpy(array,p,elsize);  free(p);}/******************************************************************* Return the absolute current directory path - given a UNIX pathname. Note that this path is returned in DOS format, not UNIX format.********************************************************************/char *dos_GetWd(char *path){  pstring s;  static BOOL getwd_cache_init = False;  SMB_STRUCT_STAT st, st2;  int i;  *s = 0;  if (!use_getwd_cache)    return(dos_getwd(path));  /* init the cache */  if (!getwd_cache_init)  {    getwd_cache_init = True;    for (i=0;i<MAX_GETWDCACHE;i++)    {      string_init(&ino_list[i].dos_path,"");      ino_list[i].valid = False;    }  }  /*  Get the inode of the current directory, if this doesn't work we're      in trouble :-) */  if (sys_stat(".",&st) == -1)  {    DEBUG(0,("Very strange, couldn't stat \".\"\n"));    return(dos_getwd(path));  }  for (i=0; i<MAX_GETWDCACHE; i++)    if (ino_list[i].valid)    {      /*  If we have found an entry with a matching inode and dev number          then find the inode number for the directory in the cached string.          If this agrees with that returned by the stat for the current          directory then all is o.k. (but make sure it is a directory all          the same...) */      if (st.st_ino == ino_list[i].inode &&          st.st_dev == ino_list[i].dev)      {        if (dos_stat(ino_list[i].dos_path,&st2) == 0)        {          if (st.st_ino == st2.st_ino &&              st.st_dev == st2.st_dev &&              (st2.st_mode & S_IFMT) == S_IFDIR)          {            pstrcpy (path, ino_list[i].dos_path);            /* promote it for future use */            array_promote((char *)&ino_list[0],sizeof(ino_list[0]),i);            return (path);          }          else          {            /*  If the inode is different then something's changed,                scrub the entry and start from scratch. */            ino_list[i].valid = False;          }        }      }    }  /*  We don't have the information to hand so rely on traditional methods.      The very slow getcwd, which spawns a process on some systems, or the      not quite so bad getwd. */  if (!dos_getwd(s))  {    DEBUG(0,("dos_GetWd: dos_getwd call failed, errno %s\n",strerror(errno)));    return (NULL);  }  pstrcpy(path,s);  DEBUG(5,("dos_GetWd %s, inode %.0f, dev %.0f\n",s,(double)st.st_ino,(double)st.st_dev));  /* add it to the cache */  i = MAX_GETWDCACHE - 1;  string_set(&ino_list[i].dos_path,s);  ino_list[i].dev = st.st_dev;  ino_list[i].inode = st.st_ino;  ino_list[i].valid = True;  /* put it at the top of the list */  array_promote((char *)&ino_list[0],sizeof(ino_list[0]),i);  return (path);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
大胆欧美人体老妇| 亚洲第一电影网| 国产成人免费网站| 精品国产不卡一区二区三区| 日本网站在线观看一区二区三区| 欧美精品第一页| 男男视频亚洲欧美| 精品对白一区国产伦| 国产很黄免费观看久久| 国产精品福利电影一区二区三区四区| 国产v日产∨综合v精品视频| 国产精品久久三区| 欧美日韩精品电影| 久久精品国产亚洲一区二区三区| 久久综合精品国产一区二区三区| 国产成人aaa| 亚洲精品高清在线| 欧美一区二区性放荡片| 国产毛片精品视频| 伊人开心综合网| 91精品国产综合久久精品麻豆| 日本少妇一区二区| 国产日韩欧美精品电影三级在线| 99久久精品国产一区| 视频一区二区欧美| 久久亚洲捆绑美女| 在线日韩一区二区| 蜜桃视频一区二区三区在线观看| 国产视频一区在线观看| 色av一区二区| 国内偷窥港台综合视频在线播放| 中文字幕在线观看一区| 在线电影欧美成精品| 国产传媒日韩欧美成人| 亚洲国产成人精品视频| 欧美mv和日韩mv国产网站| 91在线你懂得| 麻豆精品久久精品色综合| 国产精品三级av| 欧美一区二区三区免费观看视频| 东方aⅴ免费观看久久av| 日韩中文字幕区一区有砖一区| 国产女人18水真多18精品一级做| 欧美性大战久久久| 国产+成+人+亚洲欧洲自线| 偷窥国产亚洲免费视频| 国产精品精品国产色婷婷| 欧美一级二级三级蜜桃| 日本丰满少妇一区二区三区| 国产精品白丝jk白祙喷水网站| 亚洲1区2区3区4区| 亚洲免费av在线| 国产亲近乱来精品视频 | 日韩精品亚洲一区二区三区免费| 久久亚洲私人国产精品va媚药| 欧美福利一区二区| 色婷婷久久久综合中文字幕| 国产激情一区二区三区四区 | 日韩欧美在线123| 在线看日韩精品电影| 成人中文字幕在线| 韩国精品在线观看| 蜜桃精品视频在线观看| 水野朝阳av一区二区三区| 亚洲日本护士毛茸茸| 中文字幕国产一区二区| 久久女同精品一区二区| 欧美一区二区三区喷汁尤物| 欧美色图片你懂的| 欧洲一区二区av| 色欧美乱欧美15图片| 99re亚洲国产精品| av成人免费在线观看| 国产aⅴ精品一区二区三区色成熟| 麻豆精品视频在线观看视频| 日本中文一区二区三区| 日韩国产精品久久久久久亚洲| 亚洲自拍与偷拍| 一区二区三区加勒比av| 一区二区视频在线| 一区二区三区久久久| 亚洲电影第三页| 亚洲gay无套男同| 亚洲国产成人av好男人在线观看| 一区二区三区免费看视频| 一区二区三区中文字幕在线观看| 一区av在线播放| 首页亚洲欧美制服丝腿| 蜜臀av亚洲一区中文字幕| 免费欧美日韩国产三级电影| 日本成人在线网站| 久久99国产精品麻豆| 国产制服丝袜一区| 国产69精品久久久久777| 91网上在线视频| 欧洲一区二区三区在线| 欧美精品18+| 精品国产免费久久| 国产精品污污网站在线观看| 综合激情成人伊人| 五月天精品一区二区三区| 久久国产视频网| 国产ts人妖一区二区| 91国产免费看| 欧美tk丨vk视频| 国产精品女上位| 亚洲影视在线观看| 美腿丝袜亚洲三区| 成人中文字幕在线| 欧美精品高清视频| 国产无人区一区二区三区| 亚洲日本丝袜连裤袜办公室| 五月天激情综合网| 国产成人日日夜夜| 欧美日韩一区视频| 久久久不卡网国产精品一区| 亚洲人123区| 琪琪一区二区三区| 成人午夜又粗又硬又大| 欧美色网站导航| 欧美极品少妇xxxxⅹ高跟鞋 | 日韩 欧美一区二区三区| 国产精品一二三在| 欧美中文一区二区三区| 精品av久久707| 一区二区三区免费在线观看| 国产在线精品免费av| 色嗨嗨av一区二区三区| 久久美女高清视频| 亚洲午夜在线视频| 国产98色在线|日韩| 91精品欧美一区二区三区综合在| 国产欧美日韩久久| 秋霞电影一区二区| 色综合咪咪久久| 久久久久国产免费免费 | 黄色资源网久久资源365| 一本大道久久a久久精品综合| 欧美成人一区二区三区片免费| 日韩理论片在线| 国产高清精品网站| 91麻豆精品国产91久久久使用方法| 亚洲国产精品成人综合色在线婷婷 | 天堂一区二区在线免费观看| k8久久久一区二区三区| 精品国一区二区三区| 亚洲成国产人片在线观看| 99久久国产综合精品色伊| 日韩免费高清电影| 午夜久久福利影院| 欧美午夜免费电影| 最新久久zyz资源站| 国产999精品久久| 亚洲精品一区二区三区影院 | 国产蜜臀av在线一区二区三区| 日韩中文字幕麻豆| 欧美日韩一级视频| 一区二区三区欧美日| 日本久久电影网| 亚洲婷婷国产精品电影人久久| 国产精品69久久久久水密桃| 久久众筹精品私拍模特| 久久精品二区亚洲w码| 欧美一区二区三级| 日韩中文字幕一区二区三区| 欧美日韩三级视频| 亚洲国产精品久久人人爱| 欧美日韩一区二区三区在线| 亚洲综合男人的天堂| 欧美日韩亚洲综合一区 | 久久91精品国产91久久小草| 在线播放亚洲一区| 日本中文字幕一区二区有限公司| 欧美电影影音先锋| 久久91精品国产91久久小草| 欧美成人r级一区二区三区| 美女视频一区二区三区| 日韩欧美的一区| 国产一区二区影院| 久久亚洲精精品中文字幕早川悠里| 国产精品一区一区| 中文字幕精品一区二区三区精品| 不卡av在线免费观看| 国产精品网站一区| 欧美影院一区二区三区| 视频一区欧美精品| 26uuu亚洲综合色欧美| 国产成人啪免费观看软件| 亚洲免费在线观看| 欧美日韩一本到| 狠狠色综合日日| 国产精品拍天天在线| 91国产免费看| 狠狠色综合日日| 亚洲婷婷综合色高清在线| 欧美久久久影院| 国产一区不卡视频| 亚洲三级在线免费观看| 在线91免费看| 国v精品久久久网|