summaryrefslogtreecommitdiff
path: root/misc/getcwd.c
blob: 60c1dd84eed984cc4612db8c9398b2331c1f04f1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
/* Emulate getcwd using getwd.
   This function is in the public domain. */

/*
NAME
	getcwd -- get absolute pathname for current working directory

SYNOPSIS
	char *getcwd (char pathname[len], len)

DESCRIPTION
	Copy the absolute pathname for the current working directory into
	the supplied buffer and return a pointer to the buffer.  If the 
	current directory's path doesn't fit in LEN characters, the result
	is NULL and errno is set.

BUGS
	Emulated via the getwd() call, which is reasonable for most
	systems that do not have getcwd().

*/

#ifndef NO_SYS_PARAM_H
#include <sys/param.h>
#endif
#include <errno.h>

extern char *getwd ();
extern int errno;

#ifndef MAXPATHLEN
#define MAXPATHLEN 1024
#endif

char *
getcwd (buf, len)
  char *buf;
  int len;
{
  char ourbuf[MAXPATHLEN];
  char *result;

  result = getwd (ourbuf);
  if (result) {
    if (strlen (ourbuf) >= len) {
      errno = ERANGE;
      return 0;
    }
    strcpy (buf, ourbuf);
  }
  return buf;
}