OpenCores
URL https://opencores.org/ocsvn/open8_urisc/open8_urisc/trunk

Subversion Repositories open8_urisc

[/] [open8_urisc/] [trunk/] [gnu/] [binutils/] [libiberty/] [getcwd.c] - Blame information for rev 298

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 21 khays
/* 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
 
8
Copy 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
11
directory'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
 
33
extern char *getwd ();
34
extern int errno;
35
 
36
#ifndef MAXPATHLEN
37
#define MAXPATHLEN 1024
38
#endif
39
 
40
char *
41
getcwd (char *buf, size_t len)
42
{
43
  char ourbuf[MAXPATHLEN];
44
  char *result;
45
 
46
  result = getwd (ourbuf);
47
  if (result) {
48
    if (strlen (ourbuf) >= len) {
49
      errno = ERANGE;
50
      return 0;
51
    }
52
    if (!buf) {
53
       buf = (char*)malloc(len);
54
       if (!buf) {
55
           errno = ENOMEM;
56
           return 0;
57
       }
58
    }
59
    strcpy (buf, ourbuf);
60
  }
61
  return buf;
62
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.