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

Subversion Repositories or1k

[/] [or1k/] [trunk/] [gdb-5.3/] [libiberty/] [getcwd.c] - Blame information for rev 1777

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

Line No. Rev Author Line
1 1181 sfurman
/* 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 (buf, len)
42
  char *buf;
43
  int 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
}

powered by: WebSVN 2.1.0

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