annotate Modules/posixmodule.c @ 78069:a8aa77458e12 3.2

Add c_size_t and c_ssize_t to the ctypes summary table.
author Antoine Pitrou <solipsis@pitrou.net>
date Thu, 12 Jul 2012 20:31:50 +0200
parents 4a31f6b11e7a
children fdf907708f49 ed76dc34b39d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
145
853b736a6a9e Added copyright notice.
Guido van Rossum <guido@python.org>
parents: 117
diff changeset
1
6
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
2 /* POSIX module implementation */
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
3
22116
0c4230269ed3 OS/2 EMX port changes (Modules part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 21966
diff changeset
4 /* This file is also used for Windows NT/MS-Win and OS/2. In that case the
0c4230269ed3 OS/2 EMX port changes (Modules part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 21966
diff changeset
5 module actually calls itself 'nt' or 'os2', not 'posix', and a few
0c4230269ed3 OS/2 EMX port changes (Modules part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 21966
diff changeset
6 functions are either unimplemented or implemented differently. The source
24071
8142f8d668a0 Patch #569753: Remove support for WIN16.
Martin v. Löwis <martin@v.loewis.de>
parents: 23937
diff changeset
7 assumes that for Windows NT, the macro 'MS_WINDOWS' is defined independent
2456
bc03225a4493 changes for NT/Borland C
Guido van Rossum <guido@python.org>
parents: 2370
diff changeset
8 of the compiler used. Different compilers define their own feature
22116
0c4230269ed3 OS/2 EMX port changes (Modules part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 21966
diff changeset
9 test macro, e.g. '__BORLANDC__' or '_MSC_VER'. For OS/2, the compiler
0c4230269ed3 OS/2 EMX port changes (Modules part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 21966
diff changeset
10 independent macro PYOS_OS2 should be defined. On OS/2 the default
0c4230269ed3 OS/2 EMX port changes (Modules part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 21966
diff changeset
11 compiler is assumed to be IBM's VisualAge C++ (VACPP). PYCC_GCC is used
0c4230269ed3 OS/2 EMX port changes (Modules part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 21966
diff changeset
12 as the compiler specific macro for the EMX port of gcc to OS/2. */
2456
bc03225a4493 changes for NT/Borland C
Guido van Rossum <guido@python.org>
parents: 2370
diff changeset
13
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
14 #ifdef __APPLE__
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
15 /*
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
16 * Step 1 of support for weak-linking a number of symbols existing on
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
17 * OSX 10.4 and later, see the comment in the #ifdef __APPLE__ block
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
18 * at the end of this file for more information.
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
19 */
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
20 # pragma weak lchown
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
21 # pragma weak statvfs
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
22 # pragma weak fstatvfs
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
23
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
24 #endif /* __APPLE__ */
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
25
36747
dba77092d46e Py_ssize_t-ify.
Thomas Wouters <thomas@python.org>
parents: 36600
diff changeset
26 #define PY_SSIZE_T_CLEAN
dba77092d46e Py_ssize_t-ify.
Thomas Wouters <thomas@python.org>
parents: 36600
diff changeset
27
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
28 #include "Python.h"
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
29
26550
b9c912e2c3c0 Patch #614055: Support OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents: 26330
diff changeset
30 #if defined(__VMS)
b9c912e2c3c0 Patch #614055: Support OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents: 26330
diff changeset
31 # include <unixio.h>
b9c912e2c3c0 Patch #614055: Support OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents: 26330
diff changeset
32 #endif /* defined(__VMS) */
b9c912e2c3c0 Patch #614055: Support OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents: 26330
diff changeset
33
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36887
diff changeset
34 #ifdef __cplusplus
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36887
diff changeset
35 extern "C" {
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36887
diff changeset
36 #endif
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36887
diff changeset
37
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
38 PyDoc_STRVAR(posix__doc__,
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
39 "This module provides access to operating system functionality that is\n\
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
40 standardized by the C Standard and the POSIX standard (a thinly\n\
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
41 disguised Unix interface). Refer to the library manual and\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
42 corresponding Unix manual entries for more information on calls.");
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
43
26330
3086e111783a Fix --disable-unicode compilation problems.
Martin v. Löwis <martin@v.loewis.de>
parents: 26320
diff changeset
44
6626
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
45 #if defined(PYOS_OS2)
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
46 #define INCL_DOS
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
47 #define INCL_DOSERRORS
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
48 #define INCL_DOSPROCESS
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
49 #define INCL_NOPMAPI
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
50 #include <os2.h>
22116
0c4230269ed3 OS/2 EMX port changes (Modules part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 21966
diff changeset
51 #if defined(PYCC_GCC)
0c4230269ed3 OS/2 EMX port changes (Modules part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 21966
diff changeset
52 #include <ctype.h>
0c4230269ed3 OS/2 EMX port changes (Modules part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 21966
diff changeset
53 #include <io.h>
0c4230269ed3 OS/2 EMX port changes (Modules part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 21966
diff changeset
54 #include <stdio.h>
0c4230269ed3 OS/2 EMX port changes (Modules part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 21966
diff changeset
55 #include <process.h>
31837
81117923ae8f OS/2 VACPP build updates/fixes
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 31539
diff changeset
56 #endif
22116
0c4230269ed3 OS/2 EMX port changes (Modules part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 21966
diff changeset
57 #include "osdefs.h"
0c4230269ed3 OS/2 EMX port changes (Modules part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 21966
diff changeset
58 #endif
6
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
59
39442
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38669
diff changeset
60 #ifdef HAVE_SYS_TYPES_H
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
61 #include <sys/types.h>
39442
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38669
diff changeset
62 #endif /* HAVE_SYS_TYPES_H */
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38669
diff changeset
63
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38669
diff changeset
64 #ifdef HAVE_SYS_STAT_H
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
65 #include <sys/stat.h>
39442
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38669
diff changeset
66 #endif /* HAVE_SYS_STAT_H */
20537
01af91aeccd4 Shut up warnings for setgroups() on Linux -- you have to #include
Guido van Rossum <guido@python.org>
parents: 20508
diff changeset
67
2740
3e370a4b103b sys/wait.h; NeXT changes (no unistd, utime; getcwd?)
Guido van Rossum <guido@python.org>
parents: 2615
diff changeset
68 #ifdef HAVE_SYS_WAIT_H
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
69 #include <sys/wait.h> /* For WNOHANG */
2740
3e370a4b103b sys/wait.h; NeXT changes (no unistd, utime; getcwd?)
Guido van Rossum <guido@python.org>
parents: 2615
diff changeset
70 #endif
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
71
39442
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38669
diff changeset
72 #ifdef HAVE_SIGNAL_H
4600
d36250aefb82 Keep gcc -Wall happy.
Guido van Rossum <guido@python.org>
parents: 4503
diff changeset
73 #include <signal.h>
39442
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38669
diff changeset
74 #endif
4600
d36250aefb82 Keep gcc -Wall happy.
Guido van Rossum <guido@python.org>
parents: 4503
diff changeset
75
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
76 #ifdef HAVE_FCNTL_H
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
77 #include <fcntl.h>
1792
a584b4bbbc59 Changes to make it work and compile on NT, by Mark Hammond.
Guido van Rossum <guido@python.org>
parents: 1746
diff changeset
78 #endif /* HAVE_FCNTL_H */
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
79
20537
01af91aeccd4 Shut up warnings for setgroups() on Linux -- you have to #include
Guido van Rossum <guido@python.org>
parents: 20508
diff changeset
80 #ifdef HAVE_GRP_H
01af91aeccd4 Shut up warnings for setgroups() on Linux -- you have to #include
Guido van Rossum <guido@python.org>
parents: 20508
diff changeset
81 #include <grp.h>
01af91aeccd4 Shut up warnings for setgroups() on Linux -- you have to #include
Guido van Rossum <guido@python.org>
parents: 20508
diff changeset
82 #endif
01af91aeccd4 Shut up warnings for setgroups() on Linux -- you have to #include
Guido van Rossum <guido@python.org>
parents: 20508
diff changeset
83
27139
7bbb0dd8d230 all_ins(): EX_OK and friends, constants from sysexits.h
Barry Warsaw <barry@python.org>
parents: 26998
diff changeset
84 #ifdef HAVE_SYSEXITS_H
7bbb0dd8d230 all_ins(): EX_OK and friends, constants from sysexits.h
Barry Warsaw <barry@python.org>
parents: 26998
diff changeset
85 #include <sysexits.h>
7bbb0dd8d230 all_ins(): EX_OK and friends, constants from sysexits.h
Barry Warsaw <barry@python.org>
parents: 26998
diff changeset
86 #endif /* HAVE_SYSEXITS_H */
7bbb0dd8d230 all_ins(): EX_OK and friends, constants from sysexits.h
Barry Warsaw <barry@python.org>
parents: 26998
diff changeset
87
33749
2cc107c9646e Patch 977343, Solaris likes sys/loadavg.h. Added support for sys/loadavg.h
Anthony Baxter <anthonybaxter@gmail.com>
parents: 33747
diff changeset
88 #ifdef HAVE_SYS_LOADAVG_H
2cc107c9646e Patch 977343, Solaris likes sys/loadavg.h. Added support for sys/loadavg.h
Anthony Baxter <anthonybaxter@gmail.com>
parents: 33747
diff changeset
89 #include <sys/loadavg.h>
2cc107c9646e Patch 977343, Solaris likes sys/loadavg.h. Added support for sys/loadavg.h
Anthony Baxter <anthonybaxter@gmail.com>
parents: 33747
diff changeset
90 #endif
2cc107c9646e Patch 977343, Solaris likes sys/loadavg.h. Added support for sys/loadavg.h
Anthony Baxter <anthonybaxter@gmail.com>
parents: 33747
diff changeset
91
42539
43e32b2b4004 Set sys.stdout.encoding properly.
Martin v. Löwis <martin@v.loewis.de>
parents: 42334
diff changeset
92 #ifdef HAVE_LANGINFO_H
43e32b2b4004 Set sys.stdout.encoding properly.
Martin v. Löwis <martin@v.loewis.de>
parents: 42334
diff changeset
93 #include <langinfo.h>
43e32b2b4004 Set sys.stdout.encoding properly.
Martin v. Löwis <martin@v.loewis.de>
parents: 42334
diff changeset
94 #endif
43e32b2b4004 Set sys.stdout.encoding properly.
Martin v. Löwis <martin@v.loewis.de>
parents: 42334
diff changeset
95
3601
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
96 /* Various compilers have only certain posix functions */
18835
2dea40e40d9d Patch #411138: Rename config.h to pyconfig.h. Closes bug #231774.
Martin v. Löwis <martin@v.loewis.de>
parents: 18749
diff changeset
97 /* XXX Gosh I wish these were all moved into pyconfig.h */
6626
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
98 #if defined(PYCC_VACPP) && defined(PYOS_OS2)
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
99 #include <process.h>
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
100 #else
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
101 #if defined(__WATCOMC__) && !defined(__QNX__) /* Watcom compiler */
3601
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
102 #define HAVE_GETCWD 1
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
103 #define HAVE_OPENDIR 1
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
104 #define HAVE_SYSTEM 1
3601
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
105 #if defined(__OS2__)
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
106 #define HAVE_EXECV 1
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
107 #define HAVE_WAIT 1
2456
bc03225a4493 changes for NT/Borland C
Guido van Rossum <guido@python.org>
parents: 2370
diff changeset
108 #endif
3601
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
109 #include <process.h>
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
110 #else
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
111 #ifdef __BORLANDC__ /* Borland compiler */
3601
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
112 #define HAVE_EXECV 1
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
113 #define HAVE_GETCWD 1
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
114 #define HAVE_OPENDIR 1
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
115 #define HAVE_PIPE 1
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
116 #define HAVE_SYSTEM 1
3601
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
117 #define HAVE_WAIT 1
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
118 #else
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
119 #ifdef _MSC_VER /* Microsoft compiler */
3702
3408756ec601 changed windows test symbols; removed debug printf from sockets
Guido van Rossum <guido@python.org>
parents: 3695
diff changeset
120 #define HAVE_GETCWD 1
64537
5d73b036573b #6394: Add os.getppid() support for Windows.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 64495
diff changeset
121 #define HAVE_GETPPID 1
70840
f6d6afe53385 posixmodule.c: fix function name in argument parsing
Victor Stinner <victor.stinner@haypocalc.com>
parents: 70815
diff changeset
122 #define HAVE_GETLOGIN 1
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
123 #define HAVE_SPAWNV 1
3601
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
124 #define HAVE_EXECV 1
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
125 #define HAVE_PIPE 1
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
126 #define HAVE_SYSTEM 1
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
127 #define HAVE_CWAIT 1
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
128 #define HAVE_FSYNC 1
28735
7bba3e2be54e Enable os.fsync() for Windows, mapping it to MS's _commit() there. The
Tim Peters <tim.peters@gmail.com>
parents: 28708
diff changeset
129 #define fsync _commit
22116
0c4230269ed3 OS/2 EMX port changes (Modules part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 21966
diff changeset
130 #else
26550
b9c912e2c3c0 Patch #614055: Support OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents: 26330
diff changeset
131 #if defined(PYOS_OS2) && defined(PYCC_GCC) || defined(__VMS)
b9c912e2c3c0 Patch #614055: Support OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents: 26330
diff changeset
132 /* Everything needed is defined in PC/os2emx/pyconfig.h or vms/pyconfig.h */
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
133 #else /* all other compilers */
3601
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
134 /* Unix functions that the configure script doesn't check for */
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
135 #define HAVE_EXECV 1
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
136 #define HAVE_FORK 1
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
137 #if defined(__USLC__) && defined(__SCO_VERSION__) /* SCO UDK Compiler */
17419
3fadc37cfa92 Unixware 7 support by Billy G. Allie (SF patch 413011)
Guido van Rossum <guido@python.org>
parents: 16792
diff changeset
138 #define HAVE_FORK1 1
3fadc37cfa92 Unixware 7 support by Billy G. Allie (SF patch 413011)
Guido van Rossum <guido@python.org>
parents: 16792
diff changeset
139 #endif
3601
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
140 #define HAVE_GETCWD 1
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
141 #define HAVE_GETEGID 1
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
142 #define HAVE_GETEUID 1
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
143 #define HAVE_GETGID 1
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
144 #define HAVE_GETPPID 1
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
145 #define HAVE_GETUID 1
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
146 #define HAVE_KILL 1
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
147 #define HAVE_OPENDIR 1
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
148 #define HAVE_PIPE 1
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
149 #define HAVE_SYSTEM 1
3601
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
150 #define HAVE_WAIT 1
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
151 #define HAVE_TTYNAME 1
28169
bc2d07230934 Patch #696645: Remove VMS code with uncertain authorship.
Martin v. Löwis <martin@v.loewis.de>
parents: 28166
diff changeset
152 #endif /* PYOS_OS2 && PYCC_GCC && __VMS */
3601
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
153 #endif /* _MSC_VER */
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
154 #endif /* __BORLANDC__ */
6717
64a75211cf72 Patch for QNX, by Chris Herborth. Also left-aligned preprocessor
Guido van Rossum <guido@python.org>
parents: 6626
diff changeset
155 #endif /* ! __WATCOMC__ || __QNX__ */
6626
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
156 #endif /* ! __IBMC__ */
2456
bc03225a4493 changes for NT/Borland C
Guido van Rossum <guido@python.org>
parents: 2370
diff changeset
157
3601
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
158 #ifndef _MSC_VER
2740
3e370a4b103b sys/wait.h; NeXT changes (no unistd, utime; getcwd?)
Guido van Rossum <guido@python.org>
parents: 2615
diff changeset
159
25327
337fcc24985b Patch #608999: Fix portability problems with MIPSPro 7.x
Martin v. Löwis <martin@v.loewis.de>
parents: 25277
diff changeset
160 #if defined(__sgi)&&_COMPILER_VERSION>=700
337fcc24985b Patch #608999: Fix portability problems with MIPSPro 7.x
Martin v. Löwis <martin@v.loewis.de>
parents: 25277
diff changeset
161 /* declare ctermid_r if compiling with MIPSPro 7.x in ANSI C mode
337fcc24985b Patch #608999: Fix portability problems with MIPSPro 7.x
Martin v. Löwis <martin@v.loewis.de>
parents: 25277
diff changeset
162 (default) */
337fcc24985b Patch #608999: Fix portability problems with MIPSPro 7.x
Martin v. Löwis <martin@v.loewis.de>
parents: 25277
diff changeset
163 extern char *ctermid_r(char *);
337fcc24985b Patch #608999: Fix portability problems with MIPSPro 7.x
Martin v. Löwis <martin@v.loewis.de>
parents: 25277
diff changeset
164 #endif
337fcc24985b Patch #608999: Fix portability problems with MIPSPro 7.x
Martin v. Löwis <martin@v.loewis.de>
parents: 25277
diff changeset
165
13694
b54f11ada91e Create a new section of pyport.h to hold all external function declarations
Thomas Wouters <thomas@python.org>
parents: 13675
diff changeset
166 #ifndef HAVE_UNISTD_H
6626
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
167 #if defined(PYCC_VACPP)
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
168 extern int mkdir(char *);
6626
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
169 #else
6717
64a75211cf72 Patch for QNX, by Chris Herborth. Also left-aligned preprocessor
Guido van Rossum <guido@python.org>
parents: 6626
diff changeset
170 #if ( defined(__WATCOMC__) || defined(_MSC_VER) ) && !defined(__QNX__)
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
171 extern int mkdir(const char *);
3601
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
172 #else
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
173 extern int mkdir(const char *, mode_t);
3601
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
174 #endif
6626
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
175 #endif
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
176 #if defined(__IBMC__) || defined(__IBMCPP__)
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
177 extern int chdir(char *);
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
178 extern int rmdir(char *);
6626
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
179 #else
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
180 extern int chdir(const char *);
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
181 extern int rmdir(const char *);
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
182 #endif
17831
5c06a9596fbf SF patch #418147 Fixes to allow compiling w/ Borland, from Stephen Hansen.
Tim Peters <tim.peters@gmail.com>
parents: 17822
diff changeset
183 #ifdef __BORLANDC__
5c06a9596fbf SF patch #418147 Fixes to allow compiling w/ Borland, from Stephen Hansen.
Tim Peters <tim.peters@gmail.com>
parents: 17822
diff changeset
184 extern int chmod(const char *, int);
5c06a9596fbf SF patch #418147 Fixes to allow compiling w/ Borland, from Stephen Hansen.
Tim Peters <tim.peters@gmail.com>
parents: 17822
diff changeset
185 #else
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
186 extern int chmod(const char *, mode_t);
17831
5c06a9596fbf SF patch #418147 Fixes to allow compiling w/ Borland, from Stephen Hansen.
Tim Peters <tim.peters@gmail.com>
parents: 17822
diff changeset
187 #endif
44078
664b0bc92b96 Merged revisions 59239-59244 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44025
diff changeset
188 /*#ifdef HAVE_FCHMOD
664b0bc92b96 Merged revisions 59239-59244 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44025
diff changeset
189 extern int fchmod(int, mode_t);
664b0bc92b96 Merged revisions 59239-59244 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44025
diff changeset
190 #endif*/
664b0bc92b96 Merged revisions 59239-59244 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44025
diff changeset
191 /*#ifdef HAVE_LCHMOD
664b0bc92b96 Merged revisions 59239-59244 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44025
diff changeset
192 extern int lchmod(const char *, mode_t);
664b0bc92b96 Merged revisions 59239-59244 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44025
diff changeset
193 #endif*/
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
194 extern int chown(const char *, uid_t, gid_t);
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
195 extern char *getcwd(char *, int);
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
196 extern char *strerror(int);
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
197 extern int link(const char *, const char *);
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
198 extern int rename(const char *, const char *);
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
199 extern int stat(const char *, struct stat *);
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
200 extern int unlink(const char *);
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
201 #ifdef HAVE_SYMLINK
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
202 extern int symlink(const char *, const char *);
2370
e386035f897d fix comment opener after #endif
Guido van Rossum <guido@python.org>
parents: 2298
diff changeset
203 #endif /* HAVE_SYMLINK */
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
204 #ifdef HAVE_LSTAT
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
205 extern int lstat(const char *, struct stat *);
1792
a584b4bbbc59 Changes to make it work and compile on NT, by Mark Hammond.
Guido van Rossum <guido@python.org>
parents: 1746
diff changeset
206 #endif /* HAVE_LSTAT */
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
207 #endif /* !HAVE_UNISTD_H */
2740
3e370a4b103b sys/wait.h; NeXT changes (no unistd, utime; getcwd?)
Guido van Rossum <guido@python.org>
parents: 2615
diff changeset
208
3601
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
209 #endif /* !_MSC_VER */
6
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
210
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
211 #ifdef HAVE_UTIME_H
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
212 #include <utime.h>
1792
a584b4bbbc59 Changes to make it work and compile on NT, by Mark Hammond.
Guido van Rossum <guido@python.org>
parents: 1746
diff changeset
213 #endif /* HAVE_UTIME_H */
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
214
1915
80818c106e3e * Modules/xxmodule.c: integrated with xxobject.c by Jack
Guido van Rossum <guido@python.org>
parents: 1845
diff changeset
215 #ifdef HAVE_SYS_UTIME_H
80818c106e3e * Modules/xxmodule.c: integrated with xxobject.c by Jack
Guido van Rossum <guido@python.org>
parents: 1845
diff changeset
216 #include <sys/utime.h>
80818c106e3e * Modules/xxmodule.c: integrated with xxobject.c by Jack
Guido van Rossum <guido@python.org>
parents: 1845
diff changeset
217 #define HAVE_UTIME_H /* pretend we do for the rest of this file */
80818c106e3e * Modules/xxmodule.c: integrated with xxobject.c by Jack
Guido van Rossum <guido@python.org>
parents: 1845
diff changeset
218 #endif /* HAVE_SYS_UTIME_H */
80818c106e3e * Modules/xxmodule.c: integrated with xxobject.c by Jack
Guido van Rossum <guido@python.org>
parents: 1845
diff changeset
219
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
220 #ifdef HAVE_SYS_TIMES_H
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
221 #include <sys/times.h>
1792
a584b4bbbc59 Changes to make it work and compile on NT, by Mark Hammond.
Guido van Rossum <guido@python.org>
parents: 1746
diff changeset
222 #endif /* HAVE_SYS_TIMES_H */
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
223
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
224 #ifdef HAVE_SYS_PARAM_H
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
225 #include <sys/param.h>
1792
a584b4bbbc59 Changes to make it work and compile on NT, by Mark Hammond.
Guido van Rossum <guido@python.org>
parents: 1746
diff changeset
226 #endif /* HAVE_SYS_PARAM_H */
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
227
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
228 #ifdef HAVE_SYS_UTSNAME_H
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
229 #include <sys/utsname.h>
1792
a584b4bbbc59 Changes to make it work and compile on NT, by Mark Hammond.
Guido van Rossum <guido@python.org>
parents: 1746
diff changeset
230 #endif /* HAVE_SYS_UTSNAME_H */
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
231
2055
cf31eab6ab5a Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents: 1983
diff changeset
232 #ifdef HAVE_DIRENT_H
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
233 #include <dirent.h>
2055
cf31eab6ab5a Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents: 1983
diff changeset
234 #define NAMLEN(dirent) strlen((dirent)->d_name)
cf31eab6ab5a Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents: 1983
diff changeset
235 #else
6717
64a75211cf72 Patch for QNX, by Chris Herborth. Also left-aligned preprocessor
Guido van Rossum <guido@python.org>
parents: 6626
diff changeset
236 #if defined(__WATCOMC__) && !defined(__QNX__)
3601
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
237 #include <direct.h>
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
238 #define NAMLEN(dirent) strlen((dirent)->d_name)
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
239 #else
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
240 #define dirent direct
2055
cf31eab6ab5a Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents: 1983
diff changeset
241 #define NAMLEN(dirent) (dirent)->d_namlen
3601
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
242 #endif
2055
cf31eab6ab5a Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents: 1983
diff changeset
243 #ifdef HAVE_SYS_NDIR_H
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
244 #include <sys/ndir.h>
2055
cf31eab6ab5a Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents: 1983
diff changeset
245 #endif
cf31eab6ab5a Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents: 1983
diff changeset
246 #ifdef HAVE_SYS_DIR_H
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
247 #include <sys/dir.h>
2055
cf31eab6ab5a Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents: 1983
diff changeset
248 #endif
cf31eab6ab5a Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents: 1983
diff changeset
249 #ifdef HAVE_NDIR_H
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
250 #include <ndir.h>
2055
cf31eab6ab5a Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents: 1983
diff changeset
251 #endif
cf31eab6ab5a Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents: 1983
diff changeset
252 #endif
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
253
3601
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
254 #ifdef _MSC_VER
39442
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38669
diff changeset
255 #ifdef HAVE_DIRECT_H
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
256 #include <direct.h>
39442
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38669
diff changeset
257 #endif
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38669
diff changeset
258 #ifdef HAVE_IO_H
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
259 #include <io.h>
39442
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38669
diff changeset
260 #endif
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38669
diff changeset
261 #ifdef HAVE_PROCESS_H
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
262 #include <process.h>
39442
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38669
diff changeset
263 #endif
63472
c706f8679dfc Issue 9445: Fix undefined symbols on VS8.0 build.
Raymond Hettinger <python@rcn.com>
parents: 63160
diff changeset
264 #ifndef VOLUME_NAME_DOS
64083
4725082c282f r82659 reintroduced some tab characters. Untabify again.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 64046
diff changeset
265 #define VOLUME_NAME_DOS 0x0
63472
c706f8679dfc Issue 9445: Fix undefined symbols on VS8.0 build.
Raymond Hettinger <python@rcn.com>
parents: 63160
diff changeset
266 #endif
c706f8679dfc Issue 9445: Fix undefined symbols on VS8.0 build.
Raymond Hettinger <python@rcn.com>
parents: 63160
diff changeset
267 #ifndef VOLUME_NAME_NT
64083
4725082c282f r82659 reintroduced some tab characters. Untabify again.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 64046
diff changeset
268 #define VOLUME_NAME_NT 0x2
63472
c706f8679dfc Issue 9445: Fix undefined symbols on VS8.0 build.
Raymond Hettinger <python@rcn.com>
parents: 63160
diff changeset
269 #endif
c706f8679dfc Issue 9445: Fix undefined symbols on VS8.0 build.
Raymond Hettinger <python@rcn.com>
parents: 63160
diff changeset
270 #ifndef IO_REPARSE_TAG_SYMLINK
64083
4725082c282f r82659 reintroduced some tab characters. Untabify again.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 64046
diff changeset
271 #define IO_REPARSE_TAG_SYMLINK (0xA000000CL)
63472
c706f8679dfc Issue 9445: Fix undefined symbols on VS8.0 build.
Raymond Hettinger <python@rcn.com>
parents: 63160
diff changeset
272 #endif
22123
3a06e19df46b Python no longer compiled on Windows, due to #include file confusion
Tim Peters <tim.peters@gmail.com>
parents: 22116
diff changeset
273 #include "osdefs.h"
53125
95132cc22ee5 Merging r70958 from the trunk, regarding http://bugs.python.org/issue5623
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 53072
diff changeset
274 #include <malloc.h>
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
275 #include <windows.h>
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
276 #include <shellapi.h> /* for ShellExecute() */
64913
d088faa35456 #9808. Implement os.getlogin for Windows, completed by Jon Anglin.
Brian Curtin <brian.curtin@gmail.com>
parents: 64886
diff changeset
277 #include <lmcons.h> /* for UNLEN */
66606
9a2058309c1a Fix #9333. Expose os.symlink on Windows only when usable.
Brian Curtin <brian.curtin@gmail.com>
parents: 66555
diff changeset
278 #ifdef SE_CREATE_SYMBOLIC_LINK_NAME /* Available starting with Vista */
9a2058309c1a Fix #9333. Expose os.symlink on Windows only when usable.
Brian Curtin <brian.curtin@gmail.com>
parents: 66555
diff changeset
279 #define HAVE_SYMLINK
67183
5aa433a277f9 Fix #9333. The symlink function is always available now, raising OSError
Brian Curtin <brian.curtin@gmail.com>
parents: 66779
diff changeset
280 static int win32_can_symlink = 0;
66606
9a2058309c1a Fix #9333. Expose os.symlink on Windows only when usable.
Brian Curtin <brian.curtin@gmail.com>
parents: 66555
diff changeset
281 #endif
3601
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
282 #endif /* _MSC_VER */
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
283
6766
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
284 #if defined(PYCC_VACPP) && defined(PYOS_OS2)
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
285 #include <io.h>
1792
a584b4bbbc59 Changes to make it work and compile on NT, by Mark Hammond.
Guido van Rossum <guido@python.org>
parents: 1746
diff changeset
286 #endif /* OS2 */
6
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
287
22123
3a06e19df46b Python no longer compiled on Windows, due to #include file confusion
Tim Peters <tim.peters@gmail.com>
parents: 22116
diff changeset
288 #ifndef MAXPATHLEN
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
289 #if defined(PATH_MAX) && PATH_MAX > 1024
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
290 #define MAXPATHLEN PATH_MAX
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
291 #else
22123
3a06e19df46b Python no longer compiled on Windows, due to #include file confusion
Tim Peters <tim.peters@gmail.com>
parents: 22116
diff changeset
292 #define MAXPATHLEN 1024
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
293 #endif
22123
3a06e19df46b Python no longer compiled on Windows, due to #include file confusion
Tim Peters <tim.peters@gmail.com>
parents: 22116
diff changeset
294 #endif /* MAXPATHLEN */
3a06e19df46b Python no longer compiled on Windows, due to #include file confusion
Tim Peters <tim.peters@gmail.com>
parents: 22116
diff changeset
295
9970
8efa37a770c6 Patches by William Lewis for Nextstep descendants.
Guido van Rossum <guido@python.org>
parents: 9954
diff changeset
296 #ifdef UNION_WAIT
8efa37a770c6 Patches by William Lewis for Nextstep descendants.
Guido van Rossum <guido@python.org>
parents: 9954
diff changeset
297 /* Emulate some macros on systems that have a union instead of macros */
8efa37a770c6 Patches by William Lewis for Nextstep descendants.
Guido van Rossum <guido@python.org>
parents: 9954
diff changeset
298
8efa37a770c6 Patches by William Lewis for Nextstep descendants.
Guido van Rossum <guido@python.org>
parents: 9954
diff changeset
299 #ifndef WIFEXITED
8efa37a770c6 Patches by William Lewis for Nextstep descendants.
Guido van Rossum <guido@python.org>
parents: 9954
diff changeset
300 #define WIFEXITED(u_wait) (!(u_wait).w_termsig && !(u_wait).w_coredump)
8efa37a770c6 Patches by William Lewis for Nextstep descendants.
Guido van Rossum <guido@python.org>
parents: 9954
diff changeset
301 #endif
8efa37a770c6 Patches by William Lewis for Nextstep descendants.
Guido van Rossum <guido@python.org>
parents: 9954
diff changeset
302
8efa37a770c6 Patches by William Lewis for Nextstep descendants.
Guido van Rossum <guido@python.org>
parents: 9954
diff changeset
303 #ifndef WEXITSTATUS
8efa37a770c6 Patches by William Lewis for Nextstep descendants.
Guido van Rossum <guido@python.org>
parents: 9954
diff changeset
304 #define WEXITSTATUS(u_wait) (WIFEXITED(u_wait)?((u_wait).w_retcode):-1)
8efa37a770c6 Patches by William Lewis for Nextstep descendants.
Guido van Rossum <guido@python.org>
parents: 9954
diff changeset
305 #endif
8efa37a770c6 Patches by William Lewis for Nextstep descendants.
Guido van Rossum <guido@python.org>
parents: 9954
diff changeset
306
8efa37a770c6 Patches by William Lewis for Nextstep descendants.
Guido van Rossum <guido@python.org>
parents: 9954
diff changeset
307 #ifndef WTERMSIG
8efa37a770c6 Patches by William Lewis for Nextstep descendants.
Guido van Rossum <guido@python.org>
parents: 9954
diff changeset
308 #define WTERMSIG(u_wait) ((u_wait).w_termsig)
8efa37a770c6 Patches by William Lewis for Nextstep descendants.
Guido van Rossum <guido@python.org>
parents: 9954
diff changeset
309 #endif
8efa37a770c6 Patches by William Lewis for Nextstep descendants.
Guido van Rossum <guido@python.org>
parents: 9954
diff changeset
310
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36887
diff changeset
311 #define WAIT_TYPE union wait
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36887
diff changeset
312 #define WAIT_STATUS_INT(s) (s.w_status)
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36887
diff changeset
313
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36887
diff changeset
314 #else /* !UNION_WAIT */
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36887
diff changeset
315 #define WAIT_TYPE int
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36887
diff changeset
316 #define WAIT_STATUS_INT(s) (s)
9970
8efa37a770c6 Patches by William Lewis for Nextstep descendants.
Guido van Rossum <guido@python.org>
parents: 9954
diff changeset
317 #endif /* UNION_WAIT */
8efa37a770c6 Patches by William Lewis for Nextstep descendants.
Guido van Rossum <guido@python.org>
parents: 9954
diff changeset
318
11893
610d7d642917 Second attempt to fix the ctermid_r/tmpnam_r warnings: define USE_CTERMID_R
Greg Ward <gward@python.net>
parents: 11892
diff changeset
319 /* Don't use the "_r" form if we don't need it (also, won't have a
610d7d642917 Second attempt to fix the ctermid_r/tmpnam_r warnings: define USE_CTERMID_R
Greg Ward <gward@python.net>
parents: 11892
diff changeset
320 prototype for it, at least on Solaris -- maybe others as well?). */
610d7d642917 Second attempt to fix the ctermid_r/tmpnam_r warnings: define USE_CTERMID_R
Greg Ward <gward@python.net>
parents: 11892
diff changeset
321 #if defined(HAVE_CTERMID_R) && defined(WITH_THREAD)
610d7d642917 Second attempt to fix the ctermid_r/tmpnam_r warnings: define USE_CTERMID_R
Greg Ward <gward@python.net>
parents: 11892
diff changeset
322 #define USE_CTERMID_R
610d7d642917 Second attempt to fix the ctermid_r/tmpnam_r warnings: define USE_CTERMID_R
Greg Ward <gward@python.net>
parents: 11892
diff changeset
323 #endif
610d7d642917 Second attempt to fix the ctermid_r/tmpnam_r warnings: define USE_CTERMID_R
Greg Ward <gward@python.net>
parents: 11892
diff changeset
324
13153
32816ce60a49 Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents: 13058
diff changeset
325 /* choose the appropriate stat and fstat functions and return structs */
13251
86177fb0edd8 Crude way to fix a problem on AIX: #undef STAT before defining it.
Guido van Rossum <guido@python.org>
parents: 13153
diff changeset
326 #undef STAT
67689
07e1eb244df8 Merged revisions 88111 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 67417
diff changeset
327 #undef FSTAT
07e1eb244df8 Merged revisions 88111 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 67417
diff changeset
328 #undef STRUCT_STAT
24071
8142f8d668a0 Patch #569753: Remove support for WIN16.
Martin v. Löwis <martin@v.loewis.de>
parents: 23937
diff changeset
329 #if defined(MS_WIN64) || defined(MS_WINDOWS)
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
330 # define STAT win32_stat
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
331 # define FSTAT win32_fstat
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
332 # define STRUCT_STAT struct win32_stat
13153
32816ce60a49 Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents: 13058
diff changeset
333 #else
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
334 # define STAT stat
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
335 # define FSTAT fstat
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
336 # define STRUCT_STAT struct stat
13153
32816ce60a49 Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents: 13058
diff changeset
337 #endif
32816ce60a49 Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents: 13058
diff changeset
338
28735
7bba3e2be54e Enable os.fsync() for Windows, mapping it to MS's _commit() there. The
Tim Peters <tim.peters@gmail.com>
parents: 28708
diff changeset
339 #if defined(MAJOR_IN_MKDEV)
25694
e9e7f160aac9 Patch #569139: Implementation of major, minor and makedev.
Martin v. Löwis <martin@v.loewis.de>
parents: 25630
diff changeset
340 #include <sys/mkdev.h>
e9e7f160aac9 Patch #569139: Implementation of major, minor and makedev.
Martin v. Löwis <martin@v.loewis.de>
parents: 25630
diff changeset
341 #else
e9e7f160aac9 Patch #569139: Implementation of major, minor and makedev.
Martin v. Löwis <martin@v.loewis.de>
parents: 25630
diff changeset
342 #if defined(MAJOR_IN_SYSMACROS)
e9e7f160aac9 Patch #569139: Implementation of major, minor and makedev.
Martin v. Löwis <martin@v.loewis.de>
parents: 25630
diff changeset
343 #include <sys/sysmacros.h>
e9e7f160aac9 Patch #569139: Implementation of major, minor and makedev.
Martin v. Löwis <martin@v.loewis.de>
parents: 25630
diff changeset
344 #endif
23193
508fd952c9e9 #546163, fix link problem on Solaris 8 for makedev when using mknod
Neal Norwitz <nnorwitz@gmail.com>
parents: 23170
diff changeset
345 #if defined(HAVE_MKNOD) && defined(HAVE_SYS_MKDEV_H)
508fd952c9e9 #546163, fix link problem on Solaris 8 for makedev when using mknod
Neal Norwitz <nnorwitz@gmail.com>
parents: 23170
diff changeset
346 #include <sys/mkdev.h>
508fd952c9e9 #546163, fix link problem on Solaris 8 for makedev when using mknod
Neal Norwitz <nnorwitz@gmail.com>
parents: 23170
diff changeset
347 #endif
25694
e9e7f160aac9 Patch #569139: Implementation of major, minor and makedev.
Martin v. Löwis <martin@v.loewis.de>
parents: 25630
diff changeset
348 #endif
13153
32816ce60a49 Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents: 13058
diff changeset
349
51743
27933753a387 #5306: Fix compilation on Windows by properly merging change 69495.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 50911
diff changeset
350 #if defined _MSC_VER && _MSC_VER >= 1400
27933753a387 #5306: Fix compilation on Windows by properly merging change 69495.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 50911
diff changeset
351 /* Microsoft CRT in VS2005 and higher will verify that a filehandle is
27933753a387 #5306: Fix compilation on Windows by properly merging change 69495.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 50911
diff changeset
352 * valid and throw an assertion if it isn't.
27933753a387 #5306: Fix compilation on Windows by properly merging change 69495.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 50911
diff changeset
353 * Normally, an invalid fd is likely to be a C program error and therefore
27933753a387 #5306: Fix compilation on Windows by properly merging change 69495.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 50911
diff changeset
354 * an assertion can be useful, but it does contradict the POSIX standard
27933753a387 #5306: Fix compilation on Windows by properly merging change 69495.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 50911
diff changeset
355 * which for write(2) states:
27933753a387 #5306: Fix compilation on Windows by properly merging change 69495.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 50911
diff changeset
356 * "Otherwise, -1 shall be returned and errno set to indicate the error."
27933753a387 #5306: Fix compilation on Windows by properly merging change 69495.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 50911
diff changeset
357 * "[EBADF] The fildes argument is not a valid file descriptor open for
27933753a387 #5306: Fix compilation on Windows by properly merging change 69495.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 50911
diff changeset
358 * writing."
27933753a387 #5306: Fix compilation on Windows by properly merging change 69495.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 50911
diff changeset
359 * Furthermore, python allows the user to enter any old integer
27933753a387 #5306: Fix compilation on Windows by properly merging change 69495.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 50911
diff changeset
360 * as a fd and should merely raise a python exception on error.
27933753a387 #5306: Fix compilation on Windows by properly merging change 69495.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 50911
diff changeset
361 * The Microsoft CRT doesn't provide an official way to check for the
27933753a387 #5306: Fix compilation on Windows by properly merging change 69495.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 50911
diff changeset
362 * validity of a file descriptor, but we can emulate its internal behaviour
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
363 * by using the exported __pinfo data member and knowledge of the
51743
27933753a387 #5306: Fix compilation on Windows by properly merging change 69495.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 50911
diff changeset
364 * internal structures involved.
27933753a387 #5306: Fix compilation on Windows by properly merging change 69495.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 50911
diff changeset
365 * The structures below must be updated for each version of visual studio
27933753a387 #5306: Fix compilation on Windows by properly merging change 69495.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 50911
diff changeset
366 * according to the file internal.h in the CRT source, until MS comes
27933753a387 #5306: Fix compilation on Windows by properly merging change 69495.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 50911
diff changeset
367 * up with a less hacky way to do this.
27933753a387 #5306: Fix compilation on Windows by properly merging change 69495.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 50911
diff changeset
368 * (all of this is to avoid globally modifying the CRT behaviour using
27933753a387 #5306: Fix compilation on Windows by properly merging change 69495.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 50911
diff changeset
369 * _set_invalid_parameter_handler() and _CrtSetReportMode())
27933753a387 #5306: Fix compilation on Windows by properly merging change 69495.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 50911
diff changeset
370 */
53125
95132cc22ee5 Merging r70958 from the trunk, regarding http://bugs.python.org/issue5623
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 53072
diff changeset
371 /* The actual size of the structure is determined at runtime.
95132cc22ee5 Merging r70958 from the trunk, regarding http://bugs.python.org/issue5623
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 53072
diff changeset
372 * Only the first items must be present.
95132cc22ee5 Merging r70958 from the trunk, regarding http://bugs.python.org/issue5623
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 53072
diff changeset
373 */
51743
27933753a387 #5306: Fix compilation on Windows by properly merging change 69495.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 50911
diff changeset
374 typedef struct {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
375 intptr_t osfhnd;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
376 char osfile;
53125
95132cc22ee5 Merging r70958 from the trunk, regarding http://bugs.python.org/issue5623
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 53072
diff changeset
377 } my_ioinfo;
95132cc22ee5 Merging r70958 from the trunk, regarding http://bugs.python.org/issue5623
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 53072
diff changeset
378
95132cc22ee5 Merging r70958 from the trunk, regarding http://bugs.python.org/issue5623
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 53072
diff changeset
379 extern __declspec(dllimport) char * __pioinfo[];
51743
27933753a387 #5306: Fix compilation on Windows by properly merging change 69495.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 50911
diff changeset
380 #define IOINFO_L2E 5
27933753a387 #5306: Fix compilation on Windows by properly merging change 69495.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 50911
diff changeset
381 #define IOINFO_ARRAY_ELTS (1 << IOINFO_L2E)
27933753a387 #5306: Fix compilation on Windows by properly merging change 69495.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 50911
diff changeset
382 #define IOINFO_ARRAYS 64
27933753a387 #5306: Fix compilation on Windows by properly merging change 69495.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 50911
diff changeset
383 #define _NHANDLE_ (IOINFO_ARRAYS * IOINFO_ARRAY_ELTS)
27933753a387 #5306: Fix compilation on Windows by properly merging change 69495.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 50911
diff changeset
384 #define FOPEN 0x01
27933753a387 #5306: Fix compilation on Windows by properly merging change 69495.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 50911
diff changeset
385 #define _NO_CONSOLE_FILENO (intptr_t)-2
27933753a387 #5306: Fix compilation on Windows by properly merging change 69495.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 50911
diff changeset
386
27933753a387 #5306: Fix compilation on Windows by properly merging change 69495.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 50911
diff changeset
387 /* This function emulates what the windows CRT does to validate file handles */
27933753a387 #5306: Fix compilation on Windows by properly merging change 69495.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 50911
diff changeset
388 int
27933753a387 #5306: Fix compilation on Windows by properly merging change 69495.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 50911
diff changeset
389 _PyVerify_fd(int fd)
27933753a387 #5306: Fix compilation on Windows by properly merging change 69495.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 50911
diff changeset
390 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
391 const int i1 = fd >> IOINFO_L2E;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
392 const int i2 = fd & ((1 << IOINFO_L2E) - 1);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
393
64047
79d572ea17df Merged revisions 84076 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 64035
diff changeset
394 static size_t sizeof_ioinfo = 0;
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
395
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
396 /* Determine the actual size of the ioinfo structure,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
397 * as used by the CRT loaded in memory
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
398 */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
399 if (sizeof_ioinfo == 0 && __pioinfo[0] != NULL) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
400 sizeof_ioinfo = _msize(__pioinfo[0]) / IOINFO_ARRAY_ELTS;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
401 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
402 if (sizeof_ioinfo == 0) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
403 /* This should not happen... */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
404 goto fail;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
405 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
406
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
407 /* See that it isn't a special CLEAR fileno */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
408 if (fd != _NO_CONSOLE_FILENO) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
409 /* Microsoft CRT would check that 0<=fd<_nhandle but we can't do that. Instead
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
410 * we check pointer validity and other info
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
411 */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
412 if (0 <= i1 && i1 < IOINFO_ARRAYS && __pioinfo[i1] != NULL) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
413 /* finally, check that the file is open */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
414 my_ioinfo* info = (my_ioinfo*)(__pioinfo[i1] + i2 * sizeof_ioinfo);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
415 if (info->osfile & FOPEN) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
416 return 1;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
417 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
418 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
419 }
53125
95132cc22ee5 Merging r70958 from the trunk, regarding http://bugs.python.org/issue5623
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 53072
diff changeset
420 fail:
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
421 errno = EBADF;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
422 return 0;
51743
27933753a387 #5306: Fix compilation on Windows by properly merging change 69495.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 50911
diff changeset
423 }
27933753a387 #5306: Fix compilation on Windows by properly merging change 69495.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 50911
diff changeset
424
27933753a387 #5306: Fix compilation on Windows by properly merging change 69495.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 50911
diff changeset
425 /* the special case of checking dup2. The target fd must be in a sensible range */
27933753a387 #5306: Fix compilation on Windows by properly merging change 69495.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 50911
diff changeset
426 static int
27933753a387 #5306: Fix compilation on Windows by properly merging change 69495.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 50911
diff changeset
427 _PyVerify_fd_dup2(int fd1, int fd2)
27933753a387 #5306: Fix compilation on Windows by properly merging change 69495.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 50911
diff changeset
428 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
429 if (!_PyVerify_fd(fd1))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
430 return 0;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
431 if (fd2 == _NO_CONSOLE_FILENO)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
432 return 0;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
433 if ((unsigned)fd2 < _NHANDLE_)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
434 return 1;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
435 else
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
436 return 0;
51743
27933753a387 #5306: Fix compilation on Windows by properly merging change 69495.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 50911
diff changeset
437 }
27933753a387 #5306: Fix compilation on Windows by properly merging change 69495.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 50911
diff changeset
438 #else
27933753a387 #5306: Fix compilation on Windows by properly merging change 69495.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 50911
diff changeset
439 /* dummy version. _PyVerify_fd() is already defined in fileobject.h */
27933753a387 #5306: Fix compilation on Windows by properly merging change 69495.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 50911
diff changeset
440 #define _PyVerify_fd_dup2(A, B) (1)
27933753a387 #5306: Fix compilation on Windows by properly merging change 69495.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 50911
diff changeset
441 #endif
27933753a387 #5306: Fix compilation on Windows by properly merging change 69495.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 50911
diff changeset
442
66427
4fed00659831 ifdef a Windows specific section.
Brian Curtin <brian.curtin@gmail.com>
parents: 66425
diff changeset
443 #ifdef MS_WINDOWS
66425
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
444 /* The following structure was copied from
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
445 http://msdn.microsoft.com/en-us/library/ms791514.aspx as the required
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
446 include doesn't seem to be present in the Windows SDK (at least as included
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
447 with Visual Studio Express). */
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
448 typedef struct _REPARSE_DATA_BUFFER {
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
449 ULONG ReparseTag;
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
450 USHORT ReparseDataLength;
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
451 USHORT Reserved;
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
452 union {
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
453 struct {
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
454 USHORT SubstituteNameOffset;
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
455 USHORT SubstituteNameLength;
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
456 USHORT PrintNameOffset;
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
457 USHORT PrintNameLength;
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
458 ULONG Flags;
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
459 WCHAR PathBuffer[1];
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
460 } SymbolicLinkReparseBuffer;
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
461
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
462 struct {
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
463 USHORT SubstituteNameOffset;
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
464 USHORT SubstituteNameLength;
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
465 USHORT PrintNameOffset;
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
466 USHORT PrintNameLength;
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
467 WCHAR PathBuffer[1];
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
468 } MountPointReparseBuffer;
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
469
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
470 struct {
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
471 UCHAR DataBuffer[1];
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
472 } GenericReparseBuffer;
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
473 };
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
474 } REPARSE_DATA_BUFFER, *PREPARSE_DATA_BUFFER;
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
475
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
476 #define REPARSE_DATA_BUFFER_HEADER_SIZE FIELD_OFFSET(REPARSE_DATA_BUFFER,\
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
477 GenericReparseBuffer)
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
478 #define MAXIMUM_REPARSE_DATA_BUFFER_SIZE ( 16 * 1024 )
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
479
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
480 static int
70811
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
481 win32_get_reparse_tag(HANDLE reparse_point_handle, ULONG *reparse_tag)
66425
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
482 {
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
483 char target_buffer[MAXIMUM_REPARSE_DATA_BUFFER_SIZE];
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
484 REPARSE_DATA_BUFFER *rdb = (REPARSE_DATA_BUFFER *)target_buffer;
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
485 DWORD n_bytes_returned;
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
486
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
487 if (0 == DeviceIoControl(
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
488 reparse_point_handle,
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
489 FSCTL_GET_REPARSE_POINT,
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
490 NULL, 0, /* in buffer */
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
491 target_buffer, sizeof(target_buffer),
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
492 &n_bytes_returned,
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
493 NULL)) /* we're not using OVERLAPPED_IO */
70811
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
494 return FALSE;
66425
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
495
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
496 if (reparse_tag)
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
497 *reparse_tag = rdb->ReparseTag;
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
498
70811
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
499 return TRUE;
66425
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
500 }
66427
4fed00659831 ifdef a Windows specific section.
Brian Curtin <brian.curtin@gmail.com>
parents: 66425
diff changeset
501 #endif /* MS_WINDOWS */
66425
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
502
6
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
503 /* Return a dictionary corresponding to the POSIX environment table */
24469
79f129b073de - Get _environ through the NSEnviron call in a MacOSX framework. This allows
Jack Jansen <jack.jansen@cwi.nl>
parents: 24436
diff changeset
504 #ifdef WITH_NEXT_FRAMEWORK
79f129b073de - Get _environ through the NSEnviron call in a MacOSX framework. This allows
Jack Jansen <jack.jansen@cwi.nl>
parents: 24436
diff changeset
505 /* On Darwin/MacOSX a shared library or framework has no access to
79f129b073de - Get _environ through the NSEnviron call in a MacOSX framework. This allows
Jack Jansen <jack.jansen@cwi.nl>
parents: 24436
diff changeset
506 ** environ directly, we must obtain it with _NSGetEnviron().
79f129b073de - Get _environ through the NSEnviron call in a MacOSX framework. This allows
Jack Jansen <jack.jansen@cwi.nl>
parents: 24436
diff changeset
507 */
79f129b073de - Get _environ through the NSEnviron call in a MacOSX framework. This allows
Jack Jansen <jack.jansen@cwi.nl>
parents: 24436
diff changeset
508 #include <crt_externs.h>
79f129b073de - Get _environ through the NSEnviron call in a MacOSX framework. This allows
Jack Jansen <jack.jansen@cwi.nl>
parents: 24436
diff changeset
509 static char **environ;
79f129b073de - Get _environ through the NSEnviron call in a MacOSX framework. This allows
Jack Jansen <jack.jansen@cwi.nl>
parents: 24436
diff changeset
510 #elif !defined(_MSC_VER) && ( !defined(__WATCOMC__) || defined(__QNX__) )
6
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
511 extern char **environ;
3601
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
512 #endif /* !_MSC_VER */
6
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
513
4672
5b53268f547a Renamed.
Barry Warsaw <barry@python.org>
parents: 4600
diff changeset
514 static PyObject *
13651
8a063423e0b7 Bunch of minor ANSIfications: 'void initfunc()' -> 'void initfunc(void)',
Thomas Wouters <thomas@python.org>
parents: 13642
diff changeset
515 convertenviron(void)
6
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
516 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
517 PyObject *d;
43801
2f7c401cb62e Issue 1406: use widechar api for os.environ, on Windows.
Thomas Heller <theller@ctypes.org>
parents: 43777
diff changeset
518 #ifdef MS_WINDOWS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
519 wchar_t **e;
43801
2f7c401cb62e Issue 1406: use widechar api for os.environ, on Windows.
Thomas Heller <theller@ctypes.org>
parents: 43777
diff changeset
520 #else
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
521 char **e;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
522 #endif
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
523 #if defined(PYOS_OS2)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
524 APIRET rc;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
525 char buffer[1024]; /* OS/2 Provides a Documented Max of 1024 Chars */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
526 #endif
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
527
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
528 d = PyDict_New();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
529 if (d == NULL)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
530 return NULL;
24469
79f129b073de - Get _environ through the NSEnviron call in a MacOSX framework. This allows
Jack Jansen <jack.jansen@cwi.nl>
parents: 24436
diff changeset
531 #ifdef WITH_NEXT_FRAMEWORK
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
532 if (environ == NULL)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
533 environ = *_NSGetEnviron();
24469
79f129b073de - Get _environ through the NSEnviron call in a MacOSX framework. This allows
Jack Jansen <jack.jansen@cwi.nl>
parents: 24436
diff changeset
534 #endif
43801
2f7c401cb62e Issue 1406: use widechar api for os.environ, on Windows.
Thomas Heller <theller@ctypes.org>
parents: 43777
diff changeset
535 #ifdef MS_WINDOWS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
536 /* _wenviron must be initialized in this way if the program is started
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
537 through main() instead of wmain(). */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
538 _wgetenv(L"");
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
539 if (_wenviron == NULL)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
540 return d;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
541 /* This part ignores errors */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
542 for (e = _wenviron; *e != NULL; e++) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
543 PyObject *k;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
544 PyObject *v;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
545 wchar_t *p = wcschr(*e, L'=');
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
546 if (p == NULL)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
547 continue;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
548 k = PyUnicode_FromWideChar(*e, (Py_ssize_t)(p-*e));
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
549 if (k == NULL) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
550 PyErr_Clear();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
551 continue;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
552 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
553 v = PyUnicode_FromWideChar(p+1, wcslen(p+1));
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
554 if (v == NULL) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
555 PyErr_Clear();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
556 Py_DECREF(k);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
557 continue;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
558 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
559 if (PyDict_GetItem(d, k) == NULL) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
560 if (PyDict_SetItem(d, k, v) != 0)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
561 PyErr_Clear();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
562 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
563 Py_DECREF(k);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
564 Py_DECREF(v);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
565 }
43801
2f7c401cb62e Issue 1406: use widechar api for os.environ, on Windows.
Thomas Heller <theller@ctypes.org>
parents: 43777
diff changeset
566 #else
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
567 if (environ == NULL)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
568 return d;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
569 /* This part ignores errors */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
570 for (e = environ; *e != NULL; e++) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
571 PyObject *k;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
572 PyObject *v;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
573 char *p = strchr(*e, '=');
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
574 if (p == NULL)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
575 continue;
61332
7e5bdf59a487 Issue #8603: Create a bytes version of os.environ for Unix
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61300
diff changeset
576 k = PyBytes_FromStringAndSize(*e, (int)(p-*e));
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
577 if (k == NULL) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
578 PyErr_Clear();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
579 continue;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
580 }
61332
7e5bdf59a487 Issue #8603: Create a bytes version of os.environ for Unix
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61300
diff changeset
581 v = PyBytes_FromStringAndSize(p+1, strlen(p+1));
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
582 if (v == NULL) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
583 PyErr_Clear();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
584 Py_DECREF(k);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
585 continue;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
586 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
587 if (PyDict_GetItem(d, k) == NULL) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
588 if (PyDict_SetItem(d, k, v) != 0)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
589 PyErr_Clear();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
590 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
591 Py_DECREF(k);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
592 Py_DECREF(v);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
593 }
43801
2f7c401cb62e Issue 1406: use widechar api for os.environ, on Windows.
Thomas Heller <theller@ctypes.org>
parents: 43777
diff changeset
594 #endif
28949
ac487a7f7f2c Patch #708495: Port more stuff to OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents: 28735
diff changeset
595 #if defined(PYOS_OS2)
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
596 rc = DosQueryExtLIBPATH(buffer, BEGIN_LIBPATH);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
597 if (rc == NO_ERROR) { /* (not a type, envname is NOT 'BEGIN_LIBPATH') */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
598 PyObject *v = PyBytes_FromString(buffer);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
599 PyDict_SetItemString(d, "BEGINLIBPATH", v);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
600 Py_DECREF(v);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
601 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
602 rc = DosQueryExtLIBPATH(buffer, END_LIBPATH);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
603 if (rc == NO_ERROR) { /* (not a typo, envname is NOT 'END_LIBPATH') */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
604 PyObject *v = PyBytes_FromString(buffer);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
605 PyDict_SetItemString(d, "ENDLIBPATH", v);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
606 Py_DECREF(v);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
607 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
608 #endif
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
609 return d;
6
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
610 }
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
611
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
612 /* Set a POSIX-specific error from errno, and return NULL */
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
613
8708
acf49c9def7d Several changes to support inclusion of filename in relevent
Barry Warsaw <barry@python.org>
parents: 8497
diff changeset
614 static PyObject *
13651
8a063423e0b7 Bunch of minor ANSIfications: 'void initfunc()' -> 'void initfunc(void)',
Thomas Wouters <thomas@python.org>
parents: 13642
diff changeset
615 posix_error(void)
2456
bc03225a4493 changes for NT/Borland C
Guido van Rossum <guido@python.org>
parents: 2370
diff changeset
616 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
617 return PyErr_SetFromErrno(PyExc_OSError);
6
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
618 }
8708
acf49c9def7d Several changes to support inclusion of filename in relevent
Barry Warsaw <barry@python.org>
parents: 8497
diff changeset
619 static PyObject *
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
620 posix_error_with_filename(char* name)
8708
acf49c9def7d Several changes to support inclusion of filename in relevent
Barry Warsaw <barry@python.org>
parents: 8497
diff changeset
621 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
622 return PyErr_SetFromErrnoWithFilename(PyExc_OSError, name);
8708
acf49c9def7d Several changes to support inclusion of filename in relevent
Barry Warsaw <barry@python.org>
parents: 8497
diff changeset
623 }
acf49c9def7d Several changes to support inclusion of filename in relevent
Barry Warsaw <barry@python.org>
parents: 8497
diff changeset
624
25535
861065256487 Patch 594001: PEP 277 - Unicode file name support for Windows NT.
Mark Hammond <mhammond@skippinet.com.au>
parents: 25327
diff changeset
625
17817
f7c385226f65 Add support for Windows using "mbcs" as the default Unicode encoding when dealing with the file system. As discussed on python-dev and in patch 410465.
Mark Hammond <mhammond@skippinet.com.au>
parents: 17518
diff changeset
626 static PyObject *
53767
ac209f132b17 Issue #5915: Implement PEP 383, Non-decodable Bytes in
Martin v. Löwis <martin@v.loewis.de>
parents: 53731
diff changeset
627 posix_error_with_allocated_filename(PyObject* name)
ac209f132b17 Issue #5915: Implement PEP 383, Non-decodable Bytes in
Martin v. Löwis <martin@v.loewis.de>
parents: 53731
diff changeset
628 {
61385
a77437bde31a posix_error_with_allocated_filename() decodes the filename with
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61365
diff changeset
629 PyObject *name_str, *rc;
a77437bde31a posix_error_with_allocated_filename() decodes the filename with
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61365
diff changeset
630 name_str = PyUnicode_DecodeFSDefaultAndSize(PyBytes_AsString(name),
a77437bde31a posix_error_with_allocated_filename() decodes the filename with
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61365
diff changeset
631 PyBytes_GET_SIZE(name));
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
632 Py_DECREF(name);
61385
a77437bde31a posix_error_with_allocated_filename() decodes the filename with
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61365
diff changeset
633 rc = PyErr_SetFromErrnoWithFilenameObject(PyExc_OSError,
a77437bde31a posix_error_with_allocated_filename() decodes the filename with
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61365
diff changeset
634 name_str);
a77437bde31a posix_error_with_allocated_filename() decodes the filename with
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61365
diff changeset
635 Py_XDECREF(name_str);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
636 return rc;
17817
f7c385226f65 Add support for Windows using "mbcs" as the default Unicode encoding when dealing with the file system. As discussed on python-dev and in patch 410465.
Mark Hammond <mhammond@skippinet.com.au>
parents: 17518
diff changeset
637 }
f7c385226f65 Add support for Windows using "mbcs" as the default Unicode encoding when dealing with the file system. As discussed on python-dev and in patch 410465.
Mark Hammond <mhammond@skippinet.com.au>
parents: 17518
diff changeset
638
24071
8142f8d668a0 Patch #569753: Remove support for WIN16.
Martin v. Löwis <martin@v.loewis.de>
parents: 23937
diff changeset
639 #ifdef MS_WINDOWS
13468
b907ebf3b052 - improved os.popen support for windows, based on win32pipe
Fredrik Lundh <fredrik@pythonware.com>
parents: 13462
diff changeset
640 static PyObject *
62874
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
641 win32_error(char* function, const char* filename)
13468
b907ebf3b052 - improved os.popen support for windows, based on win32pipe
Fredrik Lundh <fredrik@pythonware.com>
parents: 13462
diff changeset
642 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
643 /* XXX We should pass the function name along in the future.
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
644 (winreg.c also wants to pass the function name.)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
645 This would however require an additional param to the
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
646 Windows error object, which is non-trivial.
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
647 */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
648 errno = GetLastError();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
649 if (filename)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
650 return PyErr_SetFromWindowsErrWithFilename(errno, filename);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
651 else
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
652 return PyErr_SetFromWindowsErr(errno);
13468
b907ebf3b052 - improved os.popen support for windows, based on win32pipe
Fredrik Lundh <fredrik@pythonware.com>
parents: 13462
diff changeset
653 }
25535
861065256487 Patch 594001: PEP 277 - Unicode file name support for Windows NT.
Mark Hammond <mhammond@skippinet.com.au>
parents: 25327
diff changeset
654
861065256487 Patch 594001: PEP 277 - Unicode file name support for Windows NT.
Mark Hammond <mhammond@skippinet.com.au>
parents: 25327
diff changeset
655 static PyObject *
861065256487 Patch 594001: PEP 277 - Unicode file name support for Windows NT.
Mark Hammond <mhammond@skippinet.com.au>
parents: 25327
diff changeset
656 win32_error_unicode(char* function, Py_UNICODE* filename)
861065256487 Patch 594001: PEP 277 - Unicode file name support for Windows NT.
Mark Hammond <mhammond@skippinet.com.au>
parents: 25327
diff changeset
657 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
658 /* XXX - see win32_error for comments on 'function' */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
659 errno = GetLastError();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
660 if (filename)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
661 return PyErr_SetFromWindowsErrWithUnicodeFilename(errno, filename);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
662 else
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
663 return PyErr_SetFromWindowsErr(errno);
25535
861065256487 Patch 594001: PEP 277 - Unicode file name support for Windows NT.
Mark Hammond <mhammond@skippinet.com.au>
parents: 25327
diff changeset
664 }
861065256487 Patch 594001: PEP 277 - Unicode file name support for Windows NT.
Mark Hammond <mhammond@skippinet.com.au>
parents: 25327
diff changeset
665
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
666 static int
48716
612b0c0e5a0f Merged revisions 65745 via svnmerge from
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 48683
diff changeset
667 convert_to_unicode(PyObject **param)
612b0c0e5a0f Merged revisions 65745 via svnmerge from
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 48683
diff changeset
668 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
669 if (PyUnicode_CheckExact(*param))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
670 Py_INCREF(*param);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
671 else if (PyUnicode_Check(*param))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
672 /* For a Unicode subtype that's not a Unicode object,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
673 return a true Unicode object with the same data. */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
674 *param = PyUnicode_FromUnicode(PyUnicode_AS_UNICODE(*param),
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
675 PyUnicode_GET_SIZE(*param));
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
676 else
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
677 *param = PyUnicode_FromEncodedObject(*param,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
678 Py_FileSystemDefaultEncoding,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
679 "strict");
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
680 return (*param) != NULL;
25535
861065256487 Patch 594001: PEP 277 - Unicode file name support for Windows NT.
Mark Hammond <mhammond@skippinet.com.au>
parents: 25327
diff changeset
681 }
861065256487 Patch 594001: PEP 277 - Unicode file name support for Windows NT.
Mark Hammond <mhammond@skippinet.com.au>
parents: 25327
diff changeset
682
54129
77cfef596d33 Merged revisions 72698-72699 via svnmerge from
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 53993
diff changeset
683 #endif /* MS_WINDOWS */
6
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
684
6766
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
685 #if defined(PYOS_OS2)
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
686 /**********************************************************************
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
687 * Helper Function to Trim and Format OS/2 Messages
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
688 **********************************************************************/
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
689 static void
6766
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
690 os2_formatmsg(char *msgbuf, int msglen, char *reason)
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
691 {
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
692 msgbuf[msglen] = '\0'; /* OS/2 Doesn't Guarantee a Terminator */
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
693
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
694 if (strlen(msgbuf) > 0) { /* If Non-Empty Msg, Trim CRLF */
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
695 char *lastc = &msgbuf[ strlen(msgbuf)-1 ];
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
696
36090
8cb686dd6e64 Fix SF bug #1072182, problems with signed characters.
Neal Norwitz <nnorwitz@gmail.com>
parents: 35923
diff changeset
697 while (lastc > msgbuf && isspace(Py_CHARMASK(*lastc)))
6766
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
698 *lastc-- = '\0'; /* Trim Trailing Whitespace (CRLF) */
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
699 }
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
700
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
701 /* Add Optional Reason Text */
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
702 if (reason) {
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
703 strcat(msgbuf, " : ");
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
704 strcat(msgbuf, reason);
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
705 }
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
706 }
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
707
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
708 /**********************************************************************
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
709 * Decode an OS/2 Operating System Error Code
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
710 *
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
711 * A convenience function to lookup an OS/2 error code and return a
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
712 * text message we can use to raise a Python exception.
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
713 *
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
714 * Notes:
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
715 * The messages for errors returned from the OS/2 kernel reside in
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
716 * the file OSO001.MSG in the \OS2 directory hierarchy.
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
717 *
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
718 **********************************************************************/
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
719 static char *
6766
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
720 os2_strerror(char *msgbuf, int msgbuflen, int errorcode, char *reason)
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
721 {
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
722 APIRET rc;
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
723 ULONG msglen;
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
724
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
725 /* Retrieve Kernel-Related Error Message from OSO001.MSG File */
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
726 Py_BEGIN_ALLOW_THREADS
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
727 rc = DosGetMessage(NULL, 0, msgbuf, msgbuflen,
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
728 errorcode, "oso001.msg", &msglen);
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
729 Py_END_ALLOW_THREADS
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
730
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
731 if (rc == NO_ERROR)
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
732 os2_formatmsg(msgbuf, msglen, reason);
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
733 else
21075
dc641e1256f9 Repair a botched PyOS_snprintf conversion.
Tim Peters <tim.peters@gmail.com>
parents: 21073
diff changeset
734 PyOS_snprintf(msgbuf, msgbuflen,
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
735 "unknown OS error #%d", errorcode);
6766
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
736
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
737 return msgbuf;
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
738 }
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
739
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
740 /* Set an OS/2-specific error and return NULL. OS/2 kernel
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
741 errors are not in a global variable e.g. 'errno' nor are
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
742 they congruent with posix error numbers. */
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
743
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
744 static PyObject *
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
745 os2_error(int code)
6766
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
746 {
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
747 char text[1024];
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
748 PyObject *v;
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
749
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
750 os2_strerror(text, sizeof(text), code, "");
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
751
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
752 v = Py_BuildValue("(is)", code, text);
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
753 if (v != NULL) {
10133
5718e83020ae Got rid of the file-global PosixError. This was redundant since it
Barry Warsaw <barry@python.org>
parents: 10092
diff changeset
754 PyErr_SetObject(PyExc_OSError, v);
6766
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
755 Py_DECREF(v);
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
756 }
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
757 return NULL; /* Signal to Python that an Exception is Pending */
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
758 }
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
759
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
760 #endif /* OS2 */
6
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
761
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
762 /* POSIX generic methods */
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
763
4672
5b53268f547a Renamed.
Barry Warsaw <barry@python.org>
parents: 4600
diff changeset
764 static PyObject *
23056
a135980dd4e9 posix_fildes(): New helper: run a function that takes a file descriptor
Fred Drake <fdrake@acm.org>
parents: 23026
diff changeset
765 posix_fildes(PyObject *fdobj, int (*func)(int))
a135980dd4e9 posix_fildes(): New helper: run a function that takes a file descriptor
Fred Drake <fdrake@acm.org>
parents: 23026
diff changeset
766 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
767 int fd;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
768 int res;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
769 fd = PyObject_AsFileDescriptor(fdobj);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
770 if (fd < 0)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
771 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
772 if (!_PyVerify_fd(fd))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
773 return posix_error();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
774 Py_BEGIN_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
775 res = (*func)(fd);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
776 Py_END_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
777 if (res < 0)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
778 return posix_error();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
779 Py_INCREF(Py_None);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
780 return Py_None;
23056
a135980dd4e9 posix_fildes(): New helper: run a function that takes a file descriptor
Fred Drake <fdrake@acm.org>
parents: 23026
diff changeset
781 }
9822
17e4d81949b9 Added fsync() and fdatasync(). Patches by Scott Cotton. Requires
Guido van Rossum <guido@python.org>
parents: 9795
diff changeset
782
17e4d81949b9 Added fsync() and fdatasync(). Patches by Scott Cotton. Requires
Guido van Rossum <guido@python.org>
parents: 9795
diff changeset
783 static PyObject *
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
784 posix_1str(PyObject *args, char *format, int (*func)(const char*))
6
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
785 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
786 PyObject *opath1 = NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
787 char *path1;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
788 int res;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
789 if (!PyArg_ParseTuple(args, format,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
790 PyUnicode_FSConverter, &opath1))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
791 return NULL;
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
792 path1 = PyBytes_AsString(opath1);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
793 Py_BEGIN_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
794 res = (*func)(path1);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
795 Py_END_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
796 if (res < 0)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
797 return posix_error_with_allocated_filename(opath1);
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
798 Py_DECREF(opath1);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
799 Py_INCREF(Py_None);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
800 return Py_None;
6
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
801 }
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
802
4672
5b53268f547a Renamed.
Barry Warsaw <barry@python.org>
parents: 4600
diff changeset
803 static PyObject *
28735
7bba3e2be54e Enable os.fsync() for Windows, mapping it to MS's _commit() there. The
Tim Peters <tim.peters@gmail.com>
parents: 28708
diff changeset
804 posix_2str(PyObject *args,
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
805 char *format,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
806 int (*func)(const char *, const char *))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
807 {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
808 PyObject *opath1 = NULL, *opath2 = NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
809 char *path1, *path2;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
810 int res;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
811 if (!PyArg_ParseTuple(args, format,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
812 PyUnicode_FSConverter, &opath1,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
813 PyUnicode_FSConverter, &opath2)) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
814 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
815 }
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
816 path1 = PyBytes_AsString(opath1);
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
817 path2 = PyBytes_AsString(opath2);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
818 Py_BEGIN_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
819 res = (*func)(path1, path2);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
820 Py_END_ALLOW_THREADS
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
821 Py_DECREF(opath1);
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
822 Py_DECREF(opath2);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
823 if (res != 0)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
824 /* XXX how to report both path1 and path2??? */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
825 return posix_error();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
826 Py_INCREF(Py_None);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
827 return Py_None;
6
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
828 }
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
829
54129
77cfef596d33 Merged revisions 72698-72699 via svnmerge from
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 53993
diff changeset
830 #ifdef MS_WINDOWS
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
831 static PyObject*
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
832 win32_1str(PyObject* args, char* func,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
833 char* format, BOOL (__stdcall *funcA)(LPCSTR),
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
834 char* wformat, BOOL (__stdcall *funcW)(LPWSTR))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
835 {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
836 PyObject *uni;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
837 char *ansi;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
838 BOOL result;
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
839
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
840 if (!PyArg_ParseTuple(args, wformat, &uni))
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
841 PyErr_Clear();
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
842 else {
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
843 Py_BEGIN_ALLOW_THREADS
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
844 result = funcW(PyUnicode_AsUnicode(uni));
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
845 Py_END_ALLOW_THREADS
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
846 if (!result)
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
847 return win32_error_unicode(func, PyUnicode_AsUnicode(uni));
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
848 Py_INCREF(Py_None);
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
849 return Py_None;
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
850 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
851 if (!PyArg_ParseTuple(args, format, &ansi))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
852 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
853 Py_BEGIN_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
854 result = funcA(ansi);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
855 Py_END_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
856 if (!result)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
857 return win32_error(func, ansi);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
858 Py_INCREF(Py_None);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
859 return Py_None;
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
860
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
861 }
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
862
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
863 /* This is a reimplementation of the C library's chdir function,
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
864 but one that produces Win32 errors instead of DOS error codes.
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
865 chdir is essentially a wrapper around SetCurrentDirectory; however,
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
866 it also needs to set "magic" environment variables indicating
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
867 the per-drive current directory, which are of the form =<drive>: */
49553
3ff7bb830519 Merged revisions 66887,66891,66902-66903,66905-66906,66911-66913,66922,66927-66928,66936,66939-66940,66962,66964,66973 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 49493
diff changeset
868 static BOOL __stdcall
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
869 win32_chdir(LPCSTR path)
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
870 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
871 char new_path[MAX_PATH+1];
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
872 int result;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
873 char env[4] = "=x:";
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
874
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
875 if(!SetCurrentDirectoryA(path))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
876 return FALSE;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
877 result = GetCurrentDirectoryA(MAX_PATH+1, new_path);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
878 if (!result)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
879 return FALSE;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
880 /* In the ANSI API, there should not be any paths longer
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
881 than MAX_PATH. */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
882 assert(result <= MAX_PATH+1);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
883 if (strncmp(new_path, "\\\\", 2) == 0 ||
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
884 strncmp(new_path, "//", 2) == 0)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
885 /* UNC path, nothing to do. */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
886 return TRUE;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
887 env[1] = new_path[0];
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
888 return SetEnvironmentVariableA(env, new_path);
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
889 }
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
890
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
891 /* The Unicode version differs from the ANSI version
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
892 since the current directory might exceed MAX_PATH characters */
49553
3ff7bb830519 Merged revisions 66887,66891,66902-66903,66905-66906,66911-66913,66922,66927-66928,66936,66939-66940,66962,66964,66973 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 49493
diff changeset
893 static BOOL __stdcall
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
894 win32_wchdir(LPCWSTR path)
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
895 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
896 wchar_t _new_path[MAX_PATH+1], *new_path = _new_path;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
897 int result;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
898 wchar_t env[4] = L"=x:";
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
899
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
900 if(!SetCurrentDirectoryW(path))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
901 return FALSE;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
902 result = GetCurrentDirectoryW(MAX_PATH+1, new_path);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
903 if (!result)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
904 return FALSE;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
905 if (result > MAX_PATH+1) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
906 new_path = malloc(result * sizeof(wchar_t));
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
907 if (!new_path) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
908 SetLastError(ERROR_OUTOFMEMORY);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
909 return FALSE;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
910 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
911 result = GetCurrentDirectoryW(result, new_path);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
912 if (!result) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
913 free(new_path);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
914 return FALSE;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
915 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
916 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
917 if (wcsncmp(new_path, L"\\\\", 2) == 0 ||
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
918 wcsncmp(new_path, L"//", 2) == 0)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
919 /* UNC path, nothing to do. */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
920 return TRUE;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
921 env[1] = new_path[0];
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
922 result = SetEnvironmentVariableW(env, new_path);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
923 if (new_path != _new_path)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
924 free(new_path);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
925 return result;
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
926 }
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
927 #endif
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
928
36435
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
929 #ifdef MS_WINDOWS
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
930 /* The CRT of Windows has a number of flaws wrt. its stat() implementation:
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
931 - time stamps are restricted to second resolution
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
932 - file modification times suffer from forth-and-back conversions between
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
933 UTC and local time
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
934 Therefore, we implement our own stat, based on the Win32 API directly.
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
935 */
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
936 #define HAVE_STAT_NSEC 1
36435
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
937
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
938 struct win32_stat{
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
939 int st_dev;
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
940 __int64 st_ino;
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
941 unsigned short st_mode;
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
942 int st_nlink;
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
943 int st_uid;
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
944 int st_gid;
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
945 int st_rdev;
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
946 __int64 st_size;
67285
d8ed0cc9e338 Merged revisions 87666 via svnmerge from
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 66495
diff changeset
947 time_t st_atime;
36435
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
948 int st_atime_nsec;
67285
d8ed0cc9e338 Merged revisions 87666 via svnmerge from
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 66495
diff changeset
949 time_t st_mtime;
36435
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
950 int st_mtime_nsec;
67285
d8ed0cc9e338 Merged revisions 87666 via svnmerge from
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 66495
diff changeset
951 time_t st_ctime;
36435
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
952 int st_ctime_nsec;
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
953 };
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
954
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
955 static __int64 secs_between_epochs = 11644473600; /* Seconds between 1.1.1601 and 1.1.1970 */
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
956
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
957 static void
67285
d8ed0cc9e338 Merged revisions 87666 via svnmerge from
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 66495
diff changeset
958 FILE_TIME_to_time_t_nsec(FILETIME *in_ptr, time_t *time_out, int* nsec_out)
36435
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
959 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
960 /* XXX endianness. Shouldn't matter, as all Windows implementations are little-endian */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
961 /* Cannot simply cast and dereference in_ptr,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
962 since it might not be aligned properly */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
963 __int64 in;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
964 memcpy(&in, in_ptr, sizeof(in));
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
965 *nsec_out = (int)(in % 10000000) * 100; /* FILETIME is in units of 100 nsec. */
67285
d8ed0cc9e338 Merged revisions 87666 via svnmerge from
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 66495
diff changeset
966 *time_out = Py_SAFE_DOWNCAST((in / 10000000) - secs_between_epochs, __int64, time_t);
36435
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
967 }
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
968
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
969 static void
67285
d8ed0cc9e338 Merged revisions 87666 via svnmerge from
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 66495
diff changeset
970 time_t_to_FILE_TIME(time_t time_in, int nsec_in, FILETIME *out_ptr)
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
971 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
972 /* XXX endianness */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
973 __int64 out;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
974 out = time_in + secs_between_epochs;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
975 out = out * 10000000 + nsec_in / 100;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
976 memcpy(out_ptr, &out, sizeof(out));
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
977 }
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
978
36435
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
979 /* Below, we *know* that ugo+r is 0444 */
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
980 #if _S_IREAD != 0400
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
981 #error Unsupported C library
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
982 #endif
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
983 static int
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
984 attributes_to_mode(DWORD attr)
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
985 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
986 int m = 0;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
987 if (attr & FILE_ATTRIBUTE_DIRECTORY)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
988 m |= _S_IFDIR | 0111; /* IFEXEC for user,group,other */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
989 else
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
990 m |= _S_IFREG;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
991 if (attr & FILE_ATTRIBUTE_READONLY)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
992 m |= 0444;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
993 else
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
994 m |= 0666;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
995 return m;
36435
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
996 }
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
997
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
998 static int
66684
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
999 attribute_data_to_stat(BY_HANDLE_FILE_INFORMATION *info, ULONG reparse_tag, struct win32_stat *result)
36435
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
1000 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1001 memset(result, 0, sizeof(*result));
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1002 result->st_mode = attributes_to_mode(info->dwFileAttributes);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1003 result->st_size = (((__int64)info->nFileSizeHigh)<<32) + info->nFileSizeLow;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1004 FILE_TIME_to_time_t_nsec(&info->ftCreationTime, &result->st_ctime, &result->st_ctime_nsec);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1005 FILE_TIME_to_time_t_nsec(&info->ftLastWriteTime, &result->st_mtime, &result->st_mtime_nsec);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1006 FILE_TIME_to_time_t_nsec(&info->ftLastAccessTime, &result->st_atime, &result->st_atime_nsec);
66425
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1007 result->st_nlink = info->nNumberOfLinks;
66431
9cd1036455e7 Fix #8879. Add os.link support to Windows.
Brian Curtin <brian.curtin@gmail.com>
parents: 66427
diff changeset
1008 result->st_ino = (((__int64)info->nFileIndexHigh)<<32) + info->nFileIndexLow;
66684
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1009 if (reparse_tag == IO_REPARSE_TAG_SYMLINK) {
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1010 /* first clear the S_IFMT bits */
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1011 result->st_mode ^= (result->st_mode & 0170000);
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1012 /* now set the bits that make this a symlink */
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1013 result->st_mode |= 0120000;
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1014 }
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1015
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1016 return 0;
36435
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
1017 }
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
1018
41554
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 40893
diff changeset
1019 static BOOL
66684
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1020 attributes_from_dir(LPCSTR pszFile, BY_HANDLE_FILE_INFORMATION *info, ULONG *reparse_tag)
41554
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 40893
diff changeset
1021 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1022 HANDLE hFindFile;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1023 WIN32_FIND_DATAA FileData;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1024 hFindFile = FindFirstFileA(pszFile, &FileData);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1025 if (hFindFile == INVALID_HANDLE_VALUE)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1026 return FALSE;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1027 FindClose(hFindFile);
66425
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1028 memset(info, 0, sizeof(*info));
66684
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1029 *reparse_tag = 0;
66425
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1030 info->dwFileAttributes = FileData.dwFileAttributes;
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1031 info->ftCreationTime = FileData.ftCreationTime;
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1032 info->ftLastAccessTime = FileData.ftLastAccessTime;
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1033 info->ftLastWriteTime = FileData.ftLastWriteTime;
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1034 info->nFileSizeHigh = FileData.nFileSizeHigh;
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1035 info->nFileSizeLow = FileData.nFileSizeLow;
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1036 /* info->nNumberOfLinks = 1; */
66684
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1037 if (FileData.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT)
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1038 *reparse_tag = FileData.dwReserved0;
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1039 return TRUE;
41554
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 40893
diff changeset
1040 }
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 40893
diff changeset
1041
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 40893
diff changeset
1042 static BOOL
66684
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1043 attributes_from_dir_w(LPCWSTR pszFile, BY_HANDLE_FILE_INFORMATION *info, ULONG *reparse_tag)
41554
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 40893
diff changeset
1044 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1045 HANDLE hFindFile;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1046 WIN32_FIND_DATAW FileData;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1047 hFindFile = FindFirstFileW(pszFile, &FileData);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1048 if (hFindFile == INVALID_HANDLE_VALUE)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1049 return FALSE;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1050 FindClose(hFindFile);
66425
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1051 memset(info, 0, sizeof(*info));
66684
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1052 *reparse_tag = 0;
66425
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1053 info->dwFileAttributes = FileData.dwFileAttributes;
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1054 info->ftCreationTime = FileData.ftCreationTime;
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1055 info->ftLastAccessTime = FileData.ftLastAccessTime;
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1056 info->ftLastWriteTime = FileData.ftLastWriteTime;
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1057 info->nFileSizeHigh = FileData.nFileSizeHigh;
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1058 info->nFileSizeLow = FileData.nFileSizeLow;
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1059 /* info->nNumberOfLinks = 1; */
66684
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1060 if (FileData.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT)
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1061 *reparse_tag = FileData.dwReserved0;
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1062 return TRUE;
41554
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 40893
diff changeset
1063 }
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 40893
diff changeset
1064
70811
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1065 /* Grab GetFinalPathNameByHandle dynamically from kernel32 */
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1066 static int has_GetFinalPathNameByHandle = 0;
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1067 static DWORD (CALLBACK *Py_GetFinalPathNameByHandleA)(HANDLE, LPSTR, DWORD,
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1068 DWORD);
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1069 static DWORD (CALLBACK *Py_GetFinalPathNameByHandleW)(HANDLE, LPWSTR, DWORD,
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1070 DWORD);
66425
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1071 static int
70811
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1072 check_GetFinalPathNameByHandle()
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1073 {
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1074 HINSTANCE hKernel32;
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1075 /* only recheck */
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1076 if (!has_GetFinalPathNameByHandle)
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1077 {
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1078 hKernel32 = GetModuleHandle("KERNEL32");
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1079 *(FARPROC*)&Py_GetFinalPathNameByHandleA = GetProcAddress(hKernel32,
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1080 "GetFinalPathNameByHandleA");
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1081 *(FARPROC*)&Py_GetFinalPathNameByHandleW = GetProcAddress(hKernel32,
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1082 "GetFinalPathNameByHandleW");
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1083 has_GetFinalPathNameByHandle = Py_GetFinalPathNameByHandleA &&
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1084 Py_GetFinalPathNameByHandleW;
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1085 }
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1086 return has_GetFinalPathNameByHandle;
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1087 }
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1088
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1089 static BOOL
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1090 get_target_path(HANDLE hdl, wchar_t **target_path)
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1091 {
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1092 int buf_size, result_length;
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1093 wchar_t *buf;
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1094
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1095 /* We have a good handle to the target, use it to determine
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1096 the target path name (then we'll call lstat on it). */
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1097 buf_size = Py_GetFinalPathNameByHandleW(hdl, 0, 0,
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1098 VOLUME_NAME_DOS);
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1099 if(!buf_size)
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1100 return FALSE;
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1101
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1102 buf = (wchar_t *)malloc((buf_size+1)*sizeof(wchar_t));
70815
1524a60016d0 Correct completely broken os.stat behavior on Windows XP.
Brian Curtin <brian@python.org>
parents: 70814
diff changeset
1103 if (!buf) {
1524a60016d0 Correct completely broken os.stat behavior on Windows XP.
Brian Curtin <brian@python.org>
parents: 70814
diff changeset
1104 SetLastError(ERROR_OUTOFMEMORY);
1524a60016d0 Correct completely broken os.stat behavior on Windows XP.
Brian Curtin <brian@python.org>
parents: 70814
diff changeset
1105 return FALSE;
1524a60016d0 Correct completely broken os.stat behavior on Windows XP.
Brian Curtin <brian@python.org>
parents: 70814
diff changeset
1106 }
1524a60016d0 Correct completely broken os.stat behavior on Windows XP.
Brian Curtin <brian@python.org>
parents: 70814
diff changeset
1107
70811
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1108 result_length = Py_GetFinalPathNameByHandleW(hdl,
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1109 buf, buf_size, VOLUME_NAME_DOS);
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1110
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1111 if(!result_length) {
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1112 free(buf);
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1113 return FALSE;
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1114 }
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1115
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1116 if(!CloseHandle(hdl)) {
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1117 free(buf);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1118 return FALSE;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1119 }
70811
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1120
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1121 buf[result_length] = 0;
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1122
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1123 *target_path = buf;
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1124 return TRUE;
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1125 }
66425
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1126
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1127 static int
70811
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1128 win32_xstat_impl_w(const wchar_t *path, struct win32_stat *result,
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1129 BOOL traverse);
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1130 static int
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1131 win32_xstat_impl(const char *path, struct win32_stat *result,
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1132 BOOL traverse)
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1133 {
70840
f6d6afe53385 posixmodule.c: fix function name in argument parsing
Victor Stinner <victor.stinner@haypocalc.com>
parents: 70815
diff changeset
1134 int code;
70811
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1135 HANDLE hFile, hFile2;
66425
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1136 BY_HANDLE_FILE_INFORMATION info;
66684
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1137 ULONG reparse_tag = 0;
70840
f6d6afe53385 posixmodule.c: fix function name in argument parsing
Victor Stinner <victor.stinner@haypocalc.com>
parents: 70815
diff changeset
1138 wchar_t *target_path;
66425
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1139 const char *dot;
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1140
70811
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1141 if(!check_GetFinalPathNameByHandle()) {
70815
1524a60016d0 Correct completely broken os.stat behavior on Windows XP.
Brian Curtin <brian@python.org>
parents: 70814
diff changeset
1142 /* If the OS doesn't have GetFinalPathNameByHandle, don't
1524a60016d0 Correct completely broken os.stat behavior on Windows XP.
Brian Curtin <brian@python.org>
parents: 70814
diff changeset
1143 traverse reparse point. */
1524a60016d0 Correct completely broken os.stat behavior on Windows XP.
Brian Curtin <brian@python.org>
parents: 70814
diff changeset
1144 traverse = FALSE;
66684
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1145 }
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1146
66425
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1147 hFile = CreateFileA(
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1148 path,
70811
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1149 FILE_READ_ATTRIBUTES, /* desired access */
66425
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1150 0, /* share mode */
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1151 NULL, /* security attributes */
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1152 OPEN_EXISTING,
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1153 /* FILE_FLAG_BACKUP_SEMANTICS is required to open a directory */
70811
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1154 /* FILE_FLAG_OPEN_REPARSE_POINT does not follow the symlink.
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1155 Because of this, calls like GetFinalPathNameByHandle will return
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1156 the symlink path agin and not the actual final path. */
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1157 FILE_ATTRIBUTE_NORMAL|FILE_FLAG_BACKUP_SEMANTICS|
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1158 FILE_FLAG_OPEN_REPARSE_POINT,
66425
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1159 NULL);
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1160
66684
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1161 if (hFile == INVALID_HANDLE_VALUE) {
66425
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1162 /* Either the target doesn't exist, or we don't have access to
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1163 get a handle to it. If the former, we need to return an error.
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1164 If the latter, we can use attributes_from_dir. */
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1165 if (GetLastError() != ERROR_SHARING_VIOLATION)
66684
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1166 return -1;
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1167 /* Could not get attributes on open file. Fall back to
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1168 reading the directory. */
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1169 if (!attributes_from_dir(path, &info, &reparse_tag))
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1170 /* Very strange. This should not fail now */
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1171 return -1;
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1172 if (info.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT) {
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1173 if (traverse) {
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1174 /* Should traverse, but could not open reparse point handle */
66425
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1175 SetLastError(ERROR_SHARING_VIOLATION);
66684
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1176 return -1;
66425
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1177 }
66684
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1178 }
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1179 } else {
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1180 if (!GetFileInformationByHandle(hFile, &info)) {
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1181 CloseHandle(hFile);
70811
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1182 return -1;
66425
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1183 }
66684
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1184 if (info.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT) {
70811
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1185 if (!win32_get_reparse_tag(hFile, &reparse_tag))
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1186 return -1;
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1187
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1188 /* Close the outer open file handle now that we're about to
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1189 reopen it with different flags. */
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1190 if (!CloseHandle(hFile))
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1191 return -1;
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1192
66684
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1193 if (traverse) {
70811
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1194 /* In order to call GetFinalPathNameByHandle we need to open
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1195 the file without the reparse handling flag set. */
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1196 hFile2 = CreateFileA(
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1197 path, FILE_READ_ATTRIBUTES, FILE_SHARE_READ,
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1198 NULL, OPEN_EXISTING,
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1199 FILE_ATTRIBUTE_NORMAL|FILE_FLAG_BACKUP_SEMANTICS,
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1200 NULL);
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1201 if (hFile2 == INVALID_HANDLE_VALUE)
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1202 return -1;
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1203
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1204 if (!get_target_path(hFile2, &target_path))
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1205 return -1;
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1206
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1207 code = win32_xstat_impl_w(target_path, result, FALSE);
66684
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1208 free(target_path);
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1209 return code;
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1210 }
66779
417f8cccd208 Issue #10637: Called CloseHandle twice in os.stat/os.lstat (Windows)
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66740
diff changeset
1211 } else
417f8cccd208 Issue #10637: Called CloseHandle twice in os.stat/os.lstat (Windows)
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66740
diff changeset
1212 CloseHandle(hFile);
66684
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1213 }
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1214 attribute_data_to_stat(&info, reparse_tag, result);
66425
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1215
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1216 /* Set S_IEXEC if it is an .exe, .bat, ... */
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1217 dot = strrchr(path, '.');
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1218 if (dot) {
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1219 if (stricmp(dot, ".bat") == 0 || stricmp(dot, ".cmd") == 0 ||
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1220 stricmp(dot, ".exe") == 0 || stricmp(dot, ".com") == 0)
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1221 result->st_mode |= 0111;
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1222 }
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1223 return 0;
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1224 }
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1225
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1226 static int
70811
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1227 win32_xstat_impl_w(const wchar_t *path, struct win32_stat *result,
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1228 BOOL traverse)
66425
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1229 {
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1230 int code;
70811
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1231 HANDLE hFile, hFile2;
66425
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1232 BY_HANDLE_FILE_INFORMATION info;
66684
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1233 ULONG reparse_tag = 0;
70840
f6d6afe53385 posixmodule.c: fix function name in argument parsing
Victor Stinner <victor.stinner@haypocalc.com>
parents: 70815
diff changeset
1234 wchar_t *target_path;
66425
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1235 const wchar_t *dot;
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1236
70811
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1237 if(!check_GetFinalPathNameByHandle()) {
70815
1524a60016d0 Correct completely broken os.stat behavior on Windows XP.
Brian Curtin <brian@python.org>
parents: 70814
diff changeset
1238 /* If the OS doesn't have GetFinalPathNameByHandle, don't
1524a60016d0 Correct completely broken os.stat behavior on Windows XP.
Brian Curtin <brian@python.org>
parents: 70814
diff changeset
1239 traverse reparse point. */
1524a60016d0 Correct completely broken os.stat behavior on Windows XP.
Brian Curtin <brian@python.org>
parents: 70814
diff changeset
1240 traverse = FALSE;
66684
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1241 }
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1242
66425
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1243 hFile = CreateFileW(
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1244 path,
70811
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1245 FILE_READ_ATTRIBUTES, /* desired access */
66425
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1246 0, /* share mode */
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1247 NULL, /* security attributes */
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1248 OPEN_EXISTING,
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1249 /* FILE_FLAG_BACKUP_SEMANTICS is required to open a directory */
70811
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1250 /* FILE_FLAG_OPEN_REPARSE_POINT does not follow the symlink.
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1251 Because of this, calls like GetFinalPathNameByHandle will return
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1252 the symlink path agin and not the actual final path. */
70840
f6d6afe53385 posixmodule.c: fix function name in argument parsing
Victor Stinner <victor.stinner@haypocalc.com>
parents: 70815
diff changeset
1253 FILE_ATTRIBUTE_NORMAL|FILE_FLAG_BACKUP_SEMANTICS|
70811
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1254 FILE_FLAG_OPEN_REPARSE_POINT,
66425
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1255 NULL);
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1256
66684
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1257 if (hFile == INVALID_HANDLE_VALUE) {
66425
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1258 /* Either the target doesn't exist, or we don't have access to
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1259 get a handle to it. If the former, we need to return an error.
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1260 If the latter, we can use attributes_from_dir. */
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1261 if (GetLastError() != ERROR_SHARING_VIOLATION)
66684
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1262 return -1;
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1263 /* Could not get attributes on open file. Fall back to
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1264 reading the directory. */
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1265 if (!attributes_from_dir_w(path, &info, &reparse_tag))
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1266 /* Very strange. This should not fail now */
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1267 return -1;
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1268 if (info.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT) {
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1269 if (traverse) {
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1270 /* Should traverse, but could not open reparse point handle */
66425
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1271 SetLastError(ERROR_SHARING_VIOLATION);
66684
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1272 return -1;
66425
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1273 }
66684
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1274 }
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1275 } else {
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1276 if (!GetFileInformationByHandle(hFile, &info)) {
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1277 CloseHandle(hFile);
70811
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1278 return -1;
66425
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1279 }
66684
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1280 if (info.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT) {
70811
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1281 if (!win32_get_reparse_tag(hFile, &reparse_tag))
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1282 return -1;
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1283
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1284 /* Close the outer open file handle now that we're about to
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1285 reopen it with different flags. */
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1286 if (!CloseHandle(hFile))
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1287 return -1;
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1288
66684
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1289 if (traverse) {
70811
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1290 /* In order to call GetFinalPathNameByHandle we need to open
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1291 the file without the reparse handling flag set. */
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1292 hFile2 = CreateFileW(
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1293 path, FILE_READ_ATTRIBUTES, FILE_SHARE_READ,
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1294 NULL, OPEN_EXISTING,
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1295 FILE_ATTRIBUTE_NORMAL|FILE_FLAG_BACKUP_SEMANTICS,
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1296 NULL);
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1297 if (hFile2 == INVALID_HANDLE_VALUE)
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1298 return -1;
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1299
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1300 if (!get_target_path(hFile2, &target_path))
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1301 return -1;
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1302
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1303 code = win32_xstat_impl_w(target_path, result, FALSE);
66684
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1304 free(target_path);
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1305 return code;
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1306 }
66779
417f8cccd208 Issue #10637: Called CloseHandle twice in os.stat/os.lstat (Windows)
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66740
diff changeset
1307 } else
417f8cccd208 Issue #10637: Called CloseHandle twice in os.stat/os.lstat (Windows)
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66740
diff changeset
1308 CloseHandle(hFile);
66684
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1309 }
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1310 attribute_data_to_stat(&info, reparse_tag, result);
66425
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1311
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1312 /* Set S_IEXEC if it is an .exe, .bat, ... */
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1313 dot = wcsrchr(path, '.');
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1314 if (dot) {
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1315 if (_wcsicmp(dot, L".bat") == 0 || _wcsicmp(dot, L".cmd") == 0 ||
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1316 _wcsicmp(dot, L".exe") == 0 || _wcsicmp(dot, L".com") == 0)
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1317 result->st_mode |= 0111;
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1318 }
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1319 return 0;
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1320 }
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1321
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1322 static int
66684
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1323 win32_xstat(const char *path, struct win32_stat *result, BOOL traverse)
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1324 {
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1325 /* Protocol violation: we explicitly clear errno, instead of
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1326 setting it to a POSIX error. Callers should use GetLastError. */
70811
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1327 int code = win32_xstat_impl(path, result, traverse);
66684
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1328 errno = 0;
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1329 return code;
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1330 }
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1331
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1332 static int
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1333 win32_xstat_w(const wchar_t *path, struct win32_stat *result, BOOL traverse)
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1334 {
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1335 /* Protocol violation: we explicitly clear errno, instead of
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1336 setting it to a POSIX error. Callers should use GetLastError. */
70811
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1337 int code = win32_xstat_impl_w(path, result, traverse);
66684
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1338 errno = 0;
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1339 return code;
66425
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1340 }
70811
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1341 /* About the following functions: win32_lstat_w, win32_stat, win32_stat_w
62874
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
1342
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
1343 In Posix, stat automatically traverses symlinks and returns the stat
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
1344 structure for the target. In Windows, the equivalent GetFileAttributes by
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
1345 default does not traverse symlinks and instead returns attributes for
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
1346 the symlink.
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
1347
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
1348 Therefore, win32_lstat will get the attributes traditionally, and
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
1349 win32_stat will first explicitly resolve the symlink target and then will
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
1350 call win32_lstat on that result.
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
1351
68489
81d7f78a633a #11515: Merge with 3.1.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 68257
diff changeset
1352 The _w represent Unicode equivalents of the aforementioned ANSI functions. */
62874
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
1353
70811
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
1354 static int
62874
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
1355 win32_lstat(const char* path, struct win32_stat *result)
36435
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
1356 {
66684
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1357 return win32_xstat(path, result, FALSE);
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1358 }
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1359
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1360 static int
62874
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
1361 win32_lstat_w(const wchar_t* path, struct win32_stat *result)
36435
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
1362 {
66684
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1363 return win32_xstat_w(path, result, FALSE);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1364 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1365
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1366 static int
36435
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
1367 win32_stat(const char* path, struct win32_stat *result)
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
1368 {
66684
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1369 return win32_xstat(path, result, TRUE);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1370 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1371
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1372 static int
62874
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
1373 win32_stat_w(const wchar_t* path, struct win32_stat *result)
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
1374 {
66684
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1375 return win32_xstat_w(path, result, TRUE);
36435
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
1376 }
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
1377
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
1378 static int
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
1379 win32_fstat(int file_number, struct win32_stat *result)
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
1380 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1381 BY_HANDLE_FILE_INFORMATION info;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1382 HANDLE h;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1383 int type;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1384
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1385 h = (HANDLE)_get_osfhandle(file_number);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1386
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1387 /* Protocol violation: we explicitly clear errno, instead of
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1388 setting it to a POSIX error. Callers should use GetLastError. */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1389 errno = 0;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1390
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1391 if (h == INVALID_HANDLE_VALUE) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1392 /* This is really a C library error (invalid file handle).
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1393 We set the Win32 error to the closes one matching. */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1394 SetLastError(ERROR_INVALID_HANDLE);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1395 return -1;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1396 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1397 memset(result, 0, sizeof(*result));
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1398
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1399 type = GetFileType(h);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1400 if (type == FILE_TYPE_UNKNOWN) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1401 DWORD error = GetLastError();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1402 if (error != 0) {
66425
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
1403 return -1;
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1404 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1405 /* else: valid but unknown file */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1406 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1407
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1408 if (type != FILE_TYPE_DISK) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1409 if (type == FILE_TYPE_CHAR)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1410 result->st_mode = _S_IFCHR;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1411 else if (type == FILE_TYPE_PIPE)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1412 result->st_mode = _S_IFIFO;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1413 return 0;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1414 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1415
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1416 if (!GetFileInformationByHandle(h, &info)) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1417 return -1;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1418 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1419
66684
893b098929e7 Fixed several corner case issues on os.stat/os.lstat related to reparse
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66606
diff changeset
1420 attribute_data_to_stat(&info, 0, result);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1421 /* specific to fstat() */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1422 result->st_ino = (((__int64)info.nFileIndexHigh)<<32) + info.nFileIndexLow;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1423 return 0;
36435
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
1424 }
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
1425
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
1426 #endif /* MS_WINDOWS */
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
1427
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
1428 PyDoc_STRVAR(stat_result__doc__,
20539
2d599a36b67a SF patch #462296: Add attributes to os.stat results; by Nick Mathewson.
Guido van Rossum <guido@python.org>
parents: 20537
diff changeset
1429 "stat_result: Result from stat or lstat.\n\n\
2d599a36b67a SF patch #462296: Add attributes to os.stat results; by Nick Mathewson.
Guido van Rossum <guido@python.org>
parents: 20537
diff changeset
1430 This object may be accessed either as a tuple of\n\
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
1431 (mode, ino, dev, nlink, uid, gid, size, atime, mtime, ctime)\n\
20539
2d599a36b67a SF patch #462296: Add attributes to os.stat results; by Nick Mathewson.
Guido van Rossum <guido@python.org>
parents: 20537
diff changeset
1432 or via the attributes st_mode, st_ino, st_dev, st_nlink, st_uid, and so on.\n\
2d599a36b67a SF patch #462296: Add attributes to os.stat results; by Nick Mathewson.
Guido van Rossum <guido@python.org>
parents: 20537
diff changeset
1433 \n\
34990
00cd350cf7bf Patch #1212117: Add optional attribute st_flags to os.stat_result
Hye-Shik Chang <hyeshik@gmail.com>
parents: 34959
diff changeset
1434 Posix/windows: If your platform supports st_blksize, st_blocks, st_rdev,\n\
00cd350cf7bf Patch #1212117: Add optional attribute st_flags to os.stat_result
Hye-Shik Chang <hyeshik@gmail.com>
parents: 34959
diff changeset
1435 or st_flags, they are available as attributes only.\n\
20539
2d599a36b67a SF patch #462296: Add attributes to os.stat results; by Nick Mathewson.
Guido van Rossum <guido@python.org>
parents: 20537
diff changeset
1436 \n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
1437 See os.stat for more information.");
20539
2d599a36b67a SF patch #462296: Add attributes to os.stat results; by Nick Mathewson.
Guido van Rossum <guido@python.org>
parents: 20537
diff changeset
1438
2d599a36b67a SF patch #462296: Add attributes to os.stat results; by Nick Mathewson.
Guido van Rossum <guido@python.org>
parents: 20537
diff changeset
1439 static PyStructSequence_Field stat_result_fields[] = {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1440 {"st_mode", "protection bits"},
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1441 {"st_ino", "inode"},
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1442 {"st_dev", "device"},
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1443 {"st_nlink", "number of hard links"},
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1444 {"st_uid", "user ID of owner"},
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1445 {"st_gid", "group ID of owner"},
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1446 {"st_size", "total size, in bytes"},
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1447 /* The NULL is replaced with PyStructSequence_UnnamedField later. */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1448 {NULL, "integer time of last access"},
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1449 {NULL, "integer time of last modification"},
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1450 {NULL, "integer time of last change"},
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1451 {"st_atime", "time of last access"},
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1452 {"st_mtime", "time of last modification"},
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1453 {"st_ctime", "time of last change"},
25810
915112671152 Patch #623780: Replace obsolete struct macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 25806
diff changeset
1454 #ifdef HAVE_STRUCT_STAT_ST_BLKSIZE
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1455 {"st_blksize", "blocksize for filesystem I/O"},
20539
2d599a36b67a SF patch #462296: Add attributes to os.stat results; by Nick Mathewson.
Guido van Rossum <guido@python.org>
parents: 20537
diff changeset
1456 #endif
25810
915112671152 Patch #623780: Replace obsolete struct macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 25806
diff changeset
1457 #ifdef HAVE_STRUCT_STAT_ST_BLOCKS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1458 {"st_blocks", "number of blocks allocated"},
20539
2d599a36b67a SF patch #462296: Add attributes to os.stat results; by Nick Mathewson.
Guido van Rossum <guido@python.org>
parents: 20537
diff changeset
1459 #endif
25810
915112671152 Patch #623780: Replace obsolete struct macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 25806
diff changeset
1460 #ifdef HAVE_STRUCT_STAT_ST_RDEV
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1461 {"st_rdev", "device type (if inode device)"},
20539
2d599a36b67a SF patch #462296: Add attributes to os.stat results; by Nick Mathewson.
Guido van Rossum <guido@python.org>
parents: 20537
diff changeset
1462 #endif
34990
00cd350cf7bf Patch #1212117: Add optional attribute st_flags to os.stat_result
Hye-Shik Chang <hyeshik@gmail.com>
parents: 34959
diff changeset
1463 #ifdef HAVE_STRUCT_STAT_ST_FLAGS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1464 {"st_flags", "user defined flags for file"},
34990
00cd350cf7bf Patch #1212117: Add optional attribute st_flags to os.stat_result
Hye-Shik Chang <hyeshik@gmail.com>
parents: 34959
diff changeset
1465 #endif
35326
3094843e7b92 Patch #1180695: Implement nanosecond stat resolution on FreeBSD,
Martin v. Löwis <martin@v.loewis.de>
parents: 35208
diff changeset
1466 #ifdef HAVE_STRUCT_STAT_ST_GEN
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1467 {"st_gen", "generation number"},
35326
3094843e7b92 Patch #1180695: Implement nanosecond stat resolution on FreeBSD,
Martin v. Löwis <martin@v.loewis.de>
parents: 35208
diff changeset
1468 #endif
3094843e7b92 Patch #1180695: Implement nanosecond stat resolution on FreeBSD,
Martin v. Löwis <martin@v.loewis.de>
parents: 35208
diff changeset
1469 #ifdef HAVE_STRUCT_STAT_ST_BIRTHTIME
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1470 {"st_birthtime", "time of creation"},
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1471 #endif
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1472 {0}
20539
2d599a36b67a SF patch #462296: Add attributes to os.stat results; by Nick Mathewson.
Guido van Rossum <guido@python.org>
parents: 20537
diff changeset
1473 };
2d599a36b67a SF patch #462296: Add attributes to os.stat results; by Nick Mathewson.
Guido van Rossum <guido@python.org>
parents: 20537
diff changeset
1474
25810
915112671152 Patch #623780: Replace obsolete struct macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 25806
diff changeset
1475 #ifdef HAVE_STRUCT_STAT_ST_BLKSIZE
25806
0bbea4dcd9be Add PyStructSequence_UnnamedField. Add stat_float_times.
Martin v. Löwis <martin@v.loewis.de>
parents: 25804
diff changeset
1476 #define ST_BLKSIZE_IDX 13
20539
2d599a36b67a SF patch #462296: Add attributes to os.stat results; by Nick Mathewson.
Guido van Rossum <guido@python.org>
parents: 20537
diff changeset
1477 #else
25806
0bbea4dcd9be Add PyStructSequence_UnnamedField. Add stat_float_times.
Martin v. Löwis <martin@v.loewis.de>
parents: 25804
diff changeset
1478 #define ST_BLKSIZE_IDX 12
20539
2d599a36b67a SF patch #462296: Add attributes to os.stat results; by Nick Mathewson.
Guido van Rossum <guido@python.org>
parents: 20537
diff changeset
1479 #endif
2d599a36b67a SF patch #462296: Add attributes to os.stat results; by Nick Mathewson.
Guido van Rossum <guido@python.org>
parents: 20537
diff changeset
1480
25810
915112671152 Patch #623780: Replace obsolete struct macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 25806
diff changeset
1481 #ifdef HAVE_STRUCT_STAT_ST_BLOCKS
20539
2d599a36b67a SF patch #462296: Add attributes to os.stat results; by Nick Mathewson.
Guido van Rossum <guido@python.org>
parents: 20537
diff changeset
1482 #define ST_BLOCKS_IDX (ST_BLKSIZE_IDX+1)
2d599a36b67a SF patch #462296: Add attributes to os.stat results; by Nick Mathewson.
Guido van Rossum <guido@python.org>
parents: 20537
diff changeset
1483 #else
2d599a36b67a SF patch #462296: Add attributes to os.stat results; by Nick Mathewson.
Guido van Rossum <guido@python.org>
parents: 20537
diff changeset
1484 #define ST_BLOCKS_IDX ST_BLKSIZE_IDX
2d599a36b67a SF patch #462296: Add attributes to os.stat results; by Nick Mathewson.
Guido van Rossum <guido@python.org>
parents: 20537
diff changeset
1485 #endif
2d599a36b67a SF patch #462296: Add attributes to os.stat results; by Nick Mathewson.
Guido van Rossum <guido@python.org>
parents: 20537
diff changeset
1486
25810
915112671152 Patch #623780: Replace obsolete struct macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 25806
diff changeset
1487 #ifdef HAVE_STRUCT_STAT_ST_RDEV
20539
2d599a36b67a SF patch #462296: Add attributes to os.stat results; by Nick Mathewson.
Guido van Rossum <guido@python.org>
parents: 20537
diff changeset
1488 #define ST_RDEV_IDX (ST_BLOCKS_IDX+1)
2d599a36b67a SF patch #462296: Add attributes to os.stat results; by Nick Mathewson.
Guido van Rossum <guido@python.org>
parents: 20537
diff changeset
1489 #else
2d599a36b67a SF patch #462296: Add attributes to os.stat results; by Nick Mathewson.
Guido van Rossum <guido@python.org>
parents: 20537
diff changeset
1490 #define ST_RDEV_IDX ST_BLOCKS_IDX
2d599a36b67a SF patch #462296: Add attributes to os.stat results; by Nick Mathewson.
Guido van Rossum <guido@python.org>
parents: 20537
diff changeset
1491 #endif
2d599a36b67a SF patch #462296: Add attributes to os.stat results; by Nick Mathewson.
Guido van Rossum <guido@python.org>
parents: 20537
diff changeset
1492
34990
00cd350cf7bf Patch #1212117: Add optional attribute st_flags to os.stat_result
Hye-Shik Chang <hyeshik@gmail.com>
parents: 34959
diff changeset
1493 #ifdef HAVE_STRUCT_STAT_ST_FLAGS
00cd350cf7bf Patch #1212117: Add optional attribute st_flags to os.stat_result
Hye-Shik Chang <hyeshik@gmail.com>
parents: 34959
diff changeset
1494 #define ST_FLAGS_IDX (ST_RDEV_IDX+1)
00cd350cf7bf Patch #1212117: Add optional attribute st_flags to os.stat_result
Hye-Shik Chang <hyeshik@gmail.com>
parents: 34959
diff changeset
1495 #else
00cd350cf7bf Patch #1212117: Add optional attribute st_flags to os.stat_result
Hye-Shik Chang <hyeshik@gmail.com>
parents: 34959
diff changeset
1496 #define ST_FLAGS_IDX ST_RDEV_IDX
00cd350cf7bf Patch #1212117: Add optional attribute st_flags to os.stat_result
Hye-Shik Chang <hyeshik@gmail.com>
parents: 34959
diff changeset
1497 #endif
00cd350cf7bf Patch #1212117: Add optional attribute st_flags to os.stat_result
Hye-Shik Chang <hyeshik@gmail.com>
parents: 34959
diff changeset
1498
35326
3094843e7b92 Patch #1180695: Implement nanosecond stat resolution on FreeBSD,
Martin v. Löwis <martin@v.loewis.de>
parents: 35208
diff changeset
1499 #ifdef HAVE_STRUCT_STAT_ST_GEN
35342
3c3a45a96577 Correct definition of ST_GEN_IDX.
Martin v. Löwis <martin@v.loewis.de>
parents: 35326
diff changeset
1500 #define ST_GEN_IDX (ST_FLAGS_IDX+1)
35326
3094843e7b92 Patch #1180695: Implement nanosecond stat resolution on FreeBSD,
Martin v. Löwis <martin@v.loewis.de>
parents: 35208
diff changeset
1501 #else
35342
3c3a45a96577 Correct definition of ST_GEN_IDX.
Martin v. Löwis <martin@v.loewis.de>
parents: 35326
diff changeset
1502 #define ST_GEN_IDX ST_FLAGS_IDX
35326
3094843e7b92 Patch #1180695: Implement nanosecond stat resolution on FreeBSD,
Martin v. Löwis <martin@v.loewis.de>
parents: 35208
diff changeset
1503 #endif
3094843e7b92 Patch #1180695: Implement nanosecond stat resolution on FreeBSD,
Martin v. Löwis <martin@v.loewis.de>
parents: 35208
diff changeset
1504
3094843e7b92 Patch #1180695: Implement nanosecond stat resolution on FreeBSD,
Martin v. Löwis <martin@v.loewis.de>
parents: 35208
diff changeset
1505 #ifdef HAVE_STRUCT_STAT_ST_BIRTHTIME
3094843e7b92 Patch #1180695: Implement nanosecond stat resolution on FreeBSD,
Martin v. Löwis <martin@v.loewis.de>
parents: 35208
diff changeset
1506 #define ST_BIRTHTIME_IDX (ST_GEN_IDX+1)
3094843e7b92 Patch #1180695: Implement nanosecond stat resolution on FreeBSD,
Martin v. Löwis <martin@v.loewis.de>
parents: 35208
diff changeset
1507 #else
3094843e7b92 Patch #1180695: Implement nanosecond stat resolution on FreeBSD,
Martin v. Löwis <martin@v.loewis.de>
parents: 35208
diff changeset
1508 #define ST_BIRTHTIME_IDX ST_GEN_IDX
3094843e7b92 Patch #1180695: Implement nanosecond stat resolution on FreeBSD,
Martin v. Löwis <martin@v.loewis.de>
parents: 35208
diff changeset
1509 #endif
3094843e7b92 Patch #1180695: Implement nanosecond stat resolution on FreeBSD,
Martin v. Löwis <martin@v.loewis.de>
parents: 35208
diff changeset
1510
20539
2d599a36b67a SF patch #462296: Add attributes to os.stat results; by Nick Mathewson.
Guido van Rossum <guido@python.org>
parents: 20537
diff changeset
1511 static PyStructSequence_Desc stat_result_desc = {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1512 "stat_result", /* name */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1513 stat_result__doc__, /* doc */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1514 stat_result_fields,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1515 10
20539
2d599a36b67a SF patch #462296: Add attributes to os.stat results; by Nick Mathewson.
Guido van Rossum <guido@python.org>
parents: 20537
diff changeset
1516 };
2d599a36b67a SF patch #462296: Add attributes to os.stat results; by Nick Mathewson.
Guido van Rossum <guido@python.org>
parents: 20537
diff changeset
1517
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
1518 PyDoc_STRVAR(statvfs_result__doc__,
20539
2d599a36b67a SF patch #462296: Add attributes to os.stat results; by Nick Mathewson.
Guido van Rossum <guido@python.org>
parents: 20537
diff changeset
1519 "statvfs_result: Result from statvfs or fstatvfs.\n\n\
2d599a36b67a SF patch #462296: Add attributes to os.stat results; by Nick Mathewson.
Guido van Rossum <guido@python.org>
parents: 20537
diff changeset
1520 This object may be accessed either as a tuple of\n\
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
1521 (bsize, frsize, blocks, bfree, bavail, files, ffree, favail, flag, namemax),\n\
20543
a8995a6de8d0 Don't leave bare newlines in long strings -- VC doesn't like that.
Guido van Rossum <guido@python.org>
parents: 20539
diff changeset
1522 or via the attributes f_bsize, f_frsize, f_blocks, f_bfree, and so on.\n\
20539
2d599a36b67a SF patch #462296: Add attributes to os.stat results; by Nick Mathewson.
Guido van Rossum <guido@python.org>
parents: 20537
diff changeset
1523 \n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
1524 See os.statvfs for more information.");
20539
2d599a36b67a SF patch #462296: Add attributes to os.stat results; by Nick Mathewson.
Guido van Rossum <guido@python.org>
parents: 20537
diff changeset
1525
2d599a36b67a SF patch #462296: Add attributes to os.stat results; by Nick Mathewson.
Guido van Rossum <guido@python.org>
parents: 20537
diff changeset
1526 static PyStructSequence_Field statvfs_result_fields[] = {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1527 {"f_bsize", },
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1528 {"f_frsize", },
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1529 {"f_blocks", },
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1530 {"f_bfree", },
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1531 {"f_bavail", },
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1532 {"f_files", },
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1533 {"f_ffree", },
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1534 {"f_favail", },
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1535 {"f_flag", },
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1536 {"f_namemax",},
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1537 {0}
20539
2d599a36b67a SF patch #462296: Add attributes to os.stat results; by Nick Mathewson.
Guido van Rossum <guido@python.org>
parents: 20537
diff changeset
1538 };
2d599a36b67a SF patch #462296: Add attributes to os.stat results; by Nick Mathewson.
Guido van Rossum <guido@python.org>
parents: 20537
diff changeset
1539
2d599a36b67a SF patch #462296: Add attributes to os.stat results; by Nick Mathewson.
Guido van Rossum <guido@python.org>
parents: 20537
diff changeset
1540 static PyStructSequence_Desc statvfs_result_desc = {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1541 "statvfs_result", /* name */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1542 statvfs_result__doc__, /* doc */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1543 statvfs_result_fields,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1544 10
20539
2d599a36b67a SF patch #462296: Add attributes to os.stat results; by Nick Mathewson.
Guido van Rossum <guido@python.org>
parents: 20537
diff changeset
1545 };
2d599a36b67a SF patch #462296: Add attributes to os.stat results; by Nick Mathewson.
Guido van Rossum <guido@python.org>
parents: 20537
diff changeset
1546
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36887
diff changeset
1547 static int initialized;
20539
2d599a36b67a SF patch #462296: Add attributes to os.stat results; by Nick Mathewson.
Guido van Rossum <guido@python.org>
parents: 20537
diff changeset
1548 static PyTypeObject StatResultType;
2d599a36b67a SF patch #462296: Add attributes to os.stat results; by Nick Mathewson.
Guido van Rossum <guido@python.org>
parents: 20537
diff changeset
1549 static PyTypeObject StatVFSResultType;
25806
0bbea4dcd9be Add PyStructSequence_UnnamedField. Add stat_float_times.
Martin v. Löwis <martin@v.loewis.de>
parents: 25804
diff changeset
1550 static newfunc structseq_new;
0bbea4dcd9be Add PyStructSequence_UnnamedField. Add stat_float_times.
Martin v. Löwis <martin@v.loewis.de>
parents: 25804
diff changeset
1551
0bbea4dcd9be Add PyStructSequence_UnnamedField. Add stat_float_times.
Martin v. Löwis <martin@v.loewis.de>
parents: 25804
diff changeset
1552 static PyObject *
0bbea4dcd9be Add PyStructSequence_UnnamedField. Add stat_float_times.
Martin v. Löwis <martin@v.loewis.de>
parents: 25804
diff changeset
1553 statresult_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
0bbea4dcd9be Add PyStructSequence_UnnamedField. Add stat_float_times.
Martin v. Löwis <martin@v.loewis.de>
parents: 25804
diff changeset
1554 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1555 PyStructSequence *result;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1556 int i;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1557
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1558 result = (PyStructSequence*)structseq_new(type, args, kwds);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1559 if (!result)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1560 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1561 /* If we have been initialized from a tuple,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1562 st_?time might be set to None. Initialize it
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1563 from the int slots. */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1564 for (i = 7; i <= 9; i++) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1565 if (result->ob_item[i+3] == Py_None) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1566 Py_DECREF(Py_None);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1567 Py_INCREF(result->ob_item[i]);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1568 result->ob_item[i+3] = result->ob_item[i];
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1569 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1570 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1571 return (PyObject*)result;
25806
0bbea4dcd9be Add PyStructSequence_UnnamedField. Add stat_float_times.
Martin v. Löwis <martin@v.loewis.de>
parents: 25804
diff changeset
1572 }
0bbea4dcd9be Add PyStructSequence_UnnamedField. Add stat_float_times.
Martin v. Löwis <martin@v.loewis.de>
parents: 25804
diff changeset
1573
0bbea4dcd9be Add PyStructSequence_UnnamedField. Add stat_float_times.
Martin v. Löwis <martin@v.loewis.de>
parents: 25804
diff changeset
1574
0bbea4dcd9be Add PyStructSequence_UnnamedField. Add stat_float_times.
Martin v. Löwis <martin@v.loewis.de>
parents: 25804
diff changeset
1575
0bbea4dcd9be Add PyStructSequence_UnnamedField. Add stat_float_times.
Martin v. Löwis <martin@v.loewis.de>
parents: 25804
diff changeset
1576 /* If true, st_?time is float. */
34425
8436a295591b Default stat_float_times to true.
Martin v. Löwis <martin@v.loewis.de>
parents: 34181
diff changeset
1577 static int _stat_float_times = 1;
25806
0bbea4dcd9be Add PyStructSequence_UnnamedField. Add stat_float_times.
Martin v. Löwis <martin@v.loewis.de>
parents: 25804
diff changeset
1578
0bbea4dcd9be Add PyStructSequence_UnnamedField. Add stat_float_times.
Martin v. Löwis <martin@v.loewis.de>
parents: 25804
diff changeset
1579 PyDoc_STRVAR(stat_float_times__doc__,
0bbea4dcd9be Add PyStructSequence_UnnamedField. Add stat_float_times.
Martin v. Löwis <martin@v.loewis.de>
parents: 25804
diff changeset
1580 "stat_float_times([newval]) -> oldval\n\n\
0bbea4dcd9be Add PyStructSequence_UnnamedField. Add stat_float_times.
Martin v. Löwis <martin@v.loewis.de>
parents: 25804
diff changeset
1581 Determine whether os.[lf]stat represents time stamps as float objects.\n\
0bbea4dcd9be Add PyStructSequence_UnnamedField. Add stat_float_times.
Martin v. Löwis <martin@v.loewis.de>
parents: 25804
diff changeset
1582 If newval is True, future calls to stat() return floats, if it is False,\n\
0bbea4dcd9be Add PyStructSequence_UnnamedField. Add stat_float_times.
Martin v. Löwis <martin@v.loewis.de>
parents: 25804
diff changeset
1583 future calls return ints. \n\
0bbea4dcd9be Add PyStructSequence_UnnamedField. Add stat_float_times.
Martin v. Löwis <martin@v.loewis.de>
parents: 25804
diff changeset
1584 If newval is omitted, return the current setting.\n");
0bbea4dcd9be Add PyStructSequence_UnnamedField. Add stat_float_times.
Martin v. Löwis <martin@v.loewis.de>
parents: 25804
diff changeset
1585
0bbea4dcd9be Add PyStructSequence_UnnamedField. Add stat_float_times.
Martin v. Löwis <martin@v.loewis.de>
parents: 25804
diff changeset
1586 static PyObject*
0bbea4dcd9be Add PyStructSequence_UnnamedField. Add stat_float_times.
Martin v. Löwis <martin@v.loewis.de>
parents: 25804
diff changeset
1587 stat_float_times(PyObject* self, PyObject *args)
0bbea4dcd9be Add PyStructSequence_UnnamedField. Add stat_float_times.
Martin v. Löwis <martin@v.loewis.de>
parents: 25804
diff changeset
1588 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1589 int newval = -1;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1590 if (!PyArg_ParseTuple(args, "|i:stat_float_times", &newval))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1591 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1592 if (newval == -1)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1593 /* Return old value */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1594 return PyBool_FromLong(_stat_float_times);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1595 _stat_float_times = newval;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1596 Py_INCREF(Py_None);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1597 return Py_None;
25806
0bbea4dcd9be Add PyStructSequence_UnnamedField. Add stat_float_times.
Martin v. Löwis <martin@v.loewis.de>
parents: 25804
diff changeset
1598 }
20539
2d599a36b67a SF patch #462296: Add attributes to os.stat results; by Nick Mathewson.
Guido van Rossum <guido@python.org>
parents: 20537
diff changeset
1599
25176
038711ae13e0 Patch #606592: Subsecond timestamps in stat_result.
Martin v. Löwis <martin@v.loewis.de>
parents: 25087
diff changeset
1600 static void
038711ae13e0 Patch #606592: Subsecond timestamps in stat_result.
Martin v. Löwis <martin@v.loewis.de>
parents: 25087
diff changeset
1601 fill_time(PyObject *v, int index, time_t sec, unsigned long nsec)
038711ae13e0 Patch #606592: Subsecond timestamps in stat_result.
Martin v. Löwis <martin@v.loewis.de>
parents: 25087
diff changeset
1602 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1603 PyObject *fval,*ival;
25806
0bbea4dcd9be Add PyStructSequence_UnnamedField. Add stat_float_times.
Martin v. Löwis <martin@v.loewis.de>
parents: 25804
diff changeset
1604 #if SIZEOF_TIME_T > SIZEOF_LONG
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1605 ival = PyLong_FromLongLong((PY_LONG_LONG)sec);
25806
0bbea4dcd9be Add PyStructSequence_UnnamedField. Add stat_float_times.
Martin v. Löwis <martin@v.loewis.de>
parents: 25804
diff changeset
1606 #else
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1607 ival = PyLong_FromLong((long)sec);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1608 #endif
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1609 if (!ival)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1610 return;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1611 if (_stat_float_times) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1612 fval = PyFloat_FromDouble(sec + 1e-9*nsec);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1613 } else {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1614 fval = ival;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1615 Py_INCREF(fval);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1616 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1617 PyStructSequence_SET_ITEM(v, index, ival);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1618 PyStructSequence_SET_ITEM(v, index+3, fval);
25176
038711ae13e0 Patch #606592: Subsecond timestamps in stat_result.
Martin v. Löwis <martin@v.loewis.de>
parents: 25087
diff changeset
1619 }
038711ae13e0 Patch #606592: Subsecond timestamps in stat_result.
Martin v. Löwis <martin@v.loewis.de>
parents: 25087
diff changeset
1620
21839
5e67ad76c72f Expose more MS WIndows constants usable w/ low-level os.open().
Tim Peters <tim.peters@gmail.com>
parents: 21712
diff changeset
1621 /* pack a system stat C structure into the Python stat tuple
13153
32816ce60a49 Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents: 13058
diff changeset
1622 (used by posix_stat() and posix_fstat()) */
32816ce60a49 Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents: 13058
diff changeset
1623 static PyObject*
36435
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
1624 _pystat_fromstructstat(STRUCT_STAT *st)
13153
32816ce60a49 Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents: 13058
diff changeset
1625 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1626 unsigned long ansec, mnsec, cnsec;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1627 PyObject *v = PyStructSequence_New(&StatResultType);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1628 if (v == NULL)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1629 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1630
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1631 PyStructSequence_SET_ITEM(v, 0, PyLong_FromLong((long)st->st_mode));
13153
32816ce60a49 Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents: 13058
diff changeset
1632 #ifdef HAVE_LARGEFILE_SUPPORT
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1633 PyStructSequence_SET_ITEM(v, 1,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1634 PyLong_FromLongLong((PY_LONG_LONG)st->st_ino));
13153
32816ce60a49 Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents: 13058
diff changeset
1635 #else
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1636 PyStructSequence_SET_ITEM(v, 1, PyLong_FromLong((long)st->st_ino));
13153
32816ce60a49 Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents: 13058
diff changeset
1637 #endif
32816ce60a49 Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents: 13058
diff changeset
1638 #if defined(HAVE_LONG_LONG) && !defined(MS_WINDOWS)
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1639 PyStructSequence_SET_ITEM(v, 2,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1640 PyLong_FromLongLong((PY_LONG_LONG)st->st_dev));
13153
32816ce60a49 Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents: 13058
diff changeset
1641 #else
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1642 PyStructSequence_SET_ITEM(v, 2, PyLong_FromLong((long)st->st_dev));
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1643 #endif
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1644 PyStructSequence_SET_ITEM(v, 3, PyLong_FromLong((long)st->st_nlink));
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1645 PyStructSequence_SET_ITEM(v, 4, PyLong_FromLong((long)st->st_uid));
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1646 PyStructSequence_SET_ITEM(v, 5, PyLong_FromLong((long)st->st_gid));
13153
32816ce60a49 Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents: 13058
diff changeset
1647 #ifdef HAVE_LARGEFILE_SUPPORT
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1648 PyStructSequence_SET_ITEM(v, 6,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1649 PyLong_FromLongLong((PY_LONG_LONG)st->st_size));
13153
32816ce60a49 Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents: 13058
diff changeset
1650 #else
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1651 PyStructSequence_SET_ITEM(v, 6, PyLong_FromLong(st->st_size));
36435
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
1652 #endif
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
1653
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
1654 #if defined(HAVE_STAT_TV_NSEC)
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1655 ansec = st->st_atim.tv_nsec;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1656 mnsec = st->st_mtim.tv_nsec;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1657 cnsec = st->st_ctim.tv_nsec;
36435
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
1658 #elif defined(HAVE_STAT_TV_NSEC2)
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1659 ansec = st->st_atimespec.tv_nsec;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1660 mnsec = st->st_mtimespec.tv_nsec;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1661 cnsec = st->st_ctimespec.tv_nsec;
36435
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
1662 #elif defined(HAVE_STAT_NSEC)
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1663 ansec = st->st_atime_nsec;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1664 mnsec = st->st_mtime_nsec;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1665 cnsec = st->st_ctime_nsec;
35326
3094843e7b92 Patch #1180695: Implement nanosecond stat resolution on FreeBSD,
Martin v. Löwis <martin@v.loewis.de>
parents: 35208
diff changeset
1666 #else
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1667 ansec = mnsec = cnsec = 0;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1668 #endif
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1669 fill_time(v, 7, st->st_atime, ansec);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1670 fill_time(v, 8, st->st_mtime, mnsec);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1671 fill_time(v, 9, st->st_ctime, cnsec);
20539
2d599a36b67a SF patch #462296: Add attributes to os.stat results; by Nick Mathewson.
Guido van Rossum <guido@python.org>
parents: 20537
diff changeset
1672
25810
915112671152 Patch #623780: Replace obsolete struct macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 25806
diff changeset
1673 #ifdef HAVE_STRUCT_STAT_ST_BLKSIZE
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1674 PyStructSequence_SET_ITEM(v, ST_BLKSIZE_IDX,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1675 PyLong_FromLong((long)st->st_blksize));
20539
2d599a36b67a SF patch #462296: Add attributes to os.stat results; by Nick Mathewson.
Guido van Rossum <guido@python.org>
parents: 20537
diff changeset
1676 #endif
25810
915112671152 Patch #623780: Replace obsolete struct macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 25806
diff changeset
1677 #ifdef HAVE_STRUCT_STAT_ST_BLOCKS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1678 PyStructSequence_SET_ITEM(v, ST_BLOCKS_IDX,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1679 PyLong_FromLong((long)st->st_blocks));
20539
2d599a36b67a SF patch #462296: Add attributes to os.stat results; by Nick Mathewson.
Guido van Rossum <guido@python.org>
parents: 20537
diff changeset
1680 #endif
25810
915112671152 Patch #623780: Replace obsolete struct macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 25806
diff changeset
1681 #ifdef HAVE_STRUCT_STAT_ST_RDEV
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1682 PyStructSequence_SET_ITEM(v, ST_RDEV_IDX,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1683 PyLong_FromLong((long)st->st_rdev));
13153
32816ce60a49 Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents: 13058
diff changeset
1684 #endif
35326
3094843e7b92 Patch #1180695: Implement nanosecond stat resolution on FreeBSD,
Martin v. Löwis <martin@v.loewis.de>
parents: 35208
diff changeset
1685 #ifdef HAVE_STRUCT_STAT_ST_GEN
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1686 PyStructSequence_SET_ITEM(v, ST_GEN_IDX,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1687 PyLong_FromLong((long)st->st_gen));
35326
3094843e7b92 Patch #1180695: Implement nanosecond stat resolution on FreeBSD,
Martin v. Löwis <martin@v.loewis.de>
parents: 35208
diff changeset
1688 #endif
3094843e7b92 Patch #1180695: Implement nanosecond stat resolution on FreeBSD,
Martin v. Löwis <martin@v.loewis.de>
parents: 35208
diff changeset
1689 #ifdef HAVE_STRUCT_STAT_ST_BIRTHTIME
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1690 {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1691 PyObject *val;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1692 unsigned long bsec,bnsec;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1693 bsec = (long)st->st_birthtime;
35326
3094843e7b92 Patch #1180695: Implement nanosecond stat resolution on FreeBSD,
Martin v. Löwis <martin@v.loewis.de>
parents: 35208
diff changeset
1694 #ifdef HAVE_STAT_TV_NSEC2
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1695 bnsec = st->st_birthtimespec.tv_nsec;
35326
3094843e7b92 Patch #1180695: Implement nanosecond stat resolution on FreeBSD,
Martin v. Löwis <martin@v.loewis.de>
parents: 35208
diff changeset
1696 #else
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1697 bnsec = 0;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1698 #endif
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1699 if (_stat_float_times) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1700 val = PyFloat_FromDouble(bsec + 1e-9*bnsec);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1701 } else {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1702 val = PyLong_FromLong((long)bsec);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1703 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1704 PyStructSequence_SET_ITEM(v, ST_BIRTHTIME_IDX,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1705 val);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1706 }
35326
3094843e7b92 Patch #1180695: Implement nanosecond stat resolution on FreeBSD,
Martin v. Löwis <martin@v.loewis.de>
parents: 35208
diff changeset
1707 #endif
34990
00cd350cf7bf Patch #1212117: Add optional attribute st_flags to os.stat_result
Hye-Shik Chang <hyeshik@gmail.com>
parents: 34959
diff changeset
1708 #ifdef HAVE_STRUCT_STAT_ST_FLAGS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1709 PyStructSequence_SET_ITEM(v, ST_FLAGS_IDX,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1710 PyLong_FromLong((long)st->st_flags));
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1711 #endif
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1712
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1713 if (PyErr_Occurred()) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1714 Py_DECREF(v);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1715 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1716 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1717
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1718 return v;
13153
32816ce60a49 Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents: 13058
diff changeset
1719 }
32816ce60a49 Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents: 13058
diff changeset
1720
4672
5b53268f547a Renamed.
Barry Warsaw <barry@python.org>
parents: 4600
diff changeset
1721 static PyObject *
28735
7bba3e2be54e Enable os.fsync() for Windows, mapping it to MS's _commit() there. The
Tim Peters <tim.peters@gmail.com>
parents: 28708
diff changeset
1722 posix_do_stat(PyObject *self, PyObject *args,
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1723 char *format,
26550
b9c912e2c3c0 Patch #614055: Support OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents: 26330
diff changeset
1724 #ifdef __VMS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1725 int (*statfunc)(const char *, STRUCT_STAT *, ...),
26550
b9c912e2c3c0 Patch #614055: Support OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents: 26330
diff changeset
1726 #else
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1727 int (*statfunc)(const char *, STRUCT_STAT *),
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1728 #endif
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1729 char *wformat,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1730 int (*wstatfunc)(const Py_UNICODE *, STRUCT_STAT *))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1731 {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1732 STRUCT_STAT st;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1733 PyObject *opath;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1734 char *path;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1735 int res;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1736 PyObject *result;
25535
861065256487 Patch 594001: PEP 277 - Unicode file name support for Windows NT.
Mark Hammond <mhammond@skippinet.com.au>
parents: 25327
diff changeset
1737
54129
77cfef596d33 Merged revisions 72698-72699 via svnmerge from
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 53993
diff changeset
1738 #ifdef MS_WINDOWS
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1739 PyUnicodeObject *po;
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1740 if (PyArg_ParseTuple(args, wformat, &po)) {
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1741 Py_UNICODE *wpath = PyUnicode_AS_UNICODE(po);
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1742
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1743 Py_BEGIN_ALLOW_THREADS
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1744 /* PyUnicode_AS_UNICODE result OK without
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1745 thread lock as it is a simple dereference. */
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1746 res = wstatfunc(wpath, &st);
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1747 Py_END_ALLOW_THREADS
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1748
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1749 if (res != 0)
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1750 return win32_error_unicode("stat", wpath);
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1751 return _pystat_fromstructstat(&st);
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1752 }
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1753 /* Drop the argument parsing error as narrow strings
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1754 are also valid. */
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1755 PyErr_Clear();
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1756 #endif
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1757
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1758 if (!PyArg_ParseTuple(args, format,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1759 PyUnicode_FSConverter, &opath))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1760 return NULL;
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1761 path = PyBytes_AsString(opath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1762 Py_BEGIN_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1763 res = (*statfunc)(path, &st);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1764 Py_END_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1765
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1766 if (res != 0) {
36435
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
1767 #ifdef MS_WINDOWS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1768 result = win32_error("stat", path);
36435
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
1769 #else
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1770 result = posix_error_with_filename(path);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1771 #endif
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1772 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1773 else
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1774 result = _pystat_fromstructstat(&st);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1775
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1776 Py_DECREF(opath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1777 return result;
36435
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
1778 }
6
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1779
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1780 /* POSIX methods */
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1781
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
1782 PyDoc_STRVAR(posix_access__doc__,
40742
f1701ba2452b Merged revisions 53538-53622 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 40626
diff changeset
1783 "access(path, mode) -> True if granted, False otherwise\n\n\
23900
0899409a0cb6 Corect speling and add \n\ to line ends in new docstring for access().
Guido van Rossum <guido@python.org>
parents: 23897
diff changeset
1784 Use the real uid/gid to test for access to a path. Note that most\n\
0899409a0cb6 Corect speling and add \n\ to line ends in new docstring for access().
Guido van Rossum <guido@python.org>
parents: 23897
diff changeset
1785 operations will use the effective uid/gid, therefore this routine can\n\
0899409a0cb6 Corect speling and add \n\ to line ends in new docstring for access().
Guido van Rossum <guido@python.org>
parents: 23897
diff changeset
1786 be used in a suid/sgid environment to test if the invoking user has the\n\
0899409a0cb6 Corect speling and add \n\ to line ends in new docstring for access().
Guido van Rossum <guido@python.org>
parents: 23897
diff changeset
1787 specified access to the path. The mode argument can be F_OK to test\n\
0899409a0cb6 Corect speling and add \n\ to line ends in new docstring for access().
Guido van Rossum <guido@python.org>
parents: 23897
diff changeset
1788 existence, or the inclusive-OR of R_OK, W_OK, and X_OK.");
9785
facb457b4d32 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
1789
facb457b4d32 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
1790 static PyObject *
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
1791 posix_access(PyObject *self, PyObject *args)
9785
facb457b4d32 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
1792 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1793 PyObject *opath;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1794 char *path;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1795 int mode;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1796
54129
77cfef596d33 Merged revisions 72698-72699 via svnmerge from
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 53993
diff changeset
1797 #ifdef MS_WINDOWS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1798 DWORD attr;
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1799 PyUnicodeObject *po;
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1800 if (PyArg_ParseTuple(args, "Ui:access", &po, &mode)) {
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1801 Py_BEGIN_ALLOW_THREADS
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1802 /* PyUnicode_AS_UNICODE OK without thread lock as
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1803 it is a simple dereference. */
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1804 attr = GetFileAttributesW(PyUnicode_AS_UNICODE(po));
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1805 Py_END_ALLOW_THREADS
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1806 goto finish;
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1807 }
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1808 /* Drop the argument parsing error as narrow strings
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1809 are also valid. */
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1810 PyErr_Clear();
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1811 if (!PyArg_ParseTuple(args, "O&i:access",
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1812 PyUnicode_FSConverter, &opath, &mode))
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1813 return NULL;
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1814 path = PyBytes_AsString(opath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1815 Py_BEGIN_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1816 attr = GetFileAttributesA(path);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1817 Py_END_ALLOW_THREADS
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1818 Py_DECREF(opath);
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
1819 finish:
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1820 if (attr == 0xFFFFFFFF)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1821 /* File does not exist, or cannot read attributes */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1822 return PyBool_FromLong(0);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1823 /* Access is possible if either write access wasn't requested, or
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1824 the file isn't read-only, or if it's a directory, as there are
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1825 no read-only directories on Windows. */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1826 return PyBool_FromLong(!(mode & 2)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1827 || !(attr & FILE_ATTRIBUTE_READONLY)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1828 || (attr & FILE_ATTRIBUTE_DIRECTORY));
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
1829 #else
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1830 int res;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1831 if (!PyArg_ParseTuple(args, "O&i:access",
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1832 PyUnicode_FSConverter, &opath, &mode))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1833 return NULL;
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1834 path = PyBytes_AsString(opath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1835 Py_BEGIN_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1836 res = access(path, mode);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1837 Py_END_ALLOW_THREADS
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1838 Py_DECREF(opath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1839 return PyBool_FromLong(res == 0);
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
1840 #endif
9785
facb457b4d32 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
1841 }
facb457b4d32 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
1842
9939
faf351e31571 Only do ttyname() when HAVE_TTYNAME is defined.
Guido van Rossum <guido@python.org>
parents: 9824
diff changeset
1843 #ifndef F_OK
faf351e31571 Only do ttyname() when HAVE_TTYNAME is defined.
Guido van Rossum <guido@python.org>
parents: 9824
diff changeset
1844 #define F_OK 0
faf351e31571 Only do ttyname() when HAVE_TTYNAME is defined.
Guido van Rossum <guido@python.org>
parents: 9824
diff changeset
1845 #endif
faf351e31571 Only do ttyname() when HAVE_TTYNAME is defined.
Guido van Rossum <guido@python.org>
parents: 9824
diff changeset
1846 #ifndef R_OK
faf351e31571 Only do ttyname() when HAVE_TTYNAME is defined.
Guido van Rossum <guido@python.org>
parents: 9824
diff changeset
1847 #define R_OK 4
faf351e31571 Only do ttyname() when HAVE_TTYNAME is defined.
Guido van Rossum <guido@python.org>
parents: 9824
diff changeset
1848 #endif
faf351e31571 Only do ttyname() when HAVE_TTYNAME is defined.
Guido van Rossum <guido@python.org>
parents: 9824
diff changeset
1849 #ifndef W_OK
faf351e31571 Only do ttyname() when HAVE_TTYNAME is defined.
Guido van Rossum <guido@python.org>
parents: 9824
diff changeset
1850 #define W_OK 2
faf351e31571 Only do ttyname() when HAVE_TTYNAME is defined.
Guido van Rossum <guido@python.org>
parents: 9824
diff changeset
1851 #endif
faf351e31571 Only do ttyname() when HAVE_TTYNAME is defined.
Guido van Rossum <guido@python.org>
parents: 9824
diff changeset
1852 #ifndef X_OK
faf351e31571 Only do ttyname() when HAVE_TTYNAME is defined.
Guido van Rossum <guido@python.org>
parents: 9824
diff changeset
1853 #define X_OK 1
faf351e31571 Only do ttyname() when HAVE_TTYNAME is defined.
Guido van Rossum <guido@python.org>
parents: 9824
diff changeset
1854 #endif
faf351e31571 Only do ttyname() when HAVE_TTYNAME is defined.
Guido van Rossum <guido@python.org>
parents: 9824
diff changeset
1855
faf351e31571 Only do ttyname() when HAVE_TTYNAME is defined.
Guido van Rossum <guido@python.org>
parents: 9824
diff changeset
1856 #ifdef HAVE_TTYNAME
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
1857 PyDoc_STRVAR(posix_ttyname__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
1858 "ttyname(fd) -> string\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
1859 Return the name of the terminal device connected to 'fd'.");
9785
facb457b4d32 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
1860
facb457b4d32 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
1861 static PyObject *
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
1862 posix_ttyname(PyObject *self, PyObject *args)
9785
facb457b4d32 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
1863 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1864 int id;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1865 char *ret;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1866
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1867 if (!PyArg_ParseTuple(args, "i:ttyname", &id))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1868 return NULL;
9785
facb457b4d32 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
1869
26550
b9c912e2c3c0 Patch #614055: Support OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents: 26330
diff changeset
1870 #if defined(__VMS)
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1871 /* file descriptor 0 only, the default input device (stdin) */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1872 if (id == 0) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1873 ret = ttyname();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1874 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1875 else {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1876 ret = NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1877 }
26550
b9c912e2c3c0 Patch #614055: Support OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents: 26330
diff changeset
1878 #else
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1879 ret = ttyname(id);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1880 #endif
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1881 if (ret == NULL)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1882 return posix_error();
64032
f88cdd9a44ea Merged revisions 84060 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 63927
diff changeset
1883 return PyUnicode_DecodeFSDefault(ret);
9785
facb457b4d32 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
1884 }
9939
faf351e31571 Only do ttyname() when HAVE_TTYNAME is defined.
Guido van Rossum <guido@python.org>
parents: 9824
diff changeset
1885 #endif
9785
facb457b4d32 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
1886
11532
2951e2d27852 Added support for abort(), ctermid(), tmpfile(), tempnam(), tmpnam(),
Fred Drake <fdrake@acm.org>
parents: 11391
diff changeset
1887 #ifdef HAVE_CTERMID
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
1888 PyDoc_STRVAR(posix_ctermid__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
1889 "ctermid() -> string\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
1890 Return the name of the controlling terminal for this process.");
11532
2951e2d27852 Added support for abort(), ctermid(), tmpfile(), tempnam(), tmpnam(),
Fred Drake <fdrake@acm.org>
parents: 11391
diff changeset
1891
2951e2d27852 Added support for abort(), ctermid(), tmpfile(), tempnam(), tmpnam(),
Fred Drake <fdrake@acm.org>
parents: 11391
diff changeset
1892 static PyObject *
27916
93d44870e8b5 Added test_posix (hopefully it works on Windows).
Neal Norwitz <nnorwitz@gmail.com>
parents: 27826
diff changeset
1893 posix_ctermid(PyObject *self, PyObject *noargs)
11532
2951e2d27852 Added support for abort(), ctermid(), tmpfile(), tempnam(), tmpnam(),
Fred Drake <fdrake@acm.org>
parents: 11391
diff changeset
1894 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1895 char *ret;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1896 char buffer[L_ctermid];
11532
2951e2d27852 Added support for abort(), ctermid(), tmpfile(), tempnam(), tmpnam(),
Fred Drake <fdrake@acm.org>
parents: 11391
diff changeset
1897
11893
610d7d642917 Second attempt to fix the ctermid_r/tmpnam_r warnings: define USE_CTERMID_R
Greg Ward <gward@python.net>
parents: 11892
diff changeset
1898 #ifdef USE_CTERMID_R
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1899 ret = ctermid_r(buffer);
11532
2951e2d27852 Added support for abort(), ctermid(), tmpfile(), tempnam(), tmpnam(),
Fred Drake <fdrake@acm.org>
parents: 11391
diff changeset
1900 #else
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1901 ret = ctermid(buffer);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1902 #endif
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1903 if (ret == NULL)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1904 return posix_error();
64032
f88cdd9a44ea Merged revisions 84060 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 63927
diff changeset
1905 return PyUnicode_DecodeFSDefault(buffer);
11532
2951e2d27852 Added support for abort(), ctermid(), tmpfile(), tempnam(), tmpnam(),
Fred Drake <fdrake@acm.org>
parents: 11391
diff changeset
1906 }
2951e2d27852 Added support for abort(), ctermid(), tmpfile(), tempnam(), tmpnam(),
Fred Drake <fdrake@acm.org>
parents: 11391
diff changeset
1907 #endif
2951e2d27852 Added support for abort(), ctermid(), tmpfile(), tempnam(), tmpnam(),
Fred Drake <fdrake@acm.org>
parents: 11391
diff changeset
1908
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
1909 PyDoc_STRVAR(posix_chdir__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
1910 "chdir(path)\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
1911 Change the current working directory to the specified path.");
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
1912
4672
5b53268f547a Renamed.
Barry Warsaw <barry@python.org>
parents: 4600
diff changeset
1913 static PyObject *
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
1914 posix_chdir(PyObject *self, PyObject *args)
6
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1915 {
25535
861065256487 Patch 594001: PEP 277 - Unicode file name support for Windows NT.
Mark Hammond <mhammond@skippinet.com.au>
parents: 25327
diff changeset
1916 #ifdef MS_WINDOWS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1917 return win32_1str(args, "chdir", "y:chdir", win32_chdir, "U:chdir", win32_wchdir);
25535
861065256487 Patch 594001: PEP 277 - Unicode file name support for Windows NT.
Mark Hammond <mhammond@skippinet.com.au>
parents: 25327
diff changeset
1918 #elif defined(PYOS_OS2) && defined(PYCC_GCC)
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1919 return posix_1str(args, "O&:chdir", _chdir2);
28169
bc2d07230934 Patch #696645: Remove VMS code with uncertain authorship.
Martin v. Löwis <martin@v.loewis.de>
parents: 28166
diff changeset
1920 #elif defined(__VMS)
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1921 return posix_1str(args, "O&:chdir", (int (*)(const char *))chdir);
26550
b9c912e2c3c0 Patch #614055: Support OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents: 26330
diff changeset
1922 #else
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1923 return posix_1str(args, "O&:chdir", chdir);
22116
0c4230269ed3 OS/2 EMX port changes (Modules part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 21966
diff changeset
1924 #endif
6
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1925 }
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1926
23056
a135980dd4e9 posix_fildes(): New helper: run a function that takes a file descriptor
Fred Drake <fdrake@acm.org>
parents: 23026
diff changeset
1927 #ifdef HAVE_FCHDIR
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
1928 PyDoc_STRVAR(posix_fchdir__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
1929 "fchdir(fildes)\n\n\
23056
a135980dd4e9 posix_fildes(): New helper: run a function that takes a file descriptor
Fred Drake <fdrake@acm.org>
parents: 23026
diff changeset
1930 Change to the directory of the given file descriptor. fildes must be\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
1931 opened on a directory, not a file.");
23056
a135980dd4e9 posix_fildes(): New helper: run a function that takes a file descriptor
Fred Drake <fdrake@acm.org>
parents: 23026
diff changeset
1932
a135980dd4e9 posix_fildes(): New helper: run a function that takes a file descriptor
Fred Drake <fdrake@acm.org>
parents: 23026
diff changeset
1933 static PyObject *
a135980dd4e9 posix_fildes(): New helper: run a function that takes a file descriptor
Fred Drake <fdrake@acm.org>
parents: 23026
diff changeset
1934 posix_fchdir(PyObject *self, PyObject *fdobj)
a135980dd4e9 posix_fildes(): New helper: run a function that takes a file descriptor
Fred Drake <fdrake@acm.org>
parents: 23026
diff changeset
1935 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1936 return posix_fildes(fdobj, fchdir);
23056
a135980dd4e9 posix_fildes(): New helper: run a function that takes a file descriptor
Fred Drake <fdrake@acm.org>
parents: 23026
diff changeset
1937 }
a135980dd4e9 posix_fildes(): New helper: run a function that takes a file descriptor
Fred Drake <fdrake@acm.org>
parents: 23026
diff changeset
1938 #endif /* HAVE_FCHDIR */
a135980dd4e9 posix_fildes(): New helper: run a function that takes a file descriptor
Fred Drake <fdrake@acm.org>
parents: 23026
diff changeset
1939
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
1940
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
1941 PyDoc_STRVAR(posix_chmod__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
1942 "chmod(path, mode)\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
1943 Change the access permissions of a file.");
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
1944
4672
5b53268f547a Renamed.
Barry Warsaw <barry@python.org>
parents: 4600
diff changeset
1945 static PyObject *
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
1946 posix_chmod(PyObject *self, PyObject *args)
6
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1947 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1948 PyObject *opath = NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1949 char *path = NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1950 int i;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1951 int res;
54129
77cfef596d33 Merged revisions 72698-72699 via svnmerge from
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 53993
diff changeset
1952 #ifdef MS_WINDOWS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1953 DWORD attr;
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1954 PyUnicodeObject *po;
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1955 if (PyArg_ParseTuple(args, "Ui|:chmod", &po, &i)) {
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1956 Py_BEGIN_ALLOW_THREADS
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1957 attr = GetFileAttributesW(PyUnicode_AS_UNICODE(po));
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1958 if (attr != 0xFFFFFFFF) {
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1959 if (i & _S_IWRITE)
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1960 attr &= ~FILE_ATTRIBUTE_READONLY;
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1961 else
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1962 attr |= FILE_ATTRIBUTE_READONLY;
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1963 res = SetFileAttributesW(PyUnicode_AS_UNICODE(po), attr);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1964 }
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1965 else
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1966 res = 0;
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1967 Py_END_ALLOW_THREADS
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1968 if (!res)
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1969 return win32_error_unicode("chmod",
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1970 PyUnicode_AS_UNICODE(po));
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1971 Py_INCREF(Py_None);
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1972 return Py_None;
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1973 }
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1974 /* Drop the argument parsing error as narrow strings
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1975 are also valid. */
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1976 PyErr_Clear();
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1977
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1978 if (!PyArg_ParseTuple(args, "O&i:chmod", PyUnicode_FSConverter,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1979 &opath, &i))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1980 return NULL;
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1981 path = PyBytes_AsString(opath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1982 Py_BEGIN_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1983 attr = GetFileAttributesA(path);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1984 if (attr != 0xFFFFFFFF) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1985 if (i & _S_IWRITE)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1986 attr &= ~FILE_ATTRIBUTE_READONLY;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1987 else
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1988 attr |= FILE_ATTRIBUTE_READONLY;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1989 res = SetFileAttributesA(path, attr);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1990 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1991 else
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1992 res = 0;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1993 Py_END_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1994 if (!res) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
1995 win32_error("chmod", path);
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1996 Py_DECREF(opath);
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1997 return NULL;
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1998 }
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
1999 Py_DECREF(opath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2000 Py_INCREF(Py_None);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2001 return Py_None;
54129
77cfef596d33 Merged revisions 72698-72699 via svnmerge from
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 53993
diff changeset
2002 #else /* MS_WINDOWS */
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2003 if (!PyArg_ParseTuple(args, "O&i:chmod", PyUnicode_FSConverter,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2004 &opath, &i))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2005 return NULL;
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2006 path = PyBytes_AsString(opath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2007 Py_BEGIN_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2008 res = chmod(path, i);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2009 Py_END_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2010 if (res < 0)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2011 return posix_error_with_allocated_filename(opath);
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2012 Py_DECREF(opath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2013 Py_INCREF(Py_None);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2014 return Py_None;
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
2015 #endif
6
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
2016 }
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
2017
44078
664b0bc92b96 Merged revisions 59239-59244 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44025
diff changeset
2018 #ifdef HAVE_FCHMOD
664b0bc92b96 Merged revisions 59239-59244 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44025
diff changeset
2019 PyDoc_STRVAR(posix_fchmod__doc__,
664b0bc92b96 Merged revisions 59239-59244 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44025
diff changeset
2020 "fchmod(fd, mode)\n\n\
664b0bc92b96 Merged revisions 59239-59244 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44025
diff changeset
2021 Change the access permissions of the file given by file\n\
664b0bc92b96 Merged revisions 59239-59244 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44025
diff changeset
2022 descriptor fd.");
664b0bc92b96 Merged revisions 59239-59244 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44025
diff changeset
2023
664b0bc92b96 Merged revisions 59239-59244 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44025
diff changeset
2024 static PyObject *
664b0bc92b96 Merged revisions 59239-59244 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44025
diff changeset
2025 posix_fchmod(PyObject *self, PyObject *args)
664b0bc92b96 Merged revisions 59239-59244 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44025
diff changeset
2026 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2027 int fd, mode, res;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2028 if (!PyArg_ParseTuple(args, "ii:fchmod", &fd, &mode))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2029 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2030 Py_BEGIN_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2031 res = fchmod(fd, mode);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2032 Py_END_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2033 if (res < 0)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2034 return posix_error();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2035 Py_RETURN_NONE;
44078
664b0bc92b96 Merged revisions 59239-59244 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44025
diff changeset
2036 }
664b0bc92b96 Merged revisions 59239-59244 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44025
diff changeset
2037 #endif /* HAVE_FCHMOD */
664b0bc92b96 Merged revisions 59239-59244 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44025
diff changeset
2038
664b0bc92b96 Merged revisions 59239-59244 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44025
diff changeset
2039 #ifdef HAVE_LCHMOD
664b0bc92b96 Merged revisions 59239-59244 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44025
diff changeset
2040 PyDoc_STRVAR(posix_lchmod__doc__,
664b0bc92b96 Merged revisions 59239-59244 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44025
diff changeset
2041 "lchmod(path, mode)\n\n\
664b0bc92b96 Merged revisions 59239-59244 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44025
diff changeset
2042 Change the access permissions of a file. If path is a symlink, this\n\
664b0bc92b96 Merged revisions 59239-59244 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44025
diff changeset
2043 affects the link itself rather than the target.");
664b0bc92b96 Merged revisions 59239-59244 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44025
diff changeset
2044
664b0bc92b96 Merged revisions 59239-59244 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44025
diff changeset
2045 static PyObject *
664b0bc92b96 Merged revisions 59239-59244 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44025
diff changeset
2046 posix_lchmod(PyObject *self, PyObject *args)
664b0bc92b96 Merged revisions 59239-59244 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44025
diff changeset
2047 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2048 PyObject *opath;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2049 char *path;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2050 int i;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2051 int res;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2052 if (!PyArg_ParseTuple(args, "O&i:lchmod", PyUnicode_FSConverter,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2053 &opath, &i))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2054 return NULL;
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2055 path = PyBytes_AsString(opath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2056 Py_BEGIN_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2057 res = lchmod(path, i);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2058 Py_END_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2059 if (res < 0)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2060 return posix_error_with_allocated_filename(opath);
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2061 Py_DECREF(opath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2062 Py_RETURN_NONE;
44078
664b0bc92b96 Merged revisions 59239-59244 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44025
diff changeset
2063 }
664b0bc92b96 Merged revisions 59239-59244 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44025
diff changeset
2064 #endif /* HAVE_LCHMOD */
664b0bc92b96 Merged revisions 59239-59244 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44025
diff changeset
2065
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
2066
40893
32c4897b5d46 Merged revisions 53623-53858 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 40742
diff changeset
2067 #ifdef HAVE_CHFLAGS
32c4897b5d46 Merged revisions 53623-53858 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 40742
diff changeset
2068 PyDoc_STRVAR(posix_chflags__doc__,
32c4897b5d46 Merged revisions 53623-53858 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 40742
diff changeset
2069 "chflags(path, flags)\n\n\
32c4897b5d46 Merged revisions 53623-53858 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 40742
diff changeset
2070 Set file flags.");
32c4897b5d46 Merged revisions 53623-53858 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 40742
diff changeset
2071
32c4897b5d46 Merged revisions 53623-53858 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 40742
diff changeset
2072 static PyObject *
32c4897b5d46 Merged revisions 53623-53858 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 40742
diff changeset
2073 posix_chflags(PyObject *self, PyObject *args)
32c4897b5d46 Merged revisions 53623-53858 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 40742
diff changeset
2074 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2075 PyObject *opath;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2076 char *path;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2077 unsigned long flags;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2078 int res;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2079 if (!PyArg_ParseTuple(args, "O&k:chflags",
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2080 PyUnicode_FSConverter, &opath, &flags))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2081 return NULL;
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2082 path = PyBytes_AsString(opath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2083 Py_BEGIN_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2084 res = chflags(path, flags);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2085 Py_END_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2086 if (res < 0)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2087 return posix_error_with_allocated_filename(opath);
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2088 Py_DECREF(opath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2089 Py_INCREF(Py_None);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2090 return Py_None;
40893
32c4897b5d46 Merged revisions 53623-53858 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 40742
diff changeset
2091 }
32c4897b5d46 Merged revisions 53623-53858 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 40742
diff changeset
2092 #endif /* HAVE_CHFLAGS */
32c4897b5d46 Merged revisions 53623-53858 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 40742
diff changeset
2093
32c4897b5d46 Merged revisions 53623-53858 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 40742
diff changeset
2094 #ifdef HAVE_LCHFLAGS
32c4897b5d46 Merged revisions 53623-53858 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 40742
diff changeset
2095 PyDoc_STRVAR(posix_lchflags__doc__,
32c4897b5d46 Merged revisions 53623-53858 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 40742
diff changeset
2096 "lchflags(path, flags)\n\n\
32c4897b5d46 Merged revisions 53623-53858 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 40742
diff changeset
2097 Set file flags.\n\
32c4897b5d46 Merged revisions 53623-53858 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 40742
diff changeset
2098 This function will not follow symbolic links.");
32c4897b5d46 Merged revisions 53623-53858 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 40742
diff changeset
2099
32c4897b5d46 Merged revisions 53623-53858 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 40742
diff changeset
2100 static PyObject *
32c4897b5d46 Merged revisions 53623-53858 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 40742
diff changeset
2101 posix_lchflags(PyObject *self, PyObject *args)
32c4897b5d46 Merged revisions 53623-53858 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 40742
diff changeset
2102 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2103 PyObject *opath;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2104 char *path;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2105 unsigned long flags;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2106 int res;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2107 if (!PyArg_ParseTuple(args, "O&k:lchflags",
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2108 PyUnicode_FSConverter, &opath, &flags))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2109 return NULL;
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2110 path = PyBytes_AsString(opath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2111 Py_BEGIN_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2112 res = lchflags(path, flags);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2113 Py_END_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2114 if (res < 0)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2115 return posix_error_with_allocated_filename(opath);
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2116 Py_DECREF(opath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2117 Py_INCREF(Py_None);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2118 return Py_None;
40893
32c4897b5d46 Merged revisions 53623-53858 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 40742
diff changeset
2119 }
32c4897b5d46 Merged revisions 53623-53858 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 40742
diff changeset
2120 #endif /* HAVE_LCHFLAGS */
32c4897b5d46 Merged revisions 53623-53858 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 40742
diff changeset
2121
20264
d092abcf9c4b Add chroot call. Implements feature #459267.
Martin v. Löwis <martin@v.loewis.de>
parents: 19754
diff changeset
2122 #ifdef HAVE_CHROOT
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
2123 PyDoc_STRVAR(posix_chroot__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
2124 "chroot(path)\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
2125 Change root directory to path.");
20264
d092abcf9c4b Add chroot call. Implements feature #459267.
Martin v. Löwis <martin@v.loewis.de>
parents: 19754
diff changeset
2126
d092abcf9c4b Add chroot call. Implements feature #459267.
Martin v. Löwis <martin@v.loewis.de>
parents: 19754
diff changeset
2127 static PyObject *
d092abcf9c4b Add chroot call. Implements feature #459267.
Martin v. Löwis <martin@v.loewis.de>
parents: 19754
diff changeset
2128 posix_chroot(PyObject *self, PyObject *args)
d092abcf9c4b Add chroot call. Implements feature #459267.
Martin v. Löwis <martin@v.loewis.de>
parents: 19754
diff changeset
2129 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2130 return posix_1str(args, "O&:chroot", chroot);
20264
d092abcf9c4b Add chroot call. Implements feature #459267.
Martin v. Löwis <martin@v.loewis.de>
parents: 19754
diff changeset
2131 }
d092abcf9c4b Add chroot call. Implements feature #459267.
Martin v. Löwis <martin@v.loewis.de>
parents: 19754
diff changeset
2132 #endif
d092abcf9c4b Add chroot call. Implements feature #459267.
Martin v. Löwis <martin@v.loewis.de>
parents: 19754
diff changeset
2133
9822
17e4d81949b9 Added fsync() and fdatasync(). Patches by Scott Cotton. Requires
Guido van Rossum <guido@python.org>
parents: 9795
diff changeset
2134 #ifdef HAVE_FSYNC
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
2135 PyDoc_STRVAR(posix_fsync__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
2136 "fsync(fildes)\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
2137 force write of file with filedescriptor to disk.");
9822
17e4d81949b9 Added fsync() and fdatasync(). Patches by Scott Cotton. Requires
Guido van Rossum <guido@python.org>
parents: 9795
diff changeset
2138
17e4d81949b9 Added fsync() and fdatasync(). Patches by Scott Cotton. Requires
Guido van Rossum <guido@python.org>
parents: 9795
diff changeset
2139 static PyObject *
23056
a135980dd4e9 posix_fildes(): New helper: run a function that takes a file descriptor
Fred Drake <fdrake@acm.org>
parents: 23026
diff changeset
2140 posix_fsync(PyObject *self, PyObject *fdobj)
9822
17e4d81949b9 Added fsync() and fdatasync(). Patches by Scott Cotton. Requires
Guido van Rossum <guido@python.org>
parents: 9795
diff changeset
2141 {
66495
c7a342a798e7 Merged revisions 86808 via svnmerge from
Stefan Krah <stefan@bytereef.org>
parents: 66493
diff changeset
2142 return posix_fildes(fdobj, fsync);
9822
17e4d81949b9 Added fsync() and fdatasync(). Patches by Scott Cotton. Requires
Guido van Rossum <guido@python.org>
parents: 9795
diff changeset
2143 }
17e4d81949b9 Added fsync() and fdatasync(). Patches by Scott Cotton. Requires
Guido van Rossum <guido@python.org>
parents: 9795
diff changeset
2144 #endif /* HAVE_FSYNC */
17e4d81949b9 Added fsync() and fdatasync(). Patches by Scott Cotton. Requires
Guido van Rossum <guido@python.org>
parents: 9795
diff changeset
2145
17e4d81949b9 Added fsync() and fdatasync(). Patches by Scott Cotton. Requires
Guido van Rossum <guido@python.org>
parents: 9795
diff changeset
2146 #ifdef HAVE_FDATASYNC
14762
5f638a299888 Hopefully fix the problem with undeclared fdatasync() on HP-UX that
Guido van Rossum <guido@python.org>
parents: 14752
diff changeset
2147
14767
60ce37f066d8 It's better to test for __hpux rather than __hppa, and hpux or hppa is
Guido van Rossum <guido@python.org>
parents: 14762
diff changeset
2148 #ifdef __hpux
14762
5f638a299888 Hopefully fix the problem with undeclared fdatasync() on HP-UX that
Guido van Rossum <guido@python.org>
parents: 14752
diff changeset
2149 extern int fdatasync(int); /* On HP-UX, in libc but not in unistd.h */
5f638a299888 Hopefully fix the problem with undeclared fdatasync() on HP-UX that
Guido van Rossum <guido@python.org>
parents: 14752
diff changeset
2150 #endif
5f638a299888 Hopefully fix the problem with undeclared fdatasync() on HP-UX that
Guido van Rossum <guido@python.org>
parents: 14752
diff changeset
2151
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
2152 PyDoc_STRVAR(posix_fdatasync__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
2153 "fdatasync(fildes)\n\n\
9822
17e4d81949b9 Added fsync() and fdatasync(). Patches by Scott Cotton. Requires
Guido van Rossum <guido@python.org>
parents: 9795
diff changeset
2154 force write of file with filedescriptor to disk.\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
2155 does not force update of metadata.");
9822
17e4d81949b9 Added fsync() and fdatasync(). Patches by Scott Cotton. Requires
Guido van Rossum <guido@python.org>
parents: 9795
diff changeset
2156
17e4d81949b9 Added fsync() and fdatasync(). Patches by Scott Cotton. Requires
Guido van Rossum <guido@python.org>
parents: 9795
diff changeset
2157 static PyObject *
23056
a135980dd4e9 posix_fildes(): New helper: run a function that takes a file descriptor
Fred Drake <fdrake@acm.org>
parents: 23026
diff changeset
2158 posix_fdatasync(PyObject *self, PyObject *fdobj)
9822
17e4d81949b9 Added fsync() and fdatasync(). Patches by Scott Cotton. Requires
Guido van Rossum <guido@python.org>
parents: 9795
diff changeset
2159 {
66495
c7a342a798e7 Merged revisions 86808 via svnmerge from
Stefan Krah <stefan@bytereef.org>
parents: 66493
diff changeset
2160 return posix_fildes(fdobj, fdatasync);
9822
17e4d81949b9 Added fsync() and fdatasync(). Patches by Scott Cotton. Requires
Guido van Rossum <guido@python.org>
parents: 9795
diff changeset
2161 }
17e4d81949b9 Added fsync() and fdatasync(). Patches by Scott Cotton. Requires
Guido van Rossum <guido@python.org>
parents: 9795
diff changeset
2162 #endif /* HAVE_FDATASYNC */
17e4d81949b9 Added fsync() and fdatasync(). Patches by Scott Cotton. Requires
Guido van Rossum <guido@python.org>
parents: 9795
diff changeset
2163
17e4d81949b9 Added fsync() and fdatasync(). Patches by Scott Cotton. Requires
Guido van Rossum <guido@python.org>
parents: 9795
diff changeset
2164
13513
6057f44b0b7a - stupid typo.
Fredrik Lundh <fredrik@pythonware.com>
parents: 13511
diff changeset
2165 #ifdef HAVE_CHOWN
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
2166 PyDoc_STRVAR(posix_chown__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
2167 "chown(path, uid, gid)\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
2168 Change the owner and group id of path to the numeric uid and gid.");
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
2169
4672
5b53268f547a Renamed.
Barry Warsaw <barry@python.org>
parents: 4600
diff changeset
2170 static PyObject *
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
2171 posix_chown(PyObject *self, PyObject *args)
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
2172 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2173 PyObject *opath;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2174 char *path;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2175 long uid, gid;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2176 int res;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2177 if (!PyArg_ParseTuple(args, "O&ll:chown",
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2178 PyUnicode_FSConverter, &opath,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2179 &uid, &gid))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2180 return NULL;
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2181 path = PyBytes_AsString(opath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2182 Py_BEGIN_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2183 res = chown(path, (uid_t) uid, (gid_t) gid);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2184 Py_END_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2185 if (res < 0)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2186 return posix_error_with_allocated_filename(opath);
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2187 Py_DECREF(opath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2188 Py_INCREF(Py_None);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2189 return Py_None;
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
2190 }
1792
a584b4bbbc59 Changes to make it work and compile on NT, by Mark Hammond.
Guido van Rossum <guido@python.org>
parents: 1746
diff changeset
2191 #endif /* HAVE_CHOWN */
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
2192
44078
664b0bc92b96 Merged revisions 59239-59244 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44025
diff changeset
2193 #ifdef HAVE_FCHOWN
664b0bc92b96 Merged revisions 59239-59244 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44025
diff changeset
2194 PyDoc_STRVAR(posix_fchown__doc__,
664b0bc92b96 Merged revisions 59239-59244 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44025
diff changeset
2195 "fchown(fd, uid, gid)\n\n\
664b0bc92b96 Merged revisions 59239-59244 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44025
diff changeset
2196 Change the owner and group id of the file given by file descriptor\n\
664b0bc92b96 Merged revisions 59239-59244 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44025
diff changeset
2197 fd to the numeric uid and gid.");
664b0bc92b96 Merged revisions 59239-59244 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44025
diff changeset
2198
664b0bc92b96 Merged revisions 59239-59244 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44025
diff changeset
2199 static PyObject *
664b0bc92b96 Merged revisions 59239-59244 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44025
diff changeset
2200 posix_fchown(PyObject *self, PyObject *args)
664b0bc92b96 Merged revisions 59239-59244 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44025
diff changeset
2201 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2202 int fd;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2203 long uid, gid;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2204 int res;
70840
f6d6afe53385 posixmodule.c: fix function name in argument parsing
Victor Stinner <victor.stinner@haypocalc.com>
parents: 70815
diff changeset
2205 if (!PyArg_ParseTuple(args, "ill:fchown", &fd, &uid, &gid))
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2206 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2207 Py_BEGIN_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2208 res = fchown(fd, (uid_t) uid, (gid_t) gid);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2209 Py_END_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2210 if (res < 0)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2211 return posix_error();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2212 Py_RETURN_NONE;
44078
664b0bc92b96 Merged revisions 59239-59244 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44025
diff changeset
2213 }
664b0bc92b96 Merged revisions 59239-59244 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44025
diff changeset
2214 #endif /* HAVE_FCHOWN */
664b0bc92b96 Merged revisions 59239-59244 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44025
diff changeset
2215
24413
08926cc5f2af Patch #573770: Implement lchown.
Martin v. Löwis <martin@v.loewis.de>
parents: 24239
diff changeset
2216 #ifdef HAVE_LCHOWN
08926cc5f2af Patch #573770: Implement lchown.
Martin v. Löwis <martin@v.loewis.de>
parents: 24239
diff changeset
2217 PyDoc_STRVAR(posix_lchown__doc__,
08926cc5f2af Patch #573770: Implement lchown.
Martin v. Löwis <martin@v.loewis.de>
parents: 24239
diff changeset
2218 "lchown(path, uid, gid)\n\n\
08926cc5f2af Patch #573770: Implement lchown.
Martin v. Löwis <martin@v.loewis.de>
parents: 24239
diff changeset
2219 Change the owner and group id of path to the numeric uid and gid.\n\
08926cc5f2af Patch #573770: Implement lchown.
Martin v. Löwis <martin@v.loewis.de>
parents: 24239
diff changeset
2220 This function will not follow symbolic links.");
08926cc5f2af Patch #573770: Implement lchown.
Martin v. Löwis <martin@v.loewis.de>
parents: 24239
diff changeset
2221
08926cc5f2af Patch #573770: Implement lchown.
Martin v. Löwis <martin@v.loewis.de>
parents: 24239
diff changeset
2222 static PyObject *
08926cc5f2af Patch #573770: Implement lchown.
Martin v. Löwis <martin@v.loewis.de>
parents: 24239
diff changeset
2223 posix_lchown(PyObject *self, PyObject *args)
08926cc5f2af Patch #573770: Implement lchown.
Martin v. Löwis <martin@v.loewis.de>
parents: 24239
diff changeset
2224 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2225 PyObject *opath;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2226 char *path;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2227 long uid, gid;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2228 int res;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2229 if (!PyArg_ParseTuple(args, "O&ll:lchown",
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2230 PyUnicode_FSConverter, &opath,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2231 &uid, &gid))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2232 return NULL;
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2233 path = PyBytes_AsString(opath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2234 Py_BEGIN_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2235 res = lchown(path, (uid_t) uid, (gid_t) gid);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2236 Py_END_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2237 if (res < 0)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2238 return posix_error_with_allocated_filename(opath);
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2239 Py_DECREF(opath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2240 Py_INCREF(Py_None);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2241 return Py_None;
24413
08926cc5f2af Patch #573770: Implement lchown.
Martin v. Löwis <martin@v.loewis.de>
parents: 24239
diff changeset
2242 }
08926cc5f2af Patch #573770: Implement lchown.
Martin v. Löwis <martin@v.loewis.de>
parents: 24239
diff changeset
2243 #endif /* HAVE_LCHOWN */
08926cc5f2af Patch #573770: Implement lchown.
Martin v. Löwis <martin@v.loewis.de>
parents: 24239
diff changeset
2244
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
2245
2740
3e370a4b103b sys/wait.h; NeXT changes (no unistd, utime; getcwd?)
Guido van Rossum <guido@python.org>
parents: 2615
diff changeset
2246 #ifdef HAVE_GETCWD
4672
5b53268f547a Renamed.
Barry Warsaw <barry@python.org>
parents: 4600
diff changeset
2247 static PyObject *
49380
8a7c930abab6 Issue #3187: Better support for "undecodable" filenames. Code by Victor
Guido van Rossum <guido@python.org>
parents: 49200
diff changeset
2248 posix_getcwd(int use_bytes)
25535
861065256487 Patch 594001: PEP 277 - Unicode file name support for Windows NT.
Mark Hammond <mhammond@skippinet.com.au>
parents: 25327
diff changeset
2249 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2250 char buf[1026];
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2251 char *res;
25535
861065256487 Patch 594001: PEP 277 - Unicode file name support for Windows NT.
Mark Hammond <mhammond@skippinet.com.au>
parents: 25327
diff changeset
2252
54129
77cfef596d33 Merged revisions 72698-72699 via svnmerge from
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 53993
diff changeset
2253 #ifdef MS_WINDOWS
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2254 if (!use_bytes) {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2255 wchar_t wbuf[1026];
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2256 wchar_t *wbuf2 = wbuf;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2257 PyObject *resobj;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2258 DWORD len;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2259 Py_BEGIN_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2260 len = GetCurrentDirectoryW(sizeof wbuf/ sizeof wbuf[0], wbuf);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2261 /* If the buffer is large enough, len does not include the
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2262 terminating \0. If the buffer is too small, len includes
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2263 the space needed for the terminator. */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2264 if (len >= sizeof wbuf/ sizeof wbuf[0]) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2265 wbuf2 = malloc(len * sizeof(wchar_t));
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2266 if (wbuf2)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2267 len = GetCurrentDirectoryW(len, wbuf2);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2268 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2269 Py_END_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2270 if (!wbuf2) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2271 PyErr_NoMemory();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2272 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2273 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2274 if (!len) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2275 if (wbuf2 != wbuf) free(wbuf2);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2276 return win32_error("getcwdu", NULL);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2277 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2278 resobj = PyUnicode_FromWideChar(wbuf2, len);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2279 if (wbuf2 != wbuf) free(wbuf2);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2280 return resobj;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2281 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2282 #endif
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2283
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2284 Py_BEGIN_ALLOW_THREADS
25535
861065256487 Patch 594001: PEP 277 - Unicode file name support for Windows NT.
Mark Hammond <mhammond@skippinet.com.au>
parents: 25327
diff changeset
2285 #if defined(PYOS_OS2) && defined(PYCC_GCC)
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2286 res = _getcwd2(buf, sizeof buf);
25535
861065256487 Patch 594001: PEP 277 - Unicode file name support for Windows NT.
Mark Hammond <mhammond@skippinet.com.au>
parents: 25327
diff changeset
2287 #else
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2288 res = getcwd(buf, sizeof buf);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2289 #endif
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2290 Py_END_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2291 if (res == NULL)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2292 return posix_error();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2293 if (use_bytes)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2294 return PyBytes_FromStringAndSize(buf, strlen(buf));
61365
f737d6cbb045 Replace PyUnicode_Decode(buf, strlen(buf), Py_FileSystemDefaultEncoding,
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61332
diff changeset
2295 return PyUnicode_DecodeFSDefault(buf);
25535
861065256487 Patch 594001: PEP 277 - Unicode file name support for Windows NT.
Mark Hammond <mhammond@skippinet.com.au>
parents: 25327
diff changeset
2296 }
49380
8a7c930abab6 Issue #3187: Better support for "undecodable" filenames. Code by Victor
Guido van Rossum <guido@python.org>
parents: 49200
diff changeset
2297
8a7c930abab6 Issue #3187: Better support for "undecodable" filenames. Code by Victor
Guido van Rossum <guido@python.org>
parents: 49200
diff changeset
2298 PyDoc_STRVAR(posix_getcwd__doc__,
8a7c930abab6 Issue #3187: Better support for "undecodable" filenames. Code by Victor
Guido van Rossum <guido@python.org>
parents: 49200
diff changeset
2299 "getcwd() -> path\n\n\
8a7c930abab6 Issue #3187: Better support for "undecodable" filenames. Code by Victor
Guido van Rossum <guido@python.org>
parents: 49200
diff changeset
2300 Return a unicode string representing the current working directory.");
8a7c930abab6 Issue #3187: Better support for "undecodable" filenames. Code by Victor
Guido van Rossum <guido@python.org>
parents: 49200
diff changeset
2301
8a7c930abab6 Issue #3187: Better support for "undecodable" filenames. Code by Victor
Guido van Rossum <guido@python.org>
parents: 49200
diff changeset
2302 static PyObject *
8a7c930abab6 Issue #3187: Better support for "undecodable" filenames. Code by Victor
Guido van Rossum <guido@python.org>
parents: 49200
diff changeset
2303 posix_getcwd_unicode(PyObject *self)
8a7c930abab6 Issue #3187: Better support for "undecodable" filenames. Code by Victor
Guido van Rossum <guido@python.org>
parents: 49200
diff changeset
2304 {
8a7c930abab6 Issue #3187: Better support for "undecodable" filenames. Code by Victor
Guido van Rossum <guido@python.org>
parents: 49200
diff changeset
2305 return posix_getcwd(0);
8a7c930abab6 Issue #3187: Better support for "undecodable" filenames. Code by Victor
Guido van Rossum <guido@python.org>
parents: 49200
diff changeset
2306 }
8a7c930abab6 Issue #3187: Better support for "undecodable" filenames. Code by Victor
Guido van Rossum <guido@python.org>
parents: 49200
diff changeset
2307
8a7c930abab6 Issue #3187: Better support for "undecodable" filenames. Code by Victor
Guido van Rossum <guido@python.org>
parents: 49200
diff changeset
2308 PyDoc_STRVAR(posix_getcwdb__doc__,
8a7c930abab6 Issue #3187: Better support for "undecodable" filenames. Code by Victor
Guido van Rossum <guido@python.org>
parents: 49200
diff changeset
2309 "getcwdb() -> path\n\n\
8a7c930abab6 Issue #3187: Better support for "undecodable" filenames. Code by Victor
Guido van Rossum <guido@python.org>
parents: 49200
diff changeset
2310 Return a bytes string representing the current working directory.");
8a7c930abab6 Issue #3187: Better support for "undecodable" filenames. Code by Victor
Guido van Rossum <guido@python.org>
parents: 49200
diff changeset
2311
8a7c930abab6 Issue #3187: Better support for "undecodable" filenames. Code by Victor
Guido van Rossum <guido@python.org>
parents: 49200
diff changeset
2312 static PyObject *
8a7c930abab6 Issue #3187: Better support for "undecodable" filenames. Code by Victor
Guido van Rossum <guido@python.org>
parents: 49200
diff changeset
2313 posix_getcwd_bytes(PyObject *self)
8a7c930abab6 Issue #3187: Better support for "undecodable" filenames. Code by Victor
Guido van Rossum <guido@python.org>
parents: 49200
diff changeset
2314 {
8a7c930abab6 Issue #3187: Better support for "undecodable" filenames. Code by Victor
Guido van Rossum <guido@python.org>
parents: 49200
diff changeset
2315 return posix_getcwd(1);
8a7c930abab6 Issue #3187: Better support for "undecodable" filenames. Code by Victor
Guido van Rossum <guido@python.org>
parents: 49200
diff changeset
2316 }
2740
3e370a4b103b sys/wait.h; NeXT changes (no unistd, utime; getcwd?)
Guido van Rossum <guido@python.org>
parents: 2615
diff changeset
2317 #endif
6
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
2318
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
2319
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
2320 #ifdef HAVE_LINK
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
2321 PyDoc_STRVAR(posix_link__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
2322 "link(src, dst)\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
2323 Create a hard link to a file.");
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
2324
4672
5b53268f547a Renamed.
Barry Warsaw <barry@python.org>
parents: 4600
diff changeset
2325 static PyObject *
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
2326 posix_link(PyObject *self, PyObject *args)
6
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
2327 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2328 return posix_2str(args, "O&O&:link", link);
6
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
2329 }
1792
a584b4bbbc59 Changes to make it work and compile on NT, by Mark Hammond.
Guido van Rossum <guido@python.org>
parents: 1746
diff changeset
2330 #endif /* HAVE_LINK */
6
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
2331
66431
9cd1036455e7 Fix #8879. Add os.link support to Windows.
Brian Curtin <brian.curtin@gmail.com>
parents: 66427
diff changeset
2332 #ifdef MS_WINDOWS
9cd1036455e7 Fix #8879. Add os.link support to Windows.
Brian Curtin <brian.curtin@gmail.com>
parents: 66427
diff changeset
2333 PyDoc_STRVAR(win32_link__doc__,
9cd1036455e7 Fix #8879. Add os.link support to Windows.
Brian Curtin <brian.curtin@gmail.com>
parents: 66427
diff changeset
2334 "link(src, dst)\n\n\
9cd1036455e7 Fix #8879. Add os.link support to Windows.
Brian Curtin <brian.curtin@gmail.com>
parents: 66427
diff changeset
2335 Create a hard link to a file.");
9cd1036455e7 Fix #8879. Add os.link support to Windows.
Brian Curtin <brian.curtin@gmail.com>
parents: 66427
diff changeset
2336
9cd1036455e7 Fix #8879. Add os.link support to Windows.
Brian Curtin <brian.curtin@gmail.com>
parents: 66427
diff changeset
2337 static PyObject *
9cd1036455e7 Fix #8879. Add os.link support to Windows.
Brian Curtin <brian.curtin@gmail.com>
parents: 66427
diff changeset
2338 win32_link(PyObject *self, PyObject *args)
9cd1036455e7 Fix #8879. Add os.link support to Windows.
Brian Curtin <brian.curtin@gmail.com>
parents: 66427
diff changeset
2339 {
9cd1036455e7 Fix #8879. Add os.link support to Windows.
Brian Curtin <brian.curtin@gmail.com>
parents: 66427
diff changeset
2340 PyObject *osrc, *odst;
9cd1036455e7 Fix #8879. Add os.link support to Windows.
Brian Curtin <brian.curtin@gmail.com>
parents: 66427
diff changeset
2341 char *src, *dst;
9cd1036455e7 Fix #8879. Add os.link support to Windows.
Brian Curtin <brian.curtin@gmail.com>
parents: 66427
diff changeset
2342 BOOL rslt;
9cd1036455e7 Fix #8879. Add os.link support to Windows.
Brian Curtin <brian.curtin@gmail.com>
parents: 66427
diff changeset
2343
66528
03d0d186713b Fix for #8879.
Brian Curtin <brian.curtin@gmail.com>
parents: 66522
diff changeset
2344 PyUnicodeObject *usrc, *udst;
03d0d186713b Fix for #8879.
Brian Curtin <brian.curtin@gmail.com>
parents: 66522
diff changeset
2345 if (PyArg_ParseTuple(args, "UU:link", &usrc, &udst)) {
03d0d186713b Fix for #8879.
Brian Curtin <brian.curtin@gmail.com>
parents: 66522
diff changeset
2346 Py_BEGIN_ALLOW_THREADS
03d0d186713b Fix for #8879.
Brian Curtin <brian.curtin@gmail.com>
parents: 66522
diff changeset
2347 rslt = CreateHardLinkW(PyUnicode_AS_UNICODE(udst),
03d0d186713b Fix for #8879.
Brian Curtin <brian.curtin@gmail.com>
parents: 66522
diff changeset
2348 PyUnicode_AS_UNICODE(usrc), NULL);
03d0d186713b Fix for #8879.
Brian Curtin <brian.curtin@gmail.com>
parents: 66522
diff changeset
2349 Py_END_ALLOW_THREADS
03d0d186713b Fix for #8879.
Brian Curtin <brian.curtin@gmail.com>
parents: 66522
diff changeset
2350
03d0d186713b Fix for #8879.
Brian Curtin <brian.curtin@gmail.com>
parents: 66522
diff changeset
2351 if (rslt == 0)
03d0d186713b Fix for #8879.
Brian Curtin <brian.curtin@gmail.com>
parents: 66522
diff changeset
2352 return win32_error("link", NULL);
03d0d186713b Fix for #8879.
Brian Curtin <brian.curtin@gmail.com>
parents: 66522
diff changeset
2353
03d0d186713b Fix for #8879.
Brian Curtin <brian.curtin@gmail.com>
parents: 66522
diff changeset
2354 Py_RETURN_NONE;
03d0d186713b Fix for #8879.
Brian Curtin <brian.curtin@gmail.com>
parents: 66522
diff changeset
2355 }
03d0d186713b Fix for #8879.
Brian Curtin <brian.curtin@gmail.com>
parents: 66522
diff changeset
2356
03d0d186713b Fix for #8879.
Brian Curtin <brian.curtin@gmail.com>
parents: 66522
diff changeset
2357 /* Narrow strings also valid. */
03d0d186713b Fix for #8879.
Brian Curtin <brian.curtin@gmail.com>
parents: 66522
diff changeset
2358 PyErr_Clear();
03d0d186713b Fix for #8879.
Brian Curtin <brian.curtin@gmail.com>
parents: 66522
diff changeset
2359
66431
9cd1036455e7 Fix #8879. Add os.link support to Windows.
Brian Curtin <brian.curtin@gmail.com>
parents: 66427
diff changeset
2360 if (!PyArg_ParseTuple(args, "O&O&:link", PyUnicode_FSConverter, &osrc,
9cd1036455e7 Fix #8879. Add os.link support to Windows.
Brian Curtin <brian.curtin@gmail.com>
parents: 66427
diff changeset
2361 PyUnicode_FSConverter, &odst))
9cd1036455e7 Fix #8879. Add os.link support to Windows.
Brian Curtin <brian.curtin@gmail.com>
parents: 66427
diff changeset
2362 return NULL;
9cd1036455e7 Fix #8879. Add os.link support to Windows.
Brian Curtin <brian.curtin@gmail.com>
parents: 66427
diff changeset
2363
9cd1036455e7 Fix #8879. Add os.link support to Windows.
Brian Curtin <brian.curtin@gmail.com>
parents: 66427
diff changeset
2364 src = PyBytes_AsString(osrc);
9cd1036455e7 Fix #8879. Add os.link support to Windows.
Brian Curtin <brian.curtin@gmail.com>
parents: 66427
diff changeset
2365 dst = PyBytes_AsString(odst);
9cd1036455e7 Fix #8879. Add os.link support to Windows.
Brian Curtin <brian.curtin@gmail.com>
parents: 66427
diff changeset
2366
9cd1036455e7 Fix #8879. Add os.link support to Windows.
Brian Curtin <brian.curtin@gmail.com>
parents: 66427
diff changeset
2367 Py_BEGIN_ALLOW_THREADS
66528
03d0d186713b Fix for #8879.
Brian Curtin <brian.curtin@gmail.com>
parents: 66522
diff changeset
2368 rslt = CreateHardLinkA(dst, src, NULL);
66431
9cd1036455e7 Fix #8879. Add os.link support to Windows.
Brian Curtin <brian.curtin@gmail.com>
parents: 66427
diff changeset
2369 Py_END_ALLOW_THREADS
9cd1036455e7 Fix #8879. Add os.link support to Windows.
Brian Curtin <brian.curtin@gmail.com>
parents: 66427
diff changeset
2370
66508
d3bad41ad701 Fix additional leaks.
Stefan Krah <stefan@bytereef.org>
parents: 66494
diff changeset
2371 Py_DECREF(osrc);
d3bad41ad701 Fix additional leaks.
Stefan Krah <stefan@bytereef.org>
parents: 66494
diff changeset
2372 Py_DECREF(odst);
66431
9cd1036455e7 Fix #8879. Add os.link support to Windows.
Brian Curtin <brian.curtin@gmail.com>
parents: 66427
diff changeset
2373 if (rslt == 0)
66528
03d0d186713b Fix for #8879.
Brian Curtin <brian.curtin@gmail.com>
parents: 66522
diff changeset
2374 return win32_error("link", NULL);
66431
9cd1036455e7 Fix #8879. Add os.link support to Windows.
Brian Curtin <brian.curtin@gmail.com>
parents: 66427
diff changeset
2375
9cd1036455e7 Fix #8879. Add os.link support to Windows.
Brian Curtin <brian.curtin@gmail.com>
parents: 66427
diff changeset
2376 Py_RETURN_NONE;
9cd1036455e7 Fix #8879. Add os.link support to Windows.
Brian Curtin <brian.curtin@gmail.com>
parents: 66427
diff changeset
2377 }
9cd1036455e7 Fix #8879. Add os.link support to Windows.
Brian Curtin <brian.curtin@gmail.com>
parents: 66427
diff changeset
2378 #endif /* MS_WINDOWS */
9cd1036455e7 Fix #8879. Add os.link support to Windows.
Brian Curtin <brian.curtin@gmail.com>
parents: 66427
diff changeset
2379
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
2380
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
2381 PyDoc_STRVAR(posix_listdir__doc__,
63151
76e079225079 Issue #6095: Make directory argument to os.listdir optional.
Martin v. Löwis <martin@v.loewis.de>
parents: 62900
diff changeset
2382 "listdir([path]) -> list_of_strings\n\n\
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
2383 Return a list containing the names of the entries in the directory.\n\
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
2384 \n\
63151
76e079225079 Issue #6095: Make directory argument to os.listdir optional.
Martin v. Löwis <martin@v.loewis.de>
parents: 62900
diff changeset
2385 path: path of directory to list (default: '.')\n\
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
2386 \n\
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
2387 The list is in arbitrary order. It does not include the special\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
2388 entries '.' and '..' even if they are present in the directory.");
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
2389
4672
5b53268f547a Renamed.
Barry Warsaw <barry@python.org>
parents: 4600
diff changeset
2390 static PyObject *
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
2391 posix_listdir(PyObject *self, PyObject *args)
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
2392 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2393 /* XXX Should redo this putting the (now four) versions of opendir
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2394 in separate files instead of having them all here... */
24071
8142f8d668a0 Patch #569753: Remove support for WIN16.
Martin v. Löwis <martin@v.loewis.de>
parents: 23937
diff changeset
2395 #if defined(MS_WINDOWS) && !defined(HAVE_OPENDIR)
1792
a584b4bbbc59 Changes to make it work and compile on NT, by Mark Hammond.
Guido van Rossum <guido@python.org>
parents: 1746
diff changeset
2396
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2397 PyObject *d, *v;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2398 HANDLE hFindFile;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2399 BOOL result;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2400 WIN32_FIND_DATA FileData;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2401 PyObject *opath;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2402 char namebuf[MAX_PATH+5]; /* Overallocate for \\*.*\0 */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2403 char *bufptr = namebuf;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2404 Py_ssize_t len = sizeof(namebuf)-5; /* only claim to have space for MAX_PATH */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2405
63151
76e079225079 Issue #6095: Make directory argument to os.listdir optional.
Martin v. Löwis <martin@v.loewis.de>
parents: 62900
diff changeset
2406 PyObject *po = NULL;
76e079225079 Issue #6095: Make directory argument to os.listdir optional.
Martin v. Löwis <martin@v.loewis.de>
parents: 62900
diff changeset
2407 if (PyArg_ParseTuple(args, "|U:listdir", &po)) {
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2408 WIN32_FIND_DATAW wFileData;
63151
76e079225079 Issue #6095: Make directory argument to os.listdir optional.
Martin v. Löwis <martin@v.loewis.de>
parents: 62900
diff changeset
2409 Py_UNICODE *wnamebuf, *po_wchars;
70840
f6d6afe53385 posixmodule.c: fix function name in argument parsing
Victor Stinner <victor.stinner@haypocalc.com>
parents: 70815
diff changeset
2410
64733
4a4fbe0227aa Remove C++-style comments
Antoine Pitrou <solipsis@pitrou.net>
parents: 64631
diff changeset
2411 if (po == NULL) { /* Default arg: "." */
63151
76e079225079 Issue #6095: Make directory argument to os.listdir optional.
Martin v. Löwis <martin@v.loewis.de>
parents: 62900
diff changeset
2412 po_wchars = L".";
76e079225079 Issue #6095: Make directory argument to os.listdir optional.
Martin v. Löwis <martin@v.loewis.de>
parents: 62900
diff changeset
2413 len = 1;
76e079225079 Issue #6095: Make directory argument to os.listdir optional.
Martin v. Löwis <martin@v.loewis.de>
parents: 62900
diff changeset
2414 } else {
76e079225079 Issue #6095: Make directory argument to os.listdir optional.
Martin v. Löwis <martin@v.loewis.de>
parents: 62900
diff changeset
2415 po_wchars = PyUnicode_AS_UNICODE(po);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2416 len = PyUnicode_GET_SIZE(po);
63151
76e079225079 Issue #6095: Make directory argument to os.listdir optional.
Martin v. Löwis <martin@v.loewis.de>
parents: 62900
diff changeset
2417 }
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2418 /* Overallocate for \\*.*\0 */
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2419 wnamebuf = malloc((len + 5) * sizeof(wchar_t));
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2420 if (!wnamebuf) {
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2421 PyErr_NoMemory();
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2422 return NULL;
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2423 }
63151
76e079225079 Issue #6095: Make directory argument to os.listdir optional.
Martin v. Löwis <martin@v.loewis.de>
parents: 62900
diff changeset
2424 wcscpy(wnamebuf, po_wchars);
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2425 if (len > 0) {
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2426 Py_UNICODE wch = wnamebuf[len-1];
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2427 if (wch != L'/' && wch != L'\\' && wch != L':')
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2428 wnamebuf[len++] = L'\\';
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2429 wcscpy(wnamebuf + len, L"*.*");
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2430 }
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2431 if ((d = PyList_New(0)) == NULL) {
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2432 free(wnamebuf);
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2433 return NULL;
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2434 }
63900
ff9614edf3a0 Issue #6915: Under Windows, os.listdir() didn't release the Global
Antoine Pitrou <solipsis@pitrou.net>
parents: 63472
diff changeset
2435 Py_BEGIN_ALLOW_THREADS
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2436 hFindFile = FindFirstFileW(wnamebuf, &wFileData);
63900
ff9614edf3a0 Issue #6915: Under Windows, os.listdir() didn't release the Global
Antoine Pitrou <solipsis@pitrou.net>
parents: 63472
diff changeset
2437 Py_END_ALLOW_THREADS
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2438 if (hFindFile == INVALID_HANDLE_VALUE) {
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2439 int error = GetLastError();
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2440 if (error == ERROR_FILE_NOT_FOUND) {
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2441 free(wnamebuf);
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2442 return d;
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2443 }
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2444 Py_DECREF(d);
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2445 win32_error_unicode("FindFirstFileW", wnamebuf);
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2446 free(wnamebuf);
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2447 return NULL;
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2448 }
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2449 do {
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2450 /* Skip over . and .. */
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2451 if (wcscmp(wFileData.cFileName, L".") != 0 &&
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2452 wcscmp(wFileData.cFileName, L"..") != 0) {
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2453 v = PyUnicode_FromUnicode(wFileData.cFileName, wcslen(wFileData.cFileName));
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2454 if (v == NULL) {
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2455 Py_DECREF(d);
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2456 d = NULL;
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2457 break;
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2458 }
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2459 if (PyList_Append(d, v) != 0) {
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2460 Py_DECREF(v);
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2461 Py_DECREF(d);
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2462 d = NULL;
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2463 break;
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2464 }
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2465 Py_DECREF(v);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2466 }
63901
14fb67e7fa04 Merged revisions 83921 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 63165
diff changeset
2467 Py_BEGIN_ALLOW_THREADS
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2468 result = FindNextFileW(hFindFile, &wFileData);
63901
14fb67e7fa04 Merged revisions 83921 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 63165
diff changeset
2469 Py_END_ALLOW_THREADS
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2470 /* FindNextFile sets error to ERROR_NO_MORE_FILES if
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2471 it got to the end of the directory. */
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2472 if (!result && GetLastError() != ERROR_NO_MORE_FILES) {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2473 Py_DECREF(d);
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2474 win32_error_unicode("FindNextFileW", wnamebuf);
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2475 FindClose(hFindFile);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2476 free(wnamebuf);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2477 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2478 }
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2479 } while (result == TRUE);
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2480
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2481 if (FindClose(hFindFile) == FALSE) {
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2482 Py_DECREF(d);
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2483 win32_error_unicode("FindClose", wnamebuf);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2484 free(wnamebuf);
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2485 return NULL;
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2486 }
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2487 free(wnamebuf);
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2488 return d;
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2489 }
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2490 /* Drop the argument parsing error as narrow strings
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2491 are also valid. */
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2492 PyErr_Clear();
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2493
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2494 if (!PyArg_ParseTuple(args, "O&:listdir",
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2495 PyUnicode_FSConverter, &opath))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2496 return NULL;
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2497 if (PyBytes_GET_SIZE(opath)+1 > MAX_PATH) {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2498 PyErr_SetString(PyExc_ValueError, "path too long");
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2499 Py_DECREF(opath);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2500 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2501 }
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2502 strcpy(namebuf, PyBytes_AsString(opath));
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2503 len = PyObject_Size(opath);
66522
0f0c6b879796 Windows: fix leak in posix_listdir.
Stefan Krah <stefan@bytereef.org>
parents: 66508
diff changeset
2504 Py_DECREF(opath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2505 if (len > 0) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2506 char ch = namebuf[len-1];
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2507 if (ch != SEP && ch != ALTSEP && ch != ':')
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2508 namebuf[len++] = '/';
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2509 strcpy(namebuf + len, "*.*");
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2510 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2511
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2512 if ((d = PyList_New(0)) == NULL)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2513 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2514
63901
14fb67e7fa04 Merged revisions 83921 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 63165
diff changeset
2515 Py_BEGIN_ALLOW_THREADS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2516 hFindFile = FindFirstFile(namebuf, &FileData);
63901
14fb67e7fa04 Merged revisions 83921 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 63165
diff changeset
2517 Py_END_ALLOW_THREADS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2518 if (hFindFile == INVALID_HANDLE_VALUE) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2519 int error = GetLastError();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2520 if (error == ERROR_FILE_NOT_FOUND)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2521 return d;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2522 Py_DECREF(d);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2523 return win32_error("FindFirstFile", namebuf);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2524 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2525 do {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2526 /* Skip over . and .. */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2527 if (strcmp(FileData.cFileName, ".") != 0 &&
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2528 strcmp(FileData.cFileName, "..") != 0) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2529 v = PyBytes_FromString(FileData.cFileName);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2530 if (v == NULL) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2531 Py_DECREF(d);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2532 d = NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2533 break;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2534 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2535 if (PyList_Append(d, v) != 0) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2536 Py_DECREF(v);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2537 Py_DECREF(d);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2538 d = NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2539 break;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2540 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2541 Py_DECREF(v);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2542 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2543 Py_BEGIN_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2544 result = FindNextFile(hFindFile, &FileData);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2545 Py_END_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2546 /* FindNextFile sets error to ERROR_NO_MORE_FILES if
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2547 it got to the end of the directory. */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2548 if (!result && GetLastError() != ERROR_NO_MORE_FILES) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2549 Py_DECREF(d);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2550 win32_error("FindNextFile", namebuf);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2551 FindClose(hFindFile);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2552 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2553 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2554 } while (result == TRUE);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2555
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2556 if (FindClose(hFindFile) == FALSE) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2557 Py_DECREF(d);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2558 return win32_error("FindClose", namebuf);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2559 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2560
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2561 return d;
1792
a584b4bbbc59 Changes to make it work and compile on NT, by Mark Hammond.
Guido van Rossum <guido@python.org>
parents: 1746
diff changeset
2562
14586
cd1b9d8d045d Closes SF bug 113894: on Windows, things like os.listdir("k:") and
Tim Peters <tim.peters@gmail.com>
parents: 14375
diff changeset
2563 #elif defined(PYOS_OS2)
6626
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
2564
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
2565 #ifndef MAX_PATH
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
2566 #define MAX_PATH CCHMAXPATH
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
2567 #endif
53767
ac209f132b17 Issue #5915: Implement PEP 383, Non-decodable Bytes in
Martin v. Löwis <martin@v.loewis.de>
parents: 53731
diff changeset
2568 PyObject *oname;
6626
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
2569 char *name, *pt;
36747
dba77092d46e Py_ssize_t-ify.
Thomas Wouters <thomas@python.org>
parents: 36600
diff changeset
2570 Py_ssize_t len;
6626
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
2571 PyObject *d, *v;
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
2572 char namebuf[MAX_PATH+5];
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
2573 HDIR hdir = 1;
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
2574 ULONG srchcnt = 1;
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
2575 FILEFINDBUF3 ep;
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
2576 APIRET rc;
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
2577
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2578 if (!PyArg_ParseTuple(args, "O&:listdir",
53767
ac209f132b17 Issue #5915: Implement PEP 383, Non-decodable Bytes in
Martin v. Löwis <martin@v.loewis.de>
parents: 53731
diff changeset
2579 PyUnicode_FSConverter, &oname))
6626
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
2580 return NULL;
60856
dd18cccb55b0 Issue #8485: PyUnicode_FSConverter() doesn't accept bytearray object anymore,
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60623
diff changeset
2581 name = PyBytes_AsString(oname);
dd18cccb55b0 Issue #8485: PyUnicode_FSConverter() doesn't accept bytearray object anymore,
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60623
diff changeset
2582 len = PyBytes_GET_SIZE(oname);
6626
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
2583 if (len >= MAX_PATH) {
60856
dd18cccb55b0 Issue #8485: PyUnicode_FSConverter() doesn't accept bytearray object anymore,
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60623
diff changeset
2584 Py_DECREF(oname);
43562
9fbf733a0639 Fix some more memory leaks (in error conditions) introduced in r58455.
Neal Norwitz <nnorwitz@gmail.com>
parents: 43561
diff changeset
2585 PyErr_SetString(PyExc_ValueError, "path too long");
6626
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
2586 return NULL;
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
2587 }
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
2588 strcpy(namebuf, name);
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
2589 for (pt = namebuf; *pt; pt++)
22116
0c4230269ed3 OS/2 EMX port changes (Modules part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 21966
diff changeset
2590 if (*pt == ALTSEP)
0c4230269ed3 OS/2 EMX port changes (Modules part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 21966
diff changeset
2591 *pt = SEP;
0c4230269ed3 OS/2 EMX port changes (Modules part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 21966
diff changeset
2592 if (namebuf[len-1] != SEP)
0c4230269ed3 OS/2 EMX port changes (Modules part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 21966
diff changeset
2593 namebuf[len++] = SEP;
6626
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
2594 strcpy(namebuf + len, "*.*");
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
2595
43562
9fbf733a0639 Fix some more memory leaks (in error conditions) introduced in r58455.
Neal Norwitz <nnorwitz@gmail.com>
parents: 43561
diff changeset
2596 if ((d = PyList_New(0)) == NULL) {
60856
dd18cccb55b0 Issue #8485: PyUnicode_FSConverter() doesn't accept bytearray object anymore,
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60623
diff changeset
2597 Py_DECREF(oname);
6626
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
2598 return NULL;
43561
0015572d11bc Fix the memory leak introduced in r58455. The buffer reference
Alexandre Vassalotti <alexandre@peadrop.com>
parents: 43560
diff changeset
2599 }
6626
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
2600
6717
64a75211cf72 Patch for QNX, by Chris Herborth. Also left-aligned preprocessor
Guido van Rossum <guido@python.org>
parents: 6626
diff changeset
2601 rc = DosFindFirst(namebuf, /* Wildcard Pattern to Match */
64a75211cf72 Patch for QNX, by Chris Herborth. Also left-aligned preprocessor
Guido van Rossum <guido@python.org>
parents: 6626
diff changeset
2602 &hdir, /* Handle to Use While Search Directory */
6626
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
2603 FILE_READONLY | FILE_HIDDEN | FILE_SYSTEM | FILE_DIRECTORY,
6717
64a75211cf72 Patch for QNX, by Chris Herborth. Also left-aligned preprocessor
Guido van Rossum <guido@python.org>
parents: 6626
diff changeset
2604 &ep, sizeof(ep), /* Structure to Receive Directory Entry */
64a75211cf72 Patch for QNX, by Chris Herborth. Also left-aligned preprocessor
Guido van Rossum <guido@python.org>
parents: 6626
diff changeset
2605 &srchcnt, /* Max and Actual Count of Entries Per Iteration */
64a75211cf72 Patch for QNX, by Chris Herborth. Also left-aligned preprocessor
Guido van Rossum <guido@python.org>
parents: 6626
diff changeset
2606 FIL_STANDARD); /* Format of Entry (EAs or Not) */
6626
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
2607
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
2608 if (rc != NO_ERROR) {
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
2609 errno = ENOENT;
53767
ac209f132b17 Issue #5915: Implement PEP 383, Non-decodable Bytes in
Martin v. Löwis <martin@v.loewis.de>
parents: 53731
diff changeset
2610 return posix_error_with_allocated_filename(oname);
6626
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
2611 }
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
2612
6717
64a75211cf72 Patch for QNX, by Chris Herborth. Also left-aligned preprocessor
Guido van Rossum <guido@python.org>
parents: 6626
diff changeset
2613 if (srchcnt > 0) { /* If Directory is NOT Totally Empty, */
6626
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
2614 do {
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
2615 if (ep.achName[0] == '.'
22116
0c4230269ed3 OS/2 EMX port changes (Modules part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 21966
diff changeset
2616 && (ep.achName[1] == '\0' || (ep.achName[1] == '.' && ep.achName[2] == '\0')))
6717
64a75211cf72 Patch for QNX, by Chris Herborth. Also left-aligned preprocessor
Guido van Rossum <guido@python.org>
parents: 6626
diff changeset
2617 continue; /* Skip Over "." and ".." Names */
6626
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
2618
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
2619 strcpy(namebuf, ep.achName);
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
2620
6717
64a75211cf72 Patch for QNX, by Chris Herborth. Also left-aligned preprocessor
Guido van Rossum <guido@python.org>
parents: 6626
diff changeset
2621 /* Leave Case of Name Alone -- In Native Form */
64a75211cf72 Patch for QNX, by Chris Herborth. Also left-aligned preprocessor
Guido van Rossum <guido@python.org>
parents: 6626
diff changeset
2622 /* (Removed Forced Lowercasing Code) */
6626
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
2623
47301
23ab586c427a Renamed PyString to PyBytes
Christian Heimes <christian@cheimes.de>
parents: 47254
diff changeset
2624 v = PyBytes_FromString(namebuf);
6626
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
2625 if (v == NULL) {
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
2626 Py_DECREF(d);
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
2627 d = NULL;
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
2628 break;
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
2629 }
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
2630 if (PyList_Append(d, v) != 0) {
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
2631 Py_DECREF(v);
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
2632 Py_DECREF(d);
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
2633 d = NULL;
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
2634 break;
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
2635 }
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
2636 Py_DECREF(v);
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
2637 } while (DosFindNext(hdir, &ep, sizeof(ep), &srchcnt) == NO_ERROR && srchcnt > 0);
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
2638 }
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
2639
60856
dd18cccb55b0 Issue #8485: PyUnicode_FSConverter() doesn't accept bytearray object anymore,
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60623
diff changeset
2640 Py_DECREF(oname);
6626
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
2641 return d;
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
2642 #else
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2643 PyObject *oname;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2644 char *name;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2645 PyObject *d, *v;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2646 DIR *dirp;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2647 struct dirent *ep;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2648 int arg_is_unicode = 1;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2649
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2650 errno = 0;
63151
76e079225079 Issue #6095: Make directory argument to os.listdir optional.
Martin v. Löwis <martin@v.loewis.de>
parents: 62900
diff changeset
2651 /* v is never read, so it does not need to be initialized yet. */
76e079225079 Issue #6095: Make directory argument to os.listdir optional.
Martin v. Löwis <martin@v.loewis.de>
parents: 62900
diff changeset
2652 if (!PyArg_ParseTuple(args, "|U:listdir", &v)) {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2653 arg_is_unicode = 0;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2654 PyErr_Clear();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2655 }
63151
76e079225079 Issue #6095: Make directory argument to os.listdir optional.
Martin v. Löwis <martin@v.loewis.de>
parents: 62900
diff changeset
2656 oname = NULL;
76e079225079 Issue #6095: Make directory argument to os.listdir optional.
Martin v. Löwis <martin@v.loewis.de>
parents: 62900
diff changeset
2657 if (!PyArg_ParseTuple(args, "|O&:listdir", PyUnicode_FSConverter, &oname))
76e079225079 Issue #6095: Make directory argument to os.listdir optional.
Martin v. Löwis <martin@v.loewis.de>
parents: 62900
diff changeset
2658 return NULL;
64733
4a4fbe0227aa Remove C++-style comments
Antoine Pitrou <solipsis@pitrou.net>
parents: 64631
diff changeset
2659 if (oname == NULL) { /* Default arg: "." */
66494
fadf74c0c504 Further indentation cleanup.
Stefan Krah <stefan@bytereef.org>
parents: 66491
diff changeset
2660 oname = PyBytes_FromString(".");
63151
76e079225079 Issue #6095: Make directory argument to os.listdir optional.
Martin v. Löwis <martin@v.loewis.de>
parents: 62900
diff changeset
2661 }
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2662 name = PyBytes_AsString(oname);
64428
0af94ee99a48 Merged revisions 84489 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 64047
diff changeset
2663 Py_BEGIN_ALLOW_THREADS
0af94ee99a48 Merged revisions 84489 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 64047
diff changeset
2664 dirp = opendir(name);
0af94ee99a48 Merged revisions 84489 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 64047
diff changeset
2665 Py_END_ALLOW_THREADS
0af94ee99a48 Merged revisions 84489 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 64047
diff changeset
2666 if (dirp == NULL) {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2667 return posix_error_with_allocated_filename(oname);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2668 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2669 if ((d = PyList_New(0)) == NULL) {
64428
0af94ee99a48 Merged revisions 84489 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 64047
diff changeset
2670 Py_BEGIN_ALLOW_THREADS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2671 closedir(dirp);
64428
0af94ee99a48 Merged revisions 84489 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 64047
diff changeset
2672 Py_END_ALLOW_THREADS
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2673 Py_DECREF(oname);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2674 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2675 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2676 for (;;) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2677 errno = 0;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2678 Py_BEGIN_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2679 ep = readdir(dirp);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2680 Py_END_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2681 if (ep == NULL) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2682 if (errno == 0) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2683 break;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2684 } else {
64428
0af94ee99a48 Merged revisions 84489 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 64047
diff changeset
2685 Py_BEGIN_ALLOW_THREADS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2686 closedir(dirp);
64428
0af94ee99a48 Merged revisions 84489 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 64047
diff changeset
2687 Py_END_ALLOW_THREADS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2688 Py_DECREF(d);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2689 return posix_error_with_allocated_filename(oname);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2690 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2691 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2692 if (ep->d_name[0] == '.' &&
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2693 (NAMLEN(ep) == 1 ||
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2694 (ep->d_name[1] == '.' && NAMLEN(ep) == 2)))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2695 continue;
61578
ab31b009a1ee posix_listdir(), posix_readlink(): avoid temporary PyBytes object
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61385
diff changeset
2696 if (arg_is_unicode)
ab31b009a1ee posix_listdir(), posix_readlink(): avoid temporary PyBytes object
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61385
diff changeset
2697 v = PyUnicode_DecodeFSDefaultAndSize(ep->d_name, NAMLEN(ep));
ab31b009a1ee posix_listdir(), posix_readlink(): avoid temporary PyBytes object
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61385
diff changeset
2698 else
ab31b009a1ee posix_listdir(), posix_readlink(): avoid temporary PyBytes object
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61385
diff changeset
2699 v = PyBytes_FromStringAndSize(ep->d_name, NAMLEN(ep));
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2700 if (v == NULL) {
61578
ab31b009a1ee posix_listdir(), posix_readlink(): avoid temporary PyBytes object
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61385
diff changeset
2701 Py_CLEAR(d);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2702 break;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2703 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2704 if (PyList_Append(d, v) != 0) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2705 Py_DECREF(v);
61578
ab31b009a1ee posix_listdir(), posix_readlink(): avoid temporary PyBytes object
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61385
diff changeset
2706 Py_CLEAR(d);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2707 break;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2708 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2709 Py_DECREF(v);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2710 }
64428
0af94ee99a48 Merged revisions 84489 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 64047
diff changeset
2711 Py_BEGIN_ALLOW_THREADS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2712 closedir(dirp);
64428
0af94ee99a48 Merged revisions 84489 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 64047
diff changeset
2713 Py_END_ALLOW_THREADS
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2714 Py_DECREF(oname);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2715
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2716 return d;
1792
a584b4bbbc59 Changes to make it work and compile on NT, by Mark Hammond.
Guido van Rossum <guido@python.org>
parents: 1746
diff changeset
2717
14586
cd1b9d8d045d Closes SF bug 113894: on Windows, things like os.listdir("k:") and
Tim Peters <tim.peters@gmail.com>
parents: 14375
diff changeset
2718 #endif /* which OS */
cd1b9d8d045d Closes SF bug 113894: on Windows, things like os.listdir("k:") and
Tim Peters <tim.peters@gmail.com>
parents: 14375
diff changeset
2719 } /* end of posix_listdir */
6
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
2720
24071
8142f8d668a0 Patch #569753: Remove support for WIN16.
Martin v. Löwis <martin@v.loewis.de>
parents: 23937
diff changeset
2721 #ifdef MS_WINDOWS
17817
f7c385226f65 Add support for Windows using "mbcs" as the default Unicode encoding when dealing with the file system. As discussed on python-dev and in patch 410465.
Mark Hammond <mhammond@skippinet.com.au>
parents: 17518
diff changeset
2722 /* A helper function for abspath on win32 */
f7c385226f65 Add support for Windows using "mbcs" as the default Unicode encoding when dealing with the file system. As discussed on python-dev and in patch 410465.
Mark Hammond <mhammond@skippinet.com.au>
parents: 17518
diff changeset
2723 static PyObject *
f7c385226f65 Add support for Windows using "mbcs" as the default Unicode encoding when dealing with the file system. As discussed on python-dev and in patch 410465.
Mark Hammond <mhammond@skippinet.com.au>
parents: 17518
diff changeset
2724 posix__getfullpathname(PyObject *self, PyObject *args)
f7c385226f65 Add support for Windows using "mbcs" as the default Unicode encoding when dealing with the file system. As discussed on python-dev and in patch 410465.
Mark Hammond <mhammond@skippinet.com.au>
parents: 17518
diff changeset
2725 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2726 PyObject *opath;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2727 char *path;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2728 char outbuf[MAX_PATH*2];
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2729 char *temp;
54129
77cfef596d33 Merged revisions 72698-72699 via svnmerge from
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 53993
diff changeset
2730 #ifdef MS_WINDOWS
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2731 PyUnicodeObject *po;
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2732 if (PyArg_ParseTuple(args, "U|:_getfullpathname", &po)) {
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2733 Py_UNICODE *wpath = PyUnicode_AS_UNICODE(po);
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2734 Py_UNICODE woutbuf[MAX_PATH*2], *woutbufp = woutbuf;
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2735 Py_UNICODE *wtemp;
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2736 DWORD result;
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2737 PyObject *v;
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2738 result = GetFullPathNameW(wpath,
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2739 sizeof(woutbuf)/sizeof(woutbuf[0]),
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2740 woutbuf, &wtemp);
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2741 if (result > sizeof(woutbuf)/sizeof(woutbuf[0])) {
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2742 woutbufp = malloc(result * sizeof(Py_UNICODE));
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2743 if (!woutbufp)
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2744 return PyErr_NoMemory();
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2745 result = GetFullPathNameW(wpath, result, woutbufp, &wtemp);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2746 }
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2747 if (result)
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2748 v = PyUnicode_FromUnicode(woutbufp, wcslen(woutbufp));
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2749 else
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2750 v = win32_error_unicode("GetFullPathNameW", wpath);
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2751 if (woutbufp != woutbuf)
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2752 free(woutbufp);
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2753 return v;
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2754 }
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2755 /* Drop the argument parsing error as narrow strings
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2756 are also valid. */
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2757 PyErr_Clear();
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2758
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2759 #endif
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2760 if (!PyArg_ParseTuple (args, "O&:_getfullpathname",
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2761 PyUnicode_FSConverter, &opath))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2762 return NULL;
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2763 path = PyBytes_AsString(opath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2764 if (!GetFullPathName(path, sizeof(outbuf)/sizeof(outbuf[0]),
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2765 outbuf, &temp)) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2766 win32_error("GetFullPathName", path);
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2767 Py_DECREF(opath);
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2768 return NULL;
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2769 }
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2770 Py_DECREF(opath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2771 if (PyUnicode_Check(PyTuple_GetItem(args, 0))) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2772 return PyUnicode_Decode(outbuf, strlen(outbuf),
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2773 Py_FileSystemDefaultEncoding, NULL);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2774 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2775 return PyBytes_FromString(outbuf);
17817
f7c385226f65 Add support for Windows using "mbcs" as the default Unicode encoding when dealing with the file system. As discussed on python-dev and in patch 410465.
Mark Hammond <mhammond@skippinet.com.au>
parents: 17518
diff changeset
2776 } /* end of posix__getfullpathname */
62874
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
2777
70811
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
2778
66425
0a1baa619171 Fix #10027. st_nlink not set on Windows calls to os.stat/lstat.
Brian Curtin <brian.curtin@gmail.com>
parents: 65633
diff changeset
2779
62874
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
2780 /* A helper function for samepath on windows */
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
2781 static PyObject *
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
2782 posix__getfinalpathname(PyObject *self, PyObject *args)
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
2783 {
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
2784 HANDLE hFile;
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
2785 int buf_size;
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
2786 wchar_t *target_path;
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
2787 int result_length;
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
2788 PyObject *result;
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
2789 wchar_t *path;
70840
f6d6afe53385 posixmodule.c: fix function name in argument parsing
Victor Stinner <victor.stinner@haypocalc.com>
parents: 70815
diff changeset
2790
64919
7aca458461ab Fix a typo. full->final
Brian Curtin <brian.curtin@gmail.com>
parents: 64913
diff changeset
2791 if (!PyArg_ParseTuple(args, "u|:_getfinalpathname", &path)) {
62874
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
2792 return NULL;
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
2793 }
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
2794
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
2795 if(!check_GetFinalPathNameByHandle()) {
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
2796 /* If the OS doesn't have GetFinalPathNameByHandle, return a
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
2797 NotImplementedError. */
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
2798 return PyErr_Format(PyExc_NotImplementedError,
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
2799 "GetFinalPathNameByHandle not available on this platform");
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
2800 }
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
2801
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
2802 hFile = CreateFileW(
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
2803 path,
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
2804 0, /* desired access */
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
2805 0, /* share mode */
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
2806 NULL, /* security attributes */
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
2807 OPEN_EXISTING,
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
2808 /* FILE_FLAG_BACKUP_SEMANTICS is required to open a directory */
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
2809 FILE_FLAG_BACKUP_SEMANTICS,
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
2810 NULL);
70840
f6d6afe53385 posixmodule.c: fix function name in argument parsing
Victor Stinner <victor.stinner@haypocalc.com>
parents: 70815
diff changeset
2811
62874
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
2812 if(hFile == INVALID_HANDLE_VALUE) {
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
2813 return win32_error_unicode("GetFinalPathNamyByHandle", path);
62900
e97cdd5c5e4f Re-flow several long lines from #1578269.
Brian Curtin <brian.curtin@gmail.com>
parents: 62874
diff changeset
2814 return PyErr_Format(PyExc_RuntimeError,
e97cdd5c5e4f Re-flow several long lines from #1578269.
Brian Curtin <brian.curtin@gmail.com>
parents: 62874
diff changeset
2815 "Could not get a handle to file.");
62874
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
2816 }
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
2817
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
2818 /* We have a good handle to the target, use it to determine the
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
2819 target path name. */
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
2820 buf_size = Py_GetFinalPathNameByHandleW(hFile, 0, 0, VOLUME_NAME_NT);
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
2821
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
2822 if(!buf_size)
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
2823 return win32_error_unicode("GetFinalPathNameByHandle", path);
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
2824
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
2825 target_path = (wchar_t *)malloc((buf_size+1)*sizeof(wchar_t));
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
2826 if(!target_path)
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
2827 return PyErr_NoMemory();
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
2828
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
2829 result_length = Py_GetFinalPathNameByHandleW(hFile, target_path,
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
2830 buf_size, VOLUME_NAME_DOS);
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
2831 if(!result_length)
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
2832 return win32_error_unicode("GetFinalPathNamyByHandle", path);
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
2833
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
2834 if(!CloseHandle(hFile))
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
2835 return win32_error_unicode("GetFinalPathNameByHandle", path);
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
2836
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
2837 target_path[result_length] = 0;
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
2838 result = PyUnicode_FromUnicode(target_path, result_length);
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
2839 free(target_path);
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
2840 return result;
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
2841
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
2842 } /* end of posix__getfinalpathname */
64495
f6dfd6c563e1 Implement #7566 - os.path.sameopenfile for Windows.
Brian Curtin <brian.curtin@gmail.com>
parents: 64465
diff changeset
2843
f6dfd6c563e1 Implement #7566 - os.path.sameopenfile for Windows.
Brian Curtin <brian.curtin@gmail.com>
parents: 64465
diff changeset
2844 static PyObject *
f6dfd6c563e1 Implement #7566 - os.path.sameopenfile for Windows.
Brian Curtin <brian.curtin@gmail.com>
parents: 64465
diff changeset
2845 posix__getfileinformation(PyObject *self, PyObject *args)
f6dfd6c563e1 Implement #7566 - os.path.sameopenfile for Windows.
Brian Curtin <brian.curtin@gmail.com>
parents: 64465
diff changeset
2846 {
f6dfd6c563e1 Implement #7566 - os.path.sameopenfile for Windows.
Brian Curtin <brian.curtin@gmail.com>
parents: 64465
diff changeset
2847 HANDLE hFile;
f6dfd6c563e1 Implement #7566 - os.path.sameopenfile for Windows.
Brian Curtin <brian.curtin@gmail.com>
parents: 64465
diff changeset
2848 BY_HANDLE_FILE_INFORMATION info;
f6dfd6c563e1 Implement #7566 - os.path.sameopenfile for Windows.
Brian Curtin <brian.curtin@gmail.com>
parents: 64465
diff changeset
2849 int fd;
f6dfd6c563e1 Implement #7566 - os.path.sameopenfile for Windows.
Brian Curtin <brian.curtin@gmail.com>
parents: 64465
diff changeset
2850
f6dfd6c563e1 Implement #7566 - os.path.sameopenfile for Windows.
Brian Curtin <brian.curtin@gmail.com>
parents: 64465
diff changeset
2851 if (!PyArg_ParseTuple(args, "i:_getfileinformation", &fd))
f6dfd6c563e1 Implement #7566 - os.path.sameopenfile for Windows.
Brian Curtin <brian.curtin@gmail.com>
parents: 64465
diff changeset
2852 return NULL;
f6dfd6c563e1 Implement #7566 - os.path.sameopenfile for Windows.
Brian Curtin <brian.curtin@gmail.com>
parents: 64465
diff changeset
2853
66740
5c3ac8795e9c Should use posix_error here.
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66737
diff changeset
2854 if (!_PyVerify_fd(fd))
5c3ac8795e9c Should use posix_error here.
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66737
diff changeset
2855 return posix_error();
64495
f6dfd6c563e1 Implement #7566 - os.path.sameopenfile for Windows.
Brian Curtin <brian.curtin@gmail.com>
parents: 64465
diff changeset
2856
f6dfd6c563e1 Implement #7566 - os.path.sameopenfile for Windows.
Brian Curtin <brian.curtin@gmail.com>
parents: 64465
diff changeset
2857 hFile = (HANDLE)_get_osfhandle(fd);
f6dfd6c563e1 Implement #7566 - os.path.sameopenfile for Windows.
Brian Curtin <brian.curtin@gmail.com>
parents: 64465
diff changeset
2858 if (hFile == INVALID_HANDLE_VALUE)
66740
5c3ac8795e9c Should use posix_error here.
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 66737
diff changeset
2859 return posix_error();
64495
f6dfd6c563e1 Implement #7566 - os.path.sameopenfile for Windows.
Brian Curtin <brian.curtin@gmail.com>
parents: 64465
diff changeset
2860
f6dfd6c563e1 Implement #7566 - os.path.sameopenfile for Windows.
Brian Curtin <brian.curtin@gmail.com>
parents: 64465
diff changeset
2861 if (!GetFileInformationByHandle(hFile, &info))
f6dfd6c563e1 Implement #7566 - os.path.sameopenfile for Windows.
Brian Curtin <brian.curtin@gmail.com>
parents: 64465
diff changeset
2862 return win32_error("_getfileinformation", NULL);
f6dfd6c563e1 Implement #7566 - os.path.sameopenfile for Windows.
Brian Curtin <brian.curtin@gmail.com>
parents: 64465
diff changeset
2863
f6dfd6c563e1 Implement #7566 - os.path.sameopenfile for Windows.
Brian Curtin <brian.curtin@gmail.com>
parents: 64465
diff changeset
2864 return Py_BuildValue("iii", info.dwVolumeSerialNumber,
f6dfd6c563e1 Implement #7566 - os.path.sameopenfile for Windows.
Brian Curtin <brian.curtin@gmail.com>
parents: 64465
diff changeset
2865 info.nFileIndexHigh,
f6dfd6c563e1 Implement #7566 - os.path.sameopenfile for Windows.
Brian Curtin <brian.curtin@gmail.com>
parents: 64465
diff changeset
2866 info.nFileIndexLow);
f6dfd6c563e1 Implement #7566 - os.path.sameopenfile for Windows.
Brian Curtin <brian.curtin@gmail.com>
parents: 64465
diff changeset
2867 }
70713
88e318166eaf Fix #11583. Changed os.path.isdir to use GetFileAttributes instead of os.stat.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
2868
70736
d40609dd01e0 Correction to 88e318166eaf - Issue #11583
Brian Curtin <brian@python.org>
parents: 70713
diff changeset
2869 PyDoc_STRVAR(posix__isdir__doc__,
d40609dd01e0 Correction to 88e318166eaf - Issue #11583
Brian Curtin <brian@python.org>
parents: 70713
diff changeset
2870 "Return true if the pathname refers to an existing directory.");
d40609dd01e0 Correction to 88e318166eaf - Issue #11583
Brian Curtin <brian@python.org>
parents: 70713
diff changeset
2871
70713
88e318166eaf Fix #11583. Changed os.path.isdir to use GetFileAttributes instead of os.stat.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
2872 static PyObject *
88e318166eaf Fix #11583. Changed os.path.isdir to use GetFileAttributes instead of os.stat.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
2873 posix__isdir(PyObject *self, PyObject *args)
88e318166eaf Fix #11583. Changed os.path.isdir to use GetFileAttributes instead of os.stat.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
2874 {
88e318166eaf Fix #11583. Changed os.path.isdir to use GetFileAttributes instead of os.stat.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
2875 PyObject *opath;
88e318166eaf Fix #11583. Changed os.path.isdir to use GetFileAttributes instead of os.stat.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
2876 char *path;
88e318166eaf Fix #11583. Changed os.path.isdir to use GetFileAttributes instead of os.stat.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
2877 PyUnicodeObject *po;
88e318166eaf Fix #11583. Changed os.path.isdir to use GetFileAttributes instead of os.stat.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
2878 DWORD attributes;
88e318166eaf Fix #11583. Changed os.path.isdir to use GetFileAttributes instead of os.stat.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
2879
88e318166eaf Fix #11583. Changed os.path.isdir to use GetFileAttributes instead of os.stat.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
2880 if (PyArg_ParseTuple(args, "U|:_isdir", &po)) {
88e318166eaf Fix #11583. Changed os.path.isdir to use GetFileAttributes instead of os.stat.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
2881 Py_UNICODE *wpath = PyUnicode_AS_UNICODE(po);
88e318166eaf Fix #11583. Changed os.path.isdir to use GetFileAttributes instead of os.stat.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
2882
88e318166eaf Fix #11583. Changed os.path.isdir to use GetFileAttributes instead of os.stat.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
2883 attributes = GetFileAttributesW(wpath);
88e318166eaf Fix #11583. Changed os.path.isdir to use GetFileAttributes instead of os.stat.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
2884 if (attributes == INVALID_FILE_ATTRIBUTES)
88e318166eaf Fix #11583. Changed os.path.isdir to use GetFileAttributes instead of os.stat.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
2885 Py_RETURN_FALSE;
88e318166eaf Fix #11583. Changed os.path.isdir to use GetFileAttributes instead of os.stat.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
2886 goto check;
88e318166eaf Fix #11583. Changed os.path.isdir to use GetFileAttributes instead of os.stat.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
2887 }
88e318166eaf Fix #11583. Changed os.path.isdir to use GetFileAttributes instead of os.stat.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
2888 /* Drop the argument parsing error as narrow strings
88e318166eaf Fix #11583. Changed os.path.isdir to use GetFileAttributes instead of os.stat.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
2889 are also valid. */
88e318166eaf Fix #11583. Changed os.path.isdir to use GetFileAttributes instead of os.stat.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
2890 PyErr_Clear();
88e318166eaf Fix #11583. Changed os.path.isdir to use GetFileAttributes instead of os.stat.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
2891
88e318166eaf Fix #11583. Changed os.path.isdir to use GetFileAttributes instead of os.stat.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
2892 if (!PyArg_ParseTuple(args, "O&:_isdir",
88e318166eaf Fix #11583. Changed os.path.isdir to use GetFileAttributes instead of os.stat.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
2893 PyUnicode_FSConverter, &opath))
88e318166eaf Fix #11583. Changed os.path.isdir to use GetFileAttributes instead of os.stat.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
2894 return NULL;
88e318166eaf Fix #11583. Changed os.path.isdir to use GetFileAttributes instead of os.stat.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
2895
88e318166eaf Fix #11583. Changed os.path.isdir to use GetFileAttributes instead of os.stat.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
2896 path = PyBytes_AsString(opath);
88e318166eaf Fix #11583. Changed os.path.isdir to use GetFileAttributes instead of os.stat.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
2897 attributes = GetFileAttributesA(path);
88e318166eaf Fix #11583. Changed os.path.isdir to use GetFileAttributes instead of os.stat.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
2898 if (attributes == INVALID_FILE_ATTRIBUTES)
88e318166eaf Fix #11583. Changed os.path.isdir to use GetFileAttributes instead of os.stat.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
2899 Py_RETURN_FALSE;
88e318166eaf Fix #11583. Changed os.path.isdir to use GetFileAttributes instead of os.stat.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
2900
88e318166eaf Fix #11583. Changed os.path.isdir to use GetFileAttributes instead of os.stat.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
2901 check:
88e318166eaf Fix #11583. Changed os.path.isdir to use GetFileAttributes instead of os.stat.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
2902 if (attributes & FILE_ATTRIBUTE_DIRECTORY)
88e318166eaf Fix #11583. Changed os.path.isdir to use GetFileAttributes instead of os.stat.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
2903 Py_RETURN_TRUE;
88e318166eaf Fix #11583. Changed os.path.isdir to use GetFileAttributes instead of os.stat.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
2904 else
88e318166eaf Fix #11583. Changed os.path.isdir to use GetFileAttributes instead of os.stat.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
2905 Py_RETURN_FALSE;
88e318166eaf Fix #11583. Changed os.path.isdir to use GetFileAttributes instead of os.stat.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
2906 }
24071
8142f8d668a0 Patch #569753: Remove support for WIN16.
Martin v. Löwis <martin@v.loewis.de>
parents: 23937
diff changeset
2907 #endif /* MS_WINDOWS */
17817
f7c385226f65 Add support for Windows using "mbcs" as the default Unicode encoding when dealing with the file system. As discussed on python-dev and in patch 410465.
Mark Hammond <mhammond@skippinet.com.au>
parents: 17518
diff changeset
2908
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
2909 PyDoc_STRVAR(posix_mkdir__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
2910 "mkdir(path [, mode=0777])\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
2911 Create a directory.");
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
2912
4672
5b53268f547a Renamed.
Barry Warsaw <barry@python.org>
parents: 4600
diff changeset
2913 static PyObject *
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
2914 posix_mkdir(PyObject *self, PyObject *args)
6
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
2915 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2916 int res;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2917 PyObject *opath;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2918 char *path;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2919 int mode = 0777;
25535
861065256487 Patch 594001: PEP 277 - Unicode file name support for Windows NT.
Mark Hammond <mhammond@skippinet.com.au>
parents: 25327
diff changeset
2920
54129
77cfef596d33 Merged revisions 72698-72699 via svnmerge from
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 53993
diff changeset
2921 #ifdef MS_WINDOWS
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2922 PyUnicodeObject *po;
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2923 if (PyArg_ParseTuple(args, "U|i:mkdir", &po, &mode)) {
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2924 Py_BEGIN_ALLOW_THREADS
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2925 /* PyUnicode_AS_UNICODE OK without thread lock as
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2926 it is a simple dereference. */
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2927 res = CreateDirectoryW(PyUnicode_AS_UNICODE(po), NULL);
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2928 Py_END_ALLOW_THREADS
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2929 if (!res)
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2930 return win32_error_unicode("mkdir", PyUnicode_AS_UNICODE(po));
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2931 Py_INCREF(Py_None);
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2932 return Py_None;
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2933 }
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2934 /* Drop the argument parsing error as narrow strings
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2935 are also valid. */
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2936 PyErr_Clear();
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2937 if (!PyArg_ParseTuple(args, "O&|i:mkdir",
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2938 PyUnicode_FSConverter, &opath, &mode))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2939 return NULL;
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2940 path = PyBytes_AsString(opath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2941 Py_BEGIN_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2942 /* PyUnicode_AS_UNICODE OK without thread lock as
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2943 it is a simple dereference. */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2944 res = CreateDirectoryA(path, NULL);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2945 Py_END_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2946 if (!res) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2947 win32_error("mkdir", path);
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2948 Py_DECREF(opath);
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2949 return NULL;
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2950 }
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2951 Py_DECREF(opath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2952 Py_INCREF(Py_None);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2953 return Py_None;
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
2954 #else
25535
861065256487 Patch 594001: PEP 277 - Unicode file name support for Windows NT.
Mark Hammond <mhammond@skippinet.com.au>
parents: 25327
diff changeset
2955
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2956 if (!PyArg_ParseTuple(args, "O&|i:mkdir",
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2957 PyUnicode_FSConverter, &opath, &mode))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2958 return NULL;
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2959 path = PyBytes_AsString(opath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2960 Py_BEGIN_ALLOW_THREADS
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
2961 #if ( defined(__WATCOMC__) || defined(PYCC_VACPP) ) && !defined(__QNX__)
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2962 res = mkdir(path);
3601
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
2963 #else
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2964 res = mkdir(path, mode);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2965 #endif
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2966 Py_END_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2967 if (res < 0)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2968 return posix_error_with_allocated_filename(opath);
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
2969 Py_DECREF(opath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2970 Py_INCREF(Py_None);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2971 return Py_None;
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
2972 #endif
6
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
2973 }
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
2974
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
2975
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36887
diff changeset
2976 /* sys/resource.h is needed for at least: wait3(), wait4(), broken nice. */
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36887
diff changeset
2977 #if defined(HAVE_SYS_RESOURCE_H)
18486
26fc905ddc12 Re-do the broken-nice() patch to break less platforms. Hopefully none :P
Thomas Wouters <thomas@python.org>
parents: 18476
diff changeset
2978 #include <sys/resource.h>
26fc905ddc12 Re-do the broken-nice() patch to break less platforms. Hopefully none :P
Thomas Wouters <thomas@python.org>
parents: 18476
diff changeset
2979 #endif
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36887
diff changeset
2980
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36887
diff changeset
2981
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36887
diff changeset
2982 #ifdef HAVE_NICE
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
2983 PyDoc_STRVAR(posix_nice__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
2984 "nice(inc) -> new_priority\n\n\
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
2985 Decrease the priority of process by inc and return the new priority.");
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
2986
4672
5b53268f547a Renamed.
Barry Warsaw <barry@python.org>
parents: 4600
diff changeset
2987 static PyObject *
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
2988 posix_nice(PyObject *self, PyObject *args)
1181
950cd37fcddc * Makefile: use cp -r to install the library
Guido van Rossum <guido@python.org>
parents: 1177
diff changeset
2989 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2990 int increment, value;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2991
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2992 if (!PyArg_ParseTuple(args, "i:nice", &increment))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2993 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2994
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2995 /* There are two flavours of 'nice': one that returns the new
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2996 priority (as required by almost all standards out there) and the
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2997 Linux/FreeBSD/BSDI one, which returns '0' on success and advices
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2998 the use of getpriority() to get the new priority.
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
2999
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3000 If we are of the nice family that returns the new priority, we
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3001 need to clear errno before the call, and check if errno is filled
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3002 before calling posix_error() on a returnvalue of -1, because the
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3003 -1 may be the actual new priority! */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3004
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3005 errno = 0;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3006 value = nice(increment);
18486
26fc905ddc12 Re-do the broken-nice() patch to break less platforms. Hopefully none :P
Thomas Wouters <thomas@python.org>
parents: 18476
diff changeset
3007 #if defined(HAVE_BROKEN_NICE) && defined(HAVE_GETPRIORITY)
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3008 if (value == 0)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3009 value = getpriority(PRIO_PROCESS, 0);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3010 #endif
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3011 if (value == -1 && errno != 0)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3012 /* either nice() or getpriority() returned an error */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3013 return posix_error();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3014 return PyLong_FromLong((long) value);
1181
950cd37fcddc * Makefile: use cp -r to install the library
Guido van Rossum <guido@python.org>
parents: 1177
diff changeset
3015 }
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
3016 #endif /* HAVE_NICE */
199
0a3e33cfd4a9 Made utime use much more portable.
Guido van Rossum <guido@python.org>
parents: 145
diff changeset
3017
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
3018 PyDoc_STRVAR(posix_rename__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
3019 "rename(old, new)\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
3020 Rename a file or directory.");
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
3021
4672
5b53268f547a Renamed.
Barry Warsaw <barry@python.org>
parents: 4600
diff changeset
3022 static PyObject *
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
3023 posix_rename(PyObject *self, PyObject *args)
6
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
3024 {
25535
861065256487 Patch 594001: PEP 277 - Unicode file name support for Windows NT.
Mark Hammond <mhammond@skippinet.com.au>
parents: 25327
diff changeset
3025 #ifdef MS_WINDOWS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3026 PyObject *o1, *o2;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3027 char *p1, *p2;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3028 BOOL result;
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
3029 if (!PyArg_ParseTuple(args, "OO:rename", &o1, &o2))
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3030 goto error;
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
3031 if (!convert_to_unicode(&o1))
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3032 goto error;
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
3033 if (!convert_to_unicode(&o2)) {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3034 Py_DECREF(o1);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3035 goto error;
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
3036 }
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
3037 Py_BEGIN_ALLOW_THREADS
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
3038 result = MoveFileW(PyUnicode_AsUnicode(o1),
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
3039 PyUnicode_AsUnicode(o2));
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
3040 Py_END_ALLOW_THREADS
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
3041 Py_DECREF(o1);
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
3042 Py_DECREF(o2);
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
3043 if (!result)
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
3044 return win32_error("rename", NULL);
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
3045 Py_INCREF(Py_None);
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
3046 return Py_None;
48716
612b0c0e5a0f Merged revisions 65745 via svnmerge from
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 48683
diff changeset
3047 error:
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
3048 PyErr_Clear();
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3049 if (!PyArg_ParseTuple(args, "ss:rename", &p1, &p2))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3050 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3051 Py_BEGIN_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3052 result = MoveFileA(p1, p2);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3053 Py_END_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3054 if (!result)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3055 return win32_error("rename", NULL);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3056 Py_INCREF(Py_None);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3057 return Py_None;
25535
861065256487 Patch 594001: PEP 277 - Unicode file name support for Windows NT.
Mark Hammond <mhammond@skippinet.com.au>
parents: 25327
diff changeset
3058 #else
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3059 return posix_2str(args, "O&O&:rename", rename);
25535
861065256487 Patch 594001: PEP 277 - Unicode file name support for Windows NT.
Mark Hammond <mhammond@skippinet.com.au>
parents: 25327
diff changeset
3060 #endif
6
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
3061 }
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
3062
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
3063
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
3064 PyDoc_STRVAR(posix_rmdir__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
3065 "rmdir(path)\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
3066 Remove a directory.");
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
3067
4672
5b53268f547a Renamed.
Barry Warsaw <barry@python.org>
parents: 4600
diff changeset
3068 static PyObject *
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
3069 posix_rmdir(PyObject *self, PyObject *args)
6
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
3070 {
25535
861065256487 Patch 594001: PEP 277 - Unicode file name support for Windows NT.
Mark Hammond <mhammond@skippinet.com.au>
parents: 25327
diff changeset
3071 #ifdef MS_WINDOWS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3072 return win32_1str(args, "rmdir", "y:rmdir", RemoveDirectoryA, "U:rmdir", RemoveDirectoryW);
25535
861065256487 Patch 594001: PEP 277 - Unicode file name support for Windows NT.
Mark Hammond <mhammond@skippinet.com.au>
parents: 25327
diff changeset
3073 #else
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3074 return posix_1str(args, "O&:rmdir", rmdir);
25535
861065256487 Patch 594001: PEP 277 - Unicode file name support for Windows NT.
Mark Hammond <mhammond@skippinet.com.au>
parents: 25327
diff changeset
3075 #endif
6
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
3076 }
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
3077
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
3078
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
3079 PyDoc_STRVAR(posix_stat__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
3080 "stat(path) -> stat result\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
3081 Perform a stat system call on the given path.");
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
3082
4672
5b53268f547a Renamed.
Barry Warsaw <barry@python.org>
parents: 4600
diff changeset
3083 static PyObject *
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
3084 posix_stat(PyObject *self, PyObject *args)
6
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
3085 {
25535
861065256487 Patch 594001: PEP 277 - Unicode file name support for Windows NT.
Mark Hammond <mhammond@skippinet.com.au>
parents: 25327
diff changeset
3086 #ifdef MS_WINDOWS
62874
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
3087 return posix_do_stat(self, args, "O&:stat", STAT, "U:stat", win32_stat_w);
25535
861065256487 Patch 594001: PEP 277 - Unicode file name support for Windows NT.
Mark Hammond <mhammond@skippinet.com.au>
parents: 25327
diff changeset
3088 #else
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3089 return posix_do_stat(self, args, "O&:stat", STAT, NULL, NULL);
25535
861065256487 Patch 594001: PEP 277 - Unicode file name support for Windows NT.
Mark Hammond <mhammond@skippinet.com.au>
parents: 25327
diff changeset
3090 #endif
6
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
3091 }
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
3092
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
3093
3601
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
3094 #ifdef HAVE_SYSTEM
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
3095 PyDoc_STRVAR(posix_system__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
3096 "system(command) -> exit_status\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
3097 Execute the command (a string) in a subshell.");
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
3098
4672
5b53268f547a Renamed.
Barry Warsaw <barry@python.org>
parents: 4600
diff changeset
3099 static PyObject *
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
3100 posix_system(PyObject *self, PyObject *args)
6
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
3101 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3102 long sts;
43921
2a3d73495f18 os.system: on Windows, avoid encoding the command and use the "wide" function: _wsystem
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 43801
diff changeset
3103 #ifdef MS_WINDOWS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3104 wchar_t *command;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3105 if (!PyArg_ParseTuple(args, "u:system", &command))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3106 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3107
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3108 Py_BEGIN_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3109 sts = _wsystem(command);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3110 Py_END_ALLOW_THREADS
43921
2a3d73495f18 os.system: on Windows, avoid encoding the command and use the "wide" function: _wsystem
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 43801
diff changeset
3111 #else
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3112 PyObject *command_obj;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3113 char *command;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3114 if (!PyArg_ParseTuple(args, "O&:system",
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3115 PyUnicode_FSConverter, &command_obj))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3116 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3117
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
3118 command = PyBytes_AsString(command_obj);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3119 Py_BEGIN_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3120 sts = system(command);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3121 Py_END_ALLOW_THREADS
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
3122 Py_DECREF(command_obj);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3123 #endif
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3124 return PyLong_FromLong(sts);
6
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
3125 }
3601
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
3126 #endif
6
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
3127
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
3128
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
3129 PyDoc_STRVAR(posix_umask__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
3130 "umask(new_mask) -> old_mask\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
3131 Set the current numeric umask and return the previous umask.");
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
3132
4672
5b53268f547a Renamed.
Barry Warsaw <barry@python.org>
parents: 4600
diff changeset
3133 static PyObject *
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
3134 posix_umask(PyObject *self, PyObject *args)
6
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
3135 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3136 int i;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3137 if (!PyArg_ParseTuple(args, "i:umask", &i))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3138 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3139 i = (int)umask(i);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3140 if (i < 0)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3141 return posix_error();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3142 return PyLong_FromLong((long)i);
6
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
3143 }
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
3144
62874
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
3145 #ifdef MS_WINDOWS
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
3146
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
3147 /* override the default DeleteFileW behavior so that directory
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
3148 symlinks can be removed with this function, the same as with
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
3149 Unix symlinks */
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
3150 BOOL WINAPI Py_DeleteFileW(LPCWSTR lpFileName)
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
3151 {
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
3152 WIN32_FILE_ATTRIBUTE_DATA info;
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
3153 WIN32_FIND_DATAW find_data;
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
3154 HANDLE find_data_handle;
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
3155 int is_directory = 0;
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
3156 int is_link = 0;
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
3157
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
3158 if (GetFileAttributesExW(lpFileName, GetFileExInfoStandard, &info)) {
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
3159 is_directory = info.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY;
70840
f6d6afe53385 posixmodule.c: fix function name in argument parsing
Victor Stinner <victor.stinner@haypocalc.com>
parents: 70815
diff changeset
3160
62874
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
3161 /* Get WIN32_FIND_DATA structure for the path to determine if
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
3162 it is a symlink */
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
3163 if(is_directory &&
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
3164 info.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT) {
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
3165 find_data_handle = FindFirstFileW(lpFileName, &find_data);
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
3166
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
3167 if(find_data_handle != INVALID_HANDLE_VALUE) {
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
3168 is_link = find_data.dwReserved0 == IO_REPARSE_TAG_SYMLINK;
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
3169 FindClose(find_data_handle);
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
3170 }
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
3171 }
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
3172 }
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
3173
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
3174 if (is_directory && is_link)
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
3175 return RemoveDirectoryW(lpFileName);
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
3176
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
3177 return DeleteFileW(lpFileName);
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
3178 }
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
3179 #endif /* MS_WINDOWS */
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
3180
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
3181 PyDoc_STRVAR(posix_unlink__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
3182 "unlink(path)\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
3183 Remove a file (same as remove(path)).");
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
3184
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
3185 PyDoc_STRVAR(posix_remove__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
3186 "remove(path)\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
3187 Remove a file (same as unlink(path)).");
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
3188
4672
5b53268f547a Renamed.
Barry Warsaw <barry@python.org>
parents: 4600
diff changeset
3189 static PyObject *
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
3190 posix_unlink(PyObject *self, PyObject *args)
6
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
3191 {
25535
861065256487 Patch 594001: PEP 277 - Unicode file name support for Windows NT.
Mark Hammond <mhammond@skippinet.com.au>
parents: 25327
diff changeset
3192 #ifdef MS_WINDOWS
62900
e97cdd5c5e4f Re-flow several long lines from #1578269.
Brian Curtin <brian.curtin@gmail.com>
parents: 62874
diff changeset
3193 return win32_1str(args, "remove", "y:remove", DeleteFileA,
e97cdd5c5e4f Re-flow several long lines from #1578269.
Brian Curtin <brian.curtin@gmail.com>
parents: 62874
diff changeset
3194 "U:remove", Py_DeleteFileW);
25535
861065256487 Patch 594001: PEP 277 - Unicode file name support for Windows NT.
Mark Hammond <mhammond@skippinet.com.au>
parents: 25327
diff changeset
3195 #else
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3196 return posix_1str(args, "O&:remove", unlink);
25535
861065256487 Patch 594001: PEP 277 - Unicode file name support for Windows NT.
Mark Hammond <mhammond@skippinet.com.au>
parents: 25327
diff changeset
3197 #endif
6
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
3198 }
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
3199
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
3200
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
3201 #ifdef HAVE_UNAME
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
3202 PyDoc_STRVAR(posix_uname__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
3203 "uname() -> (sysname, nodename, release, version, machine)\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
3204 Return a tuple identifying the current operating system.");
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
3205
4672
5b53268f547a Renamed.
Barry Warsaw <barry@python.org>
parents: 4600
diff changeset
3206 static PyObject *
27916
93d44870e8b5 Added test_posix (hopefully it works on Windows).
Neal Norwitz <nnorwitz@gmail.com>
parents: 27826
diff changeset
3207 posix_uname(PyObject *self, PyObject *noargs)
658
5b521fe4d1f6 Added uname. Made lstat/readlink/symlink unconditional (the latter
Guido van Rossum <guido@python.org>
parents: 643
diff changeset
3208 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3209 struct utsname u;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3210 int res;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3211
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3212 Py_BEGIN_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3213 res = uname(&u);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3214 Py_END_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3215 if (res < 0)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3216 return posix_error();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3217 return Py_BuildValue("(sssss)",
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3218 u.sysname,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3219 u.nodename,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3220 u.release,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3221 u.version,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3222 u.machine);
658
5b521fe4d1f6 Added uname. Made lstat/readlink/symlink unconditional (the latter
Guido van Rossum <guido@python.org>
parents: 643
diff changeset
3223 }
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
3224 #endif /* HAVE_UNAME */
199
0a3e33cfd4a9 Made utime use much more portable.
Guido van Rossum <guido@python.org>
parents: 145
diff changeset
3225
25178
3efbd1943b8c Use utimes(2) where available to support microsecond timestamps.
Martin v. Löwis <martin@v.loewis.de>
parents: 25177
diff changeset
3226 static int
67285
d8ed0cc9e338 Merged revisions 87666 via svnmerge from
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 66495
diff changeset
3227 extract_time(PyObject *t, time_t* sec, long* usec)
d8ed0cc9e338 Merged revisions 87666 via svnmerge from
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 66495
diff changeset
3228 {
d8ed0cc9e338 Merged revisions 87666 via svnmerge from
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 66495
diff changeset
3229 time_t intval;
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3230 if (PyFloat_Check(t)) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3231 double tval = PyFloat_AsDouble(t);
67285
d8ed0cc9e338 Merged revisions 87666 via svnmerge from
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 66495
diff changeset
3232 PyObject *intobj = PyNumber_Long(t);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3233 if (!intobj)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3234 return -1;
67285
d8ed0cc9e338 Merged revisions 87666 via svnmerge from
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 66495
diff changeset
3235 #if SIZEOF_TIME_T > SIZEOF_LONG
d8ed0cc9e338 Merged revisions 87666 via svnmerge from
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 66495
diff changeset
3236 intval = PyLong_AsUnsignedLongLongMask(intobj);
d8ed0cc9e338 Merged revisions 87666 via svnmerge from
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 66495
diff changeset
3237 #else
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3238 intval = PyLong_AsLong(intobj);
67285
d8ed0cc9e338 Merged revisions 87666 via svnmerge from
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 66495
diff changeset
3239 #endif
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3240 Py_DECREF(intobj);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3241 if (intval == -1 && PyErr_Occurred())
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3242 return -1;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3243 *sec = intval;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3244 *usec = (long)((tval - intval) * 1e6); /* can't exceed 1000000 */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3245 if (*usec < 0)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3246 /* If rounding gave us a negative number,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3247 truncate. */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3248 *usec = 0;
25183
18160cb63650 Add missing return statement.
Martin v. Löwis <martin@v.loewis.de>
parents: 25178
diff changeset
3249 return 0;
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3250 }
67285
d8ed0cc9e338 Merged revisions 87666 via svnmerge from
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 66495
diff changeset
3251 #if SIZEOF_TIME_T > SIZEOF_LONG
d8ed0cc9e338 Merged revisions 87666 via svnmerge from
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 66495
diff changeset
3252 intval = PyLong_AsUnsignedLongLongMask(t);
d8ed0cc9e338 Merged revisions 87666 via svnmerge from
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 66495
diff changeset
3253 #else
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3254 intval = PyLong_AsLong(t);
67285
d8ed0cc9e338 Merged revisions 87666 via svnmerge from
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 66495
diff changeset
3255 #endif
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3256 if (intval == -1 && PyErr_Occurred())
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3257 return -1;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3258 *sec = intval;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3259 *usec = 0;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3260 return 0;
25178
3efbd1943b8c Use utimes(2) where available to support microsecond timestamps.
Martin v. Löwis <martin@v.loewis.de>
parents: 25177
diff changeset
3261 }
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
3262
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
3263 PyDoc_STRVAR(posix_utime__doc__,
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
3264 "utime(path, (atime, mtime))\n\
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
3265 utime(path, None)\n\n\
12533
5235656f9d0f posix_utime(): Allow the second argument to be None, which invokes the
Barry Warsaw <barry@python.org>
parents: 12503
diff changeset
3266 Set the access and modified time of the file to the given values. If the\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
3267 second form is used, set the access and modified times to the current time.");
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
3268
4672
5b53268f547a Renamed.
Barry Warsaw <barry@python.org>
parents: 4600
diff changeset
3269 static PyObject *
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
3270 posix_utime(PyObject *self, PyObject *args)
6
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
3271 {
54129
77cfef596d33 Merged revisions 72698-72699 via svnmerge from
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 53993
diff changeset
3272 #ifdef MS_WINDOWS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3273 PyObject *arg;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3274 PyUnicodeObject *obwpath;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3275 wchar_t *wpath = NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3276 PyObject *oapath;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3277 char *apath;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3278 HANDLE hFile;
67285
d8ed0cc9e338 Merged revisions 87666 via svnmerge from
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 66495
diff changeset
3279 time_t atimesec, mtimesec;
d8ed0cc9e338 Merged revisions 87666 via svnmerge from
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 66495
diff changeset
3280 long ausec, musec;
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3281 FILETIME atime, mtime;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3282 PyObject *result = NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3283
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
3284 if (PyArg_ParseTuple(args, "UO|:utime", &obwpath, &arg)) {
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
3285 wpath = PyUnicode_AS_UNICODE(obwpath);
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
3286 Py_BEGIN_ALLOW_THREADS
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
3287 hFile = CreateFileW(wpath, FILE_WRITE_ATTRIBUTES, 0,
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
3288 NULL, OPEN_EXISTING,
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
3289 FILE_FLAG_BACKUP_SEMANTICS, NULL);
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
3290 Py_END_ALLOW_THREADS
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
3291 if (hFile == INVALID_HANDLE_VALUE)
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
3292 return win32_error_unicode("utime", wpath);
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
3293 } else
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
3294 /* Drop the argument parsing error as narrow strings
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
3295 are also valid. */
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
3296 PyErr_Clear();
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
3297
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3298 if (!wpath) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3299 if (!PyArg_ParseTuple(args, "O&O:utime",
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3300 PyUnicode_FSConverter, &oapath, &arg))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3301 return NULL;
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
3302 apath = PyBytes_AsString(oapath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3303 Py_BEGIN_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3304 hFile = CreateFileA(apath, FILE_WRITE_ATTRIBUTES, 0,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3305 NULL, OPEN_EXISTING,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3306 FILE_FLAG_BACKUP_SEMANTICS, NULL);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3307 Py_END_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3308 if (hFile == INVALID_HANDLE_VALUE) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3309 win32_error("utime", apath);
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
3310 Py_DECREF(oapath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3311 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3312 }
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
3313 Py_DECREF(oapath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3314 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3315
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3316 if (arg == Py_None) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3317 SYSTEMTIME now;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3318 GetSystemTime(&now);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3319 if (!SystemTimeToFileTime(&now, &mtime) ||
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3320 !SystemTimeToFileTime(&now, &atime)) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3321 win32_error("utime", NULL);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3322 goto done;
66495
c7a342a798e7 Merged revisions 86808 via svnmerge from
Stefan Krah <stefan@bytereef.org>
parents: 66493
diff changeset
3323 }
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3324 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3325 else if (!PyTuple_Check(arg) || PyTuple_Size(arg) != 2) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3326 PyErr_SetString(PyExc_TypeError,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3327 "utime() arg 2 must be a tuple (atime, mtime)");
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3328 goto done;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3329 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3330 else {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3331 if (extract_time(PyTuple_GET_ITEM(arg, 0),
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3332 &atimesec, &ausec) == -1)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3333 goto done;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3334 time_t_to_FILE_TIME(atimesec, 1000*ausec, &atime);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3335 if (extract_time(PyTuple_GET_ITEM(arg, 1),
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3336 &mtimesec, &musec) == -1)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3337 goto done;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3338 time_t_to_FILE_TIME(mtimesec, 1000*musec, &mtime);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3339 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3340 if (!SetFileTime(hFile, NULL, &atime, &mtime)) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3341 /* Avoid putting the file name into the error here,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3342 as that may confuse the user into believing that
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3343 something is wrong with the file, when it also
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3344 could be the time stamp that gives a problem. */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3345 win32_error("utime", NULL);
67417
7222697964fc Merged revisions 87802 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 67285
diff changeset
3346 goto done;
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3347 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3348 Py_INCREF(Py_None);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3349 result = Py_None;
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
3350 done:
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3351 CloseHandle(hFile);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3352 return result;
54129
77cfef596d33 Merged revisions 72698-72699 via svnmerge from
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 53993
diff changeset
3353 #else /* MS_WINDOWS */
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
3354
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3355 PyObject *opath;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3356 char *path;
67285
d8ed0cc9e338 Merged revisions 87666 via svnmerge from
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 66495
diff changeset
3357 time_t atime, mtime;
d8ed0cc9e338 Merged revisions 87666 via svnmerge from
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 66495
diff changeset
3358 long ausec, musec;
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3359 int res;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3360 PyObject* arg;
199
0a3e33cfd4a9 Made utime use much more portable.
Guido van Rossum <guido@python.org>
parents: 145
diff changeset
3361
25178
3efbd1943b8c Use utimes(2) where available to support microsecond timestamps.
Martin v. Löwis <martin@v.loewis.de>
parents: 25177
diff changeset
3362 #if defined(HAVE_UTIMES)
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3363 struct timeval buf[2];
25178
3efbd1943b8c Use utimes(2) where available to support microsecond timestamps.
Martin v. Löwis <martin@v.loewis.de>
parents: 25177
diff changeset
3364 #define ATIME buf[0].tv_sec
3efbd1943b8c Use utimes(2) where available to support microsecond timestamps.
Martin v. Löwis <martin@v.loewis.de>
parents: 25177
diff changeset
3365 #define MTIME buf[1].tv_sec
3efbd1943b8c Use utimes(2) where available to support microsecond timestamps.
Martin v. Löwis <martin@v.loewis.de>
parents: 25177
diff changeset
3366 #elif defined(HAVE_UTIME_H)
6027
494e550cb18d Added a bunch of XXX comments about things I'd like to see changed...
Guido van Rossum <guido@python.org>
parents: 5967
diff changeset
3367 /* XXX should define struct utimbuf instead, above */
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3368 struct utimbuf buf;
199
0a3e33cfd4a9 Made utime use much more portable.
Guido van Rossum <guido@python.org>
parents: 145
diff changeset
3369 #define ATIME buf.actime
0a3e33cfd4a9 Made utime use much more portable.
Guido van Rossum <guido@python.org>
parents: 145
diff changeset
3370 #define MTIME buf.modtime
0a3e33cfd4a9 Made utime use much more portable.
Guido van Rossum <guido@python.org>
parents: 145
diff changeset
3371 #define UTIME_ARG &buf
25178
3efbd1943b8c Use utimes(2) where available to support microsecond timestamps.
Martin v. Löwis <martin@v.loewis.de>
parents: 25177
diff changeset
3372 #else /* HAVE_UTIMES */
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3373 time_t buf[2];
199
0a3e33cfd4a9 Made utime use much more portable.
Guido van Rossum <guido@python.org>
parents: 145
diff changeset
3374 #define ATIME buf[0]
0a3e33cfd4a9 Made utime use much more portable.
Guido van Rossum <guido@python.org>
parents: 145
diff changeset
3375 #define MTIME buf[1]
0a3e33cfd4a9 Made utime use much more portable.
Guido van Rossum <guido@python.org>
parents: 145
diff changeset
3376 #define UTIME_ARG buf
25178
3efbd1943b8c Use utimes(2) where available to support microsecond timestamps.
Martin v. Löwis <martin@v.loewis.de>
parents: 25177
diff changeset
3377 #endif /* HAVE_UTIMES */
199
0a3e33cfd4a9 Made utime use much more portable.
Guido van Rossum <guido@python.org>
parents: 145
diff changeset
3378
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
3379
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3380 if (!PyArg_ParseTuple(args, "O&O:utime",
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3381 PyUnicode_FSConverter, &opath, &arg))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3382 return NULL;
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
3383 path = PyBytes_AsString(opath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3384 if (arg == Py_None) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3385 /* optional time values not given */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3386 Py_BEGIN_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3387 res = utime(path, NULL);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3388 Py_END_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3389 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3390 else if (!PyTuple_Check(arg) || PyTuple_Size(arg) != 2) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3391 PyErr_SetString(PyExc_TypeError,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3392 "utime() arg 2 must be a tuple (atime, mtime)");
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
3393 Py_DECREF(opath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3394 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3395 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3396 else {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3397 if (extract_time(PyTuple_GET_ITEM(arg, 0),
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3398 &atime, &ausec) == -1) {
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
3399 Py_DECREF(opath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3400 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3401 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3402 if (extract_time(PyTuple_GET_ITEM(arg, 1),
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3403 &mtime, &musec) == -1) {
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
3404 Py_DECREF(opath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3405 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3406 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3407 ATIME = atime;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3408 MTIME = mtime;
25178
3efbd1943b8c Use utimes(2) where available to support microsecond timestamps.
Martin v. Löwis <martin@v.loewis.de>
parents: 25177
diff changeset
3409 #ifdef HAVE_UTIMES
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3410 buf[0].tv_usec = ausec;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3411 buf[1].tv_usec = musec;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3412 Py_BEGIN_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3413 res = utimes(path, buf);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3414 Py_END_ALLOW_THREADS
25178
3efbd1943b8c Use utimes(2) where available to support microsecond timestamps.
Martin v. Löwis <martin@v.loewis.de>
parents: 25177
diff changeset
3415 #else
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3416 Py_BEGIN_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3417 res = utime(path, UTIME_ARG);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3418 Py_END_ALLOW_THREADS
31077
2a6fc4d261f8 Fix [ 846133 ] os.chmod/os.utime/shutil do not work with unicode filenames
Mark Hammond <mhammond@skippinet.com.au>
parents: 30892
diff changeset
3419 #endif /* HAVE_UTIMES */
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3420 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3421 if (res < 0) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3422 return posix_error_with_allocated_filename(opath);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3423 }
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
3424 Py_DECREF(opath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3425 Py_INCREF(Py_None);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3426 return Py_None;
199
0a3e33cfd4a9 Made utime use much more portable.
Guido van Rossum <guido@python.org>
parents: 145
diff changeset
3427 #undef UTIME_ARG
0a3e33cfd4a9 Made utime use much more portable.
Guido van Rossum <guido@python.org>
parents: 145
diff changeset
3428 #undef ATIME
0a3e33cfd4a9 Made utime use much more portable.
Guido van Rossum <guido@python.org>
parents: 145
diff changeset
3429 #undef MTIME
54129
77cfef596d33 Merged revisions 72698-72699 via svnmerge from
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 53993
diff changeset
3430 #endif /* MS_WINDOWS */
6
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
3431 }
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
3432
257
a46558ad0bed Removed utimes() compatibility hack.
Guido van Rossum <guido@python.org>
parents: 200
diff changeset
3433
264
72d1b89be35a Added popen().
Guido van Rossum <guido@python.org>
parents: 257
diff changeset
3434 /* Process operations */
257
a46558ad0bed Removed utimes() compatibility hack.
Guido van Rossum <guido@python.org>
parents: 200
diff changeset
3435
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
3436 PyDoc_STRVAR(posix__exit__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
3437 "_exit(status)\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
3438 Exit to the system with specified status, without normal exit processing.");
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
3439
4672
5b53268f547a Renamed.
Barry Warsaw <barry@python.org>
parents: 4600
diff changeset
3440 static PyObject *
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
3441 posix__exit(PyObject *self, PyObject *args)
257
a46558ad0bed Removed utimes() compatibility hack.
Guido van Rossum <guido@python.org>
parents: 200
diff changeset
3442 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3443 int sts;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3444 if (!PyArg_ParseTuple(args, "i:_exit", &sts))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3445 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3446 _exit(sts);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3447 return NULL; /* Make gcc -Wall happy */
257
a46558ad0bed Removed utimes() compatibility hack.
Guido van Rossum <guido@python.org>
parents: 200
diff changeset
3448 }
a46558ad0bed Removed utimes() compatibility hack.
Guido van Rossum <guido@python.org>
parents: 200
diff changeset
3449
25630
25d1f4f91487 Apply file system default encoding to exec and spawn path and arguments.
Martin v. Löwis <martin@v.loewis.de>
parents: 25573
diff changeset
3450 #if defined(HAVE_EXECV) || defined(HAVE_SPAWNV)
25d1f4f91487 Apply file system default encoding to exec and spawn path and arguments.
Martin v. Löwis <martin@v.loewis.de>
parents: 25573
diff changeset
3451 static void
36866
9eb24f92a784 Change int to Py_ssize_t in several places.
Martin v. Löwis <martin@v.loewis.de>
parents: 36753
diff changeset
3452 free_string_array(char **array, Py_ssize_t count)
9eb24f92a784 Change int to Py_ssize_t in several places.
Martin v. Löwis <martin@v.loewis.de>
parents: 36753
diff changeset
3453 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3454 Py_ssize_t i;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3455 for (i = 0; i < count; i++)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3456 PyMem_Free(array[i]);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3457 PyMem_DEL(array);
25630
25d1f4f91487 Apply file system default encoding to exec and spawn path and arguments.
Martin v. Löwis <martin@v.loewis.de>
parents: 25573
diff changeset
3458 }
53767
ac209f132b17 Issue #5915: Implement PEP 383, Non-decodable Bytes in
Martin v. Löwis <martin@v.loewis.de>
parents: 53731
diff changeset
3459
54320
565413ee9c1b Make some private functions static (thanks `make smelly`)
Antoine Pitrou <solipsis@pitrou.net>
parents: 54299
diff changeset
3460 static
53767
ac209f132b17 Issue #5915: Implement PEP 383, Non-decodable Bytes in
Martin v. Löwis <martin@v.loewis.de>
parents: 53731
diff changeset
3461 int fsconvert_strdup(PyObject *o, char**out)
ac209f132b17 Issue #5915: Implement PEP 383, Non-decodable Bytes in
Martin v. Löwis <martin@v.loewis.de>
parents: 53731
diff changeset
3462 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3463 PyObject *bytes;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3464 Py_ssize_t size;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3465 if (!PyUnicode_FSConverter(o, &bytes))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3466 return 0;
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
3467 size = PyBytes_GET_SIZE(bytes);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3468 *out = PyMem_Malloc(size+1);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3469 if (!*out)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3470 return 0;
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
3471 memcpy(*out, PyBytes_AsString(bytes), size+1);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3472 Py_DECREF(bytes);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3473 return 1;
53767
ac209f132b17 Issue #5915: Implement PEP 383, Non-decodable Bytes in
Martin v. Löwis <martin@v.loewis.de>
parents: 53731
diff changeset
3474 }
25630
25d1f4f91487 Apply file system default encoding to exec and spawn path and arguments.
Martin v. Löwis <martin@v.loewis.de>
parents: 25573
diff changeset
3475 #endif
25d1f4f91487 Apply file system default encoding to exec and spawn path and arguments.
Martin v. Löwis <martin@v.loewis.de>
parents: 25573
diff changeset
3476
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
3477
3601
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
3478 #ifdef HAVE_EXECV
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
3479 PyDoc_STRVAR(posix_execv__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
3480 "execv(path, args)\n\n\
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
3481 Execute an executable path with arguments, replacing current process.\n\
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
3482 \n\
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3483 path: path of executable file\n\
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3484 args: tuple or list of strings");
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
3485
4672
5b53268f547a Renamed.
Barry Warsaw <barry@python.org>
parents: 4600
diff changeset
3486 static PyObject *
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
3487 posix_execv(PyObject *self, PyObject *args)
257
a46558ad0bed Removed utimes() compatibility hack.
Guido van Rossum <guido@python.org>
parents: 200
diff changeset
3488 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3489 PyObject *opath;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3490 char *path;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3491 PyObject *argv;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3492 char **argvlist;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3493 Py_ssize_t i, argc;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3494 PyObject *(*getitem)(PyObject *, Py_ssize_t);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3495
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3496 /* execv has two arguments: (path, argv), where
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3497 argv is a list or tuple of strings. */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3498
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3499 if (!PyArg_ParseTuple(args, "O&O:execv",
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3500 PyUnicode_FSConverter,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3501 &opath, &argv))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3502 return NULL;
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
3503 path = PyBytes_AsString(opath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3504 if (PyList_Check(argv)) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3505 argc = PyList_Size(argv);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3506 getitem = PyList_GetItem;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3507 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3508 else if (PyTuple_Check(argv)) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3509 argc = PyTuple_Size(argv);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3510 getitem = PyTuple_GetItem;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3511 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3512 else {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3513 PyErr_SetString(PyExc_TypeError, "execv() arg 2 must be a tuple or list");
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
3514 Py_DECREF(opath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3515 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3516 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3517 if (argc < 1) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3518 PyErr_SetString(PyExc_ValueError, "execv() arg 2 must not be empty");
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
3519 Py_DECREF(opath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3520 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3521 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3522
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3523 argvlist = PyMem_NEW(char *, argc+1);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3524 if (argvlist == NULL) {
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
3525 Py_DECREF(opath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3526 return PyErr_NoMemory();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3527 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3528 for (i = 0; i < argc; i++) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3529 if (!fsconvert_strdup((*getitem)(argv, i),
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3530 &argvlist[i])) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3531 free_string_array(argvlist, i);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3532 PyErr_SetString(PyExc_TypeError,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3533 "execv() arg 2 must contain only strings");
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
3534 Py_DECREF(opath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3535 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3536
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3537 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3538 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3539 argvlist[argc] = NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3540
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3541 execv(path, argvlist);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3542
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3543 /* If we get here it's definitely an error */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3544
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3545 free_string_array(argvlist, argc);
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
3546 Py_DECREF(opath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3547 return posix_error();
257
a46558ad0bed Removed utimes() compatibility hack.
Guido van Rossum <guido@python.org>
parents: 200
diff changeset
3548 }
a46558ad0bed Removed utimes() compatibility hack.
Guido van Rossum <guido@python.org>
parents: 200
diff changeset
3549
60975
b71826249fbe Merged revisions 80421,80424 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60631
diff changeset
3550 static char**
b71826249fbe Merged revisions 80421,80424 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60631
diff changeset
3551 parse_envlist(PyObject* env, Py_ssize_t *envc_ptr)
b71826249fbe Merged revisions 80421,80424 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60631
diff changeset
3552 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3553 char **envlist;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3554 Py_ssize_t i, pos, envc;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3555 PyObject *keys=NULL, *vals=NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3556 PyObject *key, *val, *key2, *val2;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3557 char *p, *k, *v;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3558 size_t len;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3559
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3560 i = PyMapping_Size(env);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3561 if (i < 0)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3562 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3563 envlist = PyMem_NEW(char *, i + 1);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3564 if (envlist == NULL) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3565 PyErr_NoMemory();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3566 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3567 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3568 envc = 0;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3569 keys = PyMapping_Keys(env);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3570 vals = PyMapping_Values(env);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3571 if (!keys || !vals)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3572 goto error;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3573 if (!PyList_Check(keys) || !PyList_Check(vals)) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3574 PyErr_Format(PyExc_TypeError,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3575 "env.keys() or env.values() is not a list");
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3576 goto error;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3577 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3578
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3579 for (pos = 0; pos < i; pos++) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3580 key = PyList_GetItem(keys, pos);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3581 val = PyList_GetItem(vals, pos);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3582 if (!key || !val)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3583 goto error;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3584
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3585 if (PyUnicode_FSConverter(key, &key2) == 0)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3586 goto error;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3587 if (PyUnicode_FSConverter(val, &val2) == 0) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3588 Py_DECREF(key2);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3589 goto error;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3590 }
60975
b71826249fbe Merged revisions 80421,80424 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60631
diff changeset
3591
b71826249fbe Merged revisions 80421,80424 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60631
diff changeset
3592 #if defined(PYOS_OS2)
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3593 /* Omit Pseudo-Env Vars that Would Confuse Programs if Passed On */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3594 if (stricmp(k, "BEGINLIBPATH") != 0 && stricmp(k, "ENDLIBPATH") != 0) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3595 #endif
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3596 k = PyBytes_AsString(key2);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3597 v = PyBytes_AsString(val2);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3598 len = PyBytes_GET_SIZE(key2) + PyBytes_GET_SIZE(val2) + 2;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3599
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3600 p = PyMem_NEW(char, len);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3601 if (p == NULL) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3602 PyErr_NoMemory();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3603 Py_DECREF(key2);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3604 Py_DECREF(val2);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3605 goto error;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3606 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3607 PyOS_snprintf(p, len, "%s=%s", k, v);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3608 envlist[envc++] = p;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3609 Py_DECREF(key2);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3610 Py_DECREF(val2);
60975
b71826249fbe Merged revisions 80421,80424 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60631
diff changeset
3611 #if defined(PYOS_OS2)
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3612 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3613 #endif
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3614 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3615 Py_DECREF(vals);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3616 Py_DECREF(keys);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3617
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3618 envlist[envc] = 0;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3619 *envc_ptr = envc;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3620 return envlist;
60975
b71826249fbe Merged revisions 80421,80424 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60631
diff changeset
3621
b71826249fbe Merged revisions 80421,80424 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60631
diff changeset
3622 error:
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3623 Py_XDECREF(keys);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3624 Py_XDECREF(vals);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3625 while (--envc >= 0)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3626 PyMem_DEL(envlist[envc]);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3627 PyMem_DEL(envlist);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3628 return NULL;
60975
b71826249fbe Merged revisions 80421,80424 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60631
diff changeset
3629 }
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
3630
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
3631 PyDoc_STRVAR(posix_execve__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
3632 "execve(path, args, env)\n\n\
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
3633 Execute a path with arguments and environment, replacing current process.\n\
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
3634 \n\
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3635 path: path of executable file\n\
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3636 args: tuple or list of arguments\n\
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3637 env: dictionary of strings mapping to strings");
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
3638
4672
5b53268f547a Renamed.
Barry Warsaw <barry@python.org>
parents: 4600
diff changeset
3639 static PyObject *
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
3640 posix_execve(PyObject *self, PyObject *args)
1395
be61e072a505 Added execve; change getstrarg into getargs with "s" format
Guido van Rossum <guido@python.org>
parents: 1388
diff changeset
3641 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3642 PyObject *opath;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3643 char *path;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3644 PyObject *argv, *env;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3645 char **argvlist;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3646 char **envlist;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3647 Py_ssize_t i, argc, envc;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3648 PyObject *(*getitem)(PyObject *, Py_ssize_t);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3649 Py_ssize_t lastarg = 0;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3650
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3651 /* execve has three arguments: (path, argv, env), where
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3652 argv is a list or tuple of strings and env is a dictionary
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3653 like posix.environ. */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3654
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3655 if (!PyArg_ParseTuple(args, "O&OO:execve",
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3656 PyUnicode_FSConverter,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3657 &opath, &argv, &env))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3658 return NULL;
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
3659 path = PyBytes_AsString(opath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3660 if (PyList_Check(argv)) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3661 argc = PyList_Size(argv);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3662 getitem = PyList_GetItem;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3663 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3664 else if (PyTuple_Check(argv)) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3665 argc = PyTuple_Size(argv);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3666 getitem = PyTuple_GetItem;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3667 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3668 else {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3669 PyErr_SetString(PyExc_TypeError,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3670 "execve() arg 2 must be a tuple or list");
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3671 goto fail_0;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3672 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3673 if (!PyMapping_Check(env)) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3674 PyErr_SetString(PyExc_TypeError,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3675 "execve() arg 3 must be a mapping object");
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3676 goto fail_0;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3677 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3678
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3679 argvlist = PyMem_NEW(char *, argc+1);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3680 if (argvlist == NULL) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3681 PyErr_NoMemory();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3682 goto fail_0;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3683 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3684 for (i = 0; i < argc; i++) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3685 if (!fsconvert_strdup((*getitem)(argv, i),
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3686 &argvlist[i]))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3687 {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3688 lastarg = i;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3689 goto fail_1;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3690 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3691 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3692 lastarg = argc;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3693 argvlist[argc] = NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3694
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3695 envlist = parse_envlist(env, &envc);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3696 if (envlist == NULL)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3697 goto fail_1;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3698
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3699 execve(path, argvlist, envlist);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3700
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3701 /* If we get here it's definitely an error */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3702
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3703 (void) posix_error();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3704
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3705 while (--envc >= 0)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3706 PyMem_DEL(envlist[envc]);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3707 PyMem_DEL(envlist);
26646
9267dffff32d execve(), spawnve(): add some extra sanity checking to env;
Guido van Rossum <guido@python.org>
parents: 26550
diff changeset
3708 fail_1:
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3709 free_string_array(argvlist, lastarg);
26646
9267dffff32d execve(), spawnve(): add some extra sanity checking to env;
Guido van Rossum <guido@python.org>
parents: 26550
diff changeset
3710 fail_0:
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
3711 Py_DECREF(opath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3712 return NULL;
1395
be61e072a505 Added execve; change getstrarg into getargs with "s" format
Guido van Rossum <guido@python.org>
parents: 1388
diff changeset
3713 }
3601
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
3714 #endif /* HAVE_EXECV */
1395
be61e072a505 Added execve; change getstrarg into getargs with "s" format
Guido van Rossum <guido@python.org>
parents: 1388
diff changeset
3715
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
3716
9954
c404a6b0cdb1 Add spawnv and spawnve functions for Win32 platforms.
Guido van Rossum <guido@python.org>
parents: 9939
diff changeset
3717 #ifdef HAVE_SPAWNV
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
3718 PyDoc_STRVAR(posix_spawnv__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
3719 "spawnv(mode, path, args)\n\n\
21295
59894496b5c7 SF patch #489173: Make os.spawnv not block the interpreter, from
Tim Peters <tim.peters@gmail.com>
parents: 21172
diff changeset
3720 Execute the program 'path' in a new process.\n\
9954
c404a6b0cdb1 Add spawnv and spawnve functions for Win32 platforms.
Guido van Rossum <guido@python.org>
parents: 9939
diff changeset
3721 \n\
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3722 mode: mode of process creation\n\
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3723 path: path of executable file\n\
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3724 args: tuple or list of strings");
9954
c404a6b0cdb1 Add spawnv and spawnve functions for Win32 platforms.
Guido van Rossum <guido@python.org>
parents: 9939
diff changeset
3725
c404a6b0cdb1 Add spawnv and spawnve functions for Win32 platforms.
Guido van Rossum <guido@python.org>
parents: 9939
diff changeset
3726 static PyObject *
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
3727 posix_spawnv(PyObject *self, PyObject *args)
9954
c404a6b0cdb1 Add spawnv and spawnve functions for Win32 platforms.
Guido van Rossum <guido@python.org>
parents: 9939
diff changeset
3728 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3729 PyObject *opath;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3730 char *path;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3731 PyObject *argv;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3732 char **argvlist;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3733 int mode, i;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3734 Py_ssize_t argc;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3735 Py_intptr_t spawnval;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3736 PyObject *(*getitem)(PyObject *, Py_ssize_t);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3737
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3738 /* spawnv has three arguments: (mode, path, argv), where
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3739 argv is a list or tuple of strings. */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3740
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3741 if (!PyArg_ParseTuple(args, "iO&O:spawnv", &mode,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3742 PyUnicode_FSConverter,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3743 &opath, &argv))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3744 return NULL;
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
3745 path = PyBytes_AsString(opath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3746 if (PyList_Check(argv)) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3747 argc = PyList_Size(argv);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3748 getitem = PyList_GetItem;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3749 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3750 else if (PyTuple_Check(argv)) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3751 argc = PyTuple_Size(argv);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3752 getitem = PyTuple_GetItem;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3753 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3754 else {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3755 PyErr_SetString(PyExc_TypeError,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3756 "spawnv() arg 2 must be a tuple or list");
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
3757 Py_DECREF(opath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3758 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3759 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3760
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3761 argvlist = PyMem_NEW(char *, argc+1);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3762 if (argvlist == NULL) {
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
3763 Py_DECREF(opath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3764 return PyErr_NoMemory();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3765 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3766 for (i = 0; i < argc; i++) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3767 if (!fsconvert_strdup((*getitem)(argv, i),
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3768 &argvlist[i])) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3769 free_string_array(argvlist, i);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3770 PyErr_SetString(
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3771 PyExc_TypeError,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3772 "spawnv() arg 2 must contain only strings");
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
3773 Py_DECREF(opath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3774 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3775 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3776 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3777 argvlist[argc] = NULL;
9954
c404a6b0cdb1 Add spawnv and spawnve functions for Win32 platforms.
Guido van Rossum <guido@python.org>
parents: 9939
diff changeset
3778
22116
0c4230269ed3 OS/2 EMX port changes (Modules part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 21966
diff changeset
3779 #if defined(PYOS_OS2) && defined(PYCC_GCC)
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3780 Py_BEGIN_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3781 spawnval = spawnv(mode, path, argvlist);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3782 Py_END_ALLOW_THREADS
22116
0c4230269ed3 OS/2 EMX port changes (Modules part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 21966
diff changeset
3783 #else
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3784 if (mode == _OLD_P_OVERLAY)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3785 mode = _P_OVERLAY;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3786
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3787 Py_BEGIN_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3788 spawnval = _spawnv(mode, path, argvlist);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3789 Py_END_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3790 #endif
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3791
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3792 free_string_array(argvlist, argc);
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
3793 Py_DECREF(opath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3794
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3795 if (spawnval == -1)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3796 return posix_error();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3797 else
13462
4cf0de29c08c - fixed pointer size test in spawn functions. also added
Fredrik Lundh <fredrik@pythonware.com>
parents: 13442
diff changeset
3798 #if SIZEOF_LONG == SIZEOF_VOID_P
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3799 return Py_BuildValue("l", (long) spawnval);
13153
32816ce60a49 Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents: 13058
diff changeset
3800 #else
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3801 return Py_BuildValue("L", (PY_LONG_LONG) spawnval);
13153
32816ce60a49 Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents: 13058
diff changeset
3802 #endif
9954
c404a6b0cdb1 Add spawnv and spawnve functions for Win32 platforms.
Guido van Rossum <guido@python.org>
parents: 9939
diff changeset
3803 }
c404a6b0cdb1 Add spawnv and spawnve functions for Win32 platforms.
Guido van Rossum <guido@python.org>
parents: 9939
diff changeset
3804
c404a6b0cdb1 Add spawnv and spawnve functions for Win32 platforms.
Guido van Rossum <guido@python.org>
parents: 9939
diff changeset
3805
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
3806 PyDoc_STRVAR(posix_spawnve__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
3807 "spawnve(mode, path, args, env)\n\n\
21295
59894496b5c7 SF patch #489173: Make os.spawnv not block the interpreter, from
Tim Peters <tim.peters@gmail.com>
parents: 21172
diff changeset
3808 Execute the program 'path' in a new process.\n\
9954
c404a6b0cdb1 Add spawnv and spawnve functions for Win32 platforms.
Guido van Rossum <guido@python.org>
parents: 9939
diff changeset
3809 \n\
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3810 mode: mode of process creation\n\
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3811 path: path of executable file\n\
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3812 args: tuple or list of arguments\n\
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3813 env: dictionary of strings mapping to strings");
9954
c404a6b0cdb1 Add spawnv and spawnve functions for Win32 platforms.
Guido van Rossum <guido@python.org>
parents: 9939
diff changeset
3814
c404a6b0cdb1 Add spawnv and spawnve functions for Win32 platforms.
Guido van Rossum <guido@python.org>
parents: 9939
diff changeset
3815 static PyObject *
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
3816 posix_spawnve(PyObject *self, PyObject *args)
9954
c404a6b0cdb1 Add spawnv and spawnve functions for Win32 platforms.
Guido van Rossum <guido@python.org>
parents: 9939
diff changeset
3817 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3818 PyObject *opath;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3819 char *path;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3820 PyObject *argv, *env;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3821 char **argvlist;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3822 char **envlist;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3823 PyObject *res = NULL;
64047
79d572ea17df Merged revisions 84076 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 64035
diff changeset
3824 int mode;
79d572ea17df Merged revisions 84076 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 64035
diff changeset
3825 Py_ssize_t argc, i, envc;
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3826 Py_intptr_t spawnval;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3827 PyObject *(*getitem)(PyObject *, Py_ssize_t);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3828 Py_ssize_t lastarg = 0;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3829
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3830 /* spawnve has four arguments: (mode, path, argv, env), where
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3831 argv is a list or tuple of strings and env is a dictionary
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3832 like posix.environ. */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3833
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3834 if (!PyArg_ParseTuple(args, "iO&OO:spawnve", &mode,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3835 PyUnicode_FSConverter,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3836 &opath, &argv, &env))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3837 return NULL;
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
3838 path = PyBytes_AsString(opath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3839 if (PyList_Check(argv)) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3840 argc = PyList_Size(argv);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3841 getitem = PyList_GetItem;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3842 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3843 else if (PyTuple_Check(argv)) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3844 argc = PyTuple_Size(argv);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3845 getitem = PyTuple_GetItem;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3846 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3847 else {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3848 PyErr_SetString(PyExc_TypeError,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3849 "spawnve() arg 2 must be a tuple or list");
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3850 goto fail_0;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3851 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3852 if (!PyMapping_Check(env)) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3853 PyErr_SetString(PyExc_TypeError,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3854 "spawnve() arg 3 must be a mapping object");
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3855 goto fail_0;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3856 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3857
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3858 argvlist = PyMem_NEW(char *, argc+1);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3859 if (argvlist == NULL) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3860 PyErr_NoMemory();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3861 goto fail_0;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3862 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3863 for (i = 0; i < argc; i++) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3864 if (!fsconvert_strdup((*getitem)(argv, i),
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3865 &argvlist[i]))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3866 {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3867 lastarg = i;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3868 goto fail_1;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3869 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3870 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3871 lastarg = argc;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3872 argvlist[argc] = NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3873
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3874 envlist = parse_envlist(env, &envc);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3875 if (envlist == NULL)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3876 goto fail_1;
9954
c404a6b0cdb1 Add spawnv and spawnve functions for Win32 platforms.
Guido van Rossum <guido@python.org>
parents: 9939
diff changeset
3877
22116
0c4230269ed3 OS/2 EMX port changes (Modules part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 21966
diff changeset
3878 #if defined(PYOS_OS2) && defined(PYCC_GCC)
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3879 Py_BEGIN_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3880 spawnval = spawnve(mode, path, argvlist, envlist);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3881 Py_END_ALLOW_THREADS
22116
0c4230269ed3 OS/2 EMX port changes (Modules part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 21966
diff changeset
3882 #else
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3883 if (mode == _OLD_P_OVERLAY)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3884 mode = _P_OVERLAY;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3885
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3886 Py_BEGIN_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3887 spawnval = _spawnve(mode, path, argvlist, envlist);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3888 Py_END_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3889 #endif
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3890
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3891 if (spawnval == -1)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3892 (void) posix_error();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3893 else
13462
4cf0de29c08c - fixed pointer size test in spawn functions. also added
Fredrik Lundh <fredrik@pythonware.com>
parents: 13442
diff changeset
3894 #if SIZEOF_LONG == SIZEOF_VOID_P
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3895 res = Py_BuildValue("l", (long) spawnval);
13153
32816ce60a49 Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents: 13058
diff changeset
3896 #else
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3897 res = Py_BuildValue("L", (PY_LONG_LONG) spawnval);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3898 #endif
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3899
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3900 while (--envc >= 0)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3901 PyMem_DEL(envlist[envc]);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3902 PyMem_DEL(envlist);
26646
9267dffff32d execve(), spawnve(): add some extra sanity checking to env;
Guido van Rossum <guido@python.org>
parents: 26550
diff changeset
3903 fail_1:
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3904 free_string_array(argvlist, lastarg);
25630
25d1f4f91487 Apply file system default encoding to exec and spawn path and arguments.
Martin v. Löwis <martin@v.loewis.de>
parents: 25573
diff changeset
3905 fail_0:
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
3906 Py_DECREF(opath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3907 return res;
9954
c404a6b0cdb1 Add spawnv and spawnve functions for Win32 platforms.
Guido van Rossum <guido@python.org>
parents: 9939
diff changeset
3908 }
31866
552044b5058d OS/2 has support for spawnvp() and spawnvpe() in the C libraries supplied
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 31837
diff changeset
3909
552044b5058d OS/2 has support for spawnvp() and spawnvpe() in the C libraries supplied
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 31837
diff changeset
3910 /* OS/2 supports spawnvp & spawnvpe natively */
552044b5058d OS/2 has support for spawnvp() and spawnvpe() in the C libraries supplied
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 31837
diff changeset
3911 #if defined(PYOS_OS2)
552044b5058d OS/2 has support for spawnvp() and spawnvpe() in the C libraries supplied
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 31837
diff changeset
3912 PyDoc_STRVAR(posix_spawnvp__doc__,
552044b5058d OS/2 has support for spawnvp() and spawnvpe() in the C libraries supplied
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 31837
diff changeset
3913 "spawnvp(mode, file, args)\n\n\
552044b5058d OS/2 has support for spawnvp() and spawnvpe() in the C libraries supplied
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 31837
diff changeset
3914 Execute the program 'file' in a new process, using the environment\n\
552044b5058d OS/2 has support for spawnvp() and spawnvpe() in the C libraries supplied
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 31837
diff changeset
3915 search path to find the file.\n\
552044b5058d OS/2 has support for spawnvp() and spawnvpe() in the C libraries supplied
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 31837
diff changeset
3916 \n\
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3917 mode: mode of process creation\n\
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3918 file: executable file name\n\
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3919 args: tuple or list of strings");
31866
552044b5058d OS/2 has support for spawnvp() and spawnvpe() in the C libraries supplied
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 31837
diff changeset
3920
552044b5058d OS/2 has support for spawnvp() and spawnvpe() in the C libraries supplied
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 31837
diff changeset
3921 static PyObject *
552044b5058d OS/2 has support for spawnvp() and spawnvpe() in the C libraries supplied
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 31837
diff changeset
3922 posix_spawnvp(PyObject *self, PyObject *args)
552044b5058d OS/2 has support for spawnvp() and spawnvpe() in the C libraries supplied
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 31837
diff changeset
3923 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3924 PyObject *opath;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3925 char *path;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3926 PyObject *argv;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3927 char **argvlist;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3928 int mode, i, argc;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3929 Py_intptr_t spawnval;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3930 PyObject *(*getitem)(PyObject *, Py_ssize_t);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3931
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3932 /* spawnvp has three arguments: (mode, path, argv), where
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3933 argv is a list or tuple of strings. */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3934
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3935 if (!PyArg_ParseTuple(args, "iO&O:spawnvp", &mode,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3936 PyUnicode_FSConverter,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3937 &opath, &argv))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3938 return NULL;
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
3939 path = PyBytes_AsString(opath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3940 if (PyList_Check(argv)) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3941 argc = PyList_Size(argv);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3942 getitem = PyList_GetItem;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3943 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3944 else if (PyTuple_Check(argv)) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3945 argc = PyTuple_Size(argv);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3946 getitem = PyTuple_GetItem;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3947 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3948 else {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3949 PyErr_SetString(PyExc_TypeError,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3950 "spawnvp() arg 2 must be a tuple or list");
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
3951 Py_DECREF(opath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3952 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3953 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3954
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3955 argvlist = PyMem_NEW(char *, argc+1);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3956 if (argvlist == NULL) {
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
3957 Py_DECREF(opath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3958 return PyErr_NoMemory();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3959 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3960 for (i = 0; i < argc; i++) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3961 if (!fsconvert_strdup((*getitem)(argv, i),
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3962 &argvlist[i])) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3963 free_string_array(argvlist, i);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3964 PyErr_SetString(
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3965 PyExc_TypeError,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3966 "spawnvp() arg 2 must contain only strings");
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
3967 Py_DECREF(opath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3968 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3969 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3970 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3971 argvlist[argc] = NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3972
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3973 Py_BEGIN_ALLOW_THREADS
31866
552044b5058d OS/2 has support for spawnvp() and spawnvpe() in the C libraries supplied
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 31837
diff changeset
3974 #if defined(PYCC_GCC)
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3975 spawnval = spawnvp(mode, path, argvlist);
31866
552044b5058d OS/2 has support for spawnvp() and spawnvpe() in the C libraries supplied
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 31837
diff changeset
3976 #else
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3977 spawnval = _spawnvp(mode, path, argvlist);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3978 #endif
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3979 Py_END_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3980
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3981 free_string_array(argvlist, argc);
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
3982 Py_DECREF(opath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3983
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3984 if (spawnval == -1)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3985 return posix_error();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3986 else
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3987 return Py_BuildValue("l", (long) spawnval);
31866
552044b5058d OS/2 has support for spawnvp() and spawnvpe() in the C libraries supplied
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 31837
diff changeset
3988 }
552044b5058d OS/2 has support for spawnvp() and spawnvpe() in the C libraries supplied
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 31837
diff changeset
3989
552044b5058d OS/2 has support for spawnvp() and spawnvpe() in the C libraries supplied
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 31837
diff changeset
3990
552044b5058d OS/2 has support for spawnvp() and spawnvpe() in the C libraries supplied
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 31837
diff changeset
3991 PyDoc_STRVAR(posix_spawnvpe__doc__,
552044b5058d OS/2 has support for spawnvp() and spawnvpe() in the C libraries supplied
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 31837
diff changeset
3992 "spawnvpe(mode, file, args, env)\n\n\
552044b5058d OS/2 has support for spawnvp() and spawnvpe() in the C libraries supplied
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 31837
diff changeset
3993 Execute the program 'file' in a new process, using the environment\n\
552044b5058d OS/2 has support for spawnvp() and spawnvpe() in the C libraries supplied
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 31837
diff changeset
3994 search path to find the file.\n\
552044b5058d OS/2 has support for spawnvp() and spawnvpe() in the C libraries supplied
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 31837
diff changeset
3995 \n\
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3996 mode: mode of process creation\n\
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3997 file: executable file name\n\
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3998 args: tuple or list of arguments\n\
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
3999 env: dictionary of strings mapping to strings");
31866
552044b5058d OS/2 has support for spawnvp() and spawnvpe() in the C libraries supplied
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 31837
diff changeset
4000
552044b5058d OS/2 has support for spawnvp() and spawnvpe() in the C libraries supplied
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 31837
diff changeset
4001 static PyObject *
552044b5058d OS/2 has support for spawnvp() and spawnvpe() in the C libraries supplied
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 31837
diff changeset
4002 posix_spawnvpe(PyObject *self, PyObject *args)
552044b5058d OS/2 has support for spawnvp() and spawnvpe() in the C libraries supplied
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 31837
diff changeset
4003 {
73342
fa9c69dcf31b Issue #13339: Fix compile error in posixmodule.c due to missing semicolon.
Ross Lagerwall <rosslagerwall@gmail.com>
parents: 71740
diff changeset
4004 PyObject *opath;
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4005 char *path;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4006 PyObject *argv, *env;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4007 char **argvlist;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4008 char **envlist;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4009 PyObject *res=NULL;
64047
79d572ea17df Merged revisions 84076 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 64035
diff changeset
4010 int mode;
79d572ea17df Merged revisions 84076 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 64035
diff changeset
4011 Py_ssize_t argc, i, envc;
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4012 Py_intptr_t spawnval;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4013 PyObject *(*getitem)(PyObject *, Py_ssize_t);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4014 int lastarg = 0;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4015
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4016 /* spawnvpe has four arguments: (mode, path, argv, env), where
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4017 argv is a list or tuple of strings and env is a dictionary
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4018 like posix.environ. */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4019
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4020 if (!PyArg_ParseTuple(args, "ietOO:spawnvpe", &mode,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4021 PyUnicode_FSConverter,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4022 &opath, &argv, &env))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4023 return NULL;
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4024 path = PyBytes_AsString(opath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4025 if (PyList_Check(argv)) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4026 argc = PyList_Size(argv);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4027 getitem = PyList_GetItem;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4028 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4029 else if (PyTuple_Check(argv)) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4030 argc = PyTuple_Size(argv);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4031 getitem = PyTuple_GetItem;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4032 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4033 else {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4034 PyErr_SetString(PyExc_TypeError,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4035 "spawnvpe() arg 2 must be a tuple or list");
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4036 goto fail_0;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4037 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4038 if (!PyMapping_Check(env)) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4039 PyErr_SetString(PyExc_TypeError,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4040 "spawnvpe() arg 3 must be a mapping object");
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4041 goto fail_0;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4042 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4043
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4044 argvlist = PyMem_NEW(char *, argc+1);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4045 if (argvlist == NULL) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4046 PyErr_NoMemory();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4047 goto fail_0;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4048 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4049 for (i = 0; i < argc; i++) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4050 if (!fsconvert_strdup((*getitem)(argv, i),
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4051 &argvlist[i]))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4052 {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4053 lastarg = i;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4054 goto fail_1;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4055 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4056 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4057 lastarg = argc;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4058 argvlist[argc] = NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4059
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4060 envlist = parse_envlist(env, &envc);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4061 if (envlist == NULL)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4062 goto fail_1;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4063
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4064 Py_BEGIN_ALLOW_THREADS
31866
552044b5058d OS/2 has support for spawnvp() and spawnvpe() in the C libraries supplied
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 31837
diff changeset
4065 #if defined(PYCC_GCC)
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4066 spawnval = spawnvpe(mode, path, argvlist, envlist);
31866
552044b5058d OS/2 has support for spawnvp() and spawnvpe() in the C libraries supplied
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 31837
diff changeset
4067 #else
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4068 spawnval = _spawnvpe(mode, path, argvlist, envlist);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4069 #endif
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4070 Py_END_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4071
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4072 if (spawnval == -1)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4073 (void) posix_error();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4074 else
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4075 res = Py_BuildValue("l", (long) spawnval);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4076
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4077 while (--envc >= 0)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4078 PyMem_DEL(envlist[envc]);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4079 PyMem_DEL(envlist);
31866
552044b5058d OS/2 has support for spawnvp() and spawnvpe() in the C libraries supplied
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 31837
diff changeset
4080 fail_1:
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4081 free_string_array(argvlist, lastarg);
31866
552044b5058d OS/2 has support for spawnvp() and spawnvpe() in the C libraries supplied
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 31837
diff changeset
4082 fail_0:
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4083 Py_DECREF(opath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4084 return res;
31866
552044b5058d OS/2 has support for spawnvp() and spawnvpe() in the C libraries supplied
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 31837
diff changeset
4085 }
552044b5058d OS/2 has support for spawnvp() and spawnvpe() in the C libraries supplied
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 31837
diff changeset
4086 #endif /* PYOS_OS2 */
9954
c404a6b0cdb1 Add spawnv and spawnve functions for Win32 platforms.
Guido van Rossum <guido@python.org>
parents: 9939
diff changeset
4087 #endif /* HAVE_SPAWNV */
c404a6b0cdb1 Add spawnv and spawnve functions for Win32 platforms.
Guido van Rossum <guido@python.org>
parents: 9939
diff changeset
4088
c404a6b0cdb1 Add spawnv and spawnve functions for Win32 platforms.
Guido van Rossum <guido@python.org>
parents: 9939
diff changeset
4089
17419
3fadc37cfa92 Unixware 7 support by Billy G. Allie (SF patch 413011)
Guido van Rossum <guido@python.org>
parents: 16792
diff changeset
4090 #ifdef HAVE_FORK1
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
4091 PyDoc_STRVAR(posix_fork1__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
4092 "fork1() -> pid\n\n\
17419
3fadc37cfa92 Unixware 7 support by Billy G. Allie (SF patch 413011)
Guido van Rossum <guido@python.org>
parents: 16792
diff changeset
4093 Fork a child process with a single multiplexed (i.e., not bound) thread.\n\
3fadc37cfa92 Unixware 7 support by Billy G. Allie (SF patch 413011)
Guido van Rossum <guido@python.org>
parents: 16792
diff changeset
4094 \n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
4095 Return 0 to child process and PID of child to parent process.");
17419
3fadc37cfa92 Unixware 7 support by Billy G. Allie (SF patch 413011)
Guido van Rossum <guido@python.org>
parents: 16792
diff changeset
4096
3fadc37cfa92 Unixware 7 support by Billy G. Allie (SF patch 413011)
Guido van Rossum <guido@python.org>
parents: 16792
diff changeset
4097 static PyObject *
27916
93d44870e8b5 Added test_posix (hopefully it works on Windows).
Neal Norwitz <nnorwitz@gmail.com>
parents: 27826
diff changeset
4098 posix_fork1(PyObject *self, PyObject *noargs)
93d44870e8b5 Added test_posix (hopefully it works on Windows).
Neal Norwitz <nnorwitz@gmail.com>
parents: 27826
diff changeset
4099 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4100 pid_t pid;
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4101 int result = 0;
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4102 _PyImport_AcquireLock();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4103 pid = fork1();
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4104 if (pid == 0) {
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4105 /* child: this clobbers and resets the import lock. */
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4106 PyOS_AfterFork();
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4107 } else {
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4108 /* parent: release the import lock. */
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4109 result = _PyImport_ReleaseLock();
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4110 }
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4111 if (pid == -1)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4112 return posix_error();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4113 if (result < 0) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4114 /* Don't clobber the OSError if the fork failed. */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4115 PyErr_SetString(PyExc_RuntimeError,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4116 "not holding the import lock");
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4117 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4118 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4119 return PyLong_FromPid(pid);
17419
3fadc37cfa92 Unixware 7 support by Billy G. Allie (SF patch 413011)
Guido van Rossum <guido@python.org>
parents: 16792
diff changeset
4120 }
3fadc37cfa92 Unixware 7 support by Billy G. Allie (SF patch 413011)
Guido van Rossum <guido@python.org>
parents: 16792
diff changeset
4121 #endif
3fadc37cfa92 Unixware 7 support by Billy G. Allie (SF patch 413011)
Guido van Rossum <guido@python.org>
parents: 16792
diff changeset
4122
3fadc37cfa92 Unixware 7 support by Billy G. Allie (SF patch 413011)
Guido van Rossum <guido@python.org>
parents: 16792
diff changeset
4123
2456
bc03225a4493 changes for NT/Borland C
Guido van Rossum <guido@python.org>
parents: 2370
diff changeset
4124 #ifdef HAVE_FORK
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
4125 PyDoc_STRVAR(posix_fork__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
4126 "fork() -> pid\n\n\
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
4127 Fork a child process.\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
4128 Return 0 to child process and PID of child to parent process.");
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
4129
4672
5b53268f547a Renamed.
Barry Warsaw <barry@python.org>
parents: 4600
diff changeset
4130 static PyObject *
27916
93d44870e8b5 Added test_posix (hopefully it works on Windows).
Neal Norwitz <nnorwitz@gmail.com>
parents: 27826
diff changeset
4131 posix_fork(PyObject *self, PyObject *noargs)
93d44870e8b5 Added test_posix (hopefully it works on Windows).
Neal Norwitz <nnorwitz@gmail.com>
parents: 27826
diff changeset
4132 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4133 pid_t pid;
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4134 int result = 0;
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4135 _PyImport_AcquireLock();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4136 pid = fork();
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4137 if (pid == 0) {
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4138 /* child: this clobbers and resets the import lock. */
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4139 PyOS_AfterFork();
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4140 } else {
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4141 /* parent: release the import lock. */
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4142 result = _PyImport_ReleaseLock();
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4143 }
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4144 if (pid == -1)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4145 return posix_error();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4146 if (result < 0) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4147 /* Don't clobber the OSError if the fork failed. */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4148 PyErr_SetString(PyExc_RuntimeError,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4149 "not holding the import lock");
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4150 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4151 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4152 return PyLong_FromPid(pid);
257
a46558ad0bed Removed utimes() compatibility hack.
Guido van Rossum <guido@python.org>
parents: 200
diff changeset
4153 }
2456
bc03225a4493 changes for NT/Borland C
Guido van Rossum <guido@python.org>
parents: 2370
diff changeset
4154 #endif
257
a46558ad0bed Removed utimes() compatibility hack.
Guido van Rossum <guido@python.org>
parents: 200
diff changeset
4155
28352
45054bf592e5 Add support for os.openpty() on AIX which uses /dev/ptc instead of /dev/ptmx.
Neal Norwitz <nnorwitz@gmail.com>
parents: 28169
diff changeset
4156 /* AIX uses /dev/ptc but is otherwise the same as /dev/ptmx */
28355
eddf59f5cc58 Get rid of warning on IRIX
Neal Norwitz <nnorwitz@gmail.com>
parents: 28352
diff changeset
4157 /* IRIX has both /dev/ptc and /dev/ptmx, use ptmx */
eddf59f5cc58 Get rid of warning on IRIX
Neal Norwitz <nnorwitz@gmail.com>
parents: 28352
diff changeset
4158 #if defined(HAVE_DEV_PTC) && !defined(HAVE_DEV_PTMX)
28352
45054bf592e5 Add support for os.openpty() on AIX which uses /dev/ptc instead of /dev/ptmx.
Neal Norwitz <nnorwitz@gmail.com>
parents: 28169
diff changeset
4159 #define DEV_PTY_FILE "/dev/ptc"
45054bf592e5 Add support for os.openpty() on AIX which uses /dev/ptc instead of /dev/ptmx.
Neal Norwitz <nnorwitz@gmail.com>
parents: 28169
diff changeset
4160 #define HAVE_DEV_PTMX
45054bf592e5 Add support for os.openpty() on AIX which uses /dev/ptc instead of /dev/ptmx.
Neal Norwitz <nnorwitz@gmail.com>
parents: 28169
diff changeset
4161 #else
45054bf592e5 Add support for os.openpty() on AIX which uses /dev/ptc instead of /dev/ptmx.
Neal Norwitz <nnorwitz@gmail.com>
parents: 28169
diff changeset
4162 #define DEV_PTY_FILE "/dev/ptmx"
45054bf592e5 Add support for os.openpty() on AIX which uses /dev/ptc instead of /dev/ptmx.
Neal Norwitz <nnorwitz@gmail.com>
parents: 28169
diff changeset
4163 #endif
45054bf592e5 Add support for os.openpty() on AIX which uses /dev/ptc instead of /dev/ptmx.
Neal Norwitz <nnorwitz@gmail.com>
parents: 28169
diff changeset
4164
26945
526742a74d06 Patch #656590: /dev/ptmx support for ptys.
Martin v. Löwis <martin@v.loewis.de>
parents: 26810
diff changeset
4165 #if defined(HAVE_OPENPTY) || defined(HAVE_FORKPTY) || defined(HAVE_DEV_PTMX)
13058
53f4022c0cd5 Thomas Wouters <thomas@xs4all.net>:
Fred Drake <fdrake@acm.org>
parents: 12865
diff changeset
4166 #ifdef HAVE_PTY_H
53f4022c0cd5 Thomas Wouters <thomas@xs4all.net>:
Fred Drake <fdrake@acm.org>
parents: 12865
diff changeset
4167 #include <pty.h>
53f4022c0cd5 Thomas Wouters <thomas@xs4all.net>:
Fred Drake <fdrake@acm.org>
parents: 12865
diff changeset
4168 #else
53f4022c0cd5 Thomas Wouters <thomas@xs4all.net>:
Fred Drake <fdrake@acm.org>
parents: 12865
diff changeset
4169 #ifdef HAVE_LIBUTIL_H
53f4022c0cd5 Thomas Wouters <thomas@xs4all.net>:
Fred Drake <fdrake@acm.org>
parents: 12865
diff changeset
4170 #include <libutil.h>
58819
b834c8ee8e7c Forward port a number of OSX bugfixes from the trunk to 3.2
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 58383
diff changeset
4171 #else
b834c8ee8e7c Forward port a number of OSX bugfixes from the trunk to 3.2
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 58383
diff changeset
4172 #ifdef HAVE_UTIL_H
b834c8ee8e7c Forward port a number of OSX bugfixes from the trunk to 3.2
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 58383
diff changeset
4173 #include <util.h>
b834c8ee8e7c Forward port a number of OSX bugfixes from the trunk to 3.2
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 58383
diff changeset
4174 #endif /* HAVE_UTIL_H */
13058
53f4022c0cd5 Thomas Wouters <thomas@xs4all.net>:
Fred Drake <fdrake@acm.org>
parents: 12865
diff changeset
4175 #endif /* HAVE_LIBUTIL_H */
53f4022c0cd5 Thomas Wouters <thomas@xs4all.net>:
Fred Drake <fdrake@acm.org>
parents: 12865
diff changeset
4176 #endif /* HAVE_PTY_H */
26998
6ca1c0d3ef19 Expose I_ constants. Auto-detect stropts.h. Properly configure the slave terminal.
Martin v. Löwis <martin@v.loewis.de>
parents: 26960
diff changeset
4177 #ifdef HAVE_STROPTS_H
6ca1c0d3ef19 Expose I_ constants. Auto-detect stropts.h. Properly configure the slave terminal.
Martin v. Löwis <martin@v.loewis.de>
parents: 26960
diff changeset
4178 #include <stropts.h>
26945
526742a74d06 Patch #656590: /dev/ptmx support for ptys.
Martin v. Löwis <martin@v.loewis.de>
parents: 26810
diff changeset
4179 #endif
526742a74d06 Patch #656590: /dev/ptmx support for ptys.
Martin v. Löwis <martin@v.loewis.de>
parents: 26810
diff changeset
4180 #endif /* defined(HAVE_OPENPTY) || defined(HAVE_FORKPTY) || defined(HAVE_DEV_PTMX */
526742a74d06 Patch #656590: /dev/ptmx support for ptys.
Martin v. Löwis <martin@v.loewis.de>
parents: 26810
diff changeset
4181
526742a74d06 Patch #656590: /dev/ptmx support for ptys.
Martin v. Löwis <martin@v.loewis.de>
parents: 26810
diff changeset
4182 #if defined(HAVE_OPENPTY) || defined(HAVE__GETPTY) || defined(HAVE_DEV_PTMX)
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
4183 PyDoc_STRVAR(posix_openpty__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
4184 "openpty() -> (master_fd, slave_fd)\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
4185 Open a pseudo-terminal, returning open fd's for both master and slave end.\n");
13058
53f4022c0cd5 Thomas Wouters <thomas@xs4all.net>:
Fred Drake <fdrake@acm.org>
parents: 12865
diff changeset
4186
53f4022c0cd5 Thomas Wouters <thomas@xs4all.net>:
Fred Drake <fdrake@acm.org>
parents: 12865
diff changeset
4187 static PyObject *
27916
93d44870e8b5 Added test_posix (hopefully it works on Windows).
Neal Norwitz <nnorwitz@gmail.com>
parents: 27826
diff changeset
4188 posix_openpty(PyObject *self, PyObject *noargs)
13058
53f4022c0cd5 Thomas Wouters <thomas@xs4all.net>:
Fred Drake <fdrake@acm.org>
parents: 12865
diff changeset
4189 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4190 int master_fd, slave_fd;
13601
ef8b20b9f6f5 Move (actually copy) support for the sgi._getpty() function into
Thomas Wouters <thomas@python.org>
parents: 13582
diff changeset
4191 #ifndef HAVE_OPENPTY
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4192 char * slave_name;
13601
ef8b20b9f6f5 Move (actually copy) support for the sgi._getpty() function into
Thomas Wouters <thomas@python.org>
parents: 13582
diff changeset
4193 #endif
26945
526742a74d06 Patch #656590: /dev/ptmx support for ptys.
Martin v. Löwis <martin@v.loewis.de>
parents: 26810
diff changeset
4194 #if defined(HAVE_DEV_PTMX) && !defined(HAVE_OPENPTY) && !defined(HAVE__GETPTY)
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4195 PyOS_sighandler_t sig_saved;
26945
526742a74d06 Patch #656590: /dev/ptmx support for ptys.
Martin v. Löwis <martin@v.loewis.de>
parents: 26810
diff changeset
4196 #ifdef sun
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4197 extern char *ptsname(int fildes);
26945
526742a74d06 Patch #656590: /dev/ptmx support for ptys.
Martin v. Löwis <martin@v.loewis.de>
parents: 26810
diff changeset
4198 #endif
526742a74d06 Patch #656590: /dev/ptmx support for ptys.
Martin v. Löwis <martin@v.loewis.de>
parents: 26810
diff changeset
4199 #endif
13601
ef8b20b9f6f5 Move (actually copy) support for the sgi._getpty() function into
Thomas Wouters <thomas@python.org>
parents: 13582
diff changeset
4200
ef8b20b9f6f5 Move (actually copy) support for the sgi._getpty() function into
Thomas Wouters <thomas@python.org>
parents: 13582
diff changeset
4201 #ifdef HAVE_OPENPTY
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4202 if (openpty(&master_fd, &slave_fd, NULL, NULL, NULL) != 0)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4203 return posix_error();
28352
45054bf592e5 Add support for os.openpty() on AIX which uses /dev/ptc instead of /dev/ptmx.
Neal Norwitz <nnorwitz@gmail.com>
parents: 28169
diff changeset
4204 #elif defined(HAVE__GETPTY)
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4205 slave_name = _getpty(&master_fd, O_RDWR, 0666, 0);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4206 if (slave_name == NULL)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4207 return posix_error();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4208
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4209 slave_fd = open(slave_name, O_RDWR);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4210 if (slave_fd < 0)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4211 return posix_error();
26945
526742a74d06 Patch #656590: /dev/ptmx support for ptys.
Martin v. Löwis <martin@v.loewis.de>
parents: 26810
diff changeset
4212 #else
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4213 master_fd = open(DEV_PTY_FILE, O_RDWR | O_NOCTTY); /* open master */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4214 if (master_fd < 0)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4215 return posix_error();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4216 sig_saved = PyOS_setsig(SIGCHLD, SIG_DFL);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4217 /* change permission of slave */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4218 if (grantpt(master_fd) < 0) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4219 PyOS_setsig(SIGCHLD, sig_saved);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4220 return posix_error();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4221 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4222 /* unlock slave */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4223 if (unlockpt(master_fd) < 0) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4224 PyOS_setsig(SIGCHLD, sig_saved);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4225 return posix_error();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4226 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4227 PyOS_setsig(SIGCHLD, sig_saved);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4228 slave_name = ptsname(master_fd); /* get name of slave */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4229 if (slave_name == NULL)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4230 return posix_error();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4231 slave_fd = open(slave_name, O_RDWR | O_NOCTTY); /* open slave */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4232 if (slave_fd < 0)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4233 return posix_error();
28352
45054bf592e5 Add support for os.openpty() on AIX which uses /dev/ptc instead of /dev/ptmx.
Neal Norwitz <nnorwitz@gmail.com>
parents: 28169
diff changeset
4234 #if !defined(__CYGWIN__) && !defined(HAVE_DEV_PTC)
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4235 ioctl(slave_fd, I_PUSH, "ptem"); /* push ptem */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4236 ioctl(slave_fd, I_PUSH, "ldterm"); /* push ldterm */
26960
1c58fe5c769f Fix compilation errors on HPUX11
Neal Norwitz <nnorwitz@gmail.com>
parents: 26952
diff changeset
4237 #ifndef __hpux
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4238 ioctl(slave_fd, I_PUSH, "ttcompat"); /* push ttcompat */
26960
1c58fe5c769f Fix compilation errors on HPUX11
Neal Norwitz <nnorwitz@gmail.com>
parents: 26952
diff changeset
4239 #endif /* __hpux */
26945
526742a74d06 Patch #656590: /dev/ptmx support for ptys.
Martin v. Löwis <martin@v.loewis.de>
parents: 26810
diff changeset
4240 #endif /* HAVE_CYGWIN */
13694
b54f11ada91e Create a new section of pyport.h to hold all external function declarations
Thomas Wouters <thomas@python.org>
parents: 13675
diff changeset
4241 #endif /* HAVE_OPENPTY */
13601
ef8b20b9f6f5 Move (actually copy) support for the sgi._getpty() function into
Thomas Wouters <thomas@python.org>
parents: 13582
diff changeset
4242
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4243 return Py_BuildValue("(ii)", master_fd, slave_fd);
13601
ef8b20b9f6f5 Move (actually copy) support for the sgi._getpty() function into
Thomas Wouters <thomas@python.org>
parents: 13582
diff changeset
4244
13058
53f4022c0cd5 Thomas Wouters <thomas@xs4all.net>:
Fred Drake <fdrake@acm.org>
parents: 12865
diff changeset
4245 }
26945
526742a74d06 Patch #656590: /dev/ptmx support for ptys.
Martin v. Löwis <martin@v.loewis.de>
parents: 26810
diff changeset
4246 #endif /* defined(HAVE_OPENPTY) || defined(HAVE__GETPTY) || defined(HAVE_DEV_PTMX) */
13058
53f4022c0cd5 Thomas Wouters <thomas@xs4all.net>:
Fred Drake <fdrake@acm.org>
parents: 12865
diff changeset
4247
53f4022c0cd5 Thomas Wouters <thomas@xs4all.net>:
Fred Drake <fdrake@acm.org>
parents: 12865
diff changeset
4248 #ifdef HAVE_FORKPTY
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
4249 PyDoc_STRVAR(posix_forkpty__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
4250 "forkpty() -> (pid, master_fd)\n\n\
13058
53f4022c0cd5 Thomas Wouters <thomas@xs4all.net>:
Fred Drake <fdrake@acm.org>
parents: 12865
diff changeset
4251 Fork a new process with a new pseudo-terminal as controlling tty.\n\n\
53f4022c0cd5 Thomas Wouters <thomas@xs4all.net>:
Fred Drake <fdrake@acm.org>
parents: 12865
diff changeset
4252 Like fork(), return 0 as pid to child process, and PID of child to parent.\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
4253 To both, return fd of newly opened pseudo-terminal.\n");
13058
53f4022c0cd5 Thomas Wouters <thomas@xs4all.net>:
Fred Drake <fdrake@acm.org>
parents: 12865
diff changeset
4254
53f4022c0cd5 Thomas Wouters <thomas@xs4all.net>:
Fred Drake <fdrake@acm.org>
parents: 12865
diff changeset
4255 static PyObject *
27916
93d44870e8b5 Added test_posix (hopefully it works on Windows).
Neal Norwitz <nnorwitz@gmail.com>
parents: 27826
diff changeset
4256 posix_forkpty(PyObject *self, PyObject *noargs)
13058
53f4022c0cd5 Thomas Wouters <thomas@xs4all.net>:
Fred Drake <fdrake@acm.org>
parents: 12865
diff changeset
4257 {
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4258 int master_fd = -1, result = 0;
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4259 pid_t pid;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4260
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4261 _PyImport_AcquireLock();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4262 pid = forkpty(&master_fd, NULL, NULL, NULL);
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4263 if (pid == 0) {
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4264 /* child: this clobbers and resets the import lock. */
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4265 PyOS_AfterFork();
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4266 } else {
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4267 /* parent: release the import lock. */
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4268 result = _PyImport_ReleaseLock();
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4269 }
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4270 if (pid == -1)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4271 return posix_error();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4272 if (result < 0) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4273 /* Don't clobber the OSError if the fork failed. */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4274 PyErr_SetString(PyExc_RuntimeError,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4275 "not holding the import lock");
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4276 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4277 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4278 return Py_BuildValue("(Ni)", PyLong_FromPid(pid), master_fd);
13058
53f4022c0cd5 Thomas Wouters <thomas@xs4all.net>:
Fred Drake <fdrake@acm.org>
parents: 12865
diff changeset
4279 }
53f4022c0cd5 Thomas Wouters <thomas@xs4all.net>:
Fred Drake <fdrake@acm.org>
parents: 12865
diff changeset
4280 #endif
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
4281
2456
bc03225a4493 changes for NT/Borland C
Guido van Rossum <guido@python.org>
parents: 2370
diff changeset
4282 #ifdef HAVE_GETEGID
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
4283 PyDoc_STRVAR(posix_getegid__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
4284 "getegid() -> egid\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
4285 Return the current process's effective group id.");
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
4286
4672
5b53268f547a Renamed.
Barry Warsaw <barry@python.org>
parents: 4600
diff changeset
4287 static PyObject *
27916
93d44870e8b5 Added test_posix (hopefully it works on Windows).
Neal Norwitz <nnorwitz@gmail.com>
parents: 27826
diff changeset
4288 posix_getegid(PyObject *self, PyObject *noargs)
93d44870e8b5 Added test_posix (hopefully it works on Windows).
Neal Norwitz <nnorwitz@gmail.com>
parents: 27826
diff changeset
4289 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4290 return PyLong_FromLong((long)getegid());
861
76095a8b96ca Added gete?[gu]id functions
Guido van Rossum <guido@python.org>
parents: 793
diff changeset
4291 }
2456
bc03225a4493 changes for NT/Borland C
Guido van Rossum <guido@python.org>
parents: 2370
diff changeset
4292 #endif
861
76095a8b96ca Added gete?[gu]id functions
Guido van Rossum <guido@python.org>
parents: 793
diff changeset
4293
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
4294
2456
bc03225a4493 changes for NT/Borland C
Guido van Rossum <guido@python.org>
parents: 2370
diff changeset
4295 #ifdef HAVE_GETEUID
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
4296 PyDoc_STRVAR(posix_geteuid__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
4297 "geteuid() -> euid\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
4298 Return the current process's effective user id.");
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
4299
4672
5b53268f547a Renamed.
Barry Warsaw <barry@python.org>
parents: 4600
diff changeset
4300 static PyObject *
27916
93d44870e8b5 Added test_posix (hopefully it works on Windows).
Neal Norwitz <nnorwitz@gmail.com>
parents: 27826
diff changeset
4301 posix_geteuid(PyObject *self, PyObject *noargs)
93d44870e8b5 Added test_posix (hopefully it works on Windows).
Neal Norwitz <nnorwitz@gmail.com>
parents: 27826
diff changeset
4302 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4303 return PyLong_FromLong((long)geteuid());
861
76095a8b96ca Added gete?[gu]id functions
Guido van Rossum <guido@python.org>
parents: 793
diff changeset
4304 }
2456
bc03225a4493 changes for NT/Borland C
Guido van Rossum <guido@python.org>
parents: 2370
diff changeset
4305 #endif
861
76095a8b96ca Added gete?[gu]id functions
Guido van Rossum <guido@python.org>
parents: 793
diff changeset
4306
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
4307
2456
bc03225a4493 changes for NT/Borland C
Guido van Rossum <guido@python.org>
parents: 2370
diff changeset
4308 #ifdef HAVE_GETGID
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
4309 PyDoc_STRVAR(posix_getgid__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
4310 "getgid() -> gid\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
4311 Return the current process's group id.");
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
4312
4672
5b53268f547a Renamed.
Barry Warsaw <barry@python.org>
parents: 4600
diff changeset
4313 static PyObject *
27916
93d44870e8b5 Added test_posix (hopefully it works on Windows).
Neal Norwitz <nnorwitz@gmail.com>
parents: 27826
diff changeset
4314 posix_getgid(PyObject *self, PyObject *noargs)
93d44870e8b5 Added test_posix (hopefully it works on Windows).
Neal Norwitz <nnorwitz@gmail.com>
parents: 27826
diff changeset
4315 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4316 return PyLong_FromLong((long)getgid());
861
76095a8b96ca Added gete?[gu]id functions
Guido van Rossum <guido@python.org>
parents: 793
diff changeset
4317 }
2456
bc03225a4493 changes for NT/Borland C
Guido van Rossum <guido@python.org>
parents: 2370
diff changeset
4318 #endif
861
76095a8b96ca Added gete?[gu]id functions
Guido van Rossum <guido@python.org>
parents: 793
diff changeset
4319
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
4320
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
4321 PyDoc_STRVAR(posix_getpid__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
4322 "getpid() -> pid\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
4323 Return the current process id");
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
4324
4672
5b53268f547a Renamed.
Barry Warsaw <barry@python.org>
parents: 4600
diff changeset
4325 static PyObject *
27916
93d44870e8b5 Added test_posix (hopefully it works on Windows).
Neal Norwitz <nnorwitz@gmail.com>
parents: 27826
diff changeset
4326 posix_getpid(PyObject *self, PyObject *noargs)
93d44870e8b5 Added test_posix (hopefully it works on Windows).
Neal Norwitz <nnorwitz@gmail.com>
parents: 27826
diff changeset
4327 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4328 return PyLong_FromPid(getpid());
257
a46558ad0bed Removed utimes() compatibility hack.
Guido van Rossum <guido@python.org>
parents: 200
diff changeset
4329 }
a46558ad0bed Removed utimes() compatibility hack.
Guido van Rossum <guido@python.org>
parents: 200
diff changeset
4330
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
4331
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
4332 #ifdef HAVE_GETGROUPS
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
4333 PyDoc_STRVAR(posix_getgroups__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
4334 "getgroups() -> list of group IDs\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
4335 Return list of supplemental group IDs for the process.");
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
4336
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
4337 static PyObject *
27916
93d44870e8b5 Added test_posix (hopefully it works on Windows).
Neal Norwitz <nnorwitz@gmail.com>
parents: 27826
diff changeset
4338 posix_getgroups(PyObject *self, PyObject *noargs)
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
4339 {
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
4340 PyObject *result = NULL;
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
4341
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
4342 #ifdef NGROUPS_MAX
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
4343 #define MAX_GROUPS NGROUPS_MAX
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
4344 #else
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4345 /* defined to be 16 on Solaris7, so this should be a small number */
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
4346 #define MAX_GROUPS 64
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
4347 #endif
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4348 gid_t grouplist[MAX_GROUPS];
63165
ec42b728264d This fixes issue7900 by adding code that deals
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62380
diff changeset
4349
75066
f4b7ecf8a5f8 Issue #13703: add a way to randomize the hash values of basic types (str, bytes, datetime)
Georg Brandl <georg@python.org>
parents: 67689
diff changeset
4350 /* On MacOSX getgroups(2) can return more than MAX_GROUPS results
63165
ec42b728264d This fixes issue7900 by adding code that deals
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62380
diff changeset
4351 * This is a helper variable to store the intermediate result when
ec42b728264d This fixes issue7900 by adding code that deals
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62380
diff changeset
4352 * that happens.
ec42b728264d This fixes issue7900 by adding code that deals
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62380
diff changeset
4353 *
ec42b728264d This fixes issue7900 by adding code that deals
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62380
diff changeset
4354 * To keep the code readable the OSX behaviour is unconditional,
ec42b728264d This fixes issue7900 by adding code that deals
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62380
diff changeset
4355 * according to the POSIX spec this should be safe on all unix-y
ec42b728264d This fixes issue7900 by adding code that deals
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62380
diff changeset
4356 * systems.
ec42b728264d This fixes issue7900 by adding code that deals
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62380
diff changeset
4357 */
ec42b728264d This fixes issue7900 by adding code that deals
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62380
diff changeset
4358 gid_t* alt_grouplist = grouplist;
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4359 int n;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4360
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4361 n = getgroups(MAX_GROUPS, grouplist);
63165
ec42b728264d This fixes issue7900 by adding code that deals
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62380
diff changeset
4362 if (n < 0) {
ec42b728264d This fixes issue7900 by adding code that deals
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62380
diff changeset
4363 if (errno == EINVAL) {
ec42b728264d This fixes issue7900 by adding code that deals
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62380
diff changeset
4364 n = getgroups(0, NULL);
ec42b728264d This fixes issue7900 by adding code that deals
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62380
diff changeset
4365 if (n == -1) {
ec42b728264d This fixes issue7900 by adding code that deals
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62380
diff changeset
4366 return posix_error();
ec42b728264d This fixes issue7900 by adding code that deals
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62380
diff changeset
4367 }
ec42b728264d This fixes issue7900 by adding code that deals
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62380
diff changeset
4368 if (n == 0) {
ec42b728264d This fixes issue7900 by adding code that deals
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62380
diff changeset
4369 /* Avoid malloc(0) */
ec42b728264d This fixes issue7900 by adding code that deals
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62380
diff changeset
4370 alt_grouplist = grouplist;
ec42b728264d This fixes issue7900 by adding code that deals
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62380
diff changeset
4371 } else {
ec42b728264d This fixes issue7900 by adding code that deals
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62380
diff changeset
4372 alt_grouplist = PyMem_Malloc(n * sizeof(gid_t));
ec42b728264d This fixes issue7900 by adding code that deals
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62380
diff changeset
4373 if (alt_grouplist == NULL) {
ec42b728264d This fixes issue7900 by adding code that deals
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62380
diff changeset
4374 errno = EINVAL;
ec42b728264d This fixes issue7900 by adding code that deals
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62380
diff changeset
4375 return posix_error();
ec42b728264d This fixes issue7900 by adding code that deals
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62380
diff changeset
4376 }
ec42b728264d This fixes issue7900 by adding code that deals
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62380
diff changeset
4377 n = getgroups(n, alt_grouplist);
ec42b728264d This fixes issue7900 by adding code that deals
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62380
diff changeset
4378 if (n == -1) {
ec42b728264d This fixes issue7900 by adding code that deals
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62380
diff changeset
4379 PyMem_Free(alt_grouplist);
ec42b728264d This fixes issue7900 by adding code that deals
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62380
diff changeset
4380 return posix_error();
ec42b728264d This fixes issue7900 by adding code that deals
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62380
diff changeset
4381 }
ec42b728264d This fixes issue7900 by adding code that deals
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62380
diff changeset
4382 }
ec42b728264d This fixes issue7900 by adding code that deals
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62380
diff changeset
4383 } else {
ec42b728264d This fixes issue7900 by adding code that deals
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62380
diff changeset
4384 return posix_error();
ec42b728264d This fixes issue7900 by adding code that deals
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62380
diff changeset
4385 }
ec42b728264d This fixes issue7900 by adding code that deals
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62380
diff changeset
4386 }
ec42b728264d This fixes issue7900 by adding code that deals
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62380
diff changeset
4387 result = PyList_New(n);
ec42b728264d This fixes issue7900 by adding code that deals
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62380
diff changeset
4388 if (result != NULL) {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4389 int i;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4390 for (i = 0; i < n; ++i) {
63165
ec42b728264d This fixes issue7900 by adding code that deals
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62380
diff changeset
4391 PyObject *o = PyLong_FromLong((long)alt_grouplist[i]);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4392 if (o == NULL) {
66495
c7a342a798e7 Merged revisions 86808 via svnmerge from
Stefan Krah <stefan@bytereef.org>
parents: 66493
diff changeset
4393 Py_DECREF(result);
c7a342a798e7 Merged revisions 86808 via svnmerge from
Stefan Krah <stefan@bytereef.org>
parents: 66493
diff changeset
4394 result = NULL;
c7a342a798e7 Merged revisions 86808 via svnmerge from
Stefan Krah <stefan@bytereef.org>
parents: 66493
diff changeset
4395 break;
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
4396 }
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4397 PyList_SET_ITEM(result, i, o);
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
4398 }
63165
ec42b728264d This fixes issue7900 by adding code that deals
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62380
diff changeset
4399 }
ec42b728264d This fixes issue7900 by adding code that deals
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62380
diff changeset
4400
ec42b728264d This fixes issue7900 by adding code that deals
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62380
diff changeset
4401 if (alt_grouplist != grouplist) {
ec42b728264d This fixes issue7900 by adding code that deals
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62380
diff changeset
4402 PyMem_Free(alt_grouplist);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4403 }
27916
93d44870e8b5 Added test_posix (hopefully it works on Windows).
Neal Norwitz <nnorwitz@gmail.com>
parents: 27826
diff changeset
4404
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
4405 return result;
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
4406 }
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
4407 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
4408
57541
e9dac3eff317 Merged revisions 76636 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 57477
diff changeset
4409 #ifdef HAVE_INITGROUPS
e9dac3eff317 Merged revisions 76636 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 57477
diff changeset
4410 PyDoc_STRVAR(posix_initgroups__doc__,
e9dac3eff317 Merged revisions 76636 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 57477
diff changeset
4411 "initgroups(username, gid) -> None\n\n\
e9dac3eff317 Merged revisions 76636 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 57477
diff changeset
4412 Call the system initgroups() to initialize the group access list with all of\n\
e9dac3eff317 Merged revisions 76636 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 57477
diff changeset
4413 the groups of which the specified username is a member, plus the specified\n\
e9dac3eff317 Merged revisions 76636 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 57477
diff changeset
4414 group id.");
e9dac3eff317 Merged revisions 76636 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 57477
diff changeset
4415
e9dac3eff317 Merged revisions 76636 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 57477
diff changeset
4416 static PyObject *
e9dac3eff317 Merged revisions 76636 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 57477
diff changeset
4417 posix_initgroups(PyObject *self, PyObject *args)
e9dac3eff317 Merged revisions 76636 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 57477
diff changeset
4418 {
64033
8f2f058b7d89 Issue #9604: posix.initgroups() encodes the username using the fileystem
Victor Stinner <victor.stinner@haypocalc.com>
parents: 64031
diff changeset
4419 PyObject *oname;
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4420 char *username;
64033
8f2f058b7d89 Issue #9604: posix.initgroups() encodes the username using the fileystem
Victor Stinner <victor.stinner@haypocalc.com>
parents: 64031
diff changeset
4421 int res;
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4422 long gid;
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4423
64033
8f2f058b7d89 Issue #9604: posix.initgroups() encodes the username using the fileystem
Victor Stinner <victor.stinner@haypocalc.com>
parents: 64031
diff changeset
4424 if (!PyArg_ParseTuple(args, "O&l:initgroups",
8f2f058b7d89 Issue #9604: posix.initgroups() encodes the username using the fileystem
Victor Stinner <victor.stinner@haypocalc.com>
parents: 64031
diff changeset
4425 PyUnicode_FSConverter, &oname, &gid))
8f2f058b7d89 Issue #9604: posix.initgroups() encodes the username using the fileystem
Victor Stinner <victor.stinner@haypocalc.com>
parents: 64031
diff changeset
4426 return NULL;
8f2f058b7d89 Issue #9604: posix.initgroups() encodes the username using the fileystem
Victor Stinner <victor.stinner@haypocalc.com>
parents: 64031
diff changeset
4427 username = PyBytes_AS_STRING(oname);
8f2f058b7d89 Issue #9604: posix.initgroups() encodes the username using the fileystem
Victor Stinner <victor.stinner@haypocalc.com>
parents: 64031
diff changeset
4428
8f2f058b7d89 Issue #9604: posix.initgroups() encodes the username using the fileystem
Victor Stinner <victor.stinner@haypocalc.com>
parents: 64031
diff changeset
4429 res = initgroups(username, (gid_t) gid);
8f2f058b7d89 Issue #9604: posix.initgroups() encodes the username using the fileystem
Victor Stinner <victor.stinner@haypocalc.com>
parents: 64031
diff changeset
4430 Py_DECREF(oname);
8f2f058b7d89 Issue #9604: posix.initgroups() encodes the username using the fileystem
Victor Stinner <victor.stinner@haypocalc.com>
parents: 64031
diff changeset
4431 if (res == -1)
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4432 return PyErr_SetFromErrno(PyExc_OSError);
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4433
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4434 Py_INCREF(Py_None);
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4435 return Py_None;
57541
e9dac3eff317 Merged revisions 76636 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 57477
diff changeset
4436 }
e9dac3eff317 Merged revisions 76636 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 57477
diff changeset
4437 #endif
e9dac3eff317 Merged revisions 76636 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 57477
diff changeset
4438
23833
9f0ad0eb61f0 Patch #568235: Add posix.setpgid.
Martin v. Löwis <martin@v.loewis.de>
parents: 23832
diff changeset
4439 #ifdef HAVE_GETPGID
23836
065a7f23be2f Use new PyDoc_STRVAR macro
Neal Norwitz <nnorwitz@gmail.com>
parents: 23833
diff changeset
4440 PyDoc_STRVAR(posix_getpgid__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
4441 "getpgid(pid) -> pgid\n\n\
23836
065a7f23be2f Use new PyDoc_STRVAR macro
Neal Norwitz <nnorwitz@gmail.com>
parents: 23833
diff changeset
4442 Call the system call getpgid().");
23833
9f0ad0eb61f0 Patch #568235: Add posix.setpgid.
Martin v. Löwis <martin@v.loewis.de>
parents: 23832
diff changeset
4443
9f0ad0eb61f0 Patch #568235: Add posix.setpgid.
Martin v. Löwis <martin@v.loewis.de>
parents: 23832
diff changeset
4444 static PyObject *
9f0ad0eb61f0 Patch #568235: Add posix.setpgid.
Martin v. Löwis <martin@v.loewis.de>
parents: 23832
diff changeset
4445 posix_getpgid(PyObject *self, PyObject *args)
9f0ad0eb61f0 Patch #568235: Add posix.setpgid.
Martin v. Löwis <martin@v.loewis.de>
parents: 23832
diff changeset
4446 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4447 pid_t pid, pgid;
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4448 if (!PyArg_ParseTuple(args, _Py_PARSE_PID ":getpgid", &pid))
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4449 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4450 pgid = getpgid(pid);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4451 if (pgid < 0)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4452 return posix_error();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4453 return PyLong_FromPid(pgid);
23833
9f0ad0eb61f0 Patch #568235: Add posix.setpgid.
Martin v. Löwis <martin@v.loewis.de>
parents: 23832
diff changeset
4454 }
9f0ad0eb61f0 Patch #568235: Add posix.setpgid.
Martin v. Löwis <martin@v.loewis.de>
parents: 23832
diff changeset
4455 #endif /* HAVE_GETPGID */
9f0ad0eb61f0 Patch #568235: Add posix.setpgid.
Martin v. Löwis <martin@v.loewis.de>
parents: 23832
diff changeset
4456
9f0ad0eb61f0 Patch #568235: Add posix.setpgid.
Martin v. Löwis <martin@v.loewis.de>
parents: 23832
diff changeset
4457
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
4458 #ifdef HAVE_GETPGRP
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
4459 PyDoc_STRVAR(posix_getpgrp__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
4460 "getpgrp() -> pgrp\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
4461 Return the current process group id.");
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
4462
4672
5b53268f547a Renamed.
Barry Warsaw <barry@python.org>
parents: 4600
diff changeset
4463 static PyObject *
27916
93d44870e8b5 Added test_posix (hopefully it works on Windows).
Neal Norwitz <nnorwitz@gmail.com>
parents: 27826
diff changeset
4464 posix_getpgrp(PyObject *self, PyObject *noargs)
93d44870e8b5 Added test_posix (hopefully it works on Windows).
Neal Norwitz <nnorwitz@gmail.com>
parents: 27826
diff changeset
4465 {
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
4466 #ifdef GETPGRP_HAVE_ARG
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4467 return PyLong_FromPid(getpgrp(0));
1792
a584b4bbbc59 Changes to make it work and compile on NT, by Mark Hammond.
Guido van Rossum <guido@python.org>
parents: 1746
diff changeset
4468 #else /* GETPGRP_HAVE_ARG */
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4469 return PyLong_FromPid(getpgrp());
1792
a584b4bbbc59 Changes to make it work and compile on NT, by Mark Hammond.
Guido van Rossum <guido@python.org>
parents: 1746
diff changeset
4470 #endif /* GETPGRP_HAVE_ARG */
273
af1c8f5d0b37 Added getpgrp(); fixed buggy calls to getnoarg().
Guido van Rossum <guido@python.org>
parents: 264
diff changeset
4471 }
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
4472 #endif /* HAVE_GETPGRP */
273
af1c8f5d0b37 Added getpgrp(); fixed buggy calls to getnoarg().
Guido van Rossum <guido@python.org>
parents: 264
diff changeset
4473
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
4474
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
4475 #ifdef HAVE_SETPGRP
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
4476 PyDoc_STRVAR(posix_setpgrp__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
4477 "setpgrp()\n\n\
62380
c2e73d844d82 Merged revisions 82049 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 61580
diff changeset
4478 Make this process the process group leader.");
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
4479
4672
5b53268f547a Renamed.
Barry Warsaw <barry@python.org>
parents: 4600
diff changeset
4480 static PyObject *
27916
93d44870e8b5 Added test_posix (hopefully it works on Windows).
Neal Norwitz <nnorwitz@gmail.com>
parents: 27826
diff changeset
4481 posix_setpgrp(PyObject *self, PyObject *noargs)
93d44870e8b5 Added test_posix (hopefully it works on Windows).
Neal Norwitz <nnorwitz@gmail.com>
parents: 27826
diff changeset
4482 {
1983
80bd7af73201 distinguish between getpgrp and setpgrp arg requirements
Guido van Rossum <guido@python.org>
parents: 1915
diff changeset
4483 #ifdef SETPGRP_HAVE_ARG
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4484 if (setpgrp(0, 0) < 0)
1983
80bd7af73201 distinguish between getpgrp and setpgrp arg requirements
Guido van Rossum <guido@python.org>
parents: 1915
diff changeset
4485 #else /* SETPGRP_HAVE_ARG */
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4486 if (setpgrp() < 0)
1983
80bd7af73201 distinguish between getpgrp and setpgrp arg requirements
Guido van Rossum <guido@python.org>
parents: 1915
diff changeset
4487 #endif /* SETPGRP_HAVE_ARG */
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4488 return posix_error();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4489 Py_INCREF(Py_None);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4490 return Py_None;
1050
f49d2311776b posix: added setpgrp() and, if sgi, setsid() and setpgid(pid, pgid)
Guido van Rossum <guido@python.org>
parents: 943
diff changeset
4491 }
f49d2311776b posix: added setpgrp() and, if sgi, setsid() and setpgid(pid, pgid)
Guido van Rossum <guido@python.org>
parents: 943
diff changeset
4492
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
4493 #endif /* HAVE_SETPGRP */
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
4494
2456
bc03225a4493 changes for NT/Borland C
Guido van Rossum <guido@python.org>
parents: 2370
diff changeset
4495 #ifdef HAVE_GETPPID
64537
5d73b036573b #6394: Add os.getppid() support for Windows.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 64495
diff changeset
4496
5d73b036573b #6394: Add os.getppid() support for Windows.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 64495
diff changeset
4497 #ifdef MS_WINDOWS
5d73b036573b #6394: Add os.getppid() support for Windows.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 64495
diff changeset
4498 #include <tlhelp32.h>
5d73b036573b #6394: Add os.getppid() support for Windows.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 64495
diff changeset
4499
5d73b036573b #6394: Add os.getppid() support for Windows.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 64495
diff changeset
4500 static PyObject*
5d73b036573b #6394: Add os.getppid() support for Windows.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 64495
diff changeset
4501 win32_getppid()
5d73b036573b #6394: Add os.getppid() support for Windows.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 64495
diff changeset
4502 {
5d73b036573b #6394: Add os.getppid() support for Windows.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 64495
diff changeset
4503 HANDLE snapshot;
5d73b036573b #6394: Add os.getppid() support for Windows.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 64495
diff changeset
4504 pid_t mypid;
5d73b036573b #6394: Add os.getppid() support for Windows.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 64495
diff changeset
4505 PyObject* result = NULL;
5d73b036573b #6394: Add os.getppid() support for Windows.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 64495
diff changeset
4506 BOOL have_record;
5d73b036573b #6394: Add os.getppid() support for Windows.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 64495
diff changeset
4507 PROCESSENTRY32 pe;
5d73b036573b #6394: Add os.getppid() support for Windows.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 64495
diff changeset
4508
5d73b036573b #6394: Add os.getppid() support for Windows.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 64495
diff changeset
4509 mypid = getpid(); /* This function never fails */
5d73b036573b #6394: Add os.getppid() support for Windows.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 64495
diff changeset
4510
5d73b036573b #6394: Add os.getppid() support for Windows.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 64495
diff changeset
4511 snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
5d73b036573b #6394: Add os.getppid() support for Windows.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 64495
diff changeset
4512 if (snapshot == INVALID_HANDLE_VALUE)
5d73b036573b #6394: Add os.getppid() support for Windows.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 64495
diff changeset
4513 return PyErr_SetFromWindowsErr(GetLastError());
5d73b036573b #6394: Add os.getppid() support for Windows.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 64495
diff changeset
4514
5d73b036573b #6394: Add os.getppid() support for Windows.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 64495
diff changeset
4515 pe.dwSize = sizeof(pe);
5d73b036573b #6394: Add os.getppid() support for Windows.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 64495
diff changeset
4516 have_record = Process32First(snapshot, &pe);
5d73b036573b #6394: Add os.getppid() support for Windows.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 64495
diff changeset
4517 while (have_record) {
5d73b036573b #6394: Add os.getppid() support for Windows.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 64495
diff changeset
4518 if (mypid == (pid_t)pe.th32ProcessID) {
5d73b036573b #6394: Add os.getppid() support for Windows.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 64495
diff changeset
4519 /* We could cache the ulong value in a static variable. */
5d73b036573b #6394: Add os.getppid() support for Windows.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 64495
diff changeset
4520 result = PyLong_FromPid((pid_t)pe.th32ParentProcessID);
5d73b036573b #6394: Add os.getppid() support for Windows.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 64495
diff changeset
4521 break;
5d73b036573b #6394: Add os.getppid() support for Windows.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 64495
diff changeset
4522 }
5d73b036573b #6394: Add os.getppid() support for Windows.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 64495
diff changeset
4523
5d73b036573b #6394: Add os.getppid() support for Windows.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 64495
diff changeset
4524 have_record = Process32Next(snapshot, &pe);
5d73b036573b #6394: Add os.getppid() support for Windows.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 64495
diff changeset
4525 }
5d73b036573b #6394: Add os.getppid() support for Windows.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 64495
diff changeset
4526
5d73b036573b #6394: Add os.getppid() support for Windows.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 64495
diff changeset
4527 /* If our loop exits and our pid was not found (result will be NULL)
5d73b036573b #6394: Add os.getppid() support for Windows.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 64495
diff changeset
4528 * then GetLastError will return ERROR_NO_MORE_FILES. This is an
5d73b036573b #6394: Add os.getppid() support for Windows.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 64495
diff changeset
4529 * error anyway, so let's raise it. */
5d73b036573b #6394: Add os.getppid() support for Windows.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 64495
diff changeset
4530 if (!result)
5d73b036573b #6394: Add os.getppid() support for Windows.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 64495
diff changeset
4531 result = PyErr_SetFromWindowsErr(GetLastError());
5d73b036573b #6394: Add os.getppid() support for Windows.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 64495
diff changeset
4532
5d73b036573b #6394: Add os.getppid() support for Windows.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 64495
diff changeset
4533 CloseHandle(snapshot);
5d73b036573b #6394: Add os.getppid() support for Windows.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 64495
diff changeset
4534
5d73b036573b #6394: Add os.getppid() support for Windows.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 64495
diff changeset
4535 return result;
5d73b036573b #6394: Add os.getppid() support for Windows.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 64495
diff changeset
4536 }
5d73b036573b #6394: Add os.getppid() support for Windows.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 64495
diff changeset
4537 #endif /*MS_WINDOWS*/
5d73b036573b #6394: Add os.getppid() support for Windows.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 64495
diff changeset
4538
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
4539 PyDoc_STRVAR(posix_getppid__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
4540 "getppid() -> ppid\n\n\
64537
5d73b036573b #6394: Add os.getppid() support for Windows.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 64495
diff changeset
4541 Return the parent's process id. If the parent process has already exited,\n\
5d73b036573b #6394: Add os.getppid() support for Windows.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 64495
diff changeset
4542 Windows machines will still return its id; others systems will return the id\n\
5d73b036573b #6394: Add os.getppid() support for Windows.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 64495
diff changeset
4543 of the 'init' process (1).");
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
4544
4672
5b53268f547a Renamed.
Barry Warsaw <barry@python.org>
parents: 4600
diff changeset
4545 static PyObject *
27916
93d44870e8b5 Added test_posix (hopefully it works on Windows).
Neal Norwitz <nnorwitz@gmail.com>
parents: 27826
diff changeset
4546 posix_getppid(PyObject *self, PyObject *noargs)
93d44870e8b5 Added test_posix (hopefully it works on Windows).
Neal Norwitz <nnorwitz@gmail.com>
parents: 27826
diff changeset
4547 {
64537
5d73b036573b #6394: Add os.getppid() support for Windows.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 64495
diff changeset
4548 #ifdef MS_WINDOWS
5d73b036573b #6394: Add os.getppid() support for Windows.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 64495
diff changeset
4549 return win32_getppid();
5d73b036573b #6394: Add os.getppid() support for Windows.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 64495
diff changeset
4550 #else
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4551 return PyLong_FromPid(getppid());
64537
5d73b036573b #6394: Add os.getppid() support for Windows.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 64495
diff changeset
4552 #endif
5d73b036573b #6394: Add os.getppid() support for Windows.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 64495
diff changeset
4553 }
5d73b036573b #6394: Add os.getppid() support for Windows.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 64495
diff changeset
4554 #endif /* HAVE_GETPPID */
257
a46558ad0bed Removed utimes() compatibility hack.
Guido van Rossum <guido@python.org>
parents: 200
diff changeset
4555
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
4556
11570
885820fa7e31 Added support for getlogin(); does *not* use getlogin_r() where
Fred Drake <fdrake@acm.org>
parents: 11560
diff changeset
4557 #ifdef HAVE_GETLOGIN
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
4558 PyDoc_STRVAR(posix_getlogin__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
4559 "getlogin() -> string\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
4560 Return the actual login name.");
11570
885820fa7e31 Added support for getlogin(); does *not* use getlogin_r() where
Fred Drake <fdrake@acm.org>
parents: 11560
diff changeset
4561
885820fa7e31 Added support for getlogin(); does *not* use getlogin_r() where
Fred Drake <fdrake@acm.org>
parents: 11560
diff changeset
4562 static PyObject *
27916
93d44870e8b5 Added test_posix (hopefully it works on Windows).
Neal Norwitz <nnorwitz@gmail.com>
parents: 27826
diff changeset
4563 posix_getlogin(PyObject *self, PyObject *noargs)
93d44870e8b5 Added test_posix (hopefully it works on Windows).
Neal Norwitz <nnorwitz@gmail.com>
parents: 27826
diff changeset
4564 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4565 PyObject *result = NULL;
70840
f6d6afe53385 posixmodule.c: fix function name in argument parsing
Victor Stinner <victor.stinner@haypocalc.com>
parents: 70815
diff changeset
4566 #ifdef MS_WINDOWS
64913
d088faa35456 #9808. Implement os.getlogin for Windows, completed by Jon Anglin.
Brian Curtin <brian.curtin@gmail.com>
parents: 64886
diff changeset
4567 wchar_t user_name[UNLEN + 1];
d088faa35456 #9808. Implement os.getlogin for Windows, completed by Jon Anglin.
Brian Curtin <brian.curtin@gmail.com>
parents: 64886
diff changeset
4568 DWORD num_chars = sizeof(user_name)/sizeof(user_name[0]);
d088faa35456 #9808. Implement os.getlogin for Windows, completed by Jon Anglin.
Brian Curtin <brian.curtin@gmail.com>
parents: 64886
diff changeset
4569
d088faa35456 #9808. Implement os.getlogin for Windows, completed by Jon Anglin.
Brian Curtin <brian.curtin@gmail.com>
parents: 64886
diff changeset
4570 if (GetUserNameW(user_name, &num_chars)) {
d088faa35456 #9808. Implement os.getlogin for Windows, completed by Jon Anglin.
Brian Curtin <brian.curtin@gmail.com>
parents: 64886
diff changeset
4571 /* num_chars is the number of unicode chars plus null terminator */
d088faa35456 #9808. Implement os.getlogin for Windows, completed by Jon Anglin.
Brian Curtin <brian.curtin@gmail.com>
parents: 64886
diff changeset
4572 result = PyUnicode_FromWideChar(user_name, num_chars - 1);
70840
f6d6afe53385 posixmodule.c: fix function name in argument parsing
Victor Stinner <victor.stinner@haypocalc.com>
parents: 70815
diff changeset
4573 }
f6d6afe53385 posixmodule.c: fix function name in argument parsing
Victor Stinner <victor.stinner@haypocalc.com>
parents: 70815
diff changeset
4574 else
64913
d088faa35456 #9808. Implement os.getlogin for Windows, completed by Jon Anglin.
Brian Curtin <brian.curtin@gmail.com>
parents: 64886
diff changeset
4575 result = PyErr_SetFromWindowsErr(GetLastError());
d088faa35456 #9808. Implement os.getlogin for Windows, completed by Jon Anglin.
Brian Curtin <brian.curtin@gmail.com>
parents: 64886
diff changeset
4576 #else
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4577 char *name;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4578 int old_errno = errno;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4579
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4580 errno = 0;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4581 name = getlogin();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4582 if (name == NULL) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4583 if (errno)
64035
7a1adbec0db8 Merged revisions 84063 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 64032
diff changeset
4584 posix_error();
11570
885820fa7e31 Added support for getlogin(); does *not* use getlogin_r() where
Fred Drake <fdrake@acm.org>
parents: 11560
diff changeset
4585 else
64035
7a1adbec0db8 Merged revisions 84063 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 64032
diff changeset
4586 PyErr_SetString(PyExc_OSError, "unable to determine login name");
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4587 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4588 else
64035
7a1adbec0db8 Merged revisions 84063 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 64032
diff changeset
4589 result = PyUnicode_DecodeFSDefault(name);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4590 errno = old_errno;
64913
d088faa35456 #9808. Implement os.getlogin for Windows, completed by Jon Anglin.
Brian Curtin <brian.curtin@gmail.com>
parents: 64886
diff changeset
4591 #endif
11570
885820fa7e31 Added support for getlogin(); does *not* use getlogin_r() where
Fred Drake <fdrake@acm.org>
parents: 11560
diff changeset
4592 return result;
885820fa7e31 Added support for getlogin(); does *not* use getlogin_r() where
Fred Drake <fdrake@acm.org>
parents: 11560
diff changeset
4593 }
64913
d088faa35456 #9808. Implement os.getlogin for Windows, completed by Jon Anglin.
Brian Curtin <brian.curtin@gmail.com>
parents: 64886
diff changeset
4594 #endif /* HAVE_GETLOGIN */
11570
885820fa7e31 Added support for getlogin(); does *not* use getlogin_r() where
Fred Drake <fdrake@acm.org>
parents: 11560
diff changeset
4595
2456
bc03225a4493 changes for NT/Borland C
Guido van Rossum <guido@python.org>
parents: 2370
diff changeset
4596 #ifdef HAVE_GETUID
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
4597 PyDoc_STRVAR(posix_getuid__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
4598 "getuid() -> uid\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
4599 Return the current process's user id.");
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
4600
4672
5b53268f547a Renamed.
Barry Warsaw <barry@python.org>
parents: 4600
diff changeset
4601 static PyObject *
27916
93d44870e8b5 Added test_posix (hopefully it works on Windows).
Neal Norwitz <nnorwitz@gmail.com>
parents: 27826
diff changeset
4602 posix_getuid(PyObject *self, PyObject *noargs)
93d44870e8b5 Added test_posix (hopefully it works on Windows).
Neal Norwitz <nnorwitz@gmail.com>
parents: 27826
diff changeset
4603 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4604 return PyLong_FromLong((long)getuid());
861
76095a8b96ca Added gete?[gu]id functions
Guido van Rossum <guido@python.org>
parents: 793
diff changeset
4605 }
2456
bc03225a4493 changes for NT/Borland C
Guido van Rossum <guido@python.org>
parents: 2370
diff changeset
4606 #endif
861
76095a8b96ca Added gete?[gu]id functions
Guido van Rossum <guido@python.org>
parents: 793
diff changeset
4607
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
4608
2456
bc03225a4493 changes for NT/Borland C
Guido van Rossum <guido@python.org>
parents: 2370
diff changeset
4609 #ifdef HAVE_KILL
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
4610 PyDoc_STRVAR(posix_kill__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
4611 "kill(pid, sig)\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
4612 Kill a process with a signal.");
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
4613
4672
5b53268f547a Renamed.
Barry Warsaw <barry@python.org>
parents: 4600
diff changeset
4614 static PyObject *
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
4615 posix_kill(PyObject *self, PyObject *args)
257
a46558ad0bed Removed utimes() compatibility hack.
Guido van Rossum <guido@python.org>
parents: 200
diff changeset
4616 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4617 pid_t pid;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4618 int sig;
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4619 if (!PyArg_ParseTuple(args, _Py_PARSE_PID "i:kill", &pid, &sig))
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4620 return NULL;
22116
0c4230269ed3 OS/2 EMX port changes (Modules part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 21966
diff changeset
4621 #if defined(PYOS_OS2) && !defined(PYCC_GCC)
6626
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
4622 if (sig == XCPT_SIGNAL_INTR || sig == XCPT_SIGNAL_BREAK) {
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
4623 APIRET rc;
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
4624 if ((rc = DosSendSignalException(pid, sig)) != NO_ERROR)
6766
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
4625 return os2_error(rc);
6626
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
4626
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
4627 } else if (sig == XCPT_SIGNAL_KILLPROC) {
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
4628 APIRET rc;
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
4629 if ((rc = DosKillProcess(DKP_PROCESS, pid)) != NO_ERROR)
6766
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
4630 return os2_error(rc);
6626
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
4631
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
4632 } else
6717
64a75211cf72 Patch for QNX, by Chris Herborth. Also left-aligned preprocessor
Guido van Rossum <guido@python.org>
parents: 6626
diff changeset
4633 return NULL; /* Unrecognized Signal Requested */
6626
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
4634 #else
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4635 if (kill(pid, sig) == -1)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4636 return posix_error();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4637 #endif
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4638 Py_INCREF(Py_None);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4639 return Py_None;
257
a46558ad0bed Removed utimes() compatibility hack.
Guido van Rossum <guido@python.org>
parents: 200
diff changeset
4640 }
2456
bc03225a4493 changes for NT/Borland C
Guido van Rossum <guido@python.org>
parents: 2370
diff changeset
4641 #endif
257
a46558ad0bed Removed utimes() compatibility hack.
Guido van Rossum <guido@python.org>
parents: 200
diff changeset
4642
21966
9c402523f8f5 Patch #511193: Implement killpg in posixmodule.
Martin v. Löwis <martin@v.loewis.de>
parents: 21859
diff changeset
4643 #ifdef HAVE_KILLPG
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
4644 PyDoc_STRVAR(posix_killpg__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
4645 "killpg(pgid, sig)\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
4646 Kill a process group with a signal.");
21966
9c402523f8f5 Patch #511193: Implement killpg in posixmodule.
Martin v. Löwis <martin@v.loewis.de>
parents: 21859
diff changeset
4647
9c402523f8f5 Patch #511193: Implement killpg in posixmodule.
Martin v. Löwis <martin@v.loewis.de>
parents: 21859
diff changeset
4648 static PyObject *
9c402523f8f5 Patch #511193: Implement killpg in posixmodule.
Martin v. Löwis <martin@v.loewis.de>
parents: 21859
diff changeset
4649 posix_killpg(PyObject *self, PyObject *args)
9c402523f8f5 Patch #511193: Implement killpg in posixmodule.
Martin v. Löwis <martin@v.loewis.de>
parents: 21859
diff changeset
4650 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4651 int sig;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4652 pid_t pgid;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4653 /* XXX some man pages make the `pgid` parameter an int, others
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4654 a pid_t. Since getpgrp() returns a pid_t, we assume killpg should
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4655 take the same type. Moreover, pid_t is always at least as wide as
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4656 int (else compilation of this module fails), which is safe. */
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4657 if (!PyArg_ParseTuple(args, _Py_PARSE_PID "i:killpg", &pgid, &sig))
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4658 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4659 if (killpg(pgid, sig) == -1)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4660 return posix_error();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4661 Py_INCREF(Py_None);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4662 return Py_None;
21966
9c402523f8f5 Patch #511193: Implement killpg in posixmodule.
Martin v. Löwis <martin@v.loewis.de>
parents: 21859
diff changeset
4663 }
9c402523f8f5 Patch #511193: Implement killpg in posixmodule.
Martin v. Löwis <martin@v.loewis.de>
parents: 21859
diff changeset
4664 #endif
9c402523f8f5 Patch #511193: Implement killpg in posixmodule.
Martin v. Löwis <martin@v.loewis.de>
parents: 21859
diff changeset
4665
60556
a2f5b3b19eb2 Port #1220212 (os.kill for Win32) to py3k.
Brian Curtin <brian.curtin@gmail.com>
parents: 59625
diff changeset
4666 #ifdef MS_WINDOWS
a2f5b3b19eb2 Port #1220212 (os.kill for Win32) to py3k.
Brian Curtin <brian.curtin@gmail.com>
parents: 59625
diff changeset
4667 PyDoc_STRVAR(win32_kill__doc__,
a2f5b3b19eb2 Port #1220212 (os.kill for Win32) to py3k.
Brian Curtin <brian.curtin@gmail.com>
parents: 59625
diff changeset
4668 "kill(pid, sig)\n\n\
a2f5b3b19eb2 Port #1220212 (os.kill for Win32) to py3k.
Brian Curtin <brian.curtin@gmail.com>
parents: 59625
diff changeset
4669 Kill a process with a signal.");
a2f5b3b19eb2 Port #1220212 (os.kill for Win32) to py3k.
Brian Curtin <brian.curtin@gmail.com>
parents: 59625
diff changeset
4670
a2f5b3b19eb2 Port #1220212 (os.kill for Win32) to py3k.
Brian Curtin <brian.curtin@gmail.com>
parents: 59625
diff changeset
4671 static PyObject *
a2f5b3b19eb2 Port #1220212 (os.kill for Win32) to py3k.
Brian Curtin <brian.curtin@gmail.com>
parents: 59625
diff changeset
4672 win32_kill(PyObject *self, PyObject *args)
a2f5b3b19eb2 Port #1220212 (os.kill for Win32) to py3k.
Brian Curtin <brian.curtin@gmail.com>
parents: 59625
diff changeset
4673 {
61607
99383f1bc17c Remove unused variable, and fix a compilation warning on Windows.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 61578
diff changeset
4674 PyObject *result;
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4675 DWORD pid, sig, err;
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4676 HANDLE handle;
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4677
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4678 if (!PyArg_ParseTuple(args, "kk:kill", &pid, &sig))
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4679 return NULL;
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4680
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4681 /* Console processes which share a common console can be sent CTRL+C or
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4682 CTRL+BREAK events, provided they handle said events. */
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4683 if (sig == CTRL_C_EVENT || sig == CTRL_BREAK_EVENT) {
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4684 if (GenerateConsoleCtrlEvent(sig, pid) == 0) {
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4685 err = GetLastError();
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4686 PyErr_SetFromWindowsErr(err);
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4687 }
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4688 else
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4689 Py_RETURN_NONE;
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4690 }
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4691
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4692 /* If the signal is outside of what GenerateConsoleCtrlEvent can use,
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4693 attempt to open and terminate the process. */
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4694 handle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4695 if (handle == NULL) {
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4696 err = GetLastError();
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4697 return PyErr_SetFromWindowsErr(err);
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4698 }
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4699
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4700 if (TerminateProcess(handle, sig) == 0) {
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4701 err = GetLastError();
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4702 result = PyErr_SetFromWindowsErr(err);
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4703 } else {
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4704 Py_INCREF(Py_None);
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4705 result = Py_None;
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4706 }
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4707
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4708 CloseHandle(handle);
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
4709 return result;
60556
a2f5b3b19eb2 Port #1220212 (os.kill for Win32) to py3k.
Brian Curtin <brian.curtin@gmail.com>
parents: 59625
diff changeset
4710 }
a2f5b3b19eb2 Port #1220212 (os.kill for Win32) to py3k.
Brian Curtin <brian.curtin@gmail.com>
parents: 59625
diff changeset
4711 #endif /* MS_WINDOWS */
a2f5b3b19eb2 Port #1220212 (os.kill for Win32) to py3k.
Brian Curtin <brian.curtin@gmail.com>
parents: 59625
diff changeset
4712
3735
4692cb46008e Added plock() system call.
Guido van Rossum <guido@python.org>
parents: 3702
diff changeset
4713 #ifdef HAVE_PLOCK
4692cb46008e Added plock() system call.
Guido van Rossum <guido@python.org>
parents: 3702
diff changeset
4714
4692cb46008e Added plock() system call.
Guido van Rossum <guido@python.org>
parents: 3702
diff changeset
4715 #ifdef HAVE_SYS_LOCK_H
4692cb46008e Added plock() system call.
Guido van Rossum <guido@python.org>
parents: 3702
diff changeset
4716 #include <sys/lock.h>
4692cb46008e Added plock() system call.
Guido van Rossum <guido@python.org>
parents: 3702
diff changeset
4717 #endif
4692cb46008e Added plock() system call.
Guido van Rossum <guido@python.org>
parents: 3702
diff changeset
4718
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
4719 PyDoc_STRVAR(posix_plock__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
4720 "plock(op)\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
4721 Lock program segments into memory.");
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
4722
4672
5b53268f547a Renamed.
Barry Warsaw <barry@python.org>
parents: 4600
diff changeset
4723 static PyObject *
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
4724 posix_plock(PyObject *self, PyObject *args)
3735
4692cb46008e Added plock() system call.
Guido van Rossum <guido@python.org>
parents: 3702
diff changeset
4725 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4726 int op;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4727 if (!PyArg_ParseTuple(args, "i:plock", &op))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4728 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4729 if (plock(op) == -1)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4730 return posix_error();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4731 Py_INCREF(Py_None);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4732 return Py_None;
3735
4692cb46008e Added plock() system call.
Guido van Rossum <guido@python.org>
parents: 3702
diff changeset
4733 }
4692cb46008e Added plock() system call.
Guido van Rossum <guido@python.org>
parents: 3702
diff changeset
4734 #endif
4692cb46008e Added plock() system call.
Guido van Rossum <guido@python.org>
parents: 3702
diff changeset
4735
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
4736 #ifdef HAVE_SETUID
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
4737 PyDoc_STRVAR(posix_setuid__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
4738 "setuid(uid)\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
4739 Set the current process's user id.");
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
4740
4672
5b53268f547a Renamed.
Barry Warsaw <barry@python.org>
parents: 4600
diff changeset
4741 static PyObject *
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
4742 posix_setuid(PyObject *self, PyObject *args)
1405
90c5e2bb4da5 * posixmodule.c: added set{uid,gid}.
Guido van Rossum <guido@python.org>
parents: 1395
diff changeset
4743 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4744 long uid_arg;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4745 uid_t uid;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4746 if (!PyArg_ParseTuple(args, "l:setuid", &uid_arg))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4747 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4748 uid = uid_arg;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4749 if (uid != uid_arg) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4750 PyErr_SetString(PyExc_OverflowError, "user id too big");
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4751 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4752 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4753 if (setuid(uid) < 0)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4754 return posix_error();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4755 Py_INCREF(Py_None);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4756 return Py_None;
1405
90c5e2bb4da5 * posixmodule.c: added set{uid,gid}.
Guido van Rossum <guido@python.org>
parents: 1395
diff changeset
4757 }
1792
a584b4bbbc59 Changes to make it work and compile on NT, by Mark Hammond.
Guido van Rossum <guido@python.org>
parents: 1746
diff changeset
4758 #endif /* HAVE_SETUID */
1405
90c5e2bb4da5 * posixmodule.c: added set{uid,gid}.
Guido van Rossum <guido@python.org>
parents: 1395
diff changeset
4759
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
4760
13582
084a758051e0 From Sam Rushing's Medusa, via SF patch #100858: add & document
Andrew M. Kuchling <amk@amk.ca>
parents: 13576
diff changeset
4761 #ifdef HAVE_SETEUID
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
4762 PyDoc_STRVAR(posix_seteuid__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
4763 "seteuid(uid)\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
4764 Set the current process's effective user id.");
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
4765
13582
084a758051e0 From Sam Rushing's Medusa, via SF patch #100858: add & document
Andrew M. Kuchling <amk@amk.ca>
parents: 13576
diff changeset
4766 static PyObject *
084a758051e0 From Sam Rushing's Medusa, via SF patch #100858: add & document
Andrew M. Kuchling <amk@amk.ca>
parents: 13576
diff changeset
4767 posix_seteuid (PyObject *self, PyObject *args)
084a758051e0 From Sam Rushing's Medusa, via SF patch #100858: add & document
Andrew M. Kuchling <amk@amk.ca>
parents: 13576
diff changeset
4768 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4769 long euid_arg;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4770 uid_t euid;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4771 if (!PyArg_ParseTuple(args, "l", &euid_arg))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4772 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4773 euid = euid_arg;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4774 if (euid != euid_arg) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4775 PyErr_SetString(PyExc_OverflowError, "user id too big");
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4776 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4777 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4778 if (seteuid(euid) < 0) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4779 return posix_error();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4780 } else {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4781 Py_INCREF(Py_None);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4782 return Py_None;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4783 }
13582
084a758051e0 From Sam Rushing's Medusa, via SF patch #100858: add & document
Andrew M. Kuchling <amk@amk.ca>
parents: 13576
diff changeset
4784 }
084a758051e0 From Sam Rushing's Medusa, via SF patch #100858: add & document
Andrew M. Kuchling <amk@amk.ca>
parents: 13576
diff changeset
4785 #endif /* HAVE_SETEUID */
084a758051e0 From Sam Rushing's Medusa, via SF patch #100858: add & document
Andrew M. Kuchling <amk@amk.ca>
parents: 13576
diff changeset
4786
084a758051e0 From Sam Rushing's Medusa, via SF patch #100858: add & document
Andrew M. Kuchling <amk@amk.ca>
parents: 13576
diff changeset
4787 #ifdef HAVE_SETEGID
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
4788 PyDoc_STRVAR(posix_setegid__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
4789 "setegid(gid)\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
4790 Set the current process's effective group id.");
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
4791
13582
084a758051e0 From Sam Rushing's Medusa, via SF patch #100858: add & document
Andrew M. Kuchling <amk@amk.ca>
parents: 13576
diff changeset
4792 static PyObject *
084a758051e0 From Sam Rushing's Medusa, via SF patch #100858: add & document
Andrew M. Kuchling <amk@amk.ca>
parents: 13576
diff changeset
4793 posix_setegid (PyObject *self, PyObject *args)
084a758051e0 From Sam Rushing's Medusa, via SF patch #100858: add & document
Andrew M. Kuchling <amk@amk.ca>
parents: 13576
diff changeset
4794 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4795 long egid_arg;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4796 gid_t egid;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4797 if (!PyArg_ParseTuple(args, "l", &egid_arg))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4798 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4799 egid = egid_arg;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4800 if (egid != egid_arg) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4801 PyErr_SetString(PyExc_OverflowError, "group id too big");
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4802 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4803 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4804 if (setegid(egid) < 0) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4805 return posix_error();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4806 } else {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4807 Py_INCREF(Py_None);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4808 return Py_None;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4809 }
13582
084a758051e0 From Sam Rushing's Medusa, via SF patch #100858: add & document
Andrew M. Kuchling <amk@amk.ca>
parents: 13576
diff changeset
4810 }
084a758051e0 From Sam Rushing's Medusa, via SF patch #100858: add & document
Andrew M. Kuchling <amk@amk.ca>
parents: 13576
diff changeset
4811 #endif /* HAVE_SETEGID */
084a758051e0 From Sam Rushing's Medusa, via SF patch #100858: add & document
Andrew M. Kuchling <amk@amk.ca>
parents: 13576
diff changeset
4812
084a758051e0 From Sam Rushing's Medusa, via SF patch #100858: add & document
Andrew M. Kuchling <amk@amk.ca>
parents: 13576
diff changeset
4813 #ifdef HAVE_SETREUID
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
4814 PyDoc_STRVAR(posix_setreuid__doc__,
31539
b0c6f7c5ade6 Fix docstrings to mention the correct function
Neal Norwitz <nnorwitz@gmail.com>
parents: 31504
diff changeset
4815 "setreuid(ruid, euid)\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
4816 Set the current process's real and effective user ids.");
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
4817
13582
084a758051e0 From Sam Rushing's Medusa, via SF patch #100858: add & document
Andrew M. Kuchling <amk@amk.ca>
parents: 13576
diff changeset
4818 static PyObject *
084a758051e0 From Sam Rushing's Medusa, via SF patch #100858: add & document
Andrew M. Kuchling <amk@amk.ca>
parents: 13576
diff changeset
4819 posix_setreuid (PyObject *self, PyObject *args)
084a758051e0 From Sam Rushing's Medusa, via SF patch #100858: add & document
Andrew M. Kuchling <amk@amk.ca>
parents: 13576
diff changeset
4820 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4821 long ruid_arg, euid_arg;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4822 uid_t ruid, euid;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4823 if (!PyArg_ParseTuple(args, "ll", &ruid_arg, &euid_arg))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4824 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4825 if (ruid_arg == -1)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4826 ruid = (uid_t)-1; /* let the compiler choose how -1 fits */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4827 else
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4828 ruid = ruid_arg; /* otherwise, assign from our long */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4829 if (euid_arg == -1)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4830 euid = (uid_t)-1;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4831 else
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4832 euid = euid_arg;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4833 if ((euid_arg != -1 && euid != euid_arg) ||
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4834 (ruid_arg != -1 && ruid != ruid_arg)) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4835 PyErr_SetString(PyExc_OverflowError, "user id too big");
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4836 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4837 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4838 if (setreuid(ruid, euid) < 0) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4839 return posix_error();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4840 } else {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4841 Py_INCREF(Py_None);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4842 return Py_None;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4843 }
13582
084a758051e0 From Sam Rushing's Medusa, via SF patch #100858: add & document
Andrew M. Kuchling <amk@amk.ca>
parents: 13576
diff changeset
4844 }
084a758051e0 From Sam Rushing's Medusa, via SF patch #100858: add & document
Andrew M. Kuchling <amk@amk.ca>
parents: 13576
diff changeset
4845 #endif /* HAVE_SETREUID */
084a758051e0 From Sam Rushing's Medusa, via SF patch #100858: add & document
Andrew M. Kuchling <amk@amk.ca>
parents: 13576
diff changeset
4846
084a758051e0 From Sam Rushing's Medusa, via SF patch #100858: add & document
Andrew M. Kuchling <amk@amk.ca>
parents: 13576
diff changeset
4847 #ifdef HAVE_SETREGID
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
4848 PyDoc_STRVAR(posix_setregid__doc__,
31539
b0c6f7c5ade6 Fix docstrings to mention the correct function
Neal Norwitz <nnorwitz@gmail.com>
parents: 31504
diff changeset
4849 "setregid(rgid, egid)\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
4850 Set the current process's real and effective group ids.");
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
4851
13582
084a758051e0 From Sam Rushing's Medusa, via SF patch #100858: add & document
Andrew M. Kuchling <amk@amk.ca>
parents: 13576
diff changeset
4852 static PyObject *
084a758051e0 From Sam Rushing's Medusa, via SF patch #100858: add & document
Andrew M. Kuchling <amk@amk.ca>
parents: 13576
diff changeset
4853 posix_setregid (PyObject *self, PyObject *args)
084a758051e0 From Sam Rushing's Medusa, via SF patch #100858: add & document
Andrew M. Kuchling <amk@amk.ca>
parents: 13576
diff changeset
4854 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4855 long rgid_arg, egid_arg;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4856 gid_t rgid, egid;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4857 if (!PyArg_ParseTuple(args, "ll", &rgid_arg, &egid_arg))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4858 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4859 if (rgid_arg == -1)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4860 rgid = (gid_t)-1; /* let the compiler choose how -1 fits */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4861 else
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4862 rgid = rgid_arg; /* otherwise, assign from our long */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4863 if (egid_arg == -1)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4864 egid = (gid_t)-1;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4865 else
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4866 egid = egid_arg;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4867 if ((egid_arg != -1 && egid != egid_arg) ||
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4868 (rgid_arg != -1 && rgid != rgid_arg)) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4869 PyErr_SetString(PyExc_OverflowError, "group id too big");
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4870 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4871 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4872 if (setregid(rgid, egid) < 0) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4873 return posix_error();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4874 } else {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4875 Py_INCREF(Py_None);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4876 return Py_None;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4877 }
13582
084a758051e0 From Sam Rushing's Medusa, via SF patch #100858: add & document
Andrew M. Kuchling <amk@amk.ca>
parents: 13576
diff changeset
4878 }
084a758051e0 From Sam Rushing's Medusa, via SF patch #100858: add & document
Andrew M. Kuchling <amk@amk.ca>
parents: 13576
diff changeset
4879 #endif /* HAVE_SETREGID */
084a758051e0 From Sam Rushing's Medusa, via SF patch #100858: add & document
Andrew M. Kuchling <amk@amk.ca>
parents: 13576
diff changeset
4880
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
4881 #ifdef HAVE_SETGID
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
4882 PyDoc_STRVAR(posix_setgid__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
4883 "setgid(gid)\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
4884 Set the current process's group id.");
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
4885
4672
5b53268f547a Renamed.
Barry Warsaw <barry@python.org>
parents: 4600
diff changeset
4886 static PyObject *
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
4887 posix_setgid(PyObject *self, PyObject *args)
1405
90c5e2bb4da5 * posixmodule.c: added set{uid,gid}.
Guido van Rossum <guido@python.org>
parents: 1395
diff changeset
4888 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4889 long gid_arg;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4890 gid_t gid;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4891 if (!PyArg_ParseTuple(args, "l:setgid", &gid_arg))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4892 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4893 gid = gid_arg;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4894 if (gid != gid_arg) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4895 PyErr_SetString(PyExc_OverflowError, "group id too big");
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4896 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4897 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4898 if (setgid(gid) < 0)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4899 return posix_error();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4900 Py_INCREF(Py_None);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4901 return Py_None;
1405
90c5e2bb4da5 * posixmodule.c: added set{uid,gid}.
Guido van Rossum <guido@python.org>
parents: 1395
diff changeset
4902 }
1792
a584b4bbbc59 Changes to make it work and compile on NT, by Mark Hammond.
Guido van Rossum <guido@python.org>
parents: 1746
diff changeset
4903 #endif /* HAVE_SETGID */
1405
90c5e2bb4da5 * posixmodule.c: added set{uid,gid}.
Guido van Rossum <guido@python.org>
parents: 1395
diff changeset
4904
20508
8e0c31849c64 Expose setgroups. Fixes feature request #468116.
Martin v. Löwis <martin@v.loewis.de>
parents: 20264
diff changeset
4905 #ifdef HAVE_SETGROUPS
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
4906 PyDoc_STRVAR(posix_setgroups__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
4907 "setgroups(list)\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
4908 Set the groups of the current process to list.");
20508
8e0c31849c64 Expose setgroups. Fixes feature request #468116.
Martin v. Löwis <martin@v.loewis.de>
parents: 20264
diff changeset
4909
8e0c31849c64 Expose setgroups. Fixes feature request #468116.
Martin v. Löwis <martin@v.loewis.de>
parents: 20264
diff changeset
4910 static PyObject *
38669
19fd6141940d Partially merge trunk into p3yk. The removal of Mac/Tools is confusing svn
Thomas Wouters <thomas@python.org>
parents: 38453
diff changeset
4911 posix_setgroups(PyObject *self, PyObject *groups)
19fd6141940d Partially merge trunk into p3yk. The removal of Mac/Tools is confusing svn
Thomas Wouters <thomas@python.org>
parents: 38453
diff changeset
4912 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4913 int i, len;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4914 gid_t grouplist[MAX_GROUPS];
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4915
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4916 if (!PySequence_Check(groups)) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4917 PyErr_SetString(PyExc_TypeError, "setgroups argument must be a sequence");
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4918 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4919 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4920 len = PySequence_Size(groups);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4921 if (len > MAX_GROUPS) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4922 PyErr_SetString(PyExc_ValueError, "too many groups");
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4923 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4924 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4925 for(i = 0; i < len; i++) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4926 PyObject *elem;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4927 elem = PySequence_GetItem(groups, i);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4928 if (!elem)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4929 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4930 if (!PyLong_Check(elem)) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4931 PyErr_SetString(PyExc_TypeError,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4932 "groups must be integers");
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4933 Py_DECREF(elem);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4934 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4935 } else {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4936 unsigned long x = PyLong_AsUnsignedLong(elem);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4937 if (PyErr_Occurred()) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4938 PyErr_SetString(PyExc_TypeError,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4939 "group id too big");
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4940 Py_DECREF(elem);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4941 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4942 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4943 grouplist[i] = x;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4944 /* read back the value to see if it fitted in gid_t */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4945 if (grouplist[i] != x) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4946 PyErr_SetString(PyExc_TypeError,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4947 "group id too big");
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4948 Py_DECREF(elem);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4949 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4950 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4951 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4952 Py_DECREF(elem);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4953 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4954
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4955 if (setgroups(len, grouplist) < 0)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4956 return posix_error();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4957 Py_INCREF(Py_None);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4958 return Py_None;
20508
8e0c31849c64 Expose setgroups. Fixes feature request #468116.
Martin v. Löwis <martin@v.loewis.de>
parents: 20264
diff changeset
4959 }
8e0c31849c64 Expose setgroups. Fixes feature request #468116.
Martin v. Löwis <martin@v.loewis.de>
parents: 20264
diff changeset
4960 #endif /* HAVE_SETGROUPS */
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
4961
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36887
diff changeset
4962 #if defined(HAVE_WAIT3) || defined(HAVE_WAIT4)
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36887
diff changeset
4963 static PyObject *
45134
bdcf40d1b38e Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45082
diff changeset
4964 wait_helper(pid_t pid, int status, struct rusage *ru)
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36887
diff changeset
4965 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4966 PyObject *result;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4967 static PyObject *struct_rusage;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4968
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4969 if (pid == -1)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4970 return posix_error();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4971
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4972 if (struct_rusage == NULL) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4973 PyObject *m = PyImport_ImportModuleNoBlock("resource");
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4974 if (m == NULL)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4975 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4976 struct_rusage = PyObject_GetAttrString(m, "struct_rusage");
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4977 Py_DECREF(m);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4978 if (struct_rusage == NULL)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4979 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4980 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4981
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4982 /* XXX(nnorwitz): Copied (w/mods) from resource.c, there should be only one. */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4983 result = PyStructSequence_New((PyTypeObject*) struct_rusage);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4984 if (!result)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4985 return NULL;
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36887
diff changeset
4986
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36887
diff changeset
4987 #ifndef doubletime
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36887
diff changeset
4988 #define doubletime(TV) ((double)(TV).tv_sec + (TV).tv_usec * 0.000001)
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36887
diff changeset
4989 #endif
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36887
diff changeset
4990
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4991 PyStructSequence_SET_ITEM(result, 0,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4992 PyFloat_FromDouble(doubletime(ru->ru_utime)));
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4993 PyStructSequence_SET_ITEM(result, 1,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4994 PyFloat_FromDouble(doubletime(ru->ru_stime)));
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36887
diff changeset
4995 #define SET_INT(result, index, value)\
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4996 PyStructSequence_SET_ITEM(result, index, PyLong_FromLong(value))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4997 SET_INT(result, 2, ru->ru_maxrss);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4998 SET_INT(result, 3, ru->ru_ixrss);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
4999 SET_INT(result, 4, ru->ru_idrss);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5000 SET_INT(result, 5, ru->ru_isrss);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5001 SET_INT(result, 6, ru->ru_minflt);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5002 SET_INT(result, 7, ru->ru_majflt);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5003 SET_INT(result, 8, ru->ru_nswap);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5004 SET_INT(result, 9, ru->ru_inblock);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5005 SET_INT(result, 10, ru->ru_oublock);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5006 SET_INT(result, 11, ru->ru_msgsnd);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5007 SET_INT(result, 12, ru->ru_msgrcv);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5008 SET_INT(result, 13, ru->ru_nsignals);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5009 SET_INT(result, 14, ru->ru_nvcsw);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5010 SET_INT(result, 15, ru->ru_nivcsw);
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36887
diff changeset
5011 #undef SET_INT
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36887
diff changeset
5012
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5013 if (PyErr_Occurred()) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5014 Py_DECREF(result);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5015 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5016 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5017
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5018 return Py_BuildValue("NiN", PyLong_FromPid(pid), status, result);
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36887
diff changeset
5019 }
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36887
diff changeset
5020 #endif /* HAVE_WAIT3 || HAVE_WAIT4 */
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36887
diff changeset
5021
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36887
diff changeset
5022 #ifdef HAVE_WAIT3
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36887
diff changeset
5023 PyDoc_STRVAR(posix_wait3__doc__,
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36887
diff changeset
5024 "wait3(options) -> (pid, status, rusage)\n\n\
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36887
diff changeset
5025 Wait for completion of a child process.");
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36887
diff changeset
5026
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36887
diff changeset
5027 static PyObject *
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36887
diff changeset
5028 posix_wait3(PyObject *self, PyObject *args)
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36887
diff changeset
5029 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5030 pid_t pid;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5031 int options;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5032 struct rusage ru;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5033 WAIT_TYPE status;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5034 WAIT_STATUS_INT(status) = 0;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5035
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5036 if (!PyArg_ParseTuple(args, "i:wait3", &options))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5037 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5038
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5039 Py_BEGIN_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5040 pid = wait3(&status, options, &ru);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5041 Py_END_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5042
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5043 return wait_helper(pid, WAIT_STATUS_INT(status), &ru);
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36887
diff changeset
5044 }
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36887
diff changeset
5045 #endif /* HAVE_WAIT3 */
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36887
diff changeset
5046
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36887
diff changeset
5047 #ifdef HAVE_WAIT4
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36887
diff changeset
5048 PyDoc_STRVAR(posix_wait4__doc__,
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36887
diff changeset
5049 "wait4(pid, options) -> (pid, status, rusage)\n\n\
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36887
diff changeset
5050 Wait for completion of a given child process.");
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36887
diff changeset
5051
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36887
diff changeset
5052 static PyObject *
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36887
diff changeset
5053 posix_wait4(PyObject *self, PyObject *args)
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36887
diff changeset
5054 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5055 pid_t pid;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5056 int options;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5057 struct rusage ru;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5058 WAIT_TYPE status;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5059 WAIT_STATUS_INT(status) = 0;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5060
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
5061 if (!PyArg_ParseTuple(args, _Py_PARSE_PID "i:wait4", &pid, &options))
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5062 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5063
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5064 Py_BEGIN_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5065 pid = wait4(pid, &status, options, &ru);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5066 Py_END_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5067
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5068 return wait_helper(pid, WAIT_STATUS_INT(status), &ru);
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36887
diff changeset
5069 }
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36887
diff changeset
5070 #endif /* HAVE_WAIT4 */
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36887
diff changeset
5071
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
5072 #ifdef HAVE_WAITPID
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
5073 PyDoc_STRVAR(posix_waitpid__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
5074 "waitpid(pid, options) -> (pid, status)\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
5075 Wait for completion of a given child process.");
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
5076
4672
5b53268f547a Renamed.
Barry Warsaw <barry@python.org>
parents: 4600
diff changeset
5077 static PyObject *
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
5078 posix_waitpid(PyObject *self, PyObject *args)
257
a46558ad0bed Removed utimes() compatibility hack.
Guido van Rossum <guido@python.org>
parents: 200
diff changeset
5079 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5080 pid_t pid;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5081 int options;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5082 WAIT_TYPE status;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5083 WAIT_STATUS_INT(status) = 0;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5084
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
5085 if (!PyArg_ParseTuple(args, _Py_PARSE_PID "i:waitpid", &pid, &options))
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5086 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5087 Py_BEGIN_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5088 pid = waitpid(pid, &status, options);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5089 Py_END_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5090 if (pid == -1)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5091 return posix_error();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5092
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5093 return Py_BuildValue("Ni", PyLong_FromPid(pid), WAIT_STATUS_INT(status));
931
d8608ed1cc3b Makefile, Configure.py: ##ask --> ##[el]if[yes|no]
Guido van Rossum <guido@python.org>
parents: 926
diff changeset
5094 }
21857
9cff890b4fb0 Implement os.waitpid() for Windows, in a way that's compatible with Linux
Tim Peters <tim.peters@gmail.com>
parents: 21839
diff changeset
5095
9cff890b4fb0 Implement os.waitpid() for Windows, in a way that's compatible with Linux
Tim Peters <tim.peters@gmail.com>
parents: 21839
diff changeset
5096 #elif defined(HAVE_CWAIT)
9cff890b4fb0 Implement os.waitpid() for Windows, in a way that's compatible with Linux
Tim Peters <tim.peters@gmail.com>
parents: 21839
diff changeset
5097
9cff890b4fb0 Implement os.waitpid() for Windows, in a way that's compatible with Linux
Tim Peters <tim.peters@gmail.com>
parents: 21839
diff changeset
5098 /* MS C has a variant of waitpid() that's usable for most purposes. */
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
5099 PyDoc_STRVAR(posix_waitpid__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
5100 "waitpid(pid, options) -> (pid, status << 8)\n\n"
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
5101 "Wait for completion of a given process. options is ignored on Windows.");
21857
9cff890b4fb0 Implement os.waitpid() for Windows, in a way that's compatible with Linux
Tim Peters <tim.peters@gmail.com>
parents: 21839
diff changeset
5102
9cff890b4fb0 Implement os.waitpid() for Windows, in a way that's compatible with Linux
Tim Peters <tim.peters@gmail.com>
parents: 21839
diff changeset
5103 static PyObject *
9cff890b4fb0 Implement os.waitpid() for Windows, in a way that's compatible with Linux
Tim Peters <tim.peters@gmail.com>
parents: 21839
diff changeset
5104 posix_waitpid(PyObject *self, PyObject *args)
9cff890b4fb0 Implement os.waitpid() for Windows, in a way that's compatible with Linux
Tim Peters <tim.peters@gmail.com>
parents: 21839
diff changeset
5105 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5106 Py_intptr_t pid;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5107 int status, options;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5108
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
5109 if (!PyArg_ParseTuple(args, _Py_PARSE_PID "i:waitpid", &pid, &options))
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5110 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5111 Py_BEGIN_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5112 pid = _cwait(&status, pid, options);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5113 Py_END_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5114 if (pid == -1)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5115 return posix_error();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5116
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5117 /* shift the status left a byte so this is more like the POSIX waitpid */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5118 return Py_BuildValue("Ni", PyLong_FromPid(pid), status << 8);
21857
9cff890b4fb0 Implement os.waitpid() for Windows, in a way that's compatible with Linux
Tim Peters <tim.peters@gmail.com>
parents: 21839
diff changeset
5119 }
9cff890b4fb0 Implement os.waitpid() for Windows, in a way that's compatible with Linux
Tim Peters <tim.peters@gmail.com>
parents: 21839
diff changeset
5120 #endif /* HAVE_WAITPID || HAVE_CWAIT */
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
5121
2456
bc03225a4493 changes for NT/Borland C
Guido van Rossum <guido@python.org>
parents: 2370
diff changeset
5122 #ifdef HAVE_WAIT
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
5123 PyDoc_STRVAR(posix_wait__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
5124 "wait() -> (pid, status)\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
5125 Wait for completion of a child process.");
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
5126
4672
5b53268f547a Renamed.
Barry Warsaw <barry@python.org>
parents: 4600
diff changeset
5127 static PyObject *
27916
93d44870e8b5 Added test_posix (hopefully it works on Windows).
Neal Norwitz <nnorwitz@gmail.com>
parents: 27826
diff changeset
5128 posix_wait(PyObject *self, PyObject *noargs)
931
d8608ed1cc3b Makefile, Configure.py: ##ask --> ##[el]if[yes|no]
Guido van Rossum <guido@python.org>
parents: 926
diff changeset
5129 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5130 pid_t pid;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5131 WAIT_TYPE status;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5132 WAIT_STATUS_INT(status) = 0;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5133
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5134 Py_BEGIN_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5135 pid = wait(&status);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5136 Py_END_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5137 if (pid == -1)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5138 return posix_error();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5139
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5140 return Py_BuildValue("Ni", PyLong_FromPid(pid), WAIT_STATUS_INT(status));
257
a46558ad0bed Removed utimes() compatibility hack.
Guido van Rossum <guido@python.org>
parents: 200
diff changeset
5141 }
2456
bc03225a4493 changes for NT/Borland C
Guido van Rossum <guido@python.org>
parents: 2370
diff changeset
5142 #endif
257
a46558ad0bed Removed utimes() compatibility hack.
Guido van Rossum <guido@python.org>
parents: 200
diff changeset
5143
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
5144
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
5145 PyDoc_STRVAR(posix_lstat__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
5146 "lstat(path) -> stat result\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
5147 Like stat(path), but do not follow symbolic links.");
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
5148
4672
5b53268f547a Renamed.
Barry Warsaw <barry@python.org>
parents: 4600
diff changeset
5149 static PyObject *
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
5150 posix_lstat(PyObject *self, PyObject *args)
6
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
5151 {
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
5152 #ifdef HAVE_LSTAT
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5153 return posix_do_stat(self, args, "O&:lstat", lstat, NULL, NULL);
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
5154 #else /* !HAVE_LSTAT */
25535
861065256487 Patch 594001: PEP 277 - Unicode file name support for Windows NT.
Mark Hammond <mhammond@skippinet.com.au>
parents: 25327
diff changeset
5155 #ifdef MS_WINDOWS
70811
1a3e8db28d49 Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Brian Curtin <brian@python.org>
parents: 68489
diff changeset
5156 return posix_do_stat(self, args, "O&:lstat", win32_lstat, "U:lstat",
62874
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5157 win32_lstat_w);
25535
861065256487 Patch 594001: PEP 277 - Unicode file name support for Windows NT.
Mark Hammond <mhammond@skippinet.com.au>
parents: 25327
diff changeset
5158 #else
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5159 return posix_do_stat(self, args, "O&:lstat", STAT, NULL, NULL);
25535
861065256487 Patch 594001: PEP 277 - Unicode file name support for Windows NT.
Mark Hammond <mhammond@skippinet.com.au>
parents: 25327
diff changeset
5160 #endif
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
5161 #endif /* !HAVE_LSTAT */
6
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
5162 }
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
5163
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
5164
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
5165 #ifdef HAVE_READLINK
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
5166 PyDoc_STRVAR(posix_readlink__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
5167 "readlink(path) -> path\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
5168 Return a string representing the path to which the symbolic link points.");
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
5169
4672
5b53268f547a Renamed.
Barry Warsaw <barry@python.org>
parents: 4600
diff changeset
5170 static PyObject *
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
5171 posix_readlink(PyObject *self, PyObject *args)
6
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
5172 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5173 PyObject* v;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5174 char buf[MAXPATHLEN];
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5175 PyObject *opath;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5176 char *path;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5177 int n;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5178 int arg_is_unicode = 0;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5179
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5180 if (!PyArg_ParseTuple(args, "O&:readlink",
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5181 PyUnicode_FSConverter, &opath))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5182 return NULL;
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
5183 path = PyBytes_AsString(opath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5184 v = PySequence_GetItem(args, 0);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5185 if (v == NULL) {
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
5186 Py_DECREF(opath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5187 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5188 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5189
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5190 if (PyUnicode_Check(v)) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5191 arg_is_unicode = 1;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5192 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5193 Py_DECREF(v);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5194
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5195 Py_BEGIN_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5196 n = readlink(path, buf, (int) sizeof buf);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5197 Py_END_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5198 if (n < 0)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5199 return posix_error_with_allocated_filename(opath);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5200
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
5201 Py_DECREF(opath);
61578
ab31b009a1ee posix_listdir(), posix_readlink(): avoid temporary PyBytes object
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61385
diff changeset
5202 if (arg_is_unicode)
ab31b009a1ee posix_listdir(), posix_readlink(): avoid temporary PyBytes object
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61385
diff changeset
5203 return PyUnicode_DecodeFSDefaultAndSize(buf, n);
ab31b009a1ee posix_listdir(), posix_readlink(): avoid temporary PyBytes object
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61385
diff changeset
5204 else
ab31b009a1ee posix_listdir(), posix_readlink(): avoid temporary PyBytes object
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61385
diff changeset
5205 return PyBytes_FromStringAndSize(buf, n);
6
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
5206 }
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
5207 #endif /* HAVE_READLINK */
6
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
5208
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
5209
66606
9a2058309c1a Fix #9333. Expose os.symlink on Windows only when usable.
Brian Curtin <brian.curtin@gmail.com>
parents: 66555
diff changeset
5210 #if defined(HAVE_SYMLINK) && !defined(MS_WINDOWS)
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
5211 PyDoc_STRVAR(posix_symlink__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
5212 "symlink(src, dst)\n\n\
29402
a2d4c64f5b8b Clarify docstring for symlink.
Brett Cannon <bcannon@gmail.com>
parents: 28949
diff changeset
5213 Create a symbolic link pointing to src named dst.");
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
5214
6971
bc125f0d2c5d Moved some #ifdefs around that got put in the wrong place by the
Guido van Rossum <guido@python.org>
parents: 6766
diff changeset
5215 static PyObject *
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
5216 posix_symlink(PyObject *self, PyObject *args)
6971
bc125f0d2c5d Moved some #ifdefs around that got put in the wrong place by the
Guido van Rossum <guido@python.org>
parents: 6766
diff changeset
5217 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5218 return posix_2str(args, "O&O&:symlink", symlink);
6971
bc125f0d2c5d Moved some #ifdefs around that got put in the wrong place by the
Guido van Rossum <guido@python.org>
parents: 6766
diff changeset
5219 }
bc125f0d2c5d Moved some #ifdefs around that got put in the wrong place by the
Guido van Rossum <guido@python.org>
parents: 6766
diff changeset
5220 #endif /* HAVE_SYMLINK */
bc125f0d2c5d Moved some #ifdefs around that got put in the wrong place by the
Guido van Rossum <guido@python.org>
parents: 6766
diff changeset
5221
62874
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5222 #if !defined(HAVE_READLINK) && defined(MS_WINDOWS)
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5223
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5224 PyDoc_STRVAR(win_readlink__doc__,
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5225 "readlink(path) -> path\n\n\
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5226 Return a string representing the path to which the symbolic link points.");
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5227
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5228 /* Windows readlink implementation */
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5229 static PyObject *
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5230 win_readlink(PyObject *self, PyObject *args)
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5231 {
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5232 wchar_t *path;
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5233 DWORD n_bytes_returned;
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5234 DWORD io_result;
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5235 PyObject *result;
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5236 HANDLE reparse_point_handle;
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5237
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5238 char target_buffer[MAXIMUM_REPARSE_DATA_BUFFER_SIZE];
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5239 REPARSE_DATA_BUFFER *rdb = (REPARSE_DATA_BUFFER *)target_buffer;
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5240 wchar_t *print_name;
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5241
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5242 if (!PyArg_ParseTuple(args,
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5243 "u:readlink",
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5244 &path))
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5245 return NULL;
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5246
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5247 /* First get a handle to the reparse point */
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5248 Py_BEGIN_ALLOW_THREADS
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5249 reparse_point_handle = CreateFileW(
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5250 path,
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5251 0,
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5252 0,
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5253 0,
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5254 OPEN_EXISTING,
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5255 FILE_FLAG_OPEN_REPARSE_POINT|FILE_FLAG_BACKUP_SEMANTICS,
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5256 0);
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5257 Py_END_ALLOW_THREADS
70840
f6d6afe53385 posixmodule.c: fix function name in argument parsing
Victor Stinner <victor.stinner@haypocalc.com>
parents: 70815
diff changeset
5258
62874
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5259 if (reparse_point_handle==INVALID_HANDLE_VALUE)
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5260 {
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5261 return win32_error_unicode("readlink", path);
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5262 }
70840
f6d6afe53385 posixmodule.c: fix function name in argument parsing
Victor Stinner <victor.stinner@haypocalc.com>
parents: 70815
diff changeset
5263
62874
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5264 Py_BEGIN_ALLOW_THREADS
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5265 /* New call DeviceIoControl to read the reparse point */
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5266 io_result = DeviceIoControl(
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5267 reparse_point_handle,
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5268 FSCTL_GET_REPARSE_POINT,
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5269 0, 0, /* in buffer */
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5270 target_buffer, sizeof(target_buffer),
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5271 &n_bytes_returned,
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5272 0 /* we're not using OVERLAPPED_IO */
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5273 );
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5274 CloseHandle(reparse_point_handle);
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5275 Py_END_ALLOW_THREADS
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5276
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5277 if (io_result==0)
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5278 {
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5279 return win32_error_unicode("readlink", path);
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5280 }
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5281
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5282 if (rdb->ReparseTag != IO_REPARSE_TAG_SYMLINK)
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5283 {
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5284 PyErr_SetString(PyExc_ValueError,
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5285 "not a symbolic link");
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5286 return NULL;
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5287 }
62900
e97cdd5c5e4f Re-flow several long lines from #1578269.
Brian Curtin <brian.curtin@gmail.com>
parents: 62874
diff changeset
5288 print_name = rdb->SymbolicLinkReparseBuffer.PathBuffer +
e97cdd5c5e4f Re-flow several long lines from #1578269.
Brian Curtin <brian.curtin@gmail.com>
parents: 62874
diff changeset
5289 rdb->SymbolicLinkReparseBuffer.PrintNameOffset;
e97cdd5c5e4f Re-flow several long lines from #1578269.
Brian Curtin <brian.curtin@gmail.com>
parents: 62874
diff changeset
5290
e97cdd5c5e4f Re-flow several long lines from #1578269.
Brian Curtin <brian.curtin@gmail.com>
parents: 62874
diff changeset
5291 result = PyUnicode_FromWideChar(print_name,
e97cdd5c5e4f Re-flow several long lines from #1578269.
Brian Curtin <brian.curtin@gmail.com>
parents: 62874
diff changeset
5292 rdb->SymbolicLinkReparseBuffer.PrintNameLength/2);
62874
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5293 return result;
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5294 }
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5295
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5296 #endif /* !defined(HAVE_READLINK) && defined(MS_WINDOWS) */
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5297
66606
9a2058309c1a Fix #9333. Expose os.symlink on Windows only when usable.
Brian Curtin <brian.curtin@gmail.com>
parents: 66555
diff changeset
5298 #if defined(HAVE_SYMLINK) && defined(MS_WINDOWS)
62874
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5299
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5300 /* Grab CreateSymbolicLinkW dynamically from kernel32 */
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5301 static int has_CreateSymbolicLinkW = 0;
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5302 static DWORD (CALLBACK *Py_CreateSymbolicLinkW)(LPWSTR, LPWSTR, DWORD);
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5303 static int
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5304 check_CreateSymbolicLinkW()
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5305 {
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5306 HINSTANCE hKernel32;
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5307 /* only recheck */
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5308 if (has_CreateSymbolicLinkW)
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5309 return has_CreateSymbolicLinkW;
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5310 hKernel32 = GetModuleHandle("KERNEL32");
62900
e97cdd5c5e4f Re-flow several long lines from #1578269.
Brian Curtin <brian.curtin@gmail.com>
parents: 62874
diff changeset
5311 *(FARPROC*)&Py_CreateSymbolicLinkW = GetProcAddress(hKernel32,
e97cdd5c5e4f Re-flow several long lines from #1578269.
Brian Curtin <brian.curtin@gmail.com>
parents: 62874
diff changeset
5312 "CreateSymbolicLinkW");
62874
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5313 if (Py_CreateSymbolicLinkW)
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5314 has_CreateSymbolicLinkW = 1;
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5315 return has_CreateSymbolicLinkW;
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5316 }
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5317
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5318 PyDoc_STRVAR(win_symlink__doc__,
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5319 "symlink(src, dst, target_is_directory=False)\n\n\
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5320 Create a symbolic link pointing to src named dst.\n\
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5321 target_is_directory is required if the target is to be interpreted as\n\
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5322 a directory.\n\
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5323 This function requires Windows 6.0 or greater, and raises a\n\
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5324 NotImplementedError otherwise.");
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5325
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5326 static PyObject *
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5327 win_symlink(PyObject *self, PyObject *args, PyObject *kwargs)
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5328 {
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5329 static char *kwlist[] = {"src", "dest", "target_is_directory", NULL};
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5330 PyObject *src, *dest;
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5331 int target_is_directory = 0;
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5332 DWORD res;
70840
f6d6afe53385 posixmodule.c: fix function name in argument parsing
Victor Stinner <victor.stinner@haypocalc.com>
parents: 70815
diff changeset
5333
62874
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5334 if (!check_CreateSymbolicLinkW())
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5335 {
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5336 /* raise NotImplementedError */
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5337 return PyErr_Format(PyExc_NotImplementedError,
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5338 "CreateSymbolicLinkW not found");
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5339 }
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5340 if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO|i:symlink",
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5341 kwlist, &src, &dest, &target_is_directory))
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5342 return NULL;
67183
5aa433a277f9 Fix #9333. The symlink function is always available now, raising OSError
Brian Curtin <brian.curtin@gmail.com>
parents: 66779
diff changeset
5343
5aa433a277f9 Fix #9333. The symlink function is always available now, raising OSError
Brian Curtin <brian.curtin@gmail.com>
parents: 66779
diff changeset
5344 if (win32_can_symlink == 0)
5aa433a277f9 Fix #9333. The symlink function is always available now, raising OSError
Brian Curtin <brian.curtin@gmail.com>
parents: 66779
diff changeset
5345 return PyErr_Format(PyExc_OSError, "symbolic link privilege not held");
5aa433a277f9 Fix #9333. The symlink function is always available now, raising OSError
Brian Curtin <brian.curtin@gmail.com>
parents: 66779
diff changeset
5346
62874
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5347 if (!convert_to_unicode(&src)) { return NULL; }
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5348 if (!convert_to_unicode(&dest)) {
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5349 Py_DECREF(src);
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5350 return NULL;
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5351 }
70840
f6d6afe53385 posixmodule.c: fix function name in argument parsing
Victor Stinner <victor.stinner@haypocalc.com>
parents: 70815
diff changeset
5352
62874
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5353 Py_BEGIN_ALLOW_THREADS
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5354 res = Py_CreateSymbolicLinkW(
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5355 PyUnicode_AsUnicode(dest),
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5356 PyUnicode_AsUnicode(src),
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5357 target_is_directory);
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5358 Py_END_ALLOW_THREADS
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5359 Py_DECREF(src);
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5360 Py_DECREF(dest);
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5361 if (!res)
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5362 {
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5363 return win32_error_unicode("symlink", PyUnicode_AsUnicode(src));
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5364 }
70840
f6d6afe53385 posixmodule.c: fix function name in argument parsing
Victor Stinner <victor.stinner@haypocalc.com>
parents: 70815
diff changeset
5365
62874
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5366 Py_INCREF(Py_None);
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5367 return Py_None;
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
5368 }
66606
9a2058309c1a Fix #9333. Expose os.symlink on Windows only when usable.
Brian Curtin <brian.curtin@gmail.com>
parents: 66555
diff changeset
5369 #endif /* defined(HAVE_SYMLINK) && defined(MS_WINDOWS) */
6971
bc125f0d2c5d Moved some #ifdefs around that got put in the wrong place by the
Guido van Rossum <guido@python.org>
parents: 6766
diff changeset
5370
bc125f0d2c5d Moved some #ifdefs around that got put in the wrong place by the
Guido van Rossum <guido@python.org>
parents: 6766
diff changeset
5371 #ifdef HAVE_TIMES
6766
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
5372 #if defined(PYCC_VACPP) && defined(PYOS_OS2)
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
5373 static long
13651
8a063423e0b7 Bunch of minor ANSIfications: 'void initfunc()' -> 'void initfunc(void)',
Thomas Wouters <thomas@python.org>
parents: 13642
diff changeset
5374 system_uptime(void)
6766
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
5375 {
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
5376 ULONG value = 0;
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
5377
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
5378 Py_BEGIN_ALLOW_THREADS
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
5379 DosQuerySysInfo(QSV_MS_COUNT, QSV_MS_COUNT, &value, sizeof(value));
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
5380 Py_END_ALLOW_THREADS
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
5381
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
5382 return value;
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
5383 }
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
5384
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
5385 static PyObject *
27916
93d44870e8b5 Added test_posix (hopefully it works on Windows).
Neal Norwitz <nnorwitz@gmail.com>
parents: 27826
diff changeset
5386 posix_times(PyObject *self, PyObject *noargs)
93d44870e8b5 Added test_posix (hopefully it works on Windows).
Neal Norwitz <nnorwitz@gmail.com>
parents: 27826
diff changeset
5387 {
6766
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
5388 /* Currently Only Uptime is Provided -- Others Later */
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5389 return Py_BuildValue("ddddd",
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5390 (double)0 /* t.tms_utime / HZ */,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5391 (double)0 /* t.tms_stime / HZ */,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5392 (double)0 /* t.tms_cutime / HZ */,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5393 (double)0 /* t.tms_cstime / HZ */,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5394 (double)system_uptime() / 1000);
6766
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
5395 }
6971
bc125f0d2c5d Moved some #ifdefs around that got put in the wrong place by the
Guido van Rossum <guido@python.org>
parents: 6766
diff changeset
5396 #else /* not OS2 */
50359
7f5aa7e54ad5 Merged revisions 68020 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 50119
diff changeset
5397 #define NEED_TICKS_PER_SECOND
7f5aa7e54ad5 Merged revisions 68020 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 50119
diff changeset
5398 static long ticks_per_second = -1;
4672
5b53268f547a Renamed.
Barry Warsaw <barry@python.org>
parents: 4600
diff changeset
5399 static PyObject *
27916
93d44870e8b5 Added test_posix (hopefully it works on Windows).
Neal Norwitz <nnorwitz@gmail.com>
parents: 27826
diff changeset
5400 posix_times(PyObject *self, PyObject *noargs)
793
cbf0ef998a4a Added times() (from time)
Guido van Rossum <guido@python.org>
parents: 731
diff changeset
5401 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5402 struct tms t;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5403 clock_t c;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5404 errno = 0;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5405 c = times(&t);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5406 if (c == (clock_t) -1)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5407 return posix_error();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5408 return Py_BuildValue("ddddd",
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5409 (double)t.tms_utime / ticks_per_second,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5410 (double)t.tms_stime / ticks_per_second,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5411 (double)t.tms_cutime / ticks_per_second,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5412 (double)t.tms_cstime / ticks_per_second,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5413 (double)c / ticks_per_second);
793
cbf0ef998a4a Added times() (from time)
Guido van Rossum <guido@python.org>
parents: 731
diff changeset
5414 }
6971
bc125f0d2c5d Moved some #ifdefs around that got put in the wrong place by the
Guido van Rossum <guido@python.org>
parents: 6766
diff changeset
5415 #endif /* not OS2 */
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
5416 #endif /* HAVE_TIMES */
6971
bc125f0d2c5d Moved some #ifdefs around that got put in the wrong place by the
Guido van Rossum <guido@python.org>
parents: 6766
diff changeset
5417
bc125f0d2c5d Moved some #ifdefs around that got put in the wrong place by the
Guido van Rossum <guido@python.org>
parents: 6766
diff changeset
5418
24071
8142f8d668a0 Patch #569753: Remove support for WIN16.
Martin v. Löwis <martin@v.loewis.de>
parents: 23937
diff changeset
5419 #ifdef MS_WINDOWS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5420 #define HAVE_TIMES /* so the method table will pick it up */
4672
5b53268f547a Renamed.
Barry Warsaw <barry@python.org>
parents: 4600
diff changeset
5421 static PyObject *
27916
93d44870e8b5 Added test_posix (hopefully it works on Windows).
Neal Norwitz <nnorwitz@gmail.com>
parents: 27826
diff changeset
5422 posix_times(PyObject *self, PyObject *noargs)
1915
80818c106e3e * Modules/xxmodule.c: integrated with xxobject.c by Jack
Guido van Rossum <guido@python.org>
parents: 1845
diff changeset
5423 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5424 FILETIME create, exit, kernel, user;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5425 HANDLE hProc;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5426 hProc = GetCurrentProcess();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5427 GetProcessTimes(hProc, &create, &exit, &kernel, &user);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5428 /* The fields of a FILETIME structure are the hi and lo part
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5429 of a 64-bit value expressed in 100 nanosecond units.
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5430 1e7 is one second in such units; 1e-7 the inverse.
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5431 429.4967296 is 2**32 / 1e7 or 2**32 * 1e-7.
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5432 */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5433 return Py_BuildValue(
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5434 "ddddd",
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5435 (double)(user.dwHighDateTime*429.4967296 +
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5436 user.dwLowDateTime*1e-7),
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5437 (double)(kernel.dwHighDateTime*429.4967296 +
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5438 kernel.dwLowDateTime*1e-7),
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5439 (double)0,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5440 (double)0,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5441 (double)0);
1915
80818c106e3e * Modules/xxmodule.c: integrated with xxobject.c by Jack
Guido van Rossum <guido@python.org>
parents: 1845
diff changeset
5442 }
24071
8142f8d668a0 Patch #569753: Remove support for WIN16.
Martin v. Löwis <martin@v.loewis.de>
parents: 23937
diff changeset
5443 #endif /* MS_WINDOWS */
6971
bc125f0d2c5d Moved some #ifdefs around that got put in the wrong place by the
Guido van Rossum <guido@python.org>
parents: 6766
diff changeset
5444
bc125f0d2c5d Moved some #ifdefs around that got put in the wrong place by the
Guido van Rossum <guido@python.org>
parents: 6766
diff changeset
5445 #ifdef HAVE_TIMES
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
5446 PyDoc_STRVAR(posix_times__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
5447 "times() -> (utime, stime, cutime, cstime, elapsed_time)\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
5448 Return a tuple of floating point numbers indicating process times.");
6971
bc125f0d2c5d Moved some #ifdefs around that got put in the wrong place by the
Guido van Rossum <guido@python.org>
parents: 6766
diff changeset
5449 #endif
1050
f49d2311776b posix: added setpgrp() and, if sgi, setsid() and setpgid(pid, pgid)
Guido van Rossum <guido@python.org>
parents: 943
diff changeset
5450
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
5451
30892
f08a5e95c37c Patch #839038: Add getsid(2).
Martin v. Löwis <martin@v.loewis.de>
parents: 30816
diff changeset
5452 #ifdef HAVE_GETSID
f08a5e95c37c Patch #839038: Add getsid(2).
Martin v. Löwis <martin@v.loewis.de>
parents: 30816
diff changeset
5453 PyDoc_STRVAR(posix_getsid__doc__,
f08a5e95c37c Patch #839038: Add getsid(2).
Martin v. Löwis <martin@v.loewis.de>
parents: 30816
diff changeset
5454 "getsid(pid) -> sid\n\n\
f08a5e95c37c Patch #839038: Add getsid(2).
Martin v. Löwis <martin@v.loewis.de>
parents: 30816
diff changeset
5455 Call the system call getsid().");
f08a5e95c37c Patch #839038: Add getsid(2).
Martin v. Löwis <martin@v.loewis.de>
parents: 30816
diff changeset
5456
f08a5e95c37c Patch #839038: Add getsid(2).
Martin v. Löwis <martin@v.loewis.de>
parents: 30816
diff changeset
5457 static PyObject *
f08a5e95c37c Patch #839038: Add getsid(2).
Martin v. Löwis <martin@v.loewis.de>
parents: 30816
diff changeset
5458 posix_getsid(PyObject *self, PyObject *args)
f08a5e95c37c Patch #839038: Add getsid(2).
Martin v. Löwis <martin@v.loewis.de>
parents: 30816
diff changeset
5459 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5460 pid_t pid;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5461 int sid;
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
5462 if (!PyArg_ParseTuple(args, _Py_PARSE_PID ":getsid", &pid))
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5463 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5464 sid = getsid(pid);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5465 if (sid < 0)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5466 return posix_error();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5467 return PyLong_FromLong((long)sid);
30892
f08a5e95c37c Patch #839038: Add getsid(2).
Martin v. Löwis <martin@v.loewis.de>
parents: 30816
diff changeset
5468 }
f08a5e95c37c Patch #839038: Add getsid(2).
Martin v. Löwis <martin@v.loewis.de>
parents: 30816
diff changeset
5469 #endif /* HAVE_GETSID */
f08a5e95c37c Patch #839038: Add getsid(2).
Martin v. Löwis <martin@v.loewis.de>
parents: 30816
diff changeset
5470
f08a5e95c37c Patch #839038: Add getsid(2).
Martin v. Löwis <martin@v.loewis.de>
parents: 30816
diff changeset
5471
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
5472 #ifdef HAVE_SETSID
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
5473 PyDoc_STRVAR(posix_setsid__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
5474 "setsid()\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
5475 Call the system call setsid().");
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
5476
4672
5b53268f547a Renamed.
Barry Warsaw <barry@python.org>
parents: 4600
diff changeset
5477 static PyObject *
27916
93d44870e8b5 Added test_posix (hopefully it works on Windows).
Neal Norwitz <nnorwitz@gmail.com>
parents: 27826
diff changeset
5478 posix_setsid(PyObject *self, PyObject *noargs)
93d44870e8b5 Added test_posix (hopefully it works on Windows).
Neal Norwitz <nnorwitz@gmail.com>
parents: 27826
diff changeset
5479 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5480 if (setsid() < 0)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5481 return posix_error();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5482 Py_INCREF(Py_None);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5483 return Py_None;
1050
f49d2311776b posix: added setpgrp() and, if sgi, setsid() and setpgid(pid, pgid)
Guido van Rossum <guido@python.org>
parents: 943
diff changeset
5484 }
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
5485 #endif /* HAVE_SETSID */
1050
f49d2311776b posix: added setpgrp() and, if sgi, setsid() and setpgid(pid, pgid)
Guido van Rossum <guido@python.org>
parents: 943
diff changeset
5486
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
5487 #ifdef HAVE_SETPGID
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
5488 PyDoc_STRVAR(posix_setpgid__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
5489 "setpgid(pid, pgrp)\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
5490 Call the system call setpgid().");
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
5491
4672
5b53268f547a Renamed.
Barry Warsaw <barry@python.org>
parents: 4600
diff changeset
5492 static PyObject *
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
5493 posix_setpgid(PyObject *self, PyObject *args)
1050
f49d2311776b posix: added setpgrp() and, if sgi, setsid() and setpgid(pid, pgid)
Guido van Rossum <guido@python.org>
parents: 943
diff changeset
5494 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5495 pid_t pid;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5496 int pgrp;
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
5497 if (!PyArg_ParseTuple(args, _Py_PARSE_PID "i:setpgid", &pid, &pgrp))
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5498 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5499 if (setpgid(pid, pgrp) < 0)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5500 return posix_error();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5501 Py_INCREF(Py_None);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5502 return Py_None;
1051
f54e64c8b9b7 * Makefile: added IMGFILE; moved some stuff around.
Guido van Rossum <guido@python.org>
parents: 1050
diff changeset
5503 }
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
5504 #endif /* HAVE_SETPGID */
1051
f54e64c8b9b7 * Makefile: added IMGFILE; moved some stuff around.
Guido van Rossum <guido@python.org>
parents: 1050
diff changeset
5505
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
5506
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
5507 #ifdef HAVE_TCGETPGRP
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
5508 PyDoc_STRVAR(posix_tcgetpgrp__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
5509 "tcgetpgrp(fd) -> pgid\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
5510 Return the process group associated with the terminal given by a fd.");
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
5511
4672
5b53268f547a Renamed.
Barry Warsaw <barry@python.org>
parents: 4600
diff changeset
5512 static PyObject *
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
5513 posix_tcgetpgrp(PyObject *self, PyObject *args)
1051
f54e64c8b9b7 * Makefile: added IMGFILE; moved some stuff around.
Guido van Rossum <guido@python.org>
parents: 1050
diff changeset
5514 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5515 int fd;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5516 pid_t pgid;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5517 if (!PyArg_ParseTuple(args, "i:tcgetpgrp", &fd))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5518 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5519 pgid = tcgetpgrp(fd);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5520 if (pgid < 0)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5521 return posix_error();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5522 return PyLong_FromPid(pgid);
1051
f54e64c8b9b7 * Makefile: added IMGFILE; moved some stuff around.
Guido van Rossum <guido@python.org>
parents: 1050
diff changeset
5523 }
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
5524 #endif /* HAVE_TCGETPGRP */
1051
f54e64c8b9b7 * Makefile: added IMGFILE; moved some stuff around.
Guido van Rossum <guido@python.org>
parents: 1050
diff changeset
5525
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
5526
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
5527 #ifdef HAVE_TCSETPGRP
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
5528 PyDoc_STRVAR(posix_tcsetpgrp__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
5529 "tcsetpgrp(fd, pgid)\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
5530 Set the process group associated with the terminal given by a fd.");
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
5531
4672
5b53268f547a Renamed.
Barry Warsaw <barry@python.org>
parents: 4600
diff changeset
5532 static PyObject *
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
5533 posix_tcsetpgrp(PyObject *self, PyObject *args)
1051
f54e64c8b9b7 * Makefile: added IMGFILE; moved some stuff around.
Guido van Rossum <guido@python.org>
parents: 1050
diff changeset
5534 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5535 int fd;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5536 pid_t pgid;
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
5537 if (!PyArg_ParseTuple(args, "i" _Py_PARSE_PID ":tcsetpgrp", &fd, &pgid))
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5538 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5539 if (tcsetpgrp(fd, pgid) < 0)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5540 return posix_error();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5541 Py_INCREF(Py_None);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5542 return Py_None;
1050
f49d2311776b posix: added setpgrp() and, if sgi, setsid() and setpgid(pid, pgid)
Guido van Rossum <guido@python.org>
parents: 943
diff changeset
5543 }
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
5544 #endif /* HAVE_TCSETPGRP */
793
cbf0ef998a4a Added times() (from time)
Guido van Rossum <guido@python.org>
parents: 731
diff changeset
5545
1287
673dd9bbdbf1 New posix functions open, close, dup, dup2, lseek, read, write, fstat, pipe.
Guido van Rossum <guido@python.org>
parents: 1252
diff changeset
5546 /* Functions acting on file descriptors */
673dd9bbdbf1 New posix functions open, close, dup, dup2, lseek, read, write, fstat, pipe.
Guido van Rossum <guido@python.org>
parents: 1252
diff changeset
5547
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
5548 PyDoc_STRVAR(posix_open__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
5549 "open(filename, flag [, mode=0777]) -> fd\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
5550 Open a file (for low level IO).");
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
5551
4672
5b53268f547a Renamed.
Barry Warsaw <barry@python.org>
parents: 4600
diff changeset
5552 static PyObject *
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
5553 posix_open(PyObject *self, PyObject *args)
1287
673dd9bbdbf1 New posix functions open, close, dup, dup2, lseek, read, write, fstat, pipe.
Guido van Rossum <guido@python.org>
parents: 1252
diff changeset
5554 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5555 PyObject *ofile;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5556 char *file;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5557 int flag;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5558 int mode = 0777;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5559 int fd;
25535
861065256487 Patch 594001: PEP 277 - Unicode file name support for Windows NT.
Mark Hammond <mhammond@skippinet.com.au>
parents: 25327
diff changeset
5560
861065256487 Patch 594001: PEP 277 - Unicode file name support for Windows NT.
Mark Hammond <mhammond@skippinet.com.au>
parents: 25327
diff changeset
5561 #ifdef MS_WINDOWS
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
5562 PyUnicodeObject *po;
70840
f6d6afe53385 posixmodule.c: fix function name in argument parsing
Victor Stinner <victor.stinner@haypocalc.com>
parents: 70815
diff changeset
5563 if (PyArg_ParseTuple(args, "Ui|i:open", &po, &flag, &mode)) {
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
5564 Py_BEGIN_ALLOW_THREADS
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
5565 /* PyUnicode_AS_UNICODE OK without thread
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
5566 lock as it is a simple dereference. */
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
5567 fd = _wopen(PyUnicode_AS_UNICODE(po), flag, mode);
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
5568 Py_END_ALLOW_THREADS
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
5569 if (fd < 0)
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
5570 return posix_error();
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
5571 return PyLong_FromLong((long)fd);
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
5572 }
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
5573 /* Drop the argument parsing error as narrow strings
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
5574 are also valid. */
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
5575 PyErr_Clear();
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5576 #endif
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5577
70840
f6d6afe53385 posixmodule.c: fix function name in argument parsing
Victor Stinner <victor.stinner@haypocalc.com>
parents: 70815
diff changeset
5578 if (!PyArg_ParseTuple(args, "O&i|i:open",
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5579 PyUnicode_FSConverter, &ofile,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5580 &flag, &mode))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5581 return NULL;
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
5582 file = PyBytes_AsString(ofile);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5583 Py_BEGIN_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5584 fd = open(file, flag, mode);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5585 Py_END_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5586 if (fd < 0)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5587 return posix_error_with_allocated_filename(ofile);
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
5588 Py_DECREF(ofile);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5589 return PyLong_FromLong((long)fd);
1287
673dd9bbdbf1 New posix functions open, close, dup, dup2, lseek, read, write, fstat, pipe.
Guido van Rossum <guido@python.org>
parents: 1252
diff changeset
5590 }
673dd9bbdbf1 New posix functions open, close, dup, dup2, lseek, read, write, fstat, pipe.
Guido van Rossum <guido@python.org>
parents: 1252
diff changeset
5591
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
5592
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
5593 PyDoc_STRVAR(posix_close__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
5594 "close(fd)\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
5595 Close a file descriptor (for low level IO).");
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
5596
4672
5b53268f547a Renamed.
Barry Warsaw <barry@python.org>
parents: 4600
diff changeset
5597 static PyObject *
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
5598 posix_close(PyObject *self, PyObject *args)
1287
673dd9bbdbf1 New posix functions open, close, dup, dup2, lseek, read, write, fstat, pipe.
Guido van Rossum <guido@python.org>
parents: 1252
diff changeset
5599 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5600 int fd, res;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5601 if (!PyArg_ParseTuple(args, "i:close", &fd))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5602 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5603 if (!_PyVerify_fd(fd))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5604 return posix_error();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5605 Py_BEGIN_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5606 res = close(fd);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5607 Py_END_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5608 if (res < 0)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5609 return posix_error();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5610 Py_INCREF(Py_None);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5611 return Py_None;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5612 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5613
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5614
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5615 PyDoc_STRVAR(posix_closerange__doc__,
44810
fa6cee14dcba Merged revisions 60094-60123 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44441
diff changeset
5616 "closerange(fd_low, fd_high)\n\n\
fa6cee14dcba Merged revisions 60094-60123 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44441
diff changeset
5617 Closes all file descriptors in [fd_low, fd_high), ignoring errors.");
fa6cee14dcba Merged revisions 60094-60123 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44441
diff changeset
5618
fa6cee14dcba Merged revisions 60094-60123 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44441
diff changeset
5619 static PyObject *
fa6cee14dcba Merged revisions 60094-60123 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44441
diff changeset
5620 posix_closerange(PyObject *self, PyObject *args)
fa6cee14dcba Merged revisions 60094-60123 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44441
diff changeset
5621 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5622 int fd_from, fd_to, i;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5623 if (!PyArg_ParseTuple(args, "ii:closerange", &fd_from, &fd_to))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5624 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5625 Py_BEGIN_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5626 for (i = fd_from; i < fd_to; i++)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5627 if (_PyVerify_fd(i))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5628 close(i);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5629 Py_END_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5630 Py_RETURN_NONE;
44810
fa6cee14dcba Merged revisions 60094-60123 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44441
diff changeset
5631 }
fa6cee14dcba Merged revisions 60094-60123 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44441
diff changeset
5632
fa6cee14dcba Merged revisions 60094-60123 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44441
diff changeset
5633
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
5634 PyDoc_STRVAR(posix_dup__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
5635 "dup(fd) -> fd2\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
5636 Return a duplicate of a file descriptor.");
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
5637
4672
5b53268f547a Renamed.
Barry Warsaw <barry@python.org>
parents: 4600
diff changeset
5638 static PyObject *
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
5639 posix_dup(PyObject *self, PyObject *args)
1287
673dd9bbdbf1 New posix functions open, close, dup, dup2, lseek, read, write, fstat, pipe.
Guido van Rossum <guido@python.org>
parents: 1252
diff changeset
5640 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5641 int fd;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5642 if (!PyArg_ParseTuple(args, "i:dup", &fd))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5643 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5644 if (!_PyVerify_fd(fd))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5645 return posix_error();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5646 Py_BEGIN_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5647 fd = dup(fd);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5648 Py_END_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5649 if (fd < 0)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5650 return posix_error();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5651 return PyLong_FromLong((long)fd);
1287
673dd9bbdbf1 New posix functions open, close, dup, dup2, lseek, read, write, fstat, pipe.
Guido van Rossum <guido@python.org>
parents: 1252
diff changeset
5652 }
673dd9bbdbf1 New posix functions open, close, dup, dup2, lseek, read, write, fstat, pipe.
Guido van Rossum <guido@python.org>
parents: 1252
diff changeset
5653
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
5654
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
5655 PyDoc_STRVAR(posix_dup2__doc__,
31375
f38bd393e954 Make parameter names in docstring more mnemonic
Andrew M. Kuchling <amk@amk.ca>
parents: 31347
diff changeset
5656 "dup2(old_fd, new_fd)\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
5657 Duplicate file descriptor.");
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
5658
4672
5b53268f547a Renamed.
Barry Warsaw <barry@python.org>
parents: 4600
diff changeset
5659 static PyObject *
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
5660 posix_dup2(PyObject *self, PyObject *args)
1287
673dd9bbdbf1 New posix functions open, close, dup, dup2, lseek, read, write, fstat, pipe.
Guido van Rossum <guido@python.org>
parents: 1252
diff changeset
5661 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5662 int fd, fd2, res;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5663 if (!PyArg_ParseTuple(args, "ii:dup2", &fd, &fd2))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5664 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5665 if (!_PyVerify_fd_dup2(fd, fd2))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5666 return posix_error();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5667 Py_BEGIN_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5668 res = dup2(fd, fd2);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5669 Py_END_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5670 if (res < 0)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5671 return posix_error();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5672 Py_INCREF(Py_None);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5673 return Py_None;
1287
673dd9bbdbf1 New posix functions open, close, dup, dup2, lseek, read, write, fstat, pipe.
Guido van Rossum <guido@python.org>
parents: 1252
diff changeset
5674 }
673dd9bbdbf1 New posix functions open, close, dup, dup2, lseek, read, write, fstat, pipe.
Guido van Rossum <guido@python.org>
parents: 1252
diff changeset
5675
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
5676
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
5677 PyDoc_STRVAR(posix_lseek__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
5678 "lseek(fd, pos, how) -> newpos\n\n\
74018
46c418d8a480 Issue #13530: Document os.lseek() result
Victor Stinner <victor.stinner@haypocalc.com>
parents: 73766
diff changeset
5679 Set the current position of a file descriptor.\n\
46c418d8a480 Issue #13530: Document os.lseek() result
Victor Stinner <victor.stinner@haypocalc.com>
parents: 73766
diff changeset
5680 Return the new cursor position in bytes, starting from the beginning.");
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
5681
4672
5b53268f547a Renamed.
Barry Warsaw <barry@python.org>
parents: 4600
diff changeset
5682 static PyObject *
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
5683 posix_lseek(PyObject *self, PyObject *args)
1287
673dd9bbdbf1 New posix functions open, close, dup, dup2, lseek, read, write, fstat, pipe.
Guido van Rossum <guido@python.org>
parents: 1252
diff changeset
5684 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5685 int fd, how;
24071
8142f8d668a0 Patch #569753: Remove support for WIN16.
Martin v. Löwis <martin@v.loewis.de>
parents: 23937
diff changeset
5686 #if defined(MS_WIN64) || defined(MS_WINDOWS)
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5687 PY_LONG_LONG pos, res;
13153
32816ce60a49 Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents: 13058
diff changeset
5688 #else
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5689 off_t pos, res;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5690 #endif
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5691 PyObject *posobj;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5692 if (!PyArg_ParseTuple(args, "iOi:lseek", &fd, &posobj, &how))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5693 return NULL;
1287
673dd9bbdbf1 New posix functions open, close, dup, dup2, lseek, read, write, fstat, pipe.
Guido van Rossum <guido@python.org>
parents: 1252
diff changeset
5694 #ifdef SEEK_SET
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5695 /* Turn 0, 1, 2 into SEEK_{SET,CUR,END} */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5696 switch (how) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5697 case 0: how = SEEK_SET; break;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5698 case 1: how = SEEK_CUR; break;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5699 case 2: how = SEEK_END; break;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5700 }
1792
a584b4bbbc59 Changes to make it work and compile on NT, by Mark Hammond.
Guido van Rossum <guido@python.org>
parents: 1746
diff changeset
5701 #endif /* SEEK_END */
9785
facb457b4d32 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
5702
facb457b4d32 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
5703 #if !defined(HAVE_LARGEFILE_SUPPORT)
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5704 pos = PyLong_AsLong(posobj);
9785
facb457b4d32 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
5705 #else
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5706 pos = PyLong_Check(posobj) ?
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5707 PyLong_AsLongLong(posobj) : PyLong_AsLong(posobj);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5708 #endif
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5709 if (PyErr_Occurred())
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5710 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5711
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5712 if (!_PyVerify_fd(fd))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5713 return posix_error();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5714 Py_BEGIN_ALLOW_THREADS
24071
8142f8d668a0 Patch #569753: Remove support for WIN16.
Martin v. Löwis <martin@v.loewis.de>
parents: 23937
diff changeset
5715 #if defined(MS_WIN64) || defined(MS_WINDOWS)
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5716 res = _lseeki64(fd, pos, how);
13153
32816ce60a49 Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents: 13058
diff changeset
5717 #else
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5718 res = lseek(fd, pos, how);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5719 #endif
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5720 Py_END_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5721 if (res < 0)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5722 return posix_error();
9785
facb457b4d32 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
5723
facb457b4d32 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
5724 #if !defined(HAVE_LARGEFILE_SUPPORT)
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5725 return PyLong_FromLong(res);
9785
facb457b4d32 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
5726 #else
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5727 return PyLong_FromLongLong(res);
9785
facb457b4d32 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
5728 #endif
1287
673dd9bbdbf1 New posix functions open, close, dup, dup2, lseek, read, write, fstat, pipe.
Guido van Rossum <guido@python.org>
parents: 1252
diff changeset
5729 }
673dd9bbdbf1 New posix functions open, close, dup, dup2, lseek, read, write, fstat, pipe.
Guido van Rossum <guido@python.org>
parents: 1252
diff changeset
5730
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
5731
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
5732 PyDoc_STRVAR(posix_read__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
5733 "read(fd, buffersize) -> string\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
5734 Read a file descriptor.");
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
5735
4672
5b53268f547a Renamed.
Barry Warsaw <barry@python.org>
parents: 4600
diff changeset
5736 static PyObject *
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
5737 posix_read(PyObject *self, PyObject *args)
1287
673dd9bbdbf1 New posix functions open, close, dup, dup2, lseek, read, write, fstat, pipe.
Guido van Rossum <guido@python.org>
parents: 1252
diff changeset
5738 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5739 int fd, size;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5740 Py_ssize_t n;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5741 PyObject *buffer;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5742 if (!PyArg_ParseTuple(args, "ii:read", &fd, &size))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5743 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5744 if (size < 0) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5745 errno = EINVAL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5746 return posix_error();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5747 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5748 buffer = PyBytes_FromStringAndSize((char *)NULL, size);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5749 if (buffer == NULL)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5750 return NULL;
66493
4279e417b2a0 Merged revisions 86804 via svnmerge from
Stefan Krah <stefan@bytereef.org>
parents: 64428
diff changeset
5751 if (!_PyVerify_fd(fd)) {
4279e417b2a0 Merged revisions 86804 via svnmerge from
Stefan Krah <stefan@bytereef.org>
parents: 64428
diff changeset
5752 Py_DECREF(buffer);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5753 return posix_error();
66493
4279e417b2a0 Merged revisions 86804 via svnmerge from
Stefan Krah <stefan@bytereef.org>
parents: 64428
diff changeset
5754 }
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5755 Py_BEGIN_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5756 n = read(fd, PyBytes_AS_STRING(buffer), size);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5757 Py_END_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5758 if (n < 0) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5759 Py_DECREF(buffer);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5760 return posix_error();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5761 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5762 if (n != size)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5763 _PyBytes_Resize(&buffer, n);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5764 return buffer;
1287
673dd9bbdbf1 New posix functions open, close, dup, dup2, lseek, read, write, fstat, pipe.
Guido van Rossum <guido@python.org>
parents: 1252
diff changeset
5765 }
673dd9bbdbf1 New posix functions open, close, dup, dup2, lseek, read, write, fstat, pipe.
Guido van Rossum <guido@python.org>
parents: 1252
diff changeset
5766
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
5767
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
5768 PyDoc_STRVAR(posix_write__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
5769 "write(fd, string) -> byteswritten\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
5770 Write a string to a file descriptor.");
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
5771
4672
5b53268f547a Renamed.
Barry Warsaw <barry@python.org>
parents: 4600
diff changeset
5772 static PyObject *
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
5773 posix_write(PyObject *self, PyObject *args)
1287
673dd9bbdbf1 New posix functions open, close, dup, dup2, lseek, read, write, fstat, pipe.
Guido van Rossum <guido@python.org>
parents: 1252
diff changeset
5774 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5775 Py_buffer pbuf;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5776 int fd;
67337
374dc910db33 Issue #9015, #9611: FileIO.readinto(), FileIO.write() and os.write() clamp the
Victor Stinner <victor.stinner@haypocalc.com>
parents: 67283
diff changeset
5777 Py_ssize_t size, len;
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5778
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5779 if (!PyArg_ParseTuple(args, "iy*:write", &fd, &pbuf))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5780 return NULL;
66493
4279e417b2a0 Merged revisions 86804 via svnmerge from
Stefan Krah <stefan@bytereef.org>
parents: 64428
diff changeset
5781 if (!_PyVerify_fd(fd)) {
4279e417b2a0 Merged revisions 86804 via svnmerge from
Stefan Krah <stefan@bytereef.org>
parents: 64428
diff changeset
5782 PyBuffer_Release(&pbuf);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5783 return posix_error();
66493
4279e417b2a0 Merged revisions 86804 via svnmerge from
Stefan Krah <stefan@bytereef.org>
parents: 64428
diff changeset
5784 }
67337
374dc910db33 Issue #9015, #9611: FileIO.readinto(), FileIO.write() and os.write() clamp the
Victor Stinner <victor.stinner@haypocalc.com>
parents: 67283
diff changeset
5785 len = pbuf.len;
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5786 Py_BEGIN_ALLOW_THREADS
67337
374dc910db33 Issue #9015, #9611: FileIO.readinto(), FileIO.write() and os.write() clamp the
Victor Stinner <victor.stinner@haypocalc.com>
parents: 67283
diff changeset
5787 #if defined(MS_WIN64) || defined(MS_WINDOWS)
374dc910db33 Issue #9015, #9611: FileIO.readinto(), FileIO.write() and os.write() clamp the
Victor Stinner <victor.stinner@haypocalc.com>
parents: 67283
diff changeset
5788 if (len > INT_MAX)
374dc910db33 Issue #9015, #9611: FileIO.readinto(), FileIO.write() and os.write() clamp the
Victor Stinner <victor.stinner@haypocalc.com>
parents: 67283
diff changeset
5789 len = INT_MAX;
374dc910db33 Issue #9015, #9611: FileIO.readinto(), FileIO.write() and os.write() clamp the
Victor Stinner <victor.stinner@haypocalc.com>
parents: 67283
diff changeset
5790 size = write(fd, pbuf.buf, (int)len);
374dc910db33 Issue #9015, #9611: FileIO.readinto(), FileIO.write() and os.write() clamp the
Victor Stinner <victor.stinner@haypocalc.com>
parents: 67283
diff changeset
5791 #else
67520
ac6cc1404e15 Issue #9611: remove useless and dangerous explicit conversion to size_t
Victor Stinner <victor.stinner@haypocalc.com>
parents: 67416
diff changeset
5792 size = write(fd, pbuf.buf, len);
67337
374dc910db33 Issue #9015, #9611: FileIO.readinto(), FileIO.write() and os.write() clamp the
Victor Stinner <victor.stinner@haypocalc.com>
parents: 67283
diff changeset
5793 #endif
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5794 Py_END_ALLOW_THREADS
66493
4279e417b2a0 Merged revisions 86804 via svnmerge from
Stefan Krah <stefan@bytereef.org>
parents: 64428
diff changeset
5795 PyBuffer_Release(&pbuf);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5796 if (size < 0)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5797 return posix_error();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5798 return PyLong_FromSsize_t(size);
1287
673dd9bbdbf1 New posix functions open, close, dup, dup2, lseek, read, write, fstat, pipe.
Guido van Rossum <guido@python.org>
parents: 1252
diff changeset
5799 }
673dd9bbdbf1 New posix functions open, close, dup, dup2, lseek, read, write, fstat, pipe.
Guido van Rossum <guido@python.org>
parents: 1252
diff changeset
5800
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
5801
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
5802 PyDoc_STRVAR(posix_fstat__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
5803 "fstat(fd) -> stat result\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
5804 Like stat(), but for an open file descriptor.");
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
5805
4672
5b53268f547a Renamed.
Barry Warsaw <barry@python.org>
parents: 4600
diff changeset
5806 static PyObject *
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
5807 posix_fstat(PyObject *self, PyObject *args)
1287
673dd9bbdbf1 New posix functions open, close, dup, dup2, lseek, read, write, fstat, pipe.
Guido van Rossum <guido@python.org>
parents: 1252
diff changeset
5808 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5809 int fd;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5810 STRUCT_STAT st;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5811 int res;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5812 if (!PyArg_ParseTuple(args, "i:fstat", &fd))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5813 return NULL;
28169
bc2d07230934 Patch #696645: Remove VMS code with uncertain authorship.
Martin v. Löwis <martin@v.loewis.de>
parents: 28166
diff changeset
5814 #ifdef __VMS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5815 /* on OpenVMS we must ensure that all bytes are written to the file */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5816 fsync(fd);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5817 #endif
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5818 if (!_PyVerify_fd(fd))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5819 return posix_error();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5820 Py_BEGIN_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5821 res = FSTAT(fd, &st);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5822 Py_END_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5823 if (res != 0) {
36435
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
5824 #ifdef MS_WINDOWS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5825 return win32_error("fstat", NULL);
36435
26e0f68de86e Drop C library for stat/fstat on Windows.
Martin v. Löwis <martin@v.loewis.de>
parents: 36324
diff changeset
5826 #else
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5827 return posix_error();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5828 #endif
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5829 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5830
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5831 return _pystat_fromstructstat(&st);
1287
673dd9bbdbf1 New posix functions open, close, dup, dup2, lseek, read, write, fstat, pipe.
Guido van Rossum <guido@python.org>
parents: 1252
diff changeset
5832 }
673dd9bbdbf1 New posix functions open, close, dup, dup2, lseek, read, write, fstat, pipe.
Guido van Rossum <guido@python.org>
parents: 1252
diff changeset
5833
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
5834 PyDoc_STRVAR(posix_isatty__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
5835 "isatty(fd) -> bool\n\n\
23242
4e234b87170b WCOREDUMP(), WIFCONTINUED(), WCONTINUED, WUNTRACED: New.
Fred Drake <fdrake@acm.org>
parents: 23193
diff changeset
5836 Return True if the file descriptor 'fd' is an open file descriptor\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
5837 connected to the slave end of a terminal.");
13641
38ea27455cbb new method isatty from Thomas Wouters
Skip Montanaro <skip@pobox.com>
parents: 13620
diff changeset
5838
38ea27455cbb new method isatty from Thomas Wouters
Skip Montanaro <skip@pobox.com>
parents: 13620
diff changeset
5839 static PyObject *
13642
dacc9f167e95 ANSIfy the just-checked-in isatty() wrapper.
Thomas Wouters <thomas@python.org>
parents: 13641
diff changeset
5840 posix_isatty(PyObject *self, PyObject *args)
13641
38ea27455cbb new method isatty from Thomas Wouters
Skip Montanaro <skip@pobox.com>
parents: 13620
diff changeset
5841 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5842 int fd;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5843 if (!PyArg_ParseTuple(args, "i:isatty", &fd))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5844 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5845 if (!_PyVerify_fd(fd))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5846 return PyBool_FromLong(0);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5847 return PyBool_FromLong(isatty(fd));
13641
38ea27455cbb new method isatty from Thomas Wouters
Skip Montanaro <skip@pobox.com>
parents: 13620
diff changeset
5848 }
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
5849
3601
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
5850 #ifdef HAVE_PIPE
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
5851 PyDoc_STRVAR(posix_pipe__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
5852 "pipe() -> (read_end, write_end)\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
5853 Create a pipe.");
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
5854
4672
5b53268f547a Renamed.
Barry Warsaw <barry@python.org>
parents: 4600
diff changeset
5855 static PyObject *
27916
93d44870e8b5 Added test_posix (hopefully it works on Windows).
Neal Norwitz <nnorwitz@gmail.com>
parents: 27826
diff changeset
5856 posix_pipe(PyObject *self, PyObject *noargs)
1287
673dd9bbdbf1 New posix functions open, close, dup, dup2, lseek, read, write, fstat, pipe.
Guido van Rossum <guido@python.org>
parents: 1252
diff changeset
5857 {
6626
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
5858 #if defined(PYOS_OS2)
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
5859 HFILE read, write;
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
5860 APIRET rc;
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
5861
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5862 Py_BEGIN_ALLOW_THREADS
6626
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
5863 rc = DosCreatePipe( &read, &write, 4096);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5864 Py_END_ALLOW_THREADS
6626
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
5865 if (rc != NO_ERROR)
6766
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
5866 return os2_error(rc);
6626
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
5867
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
5868 return Py_BuildValue("(ii)", read, write);
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
5869 #else
24071
8142f8d668a0 Patch #569753: Remove support for WIN16.
Martin v. Löwis <martin@v.loewis.de>
parents: 23937
diff changeset
5870 #if !defined(MS_WINDOWS)
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5871 int fds[2];
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5872 int res;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5873 Py_BEGIN_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5874 res = pipe(fds);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5875 Py_END_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5876 if (res != 0)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5877 return posix_error();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5878 return Py_BuildValue("(ii)", fds[0], fds[1]);
24071
8142f8d668a0 Patch #569753: Remove support for WIN16.
Martin v. Löwis <martin@v.loewis.de>
parents: 23937
diff changeset
5879 #else /* MS_WINDOWS */
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5880 HANDLE read, write;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5881 int read_fd, write_fd;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5882 BOOL ok;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5883 Py_BEGIN_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5884 ok = CreatePipe(&read, &write, NULL, 0);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5885 Py_END_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5886 if (!ok)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5887 return win32_error("CreatePipe", NULL);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5888 read_fd = _open_osfhandle((Py_intptr_t)read, 0);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5889 write_fd = _open_osfhandle((Py_intptr_t)write, 1);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5890 return Py_BuildValue("(ii)", read_fd, write_fd);
24071
8142f8d668a0 Patch #569753: Remove support for WIN16.
Martin v. Löwis <martin@v.loewis.de>
parents: 23937
diff changeset
5891 #endif /* MS_WINDOWS */
6626
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
5892 #endif
1287
673dd9bbdbf1 New posix functions open, close, dup, dup2, lseek, read, write, fstat, pipe.
Guido van Rossum <guido@python.org>
parents: 1252
diff changeset
5893 }
3601
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
5894 #endif /* HAVE_PIPE */
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
5895
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
5896
3601
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
5897 #ifdef HAVE_MKFIFO
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
5898 PyDoc_STRVAR(posix_mkfifo__doc__,
25747
4890f1bdeaa6 Fix a few docstrings, remove extra commas
Neal Norwitz <nnorwitz@gmail.com>
parents: 25694
diff changeset
5899 "mkfifo(filename [, mode=0666])\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
5900 Create a FIFO (a POSIX named pipe).");
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
5901
4672
5b53268f547a Renamed.
Barry Warsaw <barry@python.org>
parents: 4600
diff changeset
5902 static PyObject *
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
5903 posix_mkfifo(PyObject *self, PyObject *args)
3601
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
5904 {
63927
3fa8f41a1103 Merged revisions 83951 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 63901
diff changeset
5905 PyObject *opath;
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5906 char *filename;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5907 int mode = 0666;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5908 int res;
63927
3fa8f41a1103 Merged revisions 83951 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 63901
diff changeset
5909 if (!PyArg_ParseTuple(args, "O&|i:mkfifo", PyUnicode_FSConverter, &opath,
3fa8f41a1103 Merged revisions 83951 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 63901
diff changeset
5910 &mode))
3fa8f41a1103 Merged revisions 83951 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 63901
diff changeset
5911 return NULL;
3fa8f41a1103 Merged revisions 83951 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 63901
diff changeset
5912 filename = PyBytes_AS_STRING(opath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5913 Py_BEGIN_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5914 res = mkfifo(filename, mode);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5915 Py_END_ALLOW_THREADS
63927
3fa8f41a1103 Merged revisions 83951 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 63901
diff changeset
5916 Py_DECREF(opath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5917 if (res < 0)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5918 return posix_error();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5919 Py_INCREF(Py_None);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5920 return Py_None;
23026
f3fc97da68a9 Patch #543447: Add posix.mknod.
Martin v. Löwis <martin@v.loewis.de>
parents: 22773
diff changeset
5921 }
f3fc97da68a9 Patch #543447: Add posix.mknod.
Martin v. Löwis <martin@v.loewis.de>
parents: 22773
diff changeset
5922 #endif
f3fc97da68a9 Patch #543447: Add posix.mknod.
Martin v. Löwis <martin@v.loewis.de>
parents: 22773
diff changeset
5923
f3fc97da68a9 Patch #543447: Add posix.mknod.
Martin v. Löwis <martin@v.loewis.de>
parents: 22773
diff changeset
5924
24429
f55d58ee4ea3 SF patch #584245, get python to link on OSF1 (Dec Unix)
Neal Norwitz <nnorwitz@gmail.com>
parents: 24413
diff changeset
5925 #if defined(HAVE_MKNOD) && defined(HAVE_MAKEDEV)
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
5926 PyDoc_STRVAR(posix_mknod__doc__,
25747
4890f1bdeaa6 Fix a few docstrings, remove extra commas
Neal Norwitz <nnorwitz@gmail.com>
parents: 25694
diff changeset
5927 "mknod(filename [, mode=0600, device])\n\n\
23026
f3fc97da68a9 Patch #543447: Add posix.mknod.
Martin v. Löwis <martin@v.loewis.de>
parents: 22773
diff changeset
5928 Create a filesystem node (file, device special file or named pipe)\n\
f3fc97da68a9 Patch #543447: Add posix.mknod.
Martin v. Löwis <martin@v.loewis.de>
parents: 22773
diff changeset
5929 named filename. mode specifies both the permissions to use and the\n\
f3fc97da68a9 Patch #543447: Add posix.mknod.
Martin v. Löwis <martin@v.loewis.de>
parents: 22773
diff changeset
5930 type of node to be created, being combined (bitwise OR) with one of\n\
f3fc97da68a9 Patch #543447: Add posix.mknod.
Martin v. Löwis <martin@v.loewis.de>
parents: 22773
diff changeset
5931 S_IFREG, S_IFCHR, S_IFBLK, and S_IFIFO. For S_IFCHR and S_IFBLK,\n\
25694
e9e7f160aac9 Patch #569139: Implementation of major, minor and makedev.
Martin v. Löwis <martin@v.loewis.de>
parents: 25630
diff changeset
5932 device defines the newly created device special file (probably using\n\
e9e7f160aac9 Patch #569139: Implementation of major, minor and makedev.
Martin v. Löwis <martin@v.loewis.de>
parents: 25630
diff changeset
5933 os.makedev()), otherwise it is ignored.");
23026
f3fc97da68a9 Patch #543447: Add posix.mknod.
Martin v. Löwis <martin@v.loewis.de>
parents: 22773
diff changeset
5934
f3fc97da68a9 Patch #543447: Add posix.mknod.
Martin v. Löwis <martin@v.loewis.de>
parents: 22773
diff changeset
5935
f3fc97da68a9 Patch #543447: Add posix.mknod.
Martin v. Löwis <martin@v.loewis.de>
parents: 22773
diff changeset
5936 static PyObject *
f3fc97da68a9 Patch #543447: Add posix.mknod.
Martin v. Löwis <martin@v.loewis.de>
parents: 22773
diff changeset
5937 posix_mknod(PyObject *self, PyObject *args)
f3fc97da68a9 Patch #543447: Add posix.mknod.
Martin v. Löwis <martin@v.loewis.de>
parents: 22773
diff changeset
5938 {
63927
3fa8f41a1103 Merged revisions 83951 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 63901
diff changeset
5939 PyObject *opath;
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5940 char *filename;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5941 int mode = 0600;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5942 int device = 0;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5943 int res;
63927
3fa8f41a1103 Merged revisions 83951 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 63901
diff changeset
5944 if (!PyArg_ParseTuple(args, "O&|ii:mknod", PyUnicode_FSConverter, &opath,
3fa8f41a1103 Merged revisions 83951 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 63901
diff changeset
5945 &mode, &device))
3fa8f41a1103 Merged revisions 83951 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 63901
diff changeset
5946 return NULL;
3fa8f41a1103 Merged revisions 83951 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 63901
diff changeset
5947 filename = PyBytes_AS_STRING(opath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5948 Py_BEGIN_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5949 res = mknod(filename, mode, device);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5950 Py_END_ALLOW_THREADS
63927
3fa8f41a1103 Merged revisions 83951 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 63901
diff changeset
5951 Py_DECREF(opath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5952 if (res < 0)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5953 return posix_error();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5954 Py_INCREF(Py_None);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5955 return Py_None;
3601
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
5956 }
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
5957 #endif
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
5958
25694
e9e7f160aac9 Patch #569139: Implementation of major, minor and makedev.
Martin v. Löwis <martin@v.loewis.de>
parents: 25630
diff changeset
5959 #ifdef HAVE_DEVICE_MACROS
e9e7f160aac9 Patch #569139: Implementation of major, minor and makedev.
Martin v. Löwis <martin@v.loewis.de>
parents: 25630
diff changeset
5960 PyDoc_STRVAR(posix_major__doc__,
e9e7f160aac9 Patch #569139: Implementation of major, minor and makedev.
Martin v. Löwis <martin@v.loewis.de>
parents: 25630
diff changeset
5961 "major(device) -> major number\n\
e9e7f160aac9 Patch #569139: Implementation of major, minor and makedev.
Martin v. Löwis <martin@v.loewis.de>
parents: 25630
diff changeset
5962 Extracts a device major number from a raw device number.");
e9e7f160aac9 Patch #569139: Implementation of major, minor and makedev.
Martin v. Löwis <martin@v.loewis.de>
parents: 25630
diff changeset
5963
e9e7f160aac9 Patch #569139: Implementation of major, minor and makedev.
Martin v. Löwis <martin@v.loewis.de>
parents: 25630
diff changeset
5964 static PyObject *
e9e7f160aac9 Patch #569139: Implementation of major, minor and makedev.
Martin v. Löwis <martin@v.loewis.de>
parents: 25630
diff changeset
5965 posix_major(PyObject *self, PyObject *args)
e9e7f160aac9 Patch #569139: Implementation of major, minor and makedev.
Martin v. Löwis <martin@v.loewis.de>
parents: 25630
diff changeset
5966 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5967 int device;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5968 if (!PyArg_ParseTuple(args, "i:major", &device))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5969 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5970 return PyLong_FromLong((long)major(device));
25694
e9e7f160aac9 Patch #569139: Implementation of major, minor and makedev.
Martin v. Löwis <martin@v.loewis.de>
parents: 25630
diff changeset
5971 }
e9e7f160aac9 Patch #569139: Implementation of major, minor and makedev.
Martin v. Löwis <martin@v.loewis.de>
parents: 25630
diff changeset
5972
e9e7f160aac9 Patch #569139: Implementation of major, minor and makedev.
Martin v. Löwis <martin@v.loewis.de>
parents: 25630
diff changeset
5973 PyDoc_STRVAR(posix_minor__doc__,
e9e7f160aac9 Patch #569139: Implementation of major, minor and makedev.
Martin v. Löwis <martin@v.loewis.de>
parents: 25630
diff changeset
5974 "minor(device) -> minor number\n\
e9e7f160aac9 Patch #569139: Implementation of major, minor and makedev.
Martin v. Löwis <martin@v.loewis.de>
parents: 25630
diff changeset
5975 Extracts a device minor number from a raw device number.");
e9e7f160aac9 Patch #569139: Implementation of major, minor and makedev.
Martin v. Löwis <martin@v.loewis.de>
parents: 25630
diff changeset
5976
e9e7f160aac9 Patch #569139: Implementation of major, minor and makedev.
Martin v. Löwis <martin@v.loewis.de>
parents: 25630
diff changeset
5977 static PyObject *
e9e7f160aac9 Patch #569139: Implementation of major, minor and makedev.
Martin v. Löwis <martin@v.loewis.de>
parents: 25630
diff changeset
5978 posix_minor(PyObject *self, PyObject *args)
e9e7f160aac9 Patch #569139: Implementation of major, minor and makedev.
Martin v. Löwis <martin@v.loewis.de>
parents: 25630
diff changeset
5979 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5980 int device;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5981 if (!PyArg_ParseTuple(args, "i:minor", &device))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5982 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5983 return PyLong_FromLong((long)minor(device));
25694
e9e7f160aac9 Patch #569139: Implementation of major, minor and makedev.
Martin v. Löwis <martin@v.loewis.de>
parents: 25630
diff changeset
5984 }
e9e7f160aac9 Patch #569139: Implementation of major, minor and makedev.
Martin v. Löwis <martin@v.loewis.de>
parents: 25630
diff changeset
5985
e9e7f160aac9 Patch #569139: Implementation of major, minor and makedev.
Martin v. Löwis <martin@v.loewis.de>
parents: 25630
diff changeset
5986 PyDoc_STRVAR(posix_makedev__doc__,
e9e7f160aac9 Patch #569139: Implementation of major, minor and makedev.
Martin v. Löwis <martin@v.loewis.de>
parents: 25630
diff changeset
5987 "makedev(major, minor) -> device number\n\
e9e7f160aac9 Patch #569139: Implementation of major, minor and makedev.
Martin v. Löwis <martin@v.loewis.de>
parents: 25630
diff changeset
5988 Composes a raw device number from the major and minor device numbers.");
e9e7f160aac9 Patch #569139: Implementation of major, minor and makedev.
Martin v. Löwis <martin@v.loewis.de>
parents: 25630
diff changeset
5989
e9e7f160aac9 Patch #569139: Implementation of major, minor and makedev.
Martin v. Löwis <martin@v.loewis.de>
parents: 25630
diff changeset
5990 static PyObject *
e9e7f160aac9 Patch #569139: Implementation of major, minor and makedev.
Martin v. Löwis <martin@v.loewis.de>
parents: 25630
diff changeset
5991 posix_makedev(PyObject *self, PyObject *args)
e9e7f160aac9 Patch #569139: Implementation of major, minor and makedev.
Martin v. Löwis <martin@v.loewis.de>
parents: 25630
diff changeset
5992 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5993 int major, minor;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5994 if (!PyArg_ParseTuple(args, "ii:makedev", &major, &minor))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5995 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
5996 return PyLong_FromLong((long)makedev(major, minor));
25694
e9e7f160aac9 Patch #569139: Implementation of major, minor and makedev.
Martin v. Löwis <martin@v.loewis.de>
parents: 25630
diff changeset
5997 }
e9e7f160aac9 Patch #569139: Implementation of major, minor and makedev.
Martin v. Löwis <martin@v.loewis.de>
parents: 25630
diff changeset
5998 #endif /* device macros */
e9e7f160aac9 Patch #569139: Implementation of major, minor and makedev.
Martin v. Löwis <martin@v.loewis.de>
parents: 25630
diff changeset
5999
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
6000
3601
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
6001 #ifdef HAVE_FTRUNCATE
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
6002 PyDoc_STRVAR(posix_ftruncate__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
6003 "ftruncate(fd, length)\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
6004 Truncate a file to a specified length.");
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
6005
4672
5b53268f547a Renamed.
Barry Warsaw <barry@python.org>
parents: 4600
diff changeset
6006 static PyObject *
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
6007 posix_ftruncate(PyObject *self, PyObject *args)
3601
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
6008 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6009 int fd;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6010 off_t length;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6011 int res;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6012 PyObject *lenobj;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6013
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6014 if (!PyArg_ParseTuple(args, "iO:ftruncate", &fd, &lenobj))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6015 return NULL;
9785
facb457b4d32 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
6016
facb457b4d32 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
6017 #if !defined(HAVE_LARGEFILE_SUPPORT)
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6018 length = PyLong_AsLong(lenobj);
9785
facb457b4d32 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
6019 #else
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6020 length = PyLong_Check(lenobj) ?
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6021 PyLong_AsLongLong(lenobj) : PyLong_AsLong(lenobj);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6022 #endif
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6023 if (PyErr_Occurred())
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6024 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6025
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6026 Py_BEGIN_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6027 res = ftruncate(fd, length);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6028 Py_END_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6029 if (res < 0)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6030 return posix_error();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6031 Py_INCREF(Py_None);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6032 return Py_None;
3601
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
6033 }
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
6034 #endif
793
cbf0ef998a4a Added times() (from time)
Guido van Rossum <guido@python.org>
parents: 731
diff changeset
6035
3801
843121a226ca Added simple-minded (i.e. leaking :-) putenv() interface, if os has it.
Guido van Rossum <guido@python.org>
parents: 3735
diff changeset
6036 #ifdef HAVE_PUTENV
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
6037 PyDoc_STRVAR(posix_putenv__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
6038 "putenv(key, value)\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
6039 Change or add an environment variable.");
5699
76fd5281f98a Added doc strings (Neil Schemenauer).
Guido van Rossum <guido@python.org>
parents: 5584
diff changeset
6040
11230
b69859b69763 posix_putenv(): Constrain memory leakage when setting the same
Fred Drake <fdrake@acm.org>
parents: 11172
diff changeset
6041 /* Save putenv() parameters as values here, so we can collect them when they
b69859b69763 posix_putenv(): Constrain memory leakage when setting the same
Fred Drake <fdrake@acm.org>
parents: 11172
diff changeset
6042 * get re-set with another call for the same key. */
b69859b69763 posix_putenv(): Constrain memory leakage when setting the same
Fred Drake <fdrake@acm.org>
parents: 11172
diff changeset
6043 static PyObject *posix_putenv_garbage;
b69859b69763 posix_putenv(): Constrain memory leakage when setting the same
Fred Drake <fdrake@acm.org>
parents: 11172
diff changeset
6044
21839
5e67ad76c72f Expose more MS WIndows constants usable w/ low-level os.open().
Tim Peters <tim.peters@gmail.com>
parents: 21712
diff changeset
6045 static PyObject *
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
6046 posix_putenv(PyObject *self, PyObject *args)
3801
843121a226ca Added simple-minded (i.e. leaking :-) putenv() interface, if os has it.
Guido van Rossum <guido@python.org>
parents: 3735
diff changeset
6047 {
43801
2f7c401cb62e Issue 1406: use widechar api for os.environ, on Windows.
Thomas Heller <theller@ctypes.org>
parents: 43777
diff changeset
6048 #ifdef MS_WINDOWS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6049 wchar_t *s1, *s2;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6050 wchar_t *newenv;
43801
2f7c401cb62e Issue 1406: use widechar api for os.environ, on Windows.
Thomas Heller <theller@ctypes.org>
parents: 43777
diff changeset
6051 #else
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6052 PyObject *os1, *os2;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6053 char *s1, *s2;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6054 char *newenv;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6055 #endif
61332
7e5bdf59a487 Issue #8603: Create a bytes version of os.environ for Unix
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61300
diff changeset
6056 PyObject *newstr = NULL;
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6057 size_t len;
3801
843121a226ca Added simple-minded (i.e. leaking :-) putenv() interface, if os has it.
Guido van Rossum <guido@python.org>
parents: 3735
diff changeset
6058
53767
ac209f132b17 Issue #5915: Implement PEP 383, Non-decodable Bytes in
Martin v. Löwis <martin@v.loewis.de>
parents: 53731
diff changeset
6059 #ifdef MS_WINDOWS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6060 if (!PyArg_ParseTuple(args,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6061 "uu:putenv",
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6062 &s1, &s2))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6063 return NULL;
53767
ac209f132b17 Issue #5915: Implement PEP 383, Non-decodable Bytes in
Martin v. Löwis <martin@v.loewis.de>
parents: 53731
diff changeset
6064 #else
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6065 if (!PyArg_ParseTuple(args,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6066 "O&O&:putenv",
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6067 PyUnicode_FSConverter, &os1,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6068 PyUnicode_FSConverter, &os2))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6069 return NULL;
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
6070 s1 = PyBytes_AsString(os1);
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
6071 s2 = PyBytes_AsString(os2);
53767
ac209f132b17 Issue #5915: Implement PEP 383, Non-decodable Bytes in
Martin v. Löwis <martin@v.loewis.de>
parents: 53731
diff changeset
6072 #endif
6766
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
6073
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
6074 #if defined(PYOS_OS2)
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
6075 if (stricmp(s1, "BEGINLIBPATH") == 0) {
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
6076 APIRET rc;
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
6077
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
6078 rc = DosSetExtLIBPATH(s2, BEGIN_LIBPATH);
61332
7e5bdf59a487 Issue #8603: Create a bytes version of os.environ for Unix
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61300
diff changeset
6079 if (rc != NO_ERROR) {
7e5bdf59a487 Issue #8603: Create a bytes version of os.environ for Unix
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61300
diff changeset
6080 os2_error(rc);
7e5bdf59a487 Issue #8603: Create a bytes version of os.environ for Unix
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61300
diff changeset
6081 goto error;
7e5bdf59a487 Issue #8603: Create a bytes version of os.environ for Unix
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61300
diff changeset
6082 }
6766
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
6083
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
6084 } else if (stricmp(s1, "ENDLIBPATH") == 0) {
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
6085 APIRET rc;
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
6086
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
6087 rc = DosSetExtLIBPATH(s2, END_LIBPATH);
61332
7e5bdf59a487 Issue #8603: Create a bytes version of os.environ for Unix
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61300
diff changeset
6088 if (rc != NO_ERROR) {
7e5bdf59a487 Issue #8603: Create a bytes version of os.environ for Unix
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61300
diff changeset
6089 os2_error(rc);
7e5bdf59a487 Issue #8603: Create a bytes version of os.environ for Unix
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61300
diff changeset
6090 goto error;
7e5bdf59a487 Issue #8603: Create a bytes version of os.environ for Unix
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61300
diff changeset
6091 }
6766
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
6092 } else {
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
6093 #endif
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6094 /* XXX This can leak memory -- not easy to fix :-( */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6095 /* len includes space for a trailing \0; the size arg to
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6096 PyBytes_FromStringAndSize does not count that */
43801
2f7c401cb62e Issue 1406: use widechar api for os.environ, on Windows.
Thomas Heller <theller@ctypes.org>
parents: 43777
diff changeset
6097 #ifdef MS_WINDOWS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6098 len = wcslen(s1) + wcslen(s2) + 2;
73702
3e892f428278 Issue #13415: os.unsetenv() doesn't ignore errors anymore.
Victor Stinner <victor.stinner@haypocalc.com>
parents: 73342
diff changeset
6099 if (_MAX_ENV < (len - 1)) {
3e892f428278 Issue #13415: os.unsetenv() doesn't ignore errors anymore.
Victor Stinner <victor.stinner@haypocalc.com>
parents: 73342
diff changeset
6100 PyErr_Format(PyExc_ValueError,
3e892f428278 Issue #13415: os.unsetenv() doesn't ignore errors anymore.
Victor Stinner <victor.stinner@haypocalc.com>
parents: 73342
diff changeset
6101 "the environment variable is longer than %u characters",
3e892f428278 Issue #13415: os.unsetenv() doesn't ignore errors anymore.
Victor Stinner <victor.stinner@haypocalc.com>
parents: 73342
diff changeset
6102 _MAX_ENV);
3e892f428278 Issue #13415: os.unsetenv() doesn't ignore errors anymore.
Victor Stinner <victor.stinner@haypocalc.com>
parents: 73342
diff changeset
6103 goto error;
3e892f428278 Issue #13415: os.unsetenv() doesn't ignore errors anymore.
Victor Stinner <victor.stinner@haypocalc.com>
parents: 73342
diff changeset
6104 }
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6105 newstr = PyUnicode_FromUnicode(NULL, (int)len - 1);
43801
2f7c401cb62e Issue 1406: use widechar api for os.environ, on Windows.
Thomas Heller <theller@ctypes.org>
parents: 43777
diff changeset
6106 #else
61332
7e5bdf59a487 Issue #8603: Create a bytes version of os.environ for Unix
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61300
diff changeset
6107 len = PyBytes_GET_SIZE(os1) + PyBytes_GET_SIZE(os2) + 2;
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6108 newstr = PyBytes_FromStringAndSize(NULL, (int)len - 1);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6109 #endif
61332
7e5bdf59a487 Issue #8603: Create a bytes version of os.environ for Unix
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61300
diff changeset
6110 if (newstr == NULL) {
7e5bdf59a487 Issue #8603: Create a bytes version of os.environ for Unix
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61300
diff changeset
6111 PyErr_NoMemory();
7e5bdf59a487 Issue #8603: Create a bytes version of os.environ for Unix
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61300
diff changeset
6112 goto error;
7e5bdf59a487 Issue #8603: Create a bytes version of os.environ for Unix
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61300
diff changeset
6113 }
43801
2f7c401cb62e Issue 1406: use widechar api for os.environ, on Windows.
Thomas Heller <theller@ctypes.org>
parents: 43777
diff changeset
6114 #ifdef MS_WINDOWS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6115 newenv = PyUnicode_AsUnicode(newstr);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6116 _snwprintf(newenv, len, L"%s=%s", s1, s2);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6117 if (_wputenv(newenv)) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6118 posix_error();
61332
7e5bdf59a487 Issue #8603: Create a bytes version of os.environ for Unix
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61300
diff changeset
6119 goto error;
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6120 }
43801
2f7c401cb62e Issue 1406: use widechar api for os.environ, on Windows.
Thomas Heller <theller@ctypes.org>
parents: 43777
diff changeset
6121 #else
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6122 newenv = PyBytes_AS_STRING(newstr);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6123 PyOS_snprintf(newenv, len, "%s=%s", s1, s2);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6124 if (putenv(newenv)) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6125 posix_error();
61332
7e5bdf59a487 Issue #8603: Create a bytes version of os.environ for Unix
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61300
diff changeset
6126 goto error;
7e5bdf59a487 Issue #8603: Create a bytes version of os.environ for Unix
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61300
diff changeset
6127 }
7e5bdf59a487 Issue #8603: Create a bytes version of os.environ for Unix
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61300
diff changeset
6128 #endif
7e5bdf59a487 Issue #8603: Create a bytes version of os.environ for Unix
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61300
diff changeset
6129
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6130 /* Install the first arg and newstr in posix_putenv_garbage;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6131 * this will cause previous value to be collected. This has to
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6132 * happen after the real putenv() call because the old value
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6133 * was still accessible until then. */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6134 if (PyDict_SetItem(posix_putenv_garbage,
61332
7e5bdf59a487 Issue #8603: Create a bytes version of os.environ for Unix
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61300
diff changeset
6135 #ifdef MS_WINDOWS
7e5bdf59a487 Issue #8603: Create a bytes version of os.environ for Unix
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61300
diff changeset
6136 PyTuple_GET_ITEM(args, 0),
7e5bdf59a487 Issue #8603: Create a bytes version of os.environ for Unix
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61300
diff changeset
6137 #else
7e5bdf59a487 Issue #8603: Create a bytes version of os.environ for Unix
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61300
diff changeset
6138 os1,
7e5bdf59a487 Issue #8603: Create a bytes version of os.environ for Unix
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61300
diff changeset
6139 #endif
7e5bdf59a487 Issue #8603: Create a bytes version of os.environ for Unix
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61300
diff changeset
6140 newstr)) {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6141 /* really not much we can do; just leak */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6142 PyErr_Clear();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6143 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6144 else {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6145 Py_DECREF(newstr);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6146 }
6766
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
6147
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
6148 #if defined(PYOS_OS2)
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
6149 }
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
6150 #endif
61332
7e5bdf59a487 Issue #8603: Create a bytes version of os.environ for Unix
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61300
diff changeset
6151
53767
ac209f132b17 Issue #5915: Implement PEP 383, Non-decodable Bytes in
Martin v. Löwis <martin@v.loewis.de>
parents: 53731
diff changeset
6152 #ifndef MS_WINDOWS
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
6153 Py_DECREF(os1);
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
6154 Py_DECREF(os2);
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
6155 #endif
61332
7e5bdf59a487 Issue #8603: Create a bytes version of os.environ for Unix
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61300
diff changeset
6156 Py_RETURN_NONE;
7e5bdf59a487 Issue #8603: Create a bytes version of os.environ for Unix
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61300
diff changeset
6157
7e5bdf59a487 Issue #8603: Create a bytes version of os.environ for Unix
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61300
diff changeset
6158 error:
7e5bdf59a487 Issue #8603: Create a bytes version of os.environ for Unix
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61300
diff changeset
6159 #ifndef MS_WINDOWS
7e5bdf59a487 Issue #8603: Create a bytes version of os.environ for Unix
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61300
diff changeset
6160 Py_DECREF(os1);
7e5bdf59a487 Issue #8603: Create a bytes version of os.environ for Unix
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61300
diff changeset
6161 Py_DECREF(os2);
7e5bdf59a487 Issue #8603: Create a bytes version of os.environ for Unix
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61300
diff changeset
6162 #endif
7e5bdf59a487 Issue #8603: Create a bytes version of os.environ for Unix
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61300
diff changeset
6163 Py_XDECREF(newstr);
7e5bdf59a487 Issue #8603: Create a bytes version of os.environ for Unix
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61300
diff changeset
6164 return NULL;
3801
843121a226ca Added simple-minded (i.e. leaking :-) putenv() interface, if os has it.
Guido van Rossum <guido@python.org>
parents: 3735
diff changeset
6165 }
6315
d25489c5a22f Add strerror() interface.
Guido van Rossum <guido@python.org>
parents: 6130
diff changeset
6166 #endif /* putenv */
d25489c5a22f Add strerror() interface.
Guido van Rossum <guido@python.org>
parents: 6130
diff changeset
6167
20551
c9608c790f6f SF patch #460805 by Chris Gonnerman: Support for unsetenv()
Guido van Rossum <guido@python.org>
parents: 20548
diff changeset
6168 #ifdef HAVE_UNSETENV
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
6169 PyDoc_STRVAR(posix_unsetenv__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
6170 "unsetenv(key)\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
6171 Delete an environment variable.");
20551
c9608c790f6f SF patch #460805 by Chris Gonnerman: Support for unsetenv()
Guido van Rossum <guido@python.org>
parents: 20548
diff changeset
6172
c9608c790f6f SF patch #460805 by Chris Gonnerman: Support for unsetenv()
Guido van Rossum <guido@python.org>
parents: 20548
diff changeset
6173 static PyObject *
c9608c790f6f SF patch #460805 by Chris Gonnerman: Support for unsetenv()
Guido van Rossum <guido@python.org>
parents: 20548
diff changeset
6174 posix_unsetenv(PyObject *self, PyObject *args)
c9608c790f6f SF patch #460805 by Chris Gonnerman: Support for unsetenv()
Guido van Rossum <guido@python.org>
parents: 20548
diff changeset
6175 {
61332
7e5bdf59a487 Issue #8603: Create a bytes version of os.environ for Unix
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61300
diff changeset
6176 PyObject *os1;
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6177 char *s1;
73766
26275a1c229c Issue #13415: Test in configure if unsetenv() has a return value or not.
Charles-François Natali <neologix@free.fr>
parents: 73720
diff changeset
6178 #ifndef HAVE_BROKEN_UNSETENV
73702
3e892f428278 Issue #13415: os.unsetenv() doesn't ignore errors anymore.
Victor Stinner <victor.stinner@haypocalc.com>
parents: 73342
diff changeset
6179 int err;
73766
26275a1c229c Issue #13415: Test in configure if unsetenv() has a return value or not.
Charles-François Natali <neologix@free.fr>
parents: 73720
diff changeset
6180 #endif
61332
7e5bdf59a487 Issue #8603: Create a bytes version of os.environ for Unix
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61300
diff changeset
6181
7e5bdf59a487 Issue #8603: Create a bytes version of os.environ for Unix
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61300
diff changeset
6182 if (!PyArg_ParseTuple(args, "O&:unsetenv",
7e5bdf59a487 Issue #8603: Create a bytes version of os.environ for Unix
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61300
diff changeset
6183 PyUnicode_FSConverter, &os1))
7e5bdf59a487 Issue #8603: Create a bytes version of os.environ for Unix
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61300
diff changeset
6184 return NULL;
7e5bdf59a487 Issue #8603: Create a bytes version of os.environ for Unix
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61300
diff changeset
6185 s1 = PyBytes_AsString(os1);
73702
3e892f428278 Issue #13415: os.unsetenv() doesn't ignore errors anymore.
Victor Stinner <victor.stinner@haypocalc.com>
parents: 73342
diff changeset
6186
73766
26275a1c229c Issue #13415: Test in configure if unsetenv() has a return value or not.
Charles-François Natali <neologix@free.fr>
parents: 73720
diff changeset
6187 #ifdef HAVE_BROKEN_UNSETENV
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6188 unsetenv(s1);
73766
26275a1c229c Issue #13415: Test in configure if unsetenv() has a return value or not.
Charles-François Natali <neologix@free.fr>
parents: 73720
diff changeset
6189 #else
73702
3e892f428278 Issue #13415: os.unsetenv() doesn't ignore errors anymore.
Victor Stinner <victor.stinner@haypocalc.com>
parents: 73342
diff changeset
6190 err = unsetenv(s1);
73716
714b76882eb8 plug refleak
Benjamin Peterson <benjamin@python.org>
parents: 73702
diff changeset
6191 if (err) {
73720
78f7c232f88b decref correct object
Benjamin Peterson <benjamin@python.org>
parents: 73716
diff changeset
6192 Py_DECREF(os1);
73702
3e892f428278 Issue #13415: os.unsetenv() doesn't ignore errors anymore.
Victor Stinner <victor.stinner@haypocalc.com>
parents: 73342
diff changeset
6193 return posix_error();
73716
714b76882eb8 plug refleak
Benjamin Peterson <benjamin@python.org>
parents: 73702
diff changeset
6194 }
73766
26275a1c229c Issue #13415: Test in configure if unsetenv() has a return value or not.
Charles-François Natali <neologix@free.fr>
parents: 73720
diff changeset
6195 #endif
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6196
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6197 /* Remove the key from posix_putenv_garbage;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6198 * this will cause it to be collected. This has to
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6199 * happen after the real unsetenv() call because the
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6200 * old value was still accessible until then.
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6201 */
73702
3e892f428278 Issue #13415: os.unsetenv() doesn't ignore errors anymore.
Victor Stinner <victor.stinner@haypocalc.com>
parents: 73342
diff changeset
6202 if (PyDict_DelItem(posix_putenv_garbage, os1)) {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6203 /* really not much we can do; just leak */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6204 PyErr_Clear();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6205 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6206
61332
7e5bdf59a487 Issue #8603: Create a bytes version of os.environ for Unix
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61300
diff changeset
6207 Py_DECREF(os1);
7e5bdf59a487 Issue #8603: Create a bytes version of os.environ for Unix
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61300
diff changeset
6208 Py_RETURN_NONE;
20551
c9608c790f6f SF patch #460805 by Chris Gonnerman: Support for unsetenv()
Guido van Rossum <guido@python.org>
parents: 20548
diff changeset
6209 }
c9608c790f6f SF patch #460805 by Chris Gonnerman: Support for unsetenv()
Guido van Rossum <guido@python.org>
parents: 20548
diff changeset
6210 #endif /* unsetenv */
c9608c790f6f SF patch #460805 by Chris Gonnerman: Support for unsetenv()
Guido van Rossum <guido@python.org>
parents: 20548
diff changeset
6211
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
6212 PyDoc_STRVAR(posix_strerror__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
6213 "strerror(code) -> string\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
6214 Translate an error code to a message string.");
6315
d25489c5a22f Add strerror() interface.
Guido van Rossum <guido@python.org>
parents: 6130
diff changeset
6215
17518
f939ce52a734 Make some private symbols static.
Guido van Rossum <guido@python.org>
parents: 17419
diff changeset
6216 static PyObject *
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
6217 posix_strerror(PyObject *self, PyObject *args)
6315
d25489c5a22f Add strerror() interface.
Guido van Rossum <guido@python.org>
parents: 6130
diff changeset
6218 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6219 int code;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6220 char *message;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6221 if (!PyArg_ParseTuple(args, "i:strerror", &code))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6222 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6223 message = strerror(code);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6224 if (message == NULL) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6225 PyErr_SetString(PyExc_ValueError,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6226 "strerror() argument out of range");
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6227 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6228 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6229 return PyUnicode_FromString(message);
6315
d25489c5a22f Add strerror() interface.
Guido van Rossum <guido@python.org>
parents: 6130
diff changeset
6230 }
d25489c5a22f Add strerror() interface.
Guido van Rossum <guido@python.org>
parents: 6130
diff changeset
6231
3801
843121a226ca Added simple-minded (i.e. leaking :-) putenv() interface, if os has it.
Guido van Rossum <guido@python.org>
parents: 3735
diff changeset
6232
8810
4aa76480d812 Patch by Jody Winston (with my changes) to add some of the "wait
Guido van Rossum <guido@python.org>
parents: 8708
diff changeset
6233 #ifdef HAVE_SYS_WAIT_H
4aa76480d812 Patch by Jody Winston (with my changes) to add some of the "wait
Guido van Rossum <guido@python.org>
parents: 8708
diff changeset
6234
23242
4e234b87170b WCOREDUMP(), WIFCONTINUED(), WCONTINUED, WUNTRACED: New.
Fred Drake <fdrake@acm.org>
parents: 23193
diff changeset
6235 #ifdef WCOREDUMP
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
6236 PyDoc_STRVAR(posix_WCOREDUMP__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
6237 "WCOREDUMP(status) -> bool\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
6238 Return True if the process returning 'status' was dumped to a core file.");
23242
4e234b87170b WCOREDUMP(), WIFCONTINUED(), WCONTINUED, WUNTRACED: New.
Fred Drake <fdrake@acm.org>
parents: 23193
diff changeset
6239
4e234b87170b WCOREDUMP(), WIFCONTINUED(), WCONTINUED, WUNTRACED: New.
Fred Drake <fdrake@acm.org>
parents: 23193
diff changeset
6240 static PyObject *
4e234b87170b WCOREDUMP(), WIFCONTINUED(), WCONTINUED, WUNTRACED: New.
Fred Drake <fdrake@acm.org>
parents: 23193
diff changeset
6241 posix_WCOREDUMP(PyObject *self, PyObject *args)
4e234b87170b WCOREDUMP(), WIFCONTINUED(), WCONTINUED, WUNTRACED: New.
Fred Drake <fdrake@acm.org>
parents: 23193
diff changeset
6242 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6243 WAIT_TYPE status;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6244 WAIT_STATUS_INT(status) = 0;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6245
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6246 if (!PyArg_ParseTuple(args, "i:WCOREDUMP", &WAIT_STATUS_INT(status)))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6247 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6248
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6249 return PyBool_FromLong(WCOREDUMP(status));
23242
4e234b87170b WCOREDUMP(), WIFCONTINUED(), WCONTINUED, WUNTRACED: New.
Fred Drake <fdrake@acm.org>
parents: 23193
diff changeset
6250 }
4e234b87170b WCOREDUMP(), WIFCONTINUED(), WCONTINUED, WUNTRACED: New.
Fred Drake <fdrake@acm.org>
parents: 23193
diff changeset
6251 #endif /* WCOREDUMP */
4e234b87170b WCOREDUMP(), WIFCONTINUED(), WCONTINUED, WUNTRACED: New.
Fred Drake <fdrake@acm.org>
parents: 23193
diff changeset
6252
4e234b87170b WCOREDUMP(), WIFCONTINUED(), WCONTINUED, WUNTRACED: New.
Fred Drake <fdrake@acm.org>
parents: 23193
diff changeset
6253 #ifdef WIFCONTINUED
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
6254 PyDoc_STRVAR(posix_WIFCONTINUED__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
6255 "WIFCONTINUED(status) -> bool\n\n\
23242
4e234b87170b WCOREDUMP(), WIFCONTINUED(), WCONTINUED, WUNTRACED: New.
Fred Drake <fdrake@acm.org>
parents: 23193
diff changeset
6256 Return True if the process returning 'status' was continued from a\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
6257 job control stop.");
23242
4e234b87170b WCOREDUMP(), WIFCONTINUED(), WCONTINUED, WUNTRACED: New.
Fred Drake <fdrake@acm.org>
parents: 23193
diff changeset
6258
4e234b87170b WCOREDUMP(), WIFCONTINUED(), WCONTINUED, WUNTRACED: New.
Fred Drake <fdrake@acm.org>
parents: 23193
diff changeset
6259 static PyObject *
23379
e5df086ed455 Rename posix_WCONTINUED to posix_WIFCONTINUED, call WIFCONTINUED inside,
Martin v. Löwis <martin@v.loewis.de>
parents: 23242
diff changeset
6260 posix_WIFCONTINUED(PyObject *self, PyObject *args)
23242
4e234b87170b WCOREDUMP(), WIFCONTINUED(), WCONTINUED, WUNTRACED: New.
Fred Drake <fdrake@acm.org>
parents: 23193
diff changeset
6261 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6262 WAIT_TYPE status;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6263 WAIT_STATUS_INT(status) = 0;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6264
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6265 if (!PyArg_ParseTuple(args, "i:WCONTINUED", &WAIT_STATUS_INT(status)))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6266 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6267
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6268 return PyBool_FromLong(WIFCONTINUED(status));
23242
4e234b87170b WCOREDUMP(), WIFCONTINUED(), WCONTINUED, WUNTRACED: New.
Fred Drake <fdrake@acm.org>
parents: 23193
diff changeset
6269 }
4e234b87170b WCOREDUMP(), WIFCONTINUED(), WCONTINUED, WUNTRACED: New.
Fred Drake <fdrake@acm.org>
parents: 23193
diff changeset
6270 #endif /* WIFCONTINUED */
4e234b87170b WCOREDUMP(), WIFCONTINUED(), WCONTINUED, WUNTRACED: New.
Fred Drake <fdrake@acm.org>
parents: 23193
diff changeset
6271
8810
4aa76480d812 Patch by Jody Winston (with my changes) to add some of the "wait
Guido van Rossum <guido@python.org>
parents: 8708
diff changeset
6272 #ifdef WIFSTOPPED
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
6273 PyDoc_STRVAR(posix_WIFSTOPPED__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
6274 "WIFSTOPPED(status) -> bool\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
6275 Return True if the process returning 'status' was stopped.");
8810
4aa76480d812 Patch by Jody Winston (with my changes) to add some of the "wait
Guido van Rossum <guido@python.org>
parents: 8708
diff changeset
6276
4aa76480d812 Patch by Jody Winston (with my changes) to add some of the "wait
Guido van Rossum <guido@python.org>
parents: 8708
diff changeset
6277 static PyObject *
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
6278 posix_WIFSTOPPED(PyObject *self, PyObject *args)
8810
4aa76480d812 Patch by Jody Winston (with my changes) to add some of the "wait
Guido van Rossum <guido@python.org>
parents: 8708
diff changeset
6279 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6280 WAIT_TYPE status;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6281 WAIT_STATUS_INT(status) = 0;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6282
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6283 if (!PyArg_ParseTuple(args, "i:WIFSTOPPED", &WAIT_STATUS_INT(status)))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6284 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6285
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6286 return PyBool_FromLong(WIFSTOPPED(status));
8810
4aa76480d812 Patch by Jody Winston (with my changes) to add some of the "wait
Guido van Rossum <guido@python.org>
parents: 8708
diff changeset
6287 }
4aa76480d812 Patch by Jody Winston (with my changes) to add some of the "wait
Guido van Rossum <guido@python.org>
parents: 8708
diff changeset
6288 #endif /* WIFSTOPPED */
4aa76480d812 Patch by Jody Winston (with my changes) to add some of the "wait
Guido van Rossum <guido@python.org>
parents: 8708
diff changeset
6289
4aa76480d812 Patch by Jody Winston (with my changes) to add some of the "wait
Guido van Rossum <guido@python.org>
parents: 8708
diff changeset
6290 #ifdef WIFSIGNALED
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
6291 PyDoc_STRVAR(posix_WIFSIGNALED__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
6292 "WIFSIGNALED(status) -> bool\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
6293 Return True if the process returning 'status' was terminated by a signal.");
8810
4aa76480d812 Patch by Jody Winston (with my changes) to add some of the "wait
Guido van Rossum <guido@python.org>
parents: 8708
diff changeset
6294
4aa76480d812 Patch by Jody Winston (with my changes) to add some of the "wait
Guido van Rossum <guido@python.org>
parents: 8708
diff changeset
6295 static PyObject *
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
6296 posix_WIFSIGNALED(PyObject *self, PyObject *args)
8810
4aa76480d812 Patch by Jody Winston (with my changes) to add some of the "wait
Guido van Rossum <guido@python.org>
parents: 8708
diff changeset
6297 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6298 WAIT_TYPE status;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6299 WAIT_STATUS_INT(status) = 0;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6300
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6301 if (!PyArg_ParseTuple(args, "i:WIFSIGNALED", &WAIT_STATUS_INT(status)))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6302 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6303
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6304 return PyBool_FromLong(WIFSIGNALED(status));
8810
4aa76480d812 Patch by Jody Winston (with my changes) to add some of the "wait
Guido van Rossum <guido@python.org>
parents: 8708
diff changeset
6305 }
4aa76480d812 Patch by Jody Winston (with my changes) to add some of the "wait
Guido van Rossum <guido@python.org>
parents: 8708
diff changeset
6306 #endif /* WIFSIGNALED */
4aa76480d812 Patch by Jody Winston (with my changes) to add some of the "wait
Guido van Rossum <guido@python.org>
parents: 8708
diff changeset
6307
4aa76480d812 Patch by Jody Winston (with my changes) to add some of the "wait
Guido van Rossum <guido@python.org>
parents: 8708
diff changeset
6308 #ifdef WIFEXITED
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
6309 PyDoc_STRVAR(posix_WIFEXITED__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
6310 "WIFEXITED(status) -> bool\n\n\
10073
1e21e22453dc Added documentation to the docstrings for the W*() functions that take
Fred Drake <fdrake@acm.org>
parents: 10069
diff changeset
6311 Return true if the process returning 'status' exited using the exit()\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
6312 system call.");
8810
4aa76480d812 Patch by Jody Winston (with my changes) to add some of the "wait
Guido van Rossum <guido@python.org>
parents: 8708
diff changeset
6313
4aa76480d812 Patch by Jody Winston (with my changes) to add some of the "wait
Guido van Rossum <guido@python.org>
parents: 8708
diff changeset
6314 static PyObject *
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
6315 posix_WIFEXITED(PyObject *self, PyObject *args)
8810
4aa76480d812 Patch by Jody Winston (with my changes) to add some of the "wait
Guido van Rossum <guido@python.org>
parents: 8708
diff changeset
6316 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6317 WAIT_TYPE status;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6318 WAIT_STATUS_INT(status) = 0;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6319
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6320 if (!PyArg_ParseTuple(args, "i:WIFEXITED", &WAIT_STATUS_INT(status)))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6321 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6322
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6323 return PyBool_FromLong(WIFEXITED(status));
8810
4aa76480d812 Patch by Jody Winston (with my changes) to add some of the "wait
Guido van Rossum <guido@python.org>
parents: 8708
diff changeset
6324 }
4aa76480d812 Patch by Jody Winston (with my changes) to add some of the "wait
Guido van Rossum <guido@python.org>
parents: 8708
diff changeset
6325 #endif /* WIFEXITED */
4aa76480d812 Patch by Jody Winston (with my changes) to add some of the "wait
Guido van Rossum <guido@python.org>
parents: 8708
diff changeset
6326
9970
8efa37a770c6 Patches by William Lewis for Nextstep descendants.
Guido van Rossum <guido@python.org>
parents: 9954
diff changeset
6327 #ifdef WEXITSTATUS
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
6328 PyDoc_STRVAR(posix_WEXITSTATUS__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
6329 "WEXITSTATUS(status) -> integer\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
6330 Return the process return code from 'status'.");
8810
4aa76480d812 Patch by Jody Winston (with my changes) to add some of the "wait
Guido van Rossum <guido@python.org>
parents: 8708
diff changeset
6331
4aa76480d812 Patch by Jody Winston (with my changes) to add some of the "wait
Guido van Rossum <guido@python.org>
parents: 8708
diff changeset
6332 static PyObject *
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
6333 posix_WEXITSTATUS(PyObject *self, PyObject *args)
8810
4aa76480d812 Patch by Jody Winston (with my changes) to add some of the "wait
Guido van Rossum <guido@python.org>
parents: 8708
diff changeset
6334 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6335 WAIT_TYPE status;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6336 WAIT_STATUS_INT(status) = 0;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6337
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6338 if (!PyArg_ParseTuple(args, "i:WEXITSTATUS", &WAIT_STATUS_INT(status)))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6339 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6340
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6341 return Py_BuildValue("i", WEXITSTATUS(status));
8810
4aa76480d812 Patch by Jody Winston (with my changes) to add some of the "wait
Guido van Rossum <guido@python.org>
parents: 8708
diff changeset
6342 }
4aa76480d812 Patch by Jody Winston (with my changes) to add some of the "wait
Guido van Rossum <guido@python.org>
parents: 8708
diff changeset
6343 #endif /* WEXITSTATUS */
4aa76480d812 Patch by Jody Winston (with my changes) to add some of the "wait
Guido van Rossum <guido@python.org>
parents: 8708
diff changeset
6344
4aa76480d812 Patch by Jody Winston (with my changes) to add some of the "wait
Guido van Rossum <guido@python.org>
parents: 8708
diff changeset
6345 #ifdef WTERMSIG
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
6346 PyDoc_STRVAR(posix_WTERMSIG__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
6347 "WTERMSIG(status) -> integer\n\n\
10073
1e21e22453dc Added documentation to the docstrings for the W*() functions that take
Fred Drake <fdrake@acm.org>
parents: 10069
diff changeset
6348 Return the signal that terminated the process that provided the 'status'\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
6349 value.");
8810
4aa76480d812 Patch by Jody Winston (with my changes) to add some of the "wait
Guido van Rossum <guido@python.org>
parents: 8708
diff changeset
6350
4aa76480d812 Patch by Jody Winston (with my changes) to add some of the "wait
Guido van Rossum <guido@python.org>
parents: 8708
diff changeset
6351 static PyObject *
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
6352 posix_WTERMSIG(PyObject *self, PyObject *args)
8810
4aa76480d812 Patch by Jody Winston (with my changes) to add some of the "wait
Guido van Rossum <guido@python.org>
parents: 8708
diff changeset
6353 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6354 WAIT_TYPE status;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6355 WAIT_STATUS_INT(status) = 0;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6356
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6357 if (!PyArg_ParseTuple(args, "i:WTERMSIG", &WAIT_STATUS_INT(status)))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6358 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6359
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6360 return Py_BuildValue("i", WTERMSIG(status));
8810
4aa76480d812 Patch by Jody Winston (with my changes) to add some of the "wait
Guido van Rossum <guido@python.org>
parents: 8708
diff changeset
6361 }
4aa76480d812 Patch by Jody Winston (with my changes) to add some of the "wait
Guido van Rossum <guido@python.org>
parents: 8708
diff changeset
6362 #endif /* WTERMSIG */
4aa76480d812 Patch by Jody Winston (with my changes) to add some of the "wait
Guido van Rossum <guido@python.org>
parents: 8708
diff changeset
6363
4aa76480d812 Patch by Jody Winston (with my changes) to add some of the "wait
Guido van Rossum <guido@python.org>
parents: 8708
diff changeset
6364 #ifdef WSTOPSIG
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
6365 PyDoc_STRVAR(posix_WSTOPSIG__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
6366 "WSTOPSIG(status) -> integer\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
6367 Return the signal that stopped the process that provided\n\
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
6368 the 'status' value.");
8810
4aa76480d812 Patch by Jody Winston (with my changes) to add some of the "wait
Guido van Rossum <guido@python.org>
parents: 8708
diff changeset
6369
4aa76480d812 Patch by Jody Winston (with my changes) to add some of the "wait
Guido van Rossum <guido@python.org>
parents: 8708
diff changeset
6370 static PyObject *
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
6371 posix_WSTOPSIG(PyObject *self, PyObject *args)
8810
4aa76480d812 Patch by Jody Winston (with my changes) to add some of the "wait
Guido van Rossum <guido@python.org>
parents: 8708
diff changeset
6372 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6373 WAIT_TYPE status;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6374 WAIT_STATUS_INT(status) = 0;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6375
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6376 if (!PyArg_ParseTuple(args, "i:WSTOPSIG", &WAIT_STATUS_INT(status)))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6377 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6378
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6379 return Py_BuildValue("i", WSTOPSIG(status));
8810
4aa76480d812 Patch by Jody Winston (with my changes) to add some of the "wait
Guido van Rossum <guido@python.org>
parents: 8708
diff changeset
6380 }
4aa76480d812 Patch by Jody Winston (with my changes) to add some of the "wait
Guido van Rossum <guido@python.org>
parents: 8708
diff changeset
6381 #endif /* WSTOPSIG */
4aa76480d812 Patch by Jody Winston (with my changes) to add some of the "wait
Guido van Rossum <guido@python.org>
parents: 8708
diff changeset
6382
4aa76480d812 Patch by Jody Winston (with my changes) to add some of the "wait
Guido van Rossum <guido@python.org>
parents: 8708
diff changeset
6383 #endif /* HAVE_SYS_WAIT_H */
4aa76480d812 Patch by Jody Winston (with my changes) to add some of the "wait
Guido van Rossum <guido@python.org>
parents: 8708
diff changeset
6384
4aa76480d812 Patch by Jody Winston (with my changes) to add some of the "wait
Guido van Rossum <guido@python.org>
parents: 8708
diff changeset
6385
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
6386 #if defined(HAVE_FSTATVFS) && defined(HAVE_SYS_STATVFS_H)
11391
5486dcf13d77 John DuBois tells us that SCO OpenServer 5.0 and later requires _SVID3
Guido van Rossum <guido@python.org>
parents: 11230
diff changeset
6387 #ifdef _SCO_DS
5486dcf13d77 John DuBois tells us that SCO OpenServer 5.0 and later requires _SVID3
Guido van Rossum <guido@python.org>
parents: 11230
diff changeset
6388 /* SCO OpenServer 5.0 and later requires _SVID3 before it reveals the
5486dcf13d77 John DuBois tells us that SCO OpenServer 5.0 and later requires _SVID3
Guido van Rossum <guido@python.org>
parents: 11230
diff changeset
6389 needed definitions in sys/statvfs.h */
5486dcf13d77 John DuBois tells us that SCO OpenServer 5.0 and later requires _SVID3
Guido van Rossum <guido@python.org>
parents: 11230
diff changeset
6390 #define _SVID3
5486dcf13d77 John DuBois tells us that SCO OpenServer 5.0 and later requires _SVID3
Guido van Rossum <guido@python.org>
parents: 11230
diff changeset
6391 #endif
9785
facb457b4d32 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
6392 #include <sys/statvfs.h>
facb457b4d32 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
6393
20539
2d599a36b67a SF patch #462296: Add attributes to os.stat results; by Nick Mathewson.
Guido van Rossum <guido@python.org>
parents: 20537
diff changeset
6394 static PyObject*
2d599a36b67a SF patch #462296: Add attributes to os.stat results; by Nick Mathewson.
Guido van Rossum <guido@python.org>
parents: 20537
diff changeset
6395 _pystatvfs_fromstructstatvfs(struct statvfs st) {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6396 PyObject *v = PyStructSequence_New(&StatVFSResultType);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6397 if (v == NULL)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6398 return NULL;
20539
2d599a36b67a SF patch #462296: Add attributes to os.stat results; by Nick Mathewson.
Guido van Rossum <guido@python.org>
parents: 20537
diff changeset
6399
2d599a36b67a SF patch #462296: Add attributes to os.stat results; by Nick Mathewson.
Guido van Rossum <guido@python.org>
parents: 20537
diff changeset
6400 #if !defined(HAVE_LARGEFILE_SUPPORT)
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6401 PyStructSequence_SET_ITEM(v, 0, PyLong_FromLong((long) st.f_bsize));
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6402 PyStructSequence_SET_ITEM(v, 1, PyLong_FromLong((long) st.f_frsize));
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6403 PyStructSequence_SET_ITEM(v, 2, PyLong_FromLong((long) st.f_blocks));
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6404 PyStructSequence_SET_ITEM(v, 3, PyLong_FromLong((long) st.f_bfree));
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6405 PyStructSequence_SET_ITEM(v, 4, PyLong_FromLong((long) st.f_bavail));
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6406 PyStructSequence_SET_ITEM(v, 5, PyLong_FromLong((long) st.f_files));
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6407 PyStructSequence_SET_ITEM(v, 6, PyLong_FromLong((long) st.f_ffree));
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6408 PyStructSequence_SET_ITEM(v, 7, PyLong_FromLong((long) st.f_favail));
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6409 PyStructSequence_SET_ITEM(v, 8, PyLong_FromLong((long) st.f_flag));
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6410 PyStructSequence_SET_ITEM(v, 9, PyLong_FromLong((long) st.f_namemax));
20539
2d599a36b67a SF patch #462296: Add attributes to os.stat results; by Nick Mathewson.
Guido van Rossum <guido@python.org>
parents: 20537
diff changeset
6411 #else
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6412 PyStructSequence_SET_ITEM(v, 0, PyLong_FromLong((long) st.f_bsize));
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6413 PyStructSequence_SET_ITEM(v, 1, PyLong_FromLong((long) st.f_frsize));
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6414 PyStructSequence_SET_ITEM(v, 2,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6415 PyLong_FromLongLong((PY_LONG_LONG) st.f_blocks));
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6416 PyStructSequence_SET_ITEM(v, 3,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6417 PyLong_FromLongLong((PY_LONG_LONG) st.f_bfree));
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6418 PyStructSequence_SET_ITEM(v, 4,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6419 PyLong_FromLongLong((PY_LONG_LONG) st.f_bavail));
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6420 PyStructSequence_SET_ITEM(v, 5,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6421 PyLong_FromLongLong((PY_LONG_LONG) st.f_files));
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6422 PyStructSequence_SET_ITEM(v, 6,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6423 PyLong_FromLongLong((PY_LONG_LONG) st.f_ffree));
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6424 PyStructSequence_SET_ITEM(v, 7,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6425 PyLong_FromLongLong((PY_LONG_LONG) st.f_favail));
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6426 PyStructSequence_SET_ITEM(v, 8, PyLong_FromLong((long) st.f_flag));
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6427 PyStructSequence_SET_ITEM(v, 9, PyLong_FromLong((long) st.f_namemax));
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6428 #endif
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6429
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6430 return v;
20539
2d599a36b67a SF patch #462296: Add attributes to os.stat results; by Nick Mathewson.
Guido van Rossum <guido@python.org>
parents: 20537
diff changeset
6431 }
2d599a36b67a SF patch #462296: Add attributes to os.stat results; by Nick Mathewson.
Guido van Rossum <guido@python.org>
parents: 20537
diff changeset
6432
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
6433 PyDoc_STRVAR(posix_fstatvfs__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
6434 "fstatvfs(fd) -> statvfs result\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
6435 Perform an fstatvfs system call on the given fd.");
9785
facb457b4d32 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
6436
facb457b4d32 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
6437 static PyObject *
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
6438 posix_fstatvfs(PyObject *self, PyObject *args)
9785
facb457b4d32 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
6439 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6440 int fd, res;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6441 struct statvfs st;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6442
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6443 if (!PyArg_ParseTuple(args, "i:fstatvfs", &fd))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6444 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6445 Py_BEGIN_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6446 res = fstatvfs(fd, &st);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6447 Py_END_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6448 if (res != 0)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6449 return posix_error();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6450
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6451 return _pystatvfs_fromstructstatvfs(st);
9785
facb457b4d32 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
6452 }
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
6453 #endif /* HAVE_FSTATVFS && HAVE_SYS_STATVFS_H */
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
6454
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
6455
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
6456 #if defined(HAVE_STATVFS) && defined(HAVE_SYS_STATVFS_H)
9785
facb457b4d32 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
6457 #include <sys/statvfs.h>
facb457b4d32 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
6458
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
6459 PyDoc_STRVAR(posix_statvfs__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
6460 "statvfs(path) -> statvfs result\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
6461 Perform a statvfs system call on the given path.");
9785
facb457b4d32 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
6462
facb457b4d32 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
6463 static PyObject *
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
6464 posix_statvfs(PyObject *self, PyObject *args)
9785
facb457b4d32 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
6465 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6466 char *path;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6467 int res;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6468 struct statvfs st;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6469 if (!PyArg_ParseTuple(args, "s:statvfs", &path))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6470 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6471 Py_BEGIN_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6472 res = statvfs(path, &st);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6473 Py_END_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6474 if (res != 0)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6475 return posix_error_with_filename(path);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6476
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6477 return _pystatvfs_fromstructstatvfs(st);
9785
facb457b4d32 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
6478 }
facb457b4d32 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
6479 #endif /* HAVE_STATVFS */
facb457b4d32 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
6480
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6481 /* This is used for fpathconf(), pathconf(), confstr() and sysconf().
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6482 * It maps strings representing configuration variable names to
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6483 * integer values, allowing those functions to be called with the
13620
5b727ab37092 Spelling fixes supplied by Rob W. W. Hooft. All these are fixes in either
Thomas Wouters <thomas@python.org>
parents: 13601
diff changeset
6484 * magic names instead of polluting the module's namespace with tons of
11570
885820fa7e31 Added support for getlogin(); does *not* use getlogin_r() where
Fred Drake <fdrake@acm.org>
parents: 11560
diff changeset
6485 * rarely-used constants. There are three separate tables that use
885820fa7e31 Added support for getlogin(); does *not* use getlogin_r() where
Fred Drake <fdrake@acm.org>
parents: 11560
diff changeset
6486 * these definitions.
11577
57c1685acb16 Rip out the code to check the ordering of the tables used to map
Fred Drake <fdrake@acm.org>
parents: 11574
diff changeset
6487 *
57c1685acb16 Rip out the code to check the ordering of the tables used to map
Fred Drake <fdrake@acm.org>
parents: 11574
diff changeset
6488 * This code is always included, even if none of the interfaces that
57c1685acb16 Rip out the code to check the ordering of the tables used to map
Fred Drake <fdrake@acm.org>
parents: 11574
diff changeset
6489 * need it are included. The #if hackery needed to avoid it would be
57c1685acb16 Rip out the code to check the ordering of the tables used to map
Fred Drake <fdrake@acm.org>
parents: 11574
diff changeset
6490 * sufficiently pervasive that it's not worth the loss of readability.
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6491 */
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6492 struct constdef {
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6493 char *name;
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6494 long value;
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6495 };
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6496
11570
885820fa7e31 Added support for getlogin(); does *not* use getlogin_r() where
Fred Drake <fdrake@acm.org>
parents: 11560
diff changeset
6497 static int
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
6498 conv_confname(PyObject *arg, int *valuep, struct constdef *table,
42920
aecbf5678704 posix.confname(): enforce that names as str instances.
Guido van Rossum <guido@python.org>
parents: 42863
diff changeset
6499 size_t tablesize)
11570
885820fa7e31 Added support for getlogin(); does *not* use getlogin_r() where
Fred Drake <fdrake@acm.org>
parents: 11560
diff changeset
6500 {
44099
f324631462a2 Cleanup: Replaced most PyInt_ aliases with PyLong_ and disabled the aliases in intobject.h
Christian Heimes <christian@cheimes.de>
parents: 44078
diff changeset
6501 if (PyLong_Check(arg)) {
66495
c7a342a798e7 Merged revisions 86808 via svnmerge from
Stefan Krah <stefan@bytereef.org>
parents: 66493
diff changeset
6502 *valuep = PyLong_AS_LONG(arg);
c7a342a798e7 Merged revisions 86808 via svnmerge from
Stefan Krah <stefan@bytereef.org>
parents: 66493
diff changeset
6503 return 1;
11570
885820fa7e31 Added support for getlogin(); does *not* use getlogin_r() where
Fred Drake <fdrake@acm.org>
parents: 11560
diff changeset
6504 }
41684
fb705f18bf3d Fix some miscellaneous places that incorrectly insisted on str8.
Guido van Rossum <guido@python.org>
parents: 41587
diff changeset
6505 else {
66495
c7a342a798e7 Merged revisions 86808 via svnmerge from
Stefan Krah <stefan@bytereef.org>
parents: 66493
diff changeset
6506 /* look up the value in the table using a binary search */
c7a342a798e7 Merged revisions 86808 via svnmerge from
Stefan Krah <stefan@bytereef.org>
parents: 66493
diff changeset
6507 size_t lo = 0;
c7a342a798e7 Merged revisions 86808 via svnmerge from
Stefan Krah <stefan@bytereef.org>
parents: 66493
diff changeset
6508 size_t mid;
c7a342a798e7 Merged revisions 86808 via svnmerge from
Stefan Krah <stefan@bytereef.org>
parents: 66493
diff changeset
6509 size_t hi = tablesize;
c7a342a798e7 Merged revisions 86808 via svnmerge from
Stefan Krah <stefan@bytereef.org>
parents: 66493
diff changeset
6510 int cmp;
c7a342a798e7 Merged revisions 86808 via svnmerge from
Stefan Krah <stefan@bytereef.org>
parents: 66493
diff changeset
6511 const char *confname;
c7a342a798e7 Merged revisions 86808 via svnmerge from
Stefan Krah <stefan@bytereef.org>
parents: 66493
diff changeset
6512 if (!PyUnicode_Check(arg)) {
c7a342a798e7 Merged revisions 86808 via svnmerge from
Stefan Krah <stefan@bytereef.org>
parents: 66493
diff changeset
6513 PyErr_SetString(PyExc_TypeError,
c7a342a798e7 Merged revisions 86808 via svnmerge from
Stefan Krah <stefan@bytereef.org>
parents: 66493
diff changeset
6514 "configuration names must be strings or integers");
c7a342a798e7 Merged revisions 86808 via svnmerge from
Stefan Krah <stefan@bytereef.org>
parents: 66493
diff changeset
6515 return 0;
c7a342a798e7 Merged revisions 86808 via svnmerge from
Stefan Krah <stefan@bytereef.org>
parents: 66493
diff changeset
6516 }
c7a342a798e7 Merged revisions 86808 via svnmerge from
Stefan Krah <stefan@bytereef.org>
parents: 66493
diff changeset
6517 confname = _PyUnicode_AsString(arg);
c7a342a798e7 Merged revisions 86808 via svnmerge from
Stefan Krah <stefan@bytereef.org>
parents: 66493
diff changeset
6518 if (confname == NULL)
c7a342a798e7 Merged revisions 86808 via svnmerge from
Stefan Krah <stefan@bytereef.org>
parents: 66493
diff changeset
6519 return 0;
c7a342a798e7 Merged revisions 86808 via svnmerge from
Stefan Krah <stefan@bytereef.org>
parents: 66493
diff changeset
6520 while (lo < hi) {
c7a342a798e7 Merged revisions 86808 via svnmerge from
Stefan Krah <stefan@bytereef.org>
parents: 66493
diff changeset
6521 mid = (lo + hi) / 2;
c7a342a798e7 Merged revisions 86808 via svnmerge from
Stefan Krah <stefan@bytereef.org>
parents: 66493
diff changeset
6522 cmp = strcmp(confname, table[mid].name);
c7a342a798e7 Merged revisions 86808 via svnmerge from
Stefan Krah <stefan@bytereef.org>
parents: 66493
diff changeset
6523 if (cmp < 0)
c7a342a798e7 Merged revisions 86808 via svnmerge from
Stefan Krah <stefan@bytereef.org>
parents: 66493
diff changeset
6524 hi = mid;
c7a342a798e7 Merged revisions 86808 via svnmerge from
Stefan Krah <stefan@bytereef.org>
parents: 66493
diff changeset
6525 else if (cmp > 0)
c7a342a798e7 Merged revisions 86808 via svnmerge from
Stefan Krah <stefan@bytereef.org>
parents: 66493
diff changeset
6526 lo = mid + 1;
c7a342a798e7 Merged revisions 86808 via svnmerge from
Stefan Krah <stefan@bytereef.org>
parents: 66493
diff changeset
6527 else {
c7a342a798e7 Merged revisions 86808 via svnmerge from
Stefan Krah <stefan@bytereef.org>
parents: 66493
diff changeset
6528 *valuep = table[mid].value;
c7a342a798e7 Merged revisions 86808 via svnmerge from
Stefan Krah <stefan@bytereef.org>
parents: 66493
diff changeset
6529 return 1;
c7a342a798e7 Merged revisions 86808 via svnmerge from
Stefan Krah <stefan@bytereef.org>
parents: 66493
diff changeset
6530 }
c7a342a798e7 Merged revisions 86808 via svnmerge from
Stefan Krah <stefan@bytereef.org>
parents: 66493
diff changeset
6531 }
c7a342a798e7 Merged revisions 86808 via svnmerge from
Stefan Krah <stefan@bytereef.org>
parents: 66493
diff changeset
6532 PyErr_SetString(PyExc_ValueError, "unrecognized configuration name");
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6533 return 0;
11570
885820fa7e31 Added support for getlogin(); does *not* use getlogin_r() where
Fred Drake <fdrake@acm.org>
parents: 11560
diff changeset
6534 }
885820fa7e31 Added support for getlogin(); does *not* use getlogin_r() where
Fred Drake <fdrake@acm.org>
parents: 11560
diff changeset
6535 }
885820fa7e31 Added support for getlogin(); does *not* use getlogin_r() where
Fred Drake <fdrake@acm.org>
parents: 11560
diff changeset
6536
885820fa7e31 Added support for getlogin(); does *not* use getlogin_r() where
Fred Drake <fdrake@acm.org>
parents: 11560
diff changeset
6537
885820fa7e31 Added support for getlogin(); does *not* use getlogin_r() where
Fred Drake <fdrake@acm.org>
parents: 11560
diff changeset
6538 #if defined(HAVE_FPATHCONF) || defined(HAVE_PATHCONF)
885820fa7e31 Added support for getlogin(); does *not* use getlogin_r() where
Fred Drake <fdrake@acm.org>
parents: 11560
diff changeset
6539 static struct constdef posix_constants_pathconf[] = {
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
6540 #ifdef _PC_ABI_AIO_XFER_MAX
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6541 {"PC_ABI_AIO_XFER_MAX", _PC_ABI_AIO_XFER_MAX},
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
6542 #endif
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
6543 #ifdef _PC_ABI_ASYNC_IO
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6544 {"PC_ABI_ASYNC_IO", _PC_ABI_ASYNC_IO},
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
6545 #endif
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6546 #ifdef _PC_ASYNC_IO
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6547 {"PC_ASYNC_IO", _PC_ASYNC_IO},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6548 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6549 #ifdef _PC_CHOWN_RESTRICTED
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6550 {"PC_CHOWN_RESTRICTED", _PC_CHOWN_RESTRICTED},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6551 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6552 #ifdef _PC_FILESIZEBITS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6553 {"PC_FILESIZEBITS", _PC_FILESIZEBITS},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6554 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6555 #ifdef _PC_LAST
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6556 {"PC_LAST", _PC_LAST},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6557 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6558 #ifdef _PC_LINK_MAX
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6559 {"PC_LINK_MAX", _PC_LINK_MAX},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6560 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6561 #ifdef _PC_MAX_CANON
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6562 {"PC_MAX_CANON", _PC_MAX_CANON},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6563 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6564 #ifdef _PC_MAX_INPUT
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6565 {"PC_MAX_INPUT", _PC_MAX_INPUT},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6566 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6567 #ifdef _PC_NAME_MAX
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6568 {"PC_NAME_MAX", _PC_NAME_MAX},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6569 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6570 #ifdef _PC_NO_TRUNC
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6571 {"PC_NO_TRUNC", _PC_NO_TRUNC},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6572 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6573 #ifdef _PC_PATH_MAX
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6574 {"PC_PATH_MAX", _PC_PATH_MAX},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6575 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6576 #ifdef _PC_PIPE_BUF
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6577 {"PC_PIPE_BUF", _PC_PIPE_BUF},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6578 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6579 #ifdef _PC_PRIO_IO
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6580 {"PC_PRIO_IO", _PC_PRIO_IO},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6581 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6582 #ifdef _PC_SOCK_MAXBUF
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6583 {"PC_SOCK_MAXBUF", _PC_SOCK_MAXBUF},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6584 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6585 #ifdef _PC_SYNC_IO
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6586 {"PC_SYNC_IO", _PC_SYNC_IO},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6587 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6588 #ifdef _PC_VDISABLE
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6589 {"PC_VDISABLE", _PC_VDISABLE},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6590 #endif
65633
5c1ce5c360da Issue #10143: Update "os.pathconf" values
Jesus Cea <jcea@jcea.es>
parents: 64919
diff changeset
6591 #ifdef _PC_ACL_ENABLED
5c1ce5c360da Issue #10143: Update "os.pathconf" values
Jesus Cea <jcea@jcea.es>
parents: 64919
diff changeset
6592 {"PC_ACL_ENABLED", _PC_ACL_ENABLED},
5c1ce5c360da Issue #10143: Update "os.pathconf" values
Jesus Cea <jcea@jcea.es>
parents: 64919
diff changeset
6593 #endif
5c1ce5c360da Issue #10143: Update "os.pathconf" values
Jesus Cea <jcea@jcea.es>
parents: 64919
diff changeset
6594 #ifdef _PC_MIN_HOLE_SIZE
5c1ce5c360da Issue #10143: Update "os.pathconf" values
Jesus Cea <jcea@jcea.es>
parents: 64919
diff changeset
6595 {"PC_MIN_HOLE_SIZE", _PC_MIN_HOLE_SIZE},
5c1ce5c360da Issue #10143: Update "os.pathconf" values
Jesus Cea <jcea@jcea.es>
parents: 64919
diff changeset
6596 #endif
5c1ce5c360da Issue #10143: Update "os.pathconf" values
Jesus Cea <jcea@jcea.es>
parents: 64919
diff changeset
6597 #ifdef _PC_ALLOC_SIZE_MIN
5c1ce5c360da Issue #10143: Update "os.pathconf" values
Jesus Cea <jcea@jcea.es>
parents: 64919
diff changeset
6598 {"PC_ALLOC_SIZE_MIN", _PC_ALLOC_SIZE_MIN},
5c1ce5c360da Issue #10143: Update "os.pathconf" values
Jesus Cea <jcea@jcea.es>
parents: 64919
diff changeset
6599 #endif
5c1ce5c360da Issue #10143: Update "os.pathconf" values
Jesus Cea <jcea@jcea.es>
parents: 64919
diff changeset
6600 #ifdef _PC_REC_INCR_XFER_SIZE
5c1ce5c360da Issue #10143: Update "os.pathconf" values
Jesus Cea <jcea@jcea.es>
parents: 64919
diff changeset
6601 {"PC_REC_INCR_XFER_SIZE", _PC_REC_INCR_XFER_SIZE},
5c1ce5c360da Issue #10143: Update "os.pathconf" values
Jesus Cea <jcea@jcea.es>
parents: 64919
diff changeset
6602 #endif
5c1ce5c360da Issue #10143: Update "os.pathconf" values
Jesus Cea <jcea@jcea.es>
parents: 64919
diff changeset
6603 #ifdef _PC_REC_MAX_XFER_SIZE
5c1ce5c360da Issue #10143: Update "os.pathconf" values
Jesus Cea <jcea@jcea.es>
parents: 64919
diff changeset
6604 {"PC_REC_MAX_XFER_SIZE", _PC_REC_MAX_XFER_SIZE},
5c1ce5c360da Issue #10143: Update "os.pathconf" values
Jesus Cea <jcea@jcea.es>
parents: 64919
diff changeset
6605 #endif
5c1ce5c360da Issue #10143: Update "os.pathconf" values
Jesus Cea <jcea@jcea.es>
parents: 64919
diff changeset
6606 #ifdef _PC_REC_MIN_XFER_SIZE
5c1ce5c360da Issue #10143: Update "os.pathconf" values
Jesus Cea <jcea@jcea.es>
parents: 64919
diff changeset
6607 {"PC_REC_MIN_XFER_SIZE", _PC_REC_MIN_XFER_SIZE},
5c1ce5c360da Issue #10143: Update "os.pathconf" values
Jesus Cea <jcea@jcea.es>
parents: 64919
diff changeset
6608 #endif
5c1ce5c360da Issue #10143: Update "os.pathconf" values
Jesus Cea <jcea@jcea.es>
parents: 64919
diff changeset
6609 #ifdef _PC_REC_XFER_ALIGN
5c1ce5c360da Issue #10143: Update "os.pathconf" values
Jesus Cea <jcea@jcea.es>
parents: 64919
diff changeset
6610 {"PC_REC_XFER_ALIGN", _PC_REC_XFER_ALIGN},
5c1ce5c360da Issue #10143: Update "os.pathconf" values
Jesus Cea <jcea@jcea.es>
parents: 64919
diff changeset
6611 #endif
5c1ce5c360da Issue #10143: Update "os.pathconf" values
Jesus Cea <jcea@jcea.es>
parents: 64919
diff changeset
6612 #ifdef _PC_SYMLINK_MAX
5c1ce5c360da Issue #10143: Update "os.pathconf" values
Jesus Cea <jcea@jcea.es>
parents: 64919
diff changeset
6613 {"PC_SYMLINK_MAX", _PC_SYMLINK_MAX},
5c1ce5c360da Issue #10143: Update "os.pathconf" values
Jesus Cea <jcea@jcea.es>
parents: 64919
diff changeset
6614 #endif
5c1ce5c360da Issue #10143: Update "os.pathconf" values
Jesus Cea <jcea@jcea.es>
parents: 64919
diff changeset
6615 #ifdef _PC_XATTR_ENABLED
5c1ce5c360da Issue #10143: Update "os.pathconf" values
Jesus Cea <jcea@jcea.es>
parents: 64919
diff changeset
6616 {"PC_XATTR_ENABLED", _PC_XATTR_ENABLED},
5c1ce5c360da Issue #10143: Update "os.pathconf" values
Jesus Cea <jcea@jcea.es>
parents: 64919
diff changeset
6617 #endif
5c1ce5c360da Issue #10143: Update "os.pathconf" values
Jesus Cea <jcea@jcea.es>
parents: 64919
diff changeset
6618 #ifdef _PC_XATTR_EXISTS
5c1ce5c360da Issue #10143: Update "os.pathconf" values
Jesus Cea <jcea@jcea.es>
parents: 64919
diff changeset
6619 {"PC_XATTR_EXISTS", _PC_XATTR_EXISTS},
5c1ce5c360da Issue #10143: Update "os.pathconf" values
Jesus Cea <jcea@jcea.es>
parents: 64919
diff changeset
6620 #endif
5c1ce5c360da Issue #10143: Update "os.pathconf" values
Jesus Cea <jcea@jcea.es>
parents: 64919
diff changeset
6621 #ifdef _PC_TIMESTAMP_RESOLUTION
5c1ce5c360da Issue #10143: Update "os.pathconf" values
Jesus Cea <jcea@jcea.es>
parents: 64919
diff changeset
6622 {"PC_TIMESTAMP_RESOLUTION", _PC_TIMESTAMP_RESOLUTION},
5c1ce5c360da Issue #10143: Update "os.pathconf" values
Jesus Cea <jcea@jcea.es>
parents: 64919
diff changeset
6623 #endif
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6624 };
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6625
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6626 static int
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
6627 conv_path_confname(PyObject *arg, int *valuep)
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6628 {
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6629 return conv_confname(arg, valuep, posix_constants_pathconf,
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6630 sizeof(posix_constants_pathconf)
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6631 / sizeof(struct constdef));
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6632 }
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6633 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6634
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6635 #ifdef HAVE_FPATHCONF
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
6636 PyDoc_STRVAR(posix_fpathconf__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
6637 "fpathconf(fd, name) -> integer\n\n\
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6638 Return the configuration limit name for the file descriptor fd.\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
6639 If there is no limit, return -1.");
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6640
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6641 static PyObject *
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
6642 posix_fpathconf(PyObject *self, PyObject *args)
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6643 {
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6644 PyObject *result = NULL;
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6645 int name, fd;
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6646
11570
885820fa7e31 Added support for getlogin(); does *not* use getlogin_r() where
Fred Drake <fdrake@acm.org>
parents: 11560
diff changeset
6647 if (PyArg_ParseTuple(args, "iO&:fpathconf", &fd,
885820fa7e31 Added support for getlogin(); does *not* use getlogin_r() where
Fred Drake <fdrake@acm.org>
parents: 11560
diff changeset
6648 conv_path_confname, &name)) {
66495
c7a342a798e7 Merged revisions 86808 via svnmerge from
Stefan Krah <stefan@bytereef.org>
parents: 66493
diff changeset
6649 long limit;
c7a342a798e7 Merged revisions 86808 via svnmerge from
Stefan Krah <stefan@bytereef.org>
parents: 66493
diff changeset
6650
c7a342a798e7 Merged revisions 86808 via svnmerge from
Stefan Krah <stefan@bytereef.org>
parents: 66493
diff changeset
6651 errno = 0;
c7a342a798e7 Merged revisions 86808 via svnmerge from
Stefan Krah <stefan@bytereef.org>
parents: 66493
diff changeset
6652 limit = fpathconf(fd, name);
c7a342a798e7 Merged revisions 86808 via svnmerge from
Stefan Krah <stefan@bytereef.org>
parents: 66493
diff changeset
6653 if (limit == -1 && errno != 0)
c7a342a798e7 Merged revisions 86808 via svnmerge from
Stefan Krah <stefan@bytereef.org>
parents: 66493
diff changeset
6654 posix_error();
c7a342a798e7 Merged revisions 86808 via svnmerge from
Stefan Krah <stefan@bytereef.org>
parents: 66493
diff changeset
6655 else
c7a342a798e7 Merged revisions 86808 via svnmerge from
Stefan Krah <stefan@bytereef.org>
parents: 66493
diff changeset
6656 result = PyLong_FromLong(limit);
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6657 }
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6658 return result;
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6659 }
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6660 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6661
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6662
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6663 #ifdef HAVE_PATHCONF
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
6664 PyDoc_STRVAR(posix_pathconf__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
6665 "pathconf(path, name) -> integer\n\n\
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6666 Return the configuration limit name for the file or directory path.\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
6667 If there is no limit, return -1.");
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6668
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6669 static PyObject *
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
6670 posix_pathconf(PyObject *self, PyObject *args)
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6671 {
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6672 PyObject *result = NULL;
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6673 int name;
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6674 char *path;
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6675
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6676 if (PyArg_ParseTuple(args, "sO&:pathconf", &path,
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6677 conv_path_confname, &name)) {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6678 long limit;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6679
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6680 errno = 0;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6681 limit = pathconf(path, name);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6682 if (limit == -1 && errno != 0) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6683 if (errno == EINVAL)
66493
4279e417b2a0 Merged revisions 86804 via svnmerge from
Stefan Krah <stefan@bytereef.org>
parents: 64428
diff changeset
6684 /* could be a path or name problem */
4279e417b2a0 Merged revisions 86804 via svnmerge from
Stefan Krah <stefan@bytereef.org>
parents: 64428
diff changeset
6685 posix_error();
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6686 else
66493
4279e417b2a0 Merged revisions 86804 via svnmerge from
Stefan Krah <stefan@bytereef.org>
parents: 64428
diff changeset
6687 posix_error_with_filename(path);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6688 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6689 else
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6690 result = PyLong_FromLong(limit);
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6691 }
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6692 return result;
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6693 }
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6694 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6695
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6696 #ifdef HAVE_CONFSTR
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6697 static struct constdef posix_constants_confstr[] = {
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
6698 #ifdef _CS_ARCHITECTURE
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6699 {"CS_ARCHITECTURE", _CS_ARCHITECTURE},
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
6700 #endif
60631
cc10a1527521 Merged revisions 80108,80111,80114-80115 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 60622
diff changeset
6701 #ifdef _CS_GNU_LIBC_VERSION
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6702 {"CS_GNU_LIBC_VERSION", _CS_GNU_LIBC_VERSION},
60631
cc10a1527521 Merged revisions 80108,80111,80114-80115 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 60622
diff changeset
6703 #endif
cc10a1527521 Merged revisions 80108,80111,80114-80115 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 60622
diff changeset
6704 #ifdef _CS_GNU_LIBPTHREAD_VERSION
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6705 {"CS_GNU_LIBPTHREAD_VERSION", _CS_GNU_LIBPTHREAD_VERSION},
60631
cc10a1527521 Merged revisions 80108,80111,80114-80115 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 60622
diff changeset
6706 #endif
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
6707 #ifdef _CS_HOSTNAME
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6708 {"CS_HOSTNAME", _CS_HOSTNAME},
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
6709 #endif
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
6710 #ifdef _CS_HW_PROVIDER
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6711 {"CS_HW_PROVIDER", _CS_HW_PROVIDER},
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
6712 #endif
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
6713 #ifdef _CS_HW_SERIAL
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6714 {"CS_HW_SERIAL", _CS_HW_SERIAL},
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
6715 #endif
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
6716 #ifdef _CS_INITTAB_NAME
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6717 {"CS_INITTAB_NAME", _CS_INITTAB_NAME},
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
6718 #endif
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6719 #ifdef _CS_LFS64_CFLAGS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6720 {"CS_LFS64_CFLAGS", _CS_LFS64_CFLAGS},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6721 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6722 #ifdef _CS_LFS64_LDFLAGS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6723 {"CS_LFS64_LDFLAGS", _CS_LFS64_LDFLAGS},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6724 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6725 #ifdef _CS_LFS64_LIBS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6726 {"CS_LFS64_LIBS", _CS_LFS64_LIBS},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6727 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6728 #ifdef _CS_LFS64_LINTFLAGS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6729 {"CS_LFS64_LINTFLAGS", _CS_LFS64_LINTFLAGS},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6730 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6731 #ifdef _CS_LFS_CFLAGS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6732 {"CS_LFS_CFLAGS", _CS_LFS_CFLAGS},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6733 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6734 #ifdef _CS_LFS_LDFLAGS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6735 {"CS_LFS_LDFLAGS", _CS_LFS_LDFLAGS},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6736 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6737 #ifdef _CS_LFS_LIBS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6738 {"CS_LFS_LIBS", _CS_LFS_LIBS},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6739 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6740 #ifdef _CS_LFS_LINTFLAGS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6741 {"CS_LFS_LINTFLAGS", _CS_LFS_LINTFLAGS},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6742 #endif
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
6743 #ifdef _CS_MACHINE
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6744 {"CS_MACHINE", _CS_MACHINE},
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
6745 #endif
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6746 #ifdef _CS_PATH
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6747 {"CS_PATH", _CS_PATH},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6748 #endif
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
6749 #ifdef _CS_RELEASE
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6750 {"CS_RELEASE", _CS_RELEASE},
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
6751 #endif
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
6752 #ifdef _CS_SRPC_DOMAIN
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6753 {"CS_SRPC_DOMAIN", _CS_SRPC_DOMAIN},
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
6754 #endif
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
6755 #ifdef _CS_SYSNAME
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6756 {"CS_SYSNAME", _CS_SYSNAME},
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
6757 #endif
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
6758 #ifdef _CS_VERSION
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6759 {"CS_VERSION", _CS_VERSION},
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
6760 #endif
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6761 #ifdef _CS_XBS5_ILP32_OFF32_CFLAGS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6762 {"CS_XBS5_ILP32_OFF32_CFLAGS", _CS_XBS5_ILP32_OFF32_CFLAGS},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6763 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6764 #ifdef _CS_XBS5_ILP32_OFF32_LDFLAGS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6765 {"CS_XBS5_ILP32_OFF32_LDFLAGS", _CS_XBS5_ILP32_OFF32_LDFLAGS},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6766 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6767 #ifdef _CS_XBS5_ILP32_OFF32_LIBS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6768 {"CS_XBS5_ILP32_OFF32_LIBS", _CS_XBS5_ILP32_OFF32_LIBS},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6769 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6770 #ifdef _CS_XBS5_ILP32_OFF32_LINTFLAGS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6771 {"CS_XBS5_ILP32_OFF32_LINTFLAGS", _CS_XBS5_ILP32_OFF32_LINTFLAGS},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6772 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6773 #ifdef _CS_XBS5_ILP32_OFFBIG_CFLAGS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6774 {"CS_XBS5_ILP32_OFFBIG_CFLAGS", _CS_XBS5_ILP32_OFFBIG_CFLAGS},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6775 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6776 #ifdef _CS_XBS5_ILP32_OFFBIG_LDFLAGS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6777 {"CS_XBS5_ILP32_OFFBIG_LDFLAGS", _CS_XBS5_ILP32_OFFBIG_LDFLAGS},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6778 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6779 #ifdef _CS_XBS5_ILP32_OFFBIG_LIBS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6780 {"CS_XBS5_ILP32_OFFBIG_LIBS", _CS_XBS5_ILP32_OFFBIG_LIBS},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6781 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6782 #ifdef _CS_XBS5_ILP32_OFFBIG_LINTFLAGS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6783 {"CS_XBS5_ILP32_OFFBIG_LINTFLAGS", _CS_XBS5_ILP32_OFFBIG_LINTFLAGS},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6784 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6785 #ifdef _CS_XBS5_LP64_OFF64_CFLAGS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6786 {"CS_XBS5_LP64_OFF64_CFLAGS", _CS_XBS5_LP64_OFF64_CFLAGS},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6787 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6788 #ifdef _CS_XBS5_LP64_OFF64_LDFLAGS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6789 {"CS_XBS5_LP64_OFF64_LDFLAGS", _CS_XBS5_LP64_OFF64_LDFLAGS},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6790 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6791 #ifdef _CS_XBS5_LP64_OFF64_LIBS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6792 {"CS_XBS5_LP64_OFF64_LIBS", _CS_XBS5_LP64_OFF64_LIBS},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6793 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6794 #ifdef _CS_XBS5_LP64_OFF64_LINTFLAGS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6795 {"CS_XBS5_LP64_OFF64_LINTFLAGS", _CS_XBS5_LP64_OFF64_LINTFLAGS},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6796 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6797 #ifdef _CS_XBS5_LPBIG_OFFBIG_CFLAGS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6798 {"CS_XBS5_LPBIG_OFFBIG_CFLAGS", _CS_XBS5_LPBIG_OFFBIG_CFLAGS},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6799 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6800 #ifdef _CS_XBS5_LPBIG_OFFBIG_LDFLAGS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6801 {"CS_XBS5_LPBIG_OFFBIG_LDFLAGS", _CS_XBS5_LPBIG_OFFBIG_LDFLAGS},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6802 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6803 #ifdef _CS_XBS5_LPBIG_OFFBIG_LIBS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6804 {"CS_XBS5_LPBIG_OFFBIG_LIBS", _CS_XBS5_LPBIG_OFFBIG_LIBS},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6805 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6806 #ifdef _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6807 {"CS_XBS5_LPBIG_OFFBIG_LINTFLAGS", _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6808 #endif
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
6809 #ifdef _MIPS_CS_AVAIL_PROCESSORS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6810 {"MIPS_CS_AVAIL_PROCESSORS", _MIPS_CS_AVAIL_PROCESSORS},
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
6811 #endif
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
6812 #ifdef _MIPS_CS_BASE
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6813 {"MIPS_CS_BASE", _MIPS_CS_BASE},
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
6814 #endif
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
6815 #ifdef _MIPS_CS_HOSTID
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6816 {"MIPS_CS_HOSTID", _MIPS_CS_HOSTID},
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
6817 #endif
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
6818 #ifdef _MIPS_CS_HW_NAME
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6819 {"MIPS_CS_HW_NAME", _MIPS_CS_HW_NAME},
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
6820 #endif
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
6821 #ifdef _MIPS_CS_NUM_PROCESSORS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6822 {"MIPS_CS_NUM_PROCESSORS", _MIPS_CS_NUM_PROCESSORS},
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
6823 #endif
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
6824 #ifdef _MIPS_CS_OSREL_MAJ
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6825 {"MIPS_CS_OSREL_MAJ", _MIPS_CS_OSREL_MAJ},
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
6826 #endif
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
6827 #ifdef _MIPS_CS_OSREL_MIN
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6828 {"MIPS_CS_OSREL_MIN", _MIPS_CS_OSREL_MIN},
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
6829 #endif
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
6830 #ifdef _MIPS_CS_OSREL_PATCH
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6831 {"MIPS_CS_OSREL_PATCH", _MIPS_CS_OSREL_PATCH},
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
6832 #endif
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
6833 #ifdef _MIPS_CS_OS_NAME
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6834 {"MIPS_CS_OS_NAME", _MIPS_CS_OS_NAME},
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
6835 #endif
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
6836 #ifdef _MIPS_CS_OS_PROVIDER
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6837 {"MIPS_CS_OS_PROVIDER", _MIPS_CS_OS_PROVIDER},
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
6838 #endif
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
6839 #ifdef _MIPS_CS_PROCESSORS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6840 {"MIPS_CS_PROCESSORS", _MIPS_CS_PROCESSORS},
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
6841 #endif
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
6842 #ifdef _MIPS_CS_SERIAL
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6843 {"MIPS_CS_SERIAL", _MIPS_CS_SERIAL},
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
6844 #endif
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
6845 #ifdef _MIPS_CS_VENDOR
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6846 {"MIPS_CS_VENDOR", _MIPS_CS_VENDOR},
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
6847 #endif
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6848 };
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6849
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6850 static int
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
6851 conv_confstr_confname(PyObject *arg, int *valuep)
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6852 {
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6853 return conv_confname(arg, valuep, posix_constants_confstr,
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6854 sizeof(posix_constants_confstr)
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6855 / sizeof(struct constdef));
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6856 }
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6857
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
6858 PyDoc_STRVAR(posix_confstr__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
6859 "confstr(name) -> string\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
6860 Return a string-valued system configuration variable.");
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6861
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6862 static PyObject *
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
6863 posix_confstr(PyObject *self, PyObject *args)
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6864 {
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6865 PyObject *result = NULL;
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6866 int name;
64631
a608fe1e86f0 Issue #9579, #9580: Fix os.confstr() for value longer than 255 bytes and encode
Victor Stinner <victor.stinner@haypocalc.com>
parents: 64608
diff changeset
6867 char buffer[255];
66493
4279e417b2a0 Merged revisions 86804 via svnmerge from
Stefan Krah <stefan@bytereef.org>
parents: 64428
diff changeset
6868 int len;
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6869
64631
a608fe1e86f0 Issue #9579, #9580: Fix os.confstr() for value longer than 255 bytes and encode
Victor Stinner <victor.stinner@haypocalc.com>
parents: 64608
diff changeset
6870 if (!PyArg_ParseTuple(args, "O&:confstr", conv_confstr_confname, &name))
a608fe1e86f0 Issue #9579, #9580: Fix os.confstr() for value longer than 255 bytes and encode
Victor Stinner <victor.stinner@haypocalc.com>
parents: 64608
diff changeset
6871 return NULL;
a608fe1e86f0 Issue #9579, #9580: Fix os.confstr() for value longer than 255 bytes and encode
Victor Stinner <victor.stinner@haypocalc.com>
parents: 64608
diff changeset
6872
a608fe1e86f0 Issue #9579, #9580: Fix os.confstr() for value longer than 255 bytes and encode
Victor Stinner <victor.stinner@haypocalc.com>
parents: 64608
diff changeset
6873 errno = 0;
a608fe1e86f0 Issue #9579, #9580: Fix os.confstr() for value longer than 255 bytes and encode
Victor Stinner <victor.stinner@haypocalc.com>
parents: 64608
diff changeset
6874 len = confstr(name, buffer, sizeof(buffer));
a608fe1e86f0 Issue #9579, #9580: Fix os.confstr() for value longer than 255 bytes and encode
Victor Stinner <victor.stinner@haypocalc.com>
parents: 64608
diff changeset
6875 if (len == 0) {
a608fe1e86f0 Issue #9579, #9580: Fix os.confstr() for value longer than 255 bytes and encode
Victor Stinner <victor.stinner@haypocalc.com>
parents: 64608
diff changeset
6876 if (errno) {
a608fe1e86f0 Issue #9579, #9580: Fix os.confstr() for value longer than 255 bytes and encode
Victor Stinner <victor.stinner@haypocalc.com>
parents: 64608
diff changeset
6877 posix_error();
a608fe1e86f0 Issue #9579, #9580: Fix os.confstr() for value longer than 255 bytes and encode
Victor Stinner <victor.stinner@haypocalc.com>
parents: 64608
diff changeset
6878 return NULL;
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6879 }
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6880 else {
64631
a608fe1e86f0 Issue #9579, #9580: Fix os.confstr() for value longer than 255 bytes and encode
Victor Stinner <victor.stinner@haypocalc.com>
parents: 64608
diff changeset
6881 Py_RETURN_NONE;
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6882 }
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6883 }
64631
a608fe1e86f0 Issue #9579, #9580: Fix os.confstr() for value longer than 255 bytes and encode
Victor Stinner <victor.stinner@haypocalc.com>
parents: 64608
diff changeset
6884
a608fe1e86f0 Issue #9579, #9580: Fix os.confstr() for value longer than 255 bytes and encode
Victor Stinner <victor.stinner@haypocalc.com>
parents: 64608
diff changeset
6885 if ((unsigned int)len >= sizeof(buffer)) {
a608fe1e86f0 Issue #9579, #9580: Fix os.confstr() for value longer than 255 bytes and encode
Victor Stinner <victor.stinner@haypocalc.com>
parents: 64608
diff changeset
6886 char *buf = PyMem_Malloc(len);
a608fe1e86f0 Issue #9579, #9580: Fix os.confstr() for value longer than 255 bytes and encode
Victor Stinner <victor.stinner@haypocalc.com>
parents: 64608
diff changeset
6887 if (buf == NULL)
a608fe1e86f0 Issue #9579, #9580: Fix os.confstr() for value longer than 255 bytes and encode
Victor Stinner <victor.stinner@haypocalc.com>
parents: 64608
diff changeset
6888 return PyErr_NoMemory();
a608fe1e86f0 Issue #9579, #9580: Fix os.confstr() for value longer than 255 bytes and encode
Victor Stinner <victor.stinner@haypocalc.com>
parents: 64608
diff changeset
6889 confstr(name, buf, len);
a608fe1e86f0 Issue #9579, #9580: Fix os.confstr() for value longer than 255 bytes and encode
Victor Stinner <victor.stinner@haypocalc.com>
parents: 64608
diff changeset
6890 result = PyUnicode_DecodeFSDefaultAndSize(buf, len-1);
a608fe1e86f0 Issue #9579, #9580: Fix os.confstr() for value longer than 255 bytes and encode
Victor Stinner <victor.stinner@haypocalc.com>
parents: 64608
diff changeset
6891 PyMem_Free(buf);
a608fe1e86f0 Issue #9579, #9580: Fix os.confstr() for value longer than 255 bytes and encode
Victor Stinner <victor.stinner@haypocalc.com>
parents: 64608
diff changeset
6892 }
a608fe1e86f0 Issue #9579, #9580: Fix os.confstr() for value longer than 255 bytes and encode
Victor Stinner <victor.stinner@haypocalc.com>
parents: 64608
diff changeset
6893 else
a608fe1e86f0 Issue #9579, #9580: Fix os.confstr() for value longer than 255 bytes and encode
Victor Stinner <victor.stinner@haypocalc.com>
parents: 64608
diff changeset
6894 result = PyUnicode_DecodeFSDefaultAndSize(buffer, len-1);
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6895 return result;
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6896 }
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6897 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6898
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6899
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6900 #ifdef HAVE_SYSCONF
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6901 static struct constdef posix_constants_sysconf[] = {
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6902 #ifdef _SC_2_CHAR_TERM
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6903 {"SC_2_CHAR_TERM", _SC_2_CHAR_TERM},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6904 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6905 #ifdef _SC_2_C_BIND
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6906 {"SC_2_C_BIND", _SC_2_C_BIND},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6907 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6908 #ifdef _SC_2_C_DEV
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6909 {"SC_2_C_DEV", _SC_2_C_DEV},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6910 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6911 #ifdef _SC_2_C_VERSION
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6912 {"SC_2_C_VERSION", _SC_2_C_VERSION},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6913 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6914 #ifdef _SC_2_FORT_DEV
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6915 {"SC_2_FORT_DEV", _SC_2_FORT_DEV},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6916 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6917 #ifdef _SC_2_FORT_RUN
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6918 {"SC_2_FORT_RUN", _SC_2_FORT_RUN},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6919 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6920 #ifdef _SC_2_LOCALEDEF
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6921 {"SC_2_LOCALEDEF", _SC_2_LOCALEDEF},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6922 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6923 #ifdef _SC_2_SW_DEV
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6924 {"SC_2_SW_DEV", _SC_2_SW_DEV},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6925 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6926 #ifdef _SC_2_UPE
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6927 {"SC_2_UPE", _SC_2_UPE},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6928 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6929 #ifdef _SC_2_VERSION
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6930 {"SC_2_VERSION", _SC_2_VERSION},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6931 #endif
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
6932 #ifdef _SC_ABI_ASYNCHRONOUS_IO
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6933 {"SC_ABI_ASYNCHRONOUS_IO", _SC_ABI_ASYNCHRONOUS_IO},
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
6934 #endif
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
6935 #ifdef _SC_ACL
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6936 {"SC_ACL", _SC_ACL},
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
6937 #endif
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6938 #ifdef _SC_AIO_LISTIO_MAX
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6939 {"SC_AIO_LISTIO_MAX", _SC_AIO_LISTIO_MAX},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6940 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6941 #ifdef _SC_AIO_MAX
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6942 {"SC_AIO_MAX", _SC_AIO_MAX},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6943 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6944 #ifdef _SC_AIO_PRIO_DELTA_MAX
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6945 {"SC_AIO_PRIO_DELTA_MAX", _SC_AIO_PRIO_DELTA_MAX},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6946 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6947 #ifdef _SC_ARG_MAX
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6948 {"SC_ARG_MAX", _SC_ARG_MAX},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6949 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6950 #ifdef _SC_ASYNCHRONOUS_IO
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6951 {"SC_ASYNCHRONOUS_IO", _SC_ASYNCHRONOUS_IO},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6952 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6953 #ifdef _SC_ATEXIT_MAX
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6954 {"SC_ATEXIT_MAX", _SC_ATEXIT_MAX},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6955 #endif
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
6956 #ifdef _SC_AUDIT
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6957 {"SC_AUDIT", _SC_AUDIT},
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
6958 #endif
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6959 #ifdef _SC_AVPHYS_PAGES
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6960 {"SC_AVPHYS_PAGES", _SC_AVPHYS_PAGES},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6961 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6962 #ifdef _SC_BC_BASE_MAX
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6963 {"SC_BC_BASE_MAX", _SC_BC_BASE_MAX},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6964 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6965 #ifdef _SC_BC_DIM_MAX
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6966 {"SC_BC_DIM_MAX", _SC_BC_DIM_MAX},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6967 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6968 #ifdef _SC_BC_SCALE_MAX
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6969 {"SC_BC_SCALE_MAX", _SC_BC_SCALE_MAX},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6970 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6971 #ifdef _SC_BC_STRING_MAX
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6972 {"SC_BC_STRING_MAX", _SC_BC_STRING_MAX},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6973 #endif
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
6974 #ifdef _SC_CAP
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6975 {"SC_CAP", _SC_CAP},
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
6976 #endif
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6977 #ifdef _SC_CHARCLASS_NAME_MAX
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6978 {"SC_CHARCLASS_NAME_MAX", _SC_CHARCLASS_NAME_MAX},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6979 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6980 #ifdef _SC_CHAR_BIT
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6981 {"SC_CHAR_BIT", _SC_CHAR_BIT},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6982 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6983 #ifdef _SC_CHAR_MAX
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6984 {"SC_CHAR_MAX", _SC_CHAR_MAX},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6985 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6986 #ifdef _SC_CHAR_MIN
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6987 {"SC_CHAR_MIN", _SC_CHAR_MIN},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6988 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6989 #ifdef _SC_CHILD_MAX
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6990 {"SC_CHILD_MAX", _SC_CHILD_MAX},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6991 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6992 #ifdef _SC_CLK_TCK
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6993 {"SC_CLK_TCK", _SC_CLK_TCK},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6994 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6995 #ifdef _SC_COHER_BLKSZ
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6996 {"SC_COHER_BLKSZ", _SC_COHER_BLKSZ},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6997 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
6998 #ifdef _SC_COLL_WEIGHTS_MAX
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
6999 {"SC_COLL_WEIGHTS_MAX", _SC_COLL_WEIGHTS_MAX},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7000 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7001 #ifdef _SC_DCACHE_ASSOC
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7002 {"SC_DCACHE_ASSOC", _SC_DCACHE_ASSOC},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7003 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7004 #ifdef _SC_DCACHE_BLKSZ
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7005 {"SC_DCACHE_BLKSZ", _SC_DCACHE_BLKSZ},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7006 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7007 #ifdef _SC_DCACHE_LINESZ
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7008 {"SC_DCACHE_LINESZ", _SC_DCACHE_LINESZ},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7009 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7010 #ifdef _SC_DCACHE_SZ
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7011 {"SC_DCACHE_SZ", _SC_DCACHE_SZ},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7012 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7013 #ifdef _SC_DCACHE_TBLKSZ
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7014 {"SC_DCACHE_TBLKSZ", _SC_DCACHE_TBLKSZ},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7015 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7016 #ifdef _SC_DELAYTIMER_MAX
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7017 {"SC_DELAYTIMER_MAX", _SC_DELAYTIMER_MAX},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7018 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7019 #ifdef _SC_EQUIV_CLASS_MAX
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7020 {"SC_EQUIV_CLASS_MAX", _SC_EQUIV_CLASS_MAX},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7021 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7022 #ifdef _SC_EXPR_NEST_MAX
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7023 {"SC_EXPR_NEST_MAX", _SC_EXPR_NEST_MAX},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7024 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7025 #ifdef _SC_FSYNC
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7026 {"SC_FSYNC", _SC_FSYNC},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7027 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7028 #ifdef _SC_GETGR_R_SIZE_MAX
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7029 {"SC_GETGR_R_SIZE_MAX", _SC_GETGR_R_SIZE_MAX},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7030 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7031 #ifdef _SC_GETPW_R_SIZE_MAX
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7032 {"SC_GETPW_R_SIZE_MAX", _SC_GETPW_R_SIZE_MAX},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7033 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7034 #ifdef _SC_ICACHE_ASSOC
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7035 {"SC_ICACHE_ASSOC", _SC_ICACHE_ASSOC},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7036 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7037 #ifdef _SC_ICACHE_BLKSZ
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7038 {"SC_ICACHE_BLKSZ", _SC_ICACHE_BLKSZ},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7039 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7040 #ifdef _SC_ICACHE_LINESZ
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7041 {"SC_ICACHE_LINESZ", _SC_ICACHE_LINESZ},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7042 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7043 #ifdef _SC_ICACHE_SZ
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7044 {"SC_ICACHE_SZ", _SC_ICACHE_SZ},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7045 #endif
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
7046 #ifdef _SC_INF
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7047 {"SC_INF", _SC_INF},
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
7048 #endif
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7049 #ifdef _SC_INT_MAX
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7050 {"SC_INT_MAX", _SC_INT_MAX},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7051 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7052 #ifdef _SC_INT_MIN
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7053 {"SC_INT_MIN", _SC_INT_MIN},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7054 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7055 #ifdef _SC_IOV_MAX
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7056 {"SC_IOV_MAX", _SC_IOV_MAX},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7057 #endif
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
7058 #ifdef _SC_IP_SECOPTS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7059 {"SC_IP_SECOPTS", _SC_IP_SECOPTS},
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
7060 #endif
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7061 #ifdef _SC_JOB_CONTROL
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7062 {"SC_JOB_CONTROL", _SC_JOB_CONTROL},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7063 #endif
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
7064 #ifdef _SC_KERN_POINTERS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7065 {"SC_KERN_POINTERS", _SC_KERN_POINTERS},
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
7066 #endif
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
7067 #ifdef _SC_KERN_SIM
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7068 {"SC_KERN_SIM", _SC_KERN_SIM},
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
7069 #endif
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7070 #ifdef _SC_LINE_MAX
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7071 {"SC_LINE_MAX", _SC_LINE_MAX},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7072 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7073 #ifdef _SC_LOGIN_NAME_MAX
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7074 {"SC_LOGIN_NAME_MAX", _SC_LOGIN_NAME_MAX},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7075 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7076 #ifdef _SC_LOGNAME_MAX
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7077 {"SC_LOGNAME_MAX", _SC_LOGNAME_MAX},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7078 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7079 #ifdef _SC_LONG_BIT
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7080 {"SC_LONG_BIT", _SC_LONG_BIT},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7081 #endif
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
7082 #ifdef _SC_MAC
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7083 {"SC_MAC", _SC_MAC},
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
7084 #endif
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7085 #ifdef _SC_MAPPED_FILES
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7086 {"SC_MAPPED_FILES", _SC_MAPPED_FILES},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7087 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7088 #ifdef _SC_MAXPID
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7089 {"SC_MAXPID", _SC_MAXPID},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7090 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7091 #ifdef _SC_MB_LEN_MAX
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7092 {"SC_MB_LEN_MAX", _SC_MB_LEN_MAX},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7093 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7094 #ifdef _SC_MEMLOCK
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7095 {"SC_MEMLOCK", _SC_MEMLOCK},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7096 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7097 #ifdef _SC_MEMLOCK_RANGE
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7098 {"SC_MEMLOCK_RANGE", _SC_MEMLOCK_RANGE},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7099 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7100 #ifdef _SC_MEMORY_PROTECTION
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7101 {"SC_MEMORY_PROTECTION", _SC_MEMORY_PROTECTION},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7102 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7103 #ifdef _SC_MESSAGE_PASSING
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7104 {"SC_MESSAGE_PASSING", _SC_MESSAGE_PASSING},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7105 #endif
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
7106 #ifdef _SC_MMAP_FIXED_ALIGNMENT
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7107 {"SC_MMAP_FIXED_ALIGNMENT", _SC_MMAP_FIXED_ALIGNMENT},
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
7108 #endif
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7109 #ifdef _SC_MQ_OPEN_MAX
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7110 {"SC_MQ_OPEN_MAX", _SC_MQ_OPEN_MAX},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7111 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7112 #ifdef _SC_MQ_PRIO_MAX
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7113 {"SC_MQ_PRIO_MAX", _SC_MQ_PRIO_MAX},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7114 #endif
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
7115 #ifdef _SC_NACLS_MAX
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7116 {"SC_NACLS_MAX", _SC_NACLS_MAX},
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
7117 #endif
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7118 #ifdef _SC_NGROUPS_MAX
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7119 {"SC_NGROUPS_MAX", _SC_NGROUPS_MAX},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7120 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7121 #ifdef _SC_NL_ARGMAX
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7122 {"SC_NL_ARGMAX", _SC_NL_ARGMAX},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7123 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7124 #ifdef _SC_NL_LANGMAX
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7125 {"SC_NL_LANGMAX", _SC_NL_LANGMAX},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7126 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7127 #ifdef _SC_NL_MSGMAX
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7128 {"SC_NL_MSGMAX", _SC_NL_MSGMAX},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7129 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7130 #ifdef _SC_NL_NMAX
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7131 {"SC_NL_NMAX", _SC_NL_NMAX},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7132 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7133 #ifdef _SC_NL_SETMAX
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7134 {"SC_NL_SETMAX", _SC_NL_SETMAX},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7135 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7136 #ifdef _SC_NL_TEXTMAX
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7137 {"SC_NL_TEXTMAX", _SC_NL_TEXTMAX},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7138 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7139 #ifdef _SC_NPROCESSORS_CONF
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7140 {"SC_NPROCESSORS_CONF", _SC_NPROCESSORS_CONF},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7141 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7142 #ifdef _SC_NPROCESSORS_ONLN
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7143 {"SC_NPROCESSORS_ONLN", _SC_NPROCESSORS_ONLN},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7144 #endif
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
7145 #ifdef _SC_NPROC_CONF
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7146 {"SC_NPROC_CONF", _SC_NPROC_CONF},
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
7147 #endif
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
7148 #ifdef _SC_NPROC_ONLN
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7149 {"SC_NPROC_ONLN", _SC_NPROC_ONLN},
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
7150 #endif
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7151 #ifdef _SC_NZERO
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7152 {"SC_NZERO", _SC_NZERO},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7153 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7154 #ifdef _SC_OPEN_MAX
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7155 {"SC_OPEN_MAX", _SC_OPEN_MAX},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7156 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7157 #ifdef _SC_PAGESIZE
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7158 {"SC_PAGESIZE", _SC_PAGESIZE},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7159 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7160 #ifdef _SC_PAGE_SIZE
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7161 {"SC_PAGE_SIZE", _SC_PAGE_SIZE},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7162 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7163 #ifdef _SC_PASS_MAX
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7164 {"SC_PASS_MAX", _SC_PASS_MAX},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7165 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7166 #ifdef _SC_PHYS_PAGES
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7167 {"SC_PHYS_PAGES", _SC_PHYS_PAGES},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7168 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7169 #ifdef _SC_PII
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7170 {"SC_PII", _SC_PII},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7171 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7172 #ifdef _SC_PII_INTERNET
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7173 {"SC_PII_INTERNET", _SC_PII_INTERNET},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7174 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7175 #ifdef _SC_PII_INTERNET_DGRAM
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7176 {"SC_PII_INTERNET_DGRAM", _SC_PII_INTERNET_DGRAM},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7177 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7178 #ifdef _SC_PII_INTERNET_STREAM
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7179 {"SC_PII_INTERNET_STREAM", _SC_PII_INTERNET_STREAM},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7180 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7181 #ifdef _SC_PII_OSI
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7182 {"SC_PII_OSI", _SC_PII_OSI},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7183 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7184 #ifdef _SC_PII_OSI_CLTS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7185 {"SC_PII_OSI_CLTS", _SC_PII_OSI_CLTS},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7186 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7187 #ifdef _SC_PII_OSI_COTS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7188 {"SC_PII_OSI_COTS", _SC_PII_OSI_COTS},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7189 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7190 #ifdef _SC_PII_OSI_M
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7191 {"SC_PII_OSI_M", _SC_PII_OSI_M},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7192 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7193 #ifdef _SC_PII_SOCKET
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7194 {"SC_PII_SOCKET", _SC_PII_SOCKET},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7195 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7196 #ifdef _SC_PII_XTI
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7197 {"SC_PII_XTI", _SC_PII_XTI},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7198 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7199 #ifdef _SC_POLL
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7200 {"SC_POLL", _SC_POLL},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7201 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7202 #ifdef _SC_PRIORITIZED_IO
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7203 {"SC_PRIORITIZED_IO", _SC_PRIORITIZED_IO},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7204 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7205 #ifdef _SC_PRIORITY_SCHEDULING
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7206 {"SC_PRIORITY_SCHEDULING", _SC_PRIORITY_SCHEDULING},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7207 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7208 #ifdef _SC_REALTIME_SIGNALS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7209 {"SC_REALTIME_SIGNALS", _SC_REALTIME_SIGNALS},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7210 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7211 #ifdef _SC_RE_DUP_MAX
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7212 {"SC_RE_DUP_MAX", _SC_RE_DUP_MAX},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7213 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7214 #ifdef _SC_RTSIG_MAX
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7215 {"SC_RTSIG_MAX", _SC_RTSIG_MAX},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7216 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7217 #ifdef _SC_SAVED_IDS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7218 {"SC_SAVED_IDS", _SC_SAVED_IDS},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7219 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7220 #ifdef _SC_SCHAR_MAX
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7221 {"SC_SCHAR_MAX", _SC_SCHAR_MAX},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7222 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7223 #ifdef _SC_SCHAR_MIN
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7224 {"SC_SCHAR_MIN", _SC_SCHAR_MIN},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7225 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7226 #ifdef _SC_SELECT
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7227 {"SC_SELECT", _SC_SELECT},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7228 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7229 #ifdef _SC_SEMAPHORES
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7230 {"SC_SEMAPHORES", _SC_SEMAPHORES},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7231 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7232 #ifdef _SC_SEM_NSEMS_MAX
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7233 {"SC_SEM_NSEMS_MAX", _SC_SEM_NSEMS_MAX},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7234 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7235 #ifdef _SC_SEM_VALUE_MAX
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7236 {"SC_SEM_VALUE_MAX", _SC_SEM_VALUE_MAX},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7237 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7238 #ifdef _SC_SHARED_MEMORY_OBJECTS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7239 {"SC_SHARED_MEMORY_OBJECTS", _SC_SHARED_MEMORY_OBJECTS},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7240 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7241 #ifdef _SC_SHRT_MAX
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7242 {"SC_SHRT_MAX", _SC_SHRT_MAX},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7243 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7244 #ifdef _SC_SHRT_MIN
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7245 {"SC_SHRT_MIN", _SC_SHRT_MIN},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7246 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7247 #ifdef _SC_SIGQUEUE_MAX
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7248 {"SC_SIGQUEUE_MAX", _SC_SIGQUEUE_MAX},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7249 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7250 #ifdef _SC_SIGRT_MAX
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7251 {"SC_SIGRT_MAX", _SC_SIGRT_MAX},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7252 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7253 #ifdef _SC_SIGRT_MIN
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7254 {"SC_SIGRT_MIN", _SC_SIGRT_MIN},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7255 #endif
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
7256 #ifdef _SC_SOFTPOWER
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7257 {"SC_SOFTPOWER", _SC_SOFTPOWER},
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
7258 #endif
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7259 #ifdef _SC_SPLIT_CACHE
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7260 {"SC_SPLIT_CACHE", _SC_SPLIT_CACHE},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7261 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7262 #ifdef _SC_SSIZE_MAX
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7263 {"SC_SSIZE_MAX", _SC_SSIZE_MAX},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7264 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7265 #ifdef _SC_STACK_PROT
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7266 {"SC_STACK_PROT", _SC_STACK_PROT},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7267 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7268 #ifdef _SC_STREAM_MAX
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7269 {"SC_STREAM_MAX", _SC_STREAM_MAX},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7270 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7271 #ifdef _SC_SYNCHRONIZED_IO
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7272 {"SC_SYNCHRONIZED_IO", _SC_SYNCHRONIZED_IO},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7273 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7274 #ifdef _SC_THREADS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7275 {"SC_THREADS", _SC_THREADS},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7276 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7277 #ifdef _SC_THREAD_ATTR_STACKADDR
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7278 {"SC_THREAD_ATTR_STACKADDR", _SC_THREAD_ATTR_STACKADDR},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7279 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7280 #ifdef _SC_THREAD_ATTR_STACKSIZE
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7281 {"SC_THREAD_ATTR_STACKSIZE", _SC_THREAD_ATTR_STACKSIZE},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7282 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7283 #ifdef _SC_THREAD_DESTRUCTOR_ITERATIONS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7284 {"SC_THREAD_DESTRUCTOR_ITERATIONS", _SC_THREAD_DESTRUCTOR_ITERATIONS},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7285 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7286 #ifdef _SC_THREAD_KEYS_MAX
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7287 {"SC_THREAD_KEYS_MAX", _SC_THREAD_KEYS_MAX},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7288 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7289 #ifdef _SC_THREAD_PRIORITY_SCHEDULING
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7290 {"SC_THREAD_PRIORITY_SCHEDULING", _SC_THREAD_PRIORITY_SCHEDULING},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7291 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7292 #ifdef _SC_THREAD_PRIO_INHERIT
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7293 {"SC_THREAD_PRIO_INHERIT", _SC_THREAD_PRIO_INHERIT},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7294 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7295 #ifdef _SC_THREAD_PRIO_PROTECT
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7296 {"SC_THREAD_PRIO_PROTECT", _SC_THREAD_PRIO_PROTECT},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7297 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7298 #ifdef _SC_THREAD_PROCESS_SHARED
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7299 {"SC_THREAD_PROCESS_SHARED", _SC_THREAD_PROCESS_SHARED},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7300 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7301 #ifdef _SC_THREAD_SAFE_FUNCTIONS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7302 {"SC_THREAD_SAFE_FUNCTIONS", _SC_THREAD_SAFE_FUNCTIONS},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7303 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7304 #ifdef _SC_THREAD_STACK_MIN
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7305 {"SC_THREAD_STACK_MIN", _SC_THREAD_STACK_MIN},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7306 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7307 #ifdef _SC_THREAD_THREADS_MAX
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7308 {"SC_THREAD_THREADS_MAX", _SC_THREAD_THREADS_MAX},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7309 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7310 #ifdef _SC_TIMERS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7311 {"SC_TIMERS", _SC_TIMERS},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7312 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7313 #ifdef _SC_TIMER_MAX
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7314 {"SC_TIMER_MAX", _SC_TIMER_MAX},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7315 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7316 #ifdef _SC_TTY_NAME_MAX
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7317 {"SC_TTY_NAME_MAX", _SC_TTY_NAME_MAX},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7318 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7319 #ifdef _SC_TZNAME_MAX
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7320 {"SC_TZNAME_MAX", _SC_TZNAME_MAX},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7321 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7322 #ifdef _SC_T_IOV_MAX
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7323 {"SC_T_IOV_MAX", _SC_T_IOV_MAX},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7324 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7325 #ifdef _SC_UCHAR_MAX
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7326 {"SC_UCHAR_MAX", _SC_UCHAR_MAX},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7327 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7328 #ifdef _SC_UINT_MAX
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7329 {"SC_UINT_MAX", _SC_UINT_MAX},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7330 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7331 #ifdef _SC_UIO_MAXIOV
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7332 {"SC_UIO_MAXIOV", _SC_UIO_MAXIOV},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7333 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7334 #ifdef _SC_ULONG_MAX
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7335 {"SC_ULONG_MAX", _SC_ULONG_MAX},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7336 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7337 #ifdef _SC_USHRT_MAX
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7338 {"SC_USHRT_MAX", _SC_USHRT_MAX},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7339 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7340 #ifdef _SC_VERSION
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7341 {"SC_VERSION", _SC_VERSION},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7342 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7343 #ifdef _SC_WORD_BIT
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7344 {"SC_WORD_BIT", _SC_WORD_BIT},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7345 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7346 #ifdef _SC_XBS5_ILP32_OFF32
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7347 {"SC_XBS5_ILP32_OFF32", _SC_XBS5_ILP32_OFF32},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7348 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7349 #ifdef _SC_XBS5_ILP32_OFFBIG
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7350 {"SC_XBS5_ILP32_OFFBIG", _SC_XBS5_ILP32_OFFBIG},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7351 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7352 #ifdef _SC_XBS5_LP64_OFF64
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7353 {"SC_XBS5_LP64_OFF64", _SC_XBS5_LP64_OFF64},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7354 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7355 #ifdef _SC_XBS5_LPBIG_OFFBIG
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7356 {"SC_XBS5_LPBIG_OFFBIG", _SC_XBS5_LPBIG_OFFBIG},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7357 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7358 #ifdef _SC_XOPEN_CRYPT
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7359 {"SC_XOPEN_CRYPT", _SC_XOPEN_CRYPT},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7360 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7361 #ifdef _SC_XOPEN_ENH_I18N
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7362 {"SC_XOPEN_ENH_I18N", _SC_XOPEN_ENH_I18N},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7363 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7364 #ifdef _SC_XOPEN_LEGACY
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7365 {"SC_XOPEN_LEGACY", _SC_XOPEN_LEGACY},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7366 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7367 #ifdef _SC_XOPEN_REALTIME
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7368 {"SC_XOPEN_REALTIME", _SC_XOPEN_REALTIME},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7369 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7370 #ifdef _SC_XOPEN_REALTIME_THREADS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7371 {"SC_XOPEN_REALTIME_THREADS", _SC_XOPEN_REALTIME_THREADS},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7372 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7373 #ifdef _SC_XOPEN_SHM
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7374 {"SC_XOPEN_SHM", _SC_XOPEN_SHM},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7375 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7376 #ifdef _SC_XOPEN_UNIX
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7377 {"SC_XOPEN_UNIX", _SC_XOPEN_UNIX},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7378 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7379 #ifdef _SC_XOPEN_VERSION
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7380 {"SC_XOPEN_VERSION", _SC_XOPEN_VERSION},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7381 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7382 #ifdef _SC_XOPEN_XCU_VERSION
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7383 {"SC_XOPEN_XCU_VERSION", _SC_XOPEN_XCU_VERSION},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7384 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7385 #ifdef _SC_XOPEN_XPG2
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7386 {"SC_XOPEN_XPG2", _SC_XOPEN_XPG2},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7387 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7388 #ifdef _SC_XOPEN_XPG3
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7389 {"SC_XOPEN_XPG3", _SC_XOPEN_XPG3},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7390 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7391 #ifdef _SC_XOPEN_XPG4
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7392 {"SC_XOPEN_XPG4", _SC_XOPEN_XPG4},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7393 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7394 };
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7395
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7396 static int
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
7397 conv_sysconf_confname(PyObject *arg, int *valuep)
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7398 {
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7399 return conv_confname(arg, valuep, posix_constants_sysconf,
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7400 sizeof(posix_constants_sysconf)
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7401 / sizeof(struct constdef));
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7402 }
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7403
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
7404 PyDoc_STRVAR(posix_sysconf__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
7405 "sysconf(name) -> integer\n\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
7406 Return an integer-valued system configuration variable.");
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7407
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7408 static PyObject *
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
7409 posix_sysconf(PyObject *self, PyObject *args)
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7410 {
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7411 PyObject *result = NULL;
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7412 int name;
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7413
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7414 if (PyArg_ParseTuple(args, "O&:sysconf", conv_sysconf_confname, &name)) {
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7415 int value;
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7416
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7417 errno = 0;
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7418 value = sysconf(name);
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7419 if (value == -1 && errno != 0)
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7420 posix_error();
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7421 else
44099
f324631462a2 Cleanup: Replaced most PyInt_ aliases with PyLong_ and disabled the aliases in intobject.h
Christian Heimes <christian@cheimes.de>
parents: 44078
diff changeset
7422 result = PyLong_FromLong(value);
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7423 }
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7424 return result;
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7425 }
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7426 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7427
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7428
11577
57c1685acb16 Rip out the code to check the ordering of the tables used to map
Fred Drake <fdrake@acm.org>
parents: 11574
diff changeset
7429 /* This code is used to ensure that the tables of configuration value names
57c1685acb16 Rip out the code to check the ordering of the tables used to map
Fred Drake <fdrake@acm.org>
parents: 11574
diff changeset
7430 * are in sorted order as required by conv_confname(), and also to build the
57c1685acb16 Rip out the code to check the ordering of the tables used to map
Fred Drake <fdrake@acm.org>
parents: 11574
diff changeset
7431 * the exported dictionaries that are used to publish information about the
57c1685acb16 Rip out the code to check the ordering of the tables used to map
Fred Drake <fdrake@acm.org>
parents: 11574
diff changeset
7432 * names available on the host platform.
57c1685acb16 Rip out the code to check the ordering of the tables used to map
Fred Drake <fdrake@acm.org>
parents: 11574
diff changeset
7433 *
57c1685acb16 Rip out the code to check the ordering of the tables used to map
Fred Drake <fdrake@acm.org>
parents: 11574
diff changeset
7434 * Sorting the table at runtime ensures that the table is properly ordered
57c1685acb16 Rip out the code to check the ordering of the tables used to map
Fred Drake <fdrake@acm.org>
parents: 11574
diff changeset
7435 * when used, even for platforms we're not able to test on. It also makes
57c1685acb16 Rip out the code to check the ordering of the tables used to map
Fred Drake <fdrake@acm.org>
parents: 11574
diff changeset
7436 * it easier to add additional entries to the tables.
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
7437 */
11577
57c1685acb16 Rip out the code to check the ordering of the tables used to map
Fred Drake <fdrake@acm.org>
parents: 11574
diff changeset
7438
57c1685acb16 Rip out the code to check the ordering of the tables used to map
Fred Drake <fdrake@acm.org>
parents: 11574
diff changeset
7439 static int
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
7440 cmp_constdefs(const void *v1, const void *v2)
11577
57c1685acb16 Rip out the code to check the ordering of the tables used to map
Fred Drake <fdrake@acm.org>
parents: 11574
diff changeset
7441 {
57c1685acb16 Rip out the code to check the ordering of the tables used to map
Fred Drake <fdrake@acm.org>
parents: 11574
diff changeset
7442 const struct constdef *c1 =
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7443 (const struct constdef *) v1;
11577
57c1685acb16 Rip out the code to check the ordering of the tables used to map
Fred Drake <fdrake@acm.org>
parents: 11574
diff changeset
7444 const struct constdef *c2 =
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7445 (const struct constdef *) v2;
11577
57c1685acb16 Rip out the code to check the ordering of the tables used to map
Fred Drake <fdrake@acm.org>
parents: 11574
diff changeset
7446
57c1685acb16 Rip out the code to check the ordering of the tables used to map
Fred Drake <fdrake@acm.org>
parents: 11574
diff changeset
7447 return strcmp(c1->name, c2->name);
57c1685acb16 Rip out the code to check the ordering of the tables used to map
Fred Drake <fdrake@acm.org>
parents: 11574
diff changeset
7448 }
57c1685acb16 Rip out the code to check the ordering of the tables used to map
Fred Drake <fdrake@acm.org>
parents: 11574
diff changeset
7449
57c1685acb16 Rip out the code to check the ordering of the tables used to map
Fred Drake <fdrake@acm.org>
parents: 11574
diff changeset
7450 static int
13442
ed72067aac03 this one's a bit risky, but I've spent some considerable time
Fredrik Lundh <fredrik@pythonware.com>
parents: 13389
diff changeset
7451 setup_confname_table(struct constdef *table, size_t tablesize,
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7452 char *tablename, PyObject *module)
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
7453 {
11577
57c1685acb16 Rip out the code to check the ordering of the tables used to map
Fred Drake <fdrake@acm.org>
parents: 11574
diff changeset
7454 PyObject *d = NULL;
12393
a0498b15244c setup_confname_table(): Close memory leak caused by not decref'ing the
Barry Warsaw <barry@python.org>
parents: 12150
diff changeset
7455 size_t i;
11577
57c1685acb16 Rip out the code to check the ordering of the tables used to map
Fred Drake <fdrake@acm.org>
parents: 11574
diff changeset
7456
57c1685acb16 Rip out the code to check the ordering of the tables used to map
Fred Drake <fdrake@acm.org>
parents: 11574
diff changeset
7457 qsort(table, tablesize, sizeof(struct constdef), cmp_constdefs);
57c1685acb16 Rip out the code to check the ordering of the tables used to map
Fred Drake <fdrake@acm.org>
parents: 11574
diff changeset
7458 d = PyDict_New();
12393
a0498b15244c setup_confname_table(): Close memory leak caused by not decref'ing the
Barry Warsaw <barry@python.org>
parents: 12150
diff changeset
7459 if (d == NULL)
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7460 return -1;
12393
a0498b15244c setup_confname_table(): Close memory leak caused by not decref'ing the
Barry Warsaw <barry@python.org>
parents: 12150
diff changeset
7461
a0498b15244c setup_confname_table(): Close memory leak caused by not decref'ing the
Barry Warsaw <barry@python.org>
parents: 12150
diff changeset
7462 for (i=0; i < tablesize; ++i) {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7463 PyObject *o = PyLong_FromLong(table[i].value);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7464 if (o == NULL || PyDict_SetItemString(d, table[i].name, o) == -1) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7465 Py_XDECREF(o);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7466 Py_DECREF(d);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7467 return -1;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7468 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7469 Py_DECREF(o);
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
7470 }
23056
a135980dd4e9 posix_fildes(): New helper: run a function that takes a file descriptor
Fred Drake <fdrake@acm.org>
parents: 23026
diff changeset
7471 return PyModule_AddObject(module, tablename, d);
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
7472 }
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
7473
11577
57c1685acb16 Rip out the code to check the ordering of the tables used to map
Fred Drake <fdrake@acm.org>
parents: 11574
diff changeset
7474 /* Return -1 on failure, 0 on success. */
57c1685acb16 Rip out the code to check the ordering of the tables used to map
Fred Drake <fdrake@acm.org>
parents: 11574
diff changeset
7475 static int
23056
a135980dd4e9 posix_fildes(): New helper: run a function that takes a file descriptor
Fred Drake <fdrake@acm.org>
parents: 23026
diff changeset
7476 setup_confname_tables(PyObject *module)
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
7477 {
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
7478 #if defined(HAVE_FPATHCONF) || defined(HAVE_PATHCONF)
11577
57c1685acb16 Rip out the code to check the ordering of the tables used to map
Fred Drake <fdrake@acm.org>
parents: 11574
diff changeset
7479 if (setup_confname_table(posix_constants_pathconf,
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
7480 sizeof(posix_constants_pathconf)
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
7481 / sizeof(struct constdef),
23056
a135980dd4e9 posix_fildes(): New helper: run a function that takes a file descriptor
Fred Drake <fdrake@acm.org>
parents: 23026
diff changeset
7482 "pathconf_names", module))
66495
c7a342a798e7 Merged revisions 86808 via svnmerge from
Stefan Krah <stefan@bytereef.org>
parents: 66493
diff changeset
7483 return -1;
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
7484 #endif
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
7485 #ifdef HAVE_CONFSTR
11577
57c1685acb16 Rip out the code to check the ordering of the tables used to map
Fred Drake <fdrake@acm.org>
parents: 11574
diff changeset
7486 if (setup_confname_table(posix_constants_confstr,
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
7487 sizeof(posix_constants_confstr)
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
7488 / sizeof(struct constdef),
23056
a135980dd4e9 posix_fildes(): New helper: run a function that takes a file descriptor
Fred Drake <fdrake@acm.org>
parents: 23026
diff changeset
7489 "confstr_names", module))
66495
c7a342a798e7 Merged revisions 86808 via svnmerge from
Stefan Krah <stefan@bytereef.org>
parents: 66493
diff changeset
7490 return -1;
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
7491 #endif
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
7492 #ifdef HAVE_SYSCONF
11577
57c1685acb16 Rip out the code to check the ordering of the tables used to map
Fred Drake <fdrake@acm.org>
parents: 11574
diff changeset
7493 if (setup_confname_table(posix_constants_sysconf,
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
7494 sizeof(posix_constants_sysconf)
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
7495 / sizeof(struct constdef),
23056
a135980dd4e9 posix_fildes(): New helper: run a function that takes a file descriptor
Fred Drake <fdrake@acm.org>
parents: 23026
diff changeset
7496 "sysconf_names", module))
66495
c7a342a798e7 Merged revisions 86808 via svnmerge from
Stefan Krah <stefan@bytereef.org>
parents: 66493
diff changeset
7497 return -1;
11577
57c1685acb16 Rip out the code to check the ordering of the tables used to map
Fred Drake <fdrake@acm.org>
parents: 11574
diff changeset
7498 #endif
57c1685acb16 Rip out the code to check the ordering of the tables used to map
Fred Drake <fdrake@acm.org>
parents: 11574
diff changeset
7499 return 0;
11574
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
7500 }
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
7501
fd0d31c346b2 Added table entries for Irix 6.5 names for confstr()/sysconf()/
Fred Drake <fdrake@acm.org>
parents: 11570
diff changeset
7502
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
7503 PyDoc_STRVAR(posix_abort__doc__,
23937
3500da666c0c Clean up docstrings:
Fred Drake <fdrake@acm.org>
parents: 23900
diff changeset
7504 "abort() -> does not return!\n\n\
11532
2951e2d27852 Added support for abort(), ctermid(), tmpfile(), tempnam(), tmpnam(),
Fred Drake <fdrake@acm.org>
parents: 11391
diff changeset
7505 Abort the interpreter immediately. This 'dumps core' or otherwise fails\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
7506 in the hardest way possible on the hosting operating system.");
11532
2951e2d27852 Added support for abort(), ctermid(), tmpfile(), tempnam(), tmpnam(),
Fred Drake <fdrake@acm.org>
parents: 11391
diff changeset
7507
2951e2d27852 Added support for abort(), ctermid(), tmpfile(), tempnam(), tmpnam(),
Fred Drake <fdrake@acm.org>
parents: 11391
diff changeset
7508 static PyObject *
27916
93d44870e8b5 Added test_posix (hopefully it works on Windows).
Neal Norwitz <nnorwitz@gmail.com>
parents: 27826
diff changeset
7509 posix_abort(PyObject *self, PyObject *noargs)
93d44870e8b5 Added test_posix (hopefully it works on Windows).
Neal Norwitz <nnorwitz@gmail.com>
parents: 27826
diff changeset
7510 {
11532
2951e2d27852 Added support for abort(), ctermid(), tmpfile(), tempnam(), tmpnam(),
Fred Drake <fdrake@acm.org>
parents: 11391
diff changeset
7511 abort();
2951e2d27852 Added support for abort(), ctermid(), tmpfile(), tempnam(), tmpnam(),
Fred Drake <fdrake@acm.org>
parents: 11391
diff changeset
7512 /*NOTREACHED*/
2951e2d27852 Added support for abort(), ctermid(), tmpfile(), tempnam(), tmpnam(),
Fred Drake <fdrake@acm.org>
parents: 11391
diff changeset
7513 Py_FatalError("abort() called from Python code didn't abort!");
2951e2d27852 Added support for abort(), ctermid(), tmpfile(), tempnam(), tmpnam(),
Fred Drake <fdrake@acm.org>
parents: 11391
diff changeset
7514 return NULL;
2951e2d27852 Added support for abort(), ctermid(), tmpfile(), tempnam(), tmpnam(),
Fred Drake <fdrake@acm.org>
parents: 11391
diff changeset
7515 }
11577
57c1685acb16 Rip out the code to check the ordering of the tables used to map
Fred Drake <fdrake@acm.org>
parents: 11574
diff changeset
7516
24071
8142f8d668a0 Patch #569753: Remove support for WIN16.
Martin v. Löwis <martin@v.loewis.de>
parents: 23937
diff changeset
7517 #ifdef MS_WINDOWS
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
7518 PyDoc_STRVAR(win32_startfile__doc__,
36573
59b532ab3376 Patch #1393157: os.startfile() now has an optional argument to specify
Georg Brandl <georg@python.org>
parents: 36501
diff changeset
7519 "startfile(filepath [, operation]) - Start a file with its associated\n\
59b532ab3376 Patch #1393157: os.startfile() now has an optional argument to specify
Georg Brandl <georg@python.org>
parents: 36501
diff changeset
7520 application.\n\
14752
46a6990769d1 Implemented new os.startfile function, unique to Windows, exposing a
Tim Peters <tim.peters@gmail.com>
parents: 14586
diff changeset
7521 \n\
36573
59b532ab3376 Patch #1393157: os.startfile() now has an optional argument to specify
Georg Brandl <georg@python.org>
parents: 36501
diff changeset
7522 When \"operation\" is not specified or \"open\", this acts like\n\
59b532ab3376 Patch #1393157: os.startfile() now has an optional argument to specify
Georg Brandl <georg@python.org>
parents: 36501
diff changeset
7523 double-clicking the file in Explorer, or giving the file name as an\n\
59b532ab3376 Patch #1393157: os.startfile() now has an optional argument to specify
Georg Brandl <georg@python.org>
parents: 36501
diff changeset
7524 argument to the DOS \"start\" command: the file is opened with whatever\n\
59b532ab3376 Patch #1393157: os.startfile() now has an optional argument to specify
Georg Brandl <georg@python.org>
parents: 36501
diff changeset
7525 application (if any) its extension is associated.\n\
59b532ab3376 Patch #1393157: os.startfile() now has an optional argument to specify
Georg Brandl <georg@python.org>
parents: 36501
diff changeset
7526 When another \"operation\" is given, it specifies what should be done with\n\
59b532ab3376 Patch #1393157: os.startfile() now has an optional argument to specify
Georg Brandl <georg@python.org>
parents: 36501
diff changeset
7527 the file. A typical operation is \"print\".\n\
14752
46a6990769d1 Implemented new os.startfile function, unique to Windows, exposing a
Tim Peters <tim.peters@gmail.com>
parents: 14586
diff changeset
7528 \n\
46a6990769d1 Implemented new os.startfile function, unique to Windows, exposing a
Tim Peters <tim.peters@gmail.com>
parents: 14586
diff changeset
7529 startfile returns as soon as the associated application is launched.\n\
46a6990769d1 Implemented new os.startfile function, unique to Windows, exposing a
Tim Peters <tim.peters@gmail.com>
parents: 14586
diff changeset
7530 There is no option to wait for the application to close, and no way\n\
46a6990769d1 Implemented new os.startfile function, unique to Windows, exposing a
Tim Peters <tim.peters@gmail.com>
parents: 14586
diff changeset
7531 to retrieve the application's exit status.\n\
46a6990769d1 Implemented new os.startfile function, unique to Windows, exposing a
Tim Peters <tim.peters@gmail.com>
parents: 14586
diff changeset
7532 \n\
46a6990769d1 Implemented new os.startfile function, unique to Windows, exposing a
Tim Peters <tim.peters@gmail.com>
parents: 14586
diff changeset
7533 The filepath is relative to the current directory. If you want to use\n\
46a6990769d1 Implemented new os.startfile function, unique to Windows, exposing a
Tim Peters <tim.peters@gmail.com>
parents: 14586
diff changeset
7534 an absolute path, make sure the first character is not a slash (\"/\");\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23761
diff changeset
7535 the underlying Win32 ShellExecute function doesn't work if it is.");
14752
46a6990769d1 Implemented new os.startfile function, unique to Windows, exposing a
Tim Peters <tim.peters@gmail.com>
parents: 14586
diff changeset
7536
46a6990769d1 Implemented new os.startfile function, unique to Windows, exposing a
Tim Peters <tim.peters@gmail.com>
parents: 14586
diff changeset
7537 static PyObject *
46a6990769d1 Implemented new os.startfile function, unique to Windows, exposing a
Tim Peters <tim.peters@gmail.com>
parents: 14586
diff changeset
7538 win32_startfile(PyObject *self, PyObject *args)
46a6990769d1 Implemented new os.startfile function, unique to Windows, exposing a
Tim Peters <tim.peters@gmail.com>
parents: 14586
diff changeset
7539 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7540 PyObject *ofilepath;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7541 char *filepath;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7542 char *operation = NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7543 HINSTANCE rc;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7544
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7545 PyObject *unipath, *woperation = NULL;
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7546 if (!PyArg_ParseTuple(args, "U|s:startfile",
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7547 &unipath, &operation)) {
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7548 PyErr_Clear();
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7549 goto normal;
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7550 }
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7551
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7552 if (operation) {
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7553 woperation = PyUnicode_DecodeASCII(operation,
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7554 strlen(operation), NULL);
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7555 if (!woperation) {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7556 PyErr_Clear();
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7557 operation = NULL;
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7558 goto normal;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7559 }
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7560 }
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7561
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7562 Py_BEGIN_ALLOW_THREADS
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7563 rc = ShellExecuteW((HWND)0, woperation ? PyUnicode_AS_UNICODE(woperation) : 0,
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7564 PyUnicode_AS_UNICODE(unipath),
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7565 NULL, NULL, SW_SHOWNORMAL);
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7566 Py_END_ALLOW_THREADS
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7567
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7568 Py_XDECREF(woperation);
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7569 if (rc <= (HINSTANCE)32) {
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7570 PyObject *errval = win32_error_unicode("startfile",
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7571 PyUnicode_AS_UNICODE(unipath));
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7572 return errval;
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7573 }
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7574 Py_INCREF(Py_None);
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7575 return Py_None;
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36887
diff changeset
7576
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36887
diff changeset
7577 normal:
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7578 if (!PyArg_ParseTuple(args, "O&|s:startfile",
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7579 PyUnicode_FSConverter, &ofilepath,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7580 &operation))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7581 return NULL;
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7582 filepath = PyBytes_AsString(ofilepath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7583 Py_BEGIN_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7584 rc = ShellExecute((HWND)0, operation, filepath,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7585 NULL, NULL, SW_SHOWNORMAL);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7586 Py_END_ALLOW_THREADS
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7587 if (rc <= (HINSTANCE)32) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7588 PyObject *errval = win32_error("startfile", filepath);
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7589 Py_DECREF(ofilepath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7590 return errval;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7591 }
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7592 Py_DECREF(ofilepath);
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7593 Py_INCREF(Py_None);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7594 return Py_None;
14752
46a6990769d1 Implemented new os.startfile function, unique to Windows, exposing a
Tim Peters <tim.peters@gmail.com>
parents: 14586
diff changeset
7595 }
46a6990769d1 Implemented new os.startfile function, unique to Windows, exposing a
Tim Peters <tim.peters@gmail.com>
parents: 14586
diff changeset
7596 #endif
11532
2951e2d27852 Added support for abort(), ctermid(), tmpfile(), tempnam(), tmpnam(),
Fred Drake <fdrake@acm.org>
parents: 11391
diff changeset
7597
26810
9d0e62c9a128 Patch #657889: Implement posix.getloadavg.
Martin v. Löwis <martin@v.loewis.de>
parents: 26646
diff changeset
7598 #ifdef HAVE_GETLOADAVG
9d0e62c9a128 Patch #657889: Implement posix.getloadavg.
Martin v. Löwis <martin@v.loewis.de>
parents: 26646
diff changeset
7599 PyDoc_STRVAR(posix_getloadavg__doc__,
9d0e62c9a128 Patch #657889: Implement posix.getloadavg.
Martin v. Löwis <martin@v.loewis.de>
parents: 26646
diff changeset
7600 "getloadavg() -> (float, float, float)\n\n\
9d0e62c9a128 Patch #657889: Implement posix.getloadavg.
Martin v. Löwis <martin@v.loewis.de>
parents: 26646
diff changeset
7601 Return the number of processes in the system run queue averaged over\n\
9d0e62c9a128 Patch #657889: Implement posix.getloadavg.
Martin v. Löwis <martin@v.loewis.de>
parents: 26646
diff changeset
7602 the last 1, 5, and 15 minutes or raises OSError if the load average\n\
9d0e62c9a128 Patch #657889: Implement posix.getloadavg.
Martin v. Löwis <martin@v.loewis.de>
parents: 26646
diff changeset
7603 was unobtainable");
9d0e62c9a128 Patch #657889: Implement posix.getloadavg.
Martin v. Löwis <martin@v.loewis.de>
parents: 26646
diff changeset
7604
9d0e62c9a128 Patch #657889: Implement posix.getloadavg.
Martin v. Löwis <martin@v.loewis.de>
parents: 26646
diff changeset
7605 static PyObject *
27916
93d44870e8b5 Added test_posix (hopefully it works on Windows).
Neal Norwitz <nnorwitz@gmail.com>
parents: 27826
diff changeset
7606 posix_getloadavg(PyObject *self, PyObject *noargs)
26810
9d0e62c9a128 Patch #657889: Implement posix.getloadavg.
Martin v. Löwis <martin@v.loewis.de>
parents: 26646
diff changeset
7607 {
9d0e62c9a128 Patch #657889: Implement posix.getloadavg.
Martin v. Löwis <martin@v.loewis.de>
parents: 26646
diff changeset
7608 double loadavg[3];
9d0e62c9a128 Patch #657889: Implement posix.getloadavg.
Martin v. Löwis <martin@v.loewis.de>
parents: 26646
diff changeset
7609 if (getloadavg(loadavg, 3)!=3) {
66495
c7a342a798e7 Merged revisions 86808 via svnmerge from
Stefan Krah <stefan@bytereef.org>
parents: 66493
diff changeset
7610 PyErr_SetString(PyExc_OSError, "Load averages are unobtainable");
c7a342a798e7 Merged revisions 86808 via svnmerge from
Stefan Krah <stefan@bytereef.org>
parents: 66493
diff changeset
7611 return NULL;
26810
9d0e62c9a128 Patch #657889: Implement posix.getloadavg.
Martin v. Löwis <martin@v.loewis.de>
parents: 26646
diff changeset
7612 } else
66495
c7a342a798e7 Merged revisions 86808 via svnmerge from
Stefan Krah <stefan@bytereef.org>
parents: 66493
diff changeset
7613 return Py_BuildValue("ddd", loadavg[0], loadavg[1], loadavg[2]);
26810
9d0e62c9a128 Patch #657889: Implement posix.getloadavg.
Martin v. Löwis <martin@v.loewis.de>
parents: 26646
diff changeset
7614 }
9d0e62c9a128 Patch #657889: Implement posix.getloadavg.
Martin v. Löwis <martin@v.loewis.de>
parents: 26646
diff changeset
7615 #endif
9d0e62c9a128 Patch #657889: Implement posix.getloadavg.
Martin v. Löwis <martin@v.loewis.de>
parents: 26646
diff changeset
7616
42539
43e32b2b4004 Set sys.stdout.encoding properly.
Martin v. Löwis <martin@v.loewis.de>
parents: 42334
diff changeset
7617 PyDoc_STRVAR(device_encoding__doc__,
43e32b2b4004 Set sys.stdout.encoding properly.
Martin v. Löwis <martin@v.loewis.de>
parents: 42334
diff changeset
7618 "device_encoding(fd) -> str\n\n\
43e32b2b4004 Set sys.stdout.encoding properly.
Martin v. Löwis <martin@v.loewis.de>
parents: 42334
diff changeset
7619 Return a string describing the encoding of the device\n\
43e32b2b4004 Set sys.stdout.encoding properly.
Martin v. Löwis <martin@v.loewis.de>
parents: 42334
diff changeset
7620 if the output is a terminal; else return None.");
43e32b2b4004 Set sys.stdout.encoding properly.
Martin v. Löwis <martin@v.loewis.de>
parents: 42334
diff changeset
7621
43e32b2b4004 Set sys.stdout.encoding properly.
Martin v. Löwis <martin@v.loewis.de>
parents: 42334
diff changeset
7622 static PyObject *
43e32b2b4004 Set sys.stdout.encoding properly.
Martin v. Löwis <martin@v.loewis.de>
parents: 42334
diff changeset
7623 device_encoding(PyObject *self, PyObject *args)
43e32b2b4004 Set sys.stdout.encoding properly.
Martin v. Löwis <martin@v.loewis.de>
parents: 42334
diff changeset
7624 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7625 int fd;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7626 if (!PyArg_ParseTuple(args, "i:device_encoding", &fd))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7627 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7628 if (!_PyVerify_fd(fd) || !isatty(fd)) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7629 Py_INCREF(Py_None);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7630 return Py_None;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7631 }
42539
43e32b2b4004 Set sys.stdout.encoding properly.
Martin v. Löwis <martin@v.loewis.de>
parents: 42334
diff changeset
7632 #if defined(MS_WINDOWS) || defined(MS_WIN64)
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7633 if (fd == 0) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7634 char buf[100];
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7635 sprintf(buf, "cp%d", GetConsoleCP());
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7636 return PyUnicode_FromString(buf);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7637 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7638 if (fd == 1 || fd == 2) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7639 char buf[100];
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7640 sprintf(buf, "cp%d", GetConsoleOutputCP());
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7641 return PyUnicode_FromString(buf);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7642 }
42539
43e32b2b4004 Set sys.stdout.encoding properly.
Martin v. Löwis <martin@v.loewis.de>
parents: 42334
diff changeset
7643 #elif defined(CODESET)
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7644 {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7645 char *codeset = nl_langinfo(CODESET);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7646 if (codeset != NULL && codeset[0] != 0)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7647 return PyUnicode_FromString(codeset);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7648 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7649 #endif
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7650 Py_INCREF(Py_None);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7651 return Py_None;
42539
43e32b2b4004 Set sys.stdout.encoding properly.
Martin v. Löwis <martin@v.loewis.de>
parents: 42334
diff changeset
7652 }
43e32b2b4004 Set sys.stdout.encoding properly.
Martin v. Löwis <martin@v.loewis.de>
parents: 42334
diff changeset
7653
75066
f4b7ecf8a5f8 Issue #13703: add a way to randomize the hash values of basic types (str, bytes, datetime)
Georg Brandl <georg@python.org>
parents: 67689
diff changeset
7654 PyDoc_STRVAR(posix_urandom__doc__,
39442
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38669
diff changeset
7655 "urandom(n) -> str\n\n\
42863
84fa947ff696 Use unicode (and bytes as appropriate)
Neal Norwitz <nnorwitz@gmail.com>
parents: 42563
diff changeset
7656 Return n random bytes suitable for cryptographic use.");
39442
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38669
diff changeset
7657
75066
f4b7ecf8a5f8 Issue #13703: add a way to randomize the hash values of basic types (str, bytes, datetime)
Georg Brandl <georg@python.org>
parents: 67689
diff changeset
7658 static PyObject *
f4b7ecf8a5f8 Issue #13703: add a way to randomize the hash values of basic types (str, bytes, datetime)
Georg Brandl <georg@python.org>
parents: 67689
diff changeset
7659 posix_urandom(PyObject *self, PyObject *args)
f4b7ecf8a5f8 Issue #13703: add a way to randomize the hash values of basic types (str, bytes, datetime)
Georg Brandl <georg@python.org>
parents: 67689
diff changeset
7660 {
f4b7ecf8a5f8 Issue #13703: add a way to randomize the hash values of basic types (str, bytes, datetime)
Georg Brandl <georg@python.org>
parents: 67689
diff changeset
7661 Py_ssize_t size;
f4b7ecf8a5f8 Issue #13703: add a way to randomize the hash values of basic types (str, bytes, datetime)
Georg Brandl <georg@python.org>
parents: 67689
diff changeset
7662 PyObject *result;
f4b7ecf8a5f8 Issue #13703: add a way to randomize the hash values of basic types (str, bytes, datetime)
Georg Brandl <georg@python.org>
parents: 67689
diff changeset
7663 int ret;
f4b7ecf8a5f8 Issue #13703: add a way to randomize the hash values of basic types (str, bytes, datetime)
Georg Brandl <georg@python.org>
parents: 67689
diff changeset
7664
f4b7ecf8a5f8 Issue #13703: add a way to randomize the hash values of basic types (str, bytes, datetime)
Georg Brandl <georg@python.org>
parents: 67689
diff changeset
7665 /* Read arguments */
f4b7ecf8a5f8 Issue #13703: add a way to randomize the hash values of basic types (str, bytes, datetime)
Georg Brandl <georg@python.org>
parents: 67689
diff changeset
7666 if (!PyArg_ParseTuple(args, "n:urandom", &size))
f4b7ecf8a5f8 Issue #13703: add a way to randomize the hash values of basic types (str, bytes, datetime)
Georg Brandl <georg@python.org>
parents: 67689
diff changeset
7667 return NULL;
f4b7ecf8a5f8 Issue #13703: add a way to randomize the hash values of basic types (str, bytes, datetime)
Georg Brandl <georg@python.org>
parents: 67689
diff changeset
7668 if (size < 0)
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7669 return PyErr_Format(PyExc_ValueError,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7670 "negative argument not allowed");
75066
f4b7ecf8a5f8 Issue #13703: add a way to randomize the hash values of basic types (str, bytes, datetime)
Georg Brandl <georg@python.org>
parents: 67689
diff changeset
7671 result = PyBytes_FromStringAndSize(NULL, size);
f4b7ecf8a5f8 Issue #13703: add a way to randomize the hash values of basic types (str, bytes, datetime)
Georg Brandl <georg@python.org>
parents: 67689
diff changeset
7672 if (result == NULL)
f4b7ecf8a5f8 Issue #13703: add a way to randomize the hash values of basic types (str, bytes, datetime)
Georg Brandl <georg@python.org>
parents: 67689
diff changeset
7673 return NULL;
f4b7ecf8a5f8 Issue #13703: add a way to randomize the hash values of basic types (str, bytes, datetime)
Georg Brandl <georg@python.org>
parents: 67689
diff changeset
7674
f4b7ecf8a5f8 Issue #13703: add a way to randomize the hash values of basic types (str, bytes, datetime)
Georg Brandl <georg@python.org>
parents: 67689
diff changeset
7675 ret = _PyOS_URandom(PyBytes_AS_STRING(result),
f4b7ecf8a5f8 Issue #13703: add a way to randomize the hash values of basic types (str, bytes, datetime)
Georg Brandl <georg@python.org>
parents: 67689
diff changeset
7676 PyBytes_GET_SIZE(result));
f4b7ecf8a5f8 Issue #13703: add a way to randomize the hash values of basic types (str, bytes, datetime)
Georg Brandl <georg@python.org>
parents: 67689
diff changeset
7677 if (ret == -1) {
f4b7ecf8a5f8 Issue #13703: add a way to randomize the hash values of basic types (str, bytes, datetime)
Georg Brandl <georg@python.org>
parents: 67689
diff changeset
7678 Py_DECREF(result);
f4b7ecf8a5f8 Issue #13703: add a way to randomize the hash values of basic types (str, bytes, datetime)
Georg Brandl <georg@python.org>
parents: 67689
diff changeset
7679 return NULL;
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7680 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7681 return result;
39442
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38669
diff changeset
7682 }
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38669
diff changeset
7683
57477
4ef7b3e2d6a8 Merged revisions 76550 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 56381
diff changeset
7684 #ifdef HAVE_SETRESUID
4ef7b3e2d6a8 Merged revisions 76550 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 56381
diff changeset
7685 PyDoc_STRVAR(posix_setresuid__doc__,
4ef7b3e2d6a8 Merged revisions 76550 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 56381
diff changeset
7686 "setresuid(ruid, euid, suid)\n\n\
4ef7b3e2d6a8 Merged revisions 76550 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 56381
diff changeset
7687 Set the current process's real, effective, and saved user ids.");
4ef7b3e2d6a8 Merged revisions 76550 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 56381
diff changeset
7688
4ef7b3e2d6a8 Merged revisions 76550 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 56381
diff changeset
7689 static PyObject*
4ef7b3e2d6a8 Merged revisions 76550 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 56381
diff changeset
7690 posix_setresuid (PyObject *self, PyObject *args)
4ef7b3e2d6a8 Merged revisions 76550 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 56381
diff changeset
7691 {
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7692 /* We assume uid_t is no larger than a long. */
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7693 long ruid, euid, suid;
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7694 if (!PyArg_ParseTuple(args, "lll", &ruid, &euid, &suid))
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7695 return NULL;
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7696 if (setresuid(ruid, euid, suid) < 0)
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7697 return posix_error();
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7698 Py_RETURN_NONE;
57477
4ef7b3e2d6a8 Merged revisions 76550 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 56381
diff changeset
7699 }
4ef7b3e2d6a8 Merged revisions 76550 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 56381
diff changeset
7700 #endif
4ef7b3e2d6a8 Merged revisions 76550 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 56381
diff changeset
7701
4ef7b3e2d6a8 Merged revisions 76550 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 56381
diff changeset
7702 #ifdef HAVE_SETRESGID
4ef7b3e2d6a8 Merged revisions 76550 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 56381
diff changeset
7703 PyDoc_STRVAR(posix_setresgid__doc__,
4ef7b3e2d6a8 Merged revisions 76550 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 56381
diff changeset
7704 "setresgid(rgid, egid, sgid)\n\n\
4ef7b3e2d6a8 Merged revisions 76550 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 56381
diff changeset
7705 Set the current process's real, effective, and saved group ids.");
4ef7b3e2d6a8 Merged revisions 76550 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 56381
diff changeset
7706
4ef7b3e2d6a8 Merged revisions 76550 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 56381
diff changeset
7707 static PyObject*
4ef7b3e2d6a8 Merged revisions 76550 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 56381
diff changeset
7708 posix_setresgid (PyObject *self, PyObject *args)
4ef7b3e2d6a8 Merged revisions 76550 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 56381
diff changeset
7709 {
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7710 /* We assume uid_t is no larger than a long. */
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7711 long rgid, egid, sgid;
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7712 if (!PyArg_ParseTuple(args, "lll", &rgid, &egid, &sgid))
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7713 return NULL;
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7714 if (setresgid(rgid, egid, sgid) < 0)
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7715 return posix_error();
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7716 Py_RETURN_NONE;
57477
4ef7b3e2d6a8 Merged revisions 76550 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 56381
diff changeset
7717 }
4ef7b3e2d6a8 Merged revisions 76550 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 56381
diff changeset
7718 #endif
4ef7b3e2d6a8 Merged revisions 76550 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 56381
diff changeset
7719
4ef7b3e2d6a8 Merged revisions 76550 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 56381
diff changeset
7720 #ifdef HAVE_GETRESUID
4ef7b3e2d6a8 Merged revisions 76550 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 56381
diff changeset
7721 PyDoc_STRVAR(posix_getresuid__doc__,
4ef7b3e2d6a8 Merged revisions 76550 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 56381
diff changeset
7722 "getresuid() -> (ruid, euid, suid)\n\n\
4ef7b3e2d6a8 Merged revisions 76550 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 56381
diff changeset
7723 Get tuple of the current process's real, effective, and saved user ids.");
4ef7b3e2d6a8 Merged revisions 76550 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 56381
diff changeset
7724
4ef7b3e2d6a8 Merged revisions 76550 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 56381
diff changeset
7725 static PyObject*
4ef7b3e2d6a8 Merged revisions 76550 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 56381
diff changeset
7726 posix_getresuid (PyObject *self, PyObject *noargs)
4ef7b3e2d6a8 Merged revisions 76550 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 56381
diff changeset
7727 {
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7728 uid_t ruid, euid, suid;
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7729 long l_ruid, l_euid, l_suid;
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7730 if (getresuid(&ruid, &euid, &suid) < 0)
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7731 return posix_error();
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7732 /* Force the values into long's as we don't know the size of uid_t. */
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7733 l_ruid = ruid;
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7734 l_euid = euid;
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7735 l_suid = suid;
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7736 return Py_BuildValue("(lll)", l_ruid, l_euid, l_suid);
57477
4ef7b3e2d6a8 Merged revisions 76550 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 56381
diff changeset
7737 }
4ef7b3e2d6a8 Merged revisions 76550 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 56381
diff changeset
7738 #endif
4ef7b3e2d6a8 Merged revisions 76550 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 56381
diff changeset
7739
4ef7b3e2d6a8 Merged revisions 76550 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 56381
diff changeset
7740 #ifdef HAVE_GETRESGID
4ef7b3e2d6a8 Merged revisions 76550 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 56381
diff changeset
7741 PyDoc_STRVAR(posix_getresgid__doc__,
4ef7b3e2d6a8 Merged revisions 76550 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 56381
diff changeset
7742 "getresgid() -> (rgid, egid, sgid)\n\n\
64465
dc5892f73e03 #9747: fix copy-paste error in getresgid() doc.
Georg Brandl <georg@python.org>
parents: 64427
diff changeset
7743 Get tuple of the current process's real, effective, and saved group ids.");
57477
4ef7b3e2d6a8 Merged revisions 76550 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 56381
diff changeset
7744
4ef7b3e2d6a8 Merged revisions 76550 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 56381
diff changeset
7745 static PyObject*
4ef7b3e2d6a8 Merged revisions 76550 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 56381
diff changeset
7746 posix_getresgid (PyObject *self, PyObject *noargs)
4ef7b3e2d6a8 Merged revisions 76550 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 56381
diff changeset
7747 {
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7748 uid_t rgid, egid, sgid;
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7749 long l_rgid, l_egid, l_sgid;
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7750 if (getresgid(&rgid, &egid, &sgid) < 0)
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7751 return posix_error();
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7752 /* Force the values into long's as we don't know the size of uid_t. */
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7753 l_rgid = rgid;
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7754 l_egid = egid;
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7755 l_sgid = sgid;
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7756 return Py_BuildValue("(lll)", l_rgid, l_egid, l_sgid);
57477
4ef7b3e2d6a8 Merged revisions 76550 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 56381
diff changeset
7757 }
4ef7b3e2d6a8 Merged revisions 76550 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 56381
diff changeset
7758 #endif
4ef7b3e2d6a8 Merged revisions 76550 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 56381
diff changeset
7759
11532
2951e2d27852 Added support for abort(), ctermid(), tmpfile(), tempnam(), tmpnam(),
Fred Drake <fdrake@acm.org>
parents: 11391
diff changeset
7760 static PyMethodDef posix_methods[] = {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7761 {"access", posix_access, METH_VARARGS, posix_access__doc__},
11532
2951e2d27852 Added support for abort(), ctermid(), tmpfile(), tempnam(), tmpnam(),
Fred Drake <fdrake@acm.org>
parents: 11391
diff changeset
7762 #ifdef HAVE_TTYNAME
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7763 {"ttyname", posix_ttyname, METH_VARARGS, posix_ttyname__doc__},
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7764 #endif
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7765 {"chdir", posix_chdir, METH_VARARGS, posix_chdir__doc__},
40893
32c4897b5d46 Merged revisions 53623-53858 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 40742
diff changeset
7766 #ifdef HAVE_CHFLAGS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7767 {"chflags", posix_chflags, METH_VARARGS, posix_chflags__doc__},
40893
32c4897b5d46 Merged revisions 53623-53858 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 40742
diff changeset
7768 #endif /* HAVE_CHFLAGS */
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7769 {"chmod", posix_chmod, METH_VARARGS, posix_chmod__doc__},
44078
664b0bc92b96 Merged revisions 59239-59244 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44025
diff changeset
7770 #ifdef HAVE_FCHMOD
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7771 {"fchmod", posix_fchmod, METH_VARARGS, posix_fchmod__doc__},
44078
664b0bc92b96 Merged revisions 59239-59244 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44025
diff changeset
7772 #endif /* HAVE_FCHMOD */
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
7773 #ifdef HAVE_CHOWN
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7774 {"chown", posix_chown, METH_VARARGS, posix_chown__doc__},
1792
a584b4bbbc59 Changes to make it work and compile on NT, by Mark Hammond.
Guido van Rossum <guido@python.org>
parents: 1746
diff changeset
7775 #endif /* HAVE_CHOWN */
44078
664b0bc92b96 Merged revisions 59239-59244 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44025
diff changeset
7776 #ifdef HAVE_LCHMOD
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7777 {"lchmod", posix_lchmod, METH_VARARGS, posix_lchmod__doc__},
44078
664b0bc92b96 Merged revisions 59239-59244 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44025
diff changeset
7778 #endif /* HAVE_LCHMOD */
664b0bc92b96 Merged revisions 59239-59244 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44025
diff changeset
7779 #ifdef HAVE_FCHOWN
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7780 {"fchown", posix_fchown, METH_VARARGS, posix_fchown__doc__},
44078
664b0bc92b96 Merged revisions 59239-59244 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44025
diff changeset
7781 #endif /* HAVE_FCHOWN */
40893
32c4897b5d46 Merged revisions 53623-53858 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 40742
diff changeset
7782 #ifdef HAVE_LCHFLAGS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7783 {"lchflags", posix_lchflags, METH_VARARGS, posix_lchflags__doc__},
40893
32c4897b5d46 Merged revisions 53623-53858 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 40742
diff changeset
7784 #endif /* HAVE_LCHFLAGS */
24413
08926cc5f2af Patch #573770: Implement lchown.
Martin v. Löwis <martin@v.loewis.de>
parents: 24239
diff changeset
7785 #ifdef HAVE_LCHOWN
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7786 {"lchown", posix_lchown, METH_VARARGS, posix_lchown__doc__},
24413
08926cc5f2af Patch #573770: Implement lchown.
Martin v. Löwis <martin@v.loewis.de>
parents: 24239
diff changeset
7787 #endif /* HAVE_LCHOWN */
20264
d092abcf9c4b Add chroot call. Implements feature #459267.
Martin v. Löwis <martin@v.loewis.de>
parents: 19754
diff changeset
7788 #ifdef HAVE_CHROOT
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7789 {"chroot", posix_chroot, METH_VARARGS, posix_chroot__doc__},
20264
d092abcf9c4b Add chroot call. Implements feature #459267.
Martin v. Löwis <martin@v.loewis.de>
parents: 19754
diff changeset
7790 #endif
11532
2951e2d27852 Added support for abort(), ctermid(), tmpfile(), tempnam(), tmpnam(),
Fred Drake <fdrake@acm.org>
parents: 11391
diff changeset
7791 #ifdef HAVE_CTERMID
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7792 {"ctermid", posix_ctermid, METH_NOARGS, posix_ctermid__doc__},
11532
2951e2d27852 Added support for abort(), ctermid(), tmpfile(), tempnam(), tmpnam(),
Fred Drake <fdrake@acm.org>
parents: 11391
diff changeset
7793 #endif
2740
3e370a4b103b sys/wait.h; NeXT changes (no unistd, utime; getcwd?)
Guido van Rossum <guido@python.org>
parents: 2615
diff changeset
7794 #ifdef HAVE_GETCWD
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7795 {"getcwd", (PyCFunction)posix_getcwd_unicode,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7796 METH_NOARGS, posix_getcwd__doc__},
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7797 {"getcwdb", (PyCFunction)posix_getcwd_bytes,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7798 METH_NOARGS, posix_getcwdb__doc__},
2740
3e370a4b103b sys/wait.h; NeXT changes (no unistd, utime; getcwd?)
Guido van Rossum <guido@python.org>
parents: 2615
diff changeset
7799 #endif
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
7800 #ifdef HAVE_LINK
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7801 {"link", posix_link, METH_VARARGS, posix_link__doc__},
1792
a584b4bbbc59 Changes to make it work and compile on NT, by Mark Hammond.
Guido van Rossum <guido@python.org>
parents: 1746
diff changeset
7802 #endif /* HAVE_LINK */
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7803 {"listdir", posix_listdir, METH_VARARGS, posix_listdir__doc__},
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7804 {"lstat", posix_lstat, METH_VARARGS, posix_lstat__doc__},
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7805 {"mkdir", posix_mkdir, METH_VARARGS, posix_mkdir__doc__},
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
7806 #ifdef HAVE_NICE
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7807 {"nice", posix_nice, METH_VARARGS, posix_nice__doc__},
1792
a584b4bbbc59 Changes to make it work and compile on NT, by Mark Hammond.
Guido van Rossum <guido@python.org>
parents: 1746
diff changeset
7808 #endif /* HAVE_NICE */
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
7809 #ifdef HAVE_READLINK
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7810 {"readlink", posix_readlink, METH_VARARGS, posix_readlink__doc__},
1792
a584b4bbbc59 Changes to make it work and compile on NT, by Mark Hammond.
Guido van Rossum <guido@python.org>
parents: 1746
diff changeset
7811 #endif /* HAVE_READLINK */
62874
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
7812 #if !defined(HAVE_READLINK) && defined(MS_WINDOWS)
64083
4725082c282f r82659 reintroduced some tab characters. Untabify again.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 64046
diff changeset
7813 {"readlink", win_readlink, METH_VARARGS, win_readlink__doc__},
62874
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
7814 #endif /* !defined(HAVE_READLINK) && defined(MS_WINDOWS) */
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7815 {"rename", posix_rename, METH_VARARGS, posix_rename__doc__},
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7816 {"rmdir", posix_rmdir, METH_VARARGS, posix_rmdir__doc__},
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7817 {"stat", posix_stat, METH_VARARGS, posix_stat__doc__},
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7818 {"stat_float_times", stat_float_times, METH_VARARGS, stat_float_times__doc__},
66606
9a2058309c1a Fix #9333. Expose os.symlink on Windows only when usable.
Brian Curtin <brian.curtin@gmail.com>
parents: 66555
diff changeset
7819 #if defined(HAVE_SYMLINK) && !defined(MS_WINDOWS)
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7820 {"symlink", posix_symlink, METH_VARARGS, posix_symlink__doc__},
1792
a584b4bbbc59 Changes to make it work and compile on NT, by Mark Hammond.
Guido van Rossum <guido@python.org>
parents: 1746
diff changeset
7821 #endif /* HAVE_SYMLINK */
66606
9a2058309c1a Fix #9333. Expose os.symlink on Windows only when usable.
Brian Curtin <brian.curtin@gmail.com>
parents: 66555
diff changeset
7822 #if defined(HAVE_SYMLINK) && defined(MS_WINDOWS)
67183
5aa433a277f9 Fix #9333. The symlink function is always available now, raising OSError
Brian Curtin <brian.curtin@gmail.com>
parents: 66779
diff changeset
7823 {"symlink", (PyCFunction)win_symlink, METH_VARARGS | METH_KEYWORDS,
66606
9a2058309c1a Fix #9333. Expose os.symlink on Windows only when usable.
Brian Curtin <brian.curtin@gmail.com>
parents: 66555
diff changeset
7824 win_symlink__doc__},
9a2058309c1a Fix #9333. Expose os.symlink on Windows only when usable.
Brian Curtin <brian.curtin@gmail.com>
parents: 66555
diff changeset
7825 #endif /* defined(HAVE_SYMLINK) && defined(MS_WINDOWS) */
3601
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
7826 #ifdef HAVE_SYSTEM
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7827 {"system", posix_system, METH_VARARGS, posix_system__doc__},
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7828 #endif
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7829 {"umask", posix_umask, METH_VARARGS, posix_umask__doc__},
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
7830 #ifdef HAVE_UNAME
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7831 {"uname", posix_uname, METH_NOARGS, posix_uname__doc__},
1792
a584b4bbbc59 Changes to make it work and compile on NT, by Mark Hammond.
Guido van Rossum <guido@python.org>
parents: 1746
diff changeset
7832 #endif /* HAVE_UNAME */
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7833 {"unlink", posix_unlink, METH_VARARGS, posix_unlink__doc__},
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7834 {"remove", posix_unlink, METH_VARARGS, posix_remove__doc__},
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7835 {"utime", posix_utime, METH_VARARGS, posix_utime__doc__},
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
7836 #ifdef HAVE_TIMES
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7837 {"times", posix_times, METH_NOARGS, posix_times__doc__},
1792
a584b4bbbc59 Changes to make it work and compile on NT, by Mark Hammond.
Guido van Rossum <guido@python.org>
parents: 1746
diff changeset
7838 #endif /* HAVE_TIMES */
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7839 {"_exit", posix__exit, METH_VARARGS, posix__exit__doc__},
3601
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
7840 #ifdef HAVE_EXECV
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7841 {"execv", posix_execv, METH_VARARGS, posix_execv__doc__},
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7842 {"execve", posix_execve, METH_VARARGS, posix_execve__doc__},
3601
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
7843 #endif /* HAVE_EXECV */
9954
c404a6b0cdb1 Add spawnv and spawnve functions for Win32 platforms.
Guido van Rossum <guido@python.org>
parents: 9939
diff changeset
7844 #ifdef HAVE_SPAWNV
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7845 {"spawnv", posix_spawnv, METH_VARARGS, posix_spawnv__doc__},
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7846 {"spawnve", posix_spawnve, METH_VARARGS, posix_spawnve__doc__},
31866
552044b5058d OS/2 has support for spawnvp() and spawnvpe() in the C libraries supplied
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 31837
diff changeset
7847 #if defined(PYOS_OS2)
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7848 {"spawnvp", posix_spawnvp, METH_VARARGS, posix_spawnvp__doc__},
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7849 {"spawnvpe", posix_spawnvpe, METH_VARARGS, posix_spawnvpe__doc__},
31866
552044b5058d OS/2 has support for spawnvp() and spawnvpe() in the C libraries supplied
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 31837
diff changeset
7850 #endif /* PYOS_OS2 */
9954
c404a6b0cdb1 Add spawnv and spawnve functions for Win32 platforms.
Guido van Rossum <guido@python.org>
parents: 9939
diff changeset
7851 #endif /* HAVE_SPAWNV */
17419
3fadc37cfa92 Unixware 7 support by Billy G. Allie (SF patch 413011)
Guido van Rossum <guido@python.org>
parents: 16792
diff changeset
7852 #ifdef HAVE_FORK1
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7853 {"fork1", posix_fork1, METH_NOARGS, posix_fork1__doc__},
17419
3fadc37cfa92 Unixware 7 support by Billy G. Allie (SF patch 413011)
Guido van Rossum <guido@python.org>
parents: 16792
diff changeset
7854 #endif /* HAVE_FORK1 */
2456
bc03225a4493 changes for NT/Borland C
Guido van Rossum <guido@python.org>
parents: 2370
diff changeset
7855 #ifdef HAVE_FORK
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7856 {"fork", posix_fork, METH_NOARGS, posix_fork__doc__},
2456
bc03225a4493 changes for NT/Borland C
Guido van Rossum <guido@python.org>
parents: 2370
diff changeset
7857 #endif /* HAVE_FORK */
26945
526742a74d06 Patch #656590: /dev/ptmx support for ptys.
Martin v. Löwis <martin@v.loewis.de>
parents: 26810
diff changeset
7858 #if defined(HAVE_OPENPTY) || defined(HAVE__GETPTY) || defined(HAVE_DEV_PTMX)
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7859 {"openpty", posix_openpty, METH_NOARGS, posix_openpty__doc__},
26945
526742a74d06 Patch #656590: /dev/ptmx support for ptys.
Martin v. Löwis <martin@v.loewis.de>
parents: 26810
diff changeset
7860 #endif /* HAVE_OPENPTY || HAVE__GETPTY || HAVE_DEV_PTMX */
13058
53f4022c0cd5 Thomas Wouters <thomas@xs4all.net>:
Fred Drake <fdrake@acm.org>
parents: 12865
diff changeset
7861 #ifdef HAVE_FORKPTY
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7862 {"forkpty", posix_forkpty, METH_NOARGS, posix_forkpty__doc__},
13058
53f4022c0cd5 Thomas Wouters <thomas@xs4all.net>:
Fred Drake <fdrake@acm.org>
parents: 12865
diff changeset
7863 #endif /* HAVE_FORKPTY */
2456
bc03225a4493 changes for NT/Borland C
Guido van Rossum <guido@python.org>
parents: 2370
diff changeset
7864 #ifdef HAVE_GETEGID
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7865 {"getegid", posix_getegid, METH_NOARGS, posix_getegid__doc__},
2456
bc03225a4493 changes for NT/Borland C
Guido van Rossum <guido@python.org>
parents: 2370
diff changeset
7866 #endif /* HAVE_GETEGID */
bc03225a4493 changes for NT/Borland C
Guido van Rossum <guido@python.org>
parents: 2370
diff changeset
7867 #ifdef HAVE_GETEUID
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7868 {"geteuid", posix_geteuid, METH_NOARGS, posix_geteuid__doc__},
2456
bc03225a4493 changes for NT/Borland C
Guido van Rossum <guido@python.org>
parents: 2370
diff changeset
7869 #endif /* HAVE_GETEUID */
bc03225a4493 changes for NT/Borland C
Guido van Rossum <guido@python.org>
parents: 2370
diff changeset
7870 #ifdef HAVE_GETGID
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7871 {"getgid", posix_getgid, METH_NOARGS, posix_getgid__doc__},
2456
bc03225a4493 changes for NT/Borland C
Guido van Rossum <guido@python.org>
parents: 2370
diff changeset
7872 #endif /* HAVE_GETGID */
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
7873 #ifdef HAVE_GETGROUPS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7874 {"getgroups", posix_getgroups, METH_NOARGS, posix_getgroups__doc__},
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7875 #endif
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7876 {"getpid", posix_getpid, METH_NOARGS, posix_getpid__doc__},
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
7877 #ifdef HAVE_GETPGRP
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7878 {"getpgrp", posix_getpgrp, METH_NOARGS, posix_getpgrp__doc__},
1792
a584b4bbbc59 Changes to make it work and compile on NT, by Mark Hammond.
Guido van Rossum <guido@python.org>
parents: 1746
diff changeset
7879 #endif /* HAVE_GETPGRP */
2456
bc03225a4493 changes for NT/Borland C
Guido van Rossum <guido@python.org>
parents: 2370
diff changeset
7880 #ifdef HAVE_GETPPID
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7881 {"getppid", posix_getppid, METH_NOARGS, posix_getppid__doc__},
2456
bc03225a4493 changes for NT/Borland C
Guido van Rossum <guido@python.org>
parents: 2370
diff changeset
7882 #endif /* HAVE_GETPPID */
bc03225a4493 changes for NT/Borland C
Guido van Rossum <guido@python.org>
parents: 2370
diff changeset
7883 #ifdef HAVE_GETUID
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7884 {"getuid", posix_getuid, METH_NOARGS, posix_getuid__doc__},
2456
bc03225a4493 changes for NT/Borland C
Guido van Rossum <guido@python.org>
parents: 2370
diff changeset
7885 #endif /* HAVE_GETUID */
11570
885820fa7e31 Added support for getlogin(); does *not* use getlogin_r() where
Fred Drake <fdrake@acm.org>
parents: 11560
diff changeset
7886 #ifdef HAVE_GETLOGIN
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7887 {"getlogin", posix_getlogin, METH_NOARGS, posix_getlogin__doc__},
11570
885820fa7e31 Added support for getlogin(); does *not* use getlogin_r() where
Fred Drake <fdrake@acm.org>
parents: 11560
diff changeset
7888 #endif
2456
bc03225a4493 changes for NT/Borland C
Guido van Rossum <guido@python.org>
parents: 2370
diff changeset
7889 #ifdef HAVE_KILL
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7890 {"kill", posix_kill, METH_VARARGS, posix_kill__doc__},
2456
bc03225a4493 changes for NT/Borland C
Guido van Rossum <guido@python.org>
parents: 2370
diff changeset
7891 #endif /* HAVE_KILL */
21966
9c402523f8f5 Patch #511193: Implement killpg in posixmodule.
Martin v. Löwis <martin@v.loewis.de>
parents: 21859
diff changeset
7892 #ifdef HAVE_KILLPG
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7893 {"killpg", posix_killpg, METH_VARARGS, posix_killpg__doc__},
21966
9c402523f8f5 Patch #511193: Implement killpg in posixmodule.
Martin v. Löwis <martin@v.loewis.de>
parents: 21859
diff changeset
7894 #endif /* HAVE_KILLPG */
3735
4692cb46008e Added plock() system call.
Guido van Rossum <guido@python.org>
parents: 3702
diff changeset
7895 #ifdef HAVE_PLOCK
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7896 {"plock", posix_plock, METH_VARARGS, posix_plock__doc__},
3735
4692cb46008e Added plock() system call.
Guido van Rossum <guido@python.org>
parents: 3702
diff changeset
7897 #endif /* HAVE_PLOCK */
43129
c92d426eee75 Insert "startfile" into posix_methods again; it was accidentially
Thomas Heller <theller@ctypes.org>
parents: 43057
diff changeset
7898 #ifdef MS_WINDOWS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7899 {"startfile", win32_startfile, METH_VARARGS, win32_startfile__doc__},
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7900 {"kill", win32_kill, METH_VARARGS, win32_kill__doc__},
66431
9cd1036455e7 Fix #8879. Add os.link support to Windows.
Brian Curtin <brian.curtin@gmail.com>
parents: 66427
diff changeset
7901 {"link", win32_link, METH_VARARGS, win32_link__doc__},
43129
c92d426eee75 Insert "startfile" into posix_methods again; it was accidentially
Thomas Heller <theller@ctypes.org>
parents: 43057
diff changeset
7902 #endif
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
7903 #ifdef HAVE_SETUID
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7904 {"setuid", posix_setuid, METH_VARARGS, posix_setuid__doc__},
1792
a584b4bbbc59 Changes to make it work and compile on NT, by Mark Hammond.
Guido van Rossum <guido@python.org>
parents: 1746
diff changeset
7905 #endif /* HAVE_SETUID */
13582
084a758051e0 From Sam Rushing's Medusa, via SF patch #100858: add & document
Andrew M. Kuchling <amk@amk.ca>
parents: 13576
diff changeset
7906 #ifdef HAVE_SETEUID
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7907 {"seteuid", posix_seteuid, METH_VARARGS, posix_seteuid__doc__},
13582
084a758051e0 From Sam Rushing's Medusa, via SF patch #100858: add & document
Andrew M. Kuchling <amk@amk.ca>
parents: 13576
diff changeset
7908 #endif /* HAVE_SETEUID */
084a758051e0 From Sam Rushing's Medusa, via SF patch #100858: add & document
Andrew M. Kuchling <amk@amk.ca>
parents: 13576
diff changeset
7909 #ifdef HAVE_SETEGID
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7910 {"setegid", posix_setegid, METH_VARARGS, posix_setegid__doc__},
13582
084a758051e0 From Sam Rushing's Medusa, via SF patch #100858: add & document
Andrew M. Kuchling <amk@amk.ca>
parents: 13576
diff changeset
7911 #endif /* HAVE_SETEGID */
084a758051e0 From Sam Rushing's Medusa, via SF patch #100858: add & document
Andrew M. Kuchling <amk@amk.ca>
parents: 13576
diff changeset
7912 #ifdef HAVE_SETREUID
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7913 {"setreuid", posix_setreuid, METH_VARARGS, posix_setreuid__doc__},
13582
084a758051e0 From Sam Rushing's Medusa, via SF patch #100858: add & document
Andrew M. Kuchling <amk@amk.ca>
parents: 13576
diff changeset
7914 #endif /* HAVE_SETREUID */
084a758051e0 From Sam Rushing's Medusa, via SF patch #100858: add & document
Andrew M. Kuchling <amk@amk.ca>
parents: 13576
diff changeset
7915 #ifdef HAVE_SETREGID
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7916 {"setregid", posix_setregid, METH_VARARGS, posix_setregid__doc__},
13582
084a758051e0 From Sam Rushing's Medusa, via SF patch #100858: add & document
Andrew M. Kuchling <amk@amk.ca>
parents: 13576
diff changeset
7917 #endif /* HAVE_SETREGID */
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
7918 #ifdef HAVE_SETGID
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7919 {"setgid", posix_setgid, METH_VARARGS, posix_setgid__doc__},
1792
a584b4bbbc59 Changes to make it work and compile on NT, by Mark Hammond.
Guido van Rossum <guido@python.org>
parents: 1746
diff changeset
7920 #endif /* HAVE_SETGID */
20508
8e0c31849c64 Expose setgroups. Fixes feature request #468116.
Martin v. Löwis <martin@v.loewis.de>
parents: 20264
diff changeset
7921 #ifdef HAVE_SETGROUPS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7922 {"setgroups", posix_setgroups, METH_O, posix_setgroups__doc__},
20508
8e0c31849c64 Expose setgroups. Fixes feature request #468116.
Martin v. Löwis <martin@v.loewis.de>
parents: 20264
diff changeset
7923 #endif /* HAVE_SETGROUPS */
57541
e9dac3eff317 Merged revisions 76636 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 57477
diff changeset
7924 #ifdef HAVE_INITGROUPS
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
7925 {"initgroups", posix_initgroups, METH_VARARGS, posix_initgroups__doc__},
57541
e9dac3eff317 Merged revisions 76636 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 57477
diff changeset
7926 #endif /* HAVE_INITGROUPS */
23833
9f0ad0eb61f0 Patch #568235: Add posix.setpgid.
Martin v. Löwis <martin@v.loewis.de>
parents: 23832
diff changeset
7927 #ifdef HAVE_GETPGID
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7928 {"getpgid", posix_getpgid, METH_VARARGS, posix_getpgid__doc__},
23833
9f0ad0eb61f0 Patch #568235: Add posix.setpgid.
Martin v. Löwis <martin@v.loewis.de>
parents: 23832
diff changeset
7929 #endif /* HAVE_GETPGID */
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
7930 #ifdef HAVE_SETPGRP
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7931 {"setpgrp", posix_setpgrp, METH_NOARGS, posix_setpgrp__doc__},
1792
a584b4bbbc59 Changes to make it work and compile on NT, by Mark Hammond.
Guido van Rossum <guido@python.org>
parents: 1746
diff changeset
7932 #endif /* HAVE_SETPGRP */
2456
bc03225a4493 changes for NT/Borland C
Guido van Rossum <guido@python.org>
parents: 2370
diff changeset
7933 #ifdef HAVE_WAIT
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7934 {"wait", posix_wait, METH_NOARGS, posix_wait__doc__},
2456
bc03225a4493 changes for NT/Borland C
Guido van Rossum <guido@python.org>
parents: 2370
diff changeset
7935 #endif /* HAVE_WAIT */
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36887
diff changeset
7936 #ifdef HAVE_WAIT3
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7937 {"wait3", posix_wait3, METH_VARARGS, posix_wait3__doc__},
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36887
diff changeset
7938 #endif /* HAVE_WAIT3 */
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36887
diff changeset
7939 #ifdef HAVE_WAIT4
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7940 {"wait4", posix_wait4, METH_VARARGS, posix_wait4__doc__},
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36887
diff changeset
7941 #endif /* HAVE_WAIT4 */
21857
9cff890b4fb0 Implement os.waitpid() for Windows, in a way that's compatible with Linux
Tim Peters <tim.peters@gmail.com>
parents: 21839
diff changeset
7942 #if defined(HAVE_WAITPID) || defined(HAVE_CWAIT)
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7943 {"waitpid", posix_waitpid, METH_VARARGS, posix_waitpid__doc__},
1792
a584b4bbbc59 Changes to make it work and compile on NT, by Mark Hammond.
Guido van Rossum <guido@python.org>
parents: 1746
diff changeset
7944 #endif /* HAVE_WAITPID */
30892
f08a5e95c37c Patch #839038: Add getsid(2).
Martin v. Löwis <martin@v.loewis.de>
parents: 30816
diff changeset
7945 #ifdef HAVE_GETSID
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7946 {"getsid", posix_getsid, METH_VARARGS, posix_getsid__doc__},
30892
f08a5e95c37c Patch #839038: Add getsid(2).
Martin v. Löwis <martin@v.loewis.de>
parents: 30816
diff changeset
7947 #endif /* HAVE_GETSID */
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
7948 #ifdef HAVE_SETSID
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7949 {"setsid", posix_setsid, METH_NOARGS, posix_setsid__doc__},
1792
a584b4bbbc59 Changes to make it work and compile on NT, by Mark Hammond.
Guido van Rossum <guido@python.org>
parents: 1746
diff changeset
7950 #endif /* HAVE_SETSID */
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
7951 #ifdef HAVE_SETPGID
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7952 {"setpgid", posix_setpgid, METH_VARARGS, posix_setpgid__doc__},
1792
a584b4bbbc59 Changes to make it work and compile on NT, by Mark Hammond.
Guido van Rossum <guido@python.org>
parents: 1746
diff changeset
7953 #endif /* HAVE_SETPGID */
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
7954 #ifdef HAVE_TCGETPGRP
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7955 {"tcgetpgrp", posix_tcgetpgrp, METH_VARARGS, posix_tcgetpgrp__doc__},
1792
a584b4bbbc59 Changes to make it work and compile on NT, by Mark Hammond.
Guido van Rossum <guido@python.org>
parents: 1746
diff changeset
7956 #endif /* HAVE_TCGETPGRP */
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
7957 #ifdef HAVE_TCSETPGRP
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7958 {"tcsetpgrp", posix_tcsetpgrp, METH_VARARGS, posix_tcsetpgrp__doc__},
1792
a584b4bbbc59 Changes to make it work and compile on NT, by Mark Hammond.
Guido van Rossum <guido@python.org>
parents: 1746
diff changeset
7959 #endif /* HAVE_TCSETPGRP */
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7960 {"open", posix_open, METH_VARARGS, posix_open__doc__},
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7961 {"close", posix_close, METH_VARARGS, posix_close__doc__},
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7962 {"closerange", posix_closerange, METH_VARARGS, posix_closerange__doc__},
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7963 {"device_encoding", device_encoding, METH_VARARGS, device_encoding__doc__},
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7964 {"dup", posix_dup, METH_VARARGS, posix_dup__doc__},
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7965 {"dup2", posix_dup2, METH_VARARGS, posix_dup2__doc__},
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7966 {"lseek", posix_lseek, METH_VARARGS, posix_lseek__doc__},
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7967 {"read", posix_read, METH_VARARGS, posix_read__doc__},
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7968 {"write", posix_write, METH_VARARGS, posix_write__doc__},
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7969 {"fstat", posix_fstat, METH_VARARGS, posix_fstat__doc__},
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7970 {"isatty", posix_isatty, METH_VARARGS, posix_isatty__doc__},
3601
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
7971 #ifdef HAVE_PIPE
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7972 {"pipe", posix_pipe, METH_NOARGS, posix_pipe__doc__},
3601
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
7973 #endif
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
7974 #ifdef HAVE_MKFIFO
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7975 {"mkfifo", posix_mkfifo, METH_VARARGS, posix_mkfifo__doc__},
3601
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
7976 #endif
24429
f55d58ee4ea3 SF patch #584245, get python to link on OSF1 (Dec Unix)
Neal Norwitz <nnorwitz@gmail.com>
parents: 24413
diff changeset
7977 #if defined(HAVE_MKNOD) && defined(HAVE_MAKEDEV)
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7978 {"mknod", posix_mknod, METH_VARARGS, posix_mknod__doc__},
23026
f3fc97da68a9 Patch #543447: Add posix.mknod.
Martin v. Löwis <martin@v.loewis.de>
parents: 22773
diff changeset
7979 #endif
25694
e9e7f160aac9 Patch #569139: Implementation of major, minor and makedev.
Martin v. Löwis <martin@v.loewis.de>
parents: 25630
diff changeset
7980 #ifdef HAVE_DEVICE_MACROS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7981 {"major", posix_major, METH_VARARGS, posix_major__doc__},
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7982 {"minor", posix_minor, METH_VARARGS, posix_minor__doc__},
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7983 {"makedev", posix_makedev, METH_VARARGS, posix_makedev__doc__},
25694
e9e7f160aac9 Patch #569139: Implementation of major, minor and makedev.
Martin v. Löwis <martin@v.loewis.de>
parents: 25630
diff changeset
7984 #endif
3601
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
7985 #ifdef HAVE_FTRUNCATE
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7986 {"ftruncate", posix_ftruncate, METH_VARARGS, posix_ftruncate__doc__},
3601
5a7a76166e7e Added mkfifo, ftruncate. Windows/PC changes.
Guido van Rossum <guido@python.org>
parents: 3418
diff changeset
7987 #endif
3801
843121a226ca Added simple-minded (i.e. leaking :-) putenv() interface, if os has it.
Guido van Rossum <guido@python.org>
parents: 3735
diff changeset
7988 #ifdef HAVE_PUTENV
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7989 {"putenv", posix_putenv, METH_VARARGS, posix_putenv__doc__},
3801
843121a226ca Added simple-minded (i.e. leaking :-) putenv() interface, if os has it.
Guido van Rossum <guido@python.org>
parents: 3735
diff changeset
7990 #endif
20551
c9608c790f6f SF patch #460805 by Chris Gonnerman: Support for unsetenv()
Guido van Rossum <guido@python.org>
parents: 20548
diff changeset
7991 #ifdef HAVE_UNSETENV
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7992 {"unsetenv", posix_unsetenv, METH_VARARGS, posix_unsetenv__doc__},
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7993 #endif
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7994 {"strerror", posix_strerror, METH_VARARGS, posix_strerror__doc__},
23056
a135980dd4e9 posix_fildes(): New helper: run a function that takes a file descriptor
Fred Drake <fdrake@acm.org>
parents: 23026
diff changeset
7995 #ifdef HAVE_FCHDIR
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7996 {"fchdir", posix_fchdir, METH_O, posix_fchdir__doc__},
23056
a135980dd4e9 posix_fildes(): New helper: run a function that takes a file descriptor
Fred Drake <fdrake@acm.org>
parents: 23026
diff changeset
7997 #endif
9822
17e4d81949b9 Added fsync() and fdatasync(). Patches by Scott Cotton. Requires
Guido van Rossum <guido@python.org>
parents: 9795
diff changeset
7998 #ifdef HAVE_FSYNC
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
7999 {"fsync", posix_fsync, METH_O, posix_fsync__doc__},
9822
17e4d81949b9 Added fsync() and fdatasync(). Patches by Scott Cotton. Requires
Guido van Rossum <guido@python.org>
parents: 9795
diff changeset
8000 #endif
17e4d81949b9 Added fsync() and fdatasync(). Patches by Scott Cotton. Requires
Guido van Rossum <guido@python.org>
parents: 9795
diff changeset
8001 #ifdef HAVE_FDATASYNC
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8002 {"fdatasync", posix_fdatasync, METH_O, posix_fdatasync__doc__},
9822
17e4d81949b9 Added fsync() and fdatasync(). Patches by Scott Cotton. Requires
Guido van Rossum <guido@python.org>
parents: 9795
diff changeset
8003 #endif
8810
4aa76480d812 Patch by Jody Winston (with my changes) to add some of the "wait
Guido van Rossum <guido@python.org>
parents: 8708
diff changeset
8004 #ifdef HAVE_SYS_WAIT_H
23242
4e234b87170b WCOREDUMP(), WIFCONTINUED(), WCONTINUED, WUNTRACED: New.
Fred Drake <fdrake@acm.org>
parents: 23193
diff changeset
8005 #ifdef WCOREDUMP
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8006 {"WCOREDUMP", posix_WCOREDUMP, METH_VARARGS, posix_WCOREDUMP__doc__},
23242
4e234b87170b WCOREDUMP(), WIFCONTINUED(), WCONTINUED, WUNTRACED: New.
Fred Drake <fdrake@acm.org>
parents: 23193
diff changeset
8007 #endif /* WCOREDUMP */
23379
e5df086ed455 Rename posix_WCONTINUED to posix_WIFCONTINUED, call WIFCONTINUED inside,
Martin v. Löwis <martin@v.loewis.de>
parents: 23242
diff changeset
8008 #ifdef WIFCONTINUED
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8009 {"WIFCONTINUED",posix_WIFCONTINUED, METH_VARARGS, posix_WIFCONTINUED__doc__},
23379
e5df086ed455 Rename posix_WCONTINUED to posix_WIFCONTINUED, call WIFCONTINUED inside,
Martin v. Löwis <martin@v.loewis.de>
parents: 23242
diff changeset
8010 #endif /* WIFCONTINUED */
8810
4aa76480d812 Patch by Jody Winston (with my changes) to add some of the "wait
Guido van Rossum <guido@python.org>
parents: 8708
diff changeset
8011 #ifdef WIFSTOPPED
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8012 {"WIFSTOPPED", posix_WIFSTOPPED, METH_VARARGS, posix_WIFSTOPPED__doc__},
8810
4aa76480d812 Patch by Jody Winston (with my changes) to add some of the "wait
Guido van Rossum <guido@python.org>
parents: 8708
diff changeset
8013 #endif /* WIFSTOPPED */
4aa76480d812 Patch by Jody Winston (with my changes) to add some of the "wait
Guido van Rossum <guido@python.org>
parents: 8708
diff changeset
8014 #ifdef WIFSIGNALED
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8015 {"WIFSIGNALED", posix_WIFSIGNALED, METH_VARARGS, posix_WIFSIGNALED__doc__},
8810
4aa76480d812 Patch by Jody Winston (with my changes) to add some of the "wait
Guido van Rossum <guido@python.org>
parents: 8708
diff changeset
8016 #endif /* WIFSIGNALED */
4aa76480d812 Patch by Jody Winston (with my changes) to add some of the "wait
Guido van Rossum <guido@python.org>
parents: 8708
diff changeset
8017 #ifdef WIFEXITED
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8018 {"WIFEXITED", posix_WIFEXITED, METH_VARARGS, posix_WIFEXITED__doc__},
8810
4aa76480d812 Patch by Jody Winston (with my changes) to add some of the "wait
Guido van Rossum <guido@python.org>
parents: 8708
diff changeset
8019 #endif /* WIFEXITED */
4aa76480d812 Patch by Jody Winston (with my changes) to add some of the "wait
Guido van Rossum <guido@python.org>
parents: 8708
diff changeset
8020 #ifdef WEXITSTATUS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8021 {"WEXITSTATUS", posix_WEXITSTATUS, METH_VARARGS, posix_WEXITSTATUS__doc__},
8810
4aa76480d812 Patch by Jody Winston (with my changes) to add some of the "wait
Guido van Rossum <guido@python.org>
parents: 8708
diff changeset
8022 #endif /* WEXITSTATUS */
4aa76480d812 Patch by Jody Winston (with my changes) to add some of the "wait
Guido van Rossum <guido@python.org>
parents: 8708
diff changeset
8023 #ifdef WTERMSIG
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8024 {"WTERMSIG", posix_WTERMSIG, METH_VARARGS, posix_WTERMSIG__doc__},
8810
4aa76480d812 Patch by Jody Winston (with my changes) to add some of the "wait
Guido van Rossum <guido@python.org>
parents: 8708
diff changeset
8025 #endif /* WTERMSIG */
4aa76480d812 Patch by Jody Winston (with my changes) to add some of the "wait
Guido van Rossum <guido@python.org>
parents: 8708
diff changeset
8026 #ifdef WSTOPSIG
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8027 {"WSTOPSIG", posix_WSTOPSIG, METH_VARARGS, posix_WSTOPSIG__doc__},
8810
4aa76480d812 Patch by Jody Winston (with my changes) to add some of the "wait
Guido van Rossum <guido@python.org>
parents: 8708
diff changeset
8028 #endif /* WSTOPSIG */
4aa76480d812 Patch by Jody Winston (with my changes) to add some of the "wait
Guido van Rossum <guido@python.org>
parents: 8708
diff changeset
8029 #endif /* HAVE_SYS_WAIT_H */
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
8030 #if defined(HAVE_FSTATVFS) && defined(HAVE_SYS_STATVFS_H)
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8031 {"fstatvfs", posix_fstatvfs, METH_VARARGS, posix_fstatvfs__doc__},
9785
facb457b4d32 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
8032 #endif
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
8033 #if defined(HAVE_STATVFS) && defined(HAVE_SYS_STATVFS_H)
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8034 {"statvfs", posix_statvfs, METH_VARARGS, posix_statvfs__doc__},
11532
2951e2d27852 Added support for abort(), ctermid(), tmpfile(), tempnam(), tmpnam(),
Fred Drake <fdrake@acm.org>
parents: 11391
diff changeset
8035 #endif
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
8036 #ifdef HAVE_CONFSTR
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8037 {"confstr", posix_confstr, METH_VARARGS, posix_confstr__doc__},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
8038 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
8039 #ifdef HAVE_SYSCONF
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8040 {"sysconf", posix_sysconf, METH_VARARGS, posix_sysconf__doc__},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
8041 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
8042 #ifdef HAVE_FPATHCONF
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8043 {"fpathconf", posix_fpathconf, METH_VARARGS, posix_fpathconf__doc__},
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
8044 #endif
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
8045 #ifdef HAVE_PATHCONF
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8046 {"pathconf", posix_pathconf, METH_VARARGS, posix_pathconf__doc__},
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8047 #endif
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8048 {"abort", posix_abort, METH_NOARGS, posix_abort__doc__},
24071
8142f8d668a0 Patch #569753: Remove support for WIN16.
Martin v. Löwis <martin@v.loewis.de>
parents: 23937
diff changeset
8049 #ifdef MS_WINDOWS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8050 {"_getfullpathname", posix__getfullpathname, METH_VARARGS, NULL},
62874
730b728e5aef Implement #1578269. Patch by Jason R. Coombs.
Brian Curtin <brian.curtin@gmail.com>
parents: 62379
diff changeset
8051 {"_getfinalpathname", posix__getfinalpathname, METH_VARARGS, NULL},
64495
f6dfd6c563e1 Implement #7566 - os.path.sameopenfile for Windows.
Brian Curtin <brian.curtin@gmail.com>
parents: 64465
diff changeset
8052 {"_getfileinformation", posix__getfileinformation, METH_VARARGS, NULL},
70736
d40609dd01e0 Correction to 88e318166eaf - Issue #11583
Brian Curtin <brian@python.org>
parents: 70713
diff changeset
8053 {"_isdir", posix__isdir, METH_VARARGS, posix__isdir__doc__},
17817
f7c385226f65 Add support for Windows using "mbcs" as the default Unicode encoding when dealing with the file system. As discussed on python-dev and in patch 410465.
Mark Hammond <mhammond@skippinet.com.au>
parents: 17518
diff changeset
8054 #endif
26810
9d0e62c9a128 Patch #657889: Implement posix.getloadavg.
Martin v. Löwis <martin@v.loewis.de>
parents: 26646
diff changeset
8055 #ifdef HAVE_GETLOADAVG
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8056 {"getloadavg", posix_getloadavg, METH_NOARGS, posix_getloadavg__doc__},
26810
9d0e62c9a128 Patch #657889: Implement posix.getloadavg.
Martin v. Löwis <martin@v.loewis.de>
parents: 26646
diff changeset
8057 #endif
75066
f4b7ecf8a5f8 Issue #13703: add a way to randomize the hash values of basic types (str, bytes, datetime)
Georg Brandl <georg@python.org>
parents: 67689
diff changeset
8058 {"urandom", posix_urandom, METH_VARARGS, posix_urandom__doc__},
57477
4ef7b3e2d6a8 Merged revisions 76550 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 56381
diff changeset
8059 #ifdef HAVE_SETRESUID
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
8060 {"setresuid", posix_setresuid, METH_VARARGS, posix_setresuid__doc__},
57477
4ef7b3e2d6a8 Merged revisions 76550 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 56381
diff changeset
8061 #endif
4ef7b3e2d6a8 Merged revisions 76550 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 56381
diff changeset
8062 #ifdef HAVE_SETRESGID
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
8063 {"setresgid", posix_setresgid, METH_VARARGS, posix_setresgid__doc__},
57477
4ef7b3e2d6a8 Merged revisions 76550 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 56381
diff changeset
8064 #endif
4ef7b3e2d6a8 Merged revisions 76550 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 56381
diff changeset
8065 #ifdef HAVE_GETRESUID
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
8066 {"getresuid", posix_getresuid, METH_NOARGS, posix_getresuid__doc__},
57477
4ef7b3e2d6a8 Merged revisions 76550 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 56381
diff changeset
8067 #endif
4ef7b3e2d6a8 Merged revisions 76550 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 56381
diff changeset
8068 #ifdef HAVE_GETRESGID
61300
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
8069 {"getresgid", posix_getresgid, METH_NOARGS, posix_getresgid__doc__},
1cfb229844a7 Recorded merge of revisions 80844-80845 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60902
diff changeset
8070 #endif
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8071 {NULL, NULL} /* Sentinel */
6
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
8072 };
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
8073
fc6fcd7df4f7 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
8074
4789
d45ba64b82fd 1. Export open(2) flag constants for every defined constant
Barry Warsaw <barry@python.org>
parents: 4785
diff changeset
8075 static int
23056
a135980dd4e9 posix_fildes(): New helper: run a function that takes a file descriptor
Fred Drake <fdrake@acm.org>
parents: 23026
diff changeset
8076 ins(PyObject *module, char *symbol, long value)
4789
d45ba64b82fd 1. Export open(2) flag constants for every defined constant
Barry Warsaw <barry@python.org>
parents: 4785
diff changeset
8077 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8078 return PyModule_AddIntConstant(module, symbol, value);
4789
d45ba64b82fd 1. Export open(2) flag constants for every defined constant
Barry Warsaw <barry@python.org>
parents: 4785
diff changeset
8079 }
d45ba64b82fd 1. Export open(2) flag constants for every defined constant
Barry Warsaw <barry@python.org>
parents: 4785
diff changeset
8080
6766
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
8081 #if defined(PYOS_OS2)
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
8082 /* Insert Platform-Specific Constant Values (Strings & Numbers) of Common Use */
23056
a135980dd4e9 posix_fildes(): New helper: run a function that takes a file descriptor
Fred Drake <fdrake@acm.org>
parents: 23026
diff changeset
8083 static int insertvalues(PyObject *module)
6766
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
8084 {
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
8085 APIRET rc;
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
8086 ULONG values[QSV_MAX+1];
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
8087 PyObject *v;
21066
225c7dd17e37 Fixes for possible buffer overflows in sprintf() usages.
Marc-André Lemburg <mal@egenix.com>
parents: 21040
diff changeset
8088 char *ver, tmp[50];
6766
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
8089
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
8090 Py_BEGIN_ALLOW_THREADS
28707
de7690527584 - DosSetExtLIBPATH objects to a NULL pointer, but a pointer to a NULL
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 28694
diff changeset
8091 rc = DosQuerySysInfo(1L, QSV_MAX, &values[1], sizeof(ULONG) * QSV_MAX);
6766
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
8092 Py_END_ALLOW_THREADS
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
8093
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
8094 if (rc != NO_ERROR) {
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
8095 os2_error(rc);
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
8096 return -1;
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
8097 }
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
8098
23056
a135980dd4e9 posix_fildes(): New helper: run a function that takes a file descriptor
Fred Drake <fdrake@acm.org>
parents: 23026
diff changeset
8099 if (ins(module, "meminstalled", values[QSV_TOTPHYSMEM])) return -1;
a135980dd4e9 posix_fildes(): New helper: run a function that takes a file descriptor
Fred Drake <fdrake@acm.org>
parents: 23026
diff changeset
8100 if (ins(module, "memkernel", values[QSV_TOTRESMEM])) return -1;
a135980dd4e9 posix_fildes(): New helper: run a function that takes a file descriptor
Fred Drake <fdrake@acm.org>
parents: 23026
diff changeset
8101 if (ins(module, "memvirtual", values[QSV_TOTAVAILMEM])) return -1;
a135980dd4e9 posix_fildes(): New helper: run a function that takes a file descriptor
Fred Drake <fdrake@acm.org>
parents: 23026
diff changeset
8102 if (ins(module, "maxpathlen", values[QSV_MAX_PATH_LENGTH])) return -1;
a135980dd4e9 posix_fildes(): New helper: run a function that takes a file descriptor
Fred Drake <fdrake@acm.org>
parents: 23026
diff changeset
8103 if (ins(module, "maxnamelen", values[QSV_MAX_COMP_LENGTH])) return -1;
a135980dd4e9 posix_fildes(): New helper: run a function that takes a file descriptor
Fred Drake <fdrake@acm.org>
parents: 23026
diff changeset
8104 if (ins(module, "revision", values[QSV_VERSION_REVISION])) return -1;
a135980dd4e9 posix_fildes(): New helper: run a function that takes a file descriptor
Fred Drake <fdrake@acm.org>
parents: 23026
diff changeset
8105 if (ins(module, "timeslice", values[QSV_MIN_SLICE])) return -1;
6766
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
8106
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
8107 switch (values[QSV_VERSION_MINOR]) {
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
8108 case 0: ver = "2.00"; break;
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
8109 case 10: ver = "2.10"; break;
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
8110 case 11: ver = "2.11"; break;
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
8111 case 30: ver = "3.00"; break;
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
8112 case 40: ver = "4.00"; break;
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
8113 case 50: ver = "5.00"; break;
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
8114 default:
21073
304b34023876 sprintf -> PyOS_snprintf in some "obviously safe" cases.
Tim Peters <tim.peters@gmail.com>
parents: 21066
diff changeset
8115 PyOS_snprintf(tmp, sizeof(tmp),
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8116 "%d-%d", values[QSV_VERSION_MAJOR],
21073
304b34023876 sprintf -> PyOS_snprintf in some "obviously safe" cases.
Tim Peters <tim.peters@gmail.com>
parents: 21066
diff changeset
8117 values[QSV_VERSION_MINOR]);
6766
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
8118 ver = &tmp[0];
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
8119 }
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
8120
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
8121 /* Add Indicator of the Version of the Operating System */
23056
a135980dd4e9 posix_fildes(): New helper: run a function that takes a file descriptor
Fred Drake <fdrake@acm.org>
parents: 23026
diff changeset
8122 if (PyModule_AddStringConstant(module, "version", tmp) < 0)
6766
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
8123 return -1;
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
8124
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
8125 /* Add Indicator of Which Drive was Used to Boot the System */
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
8126 tmp[0] = 'A' + values[QSV_BOOT_DRIVE] - 1;
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
8127 tmp[1] = ':';
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
8128 tmp[2] = '\0';
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
8129
23056
a135980dd4e9 posix_fildes(): New helper: run a function that takes a file descriptor
Fred Drake <fdrake@acm.org>
parents: 23026
diff changeset
8130 return PyModule_AddStringConstant(module, "bootdrive", tmp);
6766
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
8131 }
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
8132 #endif
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
8133
66606
9a2058309c1a Fix #9333. Expose os.symlink on Windows only when usable.
Brian Curtin <brian.curtin@gmail.com>
parents: 66555
diff changeset
8134 #if defined(HAVE_SYMLINK) && defined(MS_WINDOWS)
67183
5aa433a277f9 Fix #9333. The symlink function is always available now, raising OSError
Brian Curtin <brian.curtin@gmail.com>
parents: 66779
diff changeset
8135 static int
66606
9a2058309c1a Fix #9333. Expose os.symlink on Windows only when usable.
Brian Curtin <brian.curtin@gmail.com>
parents: 66555
diff changeset
8136 enable_symlink()
9a2058309c1a Fix #9333. Expose os.symlink on Windows only when usable.
Brian Curtin <brian.curtin@gmail.com>
parents: 66555
diff changeset
8137 {
9a2058309c1a Fix #9333. Expose os.symlink on Windows only when usable.
Brian Curtin <brian.curtin@gmail.com>
parents: 66555
diff changeset
8138 HANDLE tok;
9a2058309c1a Fix #9333. Expose os.symlink on Windows only when usable.
Brian Curtin <brian.curtin@gmail.com>
parents: 66555
diff changeset
8139 TOKEN_PRIVILEGES tok_priv;
9a2058309c1a Fix #9333. Expose os.symlink on Windows only when usable.
Brian Curtin <brian.curtin@gmail.com>
parents: 66555
diff changeset
8140 LUID luid;
9a2058309c1a Fix #9333. Expose os.symlink on Windows only when usable.
Brian Curtin <brian.curtin@gmail.com>
parents: 66555
diff changeset
8141 int meth_idx = 0;
9a2058309c1a Fix #9333. Expose os.symlink on Windows only when usable.
Brian Curtin <brian.curtin@gmail.com>
parents: 66555
diff changeset
8142
9a2058309c1a Fix #9333. Expose os.symlink on Windows only when usable.
Brian Curtin <brian.curtin@gmail.com>
parents: 66555
diff changeset
8143 if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ALL_ACCESS, &tok))
67183
5aa433a277f9 Fix #9333. The symlink function is always available now, raising OSError
Brian Curtin <brian.curtin@gmail.com>
parents: 66779
diff changeset
8144 return 0;
66606
9a2058309c1a Fix #9333. Expose os.symlink on Windows only when usable.
Brian Curtin <brian.curtin@gmail.com>
parents: 66555
diff changeset
8145
9a2058309c1a Fix #9333. Expose os.symlink on Windows only when usable.
Brian Curtin <brian.curtin@gmail.com>
parents: 66555
diff changeset
8146 if (!LookupPrivilegeValue(NULL, SE_CREATE_SYMBOLIC_LINK_NAME, &luid))
67183
5aa433a277f9 Fix #9333. The symlink function is always available now, raising OSError
Brian Curtin <brian.curtin@gmail.com>
parents: 66779
diff changeset
8147 return 0;
66606
9a2058309c1a Fix #9333. Expose os.symlink on Windows only when usable.
Brian Curtin <brian.curtin@gmail.com>
parents: 66555
diff changeset
8148
9a2058309c1a Fix #9333. Expose os.symlink on Windows only when usable.
Brian Curtin <brian.curtin@gmail.com>
parents: 66555
diff changeset
8149 tok_priv.PrivilegeCount = 1;
9a2058309c1a Fix #9333. Expose os.symlink on Windows only when usable.
Brian Curtin <brian.curtin@gmail.com>
parents: 66555
diff changeset
8150 tok_priv.Privileges[0].Luid = luid;
9a2058309c1a Fix #9333. Expose os.symlink on Windows only when usable.
Brian Curtin <brian.curtin@gmail.com>
parents: 66555
diff changeset
8151 tok_priv.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
9a2058309c1a Fix #9333. Expose os.symlink on Windows only when usable.
Brian Curtin <brian.curtin@gmail.com>
parents: 66555
diff changeset
8152
9a2058309c1a Fix #9333. Expose os.symlink on Windows only when usable.
Brian Curtin <brian.curtin@gmail.com>
parents: 66555
diff changeset
8153 if (!AdjustTokenPrivileges(tok, FALSE, &tok_priv,
9a2058309c1a Fix #9333. Expose os.symlink on Windows only when usable.
Brian Curtin <brian.curtin@gmail.com>
parents: 66555
diff changeset
8154 sizeof(TOKEN_PRIVILEGES),
9a2058309c1a Fix #9333. Expose os.symlink on Windows only when usable.
Brian Curtin <brian.curtin@gmail.com>
parents: 66555
diff changeset
8155 (PTOKEN_PRIVILEGES) NULL, (PDWORD) NULL))
67183
5aa433a277f9 Fix #9333. The symlink function is always available now, raising OSError
Brian Curtin <brian.curtin@gmail.com>
parents: 66779
diff changeset
8156 return 0;
5aa433a277f9 Fix #9333. The symlink function is always available now, raising OSError
Brian Curtin <brian.curtin@gmail.com>
parents: 66779
diff changeset
8157
5aa433a277f9 Fix #9333. The symlink function is always available now, raising OSError
Brian Curtin <brian.curtin@gmail.com>
parents: 66779
diff changeset
8158 /* ERROR_NOT_ALL_ASSIGNED returned when the privilege can't be assigned. */
5aa433a277f9 Fix #9333. The symlink function is always available now, raising OSError
Brian Curtin <brian.curtin@gmail.com>
parents: 66779
diff changeset
8159 return GetLastError() == ERROR_NOT_ALL_ASSIGNED ? 0 : 1;
66606
9a2058309c1a Fix #9333. Expose os.symlink on Windows only when usable.
Brian Curtin <brian.curtin@gmail.com>
parents: 66555
diff changeset
8160 }
9a2058309c1a Fix #9333. Expose os.symlink on Windows only when usable.
Brian Curtin <brian.curtin@gmail.com>
parents: 66555
diff changeset
8161 #endif /* defined(HAVE_SYMLINK) && defined(MS_WINDOWS) */
9a2058309c1a Fix #9333. Expose os.symlink on Windows only when usable.
Brian Curtin <brian.curtin@gmail.com>
parents: 66555
diff changeset
8162
4789
d45ba64b82fd 1. Export open(2) flag constants for every defined constant
Barry Warsaw <barry@python.org>
parents: 4785
diff changeset
8163 static int
13651
8a063423e0b7 Bunch of minor ANSIfications: 'void initfunc()' -> 'void initfunc(void)',
Thomas Wouters <thomas@python.org>
parents: 13642
diff changeset
8164 all_ins(PyObject *d)
4789
d45ba64b82fd 1. Export open(2) flag constants for every defined constant
Barry Warsaw <barry@python.org>
parents: 4785
diff changeset
8165 {
9785
facb457b4d32 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
8166 #ifdef F_OK
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8167 if (ins(d, "F_OK", (long)F_OK)) return -1;
21839
5e67ad76c72f Expose more MS WIndows constants usable w/ low-level os.open().
Tim Peters <tim.peters@gmail.com>
parents: 21712
diff changeset
8168 #endif
9785
facb457b4d32 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
8169 #ifdef R_OK
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8170 if (ins(d, "R_OK", (long)R_OK)) return -1;
21839
5e67ad76c72f Expose more MS WIndows constants usable w/ low-level os.open().
Tim Peters <tim.peters@gmail.com>
parents: 21712
diff changeset
8171 #endif
9785
facb457b4d32 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
8172 #ifdef W_OK
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8173 if (ins(d, "W_OK", (long)W_OK)) return -1;
21839
5e67ad76c72f Expose more MS WIndows constants usable w/ low-level os.open().
Tim Peters <tim.peters@gmail.com>
parents: 21712
diff changeset
8174 #endif
9785
facb457b4d32 Changes for long file support by Steve Clift.
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
8175 #ifdef X_OK
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8176 if (ins(d, "X_OK", (long)X_OK)) return -1;
21839
5e67ad76c72f Expose more MS WIndows constants usable w/ low-level os.open().
Tim Peters <tim.peters@gmail.com>
parents: 21712
diff changeset
8177 #endif
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
8178 #ifdef NGROUPS_MAX
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8179 if (ins(d, "NGROUPS_MAX", (long)NGROUPS_MAX)) return -1;
11559
22f4cf16b5a3 Added bindings for getgroups(), fpathconf(), pathconf(), confstr(),
Fred Drake <fdrake@acm.org>
parents: 11532
diff changeset
8180 #endif
11532
2951e2d27852 Added support for abort(), ctermid(), tmpfile(), tempnam(), tmpnam(),
Fred Drake <fdrake@acm.org>
parents: 11391
diff changeset
8181 #ifdef TMP_MAX
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8182 if (ins(d, "TMP_MAX", (long)TMP_MAX)) return -1;
11532
2951e2d27852 Added support for abort(), ctermid(), tmpfile(), tempnam(), tmpnam(),
Fred Drake <fdrake@acm.org>
parents: 11391
diff changeset
8183 #endif
23242
4e234b87170b WCOREDUMP(), WIFCONTINUED(), WCONTINUED, WUNTRACED: New.
Fred Drake <fdrake@acm.org>
parents: 23193
diff changeset
8184 #ifdef WCONTINUED
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8185 if (ins(d, "WCONTINUED", (long)WCONTINUED)) return -1;
23242
4e234b87170b WCOREDUMP(), WIFCONTINUED(), WCONTINUED, WUNTRACED: New.
Fred Drake <fdrake@acm.org>
parents: 23193
diff changeset
8186 #endif
4789
d45ba64b82fd 1. Export open(2) flag constants for every defined constant
Barry Warsaw <barry@python.org>
parents: 4785
diff changeset
8187 #ifdef WNOHANG
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8188 if (ins(d, "WNOHANG", (long)WNOHANG)) return -1;
21839
5e67ad76c72f Expose more MS WIndows constants usable w/ low-level os.open().
Tim Peters <tim.peters@gmail.com>
parents: 21712
diff changeset
8189 #endif
23242
4e234b87170b WCOREDUMP(), WIFCONTINUED(), WCONTINUED, WUNTRACED: New.
Fred Drake <fdrake@acm.org>
parents: 23193
diff changeset
8190 #ifdef WUNTRACED
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8191 if (ins(d, "WUNTRACED", (long)WUNTRACED)) return -1;
23242
4e234b87170b WCOREDUMP(), WIFCONTINUED(), WCONTINUED, WUNTRACED: New.
Fred Drake <fdrake@acm.org>
parents: 23193
diff changeset
8192 #endif
4789
d45ba64b82fd 1. Export open(2) flag constants for every defined constant
Barry Warsaw <barry@python.org>
parents: 4785
diff changeset
8193 #ifdef O_RDONLY
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8194 if (ins(d, "O_RDONLY", (long)O_RDONLY)) return -1;
4789
d45ba64b82fd 1. Export open(2) flag constants for every defined constant
Barry Warsaw <barry@python.org>
parents: 4785
diff changeset
8195 #endif
d45ba64b82fd 1. Export open(2) flag constants for every defined constant
Barry Warsaw <barry@python.org>
parents: 4785
diff changeset
8196 #ifdef O_WRONLY
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8197 if (ins(d, "O_WRONLY", (long)O_WRONLY)) return -1;
4789
d45ba64b82fd 1. Export open(2) flag constants for every defined constant
Barry Warsaw <barry@python.org>
parents: 4785
diff changeset
8198 #endif
d45ba64b82fd 1. Export open(2) flag constants for every defined constant
Barry Warsaw <barry@python.org>
parents: 4785
diff changeset
8199 #ifdef O_RDWR
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8200 if (ins(d, "O_RDWR", (long)O_RDWR)) return -1;
4789
d45ba64b82fd 1. Export open(2) flag constants for every defined constant
Barry Warsaw <barry@python.org>
parents: 4785
diff changeset
8201 #endif
d45ba64b82fd 1. Export open(2) flag constants for every defined constant
Barry Warsaw <barry@python.org>
parents: 4785
diff changeset
8202 #ifdef O_NDELAY
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8203 if (ins(d, "O_NDELAY", (long)O_NDELAY)) return -1;
4789
d45ba64b82fd 1. Export open(2) flag constants for every defined constant
Barry Warsaw <barry@python.org>
parents: 4785
diff changeset
8204 #endif
d45ba64b82fd 1. Export open(2) flag constants for every defined constant
Barry Warsaw <barry@python.org>
parents: 4785
diff changeset
8205 #ifdef O_NONBLOCK
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8206 if (ins(d, "O_NONBLOCK", (long)O_NONBLOCK)) return -1;
4789
d45ba64b82fd 1. Export open(2) flag constants for every defined constant
Barry Warsaw <barry@python.org>
parents: 4785
diff changeset
8207 #endif
d45ba64b82fd 1. Export open(2) flag constants for every defined constant
Barry Warsaw <barry@python.org>
parents: 4785
diff changeset
8208 #ifdef O_APPEND
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8209 if (ins(d, "O_APPEND", (long)O_APPEND)) return -1;
4789
d45ba64b82fd 1. Export open(2) flag constants for every defined constant
Barry Warsaw <barry@python.org>
parents: 4785
diff changeset
8210 #endif
d45ba64b82fd 1. Export open(2) flag constants for every defined constant
Barry Warsaw <barry@python.org>
parents: 4785
diff changeset
8211 #ifdef O_DSYNC
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8212 if (ins(d, "O_DSYNC", (long)O_DSYNC)) return -1;
4789
d45ba64b82fd 1. Export open(2) flag constants for every defined constant
Barry Warsaw <barry@python.org>
parents: 4785
diff changeset
8213 #endif
d45ba64b82fd 1. Export open(2) flag constants for every defined constant
Barry Warsaw <barry@python.org>
parents: 4785
diff changeset
8214 #ifdef O_RSYNC
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8215 if (ins(d, "O_RSYNC", (long)O_RSYNC)) return -1;
4789
d45ba64b82fd 1. Export open(2) flag constants for every defined constant
Barry Warsaw <barry@python.org>
parents: 4785
diff changeset
8216 #endif
d45ba64b82fd 1. Export open(2) flag constants for every defined constant
Barry Warsaw <barry@python.org>
parents: 4785
diff changeset
8217 #ifdef O_SYNC
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8218 if (ins(d, "O_SYNC", (long)O_SYNC)) return -1;
4789
d45ba64b82fd 1. Export open(2) flag constants for every defined constant
Barry Warsaw <barry@python.org>
parents: 4785
diff changeset
8219 #endif
d45ba64b82fd 1. Export open(2) flag constants for every defined constant
Barry Warsaw <barry@python.org>
parents: 4785
diff changeset
8220 #ifdef O_NOCTTY
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8221 if (ins(d, "O_NOCTTY", (long)O_NOCTTY)) return -1;
4789
d45ba64b82fd 1. Export open(2) flag constants for every defined constant
Barry Warsaw <barry@python.org>
parents: 4785
diff changeset
8222 #endif
d45ba64b82fd 1. Export open(2) flag constants for every defined constant
Barry Warsaw <barry@python.org>
parents: 4785
diff changeset
8223 #ifdef O_CREAT
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8224 if (ins(d, "O_CREAT", (long)O_CREAT)) return -1;
4789
d45ba64b82fd 1. Export open(2) flag constants for every defined constant
Barry Warsaw <barry@python.org>
parents: 4785
diff changeset
8225 #endif
d45ba64b82fd 1. Export open(2) flag constants for every defined constant
Barry Warsaw <barry@python.org>
parents: 4785
diff changeset
8226 #ifdef O_EXCL
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8227 if (ins(d, "O_EXCL", (long)O_EXCL)) return -1;
4789
d45ba64b82fd 1. Export open(2) flag constants for every defined constant
Barry Warsaw <barry@python.org>
parents: 4785
diff changeset
8228 #endif
d45ba64b82fd 1. Export open(2) flag constants for every defined constant
Barry Warsaw <barry@python.org>
parents: 4785
diff changeset
8229 #ifdef O_TRUNC
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8230 if (ins(d, "O_TRUNC", (long)O_TRUNC)) return -1;
4789
d45ba64b82fd 1. Export open(2) flag constants for every defined constant
Barry Warsaw <barry@python.org>
parents: 4785
diff changeset
8231 #endif
5967
9e4ddb459b10 Added O_BINARY and O_TEXT (for Windows).
Guido van Rossum <guido@python.org>
parents: 5725
diff changeset
8232 #ifdef O_BINARY
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8233 if (ins(d, "O_BINARY", (long)O_BINARY)) return -1;
5967
9e4ddb459b10 Added O_BINARY and O_TEXT (for Windows).
Guido van Rossum <guido@python.org>
parents: 5725
diff changeset
8234 #endif
9e4ddb459b10 Added O_BINARY and O_TEXT (for Windows).
Guido van Rossum <guido@python.org>
parents: 5725
diff changeset
8235 #ifdef O_TEXT
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8236 if (ins(d, "O_TEXT", (long)O_TEXT)) return -1;
5967
9e4ddb459b10 Added O_BINARY and O_TEXT (for Windows).
Guido van Rossum <guido@python.org>
parents: 5725
diff changeset
8237 #endif
20548
a56427e5c5e1 Expose O_LARGEFILE, O_DIRECT, O_DIRECTORY, and O_NOFOLLOW.
Martin v. Löwis <martin@v.loewis.de>
parents: 20543
diff changeset
8238 #ifdef O_LARGEFILE
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8239 if (ins(d, "O_LARGEFILE", (long)O_LARGEFILE)) return -1;
20548
a56427e5c5e1 Expose O_LARGEFILE, O_DIRECT, O_DIRECTORY, and O_NOFOLLOW.
Martin v. Löwis <martin@v.loewis.de>
parents: 20543
diff changeset
8240 #endif
34959
6ba293b7115b Add O_SHLOCK & O_EXLOCK. Closes patch #1103951.
Skip Montanaro <skip@pobox.com>
parents: 34705
diff changeset
8241 #ifdef O_SHLOCK
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8242 if (ins(d, "O_SHLOCK", (long)O_SHLOCK)) return -1;
34959
6ba293b7115b Add O_SHLOCK & O_EXLOCK. Closes patch #1103951.
Skip Montanaro <skip@pobox.com>
parents: 34705
diff changeset
8243 #endif
6ba293b7115b Add O_SHLOCK & O_EXLOCK. Closes patch #1103951.
Skip Montanaro <skip@pobox.com>
parents: 34705
diff changeset
8244 #ifdef O_EXLOCK
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8245 if (ins(d, "O_EXLOCK", (long)O_EXLOCK)) return -1;
34959
6ba293b7115b Add O_SHLOCK & O_EXLOCK. Closes patch #1103951.
Skip Montanaro <skip@pobox.com>
parents: 34705
diff changeset
8246 #endif
20548
a56427e5c5e1 Expose O_LARGEFILE, O_DIRECT, O_DIRECTORY, and O_NOFOLLOW.
Martin v. Löwis <martin@v.loewis.de>
parents: 20543
diff changeset
8247
21839
5e67ad76c72f Expose more MS WIndows constants usable w/ low-level os.open().
Tim Peters <tim.peters@gmail.com>
parents: 21712
diff changeset
8248 /* MS Windows */
5e67ad76c72f Expose more MS WIndows constants usable w/ low-level os.open().
Tim Peters <tim.peters@gmail.com>
parents: 21712
diff changeset
8249 #ifdef O_NOINHERIT
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8250 /* Don't inherit in child processes. */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8251 if (ins(d, "O_NOINHERIT", (long)O_NOINHERIT)) return -1;
21839
5e67ad76c72f Expose more MS WIndows constants usable w/ low-level os.open().
Tim Peters <tim.peters@gmail.com>
parents: 21712
diff changeset
8252 #endif
5e67ad76c72f Expose more MS WIndows constants usable w/ low-level os.open().
Tim Peters <tim.peters@gmail.com>
parents: 21712
diff changeset
8253 #ifdef _O_SHORT_LIVED
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8254 /* Optimize for short life (keep in memory). */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8255 /* MS forgot to define this one with a non-underscore form too. */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8256 if (ins(d, "O_SHORT_LIVED", (long)_O_SHORT_LIVED)) return -1;
21839
5e67ad76c72f Expose more MS WIndows constants usable w/ low-level os.open().
Tim Peters <tim.peters@gmail.com>
parents: 21712
diff changeset
8257 #endif
5e67ad76c72f Expose more MS WIndows constants usable w/ low-level os.open().
Tim Peters <tim.peters@gmail.com>
parents: 21712
diff changeset
8258 #ifdef O_TEMPORARY
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8259 /* Automatically delete when last handle is closed. */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8260 if (ins(d, "O_TEMPORARY", (long)O_TEMPORARY)) return -1;
21839
5e67ad76c72f Expose more MS WIndows constants usable w/ low-level os.open().
Tim Peters <tim.peters@gmail.com>
parents: 21712
diff changeset
8261 #endif
5e67ad76c72f Expose more MS WIndows constants usable w/ low-level os.open().
Tim Peters <tim.peters@gmail.com>
parents: 21712
diff changeset
8262 #ifdef O_RANDOM
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8263 /* Optimize for random access. */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8264 if (ins(d, "O_RANDOM", (long)O_RANDOM)) return -1;
21839
5e67ad76c72f Expose more MS WIndows constants usable w/ low-level os.open().
Tim Peters <tim.peters@gmail.com>
parents: 21712
diff changeset
8265 #endif
5e67ad76c72f Expose more MS WIndows constants usable w/ low-level os.open().
Tim Peters <tim.peters@gmail.com>
parents: 21712
diff changeset
8266 #ifdef O_SEQUENTIAL
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8267 /* Optimize for sequential access. */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8268 if (ins(d, "O_SEQUENTIAL", (long)O_SEQUENTIAL)) return -1;
21839
5e67ad76c72f Expose more MS WIndows constants usable w/ low-level os.open().
Tim Peters <tim.peters@gmail.com>
parents: 21712
diff changeset
8269 #endif
5e67ad76c72f Expose more MS WIndows constants usable w/ low-level os.open().
Tim Peters <tim.peters@gmail.com>
parents: 21712
diff changeset
8270
20548
a56427e5c5e1 Expose O_LARGEFILE, O_DIRECT, O_DIRECTORY, and O_NOFOLLOW.
Martin v. Löwis <martin@v.loewis.de>
parents: 20543
diff changeset
8271 /* GNU extensions. */
47109
a02bc2a84d19 Merged revisions 63361-63373,63375,63377-63380 via svnmerge from
Alexandre Vassalotti <alexandre@peadrop.com>
parents: 46412
diff changeset
8272 #ifdef O_ASYNC
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8273 /* Send a SIGIO signal whenever input or output
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8274 becomes available on file descriptor */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8275 if (ins(d, "O_ASYNC", (long)O_ASYNC)) return -1;
47109
a02bc2a84d19 Merged revisions 63361-63373,63375,63377-63380 via svnmerge from
Alexandre Vassalotti <alexandre@peadrop.com>
parents: 46412
diff changeset
8276 #endif
20548
a56427e5c5e1 Expose O_LARGEFILE, O_DIRECT, O_DIRECTORY, and O_NOFOLLOW.
Martin v. Löwis <martin@v.loewis.de>
parents: 20543
diff changeset
8277 #ifdef O_DIRECT
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8278 /* Direct disk access. */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8279 if (ins(d, "O_DIRECT", (long)O_DIRECT)) return -1;
20548
a56427e5c5e1 Expose O_LARGEFILE, O_DIRECT, O_DIRECTORY, and O_NOFOLLOW.
Martin v. Löwis <martin@v.loewis.de>
parents: 20543
diff changeset
8280 #endif
a56427e5c5e1 Expose O_LARGEFILE, O_DIRECT, O_DIRECTORY, and O_NOFOLLOW.
Martin v. Löwis <martin@v.loewis.de>
parents: 20543
diff changeset
8281 #ifdef O_DIRECTORY
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8282 /* Must be a directory. */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8283 if (ins(d, "O_DIRECTORY", (long)O_DIRECTORY)) return -1;
20548
a56427e5c5e1 Expose O_LARGEFILE, O_DIRECT, O_DIRECTORY, and O_NOFOLLOW.
Martin v. Löwis <martin@v.loewis.de>
parents: 20543
diff changeset
8284 #endif
a56427e5c5e1 Expose O_LARGEFILE, O_DIRECT, O_DIRECTORY, and O_NOFOLLOW.
Martin v. Löwis <martin@v.loewis.de>
parents: 20543
diff changeset
8285 #ifdef O_NOFOLLOW
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8286 /* Do not follow links. */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8287 if (ins(d, "O_NOFOLLOW", (long)O_NOFOLLOW)) return -1;
20548
a56427e5c5e1 Expose O_LARGEFILE, O_DIRECT, O_DIRECTORY, and O_NOFOLLOW.
Martin v. Löwis <martin@v.loewis.de>
parents: 20543
diff changeset
8288 #endif
44025
ebc7389297d6 Merged revisions 59107-59186 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 43965
diff changeset
8289 #ifdef O_NOATIME
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8290 /* Do not update the access time. */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8291 if (ins(d, "O_NOATIME", (long)O_NOATIME)) return -1;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8292 #endif
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8293
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8294 /* These come from sysexits.h */
27139
7bbb0dd8d230 all_ins(): EX_OK and friends, constants from sysexits.h
Barry Warsaw <barry@python.org>
parents: 26998
diff changeset
8295 #ifdef EX_OK
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8296 if (ins(d, "EX_OK", (long)EX_OK)) return -1;
27199
77b70a8884cb Get rid of compiler warnings
Neal Norwitz <nnorwitz@gmail.com>
parents: 27139
diff changeset
8297 #endif /* EX_OK */
27139
7bbb0dd8d230 all_ins(): EX_OK and friends, constants from sysexits.h
Barry Warsaw <barry@python.org>
parents: 26998
diff changeset
8298 #ifdef EX_USAGE
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8299 if (ins(d, "EX_USAGE", (long)EX_USAGE)) return -1;
27199
77b70a8884cb Get rid of compiler warnings
Neal Norwitz <nnorwitz@gmail.com>
parents: 27139
diff changeset
8300 #endif /* EX_USAGE */
27139
7bbb0dd8d230 all_ins(): EX_OK and friends, constants from sysexits.h
Barry Warsaw <barry@python.org>
parents: 26998
diff changeset
8301 #ifdef EX_DATAERR
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8302 if (ins(d, "EX_DATAERR", (long)EX_DATAERR)) return -1;
27199
77b70a8884cb Get rid of compiler warnings
Neal Norwitz <nnorwitz@gmail.com>
parents: 27139
diff changeset
8303 #endif /* EX_DATAERR */
27139
7bbb0dd8d230 all_ins(): EX_OK and friends, constants from sysexits.h
Barry Warsaw <barry@python.org>
parents: 26998
diff changeset
8304 #ifdef EX_NOINPUT
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8305 if (ins(d, "EX_NOINPUT", (long)EX_NOINPUT)) return -1;
27199
77b70a8884cb Get rid of compiler warnings
Neal Norwitz <nnorwitz@gmail.com>
parents: 27139
diff changeset
8306 #endif /* EX_NOINPUT */
27139
7bbb0dd8d230 all_ins(): EX_OK and friends, constants from sysexits.h
Barry Warsaw <barry@python.org>
parents: 26998
diff changeset
8307 #ifdef EX_NOUSER
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8308 if (ins(d, "EX_NOUSER", (long)EX_NOUSER)) return -1;
27199
77b70a8884cb Get rid of compiler warnings
Neal Norwitz <nnorwitz@gmail.com>
parents: 27139
diff changeset
8309 #endif /* EX_NOUSER */
27139
7bbb0dd8d230 all_ins(): EX_OK and friends, constants from sysexits.h
Barry Warsaw <barry@python.org>
parents: 26998
diff changeset
8310 #ifdef EX_NOHOST
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8311 if (ins(d, "EX_NOHOST", (long)EX_NOHOST)) return -1;
27199
77b70a8884cb Get rid of compiler warnings
Neal Norwitz <nnorwitz@gmail.com>
parents: 27139
diff changeset
8312 #endif /* EX_NOHOST */
27139
7bbb0dd8d230 all_ins(): EX_OK and friends, constants from sysexits.h
Barry Warsaw <barry@python.org>
parents: 26998
diff changeset
8313 #ifdef EX_UNAVAILABLE
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8314 if (ins(d, "EX_UNAVAILABLE", (long)EX_UNAVAILABLE)) return -1;
27199
77b70a8884cb Get rid of compiler warnings
Neal Norwitz <nnorwitz@gmail.com>
parents: 27139
diff changeset
8315 #endif /* EX_UNAVAILABLE */
27139
7bbb0dd8d230 all_ins(): EX_OK and friends, constants from sysexits.h
Barry Warsaw <barry@python.org>
parents: 26998
diff changeset
8316 #ifdef EX_SOFTWARE
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8317 if (ins(d, "EX_SOFTWARE", (long)EX_SOFTWARE)) return -1;
27199
77b70a8884cb Get rid of compiler warnings
Neal Norwitz <nnorwitz@gmail.com>
parents: 27139
diff changeset
8318 #endif /* EX_SOFTWARE */
27139
7bbb0dd8d230 all_ins(): EX_OK and friends, constants from sysexits.h
Barry Warsaw <barry@python.org>
parents: 26998
diff changeset
8319 #ifdef EX_OSERR
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8320 if (ins(d, "EX_OSERR", (long)EX_OSERR)) return -1;
27199
77b70a8884cb Get rid of compiler warnings
Neal Norwitz <nnorwitz@gmail.com>
parents: 27139
diff changeset
8321 #endif /* EX_OSERR */
27139
7bbb0dd8d230 all_ins(): EX_OK and friends, constants from sysexits.h
Barry Warsaw <barry@python.org>
parents: 26998
diff changeset
8322 #ifdef EX_OSFILE
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8323 if (ins(d, "EX_OSFILE", (long)EX_OSFILE)) return -1;
27199
77b70a8884cb Get rid of compiler warnings
Neal Norwitz <nnorwitz@gmail.com>
parents: 27139
diff changeset
8324 #endif /* EX_OSFILE */
27139
7bbb0dd8d230 all_ins(): EX_OK and friends, constants from sysexits.h
Barry Warsaw <barry@python.org>
parents: 26998
diff changeset
8325 #ifdef EX_CANTCREAT
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8326 if (ins(d, "EX_CANTCREAT", (long)EX_CANTCREAT)) return -1;
27199
77b70a8884cb Get rid of compiler warnings
Neal Norwitz <nnorwitz@gmail.com>
parents: 27139
diff changeset
8327 #endif /* EX_CANTCREAT */
27139
7bbb0dd8d230 all_ins(): EX_OK and friends, constants from sysexits.h
Barry Warsaw <barry@python.org>
parents: 26998
diff changeset
8328 #ifdef EX_IOERR
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8329 if (ins(d, "EX_IOERR", (long)EX_IOERR)) return -1;
27199
77b70a8884cb Get rid of compiler warnings
Neal Norwitz <nnorwitz@gmail.com>
parents: 27139
diff changeset
8330 #endif /* EX_IOERR */
27139
7bbb0dd8d230 all_ins(): EX_OK and friends, constants from sysexits.h
Barry Warsaw <barry@python.org>
parents: 26998
diff changeset
8331 #ifdef EX_TEMPFAIL
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8332 if (ins(d, "EX_TEMPFAIL", (long)EX_TEMPFAIL)) return -1;
27199
77b70a8884cb Get rid of compiler warnings
Neal Norwitz <nnorwitz@gmail.com>
parents: 27139
diff changeset
8333 #endif /* EX_TEMPFAIL */
27139
7bbb0dd8d230 all_ins(): EX_OK and friends, constants from sysexits.h
Barry Warsaw <barry@python.org>
parents: 26998
diff changeset
8334 #ifdef EX_PROTOCOL
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8335 if (ins(d, "EX_PROTOCOL", (long)EX_PROTOCOL)) return -1;
27199
77b70a8884cb Get rid of compiler warnings
Neal Norwitz <nnorwitz@gmail.com>
parents: 27139
diff changeset
8336 #endif /* EX_PROTOCOL */
27139
7bbb0dd8d230 all_ins(): EX_OK and friends, constants from sysexits.h
Barry Warsaw <barry@python.org>
parents: 26998
diff changeset
8337 #ifdef EX_NOPERM
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8338 if (ins(d, "EX_NOPERM", (long)EX_NOPERM)) return -1;
27199
77b70a8884cb Get rid of compiler warnings
Neal Norwitz <nnorwitz@gmail.com>
parents: 27139
diff changeset
8339 #endif /* EX_NOPERM */
27139
7bbb0dd8d230 all_ins(): EX_OK and friends, constants from sysexits.h
Barry Warsaw <barry@python.org>
parents: 26998
diff changeset
8340 #ifdef EX_CONFIG
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8341 if (ins(d, "EX_CONFIG", (long)EX_CONFIG)) return -1;
27199
77b70a8884cb Get rid of compiler warnings
Neal Norwitz <nnorwitz@gmail.com>
parents: 27139
diff changeset
8342 #endif /* EX_CONFIG */
27139
7bbb0dd8d230 all_ins(): EX_OK and friends, constants from sysexits.h
Barry Warsaw <barry@python.org>
parents: 26998
diff changeset
8343 #ifdef EX_NOTFOUND
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8344 if (ins(d, "EX_NOTFOUND", (long)EX_NOTFOUND)) return -1;
27199
77b70a8884cb Get rid of compiler warnings
Neal Norwitz <nnorwitz@gmail.com>
parents: 27139
diff changeset
8345 #endif /* EX_NOTFOUND */
27139
7bbb0dd8d230 all_ins(): EX_OK and friends, constants from sysexits.h
Barry Warsaw <barry@python.org>
parents: 26998
diff changeset
8346
64608
d0f9afcb0619 Untabify file.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 64537
diff changeset
8347 /* statvfs */
64157
9adea9455753 #7647: add ST_RDONLY, ST_NOSUID constants to os module.
Andrew M. Kuchling <amk@amk.ca>
parents: 64083
diff changeset
8348 #ifdef ST_RDONLY
64608
d0f9afcb0619 Untabify file.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 64537
diff changeset
8349 if (ins(d, "ST_RDONLY", (long)ST_RDONLY)) return -1;
64157
9adea9455753 #7647: add ST_RDONLY, ST_NOSUID constants to os module.
Andrew M. Kuchling <amk@amk.ca>
parents: 64083
diff changeset
8350 #endif /* ST_RDONLY */
9adea9455753 #7647: add ST_RDONLY, ST_NOSUID constants to os module.
Andrew M. Kuchling <amk@amk.ca>
parents: 64083
diff changeset
8351 #ifdef ST_NOSUID
64608
d0f9afcb0619 Untabify file.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 64537
diff changeset
8352 if (ins(d, "ST_NOSUID", (long)ST_NOSUID)) return -1;
64157
9adea9455753 #7647: add ST_RDONLY, ST_NOSUID constants to os module.
Andrew M. Kuchling <amk@amk.ca>
parents: 64083
diff changeset
8353 #endif /* ST_NOSUID */
9adea9455753 #7647: add ST_RDONLY, ST_NOSUID constants to os module.
Andrew M. Kuchling <amk@amk.ca>
parents: 64083
diff changeset
8354
10069
5e01645ee41b Add _P_WAIT etc. for NT.
Guido van Rossum <guido@python.org>
parents: 10066
diff changeset
8355 #ifdef HAVE_SPAWNV
22116
0c4230269ed3 OS/2 EMX port changes (Modules part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 21966
diff changeset
8356 #if defined(PYOS_OS2) && defined(PYCC_GCC)
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8357 if (ins(d, "P_WAIT", (long)P_WAIT)) return -1;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8358 if (ins(d, "P_NOWAIT", (long)P_NOWAIT)) return -1;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8359 if (ins(d, "P_OVERLAY", (long)P_OVERLAY)) return -1;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8360 if (ins(d, "P_DEBUG", (long)P_DEBUG)) return -1;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8361 if (ins(d, "P_SESSION", (long)P_SESSION)) return -1;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8362 if (ins(d, "P_DETACH", (long)P_DETACH)) return -1;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8363 if (ins(d, "P_PM", (long)P_PM)) return -1;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8364 if (ins(d, "P_DEFAULT", (long)P_DEFAULT)) return -1;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8365 if (ins(d, "P_MINIMIZE", (long)P_MINIMIZE)) return -1;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8366 if (ins(d, "P_MAXIMIZE", (long)P_MAXIMIZE)) return -1;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8367 if (ins(d, "P_FULLSCREEN", (long)P_FULLSCREEN)) return -1;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8368 if (ins(d, "P_WINDOWED", (long)P_WINDOWED)) return -1;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8369 if (ins(d, "P_FOREGROUND", (long)P_FOREGROUND)) return -1;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8370 if (ins(d, "P_BACKGROUND", (long)P_BACKGROUND)) return -1;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8371 if (ins(d, "P_NOCLOSE", (long)P_NOCLOSE)) return -1;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8372 if (ins(d, "P_NOSESSION", (long)P_NOSESSION)) return -1;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8373 if (ins(d, "P_QUOTE", (long)P_QUOTE)) return -1;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8374 if (ins(d, "P_TILDE", (long)P_TILDE)) return -1;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8375 if (ins(d, "P_UNRELATED", (long)P_UNRELATED)) return -1;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8376 if (ins(d, "P_DEBUGDESC", (long)P_DEBUGDESC)) return -1;
22116
0c4230269ed3 OS/2 EMX port changes (Modules part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 21966
diff changeset
8377 #else
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8378 if (ins(d, "P_WAIT", (long)_P_WAIT)) return -1;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8379 if (ins(d, "P_NOWAIT", (long)_P_NOWAIT)) return -1;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8380 if (ins(d, "P_OVERLAY", (long)_OLD_P_OVERLAY)) return -1;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8381 if (ins(d, "P_NOWAITO", (long)_P_NOWAITO)) return -1;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8382 if (ins(d, "P_DETACH", (long)_P_DETACH)) return -1;
10069
5e01645ee41b Add _P_WAIT etc. for NT.
Guido van Rossum <guido@python.org>
parents: 10066
diff changeset
8383 #endif
22116
0c4230269ed3 OS/2 EMX port changes (Modules part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 21966
diff changeset
8384 #endif
10069
5e01645ee41b Add _P_WAIT etc. for NT.
Guido van Rossum <guido@python.org>
parents: 10066
diff changeset
8385
6766
89092ad1e660 Another large batch of patches from Jeff Rush for OS/2.
Guido van Rossum <guido@python.org>
parents: 6717
diff changeset
8386 #if defined(PYOS_OS2)
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8387 if (insertvalues(d)) return -1;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8388 #endif
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8389 return 0;
4789
d45ba64b82fd 1. Export open(2) flag constants for every defined constant
Barry Warsaw <barry@python.org>
parents: 4785
diff changeset
8390 }
d45ba64b82fd 1. Export open(2) flag constants for every defined constant
Barry Warsaw <barry@python.org>
parents: 4785
diff changeset
8391
d45ba64b82fd 1. Export open(2) flag constants for every defined constant
Barry Warsaw <barry@python.org>
parents: 4785
diff changeset
8392
21839
5e67ad76c72f Expose more MS WIndows constants usable w/ low-level os.open().
Tim Peters <tim.peters@gmail.com>
parents: 21712
diff changeset
8393 #if (defined(_MSC_VER) || defined(__WATCOMC__) || defined(__BORLANDC__)) && !defined(__QNX__)
47580
94f64f11fdd0 Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents: 47301
diff changeset
8394 #define INITFUNC PyInit_nt
6367
2c29b8982643 Apply two changes, systematically:
Guido van Rossum <guido@python.org>
parents: 6315
diff changeset
8395 #define MODNAME "nt"
17831
5c06a9596fbf SF patch #418147 Fixes to allow compiling w/ Borland, from Stephen Hansen.
Tim Peters <tim.peters@gmail.com>
parents: 17822
diff changeset
8396
5c06a9596fbf SF patch #418147 Fixes to allow compiling w/ Borland, from Stephen Hansen.
Tim Peters <tim.peters@gmail.com>
parents: 17822
diff changeset
8397 #elif defined(PYOS_OS2)
47580
94f64f11fdd0 Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents: 47301
diff changeset
8398 #define INITFUNC PyInit_os2
6626
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
8399 #define MODNAME "os2"
17831
5c06a9596fbf SF patch #418147 Fixes to allow compiling w/ Borland, from Stephen Hansen.
Tim Peters <tim.peters@gmail.com>
parents: 17822
diff changeset
8400
6626
5e31d381fa47 os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents: 6578
diff changeset
8401 #else
47580
94f64f11fdd0 Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents: 47301
diff changeset
8402 #define INITFUNC PyInit_posix
6367
2c29b8982643 Apply two changes, systematically:
Guido van Rossum <guido@python.org>
parents: 6315
diff changeset
8403 #define MODNAME "posix"
2c29b8982643 Apply two changes, systematically:
Guido van Rossum <guido@python.org>
parents: 6315
diff changeset
8404 #endif
4789
d45ba64b82fd 1. Export open(2) flag constants for every defined constant
Barry Warsaw <barry@python.org>
parents: 4785
diff changeset
8405
47580
94f64f11fdd0 Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents: 47301
diff changeset
8406 static struct PyModuleDef posixmodule = {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8407 PyModuleDef_HEAD_INIT,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8408 MODNAME,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8409 posix__doc__,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8410 -1,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8411 posix_methods,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8412 NULL,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8413 NULL,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8414 NULL,
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8415 NULL
47580
94f64f11fdd0 Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents: 47301
diff changeset
8416 };
94f64f11fdd0 Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents: 47301
diff changeset
8417
94f64f11fdd0 Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents: 47301
diff changeset
8418
24471
f66b3a3509c7 Excise DL_EXPORT/DL_IMPORT from Modules/*. Required adding a prototype
Mark Hammond <mhammond@skippinet.com.au>
parents: 24469
diff changeset
8419 PyMODINIT_FUNC
13651
8a063423e0b7 Bunch of minor ANSIfications: 'void initfunc()' -> 'void initfunc(void)',
Thomas Wouters <thomas@python.org>
parents: 13642
diff changeset
8420 INITFUNC(void)
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1441
diff changeset
8421 {
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8422 PyObject *m, *v;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8423
66606
9a2058309c1a Fix #9333. Expose os.symlink on Windows only when usable.
Brian Curtin <brian.curtin@gmail.com>
parents: 66555
diff changeset
8424 #if defined(HAVE_SYMLINK) && defined(MS_WINDOWS)
67183
5aa433a277f9 Fix #9333. The symlink function is always available now, raising OSError
Brian Curtin <brian.curtin@gmail.com>
parents: 66779
diff changeset
8425 win32_can_symlink = enable_symlink();
66606
9a2058309c1a Fix #9333. Expose os.symlink on Windows only when usable.
Brian Curtin <brian.curtin@gmail.com>
parents: 66555
diff changeset
8426 #endif
9a2058309c1a Fix #9333. Expose os.symlink on Windows only when usable.
Brian Curtin <brian.curtin@gmail.com>
parents: 66555
diff changeset
8427
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8428 m = PyModule_Create(&posixmodule);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8429 if (m == NULL)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8430 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8431
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8432 /* Initialize environ dictionary */
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8433 v = convertenviron();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8434 Py_XINCREF(v);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8435 if (v == NULL || PyModule_AddObject(m, "environ", v) != 0)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8436 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8437 Py_DECREF(v);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8438
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8439 if (all_ins(m))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8440 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8441
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8442 if (setup_confname_tables(m))
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8443 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8444
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8445 Py_INCREF(PyExc_OSError);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8446 PyModule_AddObject(m, "error", PyExc_OSError);
11230
b69859b69763 posix_putenv(): Constrain memory leakage when setting the same
Fred Drake <fdrake@acm.org>
parents: 11172
diff changeset
8447
11686
93bed60355e4 The initialization of posix_putenv_garbage should only be done when it
Guido van Rossum <guido@python.org>
parents: 11639
diff changeset
8448 #ifdef HAVE_PUTENV
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8449 if (posix_putenv_garbage == NULL)
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8450 posix_putenv_garbage = PyDict_New();
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8451 #endif
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8452
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8453 if (!initialized) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8454 stat_result_desc.name = MODNAME ".stat_result";
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8455 stat_result_desc.fields[7].name = PyStructSequence_UnnamedField;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8456 stat_result_desc.fields[8].name = PyStructSequence_UnnamedField;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8457 stat_result_desc.fields[9].name = PyStructSequence_UnnamedField;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8458 PyStructSequence_InitType(&StatResultType, &stat_result_desc);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8459 structseq_new = StatResultType.tp_new;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8460 StatResultType.tp_new = statresult_new;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8461
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8462 statvfs_result_desc.name = MODNAME ".statvfs_result";
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8463 PyStructSequence_InitType(&StatVFSResultType, &statvfs_result_desc);
50359
7f5aa7e54ad5 Merged revisions 68020 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 50119
diff changeset
8464 #ifdef NEED_TICKS_PER_SECOND
7f5aa7e54ad5 Merged revisions 68020 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 50119
diff changeset
8465 # if defined(HAVE_SYSCONF) && defined(_SC_CLK_TCK)
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8466 ticks_per_second = sysconf(_SC_CLK_TCK);
50359
7f5aa7e54ad5 Merged revisions 68020 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 50119
diff changeset
8467 # elif defined(HZ)
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8468 ticks_per_second = HZ;
50359
7f5aa7e54ad5 Merged revisions 68020 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 50119
diff changeset
8469 # else
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8470 ticks_per_second = 60; /* magic fallback value; may be bogus */
50359
7f5aa7e54ad5 Merged revisions 68020 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 50119
diff changeset
8471 # endif
7f5aa7e54ad5 Merged revisions 68020 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 50119
diff changeset
8472 #endif
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8473 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8474 Py_INCREF((PyObject*) &StatResultType);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8475 PyModule_AddObject(m, "stat_result", (PyObject*) &StatResultType);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8476 Py_INCREF((PyObject*) &StatVFSResultType);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8477 PyModule_AddObject(m, "statvfs_result",
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8478 (PyObject*) &StatVFSResultType);
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8479 initialized = 1;
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
8480
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
8481 #ifdef __APPLE__
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8482 /*
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8483 * Step 2 of weak-linking support on Mac OS X.
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8484 *
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8485 * The code below removes functions that are not available on the
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8486 * currently active platform.
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8487 *
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8488 * This block allow one to use a python binary that was build on
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8489 * OSX 10.4 on OSX 10.3, without loosing access to new APIs on
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8490 * OSX 10.4.
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8491 */
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
8492 #ifdef HAVE_FSTATVFS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8493 if (fstatvfs == NULL) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8494 if (PyObject_DelAttrString(m, "fstatvfs") == -1) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8495 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8496 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8497 }
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
8498 #endif /* HAVE_FSTATVFS */
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
8499
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
8500 #ifdef HAVE_STATVFS
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8501 if (statvfs == NULL) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8502 if (PyObject_DelAttrString(m, "statvfs") == -1) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8503 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8504 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8505 }
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
8506 #endif /* HAVE_STATVFS */
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
8507
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
8508 # ifdef HAVE_LCHOWN
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8509 if (lchown == NULL) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8510 if (PyObject_DelAttrString(m, "lchown") == -1) {
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8511 return NULL;
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8512 }
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8513 }
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
8514 #endif /* HAVE_LCHOWN */
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
8515
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
8516
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
8517 #endif /* __APPLE__ */
61302
dc2aac624ff8 Recorded merge of revisions 80846 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60975
diff changeset
8518 return m;
38453
29ae5e0fc348 Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents: 37879
diff changeset
8519
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36887
diff changeset
8520 }
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36887
diff changeset
8521
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36887
diff changeset
8522 #ifdef __cplusplus
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36887
diff changeset
8523 }
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36887
diff changeset
8524 #endif