Mercurial > hg > CbC > CbC_gcc
view libiberty/getcwd.c @ 103:edcadcec937d
modify __rectype
author | Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 23 Mar 2012 17:11:33 +0900 (2012-03-23) |
parents | a06113de4d67 |
children |
line wrap: on
line source
/* Emulate getcwd using getwd. This function is in the public domain. */ /* @deftypefn Supplemental char* getcwd (char *@var{pathname}, int @var{len}) Copy the absolute pathname for the current working directory into @var{pathname}, which is assumed to point to a buffer of at least @var{len} bytes, and return a pointer to the buffer. If the current directory's path doesn't fit in @var{len} characters, the result is @code{NULL} and @code{errno} is set. If @var{pathname} is a null pointer, @code{getcwd} will obtain @var{len} bytes of space using @code{malloc}. @end deftypefn */ #include "config.h" #ifdef HAVE_SYS_PARAM_H #include <sys/param.h> #endif #include <errno.h> #ifdef HAVE_STRING_H #include <string.h> #endif #ifdef HAVE_STDLIB_H #include <stdlib.h> #endif extern char *getwd (); extern int errno; #ifndef MAXPATHLEN #define MAXPATHLEN 1024 #endif char * getcwd (char *buf, size_t len) { char ourbuf[MAXPATHLEN]; char *result; result = getwd (ourbuf); if (result) { if (strlen (ourbuf) >= len) { errno = ERANGE; return 0; } if (!buf) { buf = (char*)malloc(len); if (!buf) { errno = ENOMEM; return 0; } } strcpy (buf, ourbuf); } return buf; }