mirror of
https://github.com/bdnugget/php-src.git
synced 2026-11-12 03:30:50 +00:00
Compare commits
711
Commits
php-4.3.11
...
php-4.4.6
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
358d3940d1 | ||
|
|
6932c74dd6 | ||
|
|
fc6bdb845d | ||
|
|
1901a20ab7 | ||
|
|
7e424740fd | ||
|
|
9aa88b4ec8 | ||
|
|
c07cf3df4f | ||
|
|
595c0aa04f | ||
|
|
87233253a4 | ||
|
|
2129fbd1d4 | ||
|
|
5ca8e3991e | ||
|
|
dc733cb576 | ||
|
|
02430a4f61 | ||
|
|
c297434175 | ||
|
|
5ed01dccb5 | ||
|
|
61261dc5b9 | ||
|
|
25f51c3cbf | ||
|
|
3e1120f987 | ||
|
|
2aaa4adce4 | ||
|
|
87f091b0e1 | ||
|
|
faede09954 | ||
|
|
a99fa18f27 | ||
|
|
0f0d36315a | ||
|
|
a1f049f9c7 | ||
|
|
f3c6f9fd8e | ||
|
|
f5466ed7a7 | ||
|
|
38cc059411 | ||
|
|
ecdc70986b | ||
|
|
5473232607 | ||
|
|
5444943d0f | ||
|
|
f854b90ed4 | ||
|
|
42e3e2e12e | ||
|
|
82dc6e1cfb | ||
|
|
f5fc2866a6 | ||
|
|
ec4f115b41 | ||
|
|
25b5bbc7a1 | ||
|
|
a8bcb208ef | ||
|
|
1e1799dd21 | ||
|
|
afb1540b1e | ||
|
|
f1d4dc3bbc | ||
|
|
0be9ce7a76 | ||
|
|
257375765a | ||
|
|
a8154b3540 | ||
|
|
3634ab8189 | ||
|
|
66dcd76874 | ||
|
|
13ea7d0109 | ||
|
|
f87648eaa5 | ||
|
|
cfaf561b6d | ||
|
|
b419742b44 | ||
|
|
d75be587a4 | ||
|
|
5ed521bc6d | ||
|
|
c8123f93f0 | ||
|
|
746301b213 | ||
|
|
a857541f5f | ||
|
|
d81b4d37ea | ||
|
|
afdc0907f7 | ||
|
|
8351d9c7f3 | ||
|
|
7637f98be2 | ||
|
|
2f37c4ddb0 | ||
|
|
f437f392e2 | ||
|
|
aadba93278 | ||
|
|
3052e0cc5f | ||
|
|
8b8c928063 | ||
|
|
87b7293e4b | ||
|
|
f025e896df | ||
|
|
95f42dfa20 | ||
|
|
df0bb9a837 | ||
|
|
4f6da2642e | ||
|
|
b307db4b1c | ||
|
|
5f92ac3bab | ||
|
|
d8a6d67a82 | ||
|
|
bc351a3c1f | ||
|
|
c1e7797d54 | ||
|
|
4d59918076 | ||
|
|
02ba2f45bd | ||
|
|
a3c17c2fb2 | ||
|
|
55ff6ffa97 | ||
|
|
b4476a8469 | ||
|
|
6f53386349 | ||
|
|
d1da486599 | ||
|
|
e5cf4ead35 | ||
|
|
71f1155373 | ||
|
|
fb1dff44d9 | ||
|
|
30331e79a6 | ||
|
|
ac990417d0 | ||
|
|
118849bf3e | ||
|
|
a7a27febc5 | ||
|
|
426b1765a2 | ||
|
|
09f17195d9 | ||
|
|
b496675bf4 | ||
|
|
993e170e7a | ||
|
|
e31c34f68f | ||
|
|
226b4b1ef3 | ||
|
|
42bc8e3219 | ||
|
|
18a27fa07f | ||
|
|
c05c4e0621 | ||
|
|
3ff27a3096 | ||
|
|
64107bef55 | ||
|
|
2ae64d7122 | ||
|
|
c32694530c | ||
|
|
1346c157a3 | ||
|
|
3aa751b306 | ||
|
|
fe057d8ed4 | ||
|
|
4cfe224921 | ||
|
|
9be6cc3d11 | ||
|
|
161c8ed86b | ||
|
|
f67c006ec3 | ||
|
|
7d39cfd613 | ||
|
|
50dddf94f5 | ||
|
|
ac15fe506f | ||
|
|
615b56e229 | ||
|
|
6a12c3aac4 | ||
|
|
6cc3372fb2 | ||
|
|
5342dbac8c | ||
|
|
e05159b701 | ||
|
|
5125d99507 | ||
|
|
f16e359621 | ||
|
|
234c4a39da | ||
|
|
a0f0f86e0e | ||
|
|
2668902ef1 | ||
|
|
162e7f1ca5 | ||
|
|
d74d887e7f | ||
|
|
22caa93806 | ||
|
|
5809160626 | ||
|
|
1d2e5068ca | ||
|
|
3536db6a6b | ||
|
|
c1fe8b81aa | ||
|
|
e120d29f96 | ||
|
|
3a6312932c | ||
|
|
428a990d2a | ||
|
|
cc19fb16f3 | ||
|
|
b1dc9ef05c | ||
|
|
0f56bde0a8 | ||
|
|
b34174d465 | ||
|
|
5d057a8790 | ||
|
|
4baade098f | ||
|
|
85865584fd | ||
|
|
c1e5091166 | ||
|
|
6faa926224 | ||
|
|
33b6ea71bf | ||
|
|
b7d18bdcab | ||
|
|
bed700e088 | ||
|
|
2e0a82c0b8 | ||
|
|
7d377d05ec | ||
|
|
b9cab2b5f2 | ||
|
|
fb6a30cdde | ||
|
|
62bf10bd52 | ||
|
|
c188c0f5be | ||
|
|
8c5ecd2856 | ||
|
|
78d9152751 | ||
|
|
d98d470f55 | ||
|
|
609ddf2cec | ||
|
|
9063a993f4 | ||
|
|
5e6b239fd4 | ||
|
|
49c25f632b | ||
|
|
507e1fd5a2 | ||
|
|
d4f2cb0af2 | ||
|
|
5b80cd2752 | ||
|
|
a1c5b88515 | ||
|
|
755c74b607 | ||
|
|
3072d1bb2b | ||
|
|
b2f943dea3 | ||
|
|
90862d7e7f | ||
|
|
39601bb33b | ||
|
|
e640197929 | ||
|
|
50d1af20c5 | ||
|
|
6af0ebfebf | ||
|
|
b3ddd1b71d | ||
|
|
0063ffc124 | ||
|
|
f6753e96e3 | ||
|
|
bb31f21dfb | ||
|
|
5fb5cfdbca | ||
|
|
4d0daac738 | ||
|
|
88e06a97be | ||
|
|
7f5d77afb5 | ||
|
|
ed53169150 | ||
|
|
a2e5235b92 | ||
|
|
88b15c81ee | ||
|
|
811b100140 | ||
|
|
0f26edab9d | ||
|
|
7eda78c8ce | ||
|
|
5795b68a12 | ||
|
|
01e67c1c0b | ||
|
|
5df81174c6 | ||
|
|
4ccfd8e5f4 | ||
|
|
3066881dea | ||
|
|
adcd660665 | ||
|
|
39c97daa7a | ||
|
|
42e35b8c87 | ||
|
|
b1095970bc | ||
|
|
eeccf79e5c | ||
|
|
0f30174f3c | ||
|
|
727982d268 | ||
|
|
7a80b0a24b | ||
|
|
8d13007f31 | ||
|
|
da6fe839bf | ||
|
|
0f2418d470 | ||
|
|
687ebaa977 | ||
|
|
fa431b2bd5 | ||
|
|
8c9578b492 | ||
|
|
4ad132a162 | ||
|
|
018dc1e52e | ||
|
|
67fdeb1067 | ||
|
|
ccf09f5bbe | ||
|
|
0946fc2fbf | ||
|
|
07e361458a | ||
|
|
779c4394e4 | ||
|
|
25a03fe695 | ||
|
|
303cd902ec | ||
|
|
7beb2b51b3 | ||
|
|
c748070bfe | ||
|
|
324b3f960f | ||
|
|
4980266aca | ||
|
|
024d1a5aa3 | ||
|
|
34f6ba497b | ||
|
|
30f4b5f323 | ||
|
|
076f4c4433 | ||
|
|
2f138334e5 | ||
|
|
0fa88bff91 | ||
|
|
75d2330427 | ||
|
|
f7c3d6c8ad | ||
|
|
32211ba99f | ||
|
|
ef36d846bc | ||
|
|
476f9c5948 | ||
|
|
63251c4c5e | ||
|
|
d7cd8d3909 | ||
|
|
134f474e5f | ||
|
|
7a03b57390 | ||
|
|
0f5d980c2f | ||
|
|
6e543a0b4d | ||
|
|
56fcffbec5 | ||
|
|
2d52e47e48 | ||
|
|
f159b33aa9 | ||
|
|
045baa569a | ||
|
|
259613b0ec | ||
|
|
8fbbbc41b7 | ||
|
|
6eb4034257 | ||
|
|
3d497a4f7f | ||
|
|
9967278b85 | ||
|
|
f3590cce7d | ||
|
|
af4c393004 | ||
|
|
edf4e8a023 | ||
|
|
38cf5db6d2 | ||
|
|
7ce3868b29 | ||
|
|
a6ebb49ea5 | ||
|
|
077194ed30 | ||
|
|
b1992efb19 | ||
|
|
927d6e218f | ||
|
|
8c6e6ec40e | ||
|
|
d2628e4c2a | ||
|
|
0047baef1f | ||
|
|
9784bb3697 | ||
|
|
c07983db9c | ||
|
|
9e69c67c07 | ||
|
|
7cb8058dc3 | ||
|
|
20eb636856 | ||
|
|
dd2be9ac1f | ||
|
|
60bcbd4d17 | ||
|
|
3c2441dc02 | ||
|
|
855359278e | ||
|
|
688d86a417 | ||
|
|
b136df5bc5 | ||
|
|
a8f0d2a4d4 | ||
|
|
34fc59e2c1 | ||
|
|
f9996899c2 | ||
|
|
aca8fb1ca5 | ||
|
|
09e2c59133 | ||
|
|
a8f9da5891 | ||
|
|
3c9e8a33fa | ||
|
|
4f004c3566 | ||
|
|
915bc619ef | ||
|
|
774b939900 | ||
|
|
2b3336117c | ||
|
|
5c4198f03f | ||
|
|
144c8f19f5 | ||
|
|
8ae421b807 | ||
|
|
fd39c52b65 | ||
|
|
2ac9f9c28b | ||
|
|
8cda8890fd | ||
|
|
f78db5bc83 | ||
|
|
e87db79ff1 | ||
|
|
55134a584c | ||
|
|
7a46fb9b72 | ||
|
|
5358b1fb18 | ||
|
|
ee90f9a120 | ||
|
|
861de5ae7b | ||
|
|
617ae295c3 | ||
|
|
0d14284e54 | ||
|
|
79c01f065f | ||
|
|
4137895e52 | ||
|
|
f775d8f3b1 | ||
|
|
7f359b116b | ||
|
|
3669f88350 | ||
|
|
297178cf35 | ||
|
|
d2bd775fae | ||
|
|
23ba6c1bd3 | ||
|
|
dc0bae1b7e | ||
|
|
446c0b84e1 | ||
|
|
594c85a455 | ||
|
|
7859464838 | ||
|
|
85a11e8684 | ||
|
|
f7d79c51a4 | ||
|
|
5d9028acac | ||
|
|
d783427963 | ||
|
|
3e488f51b5 | ||
|
|
131c743363 | ||
|
|
fb6cf62254 | ||
|
|
4a5dec57be | ||
|
|
dafd02c0a9 | ||
|
|
2345af5db9 | ||
|
|
0970dc5c79 | ||
|
|
d9820d0046 | ||
|
|
5749e42507 | ||
|
|
fddb7c4a16 | ||
|
|
8c030a1d9f | ||
|
|
3936f188c8 | ||
|
|
74b38bc008 | ||
|
|
0adfb11b5f | ||
|
|
bd204cbec6 | ||
|
|
d438c08253 | ||
|
|
8b9a27b091 | ||
|
|
d58ab4dba8 | ||
|
|
85bf21aba8 | ||
|
|
f1d2153728 | ||
|
|
a5ecd7d966 | ||
|
|
a639716fba | ||
|
|
5c5202210b | ||
|
|
983f74d406 | ||
|
|
4b6be92010 | ||
|
|
c0d670bf38 | ||
|
|
dfefb3a51f | ||
|
|
c56c25cdd5 | ||
|
|
1a509371c3 | ||
|
|
d1ab829e4a | ||
|
|
5da6db4704 | ||
|
|
353a4d1545 | ||
|
|
444937ce5c | ||
|
|
721373cc9d | ||
|
|
f61d19a334 | ||
|
|
08f56f3c5d | ||
|
|
5e248a4064 | ||
|
|
a526aebc2e | ||
|
|
55f7e26adf | ||
|
|
e813489260 | ||
|
|
657043a0b2 | ||
|
|
6c8f889d0a | ||
|
|
197648e8bd | ||
|
|
6fb699c417 | ||
|
|
3d26a25fe9 | ||
|
|
585c4dbecc | ||
|
|
c8a366abc6 | ||
|
|
bc758f5fa1 | ||
|
|
399c12ef94 | ||
|
|
437cfe4e7d | ||
|
|
28c082287c | ||
|
|
9f3ad8cd51 | ||
|
|
b4e4f5dfbe | ||
|
|
ad60d5b561 | ||
|
|
baaf0eb705 | ||
|
|
f2db9cbb89 | ||
|
|
098854c59b | ||
|
|
d290b7c7c8 | ||
|
|
e35914666d | ||
|
|
ff0b18fcf9 | ||
|
|
91f9718832 | ||
|
|
237bcf0da7 | ||
|
|
8c49a72ecc | ||
|
|
142aad3893 | ||
|
|
591f0fc9cb | ||
|
|
d2ce44c7fc | ||
|
|
2de0be1e37 | ||
|
|
ad29a9d3dd | ||
|
|
51ecf50b42 | ||
|
|
3848a27689 | ||
|
|
d4eb802dcb | ||
|
|
9f35aed8f2 | ||
|
|
b8973a09de | ||
|
|
7d1ec21215 | ||
|
|
1ef17aeff3 | ||
|
|
dd3a5b3601 | ||
|
|
4809310fff | ||
|
|
ae187e6156 | ||
|
|
71b6eaf31f | ||
|
|
9ba128e62e | ||
|
|
58067bb307 | ||
|
|
6c9ea8b79e | ||
|
|
fe7f010291 | ||
|
|
19bab9086f | ||
|
|
985defbb69 | ||
|
|
7e8f1c0949 | ||
|
|
b5663db3b0 | ||
|
|
85fff3d38c | ||
|
|
1398c55740 | ||
|
|
2dae72bb3f | ||
|
|
cc3fcdeadd | ||
|
|
e002275c1c | ||
|
|
c6469aba17 | ||
|
|
726b96e393 | ||
|
|
183ee0ac32 | ||
|
|
8ea1dd281d | ||
|
|
ac41083b82 | ||
|
|
337036cebf | ||
|
|
3c63f4f09f | ||
|
|
5686615c47 | ||
|
|
6717af379d | ||
|
|
9b95efa9de | ||
|
|
a2cd7fd198 | ||
|
|
9906416cff | ||
|
|
ad2e304693 | ||
|
|
ac79b2ada4 | ||
|
|
fe06c9dcfd | ||
|
|
c8a15852c1 | ||
|
|
aa648fbb4d | ||
|
|
41a208da03 | ||
|
|
31aef753ba | ||
|
|
27f3e6e91b | ||
|
|
0f21d95e41 | ||
|
|
c5458b6986 | ||
|
|
3df5e260ca | ||
|
|
f1c9fd9134 | ||
|
|
7cef169b29 | ||
|
|
bf4cbc4fb0 | ||
|
|
4c2696b619 | ||
|
|
0d702db813 | ||
|
|
0a6ee73fa1 | ||
|
|
6062c27a2b | ||
|
|
1b26d02ad4 | ||
|
|
04afd0cec5 | ||
|
|
1279030cea | ||
|
|
a616ad19e0 | ||
|
|
62c5ef476d | ||
|
|
7420158d78 | ||
|
|
32aced596a | ||
|
|
ac4886ddff | ||
|
|
83da11921d | ||
|
|
e2aea0d95b | ||
|
|
4f07df5320 | ||
|
|
c9c573bc68 | ||
|
|
c4d255c334 | ||
|
|
9da0abf7f4 | ||
|
|
214949457c | ||
|
|
c3b4f2fd42 | ||
|
|
ca741c453e | ||
|
|
7b1dcaae5b | ||
|
|
5019b5e2e4 | ||
|
|
3f7c8b6a76 | ||
|
|
6d457903a1 | ||
|
|
56f160e2ce | ||
|
|
2e60ddf486 | ||
|
|
c9fd935be7 | ||
|
|
5268954068 | ||
|
|
81728b8999 | ||
|
|
91cba25cd3 | ||
|
|
890a2fc397 | ||
|
|
58feb4426a | ||
|
|
9817dbb9b0 | ||
|
|
b0f9118af0 | ||
|
|
fd9586e6ac | ||
|
|
c4dffe672a | ||
|
|
3e37d97627 | ||
|
|
bebcea5fcd | ||
|
|
6f23ab9f42 | ||
|
|
d8332e2fda | ||
|
|
7e406fd9e3 | ||
|
|
538965c2a8 | ||
|
|
28f45e4133 | ||
|
|
2414baae20 | ||
|
|
674236d9ab | ||
|
|
2e2583102c | ||
|
|
91f79200be | ||
|
|
2e97535993 | ||
|
|
2037993656 | ||
|
|
804360bf74 | ||
|
|
1a3176c4eb | ||
|
|
2daa579c04 | ||
|
|
ed71e6e085 | ||
|
|
469427bc2a | ||
|
|
f7a545b5bf | ||
|
|
b0e2954cf2 | ||
|
|
c89405f0c7 | ||
|
|
51e4e4c3f5 | ||
|
|
acbd45f0f9 | ||
|
|
65da211da3 | ||
|
|
47a0878ab4 | ||
|
|
0536df249b | ||
|
|
646da25288 | ||
|
|
292f0a29bd | ||
|
|
4dcdce3c23 | ||
|
|
32ee7c0288 | ||
|
|
2c6a999132 | ||
|
|
6b270a0bdd | ||
|
|
21bcceda8d | ||
|
|
1b7a2b100e | ||
|
|
f1e6410401 | ||
|
|
af0f90f6c2 | ||
|
|
8274a8d733 | ||
|
|
0182115dd7 | ||
|
|
a29f16dc23 | ||
|
|
3d3a67adeb | ||
|
|
2abccacfa5 | ||
|
|
70f9d2d390 | ||
|
|
4aef02ca6f | ||
|
|
8f4af759af | ||
|
|
bc26544ff3 | ||
|
|
0d4649e39b | ||
|
|
baa0ab00ad | ||
|
|
20777be394 | ||
|
|
6a1956ac37 | ||
|
|
12d6e6c660 | ||
|
|
4a58e4f4b9 | ||
|
|
c0aa935d3d | ||
|
|
4cb75f1b3a | ||
|
|
4605e3a541 | ||
|
|
7902154f46 | ||
|
|
44bf966ae7 | ||
|
|
caf18b2bfa | ||
|
|
a55d32948b | ||
|
|
f5d89321e8 | ||
|
|
201569c7f9 | ||
|
|
7e1fa145ee | ||
|
|
d5a7368d72 | ||
|
|
97073a0517 | ||
|
|
e6dd1bee42 | ||
|
|
2be36d43e8 | ||
|
|
cacba2613e | ||
|
|
b10466c3ee | ||
|
|
313ace007d | ||
|
|
8301424d57 | ||
|
|
7d96c874b9 | ||
|
|
fc4dabbbf6 | ||
|
|
10a123f2f8 | ||
|
|
490617c780 | ||
|
|
97e89bfb82 | ||
|
|
317c7ae225 | ||
|
|
a29aa6577d | ||
|
|
a07fe81c38 | ||
|
|
1b9a2471bd | ||
|
|
fd6a541974 | ||
|
|
a0207767c4 | ||
|
|
ba7a46ba54 | ||
|
|
d233c60165 | ||
|
|
093bc03fd5 | ||
|
|
450348fd7a | ||
|
|
13f4cdcca7 | ||
|
|
f4058a30fa | ||
|
|
d3b74b0ec5 | ||
|
|
ddf0954eec | ||
|
|
544beecc55 | ||
|
|
780b300fcf | ||
|
|
a82e35c290 | ||
|
|
eb43932fb1 | ||
|
|
63626d1c68 | ||
|
|
3dc32f41a9 | ||
|
|
4d83ad6282 | ||
|
|
1a3b493d9a | ||
|
|
858745ddf9 | ||
|
|
a17e5fe163 | ||
|
|
44518f05f8 | ||
|
|
d1602669bc | ||
|
|
76d392d3a9 | ||
|
|
94a2ab1990 | ||
|
|
ada89376b4 | ||
|
|
c479074f98 | ||
|
|
e5788c2eb7 | ||
|
|
4f64bc6cfe | ||
|
|
94801d1206 | ||
|
|
0cf43df604 | ||
|
|
a4ecfdb08c | ||
|
|
1a733ccbdd | ||
|
|
473e88e574 | ||
|
|
5955cb64bb | ||
|
|
0d3b976c03 | ||
|
|
a02c9cf4f1 | ||
|
|
ca66964530 | ||
|
|
b73fec0d9f | ||
|
|
1233878300 | ||
|
|
7cb6bc0d50 | ||
|
|
b57e6a484a | ||
|
|
0943b7909a | ||
|
|
6305213066 | ||
|
|
04d0a78649 | ||
|
|
64ddf44bd5 | ||
|
|
1650db955c | ||
|
|
4e03cdce32 | ||
|
|
8a6bb7e993 | ||
|
|
0031c498a3 | ||
|
|
add1f2f783 | ||
|
|
cd98638298 | ||
|
|
dd5c63bc18 | ||
|
|
50292aaff9 | ||
|
|
456eba04a2 | ||
|
|
379c4af44a | ||
|
|
e5f04e5d2f | ||
|
|
30d0600769 | ||
|
|
f0a7020898 | ||
|
|
bb9223391e | ||
|
|
f4a39b5314 | ||
|
|
75a3ee0284 | ||
|
|
4c5d775dd1 | ||
|
|
804d8f2183 | ||
|
|
e48af012eb | ||
|
|
a570698425 | ||
|
|
4ca2a45a0c | ||
|
|
0d12de2d75 | ||
|
|
180e1501bb | ||
|
|
d6597ad37d | ||
|
|
295719fa32 | ||
|
|
6e516e2214 | ||
|
|
e213ff37c3 | ||
|
|
ae85316906 | ||
|
|
79cbb4b143 | ||
|
|
fcfd9f78ab | ||
|
|
0b7fbabd80 | ||
|
|
49b5d46a76 | ||
|
|
01ee1225dc | ||
|
|
c227ea05c4 | ||
|
|
6b582b2c85 | ||
|
|
91f96ef1d7 | ||
|
|
394662b4a2 | ||
|
|
65af72474e | ||
|
|
0512d70c33 | ||
|
|
2253f7dbf7 | ||
|
|
c006bbb006 | ||
|
|
a4f461f9df | ||
|
|
681c35bc17 | ||
|
|
58ba05c901 | ||
|
|
5b6edac5bc | ||
|
|
49470fdc74 | ||
|
|
3f573827c2 | ||
|
|
2f69536e0e | ||
|
|
fbf441a447 | ||
|
|
58a6e8f921 | ||
|
|
c9a701c4d1 | ||
|
|
e000385d10 | ||
|
|
4be5f46e50 | ||
|
|
218f2b42e0 | ||
|
|
3158315a54 | ||
|
|
cc83a160ee | ||
|
|
ba9ef20412 | ||
|
|
1296a72aff | ||
|
|
3c7723a674 | ||
|
|
e3c797aed4 | ||
|
|
44a7348d22 | ||
|
|
a67ec786cc | ||
|
|
fbd807a7b8 | ||
|
|
95c6aa35c7 | ||
|
|
362db6cec6 | ||
|
|
ba4e292b20 | ||
|
|
7c33078b31 | ||
|
|
5393ff76f4 | ||
|
|
588fc6e846 | ||
|
|
1c32084d9d | ||
|
|
078f3abb05 | ||
|
|
8fe6e70d72 | ||
|
|
6567ab4932 | ||
|
|
a9c0b4eaa6 | ||
|
|
cd387e3f9a | ||
|
|
8fd7c98196 | ||
|
|
52105b88b4 | ||
|
|
0bf8ea8b03 | ||
|
|
35b7a1e3f7 | ||
|
|
89347c7c20 | ||
|
|
bd36484d85 | ||
|
|
73bc800428 | ||
|
|
6b38c14911 | ||
|
|
626d78118d | ||
|
|
a9c24d9728 | ||
|
|
9cfdc3a4da | ||
|
|
080e6fd89f | ||
|
|
7f1754653c | ||
|
|
7f84c5e32b | ||
|
|
7e4495a66f | ||
|
|
2e63e4f923 | ||
|
|
2745fef293 | ||
|
|
febe0e0caf | ||
|
|
c1e9d3433d | ||
|
|
e58545fde9 | ||
|
|
40d6477fe5 | ||
|
|
e681512beb | ||
|
|
b3acf2c5c4 | ||
|
|
2ed05398fc | ||
|
|
a5fa2525c8 | ||
|
|
4ee1f9830d | ||
|
|
3aaec591c2 | ||
|
|
5ccc67cc8a | ||
|
|
2b865616f1 | ||
|
|
03aa84f955 | ||
|
|
83b353de2c | ||
|
|
0a9d87e630 | ||
|
|
4942272466 | ||
|
|
001a39d7fb | ||
|
|
85a028b891 | ||
|
|
9a6cf59744 | ||
|
|
6dce4e78ab | ||
|
|
6f871656df | ||
|
|
a4d454fdcf | ||
|
|
782736f277 | ||
|
|
7350e8b884 | ||
|
|
34486b7aae | ||
|
|
fbdc2a9d10 | ||
|
|
a384315b3a | ||
|
|
68e170bec8 | ||
|
|
34a310de8c | ||
|
|
430b4a6531 | ||
|
|
d7d721c96c | ||
|
|
50a7757f0c | ||
|
|
e528918061 | ||
|
|
40ebf7dbc1 | ||
|
|
70a222560d | ||
|
|
71e6b9e504 | ||
|
|
8b06c5cda1 |
No files matched your search
+6
-6
@@ -45,9 +45,9 @@ MAINTENANCE: Maintained
|
||||
STATUS: Experimental
|
||||
-------------------------------------------------------------------------------
|
||||
EXTENSION: apache2handler
|
||||
PRIMARY MAINTAINER: Aaron Bannert <aaron@php.net>
|
||||
PRIMARY MAINTAINER: Aaron Bannert <aaron@php.net>, Ilia Alshanetsky <iliaa@php.net>
|
||||
MAINTENANCE: Maintained
|
||||
STATUS: Experimental
|
||||
STATUS: Working
|
||||
-------------------------------------------------------------------------------
|
||||
EXTENSION: caudium
|
||||
MAINTENANCE: Unknown
|
||||
@@ -238,7 +238,7 @@ MAINTENANCE: Maintained
|
||||
STATUS: Working
|
||||
-------------------------------------------------------------------------------
|
||||
EXTENSION: curl
|
||||
PRIMARY MAINTAINER: Sterling Hughes <sterling@php.net>
|
||||
PRIMARY MAINTAINER: Sterling Hughes <sterling@php.net>,Ilia Alshanetsky <iliaa@php.net>
|
||||
MAINTENANCE: Maintained
|
||||
STATUS: Working
|
||||
SINCE: 4.0.2
|
||||
@@ -315,8 +315,8 @@ MAINTENANCE: Maintained
|
||||
STATUS: Working
|
||||
-------------------------------------------------------------------------------
|
||||
EXTENSION: imap
|
||||
PRIMARY MAINTAINER: Chuck Hagenbuch <chagenbu@php.net>
|
||||
MAINTENANCE: Odd Fixes
|
||||
PRIMARY MAINTAINER: Chuck Hagenbuch <chagenbu@php.net>, Ilia Alshanetsky <iliaa@php.net>
|
||||
MAINTENANCE: Maintained
|
||||
STATUS: Working
|
||||
-------------------------------------------------------------------------------
|
||||
EXTENSION: ircg
|
||||
@@ -442,7 +442,7 @@ MAINTENANCE: Maintained
|
||||
STATUS: Working
|
||||
-------------------------------------------------------------------------------
|
||||
EXTENSION: session
|
||||
PRIMARY MAINTAINER: Sascha Schumann <sas@php.net>
|
||||
PRIMARY MAINTAINER: Sascha Schumann <sas@php.net>, Ilia Alshanetsky <iliaa@php.net>
|
||||
MAINTENANCE: Maintained
|
||||
STATUS: Working
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--------------------------------------------------------------------
|
||||
The PHP License, version 3.0
|
||||
Copyright (c) 1999 - 2002 The PHP Group. All rights reserved.
|
||||
The PHP License, version 3.01
|
||||
Copyright (c) 1999 - 2006 The PHP Group. All rights reserved.
|
||||
--------------------------------------------------------------------
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
@@ -38,8 +38,8 @@ are met:
|
||||
|
||||
6. Redistributions of any form whatsoever must retain the following
|
||||
acknowledgment:
|
||||
"This product includes PHP, freely available from
|
||||
<http://www.php.net/>".
|
||||
"This product includes PHP software, freely available from
|
||||
<http://www.php.net/software/>".
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE PHP DEVELOPMENT TEAM ``AS IS'' AND
|
||||
ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
@@ -64,5 +64,5 @@ The PHP Group can be contacted via Email at group@php.net.
|
||||
For more information on the PHP Group and the PHP project,
|
||||
please see <http://www.php.net>.
|
||||
|
||||
This product includes the Zend Engine, freely available at
|
||||
PHP includes the Zend Engine, freely available at
|
||||
<http://www.zend.com>.
|
||||
+1
-1
@@ -71,7 +71,7 @@ clean:
|
||||
|
||||
distclean: clean
|
||||
rm -f config.cache config.log config.status Makefile.objects Makefile.fragments libtool main/php_config.h stamp-h php4.spec sapi/apache/libphp4.module buildmk.stamp
|
||||
egrep define'.*include/php' configure|sed 's/.*>//'|xargs rm -f
|
||||
egrep define'.*include/php' $(top_srcdir)/configure|sed 's/.*>//'|xargs rm -f
|
||||
find . -name Makefile | xargs rm -f
|
||||
|
||||
.PHONY: all clean install distclean test
|
||||
|
||||
@@ -1,5 +1,329 @@
|
||||
PHP 4 NEWS
|
||||
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||
28 Feb 2007, Version 4.4.6
|
||||
|
||||
- Updated PCRE to version 7.0. (Nuno)
|
||||
- Fixed segfault in ext/session when register_globals=On. (Tony)
|
||||
- Fixed bug #40635 (segfault in cURL extension). (Tony)
|
||||
- Fixed bug #40611 (possible cURL memory error). (Tony)
|
||||
- Fixed bug #40578 (imagettftext() multithreading issue). (Tony)
|
||||
- Fixed bug #40502 (ext/interbase compile failure). (Tony)
|
||||
- Fixed bug #40286 (PHP fastcgi with PHP_FCGI_CHILDREN don't kill children when
|
||||
parent is killed). (Dmitry)
|
||||
|
||||
14 Feb 2007, Version 4.4.5
|
||||
- Upgraded PEAR to 1.5.0. (Greg)
|
||||
- Updated PCRE to version 6.7. (Ilia)
|
||||
- Moved extensions to PECL:
|
||||
. ext/ovrimos (Derick)
|
||||
|
||||
- Added a meta tag to phpinfo() output to prevent search engines from
|
||||
indexing the page. (Ilia)
|
||||
- Backported a fix in the configure tests to detect the "rounding fuzz".
|
||||
(Derick, Joe Orton)
|
||||
- Backported fix for ext/imap compilation failure with recent c-client
|
||||
versions. (Tony)
|
||||
- Fixed missing open_basedir check inside chdir() function. (Ilia)
|
||||
- Fixed bug #40335 (Compile fails when using GCC 4.1.1/binutils 2.17). (Tony)
|
||||
- Fixed bug #39971 (pg_insert/pg_update do not allow now() to be used for
|
||||
timestamp fields). (Ilia)
|
||||
- Fixed bug #39890 (using autoconf 2.6x and --with-layout=GNU breaks PEAR
|
||||
install path). (Tony)
|
||||
- Fixed bug #39819 (Using $this not in object context can cause segfaults).
|
||||
(Dmitry)
|
||||
- Fixed bug #39653 (ext/dba doesn't check for db-4.5 and db-4.4 when db4
|
||||
support is enabled). (Tony)
|
||||
- Fixed bug #39583 (ftp_put() does not change transfer mode to ASCII). (Tony)
|
||||
- Fixed bug #39458 (ftp_nlist() returns false on empty dirs). (Nuno)
|
||||
- Fixed bug #39354 (Allow building of curl extension against libcurl
|
||||
7.16.0). (Ilia)
|
||||
- Fixed bug #39034 (curl_exec() with return transfer returns TRUE on empty
|
||||
files). (Ilia)
|
||||
- Fixed bug #38963 (Fixed a possible open_basedir bypass in tempnam()). (Ilia)
|
||||
- Fixed bug #38882 (ldap_connect causes segfault with newer versions of
|
||||
OpenLDAP). (Tony)
|
||||
- Fixed bug #38859 (parse_url() fails if passing '@' in passwd). (Tony,Ilia)
|
||||
- Fixed bug #38722 (Calling undefined method prints insufficient error message)
|
||||
(Hannes)
|
||||
- Fixed bug #38534 (segfault when calling setlocale() in userspace session
|
||||
handler). (Tony)
|
||||
- Fixed bug #38450 (constructor is not called for classes used in userspace
|
||||
stream wrappers). (Tony)
|
||||
- Fixed bug #38378 (wddx_serialize_value() generates no wellformed xml).
|
||||
(sj at sjaensch dot org, grzegorz dot nosek at netart dot pl, Tony).
|
||||
- Fixed bug #37812 (aggregate_methods_by_list fails to take certain methods).
|
||||
(Hannes)
|
||||
- Fixed bug #36975 (natcasesort() causes array_pop() to misbehave). (Hannes)
|
||||
- Fixed bug #36248 (CURLOPT_HEADERFUNCTION, couldn't set the function in the
|
||||
class). (Ilia)
|
||||
- Fixed bug #34066 (recursive array_walk causes segfault). (Tony)
|
||||
|
||||
17 Aug 2006, Version 4.4.4
|
||||
- Fixed memory_limit on 64bit systems. (Stefan E.)
|
||||
- Fixed overflow on 64bit systems in str_repeat() and wordwrap(). (Stefan E.)
|
||||
- Disabled CURLOPT_FOLLOWLOCATION in curl when open_basedir or safe_mode are
|
||||
enabled. (Stefan E.)
|
||||
- Fixed a memory corruption error with an invalid foreach() call. (Stefan E.,
|
||||
Dmitry, Derick)
|
||||
- Fixed bug #38456 (Apache2 segfaults when virtual() is called in .php
|
||||
ErrorDocument). (Ilia)
|
||||
- Fixed bug #38431 (xmlrpc_get_type() crashes PHP on objects). (Tony)
|
||||
- Fixed bug #38377 (session_destroy() gives warning after
|
||||
session_regenerate_id()). (Ilia)
|
||||
- Fixed bug #38322 (reading past array in sscanf() leads to arbitary code
|
||||
execution). (Tony)
|
||||
- Fixed bug #38278 (session_cache_expire()'s value does not match phpinfo's
|
||||
session.cache_expire). (Tony)
|
||||
- Fixed bug #38251 (socket_select() and invalid arguments). (Tony)
|
||||
- Fixed bug #38183 (disable_classes=Foobar causes disabled class to be
|
||||
called Foo). (Jani)
|
||||
- Fixed bug #38112 (corrupted gif segfaults) (Pierre)
|
||||
- Fixed bug #37265 (Added missing safe_mode & open_basedir checks to
|
||||
imap_body()). (Ilia)
|
||||
- Fixed bug #29538 (number_format and problem with 0). (Matthew Wilmas)
|
||||
|
||||
03 Aug 2006, Version 4.4.3
|
||||
- Added control character checks for cURL extension's open_basedir/safe_mode
|
||||
checks. (Ilia)
|
||||
- Added overflow checks to wordwrap() function. (Ilia)
|
||||
- Added a check for special characters in the session name. (Ilia)
|
||||
- Improved safe_mode check for the error_log() function. (Ilia)
|
||||
- Updated PCRE to version 6.6. (Andrei)
|
||||
- Fixed handling of extremely long paths inside tempnam() function. (Ilia)
|
||||
- Fixed XSS inside phpinfo() with long inputs. (Ilia)
|
||||
- Fixed a possible buffer overflow inside create_named_pipe() for Win32 systems
|
||||
in libmysql.c. (Ilia)
|
||||
- Fixed bug #37720 (merge_php_config scrambles values). (Mike,
|
||||
pumuckel at metropolis dot de)
|
||||
- Fixed bug #37569 (WDDX incorrectly encodes high-ascii characters). (Ilia)
|
||||
- Fixed bug #37510 (session_regenerate_id changes session_id() even on failure).
|
||||
(Hannes)
|
||||
- Fixed bug #37360 (Memory errors with a corrupt GIF file) (Pierre)
|
||||
- Fixed bug #37348 (Make PEAR install ignore open_basedir). (Ilia)
|
||||
- Fixed bug #37346 (Crashes when using an invalid colormap format). (Pierre)
|
||||
- Fixed bug #37162 (wddx does not build as a shared extension).
|
||||
(jdolecek at NetBSD dot org, Ilia)
|
||||
- Fixed bug #37046 (foreach breaks static scope). (Dmitry)
|
||||
- Fixed bug #37045 (Fixed check for special chars for http redirects). (Ilia)
|
||||
- Fixed bug #36857 (Added support for partial content fetching to the HTTP
|
||||
streams wrapper). (Ilia)
|
||||
- Fixed bug #36776 (node_list_wrapper_dtor segfault). (Rob)
|
||||
- Fixed bug #36459 (Incorrect adding PHPSESSID to links, which contains \r\n).
|
||||
(Ilia)
|
||||
- Fixed bug #36458 (sleep() accepts negative values). (Ilia)
|
||||
- Fixed bug #36242 (Possible memory corruption in stream_select()). (Tony)
|
||||
- Fixed bug #36223 (curl bypasses open_basedir restrictions). (Tony)
|
||||
- Fixed bug #36205 (Memory leaks on duplicate cookies). (Dmitry)
|
||||
- Fixed bug #36148 (unpack("H*hex", $data) is adding an extra character to the
|
||||
end of the string). (Ilia)
|
||||
- Fixed bug #36017 (fopen() crashes PHP when opening a URL). (Tony)
|
||||
|
||||
13 Jan 2006, Version 4.4.2
|
||||
- Added missing safe_mode/open_basedir checks into cURL extension. (Ilia)
|
||||
- Backported missing imap_mailcompose() fixes from PHP 5.x. (Ilia)
|
||||
- Prevent header injection by limiting each header to a single line. (Ilia)
|
||||
- Fixed possible XSS inside error reporting functionality. (Ilia)
|
||||
- Fixed Apache 2 regression with sub-request handling on non-linux systems.
|
||||
(Ilia, Tony)
|
||||
- Fixed bug #35817 (unpack() does not decode odd number of hexadecimal values).
|
||||
(Ilia)
|
||||
- Fixed bug #35735 ($EGREP not defined in configure). (Jani)
|
||||
- Fixed bug #35669 (imap_mail_compose() crashes with
|
||||
multipart-multiboundary-email). (Ilia)
|
||||
- Fixed bug #35655 (whitespace following end of heredoc is lost). (Ilia)
|
||||
- Fixed bug #35646 (%{mod_php_memory_usage}n is not reset after exit).
|
||||
(vovik at getart dot ru, Tony)
|
||||
- Fixed bug #35594 (Multiple calls to getopt() may result in a crash).
|
||||
(rabbitt at gmail dot com, Ilia)
|
||||
- Fixed bug #35571 (Fixed crash in Apache 2 SAPI when more then one php
|
||||
script is loaded via SSI include). (Ilia)
|
||||
- Fixed bug #35536 (mysql_field_type() doesn't handle NEWDECIMAL). (Tony)
|
||||
- Fixed bug #35410 (wddx_deserialize() doesn't handle large ints as keys
|
||||
properly). (Ilia)
|
||||
- Fixed bug #35341 (Fix for bug #33760 breaks build with older curl). (Tony)
|
||||
- Fixed bug #35278 (Multiple virtual() calls crash Apache 2 php module). (Ilia)
|
||||
- Fixed bug #35257 (Calling ob_flush after creating an ob callback causes
|
||||
segfault). (Tony)
|
||||
- Fixed bug #35079 (stream_set_blocking(true) toggles, not enables
|
||||
blocking). (askalski at gmail dot com, Tony)
|
||||
- Fixed bug #35078 (configure does not find ldap_start_tls_s). (Jani)
|
||||
- Fixed bug #35071 (Wrong fopen mode used in GD safe-mode checks). (Jani)
|
||||
- Fixed bug #35067, #35063 (key(),current() need to work by reference). (Ilia)
|
||||
- Fixed bug #35062 (socket_read() produces warnings on non blocking sockets).
|
||||
(Nuno, Ilia)
|
||||
- Fixed bug #35059 (Apache2 crash with mod_rewrite). (Ilia)
|
||||
- Fixed bug #35009 (ZTS: Persistent resource destruct crashes when extension
|
||||
is compiled as shared). (Dmitry)
|
||||
- Fixed bug #34996 (ImageTrueColorToPalette() crashes when ncolors is zero).
|
||||
(Tony)
|
||||
- Fixed bug #34851 (SO_RECVTIMEO and SO_SNDTIMEO socket options expect integer
|
||||
parameter on Windows). (Mike)
|
||||
- Fixed bug #34830 (the 5th argument of mb_send_mail does not work). (Rui)
|
||||
- Fixed bug #34359 (Possible crash inside fopen http wrapper). (Ilia,Nuno,Sara)
|
||||
- Fixed bug #33963 (mssql_bind() fails on input parameters). (Frank)
|
||||
- Fixed bug #33760 (cURL needs CRYPTO_callback functions to prevent locking).
|
||||
(Mike)
|
||||
- Fixed bug #33720 (mb_encode_mimeheader does not work for multibyte chars).
|
||||
(Rui)
|
||||
- Fixed bug #33523 (Memory leak in xmlrpc_encode_request()). (Ilia)
|
||||
- Fixed bug #33201 (Crash when fetching some data types). (Frank)
|
||||
(frantisek at augusztin dot com)
|
||||
- Fixed bug #33153 (crash in mssql_next result). (Frank)
|
||||
- Fixed bug #32009 (crash when mssql_bind() is called more than once). (Frank)
|
||||
- Fixed bug #31971 (ftp_login fails on some SSL servers).
|
||||
- Fixed bug #30760 (Remove MessageBox on win32 for E_CORE errors if
|
||||
display_startup_error is off). (Ilia)
|
||||
- Fixed bug #27678 (number_format() crashes with large numbers). (Marcus)
|
||||
|
||||
31 Oct 2005, Version 4.4.1
|
||||
- Added missing safe_mode checks for image* functions and cURL. (Ilia)
|
||||
- Added missing safe_mode/open_basedir checks for file uploads. (Ilia)
|
||||
- Added "new_link" parameter to mssql_connect(). Bug #34369. (Frank)
|
||||
- Fixed a memory corruption bug regarding included files. (Derick)
|
||||
- Fixed possible INI setting leak via virtual() in Apache 2 sapi. (Ilia)
|
||||
- Fixed possible crash and/or memory corruption in import_request_variables().
|
||||
(Ilia)
|
||||
- Fixed potential GLOBALS overwrite via import_request_variables(). (Ilia)
|
||||
- Fixed possible GLOBALS variable override when register_globals are ON.
|
||||
(Ilia, Stefan)
|
||||
- Fixed possible register_globals toggle via parse_str(). (Ilia, Stefan)
|
||||
- Fixed bug #34850 (--program-suffix and --program-prefix not included in
|
||||
man page names). (Jani)
|
||||
- Fixed bug #34790 (preg_match_all(), named capturing groups, variable
|
||||
assignment/return => crash). (Dmitry)
|
||||
- Fixed bug #34742 (ftp wrapper failures caused from segmented command
|
||||
transfer). (Ilia)
|
||||
- Fixed bug #34704 (Infinite recursion due to corrupt JPEG). (Marcus)
|
||||
- Fixed bug #34645 (ctype corrupts memory when validating large numbers). (Ilia)
|
||||
- Fixed bug #34565 (mb_send_mail does not fetch mail.force_extra_parameters).
|
||||
(Marco, Ilia)
|
||||
- Fixed bug #34557 (php -m exits with "error" 1). (Johannes)
|
||||
- Fixed bug #34456 (Possible crash inside pspell extension). (Ilia)
|
||||
- Fixed bug #34311 (unserialize() crashes with chars above 191 dec). (Nuno)
|
||||
- Fixed bug #34307 (on_modify handler not called to set the default value if
|
||||
setting from php.ini was invalid). (Andrei)
|
||||
- Fixed bug #34302 (date('W') do not return leading zeros for week 1 to 9).
|
||||
(Derick)
|
||||
- Fixed bug #34277 (array_filter() crashes with references and objects).
|
||||
(Dmitry)
|
||||
- Fixed bug #34191 (ob_gzhandler does not enforce trailing \0). (Ilia)
|
||||
- Fixed bug #34156 (memory usage remains elevated after memory limit is
|
||||
reached). (Ilia)
|
||||
- Fixed bug #34148 (+,- and . not supported as parts of scheme). (Ilia)
|
||||
- Fixed bug #34137 (assigning array element by reference causes binary mess).
|
||||
(Dmitry)
|
||||
- Fixed bug #34068 (Numeric string as array key not cast to integer in
|
||||
wddx_deserialize()). (Ilia)
|
||||
- Fixed bug #34064 (arr[] as param to function is allowed only if function
|
||||
receives argument by reference). (Dmitry)
|
||||
- Fixed bug #33989 (extract($GLOBALS,EXTR_REFS) crashes PHP). (Dmitry)
|
||||
- Fixed bug #33987 (php script as ErrorDocument causes crash in Apache 2).
|
||||
(Ilia)
|
||||
- Fixed bug #33940 (array_map() fails to pass by reference when called
|
||||
recursively). (Dmitry)
|
||||
- Fixed bug #33690 (Crash setting some ini directives in httpd.conf). (Rasmus)
|
||||
- Fixed bug #33673 (Added detection for partially uploaded files). (Ilia)
|
||||
- Fixed bug #33648 (Using --with-regex=system causes compile failure). (Andrei)
|
||||
- Fixed bug #33558 (Warning with nested calls to functions returning by
|
||||
reference). (Dmitry, Derick)
|
||||
- Fixed bug #33383 (crash when retrieving empty LOBs). (Tony)
|
||||
- Fixed bug #33156 (cygwin version of setitimer doesn't accept ITIMER_PROF).
|
||||
(Nuno)
|
||||
- Fixed bug #32937 (open_basedir looses trailing / in the limiter). (Adam C.)
|
||||
- Fixed bug #32589 (possible crash inside imap_mail_compose() function). (Ilia)
|
||||
- Fixed bug #32179 (xmlrpc_encode() segfaults with recursive references). (Tony)
|
||||
- Fixed bug #32160 (copying a file into itself leads to data loss). (Ilia)
|
||||
- Fixed bug #31158 (array_splice on $GLOBALS crashes). (Dmitry)
|
||||
- Fixed bug #29983 (PHP does not explicitly set mime type & charset). (Ilia)
|
||||
- Fixed bug #29253 (array_diff with $GLOBALS argument fails). (Dmitry)
|
||||
- Fixed bug #21306 (ext/sesssion: catch bailouts of write handler during
|
||||
RSHUTDOWN). (Jani, Xuefer at 21cn dot com)
|
||||
|
||||
11 Jul 2005, Version 4.4.0
|
||||
- Added man pages for "phpize" and "php-config" scripts. (Jakub Vrana)
|
||||
- Added support for .cc files in extensions. (Brian)
|
||||
- Added the sorting flag SORT_LOCALE_STRING to the sort() functions which makes
|
||||
them sort based on the current locale. (Derick)
|
||||
- Changed sha1_file() and md5_file() functions to use streams instead of
|
||||
low level IO. (Uwe)
|
||||
- Fixed memory corruptions when using references in a wrong way. (Marcus,
|
||||
Dmitry, Derick)
|
||||
- Fixed memory corruption in pg_copy_from() in case the as_null parameter was
|
||||
passed. (Derick)
|
||||
- Fixed memory corruption in stristr(). (Derick)
|
||||
- Fixed bug #32685, #29423 (Segfault when using assignment by reference within
|
||||
function). (Dmitry, Derick)
|
||||
- Fixed bug #33242 (Mangled error message when stream fails). (Derick)
|
||||
- Fixed bug #33222 (segfault when CURL handle is closed in a callback). (Tony)
|
||||
- Fixed bug #33214 (odbc_next_result does not signal SQL errors with
|
||||
2-statement SQL batches). (rich at kastle dot com, Tony)
|
||||
- Fixed bug #33210 (relax jpeg recursive loop protection). (Ilia)
|
||||
- Fixed bug #33200 (preg_replace(): magic_quotes_sybase=On makes 'e' modifier
|
||||
misbehave). (Jani)
|
||||
- Fixed bug #33150 (shtool: insecure temporary file creation). (Jani)
|
||||
- Fixed bug #33072 (Add a safemode/open_basedir check for runtime save_path
|
||||
change) (Rasmus)
|
||||
- Fixed bug #33070 (Improved performance of bzdecompress() by several orders
|
||||
of magnitude). (Ilia)
|
||||
- Fixed bug #33057 (Don't send extraneous entity-headers on a 304 as per
|
||||
RFC 2616 section 10.3.5) (Rasmus, Choitel)
|
||||
- Fixed bug #33019 (socket errors cause memory leaks in php_strerror()).
|
||||
(jwozniak23 at poczta dot onet dot pl, Tony).
|
||||
- Fixed bug #33017 ("make distclean" gives an error with VPATH build). (Jani)
|
||||
- Fixed bug #33013 ("next month" was handled wrong while parsing dates).
|
||||
(Derick)
|
||||
- Fixed bug #32974 (pcntl calls malloc() from a signal handler). (Wez)
|
||||
- Fixed bug #32944 (Disabling session.use_cookies doesn't prevent reading
|
||||
session cookies). (Jani, Tony)
|
||||
- Fixed bug #32936 (http redirects URLs are not checked for control chars). (Ilia)
|
||||
- Fixed bug #32932 (Oracle LDAP: ldap_get_entries invalid pointer). (Jani)
|
||||
- Fixed bug #32904 (pg_get_notify() ignores result_type parameter). (Tony)
|
||||
- Fixed bug #32813 (parse_url() does not handle scheme-only urls properly). (Ilia)
|
||||
- Fixed bug #32810 (temporary files not using plain file wrapper). (Ilia)
|
||||
- Fixed bug #32802 (General cookie overrides more specific cookie). (Ilia)
|
||||
- Fixed bugs #32800, #32830 (ext/odbc: Problems with 64bit systems). (Jani)
|
||||
- Fixed bug #32773 (GMP functions break when second parameter is 0). (Stas)
|
||||
- Fixed bug #32742 (segmentation fault when the stream with a wrapper
|
||||
is not closed). (Tony, Dmitry)
|
||||
- Fixed bug #32730 (ext/crack.c fails to compile with cracklib-2.8.3). (Jani)
|
||||
- Fixed bug #32670 (foreach() does not issue warning on unset array arg). (Ilia)
|
||||
- Fixed bug #32699 (pg_affected_rows() was defined when it was not available).
|
||||
(Derick)
|
||||
- Fixed bug #32682 (ext/mssql: Error on module shutdown when called from
|
||||
activescript). (Frank)
|
||||
- Fixed bug #32647 (Using register_shutdown_function() with invalid callback
|
||||
can crash PHP). (Jani)
|
||||
- Fixed bug #32591 (ext/mysql: Unsatisfied symbol: ntohs with HP-UX). (Jani)
|
||||
- Fixed bug #32589 (Possible crash inside imap_mail_compose, with charsets).
|
||||
(Ilia)
|
||||
- Fixed bug #32587 (Apache2: errors sent to error_log do not include
|
||||
timestamps). (Jani)
|
||||
- Fixed bug #32567 (ext/gmp fails to compile in threadsafe mode). (Tony)
|
||||
- Fixed bug #32538 (ext/swf/swf.c does not compile with gcc-3.4.x or newer).
|
||||
(adam dot greenfield at gmail dot com)
|
||||
- Fixed bug #32530 (chunk_split() does not append endstr if chunklen is
|
||||
longer then the original string). (Ilia)
|
||||
- Fixed bug #32491 (File upload error - unable to create a temporary file).
|
||||
(Uwe Schindler)
|
||||
- Fixed bug #32311 (mb_encode_mimeheader() does not properly escape characters).
|
||||
(Moriyoshi)
|
||||
- Fixed bug #32245 (xml_parser_free() in a function assigned to the xml parser
|
||||
gives a segfault). (Rob)
|
||||
- Fixed bug #32116 (mysql compressed connection doesn't work under windows)
|
||||
(Georg)
|
||||
- Fixed bug #31887 (ISAPI: Custom 5xx error does not return correct HTTP
|
||||
response message). (Jani)
|
||||
- Fixed bug #31583 (php_std_date() uses short day names in non-y2k_compliance mode).
|
||||
(mike at php dot net)
|
||||
- Fixed bug #31213 (Sideeffects caused by fix of bug #29493). (Dmitry)
|
||||
- Fixed bug #30052 (Crash on shutdown after odbc_pconnect()). (Edin)
|
||||
- Fixed bug #29975 (memory leaks when set_error_handler() is used inside error
|
||||
handler). (Tony)
|
||||
- Fixed bug #29944 (Function defined in switch, crashes). (Dmitry)
|
||||
- Fixed bug #29338 (unencoded spaces get ignored after certain tags). (Ilia)
|
||||
- Fixed bug #28605 (Need to use -[m]ieee option for Alpha CPUs). (Jani)
|
||||
- Fixed bug #28377 (debug_backtrace is intermittently passing args). (Dmitry)
|
||||
|
||||
31 Mar 2005, Version 4.3.11
|
||||
- Added Oracle Instant Client support. (cjbj at hotmail dot com, Tony)
|
||||
- Added checks for negative values to gmp_sqrt(), gmp_powm(), gmp_sqrtrem()
|
||||
|
||||
+13
-6
@@ -29,14 +29,21 @@ Having said that, here are the organizational rules:
|
||||
5. If you don't know how to do something, ask first!
|
||||
|
||||
6. Test your changes before committing them. We mean it. Really.
|
||||
To do so use "make test".
|
||||
|
||||
7. For development use the --enable-maintainer-zts switch to ensure your
|
||||
code handles TSRM correctly and doesn't break for thos who need that.
|
||||
|
||||
Currently we have the following branches in use:
|
||||
HEAD Will become PHP 5.1. This CVS branch is for active development.
|
||||
PHP_5_0 Is used to release the PHP 5.0.x series. Only minor feature
|
||||
enhancements may go in here, but please keep that as infrequent as
|
||||
possible.
|
||||
PHP_4_3 Is used to release the PHP 4.3.x series. Only bugfixes are permitted
|
||||
on this branch.
|
||||
HEAD Will become PHP 6.0. This CVS branch is for active development.
|
||||
PHP_5_2 Is used to release the PHP 5.2.x series. Only minor feature
|
||||
enhancements may go in here, but please keep that as infrequent as
|
||||
possible.
|
||||
PHP_5_1 Is used to release the PHP 5.1.x series. Only bugfixes are permitted
|
||||
on this branch (Consult the releasemaster prior to commit).
|
||||
PHP_4_4 Is used to release the PHP 4.4.x series. Only bugfixes are permitted
|
||||
on this branch (Consult the releasemaster prior to commit).
|
||||
PHP_4_3 This branch is closed.
|
||||
|
||||
The next few rules are more of a technical nature.
|
||||
|
||||
|
||||
-16
@@ -428,8 +428,6 @@ TSRM_API THREAD_T tsrm_thread_id(void)
|
||||
{
|
||||
#ifdef TSRM_WIN32
|
||||
return GetCurrentThreadId();
|
||||
#elif defined(NETWARE)
|
||||
return NXThreadGetId();
|
||||
#elif defined(GNUPTH)
|
||||
return pth_self();
|
||||
#elif defined(PTHREADS)
|
||||
@@ -450,17 +448,9 @@ TSRM_API THREAD_T tsrm_thread_id(void)
|
||||
TSRM_API MUTEX_T tsrm_mutex_alloc(void)
|
||||
{
|
||||
MUTEX_T mutexp;
|
||||
#ifdef NETWARE
|
||||
long flags = 0; /* Don't require NX_MUTEX_RECURSIVE, I guess */
|
||||
NXHierarchy_t order = 0;
|
||||
NX_LOCK_INFO_ALLOC (lockInfo, "PHP-TSRM", 0);
|
||||
#endif
|
||||
|
||||
#ifdef TSRM_WIN32
|
||||
mutexp = malloc(sizeof(CRITICAL_SECTION));
|
||||
InitializeCriticalSection(mutexp);
|
||||
#elif defined(NETWARE)
|
||||
mutexp = NXMutexAlloc(flags, order, &lockInfo); /* return value ignored for now */
|
||||
#elif defined(GNUPTH)
|
||||
mutexp = (MUTEX_T) malloc(sizeof(*mutexp));
|
||||
pth_mutex_init(mutexp);
|
||||
@@ -492,8 +482,6 @@ TSRM_API void tsrm_mutex_free(MUTEX_T mutexp)
|
||||
#ifdef TSRM_WIN32
|
||||
DeleteCriticalSection(mutexp);
|
||||
free(mutexp);
|
||||
#elif defined(NETWARE)
|
||||
NXMutexFree(mutexp);
|
||||
#elif defined(GNUPTH)
|
||||
free(mutexp);
|
||||
#elif defined(PTHREADS)
|
||||
@@ -523,8 +511,6 @@ TSRM_API int tsrm_mutex_lock(MUTEX_T mutexp)
|
||||
#ifdef TSRM_WIN32
|
||||
EnterCriticalSection(mutexp);
|
||||
return 1;
|
||||
#elif defined(NETWARE)
|
||||
return NXLock(mutexp);
|
||||
#elif defined(GNUPTH)
|
||||
return pth_mutex_acquire(mutexp, 0, NULL);
|
||||
#elif defined(PTHREADS)
|
||||
@@ -550,8 +536,6 @@ TSRM_API int tsrm_mutex_unlock(MUTEX_T mutexp)
|
||||
#ifdef TSRM_WIN32
|
||||
LeaveCriticalSection(mutexp);
|
||||
return 1;
|
||||
#elif defined(NETWARE)
|
||||
return NXUnlock(mutexp);
|
||||
#elif defined(GNUPTH)
|
||||
return pth_mutex_release(mutexp);
|
||||
#elif defined(PTHREADS)
|
||||
|
||||
+1
-7
@@ -14,7 +14,7 @@
|
||||
#define TSRM_H
|
||||
|
||||
/* #ifndef WIN32 */
|
||||
#if !defined(WIN32) && !defined(NETWARE)
|
||||
#if !defined(WIN32)
|
||||
# include <tsrm_config.h>
|
||||
#endif
|
||||
|
||||
@@ -38,9 +38,6 @@
|
||||
|
||||
#ifdef TSRM_WIN32
|
||||
# include <windows.h>
|
||||
#elif defined(NETWARE)
|
||||
# include <nks/thread.h>
|
||||
# include <nks/synch.h>
|
||||
#elif defined(GNUPTH)
|
||||
# include <pth.h>
|
||||
#elif defined(PTHREADS)
|
||||
@@ -58,9 +55,6 @@ typedef int ts_rsrc_id;
|
||||
#ifdef TSRM_WIN32
|
||||
# define THREAD_T DWORD
|
||||
# define MUTEX_T CRITICAL_SECTION *
|
||||
#elif defined(NETWARE)
|
||||
# define THREAD_T NXThreadId_t
|
||||
# define MUTEX_T NXMutex_t *
|
||||
#elif defined(GNUPTH)
|
||||
# define THREAD_T pth_t
|
||||
# define MUTEX_T pth_mutex_t *
|
||||
|
||||
+9
-1
@@ -84,7 +84,15 @@ int main() {
|
||||
pthreads_working=yes
|
||||
], [
|
||||
pthreads_working=no
|
||||
], pthreads_working=no ) ] )dnl
|
||||
], [
|
||||
dnl For cross compiling running this test is of no use. NetWare supports pthreads
|
||||
pthreads_working=no
|
||||
case $host_alias in
|
||||
*netware*)
|
||||
pthreads_working=yes
|
||||
esac
|
||||
]
|
||||
) ] )dnl
|
||||
dnl
|
||||
dnl PTHREADS_CHECK()
|
||||
dnl
|
||||
|
||||
@@ -42,6 +42,8 @@ char *alloca ();
|
||||
#ifndef MAXPATHLEN
|
||||
# ifdef PATH_MAX
|
||||
# define MAXPATHLEN PATH_MAX
|
||||
# elif defined(MAX_PATH)
|
||||
# define MAXPATHLEN MAX_PATH
|
||||
# else
|
||||
# define MAXPATHLEN 256
|
||||
# endif
|
||||
|
||||
+4
-4
@@ -2,12 +2,12 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
+4
-4
@@ -2,12 +2,12 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
+39
-42
@@ -2,12 +2,12 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
@@ -37,8 +37,7 @@
|
||||
#endif
|
||||
|
||||
#ifdef NETWARE
|
||||
/*#include "pipe.h"*/
|
||||
#include "tsrm_nw.h"
|
||||
#include <fsio.h>
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_REALPATH
|
||||
@@ -137,15 +136,9 @@ static int php_check_dots(const char *element, int n)
|
||||
|
||||
static int php_is_dir_ok(const cwd_state *state)
|
||||
{
|
||||
#if !(defined(NETWARE) && defined(CLIB_STAT_PATCH))
|
||||
struct stat buf;
|
||||
|
||||
if (stat(state->cwd, &buf) == 0 && S_ISDIR(buf.st_mode))
|
||||
#else
|
||||
struct stat_libc buf;
|
||||
|
||||
if (stat(state->cwd, (struct stat*)(&buf)) == 0 && S_ISDIR(buf.st_mode))
|
||||
#endif
|
||||
return (0);
|
||||
|
||||
return (1);
|
||||
@@ -153,15 +146,9 @@ static int php_is_dir_ok(const cwd_state *state)
|
||||
|
||||
static int php_is_file_ok(const cwd_state *state)
|
||||
{
|
||||
#if !(defined(NETWARE) && defined(CLIB_STAT_PATCH))
|
||||
struct stat buf;
|
||||
|
||||
if (stat(state->cwd, &buf) == 0 && S_ISREG(buf.st_mode))
|
||||
#else
|
||||
struct stat_libc buf;
|
||||
|
||||
if (stat(state->cwd, (struct stat*)(&buf)) == 0 && S_ISREG(buf.st_mode))
|
||||
#endif
|
||||
return (0);
|
||||
|
||||
return (1);
|
||||
@@ -196,8 +183,20 @@ CWD_API void virtual_cwd_startup(void)
|
||||
{
|
||||
char cwd[MAXPATHLEN];
|
||||
char *result;
|
||||
|
||||
result = getcwd(cwd, sizeof(cwd));
|
||||
#ifdef NETWARE
|
||||
result = getcwdpath(cwd, NULL, 1);
|
||||
if(result)
|
||||
{
|
||||
char *c=cwd;
|
||||
while(c = strchr(c, '\\'))
|
||||
{
|
||||
*c='/';
|
||||
++c;
|
||||
}
|
||||
}
|
||||
#else
|
||||
result = getcwd(cwd, sizeof(cwd));
|
||||
#endif
|
||||
if (!result) {
|
||||
cwd[0] = '\0';
|
||||
}
|
||||
@@ -210,7 +209,7 @@ CWD_API void virtual_cwd_startup(void)
|
||||
cwd_globals_ctor(&cwd_globals TSRMLS_CC);
|
||||
#endif
|
||||
|
||||
#if defined(TSRM_WIN32) && defined(ZTS)
|
||||
#if (defined(TSRM_WIN32) || defined(NETWARE)) && defined(ZTS)
|
||||
cwd_mutex = tsrm_mutex_alloc();
|
||||
#endif
|
||||
}
|
||||
@@ -220,7 +219,7 @@ CWD_API void virtual_cwd_shutdown(void)
|
||||
#ifndef ZTS
|
||||
cwd_globals_dtor(&cwd_globals TSRMLS_CC);
|
||||
#endif
|
||||
#if defined(TSRM_WIN32) && defined(ZTS)
|
||||
#if (defined(TSRM_WIN32) || defined(NETWARE)) && defined(ZTS)
|
||||
tsrm_mutex_free(cwd_mutex);
|
||||
#endif
|
||||
|
||||
@@ -418,8 +417,20 @@ CWD_API int virtual_file_ex(cwd_state *state, const char *path, verify_path_func
|
||||
state->cwd[state->cwd_length++] = DEFAULT_SLASH;
|
||||
}
|
||||
#elif defined(NETWARE)
|
||||
/* If the token is a volume name, it will have colon at the end -- so, no slash before it */
|
||||
if (ptr[ptr_length-1] != ':') {
|
||||
/*
|
||||
Below code keeps appending to state->cwd a File system seperator
|
||||
cases where this appending should not happen is given below,
|
||||
a) sys: should just be left as it is
|
||||
b) sys:system should just be left as it is,
|
||||
Colon is allowed only in the first token as volume names alone can have the : in their names.
|
||||
Files and Directories cannot have : in their names
|
||||
So the check goes like this,
|
||||
For second token and above simply append the DEFAULT_SLASH to the state->cwd.
|
||||
For first token check for the existence of :
|
||||
if it exists don't append the DEFAULT_SLASH to the state->cwd.
|
||||
*/
|
||||
if(((state->cwd_length == 0) && (strchr(ptr, ':') == NULL)) || (state->cwd_length > 0))
|
||||
{
|
||||
state->cwd[state->cwd_length++] = DEFAULT_SLASH;
|
||||
}
|
||||
#else
|
||||
@@ -683,37 +694,23 @@ CWD_API int virtual_rename(char *oldname, char *newname TSRMLS_DC)
|
||||
return retval;
|
||||
}
|
||||
|
||||
#if !(defined(NETWARE) && defined(CLIB_STAT_PATCH))
|
||||
CWD_API int virtual_stat(const char *path, struct stat *buf TSRMLS_DC)
|
||||
{
|
||||
cwd_state new_state;
|
||||
int retval;
|
||||
|
||||
CWD_STATE_COPY(&new_state, &CWDG(cwd));
|
||||
virtual_file_ex(&new_state, path, NULL, 1);
|
||||
if (virtual_file_ex(&new_state, path, NULL, 1)) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
retval = stat(new_state.cwd, buf);
|
||||
|
||||
CWD_STATE_FREE(&new_state);
|
||||
return retval;
|
||||
}
|
||||
#else
|
||||
CWD_API int virtual_stat(const char *path, struct stat_libc *buf TSRMLS_DC)
|
||||
{
|
||||
cwd_state new_state;
|
||||
int retval;
|
||||
|
||||
CWD_STATE_COPY(&new_state, &CWDG(cwd));
|
||||
virtual_file_ex(&new_state, path, NULL, 1);
|
||||
|
||||
retval = stat(new_state.cwd, (struct stat*)buf);
|
||||
|
||||
CWD_STATE_FREE(&new_state);
|
||||
return retval;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if !defined(TSRM_WIN32) && !defined(NETWARE)
|
||||
#ifndef TSRM_WIN32
|
||||
CWD_API int virtual_lstat(const char *path, struct stat *buf TSRMLS_DC)
|
||||
{
|
||||
cwd_state new_state;
|
||||
|
||||
+8
-12
@@ -2,12 +2,12 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
@@ -74,10 +74,10 @@ typedef unsigned short mode_t;
|
||||
#define DEFAULT_SLASH '/'
|
||||
#define DEFAULT_DIR_SEPARATOR ';'
|
||||
#define IS_SLASH(c) ((c) == '/' || (c) == '\\')
|
||||
#define COPY_WHEN_ABSOLUTE(path) \
|
||||
(strchr(path, ':') - path + 1) /* Take the volume name which ends with a colon */
|
||||
#define IS_SLASH_P(c) IS_SLASH(*(c))
|
||||
/* Colon indicates volume name, either first character should be forward slash or backward slash */
|
||||
#define IS_ABSOLUTE_PATH(path, len) \
|
||||
(strchr(path, ':') != NULL) /* Colon indicates volume name */
|
||||
((strchr(path, ':') != NULL) || ((len >= 1) && ((path[0] == '/') || (path[0] == '\\'))))
|
||||
|
||||
#else
|
||||
#ifdef HAVE_DIRENT_H
|
||||
@@ -141,11 +141,7 @@ CWD_API FILE *virtual_fopen(const char *path, const char *mode TSRMLS_DC);
|
||||
CWD_API int virtual_open(const char *path TSRMLS_DC, int flags, ...);
|
||||
CWD_API int virtual_creat(const char *path, mode_t mode TSRMLS_DC);
|
||||
CWD_API int virtual_rename(char *oldname, char *newname TSRMLS_DC);
|
||||
#if !(defined(NETWARE) && defined(CLIB_STAT_PATCH))
|
||||
CWD_API int virtual_stat(const char *path, struct stat *buf TSRMLS_DC);
|
||||
#else
|
||||
CWD_API int virtual_stat(const char *path, struct stat_libc *buf TSRMLS_DC);
|
||||
#endif
|
||||
#if !defined(TSRM_WIN32) && !defined(NETWARE)
|
||||
CWD_API int virtual_lstat(const char *path, struct stat *buf TSRMLS_DC);
|
||||
#endif
|
||||
@@ -217,7 +213,7 @@ typedef struct _virtual_cwd_globals {
|
||||
#define VCWD_REALPATH(path, real_path) virtual_realpath(path, real_path TSRMLS_CC)
|
||||
#define VCWD_RENAME(oldname, newname) virtual_rename(oldname, newname TSRMLS_CC)
|
||||
#define VCWD_STAT(path, buff) virtual_stat(path, buff TSRMLS_CC)
|
||||
#if !defined(TSRM_WIN32) && !defined(NETWARE)
|
||||
#ifndef TSRM_WIN32
|
||||
#define VCWD_LSTAT(path, buff) virtual_lstat(path, buff TSRMLS_CC)
|
||||
#endif
|
||||
#define VCWD_UNLINK(path) virtual_unlink(path TSRMLS_CC)
|
||||
|
||||
+4
-4
@@ -2,12 +2,12 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
+4
-4
@@ -2,12 +2,12 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
+63
-16
@@ -143,7 +143,7 @@ dnl append to the array which has been dynamically chosen at m4 time
|
||||
dnl choose the right compiler/flags/etc. for the source-file
|
||||
case $ac_src in
|
||||
*.c[)] ac_comp="$b_c_pre $3 $ac_inc $b_c_meta -c $ac_srcdir$ac_src -o $ac_bdir$ac_obj.$b_lo $6$b_c_post" ;;
|
||||
*.cpp[)] ac_comp="$b_cxx_pre $3 $ac_inc $b_cxx_meta -c $ac_srcdir$ac_src -o $ac_bdir$ac_obj.$b_lo $6$b_cxx_post" ;;
|
||||
*.cpp|*.cc[)] ac_comp="$b_cxx_pre $3 $ac_inc $b_cxx_meta -c $ac_srcdir$ac_src -o $ac_bdir$ac_obj.$b_lo $6$b_cxx_post" ;;
|
||||
esac
|
||||
|
||||
dnl create a rule for the object/source combo
|
||||
@@ -548,6 +548,10 @@ AC_DEFUN([PHP_MODULE_PTR],[
|
||||
])
|
||||
|
||||
AC_DEFUN([PHP_CONFIG_NICE],[
|
||||
AC_REQUIRE([AC_PROG_EGREP])
|
||||
AC_REQUIRE([LT_AC_PROG_SED])
|
||||
PHP_SUBST(EGREP)
|
||||
PHP_SUBST(SED)
|
||||
test -f $1 && mv $1 $1.old
|
||||
rm -f $1.old
|
||||
cat >$1<<EOF
|
||||
@@ -557,18 +561,37 @@ AC_DEFUN([PHP_CONFIG_NICE],[
|
||||
|
||||
EOF
|
||||
|
||||
for var in CFLAGS CXXFLAGS CPPFLAGS LDFLAGS LIBS CC CXX; do
|
||||
for var in CFLAGS CXXFLAGS CPPFLAGS LDFLAGS EXTRA_LDFLAGS_PROGRAM LIBS CC CXX; do
|
||||
eval val=\$$var
|
||||
if test -n "$val"; then
|
||||
echo "$var='$val' \\" >> $1
|
||||
fi
|
||||
done
|
||||
|
||||
for arg in [$]0 "[$]@"; do
|
||||
echo "'[$]arg' \\" >> $1
|
||||
echo "'[$]0' \\" >> $1
|
||||
if test `expr -- [$]0 : "'.*"` = 0; then
|
||||
CONFIGURE_COMMAND="$CONFIGURE_COMMAND '[$]0'"
|
||||
else
|
||||
CONFIGURE_COMMAND="$CONFIGURE_COMMAND [$]0"
|
||||
fi
|
||||
for arg in $ac_configure_args; do
|
||||
if test `expr -- $arg : "'.*"` = 0; then
|
||||
if test `expr -- $arg : "--.*"` = 0; then
|
||||
break;
|
||||
fi
|
||||
echo "'[$]arg' \\" >> $1
|
||||
CONFIGURE_COMMAND="$CONFIGURE_COMMAND '[$]arg'"
|
||||
else
|
||||
if test `expr -- $arg : "'--.*"` = 0; then
|
||||
break;
|
||||
fi
|
||||
echo "[$]arg \\" >> $1
|
||||
CONFIGURE_COMMAND="$CONFIGURE_COMMAND [$]arg"
|
||||
fi
|
||||
done
|
||||
echo '"[$]@"' >> $1
|
||||
chmod +x $1
|
||||
PHP_SUBST_OLD(CONFIGURE_COMMAND)
|
||||
])
|
||||
|
||||
AC_DEFUN([PHP_TIME_R_TYPE],[
|
||||
@@ -1090,18 +1113,27 @@ AC_DEFUN([PHP_CHECK_CC_OPTION],[
|
||||
rm -rf conftest*
|
||||
])
|
||||
|
||||
|
||||
AC_DEFUN([PHP_REGEX],[
|
||||
|
||||
if test "$REGEX_TYPE" = "php"; then
|
||||
AC_DEFINE(HSREGEX,1,[ ])
|
||||
AC_DEFINE(REGEX,1,[ ])
|
||||
PHP_ADD_SOURCES(regex, regcomp.c regexec.c regerror.c regfree.c)
|
||||
elif test "$REGEX_TYPE" = "system"; then
|
||||
AC_DEFINE(REGEX,0,[ ])
|
||||
fi
|
||||
|
||||
AC_MSG_CHECKING([which regex library to use])
|
||||
AC_MSG_RESULT([$REGEX_TYPE])
|
||||
if test "$REGEX_TYPE" = "php"; then
|
||||
AC_DEFINE(HAVE_REGEX_T_RE_MAGIC, 1, [ ])
|
||||
AC_DEFINE(HSREGEX,1,[ ])
|
||||
AC_DEFINE(REGEX,1,[ ])
|
||||
PHP_ADD_SOURCES(regex, regcomp.c regexec.c regerror.c regfree.c)
|
||||
elif test "$REGEX_TYPE" = "system"; then
|
||||
AC_DEFINE(REGEX,0,[ ])
|
||||
dnl Check if field re_magic exists in struct regex_t
|
||||
AC_CACHE_CHECK([whether field re_magic exists in struct regex_t], ac_cv_regex_t_re_magic, [
|
||||
AC_TRY_COMPILE([#include <sys/types.h>
|
||||
#include <regex.h>], [regex_t rt; rt.re_magic;],
|
||||
[ac_cv_regex_t_re_magic=yes], [ac_cv_regex_t_re_magic=no])
|
||||
])
|
||||
if test "$ac_cv_regex_t_re_magic" = "yes"; then
|
||||
AC_DEFINE([HAVE_REGEX_T_RE_MAGIC], [ ], 1)
|
||||
fi
|
||||
fi
|
||||
AC_MSG_CHECKING([which regex library to use])
|
||||
AC_MSG_RESULT([$REGEX_TYPE])
|
||||
])
|
||||
|
||||
dnl
|
||||
@@ -1186,6 +1218,10 @@ AC_DEFUN([PHP_SHARED_MODULE],[
|
||||
suffix=so
|
||||
link_cmd='ifelse($4,,[$(CC)],[$(CXX)]) -dynamic -flat_namespace -bundle -undefined suppress $(COMMON_FLAGS) $(CFLAGS_CLEAN) $(EXTRA_CFLAGS) $(LDFLAGS) -o [$]@ $(EXTRA_LDFLAGS) $($2) $(translit($1,a-z_-,A-Z__)_SHARED_LIBADD)'
|
||||
;;
|
||||
*netware*[)]
|
||||
suffix=nlm
|
||||
link_cmd='$(LIBTOOL) --mode=link ifelse($4,,[$(CC)],[$(CXX)]) $(COMMON_FLAGS) $(CFLAGS_CLEAN) $(EXTRA_CFLAGS) $(LDFLAGS) -o [$]@ -shared -export-dynamic -avoid-version -prefer-pic -module -rpath $(phplibdir) $(EXTRA_LDFLAGS) $($2) ifelse($1, php4lib, , -L$(top_builddir)/netware -lphp4lib) $(translit(ifelse($1, php4lib, $1, m4_substr($1, 3)),a-z_-,A-Z__)_SHARED_LIBADD)'
|
||||
;;
|
||||
*[)]
|
||||
suffix=la
|
||||
link_cmd='$(LIBTOOL) --mode=link ifelse($4,,[$(CC)],[$(CXX)]) $(COMMON_FLAGS) $(CFLAGS_CLEAN) $(EXTRA_CFLAGS) $(LDFLAGS) -o [$]@ -export-dynamic -avoid-version -prefer-pic -module -rpath $(phplibdir) $(EXTRA_LDFLAGS) $($2) $(translit($1,a-z_-,A-Z__)_SHARED_LIBADD)'
|
||||
@@ -1274,7 +1310,14 @@ dnl ---------------------------------------------- Static module
|
||||
if test "$3" = "shared" || test "$3" = "yes"; then
|
||||
dnl ---------------------------------------------- Shared module
|
||||
PHP_ADD_SOURCES_X(PHP_EXT_DIR($1),$2,$ac_extra,shared_objects_$1,yes)
|
||||
PHP_SHARED_MODULE($1,shared_objects_$1, $ext_builddir, $6)
|
||||
case $host_alias in
|
||||
*netware*)
|
||||
PHP_SHARED_MODULE(php$1,shared_objects_$1, $ext_builddir, $6)
|
||||
;;
|
||||
*)
|
||||
PHP_SHARED_MODULE($1,shared_objects_$1, $ext_builddir, $6)
|
||||
;;
|
||||
esac
|
||||
AC_DEFINE_UNQUOTED([COMPILE_DL_]translit($1,a-z_-,A-Z__), 1, Whether to build $1 as dynamic module)
|
||||
fi
|
||||
fi
|
||||
@@ -1684,6 +1727,10 @@ AC_DEFUN([PHP_SETUP_OPENSSL],[
|
||||
unset OPENSSL_INCDIR
|
||||
unset OPENSSL_LIBDIR
|
||||
|
||||
dnl Empty variable means 'no'
|
||||
test -z "$PHP_OPENSSL" && PHP_OPENSSL=no
|
||||
test -z "$PHP_IMAP_SSL" && PHP_IMAP_SSL=no
|
||||
|
||||
dnl Fallbacks for different configure options
|
||||
if test "$PHP_OPENSSL" != "no"; then
|
||||
PHP_OPENSSL_DIR=$PHP_OPENSSL
|
||||
|
||||
+6
-6
@@ -1,12 +1,12 @@
|
||||
# +----------------------------------------------------------------------+
|
||||
# | PHP Version 4 |
|
||||
# +----------------------------------------------------------------------+
|
||||
# | Copyright (c) 1997-2002 The PHP Group |
|
||||
# | Copyright (c) 1997-2006 The PHP Group |
|
||||
# +----------------------------------------------------------------------+
|
||||
# | This source file is subject to version 2.02 of the PHP license, |
|
||||
# | This source file is subject to version 3.01 of the PHP license, |
|
||||
# | that is bundled with this package in the file LICENSE, and is |
|
||||
# | available at through the world-wide-web at |
|
||||
# | http://www.php.net/license/2_02.txt. |
|
||||
# | available through the world-wide-web at the following url: |
|
||||
# | http://www.php.net/license/3_01.txt |
|
||||
# | If you did not receive a copy of the PHP license and are unable to |
|
||||
# | obtain it through the world-wide-web, please send a note to |
|
||||
# | license@php.net so we can mail you a copy immediately. |
|
||||
@@ -30,7 +30,7 @@ ALWAYS = generated_lists
|
||||
|
||||
|
||||
all: $(STAMP) $(ALWAYS)
|
||||
@$(MAKE) AMFLAGS=$(AMFLAGS) -s -f build/build2.mk
|
||||
@$(MAKE) -s -f build/build2.mk
|
||||
|
||||
generated_lists:
|
||||
@echo makefile_am_files = $(ZENDDIR)/Makefile.am \
|
||||
@@ -55,7 +55,7 @@ snapshot:
|
||||
test -d $$i || (test -d ../$$i && cp -rp ../$$i $$i); \
|
||||
done; \
|
||||
find . -type l -exec rm {} \; ; \
|
||||
$(MAKE) AMFLAGS=--copy -f build/build.mk; \
|
||||
$(MAKE) -f build/build.mk; \
|
||||
cd ..; \
|
||||
tar cf $$distname.tar $$distname; \
|
||||
rm -rf $$distname $$distname.tar.*; \
|
||||
|
||||
+10
-10
@@ -1,12 +1,12 @@
|
||||
# +----------------------------------------------------------------------+
|
||||
# | PHP Version 4 |
|
||||
# +----------------------------------------------------------------------+
|
||||
# | Copyright (c) 1997-2002 The PHP Group |
|
||||
# | Copyright (c) 1997-2006 The PHP Group |
|
||||
# +----------------------------------------------------------------------+
|
||||
# | This source file is subject to version 2.02 of the PHP license, |
|
||||
# | This source file is subject to version 3.01 of the PHP license, |
|
||||
# | that is bundled with this package in the file LICENSE, and is |
|
||||
# | available at through the world-wide-web at |
|
||||
# | http://www.php.net/license/2_02.txt. |
|
||||
# | available through the world-wide-web at the following url: |
|
||||
# | http://www.php.net/license/3_01.txt |
|
||||
# | If you did not receive a copy of the PHP license and are unable to |
|
||||
# | obtain it through the world-wide-web, please send a note to |
|
||||
# | license@php.net so we can mail you a copy immediately. |
|
||||
@@ -14,7 +14,7 @@
|
||||
# | Author: Sascha Schumann <sascha@schumann.cx> |
|
||||
# +----------------------------------------------------------------------+
|
||||
#
|
||||
# $Id$
|
||||
# $Id$
|
||||
#
|
||||
|
||||
include generated_lists
|
||||
@@ -23,15 +23,15 @@ TOUCH_FILES = mkinstalldirs install-sh missing
|
||||
|
||||
LT_TARGETS = ltmain.sh config.guess config.sub
|
||||
|
||||
makefile_in_files = $(makefile_am_files:.am=.in)
|
||||
makefile_files = $(makefile_am_files:e.am=e)
|
||||
|
||||
config_h_in = main/php_config.h.in
|
||||
|
||||
acconfig_h_SOURCES = acconfig.h.in $(config_h_files)
|
||||
|
||||
targets = $(TOUCH_FILES) configure $(config_h_in)
|
||||
|
||||
PHP_AUTOCONF ?= 'autoconf'
|
||||
PHP_AUTOHEADER ?= 'autoheader'
|
||||
|
||||
SUPPRESS_WARNINGS ?= 2>&1 | (egrep -v '(AC_TRY_RUN called without default to allow cross compiling|AC_PROG_CXXCPP was called before AC_PROG_CXX|defined in acinclude.m4 but never used|AC_PROG_LEX invoked multiple times|AC_DECL_YYTEXT is expanded from...|the top level)'||true)
|
||||
|
||||
all: $(targets)
|
||||
@@ -45,7 +45,7 @@ $(config_h_in): configure acconfig.h
|
||||
# correctly otherwise (timestamps are not updated)
|
||||
@echo rebuilding $@
|
||||
@rm -f $@
|
||||
autoheader $(SUPPRESS_WARNINGS)
|
||||
$(PHP_AUTOHEADER) $(SUPPRESS_WARNINGS)
|
||||
|
||||
$(TOUCH_FILES):
|
||||
touch $(TOUCH_FILES)
|
||||
@@ -56,5 +56,5 @@ aclocal.m4: configure.in acinclude.m4
|
||||
|
||||
configure: aclocal.m4 configure.in $(config_m4_files)
|
||||
@echo rebuilding $@
|
||||
autoconf $(SUPPRESS_WARNINGS)
|
||||
$(PHP_AUTOCONF) $(SUPPRESS_WARNINGS)
|
||||
|
||||
+14
-7
@@ -2,12 +2,12 @@
|
||||
# +----------------------------------------------------------------------+
|
||||
# | PHP Version 4 |
|
||||
# +----------------------------------------------------------------------+
|
||||
# | Copyright (c) 1997-2002 The PHP Group |
|
||||
# | Copyright (c) 1997-2006 The PHP Group |
|
||||
# +----------------------------------------------------------------------+
|
||||
# | This source file is subject to version 2.02 of the PHP license, |
|
||||
# | This source file is subject to version 3.01 of the PHP license, |
|
||||
# | that is bundled with this package in the file LICENSE, and is |
|
||||
# | available at through the world-wide-web at |
|
||||
# | http://www.php.net/license/2_02.txt. |
|
||||
# | available through the world-wide-web at the following url: |
|
||||
# | http://www.php.net/license/3_01.txt |
|
||||
# | If you did not receive a copy of the PHP license and are unable to |
|
||||
# | obtain it through the world-wide-web, please send a note to |
|
||||
# | license@php.net so we can mail you a copy immediately. |
|
||||
@@ -16,15 +16,20 @@
|
||||
# | Sascha Schumann <sascha@schumann.cx> |
|
||||
# +----------------------------------------------------------------------+
|
||||
#
|
||||
# $Id: buildcheck.sh,v 1.21.2.11 2005-01-20 01:43:18 sniper Exp $
|
||||
# $Id: buildcheck.sh,v 1.21.2.13.2.2 2006-01-01 13:46:49 sniper Exp $
|
||||
#
|
||||
|
||||
echo "buildconf: checking installation..."
|
||||
|
||||
stamp=$1
|
||||
|
||||
# Allow the autoconf executable to be overridden by $PHP_AUTOCONF.
|
||||
if test -z "$PHP_AUTOCONF"; then
|
||||
PHP_AUTOCONF='autoconf'
|
||||
fi
|
||||
|
||||
# autoconf 2.13 or newer
|
||||
ac_version=`autoconf --version 2>/dev/null|head -n 1|sed -e 's/^[^0-9]*//' -e 's/[a-z]* *$//'`
|
||||
ac_version=`$PHP_AUTOCONF --version 2>/dev/null|head -n 1|sed -e 's/^[^0-9]*//' -e 's/[a-z]* *$//'`
|
||||
if test -z "$ac_version"; then
|
||||
echo "buildconf: autoconf not found."
|
||||
echo " You need autoconf version 2.13 or newer installed"
|
||||
@@ -42,7 +47,9 @@ echo "buildconf: autoconf version $ac_version (ok)"
|
||||
fi
|
||||
|
||||
if test "$1" = "2" && test "$2" -ge "50"; then
|
||||
echo "buildconf: running cvsclean."
|
||||
echo "buildconf: Your version of autoconf likely contains buggy cache code."
|
||||
echo " Running cvsclean for you."
|
||||
echo " To avoid this, install autoconf-2.13."
|
||||
./cvsclean
|
||||
stamp=
|
||||
fi
|
||||
|
||||
Vendored
+15
@@ -3138,6 +3138,21 @@ AC_DEFUN([AC_LIBTOOL_PICMODE],
|
||||
pic_mode=ifelse($#,1,$1,default)])
|
||||
|
||||
|
||||
# AC_PROG_EGREP
|
||||
# -------------
|
||||
# This is predefined starting with Autoconf 2.54, so this conditional
|
||||
# definition can be removed once we require Autoconf 2.54 or later.
|
||||
ifdef([AC_PROG_EGREP], [], [AC_DEFUN([AC_PROG_EGREP],
|
||||
[AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep],
|
||||
[if echo a | (grep -E '(a|b)') >/dev/null 2>&1
|
||||
then ac_cv_prog_egrep='grep -E'
|
||||
else ac_cv_prog_egrep='egrep'
|
||||
fi])
|
||||
EGREP=$ac_cv_prog_egrep
|
||||
AC_SUBST([EGREP])
|
||||
])])
|
||||
|
||||
|
||||
# AC_PATH_TOOL_PREFIX - find a file program which can recognise shared library
|
||||
AC_DEFUN([AC_PATH_TOOL_PREFIX],
|
||||
[AC_MSG_CHECKING([for $1])
|
||||
|
||||
+4
-4
@@ -1,12 +1,12 @@
|
||||
# +----------------------------------------------------------------------+
|
||||
# | PHP Version 4 |
|
||||
# +----------------------------------------------------------------------+
|
||||
# | Copyright (c) 2000 The PHP Group |
|
||||
# | Copyright (c) 2000-2006 The PHP Group |
|
||||
# +----------------------------------------------------------------------+
|
||||
# | This source file is subject to version 2.02 of the PHP license, |
|
||||
# | This source file is subject to version 3.01 of the PHP license, |
|
||||
# | that is bundled with this package in the file LICENSE, and is |
|
||||
# | available at through the world-wide-web at |
|
||||
# | http://www.php.net/license/2_02.txt. |
|
||||
# | available through the world-wide-web at the following url: |
|
||||
# | http://www.php.net/license/3_01.txt |
|
||||
# | If you did not receive a copy of the PHP license and are unable to |
|
||||
# | obtain it through the world-wide-web, please send a note to |
|
||||
# | license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
+228
-151
@@ -1,12 +1,12 @@
|
||||
#!/bin/sh
|
||||
##
|
||||
## GNU shtool -- The GNU Portable Shell Tool
|
||||
## Copyright (c) 1994-2002 Ralf S. Engelschall <rse@engelschall.com>
|
||||
## Copyright (c) 1994-2005 Ralf S. Engelschall <rse@engelschall.com>
|
||||
##
|
||||
## See http://www.gnu.org/software/shtool/ for more information.
|
||||
## See ftp://ftp.gnu.org/gnu/shtool/ for latest version.
|
||||
##
|
||||
## Version: 1.6.2 (02-Nov-2002)
|
||||
## Version: 2.0.2 (15-Jun-2005)
|
||||
## Contents: 4/19 available modules
|
||||
##
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
## rotate Logfile rotation
|
||||
## tarball Roll distribution tarballs
|
||||
## subst Apply sed(1) substitution operations
|
||||
## guessos Simple operating system guesser
|
||||
## platform Platform Identification Utility
|
||||
## arx Extended archive command
|
||||
## slo Separate linker options by library class
|
||||
## scpp Sharing C Pre-Processor
|
||||
@@ -66,9 +66,9 @@ if [ $# -eq 0 ]; then
|
||||
echo "$0:Hint: run \`$0 -h' for usage" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
if [ ".$1" = ".-h" -o ".$1" = ".--help" ]; then
|
||||
echo "This is GNU shtool, version 1.6.2 (02-Nov-2002)"
|
||||
echo "Copyright (c) 1994-2002 Ralf S. Engelschall <rse@engelschall.com>"
|
||||
if [ ".$1" = ".-h" ] || [ ".$1" = ".--help" ]; then
|
||||
echo "This is GNU shtool, version 2.0.2 (15-Jun-2005)"
|
||||
echo "Copyright (c) 1994-2005 Ralf S. Engelschall <rse@engelschall.com>"
|
||||
echo "Report bugs to <bug-shtool@gnu.org>"
|
||||
echo ''
|
||||
echo "Usage: shtool [<options>] [<cmd-name> [<cmd-options>] [<cmd-args>]]"
|
||||
@@ -80,7 +80,7 @@ if [ ".$1" = ".-h" -o ".$1" = ".--help" ]; then
|
||||
echo ' -r, --recreate recreate this shtool script via shtoolize'
|
||||
echo ''
|
||||
echo 'Available <cmd-name> [<cmd-options>] [<cmd-args>]:'
|
||||
echo ' echo [-n|--newline] [-e|--expand] [<str> ...]'
|
||||
echo ' echo [-n|--newline] [-e|--expand] [<string> ...]'
|
||||
echo ' install [-v|--verbose] [-t|--trace] [-d|--mkdir] [-c|--copy]'
|
||||
echo ' [-C|--compare-copy] [-s|--strip] [-m|--mode <mode>]'
|
||||
echo ' [-o|--owner <owner>] [-g|--group <group>] [-e|--exec'
|
||||
@@ -106,17 +106,21 @@ if [ ".$1" = ".-h" -o ".$1" = ".--help" ]; then
|
||||
echo ' rotate [-v|--verbose] [-t|--trace] [-f|--force] [-n|--num-files'
|
||||
echo ' <count>] [-s|--size <size>] [-c|--copy] [-r|--remove]'
|
||||
echo ' [-a|--archive-dir <dir>] [-z|--compress [<tool>:]<level>]'
|
||||
echo ' [-b|--background] [-d|--delay] [-p|--pad <len>] [-o|--owner'
|
||||
echo ' <owner>] [-g|--group <group>] [-m|--mode <mode>] [-M|--migrate'
|
||||
echo ' [-b|--background] [-d|--delay] [-p|--pad <len>] [-m|--mode'
|
||||
echo ' <mode>] [-o|--owner <owner>] [-g|--group <group>] [-M|--migrate'
|
||||
echo ' <cmd>] [-P|--prolog <cmd>] [-E|--epilog <cmd>] <file> [...]'
|
||||
echo ' tarball [-t|--trace] [-v|--verbose] [-o|--output <tarball>]'
|
||||
echo ' [-c|--compress <prog>] [-d|--directory <dir>] [-u|--user'
|
||||
echo ' <user>] [-g|--group <group>] [-e|--exclude <pattern>]'
|
||||
echo ' <path> [<path> ...]'
|
||||
echo ' subst [-v|--verbose] [-t|--trace] [-n|--nop] [-s|--stealth]'
|
||||
echo ' [-i|--interactive] [-b|--backup <ext>] [-e|--exec <cmd>]'
|
||||
echo ' [-f|--file <cmd-file>] [<file>] [...]'
|
||||
echo ' guessos '
|
||||
echo ' subst [-v|--verbose] [-t|--trace] [-n|--nop] [-w|--warning]'
|
||||
echo ' [-q|--quiet] [-s|--stealth] [-i|--interactive] [-b|--backup'
|
||||
echo ' <ext>] [-e|--exec <cmd>] [-f|--file <cmd-file>] [<file>]'
|
||||
echo ' [...]'
|
||||
echo ' platform [-F|--format <format>] [-S|--sep <string>] [-C|--conc'
|
||||
echo ' <string>] [-L|--lower] [-U|--upper] [-v|--verbose]'
|
||||
echo ' [-c|--concise] [-n|--no-newline] [-t|--type <type>]'
|
||||
echo ' [-V|--version] [-h|--help]'
|
||||
echo ' arx [-t|--trace] [-C|--command <cmd>] <op> <archive> [<file>'
|
||||
echo ' ...]'
|
||||
echo ' slo [-p|--prefix <str>] -- -L<dir> -l<lib> [-L<dir> -l<lib>'
|
||||
@@ -131,15 +135,15 @@ if [ ".$1" = ".-h" -o ".$1" = ".--help" ]; then
|
||||
echo ''
|
||||
exit 0
|
||||
fi
|
||||
if [ ".$1" = ".-v" -o ".$1" = ."--version" ]; then
|
||||
echo "GNU shtool 1.6.2 (02-Nov-2002)"
|
||||
if [ ".$1" = ".-v" ] || [ ".$1" = ".--version" ]; then
|
||||
echo "GNU shtool 2.0.2 (15-Jun-2005)"
|
||||
exit 0
|
||||
fi
|
||||
if [ ".$1" = ".-r" -o ".$1" = ."--recreate" ]; then
|
||||
if [ ".$1" = ".-r" ] || [ ".$1" = ".--recreate" ]; then
|
||||
shtoolize -oshtool echo install mkdir path
|
||||
exit 0
|
||||
fi
|
||||
if [ ".$1" = ".-d" -o ".$1" = ."--debug" ]; then
|
||||
if [ ".$1" = ".-d" ] || [ ".$1" = ".--debug" ]; then
|
||||
shift
|
||||
set -x
|
||||
fi
|
||||
@@ -166,7 +170,7 @@ gen_tmpfile=no
|
||||
case $tool in
|
||||
echo )
|
||||
str_tool="echo"
|
||||
str_usage="[-n|--newline] [-e|--expand] [<str> ...]"
|
||||
str_usage="[-n|--newline] [-e|--expand] [<string> ...]"
|
||||
arg_spec="0+"
|
||||
opt_spec="n.e."
|
||||
opt_alias="n:newline,e:expand"
|
||||
@@ -261,7 +265,7 @@ eval `echo h.$opt_spec |\
|
||||
|
||||
# parse option alias string
|
||||
eval `echo h:help,$opt_alias |\
|
||||
tr 'x-' 'x_' | sed -e 's/\([a-zA-Z0-9]\):\([^,]*\),*/opt_ALIAS_\2=\1;/g'`
|
||||
sed -e 's/-/_/g' -e 's/\([a-zA-Z0-9]\):\([^,]*\),*/opt_ALIAS_\2=\1;/g'`
|
||||
|
||||
# interate over argument line
|
||||
opt_PREV=''
|
||||
@@ -286,12 +290,12 @@ while [ $# -gt 0 ]; do
|
||||
--[a-zA-Z0-9]*=*)
|
||||
eval `echo "x$1" |\
|
||||
sed -e 's/^x--\([a-zA-Z0-9-]*\)=\(.*\)$/opt_OPT="\1";opt_ARG="\2"/'`
|
||||
opt_STR=`echo $opt_OPT | tr 'x-' 'x_'`
|
||||
opt_STR=`echo $opt_OPT | sed -e 's/-/_/g'`
|
||||
eval "opt_OPT=\${opt_ALIAS_${opt_STR}-${opt_OPT}}"
|
||||
;;
|
||||
--[a-zA-Z0-9]*)
|
||||
opt_OPT=`echo "x$1" | cut -c4-`
|
||||
opt_STR=`echo $opt_OPT | tr 'x-' 'x_'`
|
||||
opt_STR=`echo $opt_OPT | sed -e 's/-/_/g'`
|
||||
eval "opt_OPT=\${opt_ALIAS_${opt_STR}-${opt_OPT}}"
|
||||
opt_ARG=''
|
||||
;;
|
||||
@@ -315,8 +319,8 @@ while [ $# -gt 0 ]; do
|
||||
|
||||
# determine whether option needs an argument
|
||||
eval "opt_MODE=\$opt_MODE_${opt_OPT}"
|
||||
if [ ".$opt_ARG" = . -a ".$opt_ARG_OK" != .yes ]; then
|
||||
if [ ".$opt_MODE" = ".:" -o ".$opt_MODE" = ".+" ]; then
|
||||
if [ ".$opt_ARG" = . ] && [ ".$opt_ARG_OK" != .yes ]; then
|
||||
if [ ".$opt_MODE" = ".:" ] || [ ".$opt_MODE" = ".+" ]; then
|
||||
opt_PREV="$opt_OPT"
|
||||
continue
|
||||
fi
|
||||
@@ -375,6 +379,7 @@ esac
|
||||
|
||||
# establish a temporary file on request
|
||||
if [ ".$gen_tmpfile" = .yes ]; then
|
||||
# create (explicitly) secure temporary directory
|
||||
if [ ".$TMPDIR" != . ]; then
|
||||
tmpdir="$TMPDIR"
|
||||
elif [ ".$TEMPDIR" != . ]; then
|
||||
@@ -382,12 +387,40 @@ if [ ".$gen_tmpfile" = .yes ]; then
|
||||
else
|
||||
tmpdir="/tmp"
|
||||
fi
|
||||
tmpfile="$tmpdir/.shtool.$$"
|
||||
rm -f $tmpfile >/dev/null 2>&1
|
||||
touch $tmpfile
|
||||
chmod 600 $tmpfile
|
||||
tmpdir="$tmpdir/.shtool.$$"
|
||||
( umask 077
|
||||
rm -rf "$tmpdir" >/dev/null 2>&1 || true
|
||||
mkdir "$tmpdir" >/dev/null 2>&1
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "$msgprefix:Error: failed to create temporary directory \`$tmpdir'" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
)
|
||||
|
||||
# create (implicitly) secure temporary file
|
||||
tmpfile="$tmpdir/shtool.tmp"
|
||||
touch "$tmpfile"
|
||||
fi
|
||||
|
||||
# utility function: map string to lower case
|
||||
util_lower () {
|
||||
echo "$1" | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'
|
||||
}
|
||||
|
||||
# utility function: map string to upper case
|
||||
util_upper () {
|
||||
echo "$1" | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
|
||||
}
|
||||
|
||||
# cleanup procedure
|
||||
shtool_exit () {
|
||||
rc="$1"
|
||||
if [ ".$gen_tmpfile" = .yes ]; then
|
||||
rm -rf "$tmpdir" >/dev/null 2>&1 || true
|
||||
fi
|
||||
exit $rc
|
||||
}
|
||||
|
||||
##
|
||||
## DISPATCH INTO SCRIPT BODY
|
||||
##
|
||||
@@ -397,12 +430,11 @@ case $tool in
|
||||
echo )
|
||||
##
|
||||
## echo -- Print string with optional construct expansion
|
||||
## Copyright (c) 1998-2002 Ralf S. Engelschall <rse@engelschall.com>
|
||||
## Originally written for WML as buildinfo
|
||||
## Copyright (c) 1998-2005 Ralf S. Engelschall <rse@engelschall.com>
|
||||
##
|
||||
|
||||
|
||||
text="$*"
|
||||
|
||||
|
||||
# check for broken escape sequence expansion
|
||||
seo=''
|
||||
bytes=`echo '\1' | wc -c | awk '{ printf("%s", $1); }'`
|
||||
@@ -412,18 +444,18 @@ echo )
|
||||
seo='-E'
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
# check for existing -n option (to suppress newline)
|
||||
minusn=''
|
||||
bytes=`echo -n 123 2>/dev/null | wc -c | awk '{ printf("%s", $1); }'`
|
||||
if [ ".$bytes" = .3 ]; then
|
||||
minusn='-n'
|
||||
fi
|
||||
|
||||
|
||||
# determine terminal bold sequence
|
||||
term_bold=''
|
||||
term_norm=''
|
||||
if [ ".$opt_e" = .yes -a ".`echo $text | egrep '%[Bb]'`" != . ]; then
|
||||
if [ ".$opt_e" = .yes ] && [ ".`echo $text | grep '%[Bb]'`" != . ]; then
|
||||
case $TERM in
|
||||
# for the most important terminal types we directly know the sequences
|
||||
xterm|xterm*|vt220|vt220*)
|
||||
@@ -459,96 +491,139 @@ echo )
|
||||
break
|
||||
fi
|
||||
done
|
||||
if [ ".$term_bold" != . -a ".$term_norm" != . ]; then
|
||||
if [ ".$term_bold" != . ] && [ ".$term_norm" != . ]; then
|
||||
break;
|
||||
fi
|
||||
done
|
||||
;;
|
||||
esac
|
||||
if [ ".$term_bold" = . -o ".$term_norm" = . ]; then
|
||||
if [ ".$term_bold" = . ] || [ ".$term_norm" = . ]; then
|
||||
echo "$msgprefix:Warning: unable to determine terminal sequence for bold mode" 1>&2
|
||||
term_bold=''
|
||||
term_norm=''
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
# determine user name
|
||||
username=''
|
||||
if [ ".$opt_e" = .yes -a ".`echo $text | egrep '%[uUgG]'`" != . ]; then
|
||||
username="$LOGNAME"
|
||||
if [ ".$opt_e" = .yes ] && [ ".`echo $text | grep '%[uUgG]'`" != . ]; then
|
||||
username="`(id -un) 2>/dev/null`"
|
||||
if [ ".$username" = . ]; then
|
||||
username="$USER"
|
||||
if [ ".$username" = . ]; then
|
||||
username="`(whoami) 2>/dev/null |\
|
||||
awk '{ printf("%s", $1); }'`"
|
||||
if [ ".$username" = . ]; then
|
||||
username="`(who am i) 2>/dev/null |\
|
||||
awk '{ printf("%s", $1); }'`"
|
||||
if [ ".$username" = . ]; then
|
||||
username='unknown'
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# determine user id
|
||||
userid=''
|
||||
if [ ".$opt_e" = .yes -a ".`echo $text | egrep '%U'`" != . ]; then
|
||||
userid="`(id -u) 2>/dev/null`"
|
||||
if [ ".$userid" = . ]; then
|
||||
str="`(id) 2>/dev/null`"
|
||||
if [ ".`echo $str | grep '^uid[ ]*=[ ]*[0-9]*('`" != . ]; then
|
||||
userid=`echo $str | sed -e 's/^uid[ ]*=[ ]*//' -e 's/(.*//'`
|
||||
username=`echo $str | sed -e 's/^uid[ ]*=[ ]*[0-9]*(//' -e 's/).*$//'`
|
||||
fi
|
||||
if [ ".$userid" = . ]; then
|
||||
userid=`egrep "^${username}:" /etc/passwd 2>/dev/null | \
|
||||
sed -e 's/[^:]*:[^:]*://' -e 's/:.*$//'`
|
||||
if [ ".$userid" = . ]; then
|
||||
userid=`(ypcat passwd) 2>/dev/null |
|
||||
egrep "^${username}:" | \
|
||||
sed -e 's/[^:]*:[^:]*://' -e 's/:.*$//'`
|
||||
if [ ".$userid" = . ]; then
|
||||
userid='?'
|
||||
if [ ".$username" = . ]; then
|
||||
username="$LOGNAME"
|
||||
if [ ".$username" = . ]; then
|
||||
username="$USER"
|
||||
if [ ".$username" = . ]; then
|
||||
username="`(whoami) 2>/dev/null |\
|
||||
awk '{ printf("%s", $1); }'`"
|
||||
if [ ".$username" = . ]; then
|
||||
username="`(who am i) 2>/dev/null |\
|
||||
awk '{ printf("%s", $1); }'`"
|
||||
if [ ".$username" = . ]; then
|
||||
username='unknown'
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
# determine user id
|
||||
userid=''
|
||||
if [ ".$opt_e" = .yes ] && [ ".`echo $text | grep '%U'`" != . ]; then
|
||||
userid="`(id -u) 2>/dev/null`"
|
||||
if [ ".$userid" = . ]; then
|
||||
userid="`(id -u ${username}) 2>/dev/null`"
|
||||
if [ ".$userid" = . ]; then
|
||||
str="`(id) 2>/dev/null`"
|
||||
if [ ".`echo $str | grep '^uid[ ]*=[ ]*[0-9]*('`" != . ]; then
|
||||
userid=`echo $str | sed -e 's/^uid[ ]*=[ ]*//' -e 's/(.*$//'`
|
||||
fi
|
||||
if [ ".$userid" = . ]; then
|
||||
userid=`(getent passwd ${username}) 2>/dev/null | \
|
||||
sed -e 's/[^:]*:[^:]*://' -e 's/:.*$//'`
|
||||
if [ ".$userid" = . ]; then
|
||||
userid=`grep "^${username}:" /etc/passwd 2>/dev/null | \
|
||||
sed -e 's/[^:]*:[^:]*://' -e 's/:.*$//'`
|
||||
if [ ".$userid" = . ]; then
|
||||
userid=`(ypcat passwd) 2>/dev/null |
|
||||
grep "^${username}:" | \
|
||||
sed -e 's/[^:]*:[^:]*://' -e 's/:.*$//'`
|
||||
if [ ".$userid" = . ]; then
|
||||
userid='?'
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# determine (primary) group id
|
||||
groupid=''
|
||||
if [ ".$opt_e" = .yes -a ".`echo $text | egrep '%[gG]'`" != . ]; then
|
||||
groupid=`egrep "^${username}:" /etc/passwd 2>/dev/null | \
|
||||
sed -e 's/[^:]*:[^:]*:[^:]*://' -e 's/:.*$//'`
|
||||
if [ ".$opt_e" = .yes ] && [ ".`echo $text | grep '%[gG]'`" != . ]; then
|
||||
groupid="`(id -g ${username}) 2>/dev/null`"
|
||||
if [ ".$groupid" = . ]; then
|
||||
groupid=`(ypcat passwd) 2>/dev/null | egrep "^${username}:" | \
|
||||
sed -e 's/[^:]*:[^:]*:[^:]*://' -e 's/:.*$//'`
|
||||
str="`(id) 2>/dev/null`"
|
||||
if [ ".`echo $str | grep 'gid[ ]*=[ ]*[0-9]*('`" != . ]; then
|
||||
groupid=`echo $str | sed -e 's/^.*gid[ ]*=[ ]*//' -e 's/(.*$//'`
|
||||
fi
|
||||
if [ ".$groupid" = . ]; then
|
||||
groupid='?'
|
||||
groupid=`(getent passwd ${username}) 2>/dev/null | \
|
||||
sed -e 's/[^:]*:[^:]*:[^:]*://' -e 's/:.*$//'`
|
||||
if [ ".$groupid" = . ]; then
|
||||
groupid=`grep "^${username}:" /etc/passwd 2>/dev/null | \
|
||||
sed -e 's/[^:]*:[^:]*:[^:]*://' -e 's/:.*$//'`
|
||||
if [ ".$groupid" = . ]; then
|
||||
groupid=`(ypcat passwd) 2>/dev/null | grep "^${username}:" | \
|
||||
sed -e 's/[^:]*:[^:]*:[^:]*://' -e 's/:.*$//'`
|
||||
if [ ".$groupid" = . ]; then
|
||||
groupid='?'
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
# determine (primary) group name
|
||||
groupname=''
|
||||
if [ ".$opt_e" = .yes -a ".`echo $text | egrep '%g'`" != . ]; then
|
||||
groupname=`egrep "^[^:]*:[^:]*:${groupid}:" /etc/group 2>/dev/null | \
|
||||
sed -e 's/:.*$//'`
|
||||
if [ ".$opt_e" = .yes ] && [ ".`echo $text | grep '%g'`" != . ]; then
|
||||
groupname="`(id -gn ${username}) 2>/dev/null`"
|
||||
if [ ".$groupname" = . ]; then
|
||||
groupname=`(ypcat group) 2>/dev/null | \
|
||||
egrep "^[^:]*:[^:]*:${groupid}:" | \
|
||||
sed -e 's/:.*$//'`
|
||||
str="`(id) 2>/dev/null`"
|
||||
if [ ".`echo $str | grep 'gid[ ]*=[ ]*[0-9]*('`" != . ]; then
|
||||
groupname=`echo $str | sed -e 's/^.*gid[ ]*=[ ]*[0-9]*(//' -e 's/).*$//'`
|
||||
fi
|
||||
if [ ".$groupname" = . ]; then
|
||||
groupname='?'
|
||||
groupname=`(getent group) 2>/dev/null | \
|
||||
grep "^[^:]*:[^:]*:${groupid}:" | \
|
||||
sed -e 's/:.*$//'`
|
||||
if [ ".$groupname" = . ]; then
|
||||
groupname=`grep "^[^:]*:[^:]*:${groupid}:" /etc/group 2>/dev/null | \
|
||||
sed -e 's/:.*$//'`
|
||||
if [ ".$groupname" = . ]; then
|
||||
groupname=`(ypcat group) 2>/dev/null | \
|
||||
grep "^[^:]*:[^:]*:${groupid}:" | \
|
||||
sed -e 's/:.*$//'`
|
||||
if [ ".$groupname" = . ]; then
|
||||
groupname='?'
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
# determine host and domain name
|
||||
hostname=''
|
||||
domainname=''
|
||||
if [ ".$opt_e" = .yes -a ".`echo $text | egrep '%h'`" != . ]; then
|
||||
if [ ".$opt_e" = .yes ] && [ ".`echo $text | grep '%h'`" != . ]; then
|
||||
hostname="`(uname -n) 2>/dev/null |\
|
||||
awk '{ printf("%s", $1); }'`"
|
||||
if [ ".$hostname" = . ]; then
|
||||
@@ -565,16 +640,16 @@ echo )
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
if [ ".$opt_e" = .yes -a ".`echo $text | egrep '%d'`" != . ]; then
|
||||
if [ ".$opt_e" = .yes ] && [ ".`echo $text | grep '%d'`" != . ]; then
|
||||
if [ ".$domainname" = . ]; then
|
||||
if [ -f /etc/resolv.conf ]; then
|
||||
domainname="`egrep '^[ ]*domain' /etc/resolv.conf | sed -e 'q' |\
|
||||
domainname="`grep '^[ ]*domain' /etc/resolv.conf | sed -e 'q' |\
|
||||
sed -e 's/.*domain//' \
|
||||
-e 's/^[ ]*//' -e 's/^ *//' -e 's/^ *//' \
|
||||
-e 's/^\.//' -e 's/^/./' |\
|
||||
awk '{ printf("%s", $1); }'`"
|
||||
if [ ".$domainname" = . ]; then
|
||||
domainname="`egrep '^[ ]*search' /etc/resolv.conf | sed -e 'q' |\
|
||||
domainname="`grep '^[ ]*search' /etc/resolv.conf | sed -e 'q' |\
|
||||
sed -e 's/.*search//' \
|
||||
-e 's/^[ ]*//' -e 's/^ *//' -e 's/^ *//' \
|
||||
-e 's/ .*//' -e 's/ .*//' \
|
||||
@@ -584,13 +659,13 @@ echo )
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
# determine current time
|
||||
time_day=''
|
||||
time_month=''
|
||||
time_year=''
|
||||
time_monthname=''
|
||||
if [ ".$opt_e" = .yes -a ".`echo $text | egrep '%[DMYm]'`" != . ]; then
|
||||
if [ ".$opt_e" = .yes ] && [ ".`echo $text | grep '%[DMYm]'`" != . ]; then
|
||||
time_day=`date '+%d'`
|
||||
time_month=`date '+%m'`
|
||||
time_year=`date '+%Y' 2>/dev/null`
|
||||
@@ -616,7 +691,7 @@ echo )
|
||||
12) time_monthname='Dec' ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
|
||||
# expand special ``%x'' constructs
|
||||
if [ ".$opt_e" = .yes ]; then
|
||||
text=`echo $seo "$text" |\
|
||||
@@ -633,7 +708,7 @@ echo )
|
||||
-e "s/%Y/${time_year}/g" \
|
||||
-e "s/%m/${time_monthname}/g" 2>/dev/null`
|
||||
fi
|
||||
|
||||
|
||||
# create output
|
||||
if [ .$opt_n = .no ]; then
|
||||
echo $seo "$text"
|
||||
@@ -646,15 +721,16 @@ echo )
|
||||
echo dummy | awk '{ printf("%s", TEXT); }' TEXT="$text"
|
||||
fi
|
||||
fi
|
||||
|
||||
shtool_exit 0
|
||||
;;
|
||||
|
||||
install )
|
||||
##
|
||||
## install -- Install a program, script or datafile
|
||||
## Copyright (c) 1997-2002 Ralf S. Engelschall <rse@engelschall.com>
|
||||
## Originally written for shtool
|
||||
## Copyright (c) 1997-2005 Ralf S. Engelschall <rse@engelschall.com>
|
||||
##
|
||||
|
||||
|
||||
# special case: "shtool install -d <dir> [...]" internally
|
||||
# maps to "shtool mkdir -f -p -m 755 <dir> [...]"
|
||||
if [ "$opt_d" = yes ]; then
|
||||
@@ -672,11 +748,11 @@ install )
|
||||
cmd="$cmd -t"
|
||||
fi
|
||||
for dir in "$@"; do
|
||||
eval "$cmd $dir" || exit $?
|
||||
eval "$cmd $dir" || shtool_exit $?
|
||||
done
|
||||
exit 0
|
||||
shtool_exit 0
|
||||
fi
|
||||
|
||||
|
||||
# determine source(s) and destination
|
||||
argc=$#
|
||||
srcs=""
|
||||
@@ -685,30 +761,30 @@ install )
|
||||
shift
|
||||
done
|
||||
dstpath="$1"
|
||||
|
||||
|
||||
# type check for destination
|
||||
dstisdir=0
|
||||
if [ -d $dstpath ]; then
|
||||
dstpath=`echo "$dstpath" | sed -e 's:/$::'`
|
||||
dstisdir=1
|
||||
fi
|
||||
|
||||
|
||||
# consistency check for destination
|
||||
if [ $argc -gt 2 -a $dstisdir = 0 ]; then
|
||||
if [ $argc -gt 2 ] && [ $dstisdir = 0 ]; then
|
||||
echo "$msgprefix:Error: multiple sources require destination to be directory" 1>&2
|
||||
exit 1
|
||||
shtool_exit 1
|
||||
fi
|
||||
|
||||
|
||||
# iterate over all source(s)
|
||||
for src in $srcs; do
|
||||
dst=$dstpath
|
||||
|
||||
|
||||
# if destination is a directory, append the input filename
|
||||
if [ $dstisdir = 1 ]; then
|
||||
dstfile=`echo "$src" | sed -e 's;.*/\([^/]*\)$;\1;'`
|
||||
dst="$dst/$dstfile"
|
||||
fi
|
||||
|
||||
|
||||
# check for correct arguments
|
||||
if [ ".$src" = ".$dst" ]; then
|
||||
echo "$msgprefix:Warning: source and destination are the same - skipped" 1>&2
|
||||
@@ -718,17 +794,17 @@ install )
|
||||
echo "$msgprefix:Warning: source \`$src' is a directory - skipped" 1>&2
|
||||
continue
|
||||
fi
|
||||
|
||||
|
||||
# make a temp file name in the destination directory
|
||||
dsttmp=`echo $dst |\
|
||||
sed -e 's;[^/]*$;;' -e 's;\(.\)/$;\1;' -e 's;^$;.;' \
|
||||
-e "s;\$;/#INST@$$#;"`
|
||||
|
||||
|
||||
# verbosity
|
||||
if [ ".$opt_v" = .yes ]; then
|
||||
echo "$src -> $dst" 1>&2
|
||||
fi
|
||||
|
||||
|
||||
# copy or move the file name to the temp name
|
||||
# (because we might be not allowed to change the source)
|
||||
if [ ".$opt_C" = .yes ]; then
|
||||
@@ -738,14 +814,14 @@ install )
|
||||
if [ ".$opt_t" = .yes ]; then
|
||||
echo "cp $src $dsttmp" 1>&2
|
||||
fi
|
||||
cp $src $dsttmp || exit $?
|
||||
cp $src $dsttmp || shtool_exit $?
|
||||
else
|
||||
if [ ".$opt_t" = .yes ]; then
|
||||
echo "mv $src $dsttmp" 1>&2
|
||||
fi
|
||||
mv $src $dsttmp || exit $?
|
||||
mv $src $dsttmp || shtool_exit $?
|
||||
fi
|
||||
|
||||
|
||||
# adjust the target file
|
||||
if [ ".$opt_e" != . ]; then
|
||||
sed='sed'
|
||||
@@ -755,34 +831,35 @@ install )
|
||||
sed="$sed -e '$e'"
|
||||
done
|
||||
cp $dsttmp $dsttmp.old
|
||||
eval "$sed <$dsttmp.old >$dsttmp" || exit $?
|
||||
chmod u+w $dsttmp
|
||||
eval "$sed <$dsttmp.old >$dsttmp" || shtool_exit $?
|
||||
rm -f $dsttmp.old
|
||||
fi
|
||||
if [ ".$opt_s" = .yes ]; then
|
||||
if [ ".$opt_t" = .yes ]; then
|
||||
echo "strip $dsttmp" 1>&2
|
||||
fi
|
||||
strip $dsttmp || exit $?
|
||||
strip $dsttmp || shtool_exit $?
|
||||
fi
|
||||
if [ ".$opt_o" != . ]; then
|
||||
if [ ".$opt_t" = .yes ]; then
|
||||
echo "chown $opt_o $dsttmp" 1>&2
|
||||
fi
|
||||
chown $opt_o $dsttmp || exit $?
|
||||
chown $opt_o $dsttmp || shtool_exit $?
|
||||
fi
|
||||
if [ ".$opt_g" != . ]; then
|
||||
if [ ".$opt_t" = .yes ]; then
|
||||
echo "chgrp $opt_g $dsttmp" 1>&2
|
||||
fi
|
||||
chgrp $opt_g $dsttmp || exit $?
|
||||
chgrp $opt_g $dsttmp || shtool_exit $?
|
||||
fi
|
||||
if [ ".$opt_m" != ".-" ]; then
|
||||
if [ ".$opt_t" = .yes ]; then
|
||||
echo "chmod $opt_m $dsttmp" 1>&2
|
||||
fi
|
||||
chmod $opt_m $dsttmp || exit $?
|
||||
chmod $opt_m $dsttmp || shtool_exit $?
|
||||
fi
|
||||
|
||||
|
||||
# determine whether to do a quick install
|
||||
# (has to be done _after_ the strip was already done)
|
||||
quick=no
|
||||
@@ -793,7 +870,7 @@ install )
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
# finally, install the file to the real destination
|
||||
if [ $quick = yes ]; then
|
||||
if [ ".$opt_t" = .yes ]; then
|
||||
@@ -807,21 +884,21 @@ install )
|
||||
rm -f $dst && mv $dsttmp $dst
|
||||
fi
|
||||
done
|
||||
|
||||
shtool_exit 0
|
||||
;;
|
||||
|
||||
mkdir )
|
||||
##
|
||||
## mkdir -- Make one or more directories
|
||||
## Copyright (c) 1996-2002 Ralf S. Engelschall <rse@engelschall.com>
|
||||
## Originally written for public domain by Noah Friedman <friedman@prep.ai.mit.edu>
|
||||
## Cleaned up and enhanced for shtool
|
||||
## Copyright (c) 1996-2005 Ralf S. Engelschall <rse@engelschall.com>
|
||||
##
|
||||
|
||||
|
||||
errstatus=0
|
||||
for p in ${1+"$@"}; do
|
||||
# if the directory already exists...
|
||||
if [ -d "$p" ]; then
|
||||
if [ ".$opt_f" = .no -a ".$opt_p" = .no ]; then
|
||||
if [ ".$opt_f" = .no ] && [ ".$opt_p" = .no ]; then
|
||||
echo "$msgprefix:Error: directory already exists: $p" 1>&2
|
||||
errstatus=1
|
||||
break
|
||||
@@ -895,32 +972,32 @@ mkdir )
|
||||
done
|
||||
fi
|
||||
done
|
||||
exit $errstatus
|
||||
|
||||
shtool_exit $errstatus
|
||||
;;
|
||||
|
||||
path )
|
||||
##
|
||||
## path -- Deal with program paths
|
||||
## Copyright (c) 1998-2002 Ralf S. Engelschall <rse@engelschall.com>
|
||||
## Originally written for Apache
|
||||
## Copyright (c) 1998-2005 Ralf S. Engelschall <rse@engelschall.com>
|
||||
##
|
||||
|
||||
|
||||
namelist="$*"
|
||||
|
||||
|
||||
# check whether the test command supports the -x option
|
||||
if [ -x /bin/sh ] 2>/dev/null; then
|
||||
minusx="-x"
|
||||
else
|
||||
minusx="-r"
|
||||
fi
|
||||
|
||||
|
||||
# split path string
|
||||
paths="`echo $opt_p |\
|
||||
sed -e 's/^:/.:/' \
|
||||
-e 's/::/:.:/g' \
|
||||
-e 's/:$/:./' \
|
||||
-e 's/:/ /g'`"
|
||||
|
||||
|
||||
# SPECIAL REQUEST
|
||||
# translate forward to reverse path
|
||||
if [ ".$opt_r" = .yes ]; then
|
||||
@@ -933,25 +1010,25 @@ path )
|
||||
done
|
||||
fi
|
||||
echo $rp | sed -e 's:/$::'
|
||||
exit 0
|
||||
shtool_exit 0
|
||||
fi
|
||||
|
||||
|
||||
# SPECIAL REQUEST
|
||||
# strip out directory or base name
|
||||
if [ ".$opt_d" = .yes ]; then
|
||||
echo "$namelist" |\
|
||||
sed -e 's;[^/]*$;;' -e 's;\(.\)/$;\1;'
|
||||
exit 0
|
||||
shtool_exit 0
|
||||
fi
|
||||
if [ ".$opt_b" = .yes ]; then
|
||||
echo "$namelist" |\
|
||||
sed -e 's;.*/\([^/]*\)$;\1;'
|
||||
exit 0
|
||||
shtool_exit 0
|
||||
fi
|
||||
|
||||
|
||||
# MAGIC SITUATION
|
||||
# Perl Interpreter (perl)
|
||||
if [ ".$opt_m" = .yes -a ".$namelist" = .perl ]; then
|
||||
if [ ".$opt_m" = .yes ] && [ ".$namelist" = .perl ]; then
|
||||
rm -f $tmpfile >/dev/null 2>&1
|
||||
touch $tmpfile
|
||||
found=0
|
||||
@@ -960,7 +1037,7 @@ path )
|
||||
dir=`echo $dir | sed -e 's;/*$;;'`
|
||||
nc=99
|
||||
for name in perl perl5 miniperl; do
|
||||
if [ $minusx "$dir/$name" -a ! -d "$dir/$name" ]; then
|
||||
if [ $minusx "$dir/$name" ] && [ ! -d "$dir/$name" ]; then
|
||||
perl="$dir/$name"
|
||||
pv=`$perl -e 'printf("%.3f", $]);'`
|
||||
echo "$pv:$pc:$nc:$perl" >>$tmpfile
|
||||
@@ -974,15 +1051,15 @@ path )
|
||||
perl="`cat $tmpfile | sort -r -u | sed -e 'q' | cut -d: -f4`"
|
||||
rm -f $tmpfile >/dev/null 2>&1
|
||||
echo "$perl"
|
||||
exit 0
|
||||
shtool_exit 0
|
||||
fi
|
||||
rm -f $tmpfile >/dev/null 2>&1
|
||||
exit 1
|
||||
shtool_exit 1
|
||||
fi
|
||||
|
||||
|
||||
# MAGIC SITUATION
|
||||
# C pre-processor (cpp)
|
||||
if [ ".$opt_m" = .yes -a ".$namelist" = .cpp ]; then
|
||||
if [ ".$opt_m" = .yes ] && [ ".$namelist" = .cpp ]; then
|
||||
echo >$tmpfile.c "#include <assert.h>"
|
||||
echo >>$tmpfile.c "Syntax Error"
|
||||
# 1. try the standard cc -E approach
|
||||
@@ -998,7 +1075,7 @@ path )
|
||||
# 3. try a standalone cpp command in path and lib dirs
|
||||
for path in $paths /lib /usr/lib /usr/local/lib; do
|
||||
path=`echo $path | sed -e 's;/*$;;'`
|
||||
if [ $minusx "$path/cpp" -a ! -d "$path/cpp" ]; then
|
||||
if [ $minusx "$path/cpp" ] && [ ! -d "$path/cpp" ]; then
|
||||
cpp="$path/cpp"
|
||||
break
|
||||
fi
|
||||
@@ -1017,30 +1094,30 @@ path )
|
||||
rm -f $tmpfile.c $tmpfile.out >/dev/null 2>&1
|
||||
if [ ".$cpp" != . ]; then
|
||||
echo "$cpp"
|
||||
exit 0
|
||||
shtool_exit 0
|
||||
fi
|
||||
exit 1
|
||||
shtool_exit 1
|
||||
fi
|
||||
|
||||
|
||||
# STANDARD SITUATION
|
||||
# iterate over names
|
||||
for name in $namelist; do
|
||||
# iterate over paths
|
||||
for path in $paths; do
|
||||
path=`echo $path | sed -e 's;/*$;;'`
|
||||
if [ $minusx "$path/$name" -a ! -d "$path/$name" ]; then
|
||||
if [ $minusx "$path/$name" ] && [ ! -d "$path/$name" ]; then
|
||||
if [ ".$opt_s" != .yes ]; then
|
||||
echo "$path/$name"
|
||||
fi
|
||||
exit 0
|
||||
shtool_exit 0
|
||||
fi
|
||||
done
|
||||
done
|
||||
exit 1
|
||||
|
||||
shtool_exit 1
|
||||
;;
|
||||
|
||||
esac
|
||||
|
||||
exit 0
|
||||
shtool_exit 0
|
||||
|
||||
##EOF##
|
||||
@@ -15,10 +15,6 @@ devok=0
|
||||
debug=no
|
||||
|
||||
while test $# -gt 0; do
|
||||
if test "$1" = "--copy"; then
|
||||
automake_flags=--copy
|
||||
fi
|
||||
|
||||
if test "$1" = "--force"; then
|
||||
devok=1
|
||||
echo "Forcing buildconf"
|
||||
@@ -67,7 +63,7 @@ fi
|
||||
rm -f generated_lists
|
||||
|
||||
if test "$debug" = "yes"; then
|
||||
${MAKE:-make} -s -f build/build.mk AMFLAGS="$automake_flags" ZENDDIR="$ZENDDIR" SUPPRESS_WARNINGS=""
|
||||
${MAKE:-make} -s -f build/build.mk ZENDDIR="$ZENDDIR" SUPPRESS_WARNINGS=""
|
||||
else
|
||||
${MAKE:-make} -s -f build/build.mk AMFLAGS="$automake_flags" ZENDDIR="$ZENDDIR"
|
||||
${MAKE:-make} -s -f build/build.mk ZENDDIR="$ZENDDIR"
|
||||
fi
|
||||
+64
-11
@@ -31,16 +31,13 @@ AC_PREREQ(2.13)
|
||||
AC_INIT(README.CVS-RULES)
|
||||
|
||||
PHP_CONFIG_NICE(config.nice)
|
||||
for arg in $0 "$@"; do
|
||||
CONFIGURE_COMMAND="$CONFIGURE_COMMAND '$arg'"
|
||||
done
|
||||
|
||||
PHP_CANONICAL_HOST
|
||||
AC_CONFIG_HEADER(main/php_config.h)
|
||||
|
||||
MAJOR_VERSION=4
|
||||
MINOR_VERSION=3
|
||||
RELEASE_VERSION=11
|
||||
MINOR_VERSION=4
|
||||
RELEASE_VERSION=6
|
||||
EXTRA_VERSION=""
|
||||
VERSION="$MAJOR_VERSION.$MINOR_VERSION.$RELEASE_VERSION$EXTRA_VERSION"
|
||||
|
||||
@@ -180,6 +177,17 @@ PHP_C_BIGENDIAN
|
||||
dnl Platform-specific compile settings.
|
||||
dnl -------------------------------------------------------------------------
|
||||
|
||||
dnl See bug #28605
|
||||
case $host_cpu in
|
||||
alpha*)
|
||||
if test "$GCC" = "yes"; then
|
||||
CFLAGS="$CFLAGS -mieee"
|
||||
else
|
||||
CFLAGS="$CFLAGS -ieee"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
case $host_alias in
|
||||
*solaris*)
|
||||
CPPFLAGS="$CPPFLAGS -D_POSIX_PTHREAD_SEMANTICS"
|
||||
@@ -203,6 +211,15 @@ case $host_alias in
|
||||
CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE_EXTENDED"
|
||||
fi
|
||||
;;
|
||||
*netware*)
|
||||
PHP_BUILD_PROGRAM
|
||||
PHP_ADD_SOURCES(/main, internal_functions.c,,PHP_GLOBAL_OBJS)
|
||||
PHP_ADD_SOURCES(win32, sendmail.c, -I$CFLAGS, PHP_GLOBAL_OBJS)
|
||||
PHP4LIB_SHARED_LIBADD=\$\(EXTRA_LIBS\)
|
||||
EXTENSION_DIR=sys:/php$MAJOR_VERSION/ext
|
||||
PHP_SUBST(PHP4LIB_SHARED_LIBADD)
|
||||
PHP_SHARED_MODULE(php4lib, PHP_GLOBAL_OBJS, netware)
|
||||
;;
|
||||
esac
|
||||
|
||||
# Disable PIC mode by default where it is known to be safe to do so,
|
||||
@@ -425,6 +442,12 @@ PHP_TM_GMTOFF
|
||||
PHP_STRUCT_FLOCK
|
||||
PHP_SOCKLEN_T
|
||||
|
||||
AC_CHECK_SIZEOF(intmax_t, 0)
|
||||
AC_CHECK_SIZEOF(size_t, 8)
|
||||
AC_CHECK_SIZEOF(ssize_t, 8)
|
||||
AC_CHECK_SIZEOF(ptrdiff_t, 8)
|
||||
AC_CHECK_SIZEOF(long long, 8)
|
||||
AC_CHECK_SIZEOF(long long int, 8)
|
||||
AC_CHECK_SIZEOF(long, 8)
|
||||
AC_CHECK_SIZEOF(int, 4)
|
||||
|
||||
@@ -1022,6 +1045,15 @@ if test -z "$EXTENSION_DIR"; then
|
||||
fi
|
||||
fi
|
||||
|
||||
case $PHP_LAYOUT in
|
||||
GNU)
|
||||
datarootdir=$prefix/share
|
||||
;;
|
||||
*)
|
||||
datarootdir=$prefix/php
|
||||
;;
|
||||
esac
|
||||
|
||||
dnl Expand all directory names for use in macros/constants
|
||||
EXPANDED_PEAR_INSTALLDIR=`eval echo $PEAR_INSTALLDIR`
|
||||
EXPANDED_EXTENSION_DIR=`eval echo $EXTENSION_DIR`
|
||||
@@ -1065,10 +1097,20 @@ EXTRA_LDFLAGS_PROGRAM="$EXTRA_LDFLAGS_PROGRAM $PHP_LDFLAGS"
|
||||
|
||||
PHP_BUILD_DATE=`date '+%Y-%m-%d'`
|
||||
AC_DEFINE_UNQUOTED(PHP_BUILD_DATE,"$PHP_BUILD_DATE",[PHP build date])
|
||||
PHP_UNAME=`uname -a | xargs`
|
||||
AC_DEFINE_UNQUOTED(PHP_UNAME,"$PHP_UNAME",[uname -a output])
|
||||
PHP_OS=`uname | xargs`
|
||||
AC_DEFINE_UNQUOTED(PHP_OS,"$PHP_OS",[uname output])
|
||||
case $host_alias in
|
||||
*netware*)
|
||||
PHP_OS="NetWare"
|
||||
PHP_UNAME="NetWare"
|
||||
AC_DEFINE_UNQUOTED(PHP_OS,"$PHP_OS",[hardcode for each of the cross compiler host])
|
||||
AC_DEFINE_UNQUOTED(PHP_UNAME,"$PHP_UNAME",[hardcode for each of the cross compiler host])
|
||||
;;
|
||||
*)
|
||||
PHP_UNAME=`uname -a | xargs`
|
||||
AC_DEFINE_UNQUOTED(PHP_UNAME,"$PHP_UNAME",[uname -a output])
|
||||
PHP_OS=`uname | xargs`
|
||||
AC_DEFINE_UNQUOTED(PHP_OS,"$PHP_OS",[uname output])
|
||||
;;
|
||||
esac
|
||||
|
||||
if test "$disable_cli" != "1"; then
|
||||
PHP_CLI_TARGET="\$(SAPI_CLI_PATH)"
|
||||
@@ -1102,6 +1144,7 @@ PHP_SUBST(phptempdir)
|
||||
PHP_SUBST(prefix)
|
||||
PHP_SUBST(localstatedir)
|
||||
PHP_SUBST(datadir)
|
||||
PHP_SUBST(datarootdir)
|
||||
PHP_SUBST(sysconfdir)
|
||||
|
||||
PHP_SUBST(AWK)
|
||||
@@ -1226,7 +1269,15 @@ PHP_ADD_SOURCES(main, main.c snprintf.c spprintf.c php_sprintf.c \
|
||||
streams.c network.c php_open_temporary_file.c php_logos.c \
|
||||
output.c memory_streams.c user_streams.c)
|
||||
PHP_ADD_SOURCES(/main, internal_functions.c,, sapi)
|
||||
PHP_ADD_SOURCES(/main, internal_functions_cli.c,, cli)
|
||||
case $host_alias in
|
||||
*netware*)
|
||||
PHP_ADD_BUILD_DIR(win32)
|
||||
PHP_ADD_BUILD_DIR(netware)
|
||||
;;
|
||||
*)
|
||||
PHP_ADD_SOURCES(/main, internal_functions_cli.c,, cli)
|
||||
;;
|
||||
esac
|
||||
|
||||
PHP_ADD_SOURCES(/Zend, zend_language_parser.c zend_language_scanner.c \
|
||||
zend_ini_parser.c zend_ini_scanner.c)
|
||||
@@ -1269,9 +1320,11 @@ AC_DEFINE([HAVE_BUILD_DEFS_H], 1, [ ])
|
||||
|
||||
$php_shtool mkdir -p pear/scripts
|
||||
$php_shtool mkdir -p scripts
|
||||
$php_shtool mkdir -p scripts/man1
|
||||
|
||||
ALL_OUTPUT_FILES="php4.spec main/build-defs.h \
|
||||
scripts/phpize scripts/php-config \
|
||||
scripts/phpize scripts/man1/phpize.1 \
|
||||
scripts/php-config scripts/man1/php-config.1 \
|
||||
$PHP_OUTPUT_FILES"
|
||||
|
||||
AC_OUTPUT($ALL_OUTPUT_FILES, [], [
|
||||
|
||||
+4
-4
@@ -2,12 +2,12 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
#if PHP_WIN32
|
||||
#include "../../../../main/config.w32.h"
|
||||
#elif defined(NETWARE)
|
||||
#include "config.nw.h"
|
||||
#else
|
||||
#include <php_config.h>
|
||||
#endif
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
+44
-50
@@ -2,12 +2,12 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP version 4.0 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
@@ -40,9 +40,6 @@
|
||||
#define PHP_BZ_ERRSTR 1
|
||||
#define PHP_BZ_ERRBOTH 2
|
||||
|
||||
/* Blocksize of the decompression buffer */
|
||||
#define PHP_BZ_DECOMPRESS_SIZE 4096
|
||||
|
||||
function_entry bz2_functions[] = {
|
||||
PHP_FE(bzopen, NULL)
|
||||
PHP_FE(bzread, NULL)
|
||||
@@ -272,7 +269,7 @@ PHP_FUNCTION(bzread)
|
||||
|
||||
php_stream_from_zval(stream, &bz);
|
||||
|
||||
if (len < 0) {
|
||||
if ((len + 1) < 1) {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "length may not be negative");
|
||||
RETURN_FALSE;
|
||||
}
|
||||
@@ -434,56 +431,53 @@ PHP_FUNCTION(bzcompress)
|
||||
Decompresses BZip2 compressed data */
|
||||
PHP_FUNCTION(bzdecompress)
|
||||
{
|
||||
zval **source, /* Source data to decompress */
|
||||
**zsmall; /* (Optional) user specified small */
|
||||
char *dest; /* Destination buffer, initially allocated */
|
||||
int error, /* Error container */
|
||||
iter = 1, /* Iteration count for the compression loop */
|
||||
size, /* Current size to realloc the dest buffer to */
|
||||
dest_len = PHP_BZ_DECOMPRESS_SIZE, /* Size of the destination length */
|
||||
small = 0, /* The actual small */
|
||||
argc = ZEND_NUM_ARGS(); /* Argument count */
|
||||
|
||||
if (argc < 1 || argc > 2 || zend_get_parameters_ex(argc, &source, &zsmall) == FAILURE) {
|
||||
WRONG_PARAM_COUNT;
|
||||
char *source, *dest;
|
||||
int source_len, error;
|
||||
long small = 0;
|
||||
#if defined(PHP_WIN32) && _MSC_VER < 1300
|
||||
unsigned __int64 size = 0;
|
||||
#else
|
||||
unsigned long long size = 0;
|
||||
#endif
|
||||
bz_stream bzs;
|
||||
|
||||
if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|l", &source, &source_len, &small)) {
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
convert_to_string_ex(source);
|
||||
|
||||
/* optional small argument handling */
|
||||
if (argc > 1) {
|
||||
convert_to_long_ex(zsmall);
|
||||
small = Z_LVAL_PP(zsmall);
|
||||
bzs.bzalloc = NULL;
|
||||
bzs.bzfree = NULL;
|
||||
|
||||
if (BZ2_bzDecompressInit(&bzs, 0, small) != BZ_OK) {
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
/* Depending on the size of the source buffer, either allocate
|
||||
the length of the source buffer or the a default decompression
|
||||
size */
|
||||
dest = emalloc(PHP_BZ_DECOMPRESS_SIZE > Z_STRLEN_PP(source) ? PHP_BZ_DECOMPRESS_SIZE : Z_STRLEN_PP(source));
|
||||
bzs.next_in = source;
|
||||
bzs.avail_in = source_len;
|
||||
|
||||
/* (de)Compression Loop */
|
||||
do {
|
||||
/* Handle the (re)allocation of the buffer */
|
||||
size = dest_len * iter;
|
||||
if (iter > 1) {
|
||||
dest = erealloc(dest, size);
|
||||
}
|
||||
++iter;
|
||||
|
||||
/* Perform the decompression */
|
||||
error = BZ2_bzBuffToBuffDecompress(dest, &size, Z_STRVAL_PP(source), Z_STRLEN_PP(source), small, 0);
|
||||
} while (error == BZ_OUTBUFF_FULL);
|
||||
/* in most cases bz2 offers at least 2:1 compression, so we use that as our base */
|
||||
bzs.avail_out = source_len * 2;
|
||||
bzs.next_out = dest = emalloc(bzs.avail_out + 1);
|
||||
|
||||
if (error != BZ_OK) {
|
||||
efree(dest);
|
||||
RETURN_LONG(error);
|
||||
} else {
|
||||
/* we might have allocated a little to much, so erealloc the buffer
|
||||
down to size, before returning it */
|
||||
while ((error = BZ2_bzDecompress(&bzs)) == BZ_OK && bzs.avail_in > 0) {
|
||||
/* compression is better then 2:1, need to allocate more memory */
|
||||
bzs.avail_out = source_len;
|
||||
size = (bzs.total_out_hi32 * (unsigned int) -1) + bzs.total_out_lo32;
|
||||
dest = erealloc(dest, size + bzs.avail_out + 1);
|
||||
bzs.next_out = dest + size;
|
||||
}
|
||||
|
||||
if (error == BZ_STREAM_END || error == BZ_OK) {
|
||||
size = (bzs.total_out_hi32 * (unsigned int) -1) + bzs.total_out_lo32;
|
||||
dest = erealloc(dest, size + 1);
|
||||
dest[size] = 0;
|
||||
RETURN_STRINGL(dest, size, 0);
|
||||
dest[size] = '\0';
|
||||
RETVAL_STRINGL(dest, size, 0);
|
||||
} else { /* real error */
|
||||
efree(dest);
|
||||
RETVAL_LONG(error);
|
||||
}
|
||||
|
||||
BZ2_bzDecompressEnd(&bzs);
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
||||
+4
-4
@@ -2,12 +2,12 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
+307
-305
@@ -2,19 +2,19 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
+----------------------------------------------------------------------+
|
||||
| Authors: Shane Caraveo <shane@caraveo.com> |
|
||||
| Colin Viebrock <colin@easydns.com> |
|
||||
| Hartmut Holzgraefe <hartmut@six.de> |
|
||||
| Hartmut Holzgraefe <hholzgra@php.net> |
|
||||
| Wez Furlong <wez@thebrainroom.com> |
|
||||
+----------------------------------------------------------------------+
|
||||
*/
|
||||
@@ -34,7 +34,7 @@
|
||||
#include "sdncal.h"
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
|
||||
function_entry calendar_functions[] = {
|
||||
PHP_FE(jdtogregorian, NULL)
|
||||
PHP_FE(gregoriantojd, NULL)
|
||||
@@ -48,10 +48,10 @@ function_entry calendar_functions[] = {
|
||||
PHP_FE(jdmonthname, NULL)
|
||||
PHP_FE(easter_date, NULL)
|
||||
PHP_FE(easter_days, NULL)
|
||||
PHP_FE(unixtojd, NULL)
|
||||
PHP_FE(jdtounix, NULL)
|
||||
PHP_FE(cal_to_jd, NULL)
|
||||
PHP_FE(cal_from_jd, NULL)
|
||||
PHP_FE(unixtojd, NULL)
|
||||
PHP_FE(jdtounix, NULL)
|
||||
PHP_FE(cal_to_jd, NULL)
|
||||
PHP_FE(cal_from_jd, NULL)
|
||||
PHP_FE(cal_days_in_month, NULL)
|
||||
PHP_FE(cal_info, NULL)
|
||||
{NULL, NULL, NULL}
|
||||
@@ -60,8 +60,8 @@ function_entry calendar_functions[] = {
|
||||
|
||||
zend_module_entry calendar_module_entry = {
|
||||
STANDARD_MODULE_HEADER,
|
||||
"calendar",
|
||||
calendar_functions,
|
||||
"calendar",
|
||||
calendar_functions,
|
||||
PHP_MINIT(calendar),
|
||||
NULL,
|
||||
NULL,
|
||||
@@ -83,60 +83,76 @@ enum cal_name_type_t {
|
||||
CAL_FRENCH,
|
||||
CAL_NUM_CALS
|
||||
};
|
||||
typedef long int (*cal_to_jd_func_t)(int month, int day, int year);
|
||||
typedef void (*cal_from_jd_func_t)(long int jd, int* year, int* month, int* day);
|
||||
typedef char* (*cal_as_string_func_t)(int year, int month, int day);
|
||||
|
||||
typedef long int (*cal_to_jd_func_t) (int month, int day, int year);
|
||||
typedef void (*cal_from_jd_func_t) (long int jd, int *year, int *month, int *day);
|
||||
typedef char *(*cal_as_string_func_t) (int year, int month, int day);
|
||||
|
||||
struct cal_entry_t {
|
||||
char *name;
|
||||
char *symbol;
|
||||
cal_to_jd_func_t to_jd;
|
||||
cal_from_jd_func_t from_jd;
|
||||
int num_months;
|
||||
int max_days_in_month;
|
||||
char **month_name_short;
|
||||
char **month_name_long;
|
||||
char *name;
|
||||
char *symbol;
|
||||
cal_to_jd_func_t to_jd;
|
||||
cal_from_jd_func_t from_jd;
|
||||
int num_months;
|
||||
int max_days_in_month;
|
||||
char **month_name_short;
|
||||
char **month_name_long;
|
||||
};
|
||||
|
||||
static struct cal_entry_t cal_conversion_table[CAL_NUM_CALS] = {
|
||||
{ "Gregorian", "CAL_GREGORIAN", GregorianToSdn, SdnToGregorian, 12, 31, MonthNameShort, MonthNameLong },
|
||||
{ "Julian", "CAL_JULIAN", JulianToSdn, SdnToJulian, 12, 31, MonthNameShort, MonthNameLong },
|
||||
{ "Jewish", "CAL_JEWISH", JewishToSdn, SdnToJewish, 13, 30, JewishMonthName, JewishMonthName },
|
||||
{ "French", "CAL_FRENCH", FrenchToSdn, SdnToFrench, 13, 30, FrenchMonthName, FrenchMonthName }
|
||||
{"Gregorian", "CAL_GREGORIAN", GregorianToSdn, SdnToGregorian, 12, 31,
|
||||
MonthNameShort, MonthNameLong},
|
||||
{"Julian", "CAL_JULIAN", JulianToSdn, SdnToJulian, 12, 31,
|
||||
MonthNameShort, MonthNameLong},
|
||||
{"Jewish", "CAL_JEWISH", JewishToSdn, SdnToJewish, 13, 30,
|
||||
JewishMonthName, JewishMonthName},
|
||||
{"French", "CAL_FRENCH", FrenchToSdn, SdnToFrench, 13, 30,
|
||||
FrenchMonthName, FrenchMonthName}
|
||||
};
|
||||
|
||||
/* For jddayofweek */
|
||||
enum { CAL_DOW_DAYNO, CAL_DOW_SHORT, CAL_DOW_LONG };
|
||||
enum { CAL_DOW_DAYNO, CAL_DOW_SHORT, CAL_DOW_LONG };
|
||||
|
||||
/* For jdmonthname */
|
||||
enum { CAL_MONTH_GREGORIAN_SHORT, CAL_MONTH_GREGORIAN_LONG,
|
||||
enum { CAL_MONTH_GREGORIAN_SHORT, CAL_MONTH_GREGORIAN_LONG,
|
||||
CAL_MONTH_JULIAN_SHORT, CAL_MONTH_JULIAN_LONG, CAL_MONTH_JEWISH,
|
||||
CAL_MONTH_FRENCH };
|
||||
CAL_MONTH_FRENCH
|
||||
};
|
||||
|
||||
/* for heb_number_to_chars */
|
||||
static char alef_bet[25] = "0àáâãäåæçèéëìîðñòôö÷øùú";
|
||||
|
||||
|
||||
#define CAL_JEWISH_ADD_ALAFIM_GERESH 0x2
|
||||
#define CAL_JEWISH_ADD_ALAFIM 0x4
|
||||
#define CAL_JEWISH_ADD_GERESHAYIM 0x8
|
||||
|
||||
PHP_MINIT_FUNCTION(calendar)
|
||||
{
|
||||
REGISTER_LONG_CONSTANT("CAL_GREGORIAN", CAL_GREGORIAN, CONST_CS|CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("CAL_JULIAN", CAL_JULIAN, CONST_CS|CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("CAL_JEWISH", CAL_JEWISH, CONST_CS|CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("CAL_FRENCH", CAL_FRENCH, CONST_CS|CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("CAL_NUM_CALS", CAL_NUM_CALS, CONST_CS|CONST_PERSISTENT);
|
||||
/* constants for jddayofweek */
|
||||
REGISTER_LONG_CONSTANT("CAL_DOW_DAYNO", CAL_DOW_DAYNO, CONST_CS|CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("CAL_DOW_SHORT", CAL_DOW_SHORT, CONST_CS|CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("CAL_DOW_LONG", CAL_DOW_LONG, CONST_CS|CONST_PERSISTENT);
|
||||
/* constants for jdmonthname */
|
||||
REGISTER_LONG_CONSTANT("CAL_MONTH_GREGORIAN_SHORT", CAL_MONTH_GREGORIAN_SHORT, CONST_CS|CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("CAL_MONTH_GREGORIAN_LONG", CAL_MONTH_GREGORIAN_LONG, CONST_CS|CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("CAL_MONTH_JULIAN_SHORT", CAL_MONTH_JULIAN_SHORT, CONST_CS|CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("CAL_MONTH_JULIAN_LONG", CAL_MONTH_JULIAN_LONG, CONST_CS|CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("CAL_MONTH_JEWISH", CAL_MONTH_JEWISH, CONST_CS|CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("CAL_MONTH_FRENCH", CAL_MONTH_FRENCH, CONST_CS|CONST_PERSISTENT);
|
||||
/* constants for easter calculation */
|
||||
REGISTER_LONG_CONSTANT("CAL_EASTER_DEFAULT", CAL_EASTER_DEFAULT, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("CAL_EASTER_ROMAN", CAL_EASTER_ROMAN, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("CAL_EASTER_ALWAYS_GREGORIAN", CAL_EASTER_ALWAYS_GREGORIAN, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("CAL_EASTER_ALWAYS_JULIAN", CAL_EASTER_ALWAYS_JULIAN, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("CAL_GREGORIAN", CAL_GREGORIAN, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("CAL_JULIAN", CAL_JULIAN, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("CAL_JEWISH", CAL_JEWISH, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("CAL_FRENCH", CAL_FRENCH, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("CAL_NUM_CALS", CAL_NUM_CALS, CONST_CS | CONST_PERSISTENT);
|
||||
/* constants for jddayofweek */
|
||||
REGISTER_LONG_CONSTANT("CAL_DOW_DAYNO", CAL_DOW_DAYNO, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("CAL_DOW_SHORT", CAL_DOW_SHORT, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("CAL_DOW_LONG", CAL_DOW_LONG, CONST_CS | CONST_PERSISTENT);
|
||||
/* constants for jdmonthname */
|
||||
REGISTER_LONG_CONSTANT("CAL_MONTH_GREGORIAN_SHORT", CAL_MONTH_GREGORIAN_SHORT, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("CAL_MONTH_GREGORIAN_LONG", CAL_MONTH_GREGORIAN_LONG, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("CAL_MONTH_JULIAN_SHORT", CAL_MONTH_JULIAN_SHORT, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("CAL_MONTH_JULIAN_LONG", CAL_MONTH_JULIAN_LONG, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("CAL_MONTH_JEWISH", CAL_MONTH_JEWISH, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("CAL_MONTH_FRENCH", CAL_MONTH_FRENCH, CONST_CS | CONST_PERSISTENT);
|
||||
/* constants for easter calculation */
|
||||
REGISTER_LONG_CONSTANT("CAL_EASTER_DEFAULT", CAL_EASTER_DEFAULT, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("CAL_EASTER_ROMAN", CAL_EASTER_ROMAN, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("CAL_EASTER_ALWAYS_GREGORIAN", CAL_EASTER_ALWAYS_GREGORIAN, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("CAL_EASTER_ALWAYS_JULIAN", CAL_EASTER_ALWAYS_JULIAN, CONST_CS | CONST_PERSISTENT);
|
||||
/* constants for Jewish date formatting */
|
||||
REGISTER_LONG_CONSTANT("CAL_JEWISH_ADD_ALAFIM_GERESH", CAL_JEWISH_ADD_ALAFIM_GERESH, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("CAL_JEWISH_ADD_ALAFIM", CAL_JEWISH_ADD_ALAFIM, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("CAL_JEWISH_ADD_GERESHAYIM", CAL_JEWISH_ADD_GERESHAYIM, CONST_CS | CONST_PERSISTENT);
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
@@ -147,42 +163,65 @@ PHP_MINFO_FUNCTION(calendar)
|
||||
php_info_print_table_end();
|
||||
}
|
||||
|
||||
/* {{{ proto array cal_info(int calendar)
|
||||
Returns information about a particular calendar */
|
||||
PHP_FUNCTION(cal_info)
|
||||
static void _php_cal_info(int cal, zval **ret)
|
||||
{
|
||||
zval ** cal;
|
||||
zval * months, *smonths;
|
||||
zval *months, *smonths;
|
||||
int i;
|
||||
struct cal_entry_t * calendar;
|
||||
|
||||
if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &cal) != SUCCESS) {
|
||||
WRONG_PARAM_COUNT;
|
||||
}
|
||||
convert_to_long_ex(cal);
|
||||
if (Z_LVAL_PP(cal) < 0 || Z_LVAL_PP(cal) >= CAL_NUM_CALS) {
|
||||
zend_error(E_WARNING, "%s(): invalid calendar ID %ld", get_active_function_name(TSRMLS_C), Z_LVAL_PP(cal));
|
||||
RETURN_FALSE;
|
||||
}
|
||||
struct cal_entry_t *calendar;
|
||||
|
||||
calendar = &cal_conversion_table[Z_LVAL_PP(cal)];
|
||||
array_init(return_value);
|
||||
calendar = &cal_conversion_table[cal];
|
||||
array_init(*ret);
|
||||
|
||||
MAKE_STD_ZVAL(months);
|
||||
MAKE_STD_ZVAL(smonths);
|
||||
array_init(months);
|
||||
array_init(smonths);
|
||||
|
||||
for (i=1; i<= calendar->num_months; i++) {
|
||||
|
||||
for (i = 1; i <= calendar->num_months; i++) {
|
||||
add_index_string(months, i, calendar->month_name_long[i], 1);
|
||||
add_index_string(smonths, i, calendar->month_name_short[i], 1);
|
||||
}
|
||||
add_assoc_zval(return_value, "months", months);
|
||||
add_assoc_zval(return_value, "abbrevmonths", smonths);
|
||||
add_assoc_long(return_value, "maxdaysinmonth", calendar->max_days_in_month);
|
||||
add_assoc_string(return_value, "calname", calendar->name, 1);
|
||||
add_assoc_string(return_value, "calsymbol", calendar->symbol, 1);
|
||||
add_assoc_zval(*ret, "months", months);
|
||||
add_assoc_zval(*ret, "abbrevmonths", smonths);
|
||||
add_assoc_long(*ret, "maxdaysinmonth", calendar->max_days_in_month);
|
||||
add_assoc_string(*ret, "calname", calendar->name, 1);
|
||||
add_assoc_string(*ret, "calsymbol", calendar->symbol, 1);
|
||||
|
||||
}
|
||||
|
||||
/* {{{ proto array cal_info(int calendar)
|
||||
Returns information about a particular calendar */
|
||||
PHP_FUNCTION(cal_info)
|
||||
{
|
||||
long cal = -1;
|
||||
|
||||
|
||||
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|l", &cal) == FAILURE) {
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
if (cal == -1) {
|
||||
int i;
|
||||
zval *val;
|
||||
|
||||
array_init(return_value);
|
||||
|
||||
for (i = 0; i < CAL_NUM_CALS; i++) {
|
||||
MAKE_STD_ZVAL(val);
|
||||
_php_cal_info(i, &val);
|
||||
add_index_zval(return_value, i, val);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (cal != -1 && (cal < 0 || cal >= CAL_NUM_CALS)) {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "invalid calendar ID %ld.", cal);
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
_php_cal_info(cal, &return_value);
|
||||
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
@@ -190,34 +229,35 @@ PHP_FUNCTION(cal_info)
|
||||
Returns the number of days in a month for a given year and calendar */
|
||||
PHP_FUNCTION(cal_days_in_month)
|
||||
{
|
||||
zval ** cal, **month, **year;
|
||||
struct cal_entry_t * calendar;
|
||||
long cal, month, year;
|
||||
struct cal_entry_t *calendar;
|
||||
long sdn_start, sdn_next;
|
||||
|
||||
if (ZEND_NUM_ARGS() != 3 || zend_get_parameters_ex(3, &cal, &month, &year) != SUCCESS) {
|
||||
WRONG_PARAM_COUNT;
|
||||
}
|
||||
|
||||
convert_to_long_ex(cal);
|
||||
convert_to_long_ex(month);
|
||||
convert_to_long_ex(year);
|
||||
|
||||
if (Z_LVAL_PP(cal) < 0 || Z_LVAL_PP(cal) >= CAL_NUM_CALS) {
|
||||
zend_error(E_WARNING, "%s(): invalid calendar ID %ld", get_active_function_name(TSRMLS_C), Z_LVAL_PP(cal));
|
||||
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "lll", &cal, &month, &year) == FAILURE) {
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
calendar = &cal_conversion_table[Z_LVAL_PP(cal)];
|
||||
|
||||
sdn_start = calendar->to_jd(Z_LVAL_PP(year), Z_LVAL_PP(month), 1);
|
||||
|
||||
sdn_next = calendar->to_jd(Z_LVAL_PP(year), 1 + Z_LVAL_PP(month), 1);
|
||||
|
||||
if (sdn_next == 0) {
|
||||
/* if invalid, try first month of the next year... */
|
||||
sdn_next = calendar->to_jd(Z_LVAL_PP(year) + 1, 1, 1);
|
||||
if (cal < 0 || cal >= CAL_NUM_CALS) {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "invalid calendar ID %ld.", cal);
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
|
||||
calendar = &cal_conversion_table[cal];
|
||||
|
||||
sdn_start = calendar->to_jd(year, month, 1);
|
||||
|
||||
if (sdn_start == 0) {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "invalid date.");
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
sdn_next = calendar->to_jd(year, 1 + month, 1);
|
||||
|
||||
if (sdn_next == 0) {
|
||||
/* if invalid, try first month of the next year... */
|
||||
sdn_next = calendar->to_jd(year + 1, 1, 1);
|
||||
}
|
||||
|
||||
RETURN_LONG(sdn_next - sdn_start);
|
||||
}
|
||||
/* }}} */
|
||||
@@ -226,26 +266,18 @@ PHP_FUNCTION(cal_days_in_month)
|
||||
Converts from a supported calendar to Julian Day Count */
|
||||
PHP_FUNCTION(cal_to_jd)
|
||||
{
|
||||
zval ** cal, **month, **day, **year;
|
||||
long jdate;
|
||||
long cal, month, day, year;
|
||||
|
||||
if (ZEND_NUM_ARGS() != 4 || zend_get_parameters_ex(4, &cal, &month, &day, &year) != SUCCESS) {
|
||||
WRONG_PARAM_COUNT;
|
||||
}
|
||||
|
||||
convert_to_long_ex(cal);
|
||||
convert_to_long_ex(month);
|
||||
convert_to_long_ex(day);
|
||||
convert_to_long_ex(year);
|
||||
|
||||
if (Z_LVAL_PP(cal) < 0 || Z_LVAL_PP(cal) >= CAL_NUM_CALS) {
|
||||
zend_error(E_WARNING, "%s(): invalid calendar ID %ld", get_active_function_name(TSRMLS_C), Z_LVAL_PP(cal));
|
||||
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "llll", &cal, &month, &day, &year) != SUCCESS) {
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
jdate = cal_conversion_table[Z_LVAL_PP(cal)].to_jd(
|
||||
Z_LVAL_PP(year), Z_LVAL_PP(month), Z_LVAL_PP(day));
|
||||
RETURN_LONG(jdate);
|
||||
if (cal < 0 || cal >= CAL_NUM_CALS) {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "invalid calendar ID %ld.", cal);
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
RETURN_LONG(cal_conversion_table[cal].to_jd(year, month, day));
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
@@ -253,42 +285,38 @@ PHP_FUNCTION(cal_to_jd)
|
||||
Converts from Julian Day Count to a supported calendar and return extended information */
|
||||
PHP_FUNCTION(cal_from_jd)
|
||||
{
|
||||
zval ** jd, ** cal;
|
||||
long jd, cal;
|
||||
int month, day, year, dow;
|
||||
char date[16];
|
||||
struct cal_entry_t * calendar;
|
||||
|
||||
if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &jd, &cal) != SUCCESS) {
|
||||
WRONG_PARAM_COUNT;
|
||||
}
|
||||
convert_to_long_ex(jd);
|
||||
convert_to_long_ex(cal);
|
||||
struct cal_entry_t *calendar;
|
||||
|
||||
if (Z_LVAL_PP(cal) < 0 || Z_LVAL_PP(cal) >= CAL_NUM_CALS) {
|
||||
zend_error(E_WARNING, "%s(): invalid calendar ID %ld", get_active_function_name(TSRMLS_C), Z_LVAL_PP(cal));
|
||||
if (zend_parse_parameters(ZEND_NUM_ARGS()TSRMLS_CC, "ll", &jd, &cal) == FAILURE) {
|
||||
RETURN_FALSE;
|
||||
}
|
||||
calendar = &cal_conversion_table[Z_LVAL_PP(cal)];
|
||||
|
||||
if (cal < 0 || cal >= CAL_NUM_CALS) {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "invalid calendar ID %ld", cal);
|
||||
RETURN_FALSE;
|
||||
}
|
||||
calendar = &cal_conversion_table[cal];
|
||||
|
||||
array_init(return_value);
|
||||
|
||||
calendar->from_jd(
|
||||
Z_LVAL_PP(jd),
|
||||
&year, &month, &day);
|
||||
calendar->from_jd(jd, &year, &month, &day);
|
||||
|
||||
sprintf(date, "%i/%i/%i", month, day, year);
|
||||
add_assoc_string(return_value, "date", date, 1);
|
||||
|
||||
|
||||
add_assoc_long(return_value, "month", month);
|
||||
add_assoc_long(return_value, "day", day);
|
||||
add_assoc_long(return_value, "year", year);
|
||||
|
||||
/* day of week */
|
||||
dow = DayOfWeek(Z_LVAL_PP(jd));
|
||||
/* day of week */
|
||||
dow = DayOfWeek(jd);
|
||||
add_assoc_long(return_value, "dow", dow);
|
||||
add_assoc_string(return_value, "abbrevdayname", DayNameShort[dow], 1);
|
||||
add_assoc_string(return_value, "dayname", DayNameLong[dow], 1);
|
||||
/* month name */
|
||||
/* month name */
|
||||
add_assoc_string(return_value, "abbrevmonth", calendar->month_name_short[month], 1);
|
||||
add_assoc_string(return_value, "monthname", calendar->month_name_long[month], 1);
|
||||
}
|
||||
@@ -298,16 +326,15 @@ PHP_FUNCTION(cal_from_jd)
|
||||
Converts a julian day count to a gregorian calendar date */
|
||||
PHP_FUNCTION(jdtogregorian)
|
||||
{
|
||||
pval **julday;
|
||||
long julday;
|
||||
int year, month, day;
|
||||
char date[10];
|
||||
char date[16];
|
||||
|
||||
if (zend_get_parameters_ex(1, &julday) != SUCCESS) {
|
||||
WRONG_PARAM_COUNT;
|
||||
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &julday) == FAILURE) {
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
convert_to_long_ex(julday);
|
||||
SdnToGregorian(Z_LVAL_PP(julday), &year, &month, &day);
|
||||
SdnToGregorian(julday, &year, &month, &day);
|
||||
sprintf(date, "%i/%i/%i", month, day, year);
|
||||
|
||||
RETURN_STRING(date, 1);
|
||||
@@ -318,37 +345,29 @@ PHP_FUNCTION(jdtogregorian)
|
||||
Converts a gregorian calendar date to julian day count */
|
||||
PHP_FUNCTION(gregoriantojd)
|
||||
{
|
||||
pval **year, **month, **day;
|
||||
int jdate;
|
||||
long year, month, day;
|
||||
|
||||
if (zend_get_parameters_ex(3, &month, &day, &year) != SUCCESS) {
|
||||
WRONG_PARAM_COUNT;
|
||||
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "lll", &month, &day, &year) == FAILURE) {
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
convert_to_long_ex(month);
|
||||
convert_to_long_ex(day);
|
||||
convert_to_long_ex(year);
|
||||
|
||||
jdate = GregorianToSdn(Z_LVAL_PP(year), Z_LVAL_PP(month), Z_LVAL_PP(day));
|
||||
|
||||
RETURN_LONG(jdate);
|
||||
RETURN_LONG(GregorianToSdn(year, month, day));
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
/* {{{ proto string jdtojulian(int juliandaycount)
|
||||
Convert a julian day count to a julian calendar date */
|
||||
PHP_FUNCTION(jdtojulian)
|
||||
PHP_FUNCTION(jdtojulian)
|
||||
{
|
||||
pval **julday;
|
||||
long julday;
|
||||
int year, month, day;
|
||||
char date[10];
|
||||
char date[16];
|
||||
|
||||
if (zend_get_parameters_ex(1, &julday) != SUCCESS) {
|
||||
WRONG_PARAM_COUNT;
|
||||
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &julday) == FAILURE) {
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
convert_to_long_ex(julday);
|
||||
SdnToJulian(Z_LVAL_PP(julday), &year, &month, &day);
|
||||
SdnToJulian(julday, &year, &month, &day);
|
||||
sprintf(date, "%i/%i/%i", month, day, year);
|
||||
|
||||
RETURN_STRING(date, 1);
|
||||
@@ -359,137 +378,146 @@ PHP_FUNCTION(jdtojulian)
|
||||
Converts a julian calendar date to julian day count */
|
||||
PHP_FUNCTION(juliantojd)
|
||||
{
|
||||
pval **year, **month, **day;
|
||||
int jdate;
|
||||
long year, month, day;
|
||||
|
||||
if (zend_get_parameters_ex(3, &month, &day, &year) != SUCCESS) {
|
||||
WRONG_PARAM_COUNT;
|
||||
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "lll", &month, &day, &year) == FAILURE) {
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
convert_to_long_ex(month);
|
||||
convert_to_long_ex(day);
|
||||
convert_to_long_ex(year);
|
||||
|
||||
jdate = JulianToSdn(Z_LVAL_PP(year), Z_LVAL_PP(month), Z_LVAL_PP(day));
|
||||
|
||||
RETURN_LONG(jdate);
|
||||
RETURN_LONG(JulianToSdn(year, month, day));
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
/*
|
||||
caution: the hebrew format product non unique result.
|
||||
for example both: year '5' and year '5000' product 'ä'.
|
||||
use the numeric one for calculations.
|
||||
/* {{{ heb_number_to_chars*/
|
||||
/*
|
||||
caution: the Hebrew format produces non unique result.
|
||||
for example both: year '5' and year '5000' produce 'ä'.
|
||||
use the numeric one for calculations.
|
||||
*/
|
||||
static char* heb_number_to_chars(int n, char **ret)
|
||||
static char *heb_number_to_chars(int n, int fl, char **ret)
|
||||
{
|
||||
char *p, *old;
|
||||
char *p, old[18], *endofalafim;
|
||||
|
||||
p = emalloc(10);
|
||||
old = p;
|
||||
|
||||
/*
|
||||
prevents the option breaking the jewish beliefs, and some other
|
||||
critical resources ;)
|
||||
*/
|
||||
p = endofalafim = old;
|
||||
/*
|
||||
prevents the option breaking the jewish beliefs, and some other
|
||||
critical resources ;)
|
||||
*/
|
||||
if (n > 9999 || n < 1) {
|
||||
efree(old);
|
||||
*ret = NULL;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* alafim case */
|
||||
/* alafim (thousands) case */
|
||||
if (n / 1000) {
|
||||
*p = alef_bet[n / 1000];
|
||||
p++;
|
||||
|
||||
if (CAL_JEWISH_ADD_ALAFIM_GERESH & fl) {
|
||||
*p = '\'';
|
||||
p++;
|
||||
}
|
||||
if (CAL_JEWISH_ADD_ALAFIM & fl) {
|
||||
strcpy(p, " àìôéí ");
|
||||
p += 7;
|
||||
}
|
||||
|
||||
endofalafim = p;
|
||||
n = n % 1000;
|
||||
}
|
||||
|
||||
/* taf-taf case */
|
||||
/* tav-tav (tav=400) case */
|
||||
while (n >= 400) {
|
||||
*p = alef_bet[22];
|
||||
p++;
|
||||
n-=400;
|
||||
n -= 400;
|
||||
}
|
||||
|
||||
/* meot case */
|
||||
if (n >= 100) {
|
||||
*p = alef_bet[18+n/100];
|
||||
/* meot (hundreads) case */
|
||||
if (n >= 100) {
|
||||
*p = alef_bet[18 + n / 100];
|
||||
p++;
|
||||
n = n % 100;
|
||||
}
|
||||
|
||||
/* tet-vav tet-zain case */
|
||||
/* tet-vav & tet-zain case (special case for 15 and 16) */
|
||||
if (n == 15 || n == 16) {
|
||||
*p = alef_bet[9];
|
||||
p++;
|
||||
*p = alef_bet[n-9];
|
||||
*p = alef_bet[n - 9];
|
||||
p++;
|
||||
} else {
|
||||
/* asarot case */
|
||||
if (n >= 10) {
|
||||
*p = alef_bet[9+n/10];
|
||||
/* asarot (tens) case */
|
||||
if (n >= 10) {
|
||||
*p = alef_bet[9 + n / 10];
|
||||
p++;
|
||||
n = n % 10;
|
||||
}
|
||||
|
||||
/* yeihot case */
|
||||
/* yehidot (ones) case */
|
||||
if (n > 0) {
|
||||
*p = alef_bet[n];
|
||||
p++;
|
||||
}
|
||||
}
|
||||
|
||||
if (CAL_JEWISH_ADD_GERESHAYIM & fl) {
|
||||
switch (p - endofalafim) {
|
||||
case 0:
|
||||
break;
|
||||
case 1:
|
||||
*p = '\'';
|
||||
p++;
|
||||
break;
|
||||
default:
|
||||
*(p) = *(p - 1);
|
||||
*(p - 1) = '"';
|
||||
p++;
|
||||
}
|
||||
}
|
||||
|
||||
*p = '\0';
|
||||
*ret = estrndup(old, (p - old) + 1);
|
||||
p = *ret;
|
||||
efree(old);
|
||||
return p;
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
/* {{{ proto string jdtojewish(int juliandaycount)
|
||||
/* {{{ proto string jdtojewish(int juliandaycount [, bool hebrew [, int fl]])
|
||||
Converts a julian day count to a jewish calendar date */
|
||||
PHP_FUNCTION(jdtojewish)
|
||||
PHP_FUNCTION(jdtojewish)
|
||||
{
|
||||
long julday, fl;
|
||||
long julday, fl = 0;
|
||||
zend_bool heb = 0;
|
||||
int year, month, day;
|
||||
char date[10], hebdate[25];
|
||||
char date[16], hebdate[25];
|
||||
char *dayp, *yearp;
|
||||
|
||||
if (ZEND_NUM_ARGS() == 1) {
|
||||
if (zend_parse_parameters(1 TSRMLS_CC,"l", &julday) != SUCCESS) {
|
||||
RETURN_FALSE;
|
||||
}
|
||||
fl=0;
|
||||
} else if (ZEND_NUM_ARGS() == 2) {
|
||||
if (zend_parse_parameters(2 TSRMLS_CC,"ll", &julday, &fl) != SUCCESS) {
|
||||
RETURN_FALSE;
|
||||
}
|
||||
} else {
|
||||
WRONG_PARAM_COUNT;
|
||||
|
||||
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l|bl", &julday, &heb, &fl) == FAILURE) {
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
|
||||
|
||||
SdnToJewish(julday, &year, &month, &day);
|
||||
if(!fl) {
|
||||
if (!heb) {
|
||||
sprintf(date, "%i/%i/%i", month, day, year);
|
||||
RETURN_STRING(date, 1);
|
||||
} else {
|
||||
if (year <= 0 || year > 9999) {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Out of range year.");
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Year out of range (0-9999).");
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
sprintf(hebdate, "%s %s %s", heb_number_to_chars(day, &dayp), JewishMonthHebName[month], heb_number_to_chars(year, &yearp));
|
||||
|
||||
|
||||
sprintf(hebdate, "%s %s %s", heb_number_to_chars(day, fl, &dayp), JewishMonthHebName[month], heb_number_to_chars(year, fl, &yearp));
|
||||
|
||||
if (dayp) {
|
||||
efree(dayp);
|
||||
}
|
||||
if (yearp) {
|
||||
efree(yearp);
|
||||
efree(yearp);
|
||||
}
|
||||
|
||||
RETURN_STRING(hebdate, 1);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
/* }}} */
|
||||
@@ -498,20 +526,13 @@ PHP_FUNCTION(jdtojewish)
|
||||
Converts a jewish calendar date to a julian day count */
|
||||
PHP_FUNCTION(jewishtojd)
|
||||
{
|
||||
pval **year, **month, **day;
|
||||
int jdate;
|
||||
long year, month, day;
|
||||
|
||||
if (zend_get_parameters_ex(3, &month, &day, &year) != SUCCESS) {
|
||||
WRONG_PARAM_COUNT;
|
||||
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "lll", &month, &day, &year) == FAILURE) {
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
convert_to_long_ex(month);
|
||||
convert_to_long_ex(day);
|
||||
convert_to_long_ex(year);
|
||||
|
||||
jdate = JewishToSdn(Z_LVAL_PP(year), Z_LVAL_PP(month), Z_LVAL_PP(day));
|
||||
|
||||
RETURN_LONG(jdate);
|
||||
RETURN_LONG(JewishToSdn(year, month, day));
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
@@ -519,17 +540,15 @@ PHP_FUNCTION(jewishtojd)
|
||||
Converts a julian day count to a french republic calendar date */
|
||||
PHP_FUNCTION(jdtofrench)
|
||||
{
|
||||
pval **julday;
|
||||
long julday;
|
||||
int year, month, day;
|
||||
char date[10];
|
||||
char date[16];
|
||||
|
||||
if (zend_get_parameters_ex(1, &julday) != SUCCESS) {
|
||||
WRONG_PARAM_COUNT;
|
||||
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &julday) == FAILURE) {
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
convert_to_long_ex(julday);
|
||||
|
||||
SdnToFrench(Z_LVAL_PP(julday), &year, &month, &day);
|
||||
SdnToFrench(julday, &year, &month, &day);
|
||||
sprintf(date, "%i/%i/%i", month, day, year);
|
||||
|
||||
RETURN_STRING(date, 1);
|
||||
@@ -540,20 +559,13 @@ PHP_FUNCTION(jdtofrench)
|
||||
Converts a french republic calendar date to julian day count */
|
||||
PHP_FUNCTION(frenchtojd)
|
||||
{
|
||||
pval **year, **month, **day;
|
||||
int jdate;
|
||||
long year, month, day;
|
||||
|
||||
if (zend_get_parameters_ex(3, &month, &day, &year) != SUCCESS) {
|
||||
WRONG_PARAM_COUNT;
|
||||
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "lll", &month, &day, &year) == FAILURE) {
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
convert_to_long_ex(month);
|
||||
convert_to_long_ex(day);
|
||||
convert_to_long_ex(year);
|
||||
|
||||
jdate = FrenchToSdn(Z_LVAL_PP(year), Z_LVAL_PP(month), Z_LVAL_PP(day));
|
||||
|
||||
RETURN_LONG(jdate);
|
||||
RETURN_LONG(FrenchToSdn(year, month, day));
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
@@ -561,37 +573,30 @@ PHP_FUNCTION(frenchtojd)
|
||||
Returns name or number of day of week from julian day count */
|
||||
PHP_FUNCTION(jddayofweek)
|
||||
{
|
||||
pval *julday, *mode;
|
||||
long julday, mode = CAL_DOW_DAYNO;
|
||||
int day;
|
||||
char *daynamel, *daynames;
|
||||
int myargc=ZEND_NUM_ARGS(), mymode=0;
|
||||
|
||||
if ((myargc < 1) || (myargc > 2) || (zend_get_parameters(ht, myargc, &julday, &mode) != SUCCESS)) {
|
||||
WRONG_PARAM_COUNT;
|
||||
}
|
||||
|
||||
convert_to_long(julday);
|
||||
if(myargc==2) {
|
||||
convert_to_long(mode);
|
||||
mymode = Z_LVAL_P(mode);
|
||||
}
|
||||
|
||||
day = DayOfWeek(Z_LVAL_P(julday));
|
||||
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l|l", &julday, &mode) == FAILURE) {
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
day = DayOfWeek(julday);
|
||||
daynamel = DayNameLong[day];
|
||||
daynames = DayNameShort[day];
|
||||
|
||||
switch (mymode) {
|
||||
case CAL_DOW_SHORT:
|
||||
RETURN_STRING(daynamel, 1);
|
||||
break;
|
||||
case CAL_DOW_LONG:
|
||||
RETURN_STRING(daynames, 1);
|
||||
break;
|
||||
case CAL_DOW_DAYNO:
|
||||
default:
|
||||
RETURN_LONG(day);
|
||||
break;
|
||||
}
|
||||
switch (mode) {
|
||||
case CAL_DOW_SHORT:
|
||||
RETURN_STRING(daynamel, 1);
|
||||
break;
|
||||
case CAL_DOW_LONG:
|
||||
RETURN_STRING(daynames, 1);
|
||||
break;
|
||||
case CAL_DOW_DAYNO:
|
||||
default:
|
||||
RETURN_LONG(day);
|
||||
break;
|
||||
}
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
@@ -599,43 +604,40 @@ PHP_FUNCTION(jddayofweek)
|
||||
Returns name of month for julian day count */
|
||||
PHP_FUNCTION(jdmonthname)
|
||||
{
|
||||
pval **julday, **mode;
|
||||
long julday, mode;
|
||||
char *monthname = NULL;
|
||||
int month, day, year;
|
||||
|
||||
if (zend_get_parameters_ex(2, &julday, &mode) != SUCCESS) {
|
||||
WRONG_PARAM_COUNT;
|
||||
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ll", &julday, &mode) == FAILURE) {
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
convert_to_long_ex(julday);
|
||||
convert_to_long_ex(mode);
|
||||
|
||||
switch(Z_LVAL_PP(mode)) {
|
||||
case CAL_MONTH_GREGORIAN_LONG: /* gregorian or julian month */
|
||||
SdnToGregorian(Z_LVAL_PP(julday), &year, &month, &day);
|
||||
monthname = MonthNameLong[month];
|
||||
break;
|
||||
case CAL_MONTH_JULIAN_SHORT: /* gregorian or julian month */
|
||||
SdnToJulian(Z_LVAL_PP(julday), &year, &month, &day);
|
||||
monthname = MonthNameShort[month];
|
||||
break;
|
||||
case CAL_MONTH_JULIAN_LONG: /* gregorian or julian month */
|
||||
SdnToJulian(Z_LVAL_PP(julday), &year, &month, &day);
|
||||
monthname = MonthNameLong[month];
|
||||
break;
|
||||
case CAL_MONTH_JEWISH: /* jewish month */
|
||||
SdnToJewish(Z_LVAL_PP(julday), &year, &month, &day);
|
||||
monthname = JewishMonthName[month];
|
||||
break;
|
||||
case CAL_MONTH_FRENCH: /* french month */
|
||||
SdnToFrench(Z_LVAL_PP(julday), &year, &month, &day);
|
||||
monthname = FrenchMonthName[month];
|
||||
break;
|
||||
default: /* default gregorian */
|
||||
case CAL_MONTH_GREGORIAN_SHORT: /* gregorian or julian month */
|
||||
SdnToGregorian(Z_LVAL_PP(julday), &year, &month, &day);
|
||||
monthname = MonthNameShort[month];
|
||||
break;
|
||||
switch (mode) {
|
||||
case CAL_MONTH_GREGORIAN_LONG: /* gregorian or julian month */
|
||||
SdnToGregorian(julday, &year, &month, &day);
|
||||
monthname = MonthNameLong[month];
|
||||
break;
|
||||
case CAL_MONTH_JULIAN_SHORT: /* gregorian or julian month */
|
||||
SdnToJulian(julday, &year, &month, &day);
|
||||
monthname = MonthNameShort[month];
|
||||
break;
|
||||
case CAL_MONTH_JULIAN_LONG: /* gregorian or julian month */
|
||||
SdnToJulian(julday, &year, &month, &day);
|
||||
monthname = MonthNameLong[month];
|
||||
break;
|
||||
case CAL_MONTH_JEWISH: /* jewish month */
|
||||
SdnToJewish(julday, &year, &month, &day);
|
||||
monthname = JewishMonthName[month];
|
||||
break;
|
||||
case CAL_MONTH_FRENCH: /* french month */
|
||||
SdnToFrench(julday, &year, &month, &day);
|
||||
monthname = FrenchMonthName[month];
|
||||
break;
|
||||
default: /* default gregorian */
|
||||
case CAL_MONTH_GREGORIAN_SHORT: /* gregorian or julian month */
|
||||
SdnToGregorian(julday, &year, &month, &day);
|
||||
monthname = MonthNameShort[month];
|
||||
break;
|
||||
}
|
||||
|
||||
RETURN_STRING(monthname, 1);
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
+4
-4
@@ -2,12 +2,12 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
+4
-4
@@ -2,12 +2,12 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
+4
-4
@@ -2,12 +2,12 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
+4
-4
@@ -2,12 +2,12 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
+4
-4
@@ -2,12 +2,12 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
+8
-4
@@ -2,12 +2,12 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
@@ -29,6 +29,10 @@
|
||||
|
||||
#include <packer.h>
|
||||
|
||||
#ifndef STRINGSIZE
|
||||
#define STRINGSIZE 1024
|
||||
#endif
|
||||
|
||||
extern char * FascistLook(PWDICT *pwp, char *instring);
|
||||
extern int PWClose(PWDICT *pwp);
|
||||
|
||||
|
||||
@@ -4,10 +4,10 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997, 1998, 1999, 2000, 2001 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
+29
-24
@@ -2,12 +2,12 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
@@ -92,34 +92,39 @@ PHP_MINFO_FUNCTION(ctype)
|
||||
/* {{{ ctype
|
||||
*/
|
||||
#define CTYPE(iswhat) \
|
||||
zval *c; \
|
||||
zval *c, tmp; \
|
||||
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &c) == FAILURE) \
|
||||
return; \
|
||||
switch (Z_TYPE_P(c)) { \
|
||||
case IS_LONG: \
|
||||
if (Z_TYPE_P(c) == IS_LONG) { \
|
||||
if (Z_LVAL_P(c) <= 255 && Z_LVAL_P(c) >= 0) { \
|
||||
RETURN_BOOL(iswhat(Z_LVAL_P(c))); \
|
||||
} else if (Z_LVAL_P(c) >= -128 && Z_LVAL_P(c) < 0) { \
|
||||
RETURN_BOOL(iswhat(Z_LVAL_P(c) + 256)); \
|
||||
} \
|
||||
SEPARATE_ZVAL(&c); \
|
||||
convert_to_string(c); \
|
||||
case IS_STRING: \
|
||||
{ \
|
||||
char *p; \
|
||||
int n, len; \
|
||||
p=Z_STRVAL_P(c); \
|
||||
len = Z_STRLEN_P(c); \
|
||||
for(n=0;n<len;n++) { \
|
||||
if(!iswhat((int)*(unsigned char *)(p++))) RETURN_FALSE; \
|
||||
} \
|
||||
RETURN_TRUE; \
|
||||
} \
|
||||
default: \
|
||||
break; \
|
||||
tmp = *c; \
|
||||
zval_copy_ctor(&tmp); \
|
||||
convert_to_string(&tmp); \
|
||||
} else { \
|
||||
tmp = *c; \
|
||||
} \
|
||||
RETURN_FALSE;
|
||||
|
||||
if (Z_TYPE(tmp) == IS_STRING) { \
|
||||
char *p = Z_STRVAL(tmp), *e = Z_STRVAL(tmp) + Z_STRLEN(tmp); \
|
||||
if (e == p) { \
|
||||
if (Z_TYPE_P(c) == IS_LONG) zval_dtor(&tmp); \
|
||||
RETURN_FALSE; \
|
||||
} \
|
||||
while (p < e) { \
|
||||
if(!iswhat((int)*(unsigned char *)(p++))) { \
|
||||
if (Z_TYPE_P(c) == IS_LONG) zval_dtor(&tmp); \
|
||||
RETURN_FALSE; \
|
||||
} \
|
||||
} \
|
||||
if (Z_TYPE_P(c) == IS_LONG) zval_dtor(&tmp); \
|
||||
RETURN_TRUE; \
|
||||
} else { \
|
||||
RETURN_FALSE; \
|
||||
} \
|
||||
|
||||
/* }}} */
|
||||
|
||||
/* {{{ proto bool ctype_alnum(mixed c)
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
--TEST--
|
||||
Bug #34645 (ctype corrupts memory when validating large numbers)
|
||||
--FILE--
|
||||
<?php
|
||||
$id = 394829384;
|
||||
var_dump(ctype_digit($id));
|
||||
var_dump($id);
|
||||
?>
|
||||
--EXPECT--
|
||||
bool(true)
|
||||
int(394829384)
|
||||
@@ -48,6 +48,38 @@ if test "$PHP_CURL" != "no"; then
|
||||
else
|
||||
AC_MSG_ERROR(cURL version 7.9.8 or later is required to compile php with cURL support)
|
||||
fi
|
||||
|
||||
AC_MSG_CHECKING([for SSL support in libcurl])
|
||||
CURL_SSL=`$CURL_CONFIG --feature | $EGREP SSL`
|
||||
if test "$CURL_SSL" = "SSL"; then
|
||||
AC_MSG_RESULT([yes])
|
||||
AC_DEFINE([HAVE_CURL_SSL], [1], [Have cURL with SSL support])
|
||||
|
||||
AC_MSG_CHECKING([for SSL library used])
|
||||
CURL_SSL_FLAVOUR=
|
||||
for i in $CURL_LIBS; do
|
||||
if test "$i" = "-lssl"; then
|
||||
CURL_SSL_FLAVOUR="openssl"
|
||||
AC_MSG_RESULT([openssl])
|
||||
AC_DEFINE([HAVE_CURL_OPENSSL], [1], [Have cURL with OpenSSL support])
|
||||
AC_CHECK_HEADERS([openssl/crypto.h])
|
||||
break
|
||||
elif test "$i" = "-lgnutls"; then
|
||||
CURL_SSL_FLAVOUR="gnutls"
|
||||
AC_MSG_RESULT([gnutls])
|
||||
AC_DEFINE([HAVE_CURL_GNUTLS], [1], [Have cURL with GnuTLS support])
|
||||
AC_CHECK_HEADERS([gcrypt.h])
|
||||
break
|
||||
fi
|
||||
done
|
||||
if test -z "$CURL_SSL_FLAVOUR"; then
|
||||
AC_MSG_RESULT([unknown!])
|
||||
AC_MSG_WARN([Could not determine the type of SSL library used!])
|
||||
AC_MSG_WARN([Building will fail in ZTS mode!])
|
||||
fi
|
||||
else
|
||||
AC_MSG_RESULT([no])
|
||||
fi
|
||||
|
||||
PHP_ADD_INCLUDE($CURL_DIR/include)
|
||||
PHP_EVAL_LIBLINE($CURL_LIBS, CURL_SHARED_LIBADD)
|
||||
|
||||
+229
-34
@@ -2,12 +2,12 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
@@ -45,9 +45,46 @@
|
||||
#define HttpPost curl_httppost
|
||||
#endif
|
||||
|
||||
/* {{{ cruft for thread safe SSL crypto locks */
|
||||
#if defined(ZTS) && defined(HAVE_CURL_SSL)
|
||||
# ifdef PHP_WIN32
|
||||
# define PHP_CURL_NEED_OPENSSL_TSL
|
||||
# include <openssl/crypto.h>
|
||||
# else /* !PHP_WIN32 */
|
||||
# if defined(HAVE_CURL_OPENSSL)
|
||||
# if defined(HAVE_OPENSSL_CRYPTO_H)
|
||||
# define PHP_CURL_NEED_OPENSSL_TSL
|
||||
# include <openssl/crypto.h>
|
||||
# else
|
||||
# warning \
|
||||
"libcurl was compiled with OpenSSL support, but configure could not find " \
|
||||
"openssl/crypto.h; thus no SSL crypto locking callbacks will be set, which may " \
|
||||
"cause random crashes on SSL requests"
|
||||
# endif
|
||||
# elif defined(HAVE_CURL_GNUTLS)
|
||||
# if defined(HAVE_GCRYPT_H)
|
||||
# define PHP_CURL_NEED_GNUTLS_TSL
|
||||
# include <gcrypt.h>
|
||||
# else
|
||||
# warning \
|
||||
"libcurl was compiled with GnuTLS support, but configure could not find " \
|
||||
"gcrypt.h; thus no SSL crypto locking callbacks will be set, which may " \
|
||||
"cause random crashes on SSL requests"
|
||||
# endif
|
||||
# else
|
||||
# warning \
|
||||
"libcurl was compiled with SSL support, but configure could not determine which" \
|
||||
"library was used; thus no SSL crypto locking callbacks will be set, which may " \
|
||||
"cause random crashes on SSL requests"
|
||||
# endif /* HAVE_CURL_OPENSSL || HAVE_CURL_GNUTLS */
|
||||
# endif /* PHP_WIN32 */
|
||||
#endif /* ZTS && HAVE_CURL_SSL */
|
||||
/* }}} */
|
||||
|
||||
#define SMART_STR_PREALLOC 4096
|
||||
|
||||
#include "ext/standard/php_smart_str.h"
|
||||
#include "ext/standard/php_string.h"
|
||||
#include "ext/standard/info.h"
|
||||
#include "ext/standard/file.h"
|
||||
#include "ext/standard/url.h"
|
||||
@@ -56,6 +93,62 @@
|
||||
static int le_curl;
|
||||
#define le_curl_name "cURL handle"
|
||||
|
||||
#ifdef PHP_CURL_NEED_OPENSSL_TSL /* {{{ */
|
||||
static MUTEX_T *php_curl_openssl_tsl = NULL;
|
||||
|
||||
static void php_curl_ssl_lock(int mode, int n, const char * file, int line)
|
||||
{
|
||||
if (mode & CRYPTO_LOCK) {
|
||||
tsrm_mutex_lock(php_curl_openssl_tsl[n]);
|
||||
} else {
|
||||
tsrm_mutex_unlock(php_curl_openssl_tsl[n]);
|
||||
}
|
||||
}
|
||||
|
||||
static unsigned long php_curl_ssl_id(void)
|
||||
{
|
||||
return (unsigned long) tsrm_thread_id();
|
||||
}
|
||||
#endif
|
||||
/* }}} */
|
||||
|
||||
#ifdef PHP_CURL_NEED_GNUTLS_TSL /* {{{ */
|
||||
static int php_curl_ssl_mutex_create(void **m)
|
||||
{
|
||||
if (*((MUTEX_T *) m) = tsrm_mutex_alloc()) {
|
||||
return SUCCESS;
|
||||
} else {
|
||||
return FAILURE;
|
||||
}
|
||||
}
|
||||
|
||||
static int php_curl_ssl_mutex_destroy(void **m)
|
||||
{
|
||||
tsrm_mutex_free(*((MUTEX_T *) m));
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
static int php_curl_ssl_mutex_lock(void **m)
|
||||
{
|
||||
return tsrm_mutex_lock(*((MUTEX_T *) m));
|
||||
}
|
||||
|
||||
static int php_curl_ssl_mutex_unlock(void **m)
|
||||
{
|
||||
return tsrm_mutex_unlock(*((MUTEX_T *) m));
|
||||
}
|
||||
|
||||
static struct gcry_thread_cbs php_curl_gnutls_tsl = {
|
||||
GCRY_THREAD_OPTION_USER,
|
||||
NULL,
|
||||
php_curl_ssl_mutex_create,
|
||||
php_curl_ssl_mutex_destroy,
|
||||
php_curl_ssl_mutex_lock,
|
||||
php_curl_ssl_mutex_unlock
|
||||
};
|
||||
#endif
|
||||
/* }}} */
|
||||
|
||||
static void _php_curl_close(zend_rsrc_list_entry *rsrc TSRMLS_DC);
|
||||
|
||||
#define SAVE_CURL_ERROR(__handle, __err) (__handle)->err.no = (int) __err;
|
||||
@@ -66,17 +159,22 @@ static void _php_curl_close(zend_rsrc_list_entry *rsrc TSRMLS_DC);
|
||||
#define CAAZ(s, v) add_assoc_zval_ex(return_value, s, sizeof(s), (zval *) v);
|
||||
|
||||
#define PHP_CURL_CHECK_OPEN_BASEDIR(str, len) \
|
||||
if (PG(open_basedir) && *PG(open_basedir) && \
|
||||
strncasecmp(str, "file://", sizeof("file://") - 1) == 0) \
|
||||
if (((PG(open_basedir) && *PG(open_basedir)) || PG(safe_mode)) && \
|
||||
strncasecmp(str, "file:", sizeof("file:") - 1) == 0) \
|
||||
{ \
|
||||
php_url *tmp_url; \
|
||||
\
|
||||
\
|
||||
if (!(tmp_url = php_url_parse_ex(str, len))) { \
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid url '%s'", str); \
|
||||
RETURN_FALSE; \
|
||||
} \
|
||||
\
|
||||
if (php_memnstr(str, tmp_url->path, strlen(tmp_url->path), str + len)) { \
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Url '%s' contains unencoded control characters.", str); \
|
||||
RETURN_FALSE; \
|
||||
} \
|
||||
\
|
||||
if (php_check_open_basedir(tmp_url->path TSRMLS_CC) || \
|
||||
if (tmp_url->query || tmp_url->fragment || php_check_open_basedir(tmp_url->path TSRMLS_CC) || \
|
||||
(PG(safe_mode) && !php_checkuid(tmp_url->path, "rb+", CHECKUID_CHECK_MODE_PARAM)) \
|
||||
) { \
|
||||
php_url_free(tmp_url); \
|
||||
@@ -160,7 +258,9 @@ PHP_MINIT_FUNCTION(curl)
|
||||
REGISTER_CURL_CONSTANT(CURLOPT_FTPAPPEND);
|
||||
REGISTER_CURL_CONSTANT(CURLOPT_NETRC);
|
||||
REGISTER_CURL_CONSTANT(CURLOPT_FOLLOWLOCATION);
|
||||
#if CURLOPT_FTPASCII != 0
|
||||
REGISTER_CURL_CONSTANT(CURLOPT_FTPASCII);
|
||||
#endif
|
||||
REGISTER_CURL_CONSTANT(CURLOPT_PUT);
|
||||
#if CURLOPT_MUTE != 0
|
||||
REGISTER_CURL_CONSTANT(CURLOPT_MUTE);
|
||||
@@ -198,7 +298,9 @@ PHP_MINIT_FUNCTION(curl)
|
||||
REGISTER_CURL_CONSTANT(CURLOPT_FILETIME);
|
||||
REGISTER_CURL_CONSTANT(CURLOPT_WRITEFUNCTION);
|
||||
REGISTER_CURL_CONSTANT(CURLOPT_READFUNCTION);
|
||||
#if CURLOPT_PASSWDFUNCTION != 0
|
||||
REGISTER_CURL_CONSTANT(CURLOPT_PASSWDFUNCTION);
|
||||
#endif
|
||||
REGISTER_CURL_CONSTANT(CURLOPT_HEADERFUNCTION);
|
||||
REGISTER_CURL_CONSTANT(CURLOPT_MAXREDIRS);
|
||||
REGISTER_CURL_CONSTANT(CURLOPT_MAXCONNECTS);
|
||||
@@ -364,6 +466,23 @@ PHP_MINIT_FUNCTION(curl)
|
||||
REGISTER_CURL_CONSTANT(CURL_HTTP_VERSION_1_0);
|
||||
REGISTER_CURL_CONSTANT(CURL_HTTP_VERSION_1_1);
|
||||
|
||||
#ifdef PHP_CURL_NEED_OPENSSL_TSL
|
||||
{
|
||||
int i, c = CRYPTO_num_locks();
|
||||
|
||||
php_curl_openssl_tsl = malloc(c * sizeof(MUTEX_T));
|
||||
|
||||
for (i = 0; i < c; ++i) {
|
||||
php_curl_openssl_tsl[i] = tsrm_mutex_alloc();
|
||||
}
|
||||
|
||||
CRYPTO_set_id_callback(php_curl_ssl_id);
|
||||
CRYPTO_set_locking_callback(php_curl_ssl_lock);
|
||||
}
|
||||
#endif
|
||||
#ifdef PHP_CURL_NEED_GNUTLS_TSL
|
||||
gcry_control(GCRYCTL_SET_THREAD_CBS, &php_curl_gnutls_tsl);
|
||||
#endif
|
||||
|
||||
if (curl_global_init(CURL_GLOBAL_SSL) != CURLE_OK) {
|
||||
return FAILURE;
|
||||
@@ -389,9 +508,28 @@ PHP_MSHUTDOWN_FUNCTION(curl)
|
||||
php_unregister_url_stream_wrapper("https" TSRMLS_CC);
|
||||
php_unregister_url_stream_wrapper("ftp" TSRMLS_CC);
|
||||
php_unregister_url_stream_wrapper("ldap" TSRMLS_CC);
|
||||
#endif
|
||||
#ifdef PHP_CURL_NEED_OPENSSL_TSL
|
||||
/* ensure there are valid callbacks set */
|
||||
CRYPTO_set_id_callback(php_curl_ssl_id);
|
||||
CRYPTO_set_locking_callback(php_curl_ssl_lock);
|
||||
#endif
|
||||
curl_global_cleanup();
|
||||
|
||||
#ifdef PHP_CURL_NEED_OPENSSL_TSL
|
||||
if (php_curl_openssl_tsl) {
|
||||
int i, c = CRYPTO_num_locks();
|
||||
|
||||
CRYPTO_set_id_callback(NULL);
|
||||
CRYPTO_set_locking_callback(NULL);
|
||||
|
||||
for (i = 0; i < c; ++i) {
|
||||
tsrm_mutex_free(php_curl_openssl_tsl[i]);
|
||||
}
|
||||
|
||||
free(php_curl_openssl_tsl);
|
||||
php_curl_openssl_tsl = NULL;
|
||||
}
|
||||
#endif
|
||||
return SUCCESS;
|
||||
}
|
||||
/* }}} */
|
||||
@@ -421,7 +559,9 @@ static size_t curl_write(char *data, size_t size, size_t nmemb, void *ctx)
|
||||
case PHP_CURL_FILE:
|
||||
return fwrite(data, size, nmemb, t->fp);
|
||||
case PHP_CURL_RETURN:
|
||||
smart_str_appendl(&t->buf, data, (int) length);
|
||||
if (length > 0) {
|
||||
smart_str_appendl(&t->buf, data, (int) length);
|
||||
}
|
||||
break;
|
||||
case PHP_CURL_USER: {
|
||||
zval *argv[2];
|
||||
@@ -436,10 +576,12 @@ static size_t curl_write(char *data, size_t size, size_t nmemb, void *ctx)
|
||||
zend_list_addref(ch->id);
|
||||
ZVAL_STRINGL(argv[1], data, length, 1);
|
||||
|
||||
ch->in_callback = 1;
|
||||
error = call_user_function(EG(function_table),
|
||||
NULL,
|
||||
t->func,
|
||||
retval, 2, argv TSRMLS_CC);
|
||||
ch->in_callback = 0;
|
||||
if (error == FAILURE) {
|
||||
php_error(E_WARNING, "%s(): Couldn't call the CURLOPT_WRITEFUNCTION",
|
||||
get_active_function_name(TSRMLS_C));
|
||||
@@ -495,10 +637,12 @@ static size_t curl_read(char *data, size_t size, size_t nmemb, void *ctx)
|
||||
zend_list_addref(t->fd);
|
||||
ZVAL_LONG(argv[2], (int) size * nmemb);
|
||||
|
||||
ch->in_callback = 1;
|
||||
error = call_user_function(EG(function_table),
|
||||
NULL,
|
||||
t->func,
|
||||
retval, 3, argv TSRMLS_CC);
|
||||
ch->in_callback = 0;
|
||||
if (error == FAILURE) {
|
||||
php_error(E_WARNING, "%s(): Cannot call the CURLOPT_READFUNCTION",
|
||||
get_active_function_name(TSRMLS_C));
|
||||
@@ -532,10 +676,11 @@ static size_t curl_write_header(char *data, size_t size, size_t nmemb, void *ctx
|
||||
case PHP_CURL_STDOUT:
|
||||
/* Handle special case write when we're returning the entire transfer
|
||||
*/
|
||||
if (ch->handlers->write->method == PHP_CURL_RETURN)
|
||||
if (ch->handlers->write->method == PHP_CURL_RETURN && length > 0) {
|
||||
smart_str_appendl(&ch->handlers->write->buf, data, (int) length);
|
||||
else
|
||||
} else {
|
||||
PHPWRITE(data, length);
|
||||
}
|
||||
break;
|
||||
case PHP_CURL_FILE:
|
||||
return fwrite(data, size, nmemb, t->fp);
|
||||
@@ -553,24 +698,24 @@ static size_t curl_write_header(char *data, size_t size, size_t nmemb, void *ctx
|
||||
zend_list_addref(ch->id);
|
||||
ZVAL_STRINGL(argv[1], data, length, 1);
|
||||
|
||||
ch->in_callback = 1;
|
||||
error = call_user_function(EG(function_table),
|
||||
NULL,
|
||||
t->func,
|
||||
retval, 2, argv TSRMLS_CC);
|
||||
ch->in_callback = 0;
|
||||
if (error == FAILURE) {
|
||||
php_error(E_WARNING, "%s(): Couldn't call the CURLOPT_HEADERFUNCTION",
|
||||
get_active_function_name(TSRMLS_C));
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Could not call the CURLOPT_HEADERFUNCTION");
|
||||
length = -1;
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
if (Z_TYPE_P(retval) != IS_LONG) {
|
||||
convert_to_long_ex(&retval);
|
||||
}
|
||||
length = Z_LVAL_P(retval);
|
||||
zval_ptr_dtor(&retval);
|
||||
}
|
||||
zval_ptr_dtor(&argv[0]);
|
||||
zval_ptr_dtor(&argv[1]);
|
||||
zval_ptr_dtor(&retval);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -606,10 +751,12 @@ static size_t curl_passwd(void *ctx, char *prompt, char *buf, int buflen)
|
||||
ZVAL_STRING(argv[1], prompt, 1);
|
||||
ZVAL_LONG(argv[2], buflen);
|
||||
|
||||
ch->in_callback = 1;
|
||||
error = call_user_function(EG(function_table),
|
||||
NULL,
|
||||
func,
|
||||
retval, 2, argv TSRMLS_CC);
|
||||
ch->in_callback = 0;
|
||||
if (error == FAILURE) {
|
||||
php_error(E_WARNING, "%s(): Couldn't call the CURLOPT_PASSWDFUNCTION", get_active_function_name(TSRMLS_C));
|
||||
} else if (Z_TYPE_P(retval) == IS_STRING) {
|
||||
@@ -680,7 +827,9 @@ static void alloc_curl_handle(php_curl **ch)
|
||||
(*ch)->handlers->write_header = ecalloc(1, sizeof(php_curl_write));
|
||||
(*ch)->handlers->read = ecalloc(1, sizeof(php_curl_read));
|
||||
memset(&(*ch)->err, 0, sizeof((*ch)->err));
|
||||
|
||||
|
||||
(*ch)->in_callback = 0;
|
||||
|
||||
zend_llist_init(&(*ch)->to_free.str, sizeof(char *),
|
||||
(void(*)(void *)) curl_free_string, 0);
|
||||
zend_llist_init(&(*ch)->to_free.slist, sizeof(struct curl_slist),
|
||||
@@ -780,7 +929,6 @@ PHP_FUNCTION(curl_setopt)
|
||||
case CURLOPT_FTPLISTONLY:
|
||||
case CURLOPT_FTPAPPEND:
|
||||
case CURLOPT_NETRC:
|
||||
case CURLOPT_FOLLOWLOCATION:
|
||||
case CURLOPT_PUT:
|
||||
#if CURLOPT_MUTE != 0
|
||||
case CURLOPT_MUTE:
|
||||
@@ -817,6 +965,16 @@ PHP_FUNCTION(curl_setopt)
|
||||
convert_to_long_ex(zvalue);
|
||||
error = curl_easy_setopt(ch->cp, option, Z_LVAL_PP(zvalue));
|
||||
break;
|
||||
case CURLOPT_FOLLOWLOCATION:
|
||||
convert_to_long_ex(zvalue);
|
||||
if ((PG(open_basedir) && *PG(open_basedir)) || PG(safe_mode)) {
|
||||
if (Z_LVAL_PP(zvalue) != 0) {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "CURLOPT_FOLLOWLOCATION cannot be activated when in safe_mode or an open_basedir is set");
|
||||
RETURN_FALSE;
|
||||
}
|
||||
}
|
||||
error = curl_easy_setopt(ch->cp, option, Z_LVAL_PP(zvalue));
|
||||
break;
|
||||
case CURLOPT_URL:
|
||||
case CURLOPT_PROXY:
|
||||
case CURLOPT_USERPWD:
|
||||
@@ -918,6 +1076,7 @@ PHP_FUNCTION(curl_setopt)
|
||||
case CURLOPT_WRITEFUNCTION:
|
||||
if (ch->handlers->write->func) {
|
||||
zval_ptr_dtor(&ch->handlers->write->func);
|
||||
ch->handlers->write->func = NULL;
|
||||
}
|
||||
zval_add_ref(zvalue);
|
||||
ch->handlers->write->func = *zvalue;
|
||||
@@ -926,6 +1085,7 @@ PHP_FUNCTION(curl_setopt)
|
||||
case CURLOPT_READFUNCTION:
|
||||
if (ch->handlers->read->func) {
|
||||
zval_ptr_dtor(&ch->handlers->read->func);
|
||||
ch->handlers->read->func = NULL;
|
||||
}
|
||||
zval_add_ref(zvalue);
|
||||
ch->handlers->read->func = *zvalue;
|
||||
@@ -934,6 +1094,7 @@ PHP_FUNCTION(curl_setopt)
|
||||
case CURLOPT_HEADERFUNCTION:
|
||||
if (ch->handlers->write_header->func) {
|
||||
zval_ptr_dtor(&ch->handlers->write_header->func);
|
||||
ch->handlers->write_header->func = NULL;
|
||||
}
|
||||
zval_add_ref(zvalue);
|
||||
ch->handlers->write_header->func = *zvalue;
|
||||
@@ -943,6 +1104,7 @@ PHP_FUNCTION(curl_setopt)
|
||||
case CURLOPT_PASSWDFUNCTION:
|
||||
if (ch->handlers->passwd) {
|
||||
zval_ptr_dtor(&ch->handlers->passwd);
|
||||
ch->handlers->passwd = NULL;
|
||||
}
|
||||
zval_add_ref(zvalue);
|
||||
ch->handlers->passwd = *zvalue;
|
||||
@@ -982,10 +1144,15 @@ PHP_FUNCTION(curl_setopt)
|
||||
|
||||
postval = Z_STRVAL_PP(current);
|
||||
if (*postval == '@') {
|
||||
++postval;
|
||||
/* safe_mode / open_basedir check */
|
||||
if (php_check_open_basedir(postval TSRMLS_CC) || (PG(safe_mode) && !php_checkuid(postval, "rb+", CHECKUID_CHECK_MODE_PARAM))) {
|
||||
RETURN_FALSE;
|
||||
}
|
||||
error = curl_formadd(&first, &last,
|
||||
CURLFORM_COPYNAME, string_key,
|
||||
CURLFORM_NAMELENGTH, (long)string_key_len - 1,
|
||||
CURLFORM_FILE, ++postval,
|
||||
CURLFORM_FILE, postval,
|
||||
CURLFORM_END);
|
||||
}
|
||||
else {
|
||||
@@ -1099,8 +1266,9 @@ cleanup_handle(php_curl *ch)
|
||||
return;
|
||||
}
|
||||
|
||||
if (ch->handlers->write->buf.len) {
|
||||
memset(&ch->handlers->write->buf, 0, sizeof(smart_str));
|
||||
if (ch->handlers->write->buf.len > 0) {
|
||||
smart_str_free(&ch->handlers->write->buf);
|
||||
ch->handlers->write->buf.len = 0;
|
||||
}
|
||||
|
||||
memset(ch->err.str, 0, CURL_ERROR_SIZE + 1);
|
||||
@@ -1130,6 +1298,7 @@ PHP_FUNCTION(curl_exec)
|
||||
if (error != CURLE_OK && error != CURLE_PARTIAL_FILE) {
|
||||
if (ch->handlers->write->buf.len > 0) {
|
||||
smart_str_free(&ch->handlers->write->buf);
|
||||
ch->handlers->write->buf.len = 0;
|
||||
}
|
||||
|
||||
RETURN_FALSE;
|
||||
@@ -1138,9 +1307,15 @@ PHP_FUNCTION(curl_exec)
|
||||
ch->uses++;
|
||||
|
||||
if (ch->handlers->write->method == PHP_CURL_RETURN && ch->handlers->write->buf.len > 0) {
|
||||
if (ch->handlers->write->type != PHP_CURL_BINARY)
|
||||
--ch->uses;
|
||||
if (ch->handlers->write->type != PHP_CURL_BINARY) {
|
||||
smart_str_0(&ch->handlers->write->buf);
|
||||
RETURN_STRINGL(ch->handlers->write->buf.c, ch->handlers->write->buf.len, 0);
|
||||
}
|
||||
RETURN_STRINGL(ch->handlers->write->buf.c, ch->handlers->write->buf.len, 1);
|
||||
}
|
||||
--ch->uses;
|
||||
if (ch->handlers->write->method == PHP_CURL_RETURN) {
|
||||
RETURN_EMPTY_STRING();
|
||||
}
|
||||
|
||||
RETURN_TRUE;
|
||||
@@ -1337,8 +1512,16 @@ PHP_FUNCTION(curl_close)
|
||||
WRONG_PARAM_COUNT;
|
||||
}
|
||||
ZEND_FETCH_RESOURCE(ch, php_curl *, zid, -1, le_curl_name, le_curl);
|
||||
|
||||
zend_list_delete(Z_LVAL_PP(zid));
|
||||
|
||||
if (ch->in_callback) {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Attempt to close CURL handle from a callback");
|
||||
return;
|
||||
}
|
||||
if (ch->uses) {
|
||||
ch->uses--;
|
||||
} else {
|
||||
zend_list_delete(Z_LVAL_PP(zid));
|
||||
}
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
@@ -1353,14 +1536,26 @@ static void _php_curl_close(zend_rsrc_list_entry *rsrc TSRMLS_DC)
|
||||
zend_llist_clean(&ch->to_free.slist);
|
||||
zend_llist_clean(&ch->to_free.post);
|
||||
|
||||
if (ch->handlers->write->func)
|
||||
zval_ptr_dtor(&ch->handlers->write->func);
|
||||
if (ch->handlers->read->func)
|
||||
if (ch->handlers->write->buf.len > 0) {
|
||||
smart_str_free(&ch->handlers->write->buf);
|
||||
ch->handlers->write->buf.len = 0;
|
||||
}
|
||||
if (ch->handlers->write->func) {
|
||||
FREE_ZVAL(ch->handlers->write->func);
|
||||
ch->handlers->read->func = NULL;
|
||||
}
|
||||
if (ch->handlers->read->func) {
|
||||
zval_ptr_dtor(&ch->handlers->read->func);
|
||||
if (ch->handlers->write_header->func)
|
||||
zval_ptr_dtor(&ch->handlers->write_header->func);
|
||||
if (ch->handlers->passwd)
|
||||
zval_ptr_dtor(&ch->handlers->passwd);
|
||||
ch->handlers->read->func = NULL;
|
||||
}
|
||||
if (ch->handlers->write_header->func) {
|
||||
FREE_ZVAL(ch->handlers->write_header->func);
|
||||
ch->handlers->write_header->func = NULL;
|
||||
}
|
||||
if (ch->handlers->passwd) {
|
||||
FREE_ZVAL(ch->handlers->passwd);
|
||||
ch->handlers->passwd = NULL;
|
||||
}
|
||||
|
||||
efree(ch->handlers->write);
|
||||
efree(ch->handlers->write_header);
|
||||
@@ -1370,7 +1565,7 @@ static void _php_curl_close(zend_rsrc_list_entry *rsrc TSRMLS_DC)
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
#endif
|
||||
#endif /* HAVE_CURL */
|
||||
|
||||
/*
|
||||
* Local variables:
|
||||
|
||||
+4
-4
@@ -46,7 +46,7 @@ RSC=rc.exe
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /I "..\.." /I "..\..\..\Zend" /I "..\..\..\bindlib_w32" /I "..\..\..\TSRM" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "COMPILE_DL_CURL" /D ZTS=1 /YX /FD /c
|
||||
# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\.." /I "..\..\Zend" /I "..\..\..\bindlib_w32" /I "..\..\TSRM" /I "..\..\main" /I "..\..\..\php_build\curl\include" /D "WIN32" /D "CURL_EXPORTS" /D "COMPILE_DL_CURL" /D ZTS=1 /D HAVE_CURL=1 /D ZEND_DEBUG=0 /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "ZEND_WIN32" /D "PHP_WIN32" /YX /FD /c
|
||||
# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\.." /I "..\..\Zend" /I "..\..\..\bindlib_w32" /I "..\..\TSRM" /I "..\..\main" /I "..\..\..\php_build\curl\include" /D "WIN32" /D "CURL_EXPORTS" /D "COMPILE_DL_CURL" /D ZTS=1 /D HAVE_CURL=1 /D ZEND_DEBUG=0 /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "ZEND_WIN32" /D "PHP_WIN32" /D "CURL_STATICLIB" /YX /FD /c
|
||||
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
||||
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
||||
# ADD BASE RSC /l 0x406 /d "NDEBUG"
|
||||
@@ -74,7 +74,7 @@ LINK32=link.exe
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /I "..\.." /I "..\..\Zend" /I "..\..\..\bindlib_w32" /I "..\..\TSRM" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "COMPILE_DL_CURL" /D ZTS=1 /YX /FD /c
|
||||
# ADD CPP /nologo /MDd /W3 /GX /ZI /Od /I "..\.." /I "..\..\Zend" /I "..\..\..\bindlib_w32" /I "..\..\TSRM" /I "..\..\main" /I "..\..\..\php_build\curl\include" /D ZEND_DEBUG=1 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "CURL_EXPORTS" /D "COMPILE_DL_CURL" /D ZTS=1 /D "ZEND_WIN32" /D "PHP_WIN32" /D HAVE_CURL=1 /FR /YX /FD /c
|
||||
# ADD CPP /nologo /MDd /W3 /GX /ZI /Od /I "..\.." /I "..\..\Zend" /I "..\..\..\bindlib_w32" /I "..\..\TSRM" /I "..\..\main" /I "..\..\..\php_build\curl\include" /D ZEND_DEBUG=1 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "CURL_EXPORTS" /D "COMPILE_DL_CURL" /D ZTS=1 /D "ZEND_WIN32" /D "PHP_WIN32" /D HAVE_CURL=1 /D "CURL_STATICLIB" /FR /YX /FD /c
|
||||
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
||||
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
||||
# ADD BASE RSC /l 0x406 /d "NDEBUG"
|
||||
@@ -102,7 +102,7 @@ LINK32=link.exe
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /MDd /W3 /GX /ZI /Od /I "..\.." /I "..\..\Zend" /I "..\..\..\bindlib_w32" /I "..\..\TSRM" /I "..\..\main" /D ZEND_DEBUG=1 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "CURL_EXPORTS" /D "COMPILE_DL_CURL" /D ZTS=1 /D "ZEND_WIN32" /D "PHP_WIN32" /D HAVE_CURL=1 /FR /YX /FD /c
|
||||
# ADD CPP /nologo /MDd /W3 /GX /ZI /Od /I "..\.." /I "..\..\Zend" /I "..\..\..\bindlib_w32" /I "..\..\TSRM" /I "..\..\main" /I "..\..\..\php_build\curl\include" /D ZEND_DEBUG=1 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "CURL_EXPORTS" /D "COMPILE_DL_CURL" /D ZTS=1 /D "ZEND_WIN32" /D "PHP_WIN32" /D HAVE_CURL=1 /FR /YX /FD /c
|
||||
# ADD CPP /nologo /MDd /W3 /GX /ZI /Od /I "..\.." /I "..\..\Zend" /I "..\..\..\bindlib_w32" /I "..\..\TSRM" /I "..\..\main" /I "..\..\..\php_build\curl\include" /D ZEND_DEBUG=1 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "CURL_EXPORTS" /D "COMPILE_DL_CURL" /D ZTS=1 /D "ZEND_WIN32" /D "PHP_WIN32" /D HAVE_CURL=1 /D "CURL_STATICLIB" /FR /YX /FD /c
|
||||
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
||||
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
||||
# ADD BASE RSC /l 0x406 /d "NDEBUG"
|
||||
@@ -131,7 +131,7 @@ LINK32=link.exe
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "..\.." /I "..\..\Zend" /I "..\..\..\bindlib_w32" /I "..\..\TSRM" /I "..\..\main" /D "WIN32" /D "CURL_EXPORTS" /D "COMPILE_DL_CURL" /D ZTS=1 /D HAVE_CURL=1 /D ZEND_DEBUG=0 /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "ZEND_WIN32" /D "PHP_WIN32" /YX /FD /c
|
||||
# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\.." /I "..\..\Zend" /I "..\..\..\bindlib_w32" /I "..\..\TSRM" /I "..\..\main" /I "..\..\..\php_build\curl\include" /D "WIN32" /D "CURL_EXPORTS" /D "COMPILE_DL_CURL" /D ZTS=1 /D HAVE_CURL=1 /D ZEND_DEBUG=0 /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "ZEND_WIN32" /D "PHP_WIN32" /YX /FD /c
|
||||
# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\.." /I "..\..\Zend" /I "..\..\..\bindlib_w32" /I "..\..\TSRM" /I "..\..\main" /I "..\..\..\php_build\curl\include" /D "WIN32" /D "CURL_EXPORTS" /D "COMPILE_DL_CURL" /D ZTS=1 /D HAVE_CURL=1 /D ZEND_DEBUG=0 /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "ZEND_WIN32" /D "PHP_WIN32" /D "CURL_STATICLIB" /YX /FD /c
|
||||
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
||||
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
||||
# ADD BASE RSC /l 0x406 /d "NDEBUG"
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
@@ -297,7 +297,11 @@ PHPAPI php_stream *php_curl_stream_opener(php_stream_wrapper *wrapper, char *fil
|
||||
curl_easy_setopt(curlstream->curl, CURLOPT_WRITEHEADER, stream);
|
||||
|
||||
/* currently buggy (bug is in curl) */
|
||||
curl_easy_setopt(curlstream->curl, CURLOPT_FOLLOWLOCATION, 1);
|
||||
if ((PG(open_basedir) && *PG(open_basedir)) || PG(safe_mode)) {
|
||||
curl_easy_setopt(curlstream->curl, CURLOPT_FOLLOWLOCATION, 0);
|
||||
} else {
|
||||
curl_easy_setopt(curlstream->curl, CURLOPT_FOLLOWLOCATION, 1);
|
||||
}
|
||||
|
||||
curl_easy_setopt(curlstream->curl, CURLOPT_ERRORBUFFER, curlstream->errstr);
|
||||
curl_easy_setopt(curlstream->curl, CURLOPT_VERBOSE, 0);
|
||||
|
||||
+5
-4
@@ -2,12 +2,12 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
@@ -93,6 +93,7 @@ typedef struct {
|
||||
struct _php_curl_free to_free;
|
||||
long id;
|
||||
unsigned int uses;
|
||||
zend_bool in_callback;
|
||||
} php_curl;
|
||||
|
||||
/* streams support */
|
||||
|
||||
+4
-4
@@ -2,12 +2,12 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
+4
-4
@@ -2,12 +2,12 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
+4
-4
@@ -2,12 +2,12 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
+1
-1
@@ -223,7 +223,7 @@ AC_ARG_WITH(db4,
|
||||
break
|
||||
fi
|
||||
done
|
||||
PHP_DBA_DB_CHECK(4, db-4.2 db-4.1 db-4.0 db-4 db4 db, [(void)db_create((DB**)0, (DB_ENV*)0, 0)])
|
||||
PHP_DBA_DB_CHECK(4, db-4.5 db-4.4 db-4.3 db-4.2 db-4.1 db-4.0 db-4 db4 db, [(void)db_create((DB**)0, (DB_ENV*)0, 0)])
|
||||
fi
|
||||
])
|
||||
AC_DBA_STD_RESULT(db4,Berkeley DB4)
|
||||
|
||||
+4
-4
@@ -2,12 +2,12 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
+4
-4
@@ -2,12 +2,12 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
+4
-4
@@ -2,12 +2,12 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
+4
-4
@@ -2,12 +2,12 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
+4
-4
@@ -2,12 +2,12 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
+4
-4
@@ -2,12 +2,12 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
+4
-4
@@ -2,12 +2,12 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
+4
-4
@@ -2,12 +2,12 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
+4
-4
@@ -2,12 +2,12 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
+106
-116
@@ -2,12 +2,12 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
@@ -118,33 +118,33 @@ static PHP_MSHUTDOWN_FUNCTION(dbase)
|
||||
Opens a dBase-format database file */
|
||||
PHP_FUNCTION(dbase_open)
|
||||
{
|
||||
pval *dbf_name, *options;
|
||||
zval **dbf_name, **options;
|
||||
dbhead_t *dbh;
|
||||
int handle;
|
||||
DBase_TLS_VARS;
|
||||
|
||||
if (ZEND_NUM_ARGS() != 2 || getParameters(ht, 2, &dbf_name, &options)==FAILURE) {
|
||||
if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &dbf_name, &options) == FAILURE) {
|
||||
WRONG_PARAM_COUNT;
|
||||
}
|
||||
convert_to_string(dbf_name);
|
||||
convert_to_long(options);
|
||||
convert_to_string_ex(dbf_name);
|
||||
convert_to_long_ex(options);
|
||||
|
||||
if (Z_LVAL_P(options) == 1) {
|
||||
php_error(E_WARNING, "Cannot open %s in write-only mode", Z_STRVAL_P(dbf_name));
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
if (PG(safe_mode) && (!php_checkuid(Z_STRVAL_P(dbf_name), NULL, CHECKUID_CHECK_FILE_AND_DIR))) {
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
if (php_check_open_basedir(Z_STRVAL_P(dbf_name) TSRMLS_CC)) {
|
||||
if (Z_LVAL_PP(options) == 1) {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Cannot open %s in write-only mode", Z_STRVAL_PP(dbf_name));
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
dbh = dbf_open(Z_STRVAL_P(dbf_name), Z_LVAL_P(options) TSRMLS_CC);
|
||||
if (PG(safe_mode) && (!php_checkuid(Z_STRVAL_PP(dbf_name), NULL, CHECKUID_CHECK_FILE_AND_DIR))) {
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
if (php_check_open_basedir(Z_STRVAL_PP(dbf_name) TSRMLS_CC)) {
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
dbh = dbf_open(Z_STRVAL_PP(dbf_name), Z_LVAL_PP(options) TSRMLS_CC);
|
||||
if (dbh == NULL) {
|
||||
php_error(E_WARNING, "unable to open database %s", Z_STRVAL_P(dbf_name));
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "unable to open database %s", Z_STRVAL_PP(dbf_name));
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
@@ -157,22 +157,22 @@ PHP_FUNCTION(dbase_open)
|
||||
Closes an open dBase-format database file */
|
||||
PHP_FUNCTION(dbase_close)
|
||||
{
|
||||
pval *dbh_id;
|
||||
zval **dbh_id;
|
||||
dbhead_t *dbh;
|
||||
int dbh_type;
|
||||
DBase_TLS_VARS;
|
||||
|
||||
if (ZEND_NUM_ARGS() != 1 || getParameters(ht, 1, &dbh_id)==FAILURE) {
|
||||
if (ZEND_NUM_ARGS() != 1 || (zend_get_parameters_ex(1, &dbh_id) == FAILURE)) {
|
||||
WRONG_PARAM_COUNT;
|
||||
}
|
||||
convert_to_long(dbh_id);
|
||||
dbh = zend_list_find(Z_LVAL_P(dbh_id), &dbh_type);
|
||||
convert_to_long_ex(dbh_id);
|
||||
dbh = zend_list_find(Z_LVAL_PP(dbh_id), &dbh_type);
|
||||
if (!dbh || dbh_type != DBase_GLOBAL(le_dbhead)) {
|
||||
php_error(E_WARNING, "Unable to find database for identifier %d", Z_LVAL_P(dbh_id));
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to find database for identifier %ld", Z_LVAL_PP(dbh_id));
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
zend_list_delete(Z_LVAL_P(dbh_id));
|
||||
zend_list_delete(Z_LVAL_PP(dbh_id));
|
||||
RETURN_TRUE;
|
||||
}
|
||||
/* }}} */
|
||||
@@ -181,18 +181,18 @@ PHP_FUNCTION(dbase_close)
|
||||
Returns the number of records in the database */
|
||||
PHP_FUNCTION(dbase_numrecords)
|
||||
{
|
||||
pval *dbh_id;
|
||||
zval **dbh_id;
|
||||
dbhead_t *dbh;
|
||||
int dbh_type;
|
||||
DBase_TLS_VARS;
|
||||
|
||||
if (ZEND_NUM_ARGS() != 1 || getParameters(ht, 1, &dbh_id)==FAILURE) {
|
||||
if (ZEND_NUM_ARGS() != 1 || (zend_get_parameters_ex(1, &dbh_id) == FAILURE)) {
|
||||
WRONG_PARAM_COUNT;
|
||||
}
|
||||
convert_to_long(dbh_id);
|
||||
dbh = zend_list_find(Z_LVAL_P(dbh_id), &dbh_type);
|
||||
convert_to_long_ex(dbh_id);
|
||||
dbh = zend_list_find(Z_LVAL_PP(dbh_id), &dbh_type);
|
||||
if (!dbh || dbh_type != DBase_GLOBAL(le_dbhead)) {
|
||||
php_error(E_WARNING, "Unable to find database for identifier %d", Z_LVAL_P(dbh_id));
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to find database for identifier %ld", Z_LVAL_PP(dbh_id));
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
@@ -204,18 +204,18 @@ PHP_FUNCTION(dbase_numrecords)
|
||||
Returns the number of fields (columns) in the database */
|
||||
PHP_FUNCTION(dbase_numfields)
|
||||
{
|
||||
pval *dbh_id;
|
||||
zval **dbh_id;
|
||||
dbhead_t *dbh;
|
||||
int dbh_type;
|
||||
DBase_TLS_VARS;
|
||||
|
||||
if (ZEND_NUM_ARGS() != 1 || getParameters(ht, 1, &dbh_id)==FAILURE) {
|
||||
if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &dbh_id) == FAILURE) {
|
||||
WRONG_PARAM_COUNT;
|
||||
}
|
||||
convert_to_long(dbh_id);
|
||||
dbh = zend_list_find(Z_LVAL_P(dbh_id), &dbh_type);
|
||||
convert_to_long_ex(dbh_id);
|
||||
dbh = zend_list_find(Z_LVAL_PP(dbh_id), &dbh_type);
|
||||
if (!dbh || dbh_type != DBase_GLOBAL(le_dbhead)) {
|
||||
php_error(E_WARNING, "Unable to find database for identifier %d", Z_LVAL_P(dbh_id));
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to find database for identifier %ld", Z_LVAL_PP(dbh_id));
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
@@ -227,18 +227,18 @@ PHP_FUNCTION(dbase_numfields)
|
||||
Packs the database (deletes records marked for deletion) */
|
||||
PHP_FUNCTION(dbase_pack)
|
||||
{
|
||||
pval *dbh_id;
|
||||
zval **dbh_id;
|
||||
dbhead_t *dbh;
|
||||
int dbh_type;
|
||||
DBase_TLS_VARS;
|
||||
|
||||
if (ZEND_NUM_ARGS() != 1 || getParameters(ht, 1, &dbh_id)==FAILURE) {
|
||||
if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &dbh_id) == FAILURE) {
|
||||
WRONG_PARAM_COUNT;
|
||||
}
|
||||
convert_to_long(dbh_id);
|
||||
dbh = zend_list_find(Z_LVAL_P(dbh_id), &dbh_type);
|
||||
convert_to_long_ex(dbh_id);
|
||||
dbh = zend_list_find(Z_LVAL_PP(dbh_id), &dbh_type);
|
||||
if (!dbh || dbh_type != DBase_GLOBAL(le_dbhead)) {
|
||||
php_error(E_WARNING, "Unable to find database for identifier %d", Z_LVAL_P(dbh_id));
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to find database for identifier %ld", Z_LVAL_PP(dbh_id));
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
@@ -252,7 +252,7 @@ PHP_FUNCTION(dbase_pack)
|
||||
Adds a record to the database */
|
||||
PHP_FUNCTION(dbase_add_record)
|
||||
{
|
||||
pval *dbh_id, *fields, **field;
|
||||
zval **dbh_id, **fields, **field;
|
||||
dbhead_t *dbh;
|
||||
int dbh_type;
|
||||
|
||||
@@ -262,40 +262,36 @@ PHP_FUNCTION(dbase_add_record)
|
||||
int i;
|
||||
DBase_TLS_VARS;
|
||||
|
||||
if (ZEND_NUM_ARGS() != 2 || getParameters(ht, 2, &dbh_id, &fields)==FAILURE) {
|
||||
if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &dbh_id, &fields) == FAILURE) {
|
||||
WRONG_PARAM_COUNT;
|
||||
}
|
||||
convert_to_long(dbh_id);
|
||||
if (Z_TYPE_P(fields) != IS_ARRAY) {
|
||||
php_error(E_WARNING, "Expected array as second parameter");
|
||||
convert_to_long_ex(dbh_id);
|
||||
if (Z_TYPE_PP(fields) != IS_ARRAY) {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Expected array as second parameter");
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
dbh = zend_list_find(Z_LVAL_P(dbh_id), &dbh_type);
|
||||
dbh = zend_list_find(Z_LVAL_PP(dbh_id), &dbh_type);
|
||||
if (!dbh || dbh_type != DBase_GLOBAL(le_dbhead)) {
|
||||
php_error(E_WARNING, "Unable to find database for identifier %d", Z_LVAL_P(dbh_id));
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to find database for identifier %ld", Z_LVAL_PP(dbh_id));
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
num_fields = zend_hash_num_elements(Z_ARRVAL_P(fields));
|
||||
num_fields = zend_hash_num_elements(Z_ARRVAL_PP(fields));
|
||||
|
||||
if (num_fields != dbh->db_nfields) {
|
||||
php_error(E_WARNING, "Wrong number of fields specified");
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Wrong number of fields specified");
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
cp = t_cp = (char *)emalloc(dbh->db_rlen + 1);
|
||||
if (!cp) {
|
||||
php_error(E_WARNING, "unable to allocate memory");
|
||||
RETURN_FALSE;
|
||||
}
|
||||
*t_cp++ = VALID_RECORD;
|
||||
|
||||
dbf = dbh->db_fields;
|
||||
for (i = 0, cur_f = dbf; cur_f < &dbf[num_fields]; i++, cur_f++) {
|
||||
zval tmp;
|
||||
if (zend_hash_index_find(Z_ARRVAL_P(fields), i, (void **)&field) == FAILURE) {
|
||||
php_error(E_WARNING, "unexpected error");
|
||||
if (zend_hash_index_find(Z_ARRVAL_PP(fields), i, (void **)&field) == FAILURE) {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "unexpected error");
|
||||
efree(cp);
|
||||
RETURN_FALSE;
|
||||
}
|
||||
@@ -310,7 +306,7 @@ PHP_FUNCTION(dbase_add_record)
|
||||
|
||||
dbh->db_records++;
|
||||
if (put_dbf_record(dbh, dbh->db_records, cp) < 0) {
|
||||
php_error(E_WARNING, "unable to put record at %ld", dbh->db_records);
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "unable to put record at %ld", dbh->db_records);
|
||||
efree(cp);
|
||||
RETURN_FALSE;
|
||||
}
|
||||
@@ -326,7 +322,7 @@ PHP_FUNCTION(dbase_add_record)
|
||||
Replaces a record to the database */
|
||||
PHP_FUNCTION(dbase_replace_record)
|
||||
{
|
||||
pval *dbh_id, *fields, **field, *recnum;
|
||||
zval **dbh_id, **fields, **field, **recnum;
|
||||
dbhead_t *dbh;
|
||||
int dbh_type;
|
||||
|
||||
@@ -336,40 +332,36 @@ PHP_FUNCTION(dbase_replace_record)
|
||||
int i;
|
||||
DBase_TLS_VARS;
|
||||
|
||||
if (ZEND_NUM_ARGS() != 3 || getParameters(ht, 3, &dbh_id, &fields, &recnum)==FAILURE) {
|
||||
if (ZEND_NUM_ARGS() != 3 || zend_get_parameters_ex(3, &dbh_id, &fields, &recnum) == FAILURE) {
|
||||
WRONG_PARAM_COUNT;
|
||||
}
|
||||
convert_to_long(dbh_id);
|
||||
convert_to_long(recnum);
|
||||
if (Z_TYPE_P(fields) != IS_ARRAY) {
|
||||
php_error(E_WARNING, "Expected array as second parameter");
|
||||
convert_to_long_ex(dbh_id);
|
||||
convert_to_long_ex(recnum);
|
||||
if (Z_TYPE_PP(fields) != IS_ARRAY) {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Expected array as second parameter");
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
dbh = zend_list_find(Z_LVAL_P(dbh_id), &dbh_type);
|
||||
dbh = zend_list_find(Z_LVAL_PP(dbh_id), &dbh_type);
|
||||
if (!dbh || dbh_type != DBase_GLOBAL(le_dbhead)) {
|
||||
php_error(E_WARNING, "Unable to find database for identifier %d", Z_LVAL_P(dbh_id));
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to find database for identifier %ld", Z_LVAL_PP(dbh_id));
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
num_fields = zend_hash_num_elements(Z_ARRVAL_P(fields));
|
||||
num_fields = zend_hash_num_elements(Z_ARRVAL_PP(fields));
|
||||
|
||||
if (num_fields != dbh->db_nfields) {
|
||||
php_error(E_WARNING, "Wrong number of fields specified");
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Wrong number of fields specified");
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
cp = t_cp = (char *)emalloc(dbh->db_rlen + 1);
|
||||
if (!cp) {
|
||||
php_error(E_WARNING, "unable to allocate memory");
|
||||
RETURN_FALSE;
|
||||
}
|
||||
*t_cp++ = VALID_RECORD;
|
||||
|
||||
dbf = dbh->db_fields;
|
||||
for (i = 0, cur_f = dbf; cur_f < &dbf[num_fields]; i++, cur_f++) {
|
||||
if (zend_hash_index_find(Z_ARRVAL_P(fields), i, (void **)&field) == FAILURE) {
|
||||
php_error(E_WARNING, "unexpected error");
|
||||
if (zend_hash_index_find(Z_ARRVAL_PP(fields), i, (void **)&field) == FAILURE) {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "unexpected error");
|
||||
efree(cp);
|
||||
RETURN_FALSE;
|
||||
}
|
||||
@@ -378,8 +370,8 @@ PHP_FUNCTION(dbase_replace_record)
|
||||
t_cp += cur_f->db_flen;
|
||||
}
|
||||
|
||||
if (put_dbf_record(dbh, Z_LVAL_P(recnum), cp) < 0) {
|
||||
php_error(E_WARNING, "unable to put record at %ld", dbh->db_records);
|
||||
if (put_dbf_record(dbh, Z_LVAL_PP(recnum), cp) < 0) {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "unable to put record at %ld", dbh->db_records);
|
||||
efree(cp);
|
||||
RETURN_FALSE;
|
||||
}
|
||||
@@ -395,28 +387,28 @@ PHP_FUNCTION(dbase_replace_record)
|
||||
Marks a record to be deleted */
|
||||
PHP_FUNCTION(dbase_delete_record)
|
||||
{
|
||||
pval *dbh_id, *record;
|
||||
zval **dbh_id, **record;
|
||||
dbhead_t *dbh;
|
||||
int dbh_type;
|
||||
DBase_TLS_VARS;
|
||||
|
||||
if (ZEND_NUM_ARGS() != 2 || getParameters(ht, 2, &dbh_id, &record)==FAILURE) {
|
||||
if (ZEND_NUM_ARGS() != 2 || (zend_get_parameters_ex(2, &dbh_id, &record) == FAILURE)) {
|
||||
WRONG_PARAM_COUNT;
|
||||
}
|
||||
convert_to_long(dbh_id);
|
||||
convert_to_long(record);
|
||||
convert_to_long_ex(dbh_id);
|
||||
convert_to_long_ex(record);
|
||||
|
||||
dbh = zend_list_find(Z_LVAL_P(dbh_id), &dbh_type);
|
||||
dbh = zend_list_find(Z_LVAL_PP(dbh_id), &dbh_type);
|
||||
if (!dbh || dbh_type != DBase_GLOBAL(le_dbhead)) {
|
||||
php_error(E_WARNING, "Unable to find database for identifier %d", Z_LVAL_P(dbh_id));
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to find database for identifier %ld", Z_LVAL_PP(dbh_id));
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
if (del_dbf_record(dbh, Z_LVAL_P(record)) < 0) {
|
||||
if (Z_LVAL_P(record) > dbh->db_records) {
|
||||
php_error(E_WARNING, "record %d out of bounds", Z_LVAL_P(record));
|
||||
if (del_dbf_record(dbh, Z_LVAL_PP(record)) < 0) {
|
||||
if (Z_LVAL_PP(record) > dbh->db_records) {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "record %ld out of bounds", Z_LVAL_PP(record));
|
||||
} else {
|
||||
php_error(E_WARNING, "unable to delete record %d", Z_LVAL_P(record));
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "unable to delete record %ld", Z_LVAL_PP(record));
|
||||
}
|
||||
RETURN_FALSE;
|
||||
}
|
||||
@@ -430,7 +422,7 @@ PHP_FUNCTION(dbase_delete_record)
|
||||
*/
|
||||
static void php_dbase_get_record(INTERNAL_FUNCTION_PARAMETERS, int assoc)
|
||||
{
|
||||
pval *dbh_id, *record;
|
||||
zval **dbh_id, **record;
|
||||
dbhead_t *dbh;
|
||||
int dbh_type;
|
||||
dbfield_t *dbf, *cur_f;
|
||||
@@ -440,28 +432,26 @@ static void php_dbase_get_record(INTERNAL_FUNCTION_PARAMETERS, int assoc)
|
||||
int errno_save;
|
||||
DBase_TLS_VARS;
|
||||
|
||||
if (ZEND_NUM_ARGS() != 2 || getParameters(ht, 2, &dbh_id, &record)==FAILURE) {
|
||||
if (ZEND_NUM_ARGS() != 2 || (zend_get_parameters_ex(2, &dbh_id, &record) == FAILURE)) {
|
||||
WRONG_PARAM_COUNT;
|
||||
}
|
||||
convert_to_long(dbh_id);
|
||||
convert_to_long(record);
|
||||
convert_to_long_ex(dbh_id);
|
||||
convert_to_long_ex(record);
|
||||
|
||||
dbh = zend_list_find(Z_LVAL_P(dbh_id), &dbh_type);
|
||||
dbh = zend_list_find(Z_LVAL_PP(dbh_id), &dbh_type);
|
||||
if (!dbh || dbh_type != DBase_GLOBAL(le_dbhead)) {
|
||||
php_error(E_WARNING, "Unable to find database for identifier %d", Z_LVAL_P(dbh_id));
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to find database for identifier %ld", Z_LVAL_PP(dbh_id));
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
if ((data = get_dbf_record(dbh, Z_LVAL_P(record))) == NULL) {
|
||||
php_error(E_WARNING, "Tried to read bad record %d", Z_LVAL_P(record));
|
||||
if ((data = get_dbf_record(dbh, Z_LVAL_PP(record))) == NULL) {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Tried to read bad record %ld", Z_LVAL_PP(record));
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
dbf = dbh->db_fields;
|
||||
|
||||
if (array_init(return_value) == FAILURE) {
|
||||
RETURN_FALSE;
|
||||
}
|
||||
array_init(return_value);
|
||||
|
||||
fnp = NULL;
|
||||
for (cur_f = dbf; cur_f < &dbf[dbh->db_nfields]; cur_f++) {
|
||||
@@ -582,7 +572,7 @@ PHP_FUNCTION(dbase_get_record_with_names)
|
||||
Creates a new dBase-format database file */
|
||||
PHP_FUNCTION(dbase_create)
|
||||
{
|
||||
pval *filename, *fields, **field, **value;
|
||||
zval **filename, **fields, **field, **value;
|
||||
int fd;
|
||||
dbhead_t *dbh;
|
||||
|
||||
@@ -591,37 +581,37 @@ PHP_FUNCTION(dbase_create)
|
||||
int i, rlen, handle;
|
||||
DBase_TLS_VARS;
|
||||
|
||||
if (ZEND_NUM_ARGS() != 2 || getParameters(ht, 2, &filename, &fields)==FAILURE) {
|
||||
if (ZEND_NUM_ARGS() != 2 || (zend_get_parameters_ex(2, &filename, &fields) == FAILURE)) {
|
||||
WRONG_PARAM_COUNT;
|
||||
}
|
||||
convert_to_string(filename);
|
||||
convert_to_string_ex(filename);
|
||||
|
||||
if (Z_TYPE_P(fields) != IS_ARRAY) {
|
||||
php_error(E_WARNING, "Expected array as second parameter");
|
||||
if (Z_TYPE_PP(fields) != IS_ARRAY) {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Expected array as second parameter");
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
if (PG(safe_mode) && (!php_checkuid(Z_STRVAL_P(filename), NULL, CHECKUID_CHECK_FILE_AND_DIR))) {
|
||||
if (PG(safe_mode) && (!php_checkuid(Z_STRVAL_PP(filename), NULL, CHECKUID_CHECK_FILE_AND_DIR))) {
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
if (php_check_open_basedir(Z_STRVAL_P(filename) TSRMLS_CC)) {
|
||||
if (php_check_open_basedir(Z_STRVAL_PP(filename) TSRMLS_CC)) {
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
if ((fd = VCWD_OPEN_MODE(Z_STRVAL_P(filename), O_BINARY|O_RDWR|O_CREAT, 0644)) < 0) {
|
||||
php_error(E_WARNING, "Unable to create database (%d): %s", errno, strerror(errno));
|
||||
if ((fd = VCWD_OPEN_MODE(Z_STRVAL_PP(filename), O_BINARY|O_RDWR|O_CREAT, 0644)) < 0) {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to create database (%d): %s", errno, strerror(errno));
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
num_fields = zend_hash_num_elements(Z_ARRVAL_P(fields));
|
||||
num_fields = zend_hash_num_elements(Z_ARRVAL_PP(fields));
|
||||
|
||||
/* have to use regular malloc() because this gets free()d by
|
||||
code in the dbase library */
|
||||
dbh = (dbhead_t *)malloc(sizeof(dbhead_t));
|
||||
dbf = (dbfield_t *)malloc(sizeof(dbfield_t) * num_fields);
|
||||
if (!dbh || !dbf) {
|
||||
php_error(E_WARNING, "Unable to allocate memory for header info");
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to allocate memory for header info");
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
@@ -651,27 +641,27 @@ PHP_FUNCTION(dbase_create)
|
||||
|
||||
for (i = 0, cur_f = dbf; i < num_fields; i++, cur_f++) {
|
||||
/* look up the first field */
|
||||
if (zend_hash_index_find(Z_ARRVAL_P(fields), i, (void **)&field) == FAILURE) {
|
||||
php_error(E_WARNING, "unable to find field %d", i);
|
||||
if (zend_hash_index_find(Z_ARRVAL_PP(fields), i, (void **)&field) == FAILURE) {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "unable to find field %d", i);
|
||||
free_dbf_head(dbh);
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
if (Z_TYPE_PP (field) != IS_ARRAY) {
|
||||
php_error(E_WARNING, "second parameter must be array of arrays");
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "second parameter must be array of arrays");
|
||||
free_dbf_head(dbh);
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
/* field name */
|
||||
if (zend_hash_index_find(Z_ARRVAL_PP(field), 0, (void **)&value) == FAILURE) {
|
||||
php_error(E_WARNING, "expected field name as first element of list in field %d", i);
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "expected field name as first element of list in field %d", i);
|
||||
free_dbf_head(dbh);
|
||||
RETURN_FALSE;
|
||||
}
|
||||
convert_to_string_ex(value);
|
||||
if (Z_STRLEN_PP(value) > 10 || Z_STRLEN_PP(value) == 0) {
|
||||
php_error(E_WARNING, "invalid field name '%s' (must be non-empty and less than or equal to 10 characters)", Z_STRVAL_PP(value));
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "invalid field name '%s' (must be non-empty and less than or equal to 10 characters)", Z_STRVAL_PP(value));
|
||||
free_dbf_head(dbh);
|
||||
RETURN_FALSE;
|
||||
}
|
||||
@@ -679,7 +669,7 @@ PHP_FUNCTION(dbase_create)
|
||||
|
||||
/* field type */
|
||||
if (zend_hash_index_find(Z_ARRVAL_PP (field), 1, (void **)&value) == FAILURE) {
|
||||
php_error(E_WARNING, "expected field type as second element of list in field %d", i);
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "expected field type as second element of list in field %d", i);
|
||||
RETURN_FALSE;
|
||||
}
|
||||
convert_to_string_ex(value);
|
||||
@@ -704,7 +694,7 @@ PHP_FUNCTION(dbase_create)
|
||||
case 'C':
|
||||
/* field length */
|
||||
if (zend_hash_index_find(Z_ARRVAL_PP (field), 2, (void **)&value) == FAILURE) {
|
||||
php_error(E_WARNING, "expected field length as third element of list in field %d", i);
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "expected field length as third element of list in field %d", i);
|
||||
free_dbf_head(dbh);
|
||||
RETURN_FALSE;
|
||||
}
|
||||
@@ -713,7 +703,7 @@ PHP_FUNCTION(dbase_create)
|
||||
|
||||
if (cur_f->db_type == 'N') {
|
||||
if (zend_hash_index_find(Z_ARRVAL_PP (field), 3, (void **)&value) == FAILURE) {
|
||||
php_error(E_WARNING, "expected field precision as fourth element of list in field %d", i);
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "expected field precision as fourth element of list in field %d", i);
|
||||
free_dbf_head(dbh);
|
||||
RETURN_FALSE;
|
||||
}
|
||||
@@ -722,7 +712,7 @@ PHP_FUNCTION(dbase_create)
|
||||
}
|
||||
break;
|
||||
default:
|
||||
php_error(E_WARNING, "unknown field type '%c'", cur_f->db_type);
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "unknown field type '%c'", cur_f->db_type);
|
||||
}
|
||||
cur_f->db_foffset = rlen;
|
||||
rlen += cur_f->db_flen;
|
||||
|
||||
+10
-9
@@ -136,7 +136,8 @@ void pack_dbf(dbhead_t *dbh)
|
||||
|
||||
/* Try to truncate the file to the right size. */
|
||||
if (ftruncate(dbh->db_fd, out_off) != 0) {
|
||||
php_error(E_WARNING, "dbase_pack() couldn't truncate the file to the right size. Some deleted records may still be left in there.");
|
||||
TSRMLS_FETCH();
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "dbase_pack() couldn't truncate the file to the right size. Some deleted records may still be left in there.");
|
||||
}
|
||||
|
||||
if (rec_cnt == 0)
|
||||
@@ -167,16 +168,16 @@ void put_field_val(char *rp, dbfield_t *fldp, char *cp)
|
||||
*/
|
||||
void out_rec(dbhead_t *dbh, dbfield_t *dbf, char *cp)
|
||||
{
|
||||
dbfield_t *cur_f;
|
||||
int nfields = dbh->db_nfields;
|
||||
char *fnp = (char *)malloc(dbh->db_rlen);
|
||||
dbfield_t *cur_f;
|
||||
int nfields = dbh->db_nfields;
|
||||
char *fnp = (char *)malloc(dbh->db_rlen);
|
||||
|
||||
printf("%c", *cp);
|
||||
for (cur_f = dbf; cur_f < &dbf[nfields] ; cur_f++) {
|
||||
printf(" ");
|
||||
printf("%c", *cp);
|
||||
for (cur_f = dbf; cur_f < &dbf[nfields] ; cur_f++) {
|
||||
printf(" ");
|
||||
printf(cur_f->db_format, get_field_val(cp, cur_f, fnp));
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
printf("\n");
|
||||
free(fnp);
|
||||
}
|
||||
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
@@ -23,4 +23,4 @@ unlink('/tmp/bug31754.dbf');
|
||||
|
||||
?>
|
||||
--EXPECTF--
|
||||
Warning: dbase_open(): Cannot open /tmp/bug31754.dbf in write-only mode in %sbug31754.php on line %d
|
||||
Warning: dbase_open() [/phpmanual/function.dbase-open.html]: Cannot open /tmp/bug31754.dbf in write-only mode in %sbug31754.php on line %d
|
||||
+4
-4
@@ -2,16 +2,16 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| dbx module version 1.0 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 2001 Guidance Rotterdam BV |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
+4
-4
@@ -2,16 +2,16 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| dbx module version 1.0 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 2001 Guidance Rotterdam BV |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
+4
-4
@@ -2,16 +2,16 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| dbx module version 1.0 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 2001 Guidance Rotterdam BV |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
+4
-4
@@ -2,16 +2,16 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| dbx module version 1.0 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 2001 Guidance Rotterdam BV |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
+4
-4
@@ -2,16 +2,16 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| dbx module version 1.0 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 2001 Guidance Rotterdam BV |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
+4
-4
@@ -2,16 +2,16 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| dbx module version 1.0 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 2001 Guidance Rotterdam BV |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
+4
-4
@@ -2,16 +2,16 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| dbx module version 1.0 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 2001 Guidance Rotterdam BV |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
+4
-4
@@ -2,16 +2,16 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| dbx module version 1.0 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 2001 Guidance Rotterdam BV |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
+4
-4
@@ -2,16 +2,16 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| dbx module version 1.0 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 2001 Guidance Rotterdam BV |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
+4
-4
@@ -2,16 +2,16 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| dbx module version 1.0 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 2001 Guidance Rotterdam BV |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
+4
-4
@@ -2,16 +2,16 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| dbx module version 1.0 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 2001 Guidance Rotterdam BV |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
+4
-4
@@ -2,16 +2,16 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| dbx module version 1.0 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 2001 Guidance Rotterdam BV |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
+4
-4
@@ -2,12 +2,12 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
+4
-4
@@ -2,12 +2,12 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
@@ -2,16 +2,16 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| dbx module version 1.0 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 2001 Guidance Rotterdam BV |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
@@ -2,16 +2,16 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| dbx module version 1.0 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 2001 Guidance Rotterdam BV |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
+4
-4
@@ -2,16 +2,16 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| dbx module version 1.0 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 2001 Guidance Rotterdam BV |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
+4
-4
@@ -2,12 +2,12 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
+4
-4
@@ -2,12 +2,12 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
+13
-4
@@ -2,12 +2,12 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
@@ -649,6 +649,7 @@ static inline void node_list_wrapper_dtor(xmlNodePtr node, int destroyref TSRMLS
|
||||
/* Skip property freeing for the following types */
|
||||
case XML_ATTRIBUTE_DECL:
|
||||
case XML_DTD_NODE:
|
||||
case XML_ELEMENT_DECL:
|
||||
case XML_ENTITY_DECL:
|
||||
case XML_ATTRIBUTE_NODE:
|
||||
break;
|
||||
@@ -689,6 +690,7 @@ static inline void node_list_unlink(xmlNodePtr node)
|
||||
case XML_ATTRIBUTE_DECL:
|
||||
case XML_DTD_NODE:
|
||||
case XML_ENTITY_DECL:
|
||||
case XML_ELEMENT_DECL:
|
||||
case XML_ATTRIBUTE_NODE:
|
||||
break;
|
||||
default:
|
||||
@@ -5518,6 +5520,13 @@ PHP_FUNCTION(domxml_xslt_version)
|
||||
/* }}} */
|
||||
#endif /* HAVE_DOMXSLT */
|
||||
|
||||
#ifdef PHP_WIN32
|
||||
__declspec(dllexport) BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
|
||||
{
|
||||
return xmlDllMain(hinstDLL, fdwReason, lpvReserved);
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* HAVE_DOMXML */
|
||||
|
||||
/*
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2003 The PHP Group |
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 4 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2002 The PHP Group |
|
||||
| Copyright (c) 1997-2006 The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 2.02 of the PHP license, |
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available at through the world-wide-web at |
|
||||
| http://www.php.net/license/2_02.txt. |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| http://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
|
||||
Loaded 100 of 928 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user