/* Two PD getcwd() implementations.Author: Guido van Rossum, CWI Amsterdam, Jan 1991, <guido@cwi.nl>. */#include <stdio.h>#include <errno.h>#ifdef HAVE_GETWD/* Version for BSD systems -- use getwd() */#ifdef HAVE_SYS_PARAM_H#include <sys/param.h>#endif#ifndef MAXPATHLEN#if defined(PATH_MAX) && PATH_MAX > 1024#define MAXPATHLEN PATH_MAX#else#define MAXPATHLEN 1024#endif#endifextern char *getwd(char *);char *getcwd(char *buf, int size){char localbuf[MAXPATHLEN+1];char *ret;if (size <= 0) {errno = EINVAL;return NULL;}ret = getwd(localbuf);if (ret != NULL && strlen(localbuf) >= (size_t)size) {errno = ERANGE;return NULL;}if (ret == NULL) {errno = EACCES; /* Most likely error */return NULL;}strncpy(buf, localbuf, size);return buf;}#else /* !HAVE_GETWD *//* Version for really old UNIX systems -- use pipe from pwd */#ifndef PWD_CMD#define PWD_CMD "/bin/pwd"#endifchar *getcwd(char *buf, int size){FILE *fp;char *p;int sts;if (size <= 0) {errno = EINVAL;return NULL;}if ((fp = popen(PWD_CMD, "r")) == NULL)return NULL;if (fgets(buf, size, fp) == NULL || (sts = pclose(fp)) != 0) {errno = EACCES; /* Most likely error */return NULL;}for (p = buf; *p != '\n'; p++) {if (*p == '0円') {errno = ERANGE;return NULL;}}*p = '0円';return buf;}#endif /* !HAVE_GETWD */
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。