00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include "config.h"
00021
00022 #ifdef HAVE_SYS_PARAM_H
00023 #include <sys/param.h>
00024 #endif
00025 #include <errno.h>
00026 #ifdef HAVE_STRING_H
00027 #include <string.h>
00028 #endif
00029 #ifdef HAVE_STDLIB_H
00030 #include <stdlib.h>
00031 #endif
00032
00033 extern char *getwd ();
00034 extern int errno;
00035
00036 #ifndef MAXPATHLEN
00037 #define MAXPATHLEN 1024
00038 #endif
00039
00040 char *
00041 getcwd (buf, len)
00042 char *buf;
00043 size_t len;
00044 {
00045 char ourbuf[MAXPATHLEN];
00046 char *result;
00047
00048 result = getwd (ourbuf);
00049 if (result) {
00050 if (strlen (ourbuf) >= len) {
00051 errno = ERANGE;
00052 return 0;
00053 }
00054 if (!buf) {
00055 buf = (char*)malloc(len);
00056 if (!buf) {
00057 errno = ENOMEM;
00058 return 0;
00059 }
00060 }
00061 strcpy (buf, ourbuf);
00062 }
00063 return buf;
00064 }