Mercurial > cpython-lru_cache-weakref
annotate RISCOS/unixstuff.c @ 80661:94de77bd0b4b 2.7
Issue #16194: document imp.load_dynamic problems
when read several extension modules from the same binary object file.
| author | Andrew Svetlov <andrew.svetlov@gmail.com> |
|---|---|
| date | Thu, 29 Nov 2012 19:51:28 +0200 |
| parents | 2d3cee9f1633 |
| children |
| rev | line source |
|---|---|
|
16941
a015aed3a1ac
RISCOS files by dschwertberger
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1 /* Fudge unix isatty and fileno for RISCOS */ |
|
a015aed3a1ac
RISCOS files by dschwertberger
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
2 |
|
20652
2d3cee9f1633
SF patch #474590 -- RISC OS support
Guido van Rossum <guido@python.org>
parents:
16941
diff
changeset
|
3 #include "unixstuff.h" |
|
16941
a015aed3a1ac
RISCOS files by dschwertberger
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
4 #include <math.h> |
|
20652
2d3cee9f1633
SF patch #474590 -- RISC OS support
Guido van Rossum <guido@python.org>
parents:
16941
diff
changeset
|
5 #include <time.h> |
|
2d3cee9f1633
SF patch #474590 -- RISC OS support
Guido van Rossum <guido@python.org>
parents:
16941
diff
changeset
|
6 #include "oslib/osfile.h" |
|
16941
a015aed3a1ac
RISCOS files by dschwertberger
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
7 |
|
a015aed3a1ac
RISCOS files by dschwertberger
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
8 int fileno(FILE *f) |
|
a015aed3a1ac
RISCOS files by dschwertberger
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
9 { return (int)f; |
|
a015aed3a1ac
RISCOS files by dschwertberger
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
10 } |
|
a015aed3a1ac
RISCOS files by dschwertberger
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
11 |
|
a015aed3a1ac
RISCOS files by dschwertberger
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
12 int isatty(int fn) |
|
a015aed3a1ac
RISCOS files by dschwertberger
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
13 { return (fn==fileno(stdin)); |
|
a015aed3a1ac
RISCOS files by dschwertberger
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
14 } |
|
a015aed3a1ac
RISCOS files by dschwertberger
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
15 |
|
a015aed3a1ac
RISCOS files by dschwertberger
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
16 bits unixtime(bits ld,bits ex) |
|
a015aed3a1ac
RISCOS files by dschwertberger
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
17 { ld&=0xFF; |
|
a015aed3a1ac
RISCOS files by dschwertberger
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
18 ld-=51; |
|
20652
2d3cee9f1633
SF patch #474590 -- RISC OS support
Guido van Rossum <guido@python.org>
parents:
16941
diff
changeset
|
19 if(ex<1855547904U) ld--; |
|
16941
a015aed3a1ac
RISCOS files by dschwertberger
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
20 ex-=1855548004U; |
|
20652
2d3cee9f1633
SF patch #474590 -- RISC OS support
Guido van Rossum <guido@python.org>
parents:
16941
diff
changeset
|
21 return ex/100+42949673U*ld-ld/25; |
|
16941
a015aed3a1ac
RISCOS files by dschwertberger
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
22 } |
|
a015aed3a1ac
RISCOS files by dschwertberger
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
23 |
|
a015aed3a1ac
RISCOS files by dschwertberger
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
24 |
|
20652
2d3cee9f1633
SF patch #474590 -- RISC OS support
Guido van Rossum <guido@python.org>
parents:
16941
diff
changeset
|
25 /* from RISC OS infozip, preserves filetype in ld */ |
|
2d3cee9f1633
SF patch #474590 -- RISC OS support
Guido van Rossum <guido@python.org>
parents:
16941
diff
changeset
|
26 int acorntime(bits *ex, bits *ld, time_t utime) |
|
2d3cee9f1633
SF patch #474590 -- RISC OS support
Guido van Rossum <guido@python.org>
parents:
16941
diff
changeset
|
27 { |
|
2d3cee9f1633
SF patch #474590 -- RISC OS support
Guido van Rossum <guido@python.org>
parents:
16941
diff
changeset
|
28 unsigned timlo; /* 3 lower bytes of acorn file-time plus carry byte */ |
|
2d3cee9f1633
SF patch #474590 -- RISC OS support
Guido van Rossum <guido@python.org>
parents:
16941
diff
changeset
|
29 unsigned timhi; /* 2 high bytes of acorn file-time */ |
|
2d3cee9f1633
SF patch #474590 -- RISC OS support
Guido van Rossum <guido@python.org>
parents:
16941
diff
changeset
|
30 |
|
2d3cee9f1633
SF patch #474590 -- RISC OS support
Guido van Rossum <guido@python.org>
parents:
16941
diff
changeset
|
31 timlo = ((unsigned)utime & 0x00ffffffU) * 100 + 0x00996a00U; |
|
2d3cee9f1633
SF patch #474590 -- RISC OS support
Guido van Rossum <guido@python.org>
parents:
16941
diff
changeset
|
32 timhi = ((unsigned)utime >> 24); |
|
2d3cee9f1633
SF patch #474590 -- RISC OS support
Guido van Rossum <guido@python.org>
parents:
16941
diff
changeset
|
33 timhi = timhi * 100 + 0x0000336eU + (timlo >> 24); |
|
2d3cee9f1633
SF patch #474590 -- RISC OS support
Guido van Rossum <guido@python.org>
parents:
16941
diff
changeset
|
34 if (timhi & 0xffff0000U) |
|
2d3cee9f1633
SF patch #474590 -- RISC OS support
Guido van Rossum <guido@python.org>
parents:
16941
diff
changeset
|
35 return 1; /* calculation overflow, do not change time */ |
|
2d3cee9f1633
SF patch #474590 -- RISC OS support
Guido van Rossum <guido@python.org>
parents:
16941
diff
changeset
|
36 |
|
2d3cee9f1633
SF patch #474590 -- RISC OS support
Guido van Rossum <guido@python.org>
parents:
16941
diff
changeset
|
37 /* insert the five time bytes into loadaddr and execaddr variables */ |
|
2d3cee9f1633
SF patch #474590 -- RISC OS support
Guido van Rossum <guido@python.org>
parents:
16941
diff
changeset
|
38 *ex = (timlo & 0x00ffffffU) | ((timhi & 0x000000ffU) << 24); |
|
2d3cee9f1633
SF patch #474590 -- RISC OS support
Guido van Rossum <guido@python.org>
parents:
16941
diff
changeset
|
39 *ld = (*ld & 0xffffff00U) | ((timhi >> 8) & 0x000000ffU); |
|
2d3cee9f1633
SF patch #474590 -- RISC OS support
Guido van Rossum <guido@python.org>
parents:
16941
diff
changeset
|
40 |
|
2d3cee9f1633
SF patch #474590 -- RISC OS support
Guido van Rossum <guido@python.org>
parents:
16941
diff
changeset
|
41 return 0; /* subject to future extension to signal overflow */ |
|
2d3cee9f1633
SF patch #474590 -- RISC OS support
Guido van Rossum <guido@python.org>
parents:
16941
diff
changeset
|
42 } |
|
2d3cee9f1633
SF patch #474590 -- RISC OS support
Guido van Rossum <guido@python.org>
parents:
16941
diff
changeset
|
43 |
|
16941
a015aed3a1ac
RISCOS files by dschwertberger
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
44 |
|
a015aed3a1ac
RISCOS files by dschwertberger
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
45 int isdir(char *fn) |
|
a015aed3a1ac
RISCOS files by dschwertberger
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
46 { int ob; |
|
20652
2d3cee9f1633
SF patch #474590 -- RISC OS support
Guido van Rossum <guido@python.org>
parents:
16941
diff
changeset
|
47 if(xosfile_read_stamped_no_path(fn,&ob,0,0,0,0,0)) return 0; |
|
16941
a015aed3a1ac
RISCOS files by dschwertberger
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
48 switch (ob) |
|
20652
2d3cee9f1633
SF patch #474590 -- RISC OS support
Guido van Rossum <guido@python.org>
parents:
16941
diff
changeset
|
49 { case osfile_IS_DIR:return 1; |
|
2d3cee9f1633
SF patch #474590 -- RISC OS support
Guido van Rossum <guido@python.org>
parents:
16941
diff
changeset
|
50 case osfile_IS_IMAGE:return 1; |
|
16941
a015aed3a1ac
RISCOS files by dschwertberger
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
51 } |
|
20652
2d3cee9f1633
SF patch #474590 -- RISC OS support
Guido van Rossum <guido@python.org>
parents:
16941
diff
changeset
|
52 return 0; |
|
16941
a015aed3a1ac
RISCOS files by dschwertberger
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
53 } |
|
a015aed3a1ac
RISCOS files by dschwertberger
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
54 |
|
a015aed3a1ac
RISCOS files by dschwertberger
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
55 int isfile(char *fn) |
|
20652
2d3cee9f1633
SF patch #474590 -- RISC OS support
Guido van Rossum <guido@python.org>
parents:
16941
diff
changeset
|
56 { int ob; |
|
2d3cee9f1633
SF patch #474590 -- RISC OS support
Guido van Rossum <guido@python.org>
parents:
16941
diff
changeset
|
57 if(xosfile_read_stamped_no_path(fn,&ob,0,0,0,0,0)) return 0; |
|
16941
a015aed3a1ac
RISCOS files by dschwertberger
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
58 switch (ob) |
|
20652
2d3cee9f1633
SF patch #474590 -- RISC OS support
Guido van Rossum <guido@python.org>
parents:
16941
diff
changeset
|
59 { case osfile_IS_FILE:return 1; |
|
2d3cee9f1633
SF patch #474590 -- RISC OS support
Guido van Rossum <guido@python.org>
parents:
16941
diff
changeset
|
60 case osfile_IS_IMAGE:return 1; |
|
16941
a015aed3a1ac
RISCOS files by dschwertberger
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
61 } |
|
20652
2d3cee9f1633
SF patch #474590 -- RISC OS support
Guido van Rossum <guido@python.org>
parents:
16941
diff
changeset
|
62 return 0; |
|
16941
a015aed3a1ac
RISCOS files by dschwertberger
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
63 } |
|
a015aed3a1ac
RISCOS files by dschwertberger
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
64 |
|
20652
2d3cee9f1633
SF patch #474590 -- RISC OS support
Guido van Rossum <guido@python.org>
parents:
16941
diff
changeset
|
65 int object_exists(char *fn) |
|
2d3cee9f1633
SF patch #474590 -- RISC OS support
Guido van Rossum <guido@python.org>
parents:
16941
diff
changeset
|
66 { int ob; |
|
2d3cee9f1633
SF patch #474590 -- RISC OS support
Guido van Rossum <guido@python.org>
parents:
16941
diff
changeset
|
67 if(xosfile_read_stamped_no_path(fn,&ob,0,0,0,0,0)) return 0; |
|
16941
a015aed3a1ac
RISCOS files by dschwertberger
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
68 switch (ob) |
|
20652
2d3cee9f1633
SF patch #474590 -- RISC OS support
Guido van Rossum <guido@python.org>
parents:
16941
diff
changeset
|
69 { case osfile_IS_FILE:return 1; |
|
2d3cee9f1633
SF patch #474590 -- RISC OS support
Guido van Rossum <guido@python.org>
parents:
16941
diff
changeset
|
70 case osfile_IS_DIR:return 1; |
|
2d3cee9f1633
SF patch #474590 -- RISC OS support
Guido van Rossum <guido@python.org>
parents:
16941
diff
changeset
|
71 case osfile_IS_IMAGE:return 1; |
|
16941
a015aed3a1ac
RISCOS files by dschwertberger
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
72 } |
|
20652
2d3cee9f1633
SF patch #474590 -- RISC OS support
Guido van Rossum <guido@python.org>
parents:
16941
diff
changeset
|
73 return 0; |
|
16941
a015aed3a1ac
RISCOS files by dschwertberger
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
74 } |
