FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
python/Python/getcwd.c at master · java66liu/python · GitHub
java66liu
/
python
Public
forked from
glix/python
Notifications
You must be signed in to change notification settings
Fork
0
Star
0
Code
Pull requests
0
Actions
Projects
Wiki
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Wiki
Security and quality
Insights
Expand file tree
Breadcrumbs
python
/
Python
/
getcwd.c
Copy path
More file actions
More file actions
Latest commit
History
History
History
83 lines (69 loc) · 1.37 KB
Breadcrumbs
python
/
Python
/
getcwd.c
Copy path
File metadata and controls
83 lines (69 loc) · 1.37 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
/* Two PD getcwd() implementations.
Author: Guido van Rossum, CWI Amsterdam, Jan 1991, <guido@cwi.nl>. */
#include
<stdio.h>
#include
<errno.h>
#ifdef
HAVE_GETWD
/* Version for BSD systems -- use getwd() */
#ifdef
HAVE_SYS_PARAM_H
#include
<sys/param.h>
#endif
#ifndef
MAXPATHLEN
#if
defined(
PATH_MAX
)
&&
PATH_MAX
>
1024
#define
MAXPATHLEN
PATH_MAX
#else
#define
MAXPATHLEN
1024
#endif
#endif
extern
char
*
getwd
(
char
*
);
char
*
getcwd
(
char
*
buf
,
int
size
)
{
char
localbuf
[
MAXPATHLEN
+
1
];
char
*
ret
;
if
(
size
<=
0
) {
errno
=
EINVAL
;
return
NULL
;
}
ret
=
getwd
(
localbuf
);
if
(
ret
!=
NULL
&&
strlen
(
localbuf
) >= (
size_t
)
size
) {
errno
=
ERANGE
;
return
NULL
;
}
if
(
ret
==
NULL
) {
errno
=
EACCES
;
/* Most likely error */
return
NULL
;
}
strncpy
(
buf
,
localbuf
,
size
);
return
buf
;
}
#else
/* !HAVE_GETWD */
/* Version for really old UNIX systems -- use pipe from pwd */
#ifndef
PWD_CMD
#define
PWD_CMD
"/bin/pwd"
#endif
char
*
getcwd
(
char
*
buf
,
int
size
)
{
FILE
*
fp
;
char
*
p
;
int
sts
;
if
(
size
<=
0
) {
errno
=
EINVAL
;
return
NULL
;
}
if
((
fp
=
popen
(
PWD_CMD
,
"r"
))
==
NULL
)
return
NULL
;
if
(
fgets
(
buf
,
size
,
fp
)
==
NULL
||
(
sts
=
pclose
(
fp
))
!=
0
) {
errno
=
EACCES
;
/* Most likely error */
return
NULL
;
}
for
(
p
=
buf
;
*
p
!=
'\n'
;
p
++
) {
if
(
*
p
==
'\0'
) {
errno
=
ERANGE
;
return
NULL
;
}
}
*
p
=
'\0'
;
return
buf
;
}
#endif
/* !HAVE_GETWD */
Back
|
FazBrowse Home
|
New Git URL