source: branches/libc-0.6/src/binutils/libiberty/getcwd.c

Last change on this file was 610, checked in by bird, 22 years ago

This commit was generated by cvs2svn to compensate for changes in r609,
which included commits to RCS files with non-trunk default branches.

  • Property cvs2svn:cvs-rev set to 1.1.1.2
  • Property svn:eol-style set to native
  • Property svn:executable set to *
File size: 1.2 KB
Line 
1/* Emulate getcwd using getwd.
2 This function is in the public domain. */
3
4/*
5
6@deftypefn Supplemental char* getcwd (char *@var{pathname}, int @var{len})
7
8Copy the absolute pathname for the current working directory into
9@var{pathname}, which is assumed to point to a buffer of at least
10@var{len} bytes, and return a pointer to the buffer. If the current
11directory's path doesn't fit in @var{len} characters, the result is
12@code{NULL} and @code{errno} is set. If @var{pathname} is a null pointer,
13@code{getcwd} will obtain @var{len} bytes of space using
14@code{malloc}.
15
16@end deftypefn
17
18*/
19
20#include "config.h"
21
22#ifdef HAVE_SYS_PARAM_H
23#include <sys/param.h>
24#endif
25#include <errno.h>
26#ifdef HAVE_STRING_H
27#include <string.h>
28#endif
29#ifdef HAVE_STDLIB_H
30#include <stdlib.h>
31#endif
32
33extern char *getwd ();
34extern int errno;
35
36#ifndef MAXPATHLEN
37#define MAXPATHLEN 1024
38#endif
39
40char *
41getcwd (buf, len)
42 char *buf;
43 size_t len;
44{
45 char ourbuf[MAXPATHLEN];
46 char *result;
47
48 result = getwd (ourbuf);
49 if (result) {
50 if (strlen (ourbuf) >= len) {
51 errno = ERANGE;
52 return 0;
53 }
54 if (!buf) {
55 buf = (char*)malloc(len);
56 if (!buf) {
57 errno = ENOMEM;
58 return 0;
59 }
60 }
61 strcpy (buf, ourbuf);
62 }
63 return buf;
64}
Note: See TracBrowser for help on using the repository browser.