cwd.c
来自「俄罗斯高人Mamaich的Pocket gcc编译器(运行在PocketPC上)」· C语言 代码 · 共 92 行
C
92 行
#include <unistd.h>#include <errno.h>#include <string.h>#include <sys/types.h>#include <sys/stat.h>#include <sys/wcebase.h>#include <sys/wcefile.h>#include <sys/wcetrace.h>#define MAXDIRLEN (128)#define MAXPATHLEN (256)char __curdir[MAXDIRLEN];static int Initialized = FALSE;intchdir(const char *path){ struct stat st; char fpath[MAX_PATH]; char *cp = NULL; if (path == NULL || strlen(path) == 0) { errno = EFAULT; return(-1); } WCETRACE(WCE_IO, "chdir: path \"%s\"", path); fixpath(path, fpath); if (stat(fpath, &st) < 0) { errno = ENOENT; WCETRACE(WCE_IO, "chdir: return ENOENT"); return(-1); } if (!S_ISDIR(st.st_mode)) { errno = ENOTDIR; WCETRACE(WCE_IO, "chdir: return ENOTDIR"); return(-1); } strncpy(__curdir, fpath, MAXDIRLEN); Initialized = 1; /* Change backslashes to forward slashes */ cp = __curdir; while (*cp != NULL) { if (*cp == '\\') *cp = '/'; cp++; } WCETRACE(WCE_IO, "chdir: success, cwd is \"%s\"", __curdir); return(0);}char *getcwd(char *buf, size_t size){ int len; /* This is NOT compliant with what Linux does.. */ if (buf == NULL || size == 0) { return(NULL); } /* Make sure that *something* is in here */ if (!Initialized) { memset(__curdir, 0, MAXDIRLEN); __curdir[0] = '/'; Initialized = 1; } if (len = strlen(__curdir) > 0) { if (len > size) { errno = ERANGE; return(-1); } strncpy(buf, __curdir, strlen(__curdir)+1); } else { WCETRACE(WCE_IO, "getcwd WARNING: __curdir is unset"); } return(buf);}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?