Compare commits
1935 Commits
v2.9.4
...
wip/ci-tes
Author | SHA1 | Date | |
---|---|---|---|
![]() |
915901975b | ||
![]() |
867d831e9a | ||
![]() |
a96b5cc8f6 | ||
![]() |
91439f04c0 | ||
![]() |
c144d0468b | ||
![]() |
482efae89a | ||
![]() |
cbb0927a7a | ||
![]() |
25440a07c3 | ||
![]() |
869a8d7ab3 | ||
![]() |
c8536ed50c | ||
![]() |
cfb43bf550 | ||
![]() |
816769af5b | ||
![]() |
c5e0b22c55 | ||
![]() |
c9145a1460 | ||
![]() |
199c03c8c6 | ||
![]() |
cdcdeacd63 | ||
![]() |
28a4726ddc | ||
![]() |
6b7d110ced | ||
![]() |
d5b4577315 | ||
![]() |
55e4f1c42e | ||
![]() |
08e13a3ac5 | ||
![]() |
f5926fbd23 | ||
![]() |
623d93c6f1 | ||
![]() |
1f608e600b | ||
![]() |
747a52aae8 | ||
![]() |
1f5c95d9e9 | ||
![]() |
09e9d1f749 | ||
![]() |
333a02d015 | ||
![]() |
734d888210 | ||
![]() |
4fc22a978a | ||
![]() |
7f8b0a19cf | ||
![]() |
cdfc3b9ea9 | ||
![]() |
076b2c1c73 | ||
![]() |
7121bb6e82 | ||
![]() |
da26097aab | ||
![]() |
e03fab07ed | ||
![]() |
0a85d79dff | ||
![]() |
d3545f37cd | ||
![]() |
ad20708766 | ||
![]() |
37118a4d2b | ||
![]() |
6199635e7f | ||
![]() |
c64dda4dea | ||
![]() |
5310f451f2 | ||
![]() |
65930492ca | ||
![]() |
04acbdc221 | ||
![]() |
e2ec2c9ab7 | ||
![]() |
939ec7a16e | ||
![]() |
29e78d3851 | ||
![]() |
c06f6f2565 | ||
![]() |
e4fd69e3d4 | ||
![]() |
f0554b27df | ||
![]() |
65edc9ad9a | ||
![]() |
a25f238168 | ||
![]() |
90c91d6c9a | ||
![]() |
090fd29acf | ||
![]() |
cc04916137 | ||
![]() |
964ae72fa8 | ||
![]() |
87eb728147 | ||
![]() |
078af20e8b | ||
![]() |
bd3f3fa5f7 | ||
![]() |
df818ad7d9 | ||
![]() |
c7844c775a | ||
![]() |
4758d3705d | ||
![]() |
bbbc2aad1b | ||
![]() |
7a275812c0 | ||
![]() |
453cb7ca79 | ||
![]() |
163608d7fd | ||
![]() |
71eb79fee4 | ||
![]() |
aec72593f2 | ||
![]() |
c5a798beec | ||
![]() |
2f376953f3 | ||
![]() |
53952feddd | ||
![]() |
f9adf88eca | ||
![]() |
82a424fc8a | ||
![]() |
c2cdf0d2a1 | ||
![]() |
83daed8706 | ||
![]() |
5d5838e712 | ||
![]() |
082f2f8ceb | ||
![]() |
7b950eb021 | ||
![]() |
37192a9136 | ||
![]() |
3871fbaacb | ||
![]() |
5deb695919 | ||
![]() |
bcff9a2ad8 | ||
![]() |
9c44d7baf4 | ||
![]() |
c361bdca6a | ||
![]() |
c522ccce7f | ||
![]() |
58cdff728d | ||
![]() |
bfd6eea98f | ||
![]() |
eeada79a64 | ||
![]() |
202393a77c | ||
![]() |
d9809f2787 | ||
![]() |
ea2f298a1a | ||
![]() |
7d9f3acfc9 | ||
![]() |
ad5be08a07 | ||
![]() |
308838da32 | ||
![]() |
92014628d1 | ||
![]() |
586f089df6 | ||
![]() |
a67eafc796 | ||
![]() |
5382401893 | ||
![]() |
8bb768ef93 | ||
![]() |
ed1d5061a4 | ||
![]() |
468ce821fe | ||
![]() |
87470f30a9 | ||
![]() |
ba72cc7b6d | ||
![]() |
c1091c38b8 | ||
![]() |
804f959a1d | ||
![]() |
7abeb10cf1 | ||
![]() |
a5a727122b | ||
![]() |
f7713a6a64 | ||
![]() |
3ebfa83fdd | ||
![]() |
ed55330153 | ||
![]() |
a2ff661d40 | ||
![]() |
706f9bca82 | ||
![]() |
6432694455 | ||
![]() |
cf140f3ab0 | ||
![]() |
c7322f406c | ||
![]() |
18eae24acf | ||
![]() |
c092af89a2 | ||
![]() |
2a8ab8bb7f | ||
![]() |
8665501c77 | ||
![]() |
7659caada1 | ||
![]() |
fd47adf595 | ||
![]() |
cadc51ede9 | ||
![]() |
57478b6575 | ||
![]() |
5c5aacd9da | ||
![]() |
93cc105a40 | ||
![]() |
33300630a3 | ||
![]() |
fd2167d856 | ||
![]() |
08fb808ea4 | ||
![]() |
c70c1e1896 | ||
![]() |
5cd70622aa | ||
![]() |
5ca767f7f8 | ||
![]() |
111441302c | ||
![]() |
ed6f544572 | ||
![]() |
ee85129a9b | ||
![]() |
93f926bf12 | ||
![]() |
da56297c5a | ||
![]() |
5d8b4719a8 | ||
![]() |
8a875afad0 | ||
![]() |
dc483b2342 | ||
![]() |
28a3d42ad1 | ||
![]() |
eb942fc274 | ||
![]() |
27acca0f5b | ||
![]() |
ececf2f640 | ||
![]() |
d72249d91f | ||
![]() |
2286990a6f | ||
![]() |
6ec523423a | ||
![]() |
77c8fe1421 | ||
![]() |
740352ceab | ||
![]() |
541b9ca744 | ||
![]() |
e9b9ff9f38 | ||
![]() |
9b8a7eaa01 | ||
![]() |
cdefb8e2d6 | ||
![]() |
16ee8eb233 | ||
![]() |
f6333b592b | ||
![]() |
6e4fc09ce0 | ||
![]() |
8aa3b03261 | ||
![]() |
23c7e7c3da | ||
![]() |
7510ab36b7 | ||
![]() |
d3f1ab7813 | ||
![]() |
4cdf6460b6 | ||
![]() |
5d3bf39103 | ||
![]() |
234fe86987 | ||
![]() |
6ca7f84d02 | ||
![]() |
7b359875d8 | ||
![]() |
4a228d1efe | ||
![]() |
ee8926503c | ||
![]() |
7d7be83216 | ||
![]() |
0058587958 | ||
![]() |
228e08543a | ||
![]() |
38f8cc8e0c | ||
![]() |
3e53635dfb | ||
![]() |
47b653cc7c | ||
![]() |
c6d9e26e2b | ||
![]() |
a3db4e5773 | ||
![]() |
1452e803fb | ||
![]() |
6f8b8c3d3c | ||
![]() |
8ddd5e3778 | ||
![]() |
4188f26ab9 | ||
![]() |
07f1fc60da | ||
![]() |
0c494a9c24 | ||
![]() |
053003f490 | ||
![]() |
4a09ce6fc3 | ||
![]() |
f4a592c4f0 | ||
![]() |
a388d0c553 | ||
![]() |
1e5180a148 | ||
![]() |
18b741804c | ||
![]() |
d935197895 | ||
![]() |
b29a046b55 | ||
![]() |
d99cd18fb9 | ||
![]() |
281038e725 | ||
![]() |
da0635c960 | ||
![]() |
c6f3fbd15c | ||
![]() |
0dccd8d373 | ||
![]() |
ad359d7a04 | ||
![]() |
2965fbcc87 | ||
![]() |
98ca4e98d5 | ||
![]() |
8f2429a2d2 | ||
![]() |
de157fcffd | ||
![]() |
e68976ab39 | ||
![]() |
806a0da258 | ||
![]() |
99e16110bc | ||
![]() |
2d184c0967 | ||
![]() |
ce91bebc39 | ||
![]() |
27fd9b3fd6 | ||
![]() |
f8467473dd | ||
![]() |
2dfe5357a9 | ||
![]() |
67adfa6f54 | ||
![]() |
0e5eda7de8 | ||
![]() |
628100c19f | ||
![]() |
2edf50d4dd | ||
![]() |
2dd5f8788c | ||
![]() |
76430228e1 | ||
![]() |
fc2fe7fd28 | ||
![]() |
5d72755027 | ||
![]() |
92496b183e | ||
![]() |
88cb0c9d20 | ||
![]() |
ec94565cb9 | ||
![]() |
552b2b1315 | ||
![]() |
a524adc698 | ||
![]() |
eccd0d05b5 | ||
![]() |
be6473227b | ||
![]() |
2f0239eb18 | ||
![]() |
99bdc4f251 | ||
![]() |
30a223a6cb | ||
![]() |
7d78c6bca0 | ||
![]() |
b1e963f563 | ||
![]() |
525a3bcc02 | ||
![]() |
2376b7fb6a | ||
![]() |
eddaf8c396 | ||
![]() |
dfaf0e31c7 | ||
![]() |
63e9c72114 | ||
![]() |
2c80cb7efd | ||
![]() |
4c178782a7 | ||
![]() |
aa7080f8fe | ||
![]() |
d583ca7d92 | ||
![]() |
1b760dd22b | ||
![]() |
02c92599fa | ||
![]() |
26acd02e9f | ||
![]() |
e7da3a052d | ||
![]() |
b6426a1e9f | ||
![]() |
f2d93f5abe | ||
![]() |
9ab03c5d23 | ||
![]() |
3118df2042 | ||
![]() |
c7849a8921 | ||
![]() |
13f6d9265a | ||
![]() |
241dd69b08 | ||
![]() |
539949973c | ||
![]() |
e7c88e0f83 | ||
![]() |
85bdb06cad | ||
![]() |
a0e80ebda2 | ||
![]() |
1186236ac1 | ||
![]() |
217fa9d0f9 | ||
![]() |
6c8b6ce23f | ||
![]() |
3f279971c5 | ||
![]() |
e7101ebcae | ||
![]() |
f64d1c847a | ||
![]() |
116a394ef6 | ||
![]() |
ebc40fe9c7 | ||
![]() |
c0aa47c7a1 | ||
![]() |
f38261f666 | ||
![]() |
2a81b98e7b | ||
![]() |
bb8f0beabe | ||
![]() |
adea019820 | ||
![]() |
50e2c6b3c7 | ||
![]() |
7db74ec205 | ||
![]() |
492c209d07 | ||
![]() |
29b5785bb4 | ||
![]() |
7329dbdc57 | ||
![]() |
bfe0af69fa | ||
![]() |
c81c89dc80 | ||
![]() |
31dd020114 | ||
![]() |
321587c73b | ||
![]() |
dba19a961b | ||
![]() |
65abf5c532 | ||
![]() |
c79ce843f4 | ||
![]() |
49758cafba | ||
![]() |
15600f405f | ||
![]() |
910851e04d | ||
![]() |
d1bd441a9a | ||
![]() |
737f87fa16 | ||
![]() |
4658c5d4e5 | ||
![]() |
332f2e65b9 | ||
![]() |
3131661f9e | ||
![]() |
ec4d3de9d2 | ||
![]() |
439ff094ce | ||
![]() |
7281da8b2c | ||
![]() |
dc09f2c75d | ||
![]() |
97d4afc4fb | ||
![]() |
19187dbacd | ||
![]() |
9d74ceedfd | ||
![]() |
034624983b | ||
![]() |
74f014bd8c | ||
![]() |
aabcf6f9f4 | ||
![]() |
ac986bb3a4 | ||
![]() |
03767ee0f9 | ||
![]() |
ba87247781 | ||
![]() |
f845af0370 | ||
![]() |
9ca1606e2a | ||
![]() |
9c049271e7 | ||
![]() |
e647cd00c6 | ||
![]() |
91df075d62 | ||
![]() |
6168507272 | ||
![]() |
9fbd23b06f | ||
![]() |
9e11280e52 | ||
![]() |
77dccacd02 | ||
![]() |
0667519d17 | ||
![]() |
fbacb82191 | ||
![]() |
6b2cc1d28b | ||
![]() |
a970c1ae2e | ||
![]() |
6a0e131b88 | ||
![]() |
215a164e57 | ||
![]() |
9e4c2ddc47 | ||
![]() |
bcbe42dd7a | ||
![]() |
25e197a6c8 | ||
![]() |
7dca220486 | ||
![]() |
111ba3750f | ||
![]() |
16ba39d9fa | ||
![]() |
4ed1acfd52 | ||
![]() |
a1d2272dc0 | ||
![]() |
c12f33aa4c | ||
![]() |
a031a24cfd | ||
![]() |
c698e13c0d | ||
![]() |
10e429b85d | ||
![]() |
6554a8d63c | ||
![]() |
d32aa65bc7 | ||
![]() |
3c329727c7 | ||
![]() |
e223840fa6 | ||
![]() |
ca6411c591 | ||
![]() |
823ef320a5 | ||
![]() |
fe9da9314c | ||
![]() |
1c73f84f3a | ||
![]() |
d995272922 | ||
![]() |
5b097f560d | ||
![]() |
f06a38c384 | ||
![]() |
44aa999598 | ||
![]() |
54c6418d61 | ||
![]() |
bd358dd570 | ||
![]() |
529ae4cc89 | ||
![]() |
5b05271e4c | ||
![]() |
d11b7f258c | ||
![]() |
0694cb9045 | ||
![]() |
8099f23bdf | ||
![]() |
a3e1a287ac | ||
![]() |
f501e948ae | ||
![]() |
ba6a1190cd | ||
![]() |
4abcd53044 | ||
![]() |
2fe52bbf58 | ||
![]() |
5998696c2a | ||
![]() |
bc9a59d264 | ||
![]() |
5699bf9e65 | ||
![]() |
c4c1c64f00 | ||
![]() |
fb7f27fcdd | ||
![]() |
2e2b895ebe | ||
![]() |
2e478f1b5a | ||
![]() |
a77c6df7e2 | ||
![]() |
19c4adf8ba | ||
![]() |
1f48f9dd6f | ||
![]() |
b7373f4ddc | ||
![]() |
9402a31111 | ||
![]() |
58fb36ee34 | ||
![]() |
f656569eb9 | ||
![]() |
0635e91dd6 | ||
![]() |
5f2d6a3c11 | ||
![]() |
356241bdfb | ||
![]() |
dce6a7612a | ||
![]() |
60b3b43f3e | ||
![]() |
6cbcc73a79 | ||
![]() |
edcd9af47f | ||
![]() |
dd080fa6f3 | ||
![]() |
bcb4eec754 | ||
![]() |
795e97f428 | ||
![]() |
77ac0863f8 | ||
![]() |
963ba2bf2d | ||
![]() |
c280029436 | ||
![]() |
47b357b2e1 | ||
![]() |
c1a94e2879 | ||
![]() |
c874a9525c | ||
![]() |
fc20786a5e | ||
![]() |
d48f31191f | ||
![]() |
7c078db879 | ||
![]() |
ebb0fd6905 | ||
![]() |
ed029357d1 | ||
![]() |
10fa3b1878 | ||
![]() |
98b0186feb | ||
![]() |
35254fa6eb | ||
![]() |
6706b23a0b | ||
![]() |
df36f88e88 | ||
![]() |
94a7fbae02 | ||
![]() |
bae1ebce2f | ||
![]() |
50463ca832 | ||
![]() |
0826e7d353 | ||
![]() |
aab881fda2 | ||
![]() |
05385f2479 | ||
![]() |
650bddcfd1 | ||
![]() |
089fe95a42 | ||
![]() |
4362085847 | ||
![]() |
6b62c4738d | ||
![]() |
8da205b0a8 | ||
![]() |
981d55e84c | ||
![]() |
35d238ad3a | ||
![]() |
2c8729becd | ||
![]() |
35f97b65c1 | ||
![]() |
a2c2abd60a | ||
![]() |
7a85c9160d | ||
![]() |
4e061a43b3 | ||
![]() |
5c534ac344 | ||
![]() |
ea9e8d353b | ||
![]() |
f14ad5e9dd | ||
![]() |
2226363fd0 | ||
![]() |
5dafa60433 | ||
![]() |
971e5cf4fe | ||
![]() |
edd57fdc86 | ||
![]() |
eab580408c | ||
![]() |
26d3461f46 | ||
![]() |
295061f461 | ||
![]() |
0bd15d435a | ||
![]() |
c8539b93fe | ||
![]() |
1e914347d7 | ||
![]() |
66eebea2c3 | ||
![]() |
9e2d5dae5e | ||
![]() |
b8e7dfa4ba | ||
![]() |
1d8dd50455 | ||
![]() |
7f1ee9dad0 | ||
![]() |
be5e2b9566 | ||
![]() |
e40fbee772 | ||
![]() |
7247c24e98 | ||
![]() |
f7e3d3f32c | ||
![]() |
671a838b52 | ||
![]() |
6ca29b2eb4 | ||
![]() |
15efdd5f2b | ||
![]() |
599f5c7b29 | ||
![]() |
fad8f93ad8 | ||
![]() |
78486b49d5 | ||
![]() |
9c5f577002 | ||
![]() |
dbad9285b8 | ||
![]() |
73636a00b5 | ||
![]() |
e7003ef9c6 | ||
![]() |
9664b1b7e3 | ||
![]() |
422cce6f70 | ||
![]() |
afd2135393 | ||
![]() |
94ef0fd294 | ||
![]() |
ebe1f824a7 | ||
![]() |
f7bea16e37 | ||
![]() |
ff9c0dbd5e | ||
![]() |
29321c8660 | ||
![]() |
0b40146b85 | ||
![]() |
9b2c560519 | ||
![]() |
3675302930 | ||
![]() |
925570aab1 | ||
![]() |
498f53b96a | ||
![]() |
5263887ac3 | ||
![]() |
73d865b243 | ||
![]() |
a3c257bdb4 | ||
![]() |
6ad9419693 | ||
![]() |
c5aa91a836 | ||
![]() |
b10f94d5f6 | ||
![]() |
9a98de1f65 | ||
![]() |
7363bc03f2 | ||
![]() |
78e51a4f3f | ||
![]() |
174db0eb7f | ||
![]() |
f64b61a1b9 | ||
![]() |
a8392c7f95 | ||
![]() |
72d7f64f8b | ||
![]() |
c86389f99b | ||
![]() |
66f2f3a84a | ||
![]() |
f8c7ea3672 | ||
![]() |
e313a82ab4 | ||
![]() |
9024a5c71b | ||
![]() |
f03b6314b4 | ||
![]() |
ae2e5ab092 | ||
![]() |
167eb11ea7 | ||
![]() |
1cc06f9301 | ||
![]() |
455fa24d63 | ||
![]() |
dc69f24ae5 | ||
![]() |
b4906f3d23 | ||
![]() |
4e338a2b70 | ||
![]() |
98fefcd162 | ||
![]() |
fb422732f2 | ||
![]() |
36a8ba126c | ||
![]() |
658f30ec43 | ||
![]() |
749e5b20da | ||
![]() |
d78db5070a | ||
![]() |
a5584c6b57 | ||
![]() |
97bf0de016 | ||
![]() |
b6c4cfa2a3 | ||
![]() |
ec12871e60 | ||
![]() |
0a29313fff | ||
![]() |
b009084a52 | ||
![]() |
7e7e87600e | ||
![]() |
c36d4859d7 | ||
![]() |
c1d06c7d63 | ||
![]() |
5e3355a6c3 | ||
![]() |
363321dc33 | ||
![]() |
4d44c17939 | ||
![]() |
5b24c60def | ||
![]() |
96026b82c7 | ||
![]() |
e42da22716 | ||
![]() |
0a8248578f | ||
![]() |
c87f559334 | ||
![]() |
8ca96d7ea3 | ||
![]() |
bbb81af550 | ||
![]() |
a22816fbbd | ||
![]() |
b6877ccf5c | ||
![]() |
7063406d6c | ||
![]() |
9858784eb6 | ||
![]() |
7e4a585611 | ||
![]() |
5a87d814cf | ||
![]() |
ac54a2ed45 | ||
![]() |
296fbaf94f | ||
![]() |
75c022c49f | ||
![]() |
f4f27e438b | ||
![]() |
a216ed1df9 | ||
![]() |
afee9fd42b | ||
![]() |
60fa7efbc8 | ||
![]() |
dc9a7d3a59 | ||
![]() |
1d83610341 | ||
![]() |
5dde0d7c6d | ||
![]() |
9968bb31a4 | ||
![]() |
5fe2dda146 | ||
![]() |
85fd6f525e | ||
![]() |
e5b65bbd69 | ||
![]() |
a838cd9c07 | ||
![]() |
02470dffa5 | ||
![]() |
c5bbf75f5e | ||
![]() |
b783c827c8 | ||
![]() |
d1897c1602 | ||
![]() |
6f8a6e66cc | ||
![]() |
5749c53484 | ||
![]() |
5569205d15 | ||
![]() |
2e76a4e477 | ||
![]() |
ee17ec6b4f | ||
![]() |
5a56f9ea01 | ||
![]() |
e400ed2855 | ||
![]() |
1d316710ed | ||
![]() |
aab243592f | ||
![]() |
13db2011e3 | ||
![]() |
7739c99f3f | ||
![]() |
99f74e8d94 | ||
![]() |
5ca87b3c8d | ||
![]() |
62df565190 | ||
![]() |
4f08b0b386 | ||
![]() |
5b8cc683f3 | ||
![]() |
e758da5d28 | ||
![]() |
16d1fccf61 | ||
![]() |
086d4e3962 | ||
![]() |
9bd7405502 | ||
![]() |
2a28289314 | ||
![]() |
112632bb4e | ||
![]() |
c5016e390f | ||
![]() |
63bb87fc93 | ||
![]() |
1fa4a000e7 | ||
![]() |
448cc962cd | ||
![]() |
6ef7298870 | ||
![]() |
9f7444baa2 | ||
![]() |
fef580ed7f | ||
![]() |
3bb717a3b5 | ||
![]() |
5beaf15f21 | ||
![]() |
1b2bee37e4 | ||
![]() |
9cb73f839f | ||
![]() |
330e31c70f | ||
![]() |
cbaa04905f | ||
![]() |
14d3a03f41 | ||
![]() |
95febd978c | ||
![]() |
3f855f07f5 | ||
![]() |
83032b1aa3 | ||
![]() |
c4cb1b25ec | ||
![]() |
77ecaa6093 | ||
![]() |
664f6bf1e7 | ||
![]() |
aeb5d15871 | ||
![]() |
76c2cfebc3 | ||
![]() |
addefa9ef1 | ||
![]() |
7769bc99fe | ||
![]() |
ce396b3ddb | ||
![]() |
ebe0ad4cd5 | ||
![]() |
bdb5c3eb9d | ||
![]() |
c54a0c6db9 | ||
![]() |
46061f4f3c | ||
![]() |
ec7a0d6e13 | ||
![]() |
a86b03e939 | ||
![]() |
35fd47da55 | ||
![]() |
2b1396add3 | ||
![]() |
0e4164ad0c | ||
![]() |
94568bc517 | ||
![]() |
226d54c90d | ||
![]() |
7e4c482737 | ||
![]() |
ac01ba9cb0 | ||
![]() |
a537fa3ca7 | ||
![]() |
f614a3c311 | ||
![]() |
d6e3f740bc | ||
![]() |
72f82d096c | ||
![]() |
74ff67acd3 | ||
![]() |
6aafc8e51d | ||
![]() |
10246f121a | ||
![]() |
025152ee53 | ||
![]() |
58e871696b | ||
![]() |
0ba8b922a2 | ||
![]() |
b296839538 | ||
![]() |
5fb21a04ad | ||
![]() |
fda692d250 | ||
![]() |
99a1fff590 | ||
![]() |
65c8494698 | ||
![]() |
2b94011fdc | ||
![]() |
2da5308fd2 | ||
![]() |
c1831cb19d | ||
![]() |
65da34f19e | ||
![]() |
b7afcc3632 | ||
![]() |
73cd6487d0 | ||
![]() |
5152040c17 | ||
![]() |
985ea610e6 | ||
![]() |
8062bce835 | ||
![]() |
3fbe5b876e | ||
![]() |
e38f00775f | ||
![]() |
05a6097dc6 | ||
![]() |
85557f2416 | ||
![]() |
0019af675a | ||
![]() |
f03023297b | ||
![]() |
c92b247878 | ||
![]() |
232096801b | ||
![]() |
c0769397d5 | ||
![]() |
c9b63f7f9b | ||
![]() |
ebaaf466bf | ||
![]() |
4b6215051f | ||
![]() |
f83d78dd28 | ||
![]() |
9fb4eb5107 | ||
![]() |
3c89de48a8 | ||
![]() |
6653582f0a | ||
![]() |
9e9ed54bfa | ||
![]() |
aece18dfd5 | ||
![]() |
abaed2bda4 | ||
![]() |
e8fb2dde56 | ||
![]() |
25c6638ce4 | ||
![]() |
ce4e129849 | ||
![]() |
ecd1aa226a | ||
![]() |
760d18b6e7 | ||
![]() |
f389257403 | ||
![]() |
84df81f336 | ||
![]() |
a9a6cbda4e | ||
![]() |
7a4a0243bd | ||
![]() |
e209e55e59 | ||
![]() |
ad2300f236 | ||
![]() |
80bdd9ce11 | ||
![]() |
5f99d34c3b | ||
![]() |
2aa3eb8cfb | ||
![]() |
d1b9118056 | ||
![]() |
fd95c729d5 | ||
![]() |
d1c40196e3 | ||
![]() |
9716185edf | ||
![]() |
a38892ff3b | ||
![]() |
dc18e3da07 | ||
![]() |
9127b510f2 | ||
![]() |
8f9ed6d942 | ||
![]() |
422edd8812 | ||
![]() |
345c8a29ad | ||
![]() |
a854234c1f | ||
![]() |
4b549eeac8 | ||
![]() |
7c2c8b1403 | ||
![]() |
c2ecb4c68c | ||
![]() |
ea9dafcd43 | ||
![]() |
7a7b9c682d | ||
![]() |
0d3706e2ee | ||
![]() |
3c584e2cd5 | ||
![]() |
9372972ad4 | ||
![]() |
121cb8b88d | ||
![]() |
93caf4c7b4 | ||
![]() |
21c0e47869 | ||
![]() |
f1e853c1cb | ||
![]() |
aa7291fc9c | ||
![]() |
3de79bca10 | ||
![]() |
466646f84a | ||
![]() |
e0f80e41bf | ||
![]() |
9a5977a9c9 | ||
![]() |
c3c6b46230 | ||
![]() |
47b4b0da8a | ||
![]() |
45526205ab | ||
![]() |
3342af4185 | ||
![]() |
7374637d34 | ||
![]() |
62209618e1 | ||
![]() |
7bfa2ee8a7 | ||
![]() |
73c914cca9 | ||
![]() |
77d9d421fb | ||
![]() |
59f3a65911 | ||
![]() |
9181ea068a | ||
![]() |
c1d9aad546 | ||
![]() |
3cd8556c54 | ||
![]() |
9c981cfc6b | ||
![]() |
11e3ecc739 | ||
![]() |
5849a0588e | ||
![]() |
b8c02f71d9 | ||
![]() |
806b98dfc2 | ||
![]() |
518669de80 | ||
![]() |
8538dd1a49 | ||
![]() |
a918ec2236 | ||
![]() |
af7e6d3e20 | ||
![]() |
7c52e29e6e | ||
![]() |
d59acc2789 | ||
![]() |
33b01b720c | ||
![]() |
d190773d09 | ||
![]() |
d8c80cd277 | ||
![]() |
3fb04bee85 | ||
![]() |
8578a9d52d | ||
![]() |
0b492d32b3 | ||
![]() |
9b9ca27987 | ||
![]() |
6187b35fa6 | ||
![]() |
6cf54d6515 | ||
![]() |
9344373e0b | ||
![]() |
3d1d9e1716 | ||
![]() |
e18a086ccf | ||
![]() |
0838f8f688 | ||
![]() |
b3bcf71981 | ||
![]() |
6d03ddc4f4 | ||
![]() |
5706550cc1 | ||
![]() |
af7463e2bc | ||
![]() |
e13e0f4314 | ||
![]() |
31843017d4 | ||
![]() |
0e0efbdb9a | ||
![]() |
a93e152912 | ||
![]() |
fdd922433b | ||
![]() |
8c00a4ff40 | ||
![]() |
5f5c44620b | ||
![]() |
637c153de3 | ||
![]() |
a800765b70 | ||
![]() |
f92e72a92c | ||
![]() |
0f6434986f | ||
![]() |
f43b7524e0 | ||
![]() |
cd1b9f42be | ||
![]() |
4320d88b90 | ||
![]() |
cba4462458 | ||
![]() |
30de7a1377 | ||
![]() |
011514e1ad | ||
![]() |
6fb8cf40e1 | ||
![]() |
015cecf724 | ||
![]() |
904493b24f | ||
![]() |
95f9ca917e | ||
![]() |
0dccf692d4 | ||
![]() |
7435572282 | ||
![]() |
17671ec694 | ||
![]() |
187c04f7e2 | ||
![]() |
5af678d2b9 | ||
![]() |
1265eee9e5 | ||
![]() |
e5f7441bae | ||
![]() |
6ef41f7d4f | ||
![]() |
fea144dd19 | ||
![]() |
fea528c39d | ||
![]() |
9599c29c46 | ||
![]() |
fe71af15a7 | ||
![]() |
b049757302 | ||
![]() |
5fee31b1f0 | ||
![]() |
e4413e0178 | ||
![]() |
dc27640265 | ||
![]() |
41c209bf45 | ||
![]() |
231590f71e | ||
![]() |
7e55e4ee73 | ||
![]() |
8bdde3a2df | ||
![]() |
c8b3eef351 | ||
![]() |
5f297950a2 | ||
![]() |
ccf49aa48d | ||
![]() |
b66edd372e | ||
![]() |
2a2eafcf1d | ||
![]() |
8a0f2b1d21 | ||
![]() |
660b860ddd | ||
![]() |
f27b2e82fa | ||
![]() |
f994ef3f92 | ||
![]() |
b41bd594b0 | ||
![]() |
0f828dd74f | ||
![]() |
5e8bc980e1 | ||
![]() |
4ca9672a92 | ||
![]() |
1a3bfdce75 | ||
![]() |
46e449f110 | ||
![]() |
0487daf865 | ||
![]() |
99ee7b6ef8 | ||
![]() |
4cc764256c | ||
![]() |
36950c0d46 | ||
![]() |
caddb25711 | ||
![]() |
d374f3ffe6 | ||
![]() |
664da30ee4 | ||
![]() |
e36855a21e | ||
![]() |
fd0eeddcc9 | ||
![]() |
b52650de5d | ||
![]() |
71e54854ec | ||
![]() |
e6e5659b11 | ||
![]() |
dd128ce534 | ||
![]() |
8f6a596057 | ||
![]() |
85aff53a88 | ||
![]() |
bed5a21700 | ||
![]() |
12cd5cb64a | ||
![]() |
0d4cde2ba8 | ||
![]() |
45cfb71c3e | ||
![]() |
40e8ca9f6e | ||
![]() |
d3b4771103 | ||
![]() |
22b5affbe6 | ||
![]() |
b245f2f79e | ||
![]() |
f35ae03a66 | ||
![]() |
725aed43ff | ||
![]() |
655b524ee6 | ||
![]() |
b17c0276de | ||
![]() |
ba399eb7f9 | ||
![]() |
6d815ac688 | ||
![]() |
93d0341f9c | ||
![]() |
2f847428aa | ||
![]() |
02275dff51 | ||
![]() |
34cf164aa2 | ||
![]() |
5f7321280e | ||
![]() |
8d77fd6a57 | ||
![]() |
b1b6255f38 | ||
![]() |
e64aa93f85 | ||
![]() |
4c1fd3ee67 | ||
![]() |
10d3c15143 | ||
![]() |
3a7fb4d8e1 | ||
![]() |
8e55157e6a | ||
![]() |
29e01daeae | ||
![]() |
9f01950bcb | ||
![]() |
ed5ead6a07 | ||
![]() |
1b936965ee | ||
![]() |
0cb025ff06 | ||
![]() |
604337ccc7 | ||
![]() |
b1a3c6135c | ||
![]() |
9969282c72 | ||
![]() |
a1f01aca0f | ||
![]() |
83bf77f4d0 | ||
![]() |
9ec4aa897a | ||
![]() |
a466369356 | ||
![]() |
007f49c39f | ||
![]() |
6487e1b391 | ||
![]() |
e962039f83 | ||
![]() |
6964079673 | ||
![]() |
c9818adfb1 | ||
![]() |
eb1d3a063a | ||
![]() |
1d6d737927 | ||
![]() |
efcb850956 | ||
![]() |
35e84f6edc | ||
![]() |
7fcf70c539 | ||
![]() |
4510e8e2a2 | ||
![]() |
92a3a34785 | ||
![]() |
4d1dc12a31 | ||
![]() |
63edd4555b | ||
![]() |
10a03f2216 | ||
![]() |
f7e3be4849 | ||
![]() |
58a3980372 | ||
![]() |
093bdd8b1c | ||
![]() |
681e14b3b8 | ||
![]() |
38cbabea02 | ||
![]() |
ce09cb4a91 | ||
![]() |
fa1eb92a7b | ||
![]() |
eb29de1c7c | ||
![]() |
0297da4d6e | ||
![]() |
eb90f076bb | ||
![]() |
c2c705a945 | ||
![]() |
6f6070b8c8 | ||
![]() |
37d92dd69c | ||
![]() |
8af9727937 | ||
![]() |
7b0acb2b44 | ||
![]() |
4319f8009c | ||
![]() |
b2e3214d61 | ||
![]() |
0b52ec3676 | ||
![]() |
599b9b0379 | ||
![]() |
a87b61c73f | ||
![]() |
c804179a99 | ||
![]() |
baa5f9710a | ||
![]() |
37135cd682 | ||
![]() |
0f0dabdcf4 | ||
![]() |
a817072e6f | ||
![]() |
2ea1a992b1 | ||
![]() |
649e962e6d | ||
![]() |
7337007fe2 | ||
![]() |
6e049d5975 | ||
![]() |
b2a780e97a | ||
![]() |
aae6633c28 | ||
![]() |
91ea5b6907 | ||
![]() |
20d26aea94 | ||
![]() |
9cba22c38a | ||
![]() |
1e1ef1c6cf | ||
![]() |
537fb85696 | ||
![]() |
2bd1c3f99d | ||
![]() |
c531db4714 | ||
![]() |
c7bf4b0474 | ||
![]() |
61ceaef57e | ||
![]() |
afb6685593 | ||
![]() |
1311748b06 | ||
![]() |
7537bf8f07 | ||
![]() |
96fd4949bd | ||
![]() |
f87071b7e2 | ||
![]() |
5e455be5f3 | ||
![]() |
d7e3e4c9a4 | ||
![]() |
26268d3188 | ||
![]() |
407613a8db | ||
![]() |
ae4e55b922 | ||
![]() |
40f26429f8 | ||
![]() |
60ea2874b3 | ||
![]() |
d38bbb1e2c | ||
![]() |
5c223ec5d5 | ||
![]() |
a656cee382 | ||
![]() |
9772eae568 | ||
![]() |
a45ba5bdc0 | ||
![]() |
2bbb2ac7db | ||
![]() |
5331a6145b | ||
![]() |
5c872eb110 | ||
![]() |
9834301eda | ||
![]() |
3821e7a750 | ||
![]() |
1aca24f3de | ||
![]() |
811caaaa3d | ||
![]() |
3f1994f3bf | ||
![]() |
39aec3a45b | ||
![]() |
e8282d97f1 | ||
![]() |
2e75068c7c | ||
![]() |
af248ce2c1 | ||
![]() |
7e6f37b4cd | ||
![]() |
f178b551da | ||
![]() |
9afd169362 | ||
![]() |
9e5551aa59 | ||
![]() |
e8d4f3f848 | ||
![]() |
30a47cf62e | ||
![]() |
aadee8afba | ||
![]() |
a1c9294b89 | ||
![]() |
7cf9ea83cb | ||
![]() |
d1de138cb1 | ||
![]() |
cff05cef68 | ||
![]() |
120a5a1dcd | ||
![]() |
36e41a6476 | ||
![]() |
0ff2ade078 | ||
![]() |
bb5d589c79 | ||
![]() |
6d3c176ff8 | ||
![]() |
a25363f5c3 | ||
![]() |
a72d40284d | ||
![]() |
4a591cf7d7 | ||
![]() |
19e3fce2eb | ||
![]() |
62735c54fb | ||
![]() |
712cfc3135 | ||
![]() |
20c9c94a61 | ||
![]() |
ad1520b29a | ||
![]() |
06a7d84b43 | ||
![]() |
d960006de4 | ||
![]() |
cf5e2f273f | ||
![]() |
f342123d7f | ||
![]() |
aac231d307 | ||
![]() |
0e8069661f | ||
![]() |
737325b417 | ||
![]() |
bc3b923131 | ||
![]() |
c6ad450151 | ||
![]() |
a284219abd | ||
![]() |
2e08b3a2da | ||
![]() |
57d168e56a | ||
![]() |
490b9a91e4 | ||
![]() |
80cbc74b2b | ||
![]() |
cf370d7e79 | ||
![]() |
fd13e4046f | ||
![]() |
1b07c0f54b | ||
![]() |
d941af5a6f | ||
![]() |
e2edbfe47d | ||
![]() |
0061cd38d0 | ||
![]() |
8311c3aa56 | ||
![]() |
80625a06fa | ||
![]() |
adab8567e4 | ||
![]() |
0b228246ba | ||
![]() |
cbf275777c | ||
![]() |
04f34feb26 | ||
![]() |
c226f4089a | ||
![]() |
e244001cee | ||
![]() |
0a0bb57b2a | ||
![]() |
5ad9552365 | ||
![]() |
111a58f1ef | ||
![]() |
1f06922803 | ||
![]() |
2d5cb3ec7b | ||
![]() |
44ad5703ea | ||
![]() |
b393d2f62f | ||
![]() |
0c3220c469 | ||
![]() |
e52905f50c | ||
![]() |
075cc61c94 | ||
![]() |
aafbb6374b | ||
![]() |
c463236521 | ||
![]() |
435e8881ed | ||
![]() |
cc6de3f665 | ||
![]() |
b1df2f43aa | ||
![]() |
65eb233f9c | ||
![]() |
e10faa0369 | ||
![]() |
4ec0e6fd05 | ||
![]() |
a47740636d | ||
![]() |
a29ccffcbe | ||
![]() |
fa955a0f1a | ||
![]() |
301e5d260d | ||
![]() |
da680f1066 | ||
![]() |
67a488033b | ||
![]() |
f6dd61cb02 | ||
![]() |
eb93130cd3 | ||
![]() |
d643056ca0 | ||
![]() |
ba74e70ec1 | ||
![]() |
6c3d201070 | ||
![]() |
af2458f556 | ||
![]() |
3cb4439121 | ||
![]() |
19ef48d0e8 | ||
![]() |
7ba2f1f17f | ||
![]() |
a831ecfd01 | ||
![]() |
b7e8f64bba | ||
![]() |
76b1c2f1ed | ||
![]() |
83fcb52085 | ||
![]() |
0791c8f069 | ||
![]() |
247d84fbd1 | ||
![]() |
00bd389cdc | ||
![]() |
1f84c507a0 | ||
![]() |
4ba886f7aa | ||
![]() |
d552415abe | ||
![]() |
c537dae7f8 | ||
![]() |
0d2feba69c | ||
![]() |
5465790886 | ||
![]() |
958f4099f1 | ||
![]() |
449553ffb0 | ||
![]() |
960ded7db4 | ||
![]() |
a14fe580f8 | ||
![]() |
f23bda9e46 | ||
![]() |
ef73a89139 | ||
![]() |
61b58fd5be | ||
![]() |
60ba4d651c | ||
![]() |
5a6a03af0b | ||
![]() |
6f013e807c | ||
![]() |
d18a95fda6 | ||
![]() |
c7a00a4aba | ||
![]() |
7bc3317eeb | ||
![]() |
8028bb7f82 | ||
![]() |
6fc412c4e2 | ||
![]() |
0749cb1553 | ||
![]() |
f198581a09 | ||
![]() |
4c9b193b45 | ||
![]() |
130be78dbb | ||
![]() |
29d6db30ba | ||
![]() |
2e6001f1ed | ||
![]() |
9c4112cda7 | ||
![]() |
04dbcdffc0 | ||
![]() |
0146a38faa | ||
![]() |
145ceba124 | ||
![]() |
90ea691b75 | ||
![]() |
51cdcfca82 | ||
![]() |
ae04663aa9 | ||
![]() |
9f8073ab77 | ||
![]() |
bfa199be79 | ||
![]() |
36911710fd | ||
![]() |
267ac71d4f | ||
![]() |
f6ba274134 | ||
![]() |
cd825ac735 | ||
![]() |
1007af9506 | ||
![]() |
b67953c70c | ||
![]() |
1a67e245ac | ||
![]() |
648de4410c | ||
![]() |
b658fca4a7 | ||
![]() |
277732e384 | ||
![]() |
f13413c26a | ||
![]() |
c9418ffca3 | ||
![]() |
ddb3bf05d8 | ||
![]() |
8b463e6b14 | ||
![]() |
bc8eaf6588 | ||
![]() |
b0b8f40791 | ||
![]() |
aa37686bbd | ||
![]() |
4721a3747e | ||
![]() |
e5cb69db5d | ||
![]() |
414b591358 | ||
![]() |
ccd4945504 | ||
![]() |
59b19bac70 | ||
![]() |
14b8a77b78 | ||
![]() |
a71849db3f | ||
![]() |
a2eb3325ce | ||
![]() |
b9df78b9c6 | ||
![]() |
9a3c1ccd72 | ||
![]() |
68116da5ad | ||
![]() |
68153812f7 | ||
![]() |
bb1062ae2a | ||
![]() |
bdb18828e3 | ||
![]() |
a903f16c68 | ||
![]() |
5feeb717a0 | ||
![]() |
703316ace6 | ||
![]() |
88afa4afa2 | ||
![]() |
bf269d2e03 | ||
![]() |
755932c3bc | ||
![]() |
4c406bce17 | ||
![]() |
3a87dedbb5 | ||
![]() |
731fd33be2 | ||
![]() |
ffc47e8439 | ||
![]() |
cc9d6042fd | ||
![]() |
012b9c478e | ||
![]() |
5d35ecfaa9 | ||
![]() |
21bf0ae998 | ||
![]() |
9d0ea7af4b | ||
![]() |
08fd4f2dd7 | ||
![]() |
8f0d6e85fd | ||
![]() |
7dea09c371 | ||
![]() |
ce5653d75c | ||
![]() |
36b84c9af3 | ||
![]() |
d13046614e | ||
![]() |
53e30995d6 | ||
![]() |
0c4e343b46 | ||
![]() |
e6394cafe2 | ||
![]() |
fabc5bf4b7 | ||
![]() |
d601335aa6 | ||
![]() |
d6dacbe955 | ||
![]() |
616c669d3b | ||
![]() |
d52cc1a1bd | ||
![]() |
43a2f43090 | ||
![]() |
b3369a4bc4 | ||
![]() |
b5b547abb6 | ||
![]() |
4e775df156 | ||
![]() |
bf0ff98385 | ||
![]() |
66412e4997 | ||
![]() |
77c1edbe13 | ||
![]() |
46c32952b0 | ||
![]() |
41719bd4a8 | ||
![]() |
9629ca3fd9 | ||
![]() |
a3ab5edc59 | ||
![]() |
8fbcddd2cd | ||
![]() |
73d63ca3da | ||
![]() |
721a9965aa | ||
![]() |
4f77f046d0 | ||
![]() |
0b95c1c444 | ||
![]() |
41c0c345cd | ||
![]() |
c8f6d2c538 | ||
![]() |
b2d2187b20 | ||
![]() |
b8894a468d | ||
![]() |
1c30e0c124 | ||
![]() |
4dc600a63c | ||
![]() |
13bfd060b6 | ||
![]() |
1370a49742 | ||
![]() |
ab6bf4234c | ||
![]() |
5224c275e8 | ||
![]() |
272b3d2f82 | ||
![]() |
2528a78593 | ||
![]() |
2917a83d7b | ||
![]() |
77e9417c7b | ||
![]() |
e8456beadc | ||
![]() |
d63a33b6dc | ||
![]() |
bdc814a4a4 | ||
![]() |
ce40e5a111 | ||
![]() |
61c9ad08bf | ||
![]() |
bca0ad8e1e | ||
![]() |
6ec7bfad30 | ||
![]() |
0e76283c9a | ||
![]() |
78a72a6c1e | ||
![]() |
4a95b07ae7 | ||
![]() |
154ea98deb | ||
![]() |
be252e271f | ||
![]() |
e2328e7a91 | ||
![]() |
942b92c796 | ||
![]() |
3bd2143d9a | ||
![]() |
93cfa353e7 | ||
![]() |
2cbe758c80 | ||
![]() |
72c6834cc5 | ||
![]() |
ac06b74b18 | ||
![]() |
1fd94e79b9 | ||
![]() |
bb3cb269c2 | ||
![]() |
715a520c0e | ||
![]() |
78d14a2b1e | ||
![]() |
3d10b9f3e2 | ||
![]() |
f97f1a08ae | ||
![]() |
13e9713b72 | ||
![]() |
bf9276fc5c | ||
![]() |
fe86c4900f | ||
![]() |
f45487e92c | ||
![]() |
bca972bdc3 | ||
![]() |
a8abba84bd | ||
![]() |
2e2f4662f3 | ||
![]() |
0c87c49146 | ||
![]() |
6c8d9c2194 | ||
![]() |
62d52d55b2 | ||
![]() |
3598966069 | ||
![]() |
ec6f5b011a | ||
![]() |
9d4a1a3b4f | ||
![]() |
9978ebd853 | ||
![]() |
18eaccb840 | ||
![]() |
e63ec01089 | ||
![]() |
e0fb3d537d | ||
![]() |
19d4356484 | ||
![]() |
be1e6bde65 | ||
![]() |
f113008c7f | ||
![]() |
5e240eb259 | ||
![]() |
7101b7b864 | ||
![]() |
98aa62f637 | ||
![]() |
798db7368a | ||
![]() |
4cf61ccedb | ||
![]() |
7f50ee6fd2 | ||
![]() |
1544a5d6cb | ||
![]() |
3284502645 | ||
![]() |
4cc03aba75 | ||
![]() |
286bbc6bde | ||
![]() |
d1244d7231 | ||
![]() |
50219a63ad | ||
![]() |
806c75f051 | ||
![]() |
ee621d2435 | ||
![]() |
340811da6e | ||
![]() |
4b40597c76 | ||
![]() |
9a789bc9e7 | ||
![]() |
4886cc8258 | ||
![]() |
82277a80ea | ||
![]() |
22064278df | ||
![]() |
932bfa3482 | ||
![]() |
5de5d6d00b | ||
![]() |
aab55d8cff | ||
![]() |
73c9321361 | ||
![]() |
25288120be | ||
![]() |
d99d951f7f | ||
![]() |
00e15828a1 | ||
![]() |
ad926e9b07 | ||
![]() |
059cbcd406 | ||
![]() |
dcdb11a78b | ||
![]() |
aef9e3922e | ||
![]() |
ce6fef3d0a | ||
![]() |
4057b7dd58 | ||
![]() |
d1725e3f44 | ||
![]() |
42da8fe3ef | ||
![]() |
a01bd83c64 | ||
![]() |
6a0240aa18 | ||
![]() |
179747a7bc | ||
![]() |
94186f7888 | ||
![]() |
ac5771377e | ||
![]() |
863dc2e841 | ||
![]() |
59b9ee3417 | ||
![]() |
3285934703 | ||
![]() |
c7d1102c61 | ||
![]() |
6e3f05fcc7 | ||
![]() |
d8286a63ec | ||
![]() |
9854b100fb | ||
![]() |
ef5588b9c0 | ||
![]() |
64ba92593e | ||
![]() |
33b5dc1c75 | ||
![]() |
02139fbb79 | ||
![]() |
9ef1d1db96 | ||
![]() |
225acd0ce2 | ||
![]() |
b4496216db | ||
![]() |
d88c4ad411 | ||
![]() |
8b217981ed | ||
![]() |
8ce8a359c1 | ||
![]() |
55734baed8 | ||
![]() |
52ce55341b | ||
![]() |
e4b6f4b375 | ||
![]() |
32dee82c58 | ||
![]() |
2870586cf9 | ||
![]() |
cb1975f450 | ||
![]() |
805b33552b | ||
![]() |
6bc05a8bc8 | ||
![]() |
3ffae231de | ||
![]() |
6a7557da01 | ||
![]() |
d7045e2b61 | ||
![]() |
e68635b8e4 | ||
![]() |
7ef8d0d443 | ||
![]() |
9b958ed393 | ||
![]() |
84e8c658f6 | ||
![]() |
21a5eb2702 | ||
![]() |
1d62465e5b | ||
![]() |
cb1b1c6e1c | ||
![]() |
8be56d7003 | ||
![]() |
8ce1a9476d | ||
![]() |
0689b54827 | ||
![]() |
b569943059 | ||
![]() |
eb001433e4 | ||
![]() |
a591c875ae | ||
![]() |
08cd36bef0 | ||
![]() |
5d0599976e | ||
![]() |
2e014bbc72 | ||
![]() |
88e9611444 | ||
![]() |
97e88b885a | ||
![]() |
f84476cf87 | ||
![]() |
473ab16739 | ||
![]() |
951292abe1 | ||
![]() |
612032c9f8 | ||
![]() |
0dd9ac2e44 | ||
![]() |
8f551de4f4 | ||
![]() |
0c2e08cf2b | ||
![]() |
0e420fbee8 | ||
![]() |
cf505b850b | ||
![]() |
fd762303b0 | ||
![]() |
a6f05db34b | ||
![]() |
df0ee53765 | ||
![]() |
d0b3476839 | ||
![]() |
4d16f5bf28 | ||
![]() |
c45cc78548 | ||
![]() |
d16aedf6c4 | ||
![]() |
d3a27947fe | ||
![]() |
42e3587fd5 | ||
![]() |
e3f699a9d8 | ||
![]() |
5201f0fd06 | ||
![]() |
df0e97550b | ||
![]() |
983b4ace89 | ||
![]() |
f0684dc74e | ||
![]() |
39923e05f3 | ||
![]() |
51bf9165b2 | ||
![]() |
f1735f3ae1 | ||
![]() |
2ba785f648 | ||
![]() |
c9b7a3f86e | ||
![]() |
43bd9483ce | ||
![]() |
1277b4c30f | ||
![]() |
e1ce1c90f7 | ||
![]() |
f45c2dd061 | ||
![]() |
855c20501b | ||
![]() |
945251c6b8 | ||
![]() |
e47dd3eb89 | ||
![]() |
c9c8993b9d | ||
![]() |
d934e60c2b | ||
![]() |
11478719cd | ||
![]() |
7284addb09 | ||
![]() |
270cde42f1 | ||
![]() |
b690098941 | ||
![]() |
fffe9f4bd9 | ||
![]() |
7353bf2698 | ||
![]() |
133b0f7d94 | ||
![]() |
4878012065 | ||
![]() |
4402ea34de | ||
![]() |
faa53a5335 | ||
![]() |
44a88fc1ab | ||
![]() |
d3ce4f64f6 | ||
![]() |
fcdd85ae5e | ||
![]() |
fd71bb768a | ||
![]() |
66bb79ef10 | ||
![]() |
3b4cc9d806 | ||
![]() |
79221c403b | ||
![]() |
0ab11cc09a | ||
![]() |
1432ecfb33 | ||
![]() |
341cfbb527 | ||
![]() |
78573ae0c9 | ||
![]() |
8a9d3e21f2 | ||
![]() |
8655c4b007 | ||
![]() |
5fa23341b3 | ||
![]() |
67274f91e9 | ||
![]() |
c0cc6a2c93 | ||
![]() |
b2fec642fe | ||
![]() |
d60cecb8d3 | ||
![]() |
c168a9adc6 | ||
![]() |
f778245a86 | ||
![]() |
5701ba287b | ||
![]() |
c471388021 | ||
![]() |
9d717ffee9 | ||
![]() |
bac96d1fa8 | ||
![]() |
f313a83474 | ||
![]() |
9891f94e41 | ||
![]() |
a22ae9f39a | ||
![]() |
02298c8e76 | ||
![]() |
73badc67ff | ||
![]() |
1181b56211 | ||
![]() |
78eb3e7522 | ||
![]() |
57b74c3de9 | ||
![]() |
c83ca8f85a | ||
![]() |
ef58a267b0 | ||
![]() |
4130954c15 | ||
![]() |
0a2af0ab62 | ||
![]() |
a1a94ed319 | ||
![]() |
096d0660e2 | ||
![]() |
b28734c4a8 | ||
![]() |
69c2893234 | ||
![]() |
89078eb3b3 | ||
![]() |
26cefd0587 | ||
![]() |
8ccd11ee4b | ||
![]() |
fd1b276aab | ||
![]() |
2ff8e74061 | ||
![]() |
0020f81e79 | ||
![]() |
6f09752db4 | ||
![]() |
8cf025f18d | ||
![]() |
81990ce53b | ||
![]() |
12cdb7704c | ||
![]() |
947dd45294 | ||
![]() |
a435e8648f | ||
![]() |
25d0793766 | ||
![]() |
5c9652bf13 | ||
![]() |
7a242a8331 | ||
![]() |
7cdfeff204 | ||
![]() |
83107ee222 | ||
![]() |
d9d05e83ba | ||
![]() |
631664645d | ||
![]() |
61ed0829bd | ||
![]() |
f023de0faf | ||
![]() |
7238853f0f | ||
![]() |
6a8cad6f94 | ||
![]() |
2c15270be1 | ||
![]() |
c044bdfe32 | ||
![]() |
aac7079562 | ||
![]() |
cadcfc553c | ||
![]() |
5df669a329 | ||
![]() |
4c307f6ac9 | ||
![]() |
37aa38617e | ||
![]() |
07acb6f7b6 | ||
![]() |
9c96528a98 | ||
![]() |
9327a5c71f | ||
![]() |
171dbcdedf | ||
![]() |
de819e12bf | ||
![]() |
198dc9eb43 | ||
![]() |
04d282fae3 | ||
![]() |
bb86771425 | ||
![]() |
791e0fc11f | ||
![]() |
0badd9b874 | ||
![]() |
af03fa3c7c | ||
![]() |
4d30512e05 | ||
![]() |
d5e8fa47f0 | ||
![]() |
85c7e07351 | ||
![]() |
fde85c79df | ||
![]() |
712eb5428e | ||
![]() |
5c663adf35 | ||
![]() |
68fa033483 | ||
![]() |
b33f70571e | ||
![]() |
cdc2bb0216 | ||
![]() |
250d9b565c | ||
![]() |
6e7c0395e1 | ||
![]() |
be35154376 | ||
![]() |
de2fdc093a | ||
![]() |
3679dfe93e | ||
![]() |
2e1425451d | ||
![]() |
0e1da0d33d | ||
![]() |
7b0b86c9f7 | ||
![]() |
a98b95923b | ||
![]() |
cf3d1ebb8b | ||
![]() |
5db1541f95 | ||
![]() |
873a3ef047 | ||
![]() |
beb3ab506d | ||
![]() |
494364d437 | ||
![]() |
2f1f2c6a85 | ||
![]() |
66853d9715 | ||
![]() |
cf59ad2c76 | ||
![]() |
dba9c42473 | ||
![]() |
f8556360ca | ||
![]() |
28fe051aa5 | ||
![]() |
607e5a567c | ||
![]() |
df31e239a9 | ||
![]() |
df7a15e910 | ||
![]() |
860ef759f5 | ||
![]() |
4ba79fd489 | ||
![]() |
fb01d4e9ab | ||
![]() |
b2317d8800 | ||
![]() |
3283c71936 | ||
![]() |
22a0d5a3fb | ||
![]() |
46443cbd1c | ||
![]() |
efd21ce982 | ||
![]() |
c4e96dd481 | ||
![]() |
65e384523a | ||
![]() |
80aee2af6c | ||
![]() |
1f525a6f4b | ||
![]() |
ffa1ea7358 | ||
![]() |
ce7eb02601 | ||
![]() |
ce80e571f2 | ||
![]() |
11044c6264 | ||
![]() |
7243f5bc2c | ||
![]() |
863ff811e6 | ||
![]() |
414ab39db5 | ||
![]() |
ba78c0527f | ||
![]() |
fb696b7a68 | ||
![]() |
295da18414 | ||
![]() |
8272df5ec2 | ||
![]() |
99fed089cf | ||
![]() |
e3fd501057 | ||
![]() |
7403dfa9aa | ||
![]() |
b08d9cfb56 | ||
![]() |
1969db5f94 | ||
![]() |
866299b508 | ||
![]() |
c4384265e4 | ||
![]() |
b4c885861d | ||
![]() |
d9be5e098f | ||
![]() |
0a54efdd0c | ||
![]() |
708c5a7347 | ||
![]() |
50373f4ff9 | ||
![]() |
2df866bdf8 | ||
![]() |
5b8567919d | ||
![]() |
77cad8e716 | ||
![]() |
700d699f5b | ||
![]() |
87413e9d3c | ||
![]() |
dbe6deab45 | ||
![]() |
b2ae3b9dd1 | ||
![]() |
92dca50dfc | ||
![]() |
a3ba8d575e | ||
![]() |
ea48d18130 | ||
![]() |
4547719358 | ||
![]() |
bb878848f7 | ||
![]() |
5bb284267b | ||
![]() |
7e3c8c461e | ||
![]() |
24034b5b8b | ||
![]() |
78f9f3f87c | ||
![]() |
bc1169e979 | ||
![]() |
012105e115 | ||
![]() |
5c5eb1df14 | ||
![]() |
e714c7d53f | ||
![]() |
78e39bfb1c | ||
![]() |
7323f7c561 | ||
![]() |
c6513ea7a2 | ||
![]() |
6001ceff9f | ||
![]() |
8e3db00dac | ||
![]() |
d20dccbe02 | ||
![]() |
e834783cb8 | ||
![]() |
01f24aae07 | ||
![]() |
584dc6a626 | ||
![]() |
756080831d | ||
![]() |
ffce6c5788 | ||
![]() |
565a492724 | ||
![]() |
6982bbfef9 | ||
![]() |
07bc467d03 | ||
![]() |
a39f8ea71f | ||
![]() |
4ad9a69aeb | ||
![]() |
ee200b97aa | ||
![]() |
fc659a67f0 | ||
![]() |
de0b0b9467 | ||
![]() |
eef74ed263 | ||
![]() |
facf0ab9c4 | ||
![]() |
5318c953ed | ||
![]() |
2550a94f05 | ||
![]() |
bd73c80152 | ||
![]() |
43cbe83d61 | ||
![]() |
075c5dfad6 | ||
![]() |
ba1dfabf11 | ||
![]() |
9603248a5b | ||
![]() |
4e891102f2 | ||
![]() |
bc1c84347d | ||
![]() |
2db01371b3 | ||
![]() |
e17a9c6503 | ||
![]() |
3994126a09 | ||
![]() |
70174be823 | ||
![]() |
9254f9284c | ||
![]() |
c819adf830 | ||
![]() |
13c717159d | ||
![]() |
4c90a9b2d5 | ||
![]() |
a14bd119b7 | ||
![]() |
f9cf25f797 | ||
![]() |
450b92f6c0 | ||
![]() |
9790151ec0 | ||
![]() |
3fbea449b5 | ||
![]() |
02cdc57eb5 | ||
![]() |
d7571ce1e3 | ||
![]() |
ccc8601624 | ||
![]() |
7e2ae20ecf | ||
![]() |
b856065167 | ||
![]() |
f3efdaf40f | ||
![]() |
86564c8741 | ||
![]() |
a5eb7784c6 | ||
![]() |
f0d0f90e13 | ||
![]() |
27d828172d | ||
![]() |
a7ffdf3d65 | ||
![]() |
dd624950c6 | ||
![]() |
b407bfa168 | ||
![]() |
069a6adb19 | ||
![]() |
9dd2c85df4 | ||
![]() |
b7f0f6abc8 | ||
![]() |
ea0479998a | ||
![]() |
9272eb4325 | ||
![]() |
4e601cf14c | ||
![]() |
db582a4e5c | ||
![]() |
059e4ec9c8 | ||
![]() |
a96be226b2 | ||
![]() |
bed00e525d | ||
![]() |
096e837ece | ||
![]() |
e67371d269 | ||
![]() |
a996549577 | ||
![]() |
9917b7e3df | ||
![]() |
541f221a61 | ||
![]() |
44a2ed5a97 | ||
![]() |
ba3f4daee8 | ||
![]() |
2d3d4db16b | ||
![]() |
0c351c9cbc | ||
![]() |
cc1f2b2d27 | ||
![]() |
6ee3a4a978 | ||
![]() |
5326f76a40 | ||
![]() |
7f86fbad1e | ||
![]() |
30fa189cbb | ||
![]() |
2fdb2a8b6f | ||
![]() |
b07e5fafaf | ||
![]() |
ba1a1ab28d | ||
![]() |
a9643234ae | ||
![]() |
7870c8028f | ||
![]() |
6510e8961e | ||
![]() |
6e8b7367d7 | ||
![]() |
feb5b41642 | ||
![]() |
36694afe0e | ||
![]() |
a99111172d | ||
![]() |
780c3d29c7 | ||
![]() |
1a7831df2a | ||
![]() |
924178cde7 | ||
![]() |
77fa72924b | ||
![]() |
b90633d406 | ||
![]() |
cd64e02096 | ||
![]() |
ad820cef8a | ||
![]() |
68de2bcb00 | ||
![]() |
68b6be11d6 | ||
![]() |
d13ae114a2 | ||
![]() |
3a6103564e | ||
![]() |
0424e5a329 | ||
![]() |
561ad635cd | ||
![]() |
2427c095e5 | ||
![]() |
ed27009285 | ||
![]() |
92654bdd9b | ||
![]() |
fdf7ec22f5 | ||
![]() |
3c4a154f0a | ||
![]() |
c766b24920 | ||
![]() |
af652a6639 | ||
![]() |
812628acb2 | ||
![]() |
6b86940b7b | ||
![]() |
08d948435d | ||
![]() |
5004f69b5e | ||
![]() |
bc5d16c4fb | ||
![]() |
c2a5b4fb7d | ||
![]() |
cca8ab4640 | ||
![]() |
d964af8142 | ||
![]() |
7746ff9a12 | ||
![]() |
c4cf67bee4 | ||
![]() |
a1daf03538 | ||
![]() |
2be0530c34 | ||
![]() |
b0d1c884e0 | ||
![]() |
e0a7f0ae59 | ||
![]() |
5779691efb | ||
![]() |
496ed18e85 | ||
![]() |
86cf7de430 | ||
![]() |
477d7470c1 | ||
![]() |
3706b51159 | ||
![]() |
b4c8d53394 | ||
![]() |
4c217d4ba3 | ||
![]() |
23b2081385 | ||
![]() |
0534b54e51 | ||
![]() |
faf4575e9a | ||
![]() |
52efe3abff | ||
![]() |
59510cf8a1 | ||
![]() |
905705910b | ||
![]() |
bb78d8dd59 | ||
![]() |
8b72d53dcc | ||
![]() |
ef4aa16730 | ||
![]() |
14b089ef90 | ||
![]() |
b5fef8d0e2 | ||
![]() |
561f3044d6 | ||
![]() |
9c49254abd | ||
![]() |
5e59578e28 | ||
![]() |
7317535c28 | ||
![]() |
920839cf1c | ||
![]() |
d8eec06473 | ||
![]() |
4748405277 | ||
![]() |
13d574b455 | ||
![]() |
2b13d0f527 | ||
![]() |
e054a6512f | ||
![]() |
408a29d66a | ||
![]() |
bddbb4581e | ||
![]() |
dfc982b15f | ||
![]() |
750e41ae61 | ||
![]() |
38d318ec26 | ||
![]() |
c8f8a26c9c | ||
![]() |
f58dc56949 | ||
![]() |
df46cd597b | ||
![]() |
190a56684a | ||
![]() |
d8409cae72 | ||
![]() |
083710d8d3 | ||
![]() |
9594ec8913 | ||
![]() |
6490a206a0 | ||
![]() |
71b5b4ee37 | ||
![]() |
14aaebcc86 | ||
![]() |
49e863e97a | ||
![]() |
110a2625fe | ||
![]() |
b70062d6d2 | ||
![]() |
abd20c25dc | ||
![]() |
22cf9cb005 | ||
![]() |
984ec135d3 | ||
![]() |
cf3a7a6a49 | ||
![]() |
7e5e837a24 | ||
![]() |
0f20423455 | ||
![]() |
4de6db6c47 | ||
![]() |
ed9245add2 | ||
![]() |
aa03b113f4 | ||
![]() |
a88b3e8aaf | ||
![]() |
3c1bd3cff0 | ||
![]() |
20ecd106d2 | ||
![]() |
3fee94473b | ||
![]() |
f285cf85eb | ||
![]() |
bda48b1889 | ||
![]() |
8fb4bfb288 | ||
![]() |
83a5996817 | ||
![]() |
9ae63cf05d | ||
![]() |
ae5d7e29e3 | ||
![]() |
477bbbb340 | ||
![]() |
212adf63ce | ||
![]() |
f317076cb2 | ||
![]() |
503968c1fd | ||
![]() |
1ed3879c4f | ||
![]() |
c6b77ab151 | ||
![]() |
ff529244a5 | ||
![]() |
344a5d36b1 | ||
![]() |
76a8519f80 | ||
![]() |
046cecb242 | ||
![]() |
abda42dbee | ||
![]() |
cecd951e76 | ||
![]() |
7ac870cd29 | ||
![]() |
611ae75fed | ||
![]() |
2e4a086ed0 | ||
![]() |
785455ccc0 | ||
![]() |
62c7a743a7 | ||
![]() |
8424c32b4a | ||
![]() |
a9b9c036b6 | ||
![]() |
6ec92de598 | ||
![]() |
eda9303ec9 | ||
![]() |
a41924d79e | ||
![]() |
e9a3528bbd | ||
![]() |
1c929cd694 | ||
![]() |
a6042f38b4 | ||
![]() |
0e63ca830d | ||
![]() |
15396fc2cd | ||
![]() |
9c8b717901 | ||
![]() |
2bd12b2e25 | ||
![]() |
39cfcc7468 | ||
![]() |
e0bb6ff0cc | ||
![]() |
835f662349 | ||
![]() |
a5994cf647 | ||
![]() |
b693c58e9f | ||
![]() |
3dacb89ea1 | ||
![]() |
ba55e90465 | ||
![]() |
8b7ddbee59 | ||
![]() |
7863bc71f8 | ||
![]() |
7a38aca803 | ||
![]() |
84ffde7152 | ||
![]() |
2c029f763c | ||
![]() |
ed8e768c7e | ||
![]() |
5144fe509f | ||
![]() |
8996baa35e | ||
![]() |
c99e7f8154 | ||
![]() |
f7923f2a02 | ||
![]() |
c38e8fdd14 | ||
![]() |
c6ead740c8 | ||
![]() |
96fe6bf2ca | ||
![]() |
a6d7cfab78 | ||
![]() |
93c79d4463 | ||
![]() |
cd1155b83c | ||
![]() |
aff9fb7945 | ||
![]() |
b282c6f2f3 | ||
![]() |
d37ef26104 | ||
![]() |
ec576f315a | ||
![]() |
f5631b2e22 | ||
![]() |
c5404b8e25 | ||
![]() |
265207a97a | ||
![]() |
20e3522177 | ||
![]() |
c9540df92d | ||
![]() |
ecdcc99280 | ||
![]() |
89d62ee4f8 | ||
![]() |
c58a741abb | ||
![]() |
e8a78b9aa1 | ||
![]() |
69e1ed4278 | ||
![]() |
12f0d0b304 | ||
![]() |
60d7e8e320 | ||
![]() |
7cf4778aaa | ||
![]() |
57368e9806 | ||
![]() |
e03d51cdcb | ||
![]() |
68ff3776ee | ||
![]() |
25f8e45b73 | ||
![]() |
16cc178ba0 | ||
![]() |
ec354038db | ||
![]() |
8cd2921387 | ||
![]() |
1d41eda101 | ||
![]() |
cd2f775fe4 | ||
![]() |
eb5313f850 | ||
![]() |
44b381680f | ||
![]() |
6bdbbbea83 | ||
![]() |
d1e2048239 | ||
![]() |
bf0fb9f327 | ||
![]() |
b5f78f484d | ||
![]() |
1ddb76465a | ||
![]() |
8f82d31db1 | ||
![]() |
9f7af7c4e4 | ||
![]() |
6bd9656416 | ||
![]() |
9924300c05 | ||
![]() |
ab99bf7517 | ||
![]() |
d1c36f170b | ||
![]() |
84f19881a3 | ||
![]() |
6ff9fb596e | ||
![]() |
b7d78f27be | ||
![]() |
8faa0e6518 | ||
![]() |
8ed07b83eb | ||
![]() |
1369a20aba | ||
![]() |
6dc437c364 | ||
![]() |
c76dedd9b9 | ||
![]() |
3b7f86aef8 | ||
![]() |
6db9a86366 | ||
![]() |
f16646f446 | ||
![]() |
4f9bebc3fa | ||
![]() |
aaf4de7024 | ||
![]() |
e5a6913f83 | ||
![]() |
bcb2107bb1 | ||
![]() |
3915abc91e | ||
![]() |
a1eb937d09 | ||
![]() |
936785d24e | ||
![]() |
e6d65e4004 | ||
![]() |
620299de71 | ||
![]() |
5e56552998 | ||
![]() |
7f9ff189b5 | ||
![]() |
852ae3f7c2 | ||
![]() |
26975f6231 | ||
![]() |
c409f56e23 | ||
![]() |
f43dfc1099 | ||
![]() |
e41a84b094 | ||
![]() |
3b23642e2c | ||
![]() |
8e3d039199 | ||
![]() |
ef18734f20 | ||
![]() |
5297209ed2 | ||
![]() |
3f60c59908 | ||
![]() |
1d563b2e14 | ||
![]() |
862a02ce63 | ||
![]() |
85534f123b | ||
![]() |
b83f797493 | ||
![]() |
98d56c2b7f | ||
![]() |
e832f761bb | ||
![]() |
ce31c6dce6 | ||
![]() |
edc04743bf | ||
![]() |
2bb4da5f0b | ||
![]() |
8b49f5f787 | ||
![]() |
4e0daf047e | ||
![]() |
a46f89998c | ||
![]() |
606cb09fa5 | ||
![]() |
de4b4afe9d | ||
![]() |
e43bc2ccc2 | ||
![]() |
82026be00a | ||
![]() |
8b451edf9c | ||
![]() |
7bc0e017f6 | ||
![]() |
bb617ccacd | ||
![]() |
d5fbea3411 | ||
![]() |
ea92a70e64 | ||
![]() |
019a6f0c54 | ||
![]() |
be2d100d2d | ||
![]() |
bba00f2b66 | ||
![]() |
07b69fd2f8 | ||
![]() |
6c7346cdbe | ||
![]() |
487ac0a011 | ||
![]() |
bf673072e8 | ||
![]() |
4a2ecc5d6c | ||
![]() |
475eb9fcaa | ||
![]() |
ba2927e3c5 | ||
![]() |
ed786843de | ||
![]() |
672dbf75d6 | ||
![]() |
6beef589e3 | ||
![]() |
efdfa50f1e | ||
![]() |
285ddd0b60 | ||
![]() |
c8419ae43a | ||
![]() |
ccc82895ed | ||
![]() |
5ec9d8534e | ||
![]() |
0213f21a46 | ||
![]() |
2af44e02bf | ||
![]() |
ae83679e93 | ||
![]() |
24ce347472 | ||
![]() |
0ecbeb7152 | ||
![]() |
af92429ea0 | ||
![]() |
00bd8d42c3 | ||
![]() |
4bf2fbe092 | ||
![]() |
44d920592d | ||
![]() |
7099f43a12 | ||
![]() |
fa97379f78 | ||
![]() |
f4c2c08ccb | ||
![]() |
599b07497b | ||
![]() |
270a31535c | ||
![]() |
0e6add7dd6 | ||
![]() |
4af624627e | ||
![]() |
7f2846a5bd | ||
![]() |
809cfef957 | ||
![]() |
4adb0b386b | ||
![]() |
1a0396dcae | ||
![]() |
d07ee22f58 | ||
![]() |
4905c95167 | ||
![]() |
2406c45077 | ||
![]() |
8fe3c40278 | ||
![]() |
2e9bf00e0a | ||
![]() |
446d90d835 | ||
![]() |
b37fe23b99 | ||
![]() |
6354721391 | ||
![]() |
b04377825f | ||
![]() |
32eac07424 | ||
![]() |
9aa33ad1d3 | ||
![]() |
fa0705f059 | ||
![]() |
b259595c9d | ||
![]() |
4524367cc0 | ||
![]() |
06188dcac3 | ||
![]() |
74ea6bd08b | ||
![]() |
3e85c2e820 | ||
![]() |
52ffb02685 | ||
![]() |
a321793e93 | ||
![]() |
2478d51246 | ||
![]() |
82d6313887 | ||
![]() |
76680ae41b | ||
![]() |
b274ecca4f | ||
![]() |
616b88eea1 | ||
![]() |
af9b65ee78 | ||
![]() |
c14f37b933 | ||
![]() |
49f268d71e | ||
![]() |
df9a05cba5 | ||
![]() |
925b45e8f0 | ||
![]() |
59d3fa47a5 | ||
![]() |
c1ccb244db | ||
![]() |
c6d955ade7 | ||
![]() |
8e4d9c1f61 | ||
![]() |
ffa299f99e | ||
![]() |
a869f5b391 | ||
![]() |
c956b913b3 | ||
![]() |
ed54ea08b2 | ||
![]() |
6e5a48daed | ||
![]() |
18f248cdbe | ||
![]() |
813691f1ec | ||
![]() |
3d43f755fc | ||
![]() |
f06fd74d25 | ||
![]() |
5fdcdedd9e | ||
![]() |
abaf4425d9 | ||
![]() |
5f88e6ccf0 | ||
![]() |
cbb8c88a0e | ||
![]() |
1c224894a2 | ||
![]() |
e3bdd00ff3 | ||
![]() |
45607703c2 | ||
![]() |
7424c0c68b | ||
![]() |
1bb0f34084 | ||
![]() |
acc90d4e77 | ||
![]() |
7e3c8eb542 | ||
![]() |
10b195a59f | ||
![]() |
2cafe9ff9b | ||
![]() |
0a5c8356eb | ||
![]() |
31fc9c7f31 | ||
![]() |
2eba723ee7 | ||
![]() |
6437df7576 | ||
![]() |
a1c8fd998c | ||
![]() |
9ada5c7974 | ||
![]() |
7ac36d4d8d | ||
![]() |
ecde599fd4 | ||
![]() |
991d3d5401 | ||
![]() |
a7631810bd | ||
![]() |
d67dc36bbe | ||
![]() |
53c6fe622f | ||
![]() |
8dc1203c7b | ||
![]() |
096e49ddc8 | ||
![]() |
74145666f5 | ||
![]() |
b59f9abd1a | ||
![]() |
b095bad0d2 | ||
![]() |
c896176925 | ||
![]() |
edece1fa14 | ||
![]() |
2ccc0dcfca | ||
![]() |
1e708a8d42 | ||
![]() |
677c0e3b70 | ||
![]() |
08e2dd848a | ||
![]() |
1b5075d946 | ||
![]() |
b5f58a4be2 | ||
![]() |
268115239c | ||
![]() |
6ec040f5c9 | ||
![]() |
0f26470169 | ||
![]() |
4e488d04c8 | ||
![]() |
fdc316a1ce | ||
![]() |
1e35c196e8 | ||
![]() |
aab041da91 | ||
![]() |
aaa863535d | ||
![]() |
ed26917691 | ||
![]() |
49d5234b39 | ||
![]() |
40d4c592b3 | ||
![]() |
c0dca425a5 | ||
![]() |
cc0051cb40 | ||
![]() |
b217c88b37 |
19
.editorconfig
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
# EditorConfig is awesome: http://EditorConfig.org
|
||||||
|
|
||||||
|
# top-most EditorConfig file
|
||||||
|
root = true
|
||||||
|
|
||||||
|
[*.{c,cpp,h,hpp,m}]
|
||||||
|
indent_style = tab
|
||||||
|
indent_size = 4
|
||||||
|
end_of_line = lf
|
||||||
|
|
||||||
|
[*.cs]
|
||||||
|
indent_style = space
|
||||||
|
indent_size = 4
|
||||||
|
end_of_line = lf
|
||||||
|
|
||||||
|
[{meson.build,meson_options.txt}]
|
||||||
|
indent_size = 2
|
||||||
|
indent_style = space
|
||||||
|
insert_final_newline = true
|
17
.github/workflows/flatpak-build.yml
vendored
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
name: Flatpak Build
|
||||||
|
on: [push, pull_request]
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: bilelmoussaoui/flatpak-github-actions:gnome-40
|
||||||
|
options: --privileged
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
submodules: true
|
||||||
|
|
||||||
|
- uses: bilelmoussaoui/flatpak-github-actions/flatpak-builder@v3
|
||||||
|
with:
|
||||||
|
bundle: hexchat.flatpak
|
||||||
|
manifest-path: flatpak/io.github.Hexchat.json
|
40
.github/workflows/msys-build.yml
vendored
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
name: MSYS2 Build
|
||||||
|
on: [push, pull_request]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: windows-latest
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
shell: msys2 {0}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- uses: msys2/setup-msys2@v2
|
||||||
|
with:
|
||||||
|
install: >-
|
||||||
|
mingw-w64-x86_64-gcc
|
||||||
|
mingw-w64-x86_64-pkg-config
|
||||||
|
mingw-w64-x86_64-python3-cffi
|
||||||
|
mingw-w64-x86_64-meson
|
||||||
|
mingw-w64-x86_64-gtk2
|
||||||
|
mingw-w64-x86_64-luajit
|
||||||
|
mingw-w64-x86_64-desktop-file-utils
|
||||||
|
|
||||||
|
- name: Configure
|
||||||
|
run: >-
|
||||||
|
meson build
|
||||||
|
-Dtext-frontend=true
|
||||||
|
-Ddbus=disabled
|
||||||
|
-Dwith-upd=false
|
||||||
|
-Dwith-perl=false
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: ninja -C build
|
||||||
|
|
||||||
|
- name: Test
|
||||||
|
run: ninja -C build test
|
||||||
|
|
||||||
|
- name: Install
|
||||||
|
run: ninja -C build install
|
25
.github/workflows/ubuntu-build.yml
vendored
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
name: Ubuntu Build
|
||||||
|
on: [push, pull_request]
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-20.04
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Install Dependencies
|
||||||
|
run: |
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install -y meson libcanberra-dev libdbus-glib-1-dev libglib2.0-dev libgtk2.0-dev libluajit-5.1-dev libpci-dev libperl-dev libproxy-dev libssl-dev python3-dev python3-cffi mono-devel desktop-file-utils
|
||||||
|
|
||||||
|
- name: Configure
|
||||||
|
run: meson build -Dtext=true -Dtheme-manager=true -Dauto_features=enabled
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: ninja -C build
|
||||||
|
|
||||||
|
- name: Test
|
||||||
|
run: ninja -C build test
|
||||||
|
|
||||||
|
- name: Install
|
||||||
|
run: sudo ninja -C build install
|
105
.github/workflows/windows-build.yml
vendored
Normal file
@@ -0,0 +1,105 @@
|
|||||||
|
name: Windows Build
|
||||||
|
on: [push, pull_request]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build-gtk:
|
||||||
|
runs-on: windows-2019
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
platform: [x64, win32]
|
||||||
|
arch: [x64, x86]
|
||||||
|
exclude:
|
||||||
|
- platform: x64
|
||||||
|
arch: x86
|
||||||
|
- platform: win32
|
||||||
|
arch: x64
|
||||||
|
fail-fast: false
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
repository: wingtk/gvsbuild
|
||||||
|
ref: 9b10978a8c5aa539f4280feeaa69bc5cc8bf9fbf
|
||||||
|
|
||||||
|
- uses: actions/cache@v2
|
||||||
|
with:
|
||||||
|
path: C:\gtk-build
|
||||||
|
key: 9b10978a8c5aa539f4280feeaa69bc5cc8bf9fbf
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
C:/hostedtoolcache/windows/Python/3.6.8/${{ matrix.arch }}/python.exe .\build.py build --python-dir="C:/hostedtoolcache/windows/Python/3.6.8/${{ matrix.arch }}" -p ${{ matrix.arch }} --vs-ver=16 gtk lgi openssl
|
||||||
|
|
||||||
|
- uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: Build Files ${{ matrix.arch }}
|
||||||
|
path: C:\gtk-build\gtk\${{ matrix.platform }}\release
|
||||||
|
|
||||||
|
build:
|
||||||
|
runs-on: windows-2019
|
||||||
|
needs: build-gtk
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
platform: [x64, win32]
|
||||||
|
arch: [x64, x86]
|
||||||
|
exclude:
|
||||||
|
- platform: x64
|
||||||
|
arch: x86
|
||||||
|
- platform: win32
|
||||||
|
arch: x64
|
||||||
|
fail-fast: false
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Install Dependencies
|
||||||
|
run: |
|
||||||
|
New-Item -Name "deps" -ItemType "Directory"
|
||||||
|
|
||||||
|
Invoke-WebRequest http://files.jrsoftware.org/is/5/innosetup-5.5.9-unicode.exe -OutFile deps\innosetup-unicode.exe
|
||||||
|
& deps\innosetup-unicode.exe /VERYSILENT | Out-Null
|
||||||
|
|
||||||
|
Invoke-WebRequest https://dl.hexchat.net/misc/idpsetup-1.5.1.exe -OutFile deps\idpsetup.exe
|
||||||
|
& deps\idpsetup.exe /VERYSILENT
|
||||||
|
|
||||||
|
Invoke-WebRequest https://dl.hexchat.net/gtk/gtk-${{ matrix.platform }}-2018-08-29.7z -OutFile deps\gtk-${{ matrix.arch }}.7z
|
||||||
|
& 7z.exe x deps\gtk-${{ matrix.arch }}.7z -oC:\gtk-build\gtk
|
||||||
|
|
||||||
|
Invoke-WebRequest https://dl.hexchat.net/gtk-win32/gendef-20111031.7z -OutFile deps\gendef.7z
|
||||||
|
& 7z.exe x deps\gendef.7z -oC:\gtk-build
|
||||||
|
|
||||||
|
Invoke-WebRequest https://dl.hexchat.net/gtk-win32/WinSparkle-20151011.7z -OutFile deps\WinSparkle.7z
|
||||||
|
& 7z.exe x deps\WinSparkle.7z -oC:\gtk-build\WinSparkle
|
||||||
|
|
||||||
|
Invoke-WebRequest https://dl.hexchat.net/misc/perl/perl-5.20.0-${{ matrix.arch }}.7z -OutFile deps\perl-${{ matrix.arch }}.7z
|
||||||
|
& 7z.exe x deps\perl-${{ matrix.arch }}.7z -oC:\gtk-build\perl-5.20\${{ matrix.platform }}
|
||||||
|
|
||||||
|
New-Item -Path "c:\gtk-build" -Name "python-2.7" -ItemType "Directory"
|
||||||
|
New-Item -Path "c:\gtk-build" -Name "python-3.6" -ItemType "Directory"
|
||||||
|
New-Item -Path "c:\gtk-build\python-2.7" -Name "${{ matrix.platform }}" -ItemType "SymbolicLink" -Value "C:/hostedtoolcache/windows/Python/2.7.18/${{ matrix.arch }}"
|
||||||
|
New-Item -Path "c:\gtk-build\python-3.6" -Name "${{ matrix.platform }}" -ItemType "SymbolicLink" -Value "C:/hostedtoolcache/windows/Python/3.6.8/${{ matrix.arch }}"
|
||||||
|
|
||||||
|
C:/hostedtoolcache/windows/Python/3.6.8/${{ matrix.arch }}/python.exe -m pip install cffi
|
||||||
|
C:/hostedtoolcache/windows/Python/2.7.18/${{ matrix.arch }}/python.exe -m pip install -qq cffi
|
||||||
|
shell: powershell
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\Tools\VsDevCmd.bat"
|
||||||
|
msbuild win32\hexchat.sln /m /verbosity:minimal /p:Configuration=Release /p:Platform=${{ matrix.platform }}
|
||||||
|
shell: cmd
|
||||||
|
|
||||||
|
- name: Preparing Artifacts
|
||||||
|
run: |
|
||||||
|
move ..\hexchat-build\${{ matrix.platform }}\HexChat*.exe .\
|
||||||
|
move ..\hexchat-build .\
|
||||||
|
shell: cmd
|
||||||
|
|
||||||
|
- uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: Installer ${{ matrix.arch }}
|
||||||
|
path: HexChat*.exe
|
||||||
|
|
||||||
|
- uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: Build Files ${{ matrix.arch }}
|
||||||
|
path: hexchat-build
|
74
.gitignore
vendored
@@ -1,65 +1,29 @@
|
|||||||
# git ignore file
|
/build
|
||||||
# Unix generated files
|
builddir/
|
||||||
.deps/
|
doxygen*.tmp
|
||||||
.libs/
|
html/
|
||||||
Makefile
|
*.patch
|
||||||
Makefile.in
|
tags
|
||||||
aclocal.m4
|
|
||||||
autom4te.cache/
|
|
||||||
compile
|
|
||||||
confdefs.h
|
|
||||||
conftest
|
|
||||||
conftest.c
|
|
||||||
conftest.err
|
|
||||||
config.guess
|
|
||||||
config.h.in
|
|
||||||
config.h
|
|
||||||
config.log
|
|
||||||
config.status
|
|
||||||
config.sub
|
|
||||||
configure
|
|
||||||
configure.tmp
|
|
||||||
depcomp
|
|
||||||
install-sh
|
|
||||||
intl/
|
|
||||||
libtool
|
|
||||||
ltmain.sh
|
|
||||||
m4/
|
|
||||||
missing
|
|
||||||
plugins/perl/irc.pm.h
|
|
||||||
plugins/perl/xchat.pm.h
|
|
||||||
po/Makefile.in.in
|
|
||||||
po/POTFILES
|
|
||||||
po/remove-potcdate.sed
|
|
||||||
po/stamp-po
|
|
||||||
src/common/dbus/example
|
|
||||||
src/common/dbus/marshallers.h
|
|
||||||
src/common/dbus/org.hexchat.service.service
|
|
||||||
src/common/dbus/remote-object-glue.h
|
|
||||||
src/common/make-te
|
|
||||||
src/common/textenums.h
|
|
||||||
src/common/textevents.h
|
|
||||||
src/fe-gtk/hexchat
|
|
||||||
src/fe-text/hexchat-text
|
|
||||||
src/htm/thememan.exe
|
|
||||||
stamp-h1
|
|
||||||
*.a
|
|
||||||
*.o
|
|
||||||
*.la
|
|
||||||
*.lo
|
|
||||||
*.gmo
|
|
||||||
*.mo
|
|
||||||
*.po~
|
|
||||||
# Win32 generated files
|
# Win32 generated files
|
||||||
plugins/wmpa/wmpa_h.h
|
plugins/wmpa/wmpa_h.h
|
||||||
plugins/wmpa/wmpa_i.c
|
plugins/wmpa/wmpa_i.c
|
||||||
src/pixmaps/inline_pngs.h
|
|
||||||
src/htm/obj/*
|
src/htm/obj/*
|
||||||
win32/build/*
|
|
||||||
win32/build-xp/*
|
|
||||||
win32/ipch/*
|
win32/ipch/*
|
||||||
|
win32/ext/perl/perl-x86-cache
|
||||||
|
win32/ext/perl/perl-x86-SetupFiles
|
||||||
|
win32/ext/perl/perl-x64-cache
|
||||||
|
win32/ext/perl/perl-x64-SetupFiles
|
||||||
|
win32/installer/hexchat.iss
|
||||||
resource.h
|
resource.h
|
||||||
*.opensdf
|
*.opensdf
|
||||||
*.sdf
|
*.sdf
|
||||||
*.suo
|
*.suo
|
||||||
*.user
|
*.user
|
||||||
|
*.exe
|
||||||
|
# OSX
|
||||||
|
osx/HexChat.app
|
||||||
|
osx/.HexChat.app
|
||||||
|
*.zip
|
||||||
|
*.dmg
|
||||||
|
*.VC.db
|
||||||
|
*.VC.opendb
|
||||||
|
3
.gitmodules
vendored
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
[submodule "flatpak/shared-modules"]
|
||||||
|
path = flatpak/shared-modules
|
||||||
|
url = https://github.com/flathub/shared-modules.git
|
5
.lgtm.yml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
extraction:
|
||||||
|
cpp:
|
||||||
|
prepare:
|
||||||
|
packages:
|
||||||
|
- python3-cffi
|
10
.mailmap
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
Berke Viktor <github.bviktor@outlook.com> <berkeviktor@aol.com>
|
||||||
|
Berke Viktor <github.bviktor@outlook.com> <bviktor@hexchat.org>
|
||||||
|
Berke Viktor <github.bviktor@outlook.com> <bviktor@outlook.com>
|
||||||
|
Berke Viktor <github.bviktor@outlook.com> berkeviktor@aol.com
|
||||||
|
Patrick Griffis <tingping@tingping.se> TingPing <tingping@fedoraproject.org>
|
||||||
|
Patrick Griffis <tingping@tingping.se> TingPing <tingping@tingping.se>
|
||||||
|
Patrick Griffis <tingping@tingping.se> TingPing <tngpng@gmail.com>
|
||||||
|
Patrick Griffis <tingping@tingping.se> TingPing <TingPing@users.noreply.github.com>
|
||||||
|
Arnav Singh <arnavion@gmail.com> Arnavion
|
||||||
|
Eustachy Kapusta <Eustachy.kapusta@gmail.com> tomek
|
@@ -2,8 +2,7 @@
|
|||||||
host = https://www.transifex.com
|
host = https://www.transifex.com
|
||||||
|
|
||||||
[hexchat.main]
|
[hexchat.main]
|
||||||
file_filter = po\<lang>.po
|
file_filter = po/<lang>.po
|
||||||
source_file = po\hexchat.pot
|
source_file = po/hexchat.pot
|
||||||
source_lang = en
|
source_lang = en
|
||||||
type = PO
|
type = PO
|
||||||
|
|
||||||
|
65
.tx/howto.md
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
Go to the [Transifex client documentation](http://help.transifex.com/features/client/index.html) for more info.
|
||||||
|
|
||||||
|
## Initializing a new project on Transifex
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
tx init
|
||||||
|
tx set --auto-local -r hexchat.main "po\<lang>.po" --source-lang en --source-file po\hexchat.pot --execute
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
Append `type = PO` to _.tx\config_.
|
||||||
|
|
||||||
|
Push the resources to Transifex:
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
tx push --source --translation
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
|
||||||
|
## Updating online translations with the template
|
||||||
|
|
||||||
|
Regenerate the source file ( _hexchat.pot_ ) on a Unix machine:
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
rm po/hexchat.pot && ./autogen.sh && ./configure --enable-nls && cd src/common && make textevents.h && cd../.. && make
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
Push the updated source file to Transifex (this automatically updates all translation files):
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
tx push --source
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
|
||||||
|
## Updating the repo with online translations
|
||||||
|
|
||||||
|
Update local copy with Transifex updates:
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
tx pull
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
Update GitHub repo:
|
||||||
|
|
||||||
|
<pre>git add po/
|
||||||
|
git commit
|
||||||
|
git push
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
|
||||||
|
## Updating just one translation with local changes
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
tx push --translation --language xy
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
Where _xy_ is the language code.
|
||||||
|
|
||||||
|
|
||||||
|
## Forcing translation updates
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
tx pull --force
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
This might be required when the repo is freshly cloned and thus timestamps are newer than on Transifex.
|
@@ -1,41 +0,0 @@
|
|||||||
More info: http://help.transifex.com/features/client/index.html
|
|
||||||
|
|
||||||
1) To initialize a new project on Transifex:
|
|
||||||
|
|
||||||
# tx init
|
|
||||||
# tx set --auto-local -r hexchat.main "po\<lang>.po" --source-lang en --source-file po\hexchat.pot --execute
|
|
||||||
|
|
||||||
Append 'type = PO' to .tx\config without apostrophes
|
|
||||||
|
|
||||||
Push the resources to Transifex
|
|
||||||
# tx push --source --translation
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
2) To update online translations:
|
|
||||||
|
|
||||||
Regenerate the source file (hexchat.pot) on a Unix machine
|
|
||||||
# rm po/hexchat.pot && ./autogen.sh && ./configure --enable-nls && make
|
|
||||||
|
|
||||||
Push the updated source file to Transifex (this automatically updates all translation files)
|
|
||||||
# tx push --source
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
3) To update repo with online translations:
|
|
||||||
|
|
||||||
Update local copy with Transifex updates
|
|
||||||
# tx pull
|
|
||||||
|
|
||||||
Update GitHub repo
|
|
||||||
# git add po/
|
|
||||||
# git commit
|
|
||||||
# git push
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
4) To update just one translation with local changes:
|
|
||||||
|
|
||||||
# tx push --translation --language xy
|
|
||||||
|
|
||||||
Where xy is the language code
|
|
@@ -2,7 +2,7 @@
|
|||||||
Version 2, June 1991
|
Version 2, June 1991
|
||||||
|
|
||||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||||
Everyone is permitted to copy and distribute verbatim copies
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
of this license document, but changing it is not allowed.
|
of this license document, but changing it is not allowed.
|
||||||
|
|
13
Makefile.am
@@ -1,13 +0,0 @@
|
|||||||
## Process this file with automake to produce Makefile.in
|
|
||||||
|
|
||||||
SUBDIRS = po intl src plugins man
|
|
||||||
|
|
||||||
EXTRA_DIST = autogen.sh
|
|
||||||
|
|
||||||
icon_DATA = src/pixmaps/hexchat.png
|
|
||||||
icondir = $(datadir)/pixmaps
|
|
||||||
|
|
||||||
util_DATA = share/misc/hexchat.desktop
|
|
||||||
utildir = $(datadir)/applications
|
|
||||||
|
|
||||||
ACLOCAL_AMFLAGS = -I m4
|
|
40
acinclude.m4
@@ -1,40 +0,0 @@
|
|||||||
dnl AS_AC_EXPAND(VAR, CONFIGURE_VAR)
|
|
||||||
dnl
|
|
||||||
dnl example
|
|
||||||
dnl AS_AC_EXPAND(SYSCONFDIR, $sysconfdir)
|
|
||||||
dnl will set SYSCONFDIR to /usr/local/etc if prefix=/usr/local
|
|
||||||
|
|
||||||
AC_DEFUN([AS_AC_EXPAND],
|
|
||||||
[
|
|
||||||
EXP_VAR=[$1]
|
|
||||||
FROM_VAR=[$2]
|
|
||||||
|
|
||||||
dnl first expand prefix and exec_prefix if necessary
|
|
||||||
prefix_save=$prefix
|
|
||||||
exec_prefix_save=$exec_prefix
|
|
||||||
|
|
||||||
dnl if no prefix given, then use /usr/local, the default prefix
|
|
||||||
if test "x$prefix" = "xNONE"; then
|
|
||||||
prefix=$ac_default_prefix
|
|
||||||
fi
|
|
||||||
dnl if no exec_prefix given, then use prefix
|
|
||||||
if test "x$exec_prefix" = "xNONE"; then
|
|
||||||
exec_prefix=$prefix
|
|
||||||
fi
|
|
||||||
|
|
||||||
full_var="$FROM_VAR"
|
|
||||||
dnl loop until it doesn't change anymore
|
|
||||||
while true; do
|
|
||||||
new_full_var="`eval echo $full_var`"
|
|
||||||
if test "x$new_full_var" = "x$full_var"; then break; fi
|
|
||||||
full_var=$new_full_var
|
|
||||||
done
|
|
||||||
|
|
||||||
dnl clean up
|
|
||||||
full_var=$new_full_var
|
|
||||||
AC_SUBST([$1], "$full_var")
|
|
||||||
|
|
||||||
dnl restore prefix and exec_prefix
|
|
||||||
prefix=$prefix_save
|
|
||||||
exec_prefix=$exec_prefix_save
|
|
||||||
])
|
|
113
autogen.sh
@@ -1,113 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
have_automake=false
|
|
||||||
|
|
||||||
if automake --version < /dev/null > /dev/null 2>&1 ; then
|
|
||||||
automake_version=`automake --version | grep 'automake (GNU automake)' | sed 's/^[^0-9]*\(.*\)/\1/'`
|
|
||||||
case $automake_version in
|
|
||||||
1.2*|1.3*|1.4|1.4*|1.5*|1.6*|1.7*|1.8*)
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
have_automake=true
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
if $have_automake ; then
|
|
||||||
AUTOMAKE="automake"
|
|
||||||
ACLOCAL="aclocal"
|
|
||||||
else
|
|
||||||
if automake-1.9 --version < /dev/null > /dev/null 2>&1 ; then
|
|
||||||
AUTOMAKE="automake-1.9"
|
|
||||||
ACLOCAL="aclocal-1.9"
|
|
||||||
else
|
|
||||||
echo "automake missing or too old. This requires at least automake 1.9"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# ------ START GETTEXT ------
|
|
||||||
|
|
||||||
echo searching for GNU gettext intl directory...
|
|
||||||
|
|
||||||
dirs="/usr/share /usr/local/share /opt/share /usr /usr/local /opt /usr/gnu/share /opt/local /opt/local/share"
|
|
||||||
found=0
|
|
||||||
for try in $dirs; do
|
|
||||||
echo -n " -> $try/gettext/intl... "
|
|
||||||
if test -d $try/gettext/intl; then
|
|
||||||
echo found it
|
|
||||||
found=1
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
echo no
|
|
||||||
done
|
|
||||||
if test "$found" != 1; then
|
|
||||||
echo ERROR: Cannot find gettext/intl directory.
|
|
||||||
echo ERROR: Install GNU gettext in /usr or /usr/local prefix.
|
|
||||||
exit 7
|
|
||||||
fi;
|
|
||||||
|
|
||||||
echo copying gettext intl files...
|
|
||||||
if test -f $try/gettext/mkinstalldirs; then
|
|
||||||
ln -s $try/gettext/mkinstalldirs mkinstalldirs
|
|
||||||
fi
|
|
||||||
intldir="$try/gettext/intl"
|
|
||||||
if test ! -d intl; then
|
|
||||||
mkdir intl
|
|
||||||
fi
|
|
||||||
olddir=`pwd`
|
|
||||||
cd $intldir
|
|
||||||
for file in *; do
|
|
||||||
if test $file != COPYING.LIB-2.0 && test $file != COPYING.LIB-2.1; then
|
|
||||||
rm -f $olddir/intl/$file
|
|
||||||
cp $intldir/$file $olddir/intl/
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
cp -f $try/gettext/po/Makefile.in.in $olddir/po/
|
|
||||||
cd $olddir
|
|
||||||
if test -f intl/plural.c; then
|
|
||||||
sleep 2
|
|
||||||
touch intl/plural.c
|
|
||||||
fi
|
|
||||||
|
|
||||||
# ------ END GETTEXT ------
|
|
||||||
|
|
||||||
|
|
||||||
echo running $ACLOCAL...
|
|
||||||
$ACLOCAL $ACLOCAL_FLAGS
|
|
||||||
if test "$?" != "0"; then
|
|
||||||
echo aclocal failed, stopping.
|
|
||||||
exit 2
|
|
||||||
fi
|
|
||||||
echo running libtoolize...
|
|
||||||
libtoolize --force
|
|
||||||
if test "$?" != "0"; then
|
|
||||||
echo libtoolize failed, stopping.
|
|
||||||
exit 3
|
|
||||||
fi
|
|
||||||
echo running autoheader...
|
|
||||||
autoheader
|
|
||||||
if test "$?" != "0"; then
|
|
||||||
echo autoheader failed, stopping.
|
|
||||||
exit 4
|
|
||||||
fi
|
|
||||||
echo running $AUTOMAKE...
|
|
||||||
$AUTOMAKE -a
|
|
||||||
if test "$?" != "0"; then
|
|
||||||
echo automake failed, stopping.
|
|
||||||
exit 5
|
|
||||||
fi
|
|
||||||
echo running autoconf...
|
|
||||||
autoconf
|
|
||||||
if test "$?" != "0"; then
|
|
||||||
echo autoconf failed, stopping.
|
|
||||||
exit 6
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo if no errors occured, run ./configure
|
|
||||||
exit 0
|
|
||||||
|
|
||||||
#autogen.sh generates:
|
|
||||||
# aclocal.m4 Makefile.in config.guess config.sub ltmain.sh
|
|
||||||
# configure install-sh missing mkinstalldirs depcomp
|
|
||||||
#
|
|
||||||
#configure generates:
|
|
||||||
# config.status libtool Makefile.in
|
|
@@ -1,18 +0,0 @@
|
|||||||
#define LOCALEDIR "./locale"
|
|
||||||
#define ENABLE_NLS
|
|
||||||
#define USE_GMODULE
|
|
||||||
#define USE_PLUGIN
|
|
||||||
#define USE_OPENSSL
|
|
||||||
#define USE_LIBSEXY
|
|
||||||
#define USE_IPV6
|
|
||||||
#define HAVE_ISO_CODES
|
|
||||||
#define PACKAGE_NAME "hexchat"
|
|
||||||
#define PACKAGE_VERSION "2.9.4"
|
|
||||||
#define HEXCHATLIBDIR "."
|
|
||||||
#define HEXCHATSHAREDIR "."
|
|
||||||
#define OLD_PERL
|
|
||||||
#define GETTEXT_PACKAGE "hexchat"
|
|
||||||
#define PACKAGE_TARNAME "hexchat-2.9.4"
|
|
||||||
#ifndef USE_IPV6
|
|
||||||
#define socklen_t int
|
|
||||||
#endif
|
|
672
config.rpath
@@ -1,672 +0,0 @@
|
|||||||
#! /bin/sh
|
|
||||||
# Output a system dependent set of variables, describing how to set the
|
|
||||||
# run time search path of shared libraries in an executable.
|
|
||||||
#
|
|
||||||
# Copyright 1996-2010 Free Software Foundation, Inc.
|
|
||||||
# Taken from GNU libtool, 2001
|
|
||||||
# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
|
|
||||||
#
|
|
||||||
# This file is free software; the Free Software Foundation gives
|
|
||||||
# unlimited permission to copy and/or distribute it, with or without
|
|
||||||
# modifications, as long as this notice is preserved.
|
|
||||||
#
|
|
||||||
# The first argument passed to this file is the canonical host specification,
|
|
||||||
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
|
|
||||||
# or
|
|
||||||
# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
|
|
||||||
# The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld
|
|
||||||
# should be set by the caller.
|
|
||||||
#
|
|
||||||
# The set of defined variables is at the end of this script.
|
|
||||||
|
|
||||||
# Known limitations:
|
|
||||||
# - On IRIX 6.5 with CC="cc", the run time search patch must not be longer
|
|
||||||
# than 256 bytes, otherwise the compiler driver will dump core. The only
|
|
||||||
# known workaround is to choose shorter directory names for the build
|
|
||||||
# directory and/or the installation directory.
|
|
||||||
|
|
||||||
# All known linkers require a `.a' archive for static linking (except MSVC,
|
|
||||||
# which needs '.lib').
|
|
||||||
libext=a
|
|
||||||
shrext=.so
|
|
||||||
|
|
||||||
host="$1"
|
|
||||||
host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
|
|
||||||
host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
|
|
||||||
host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
|
|
||||||
|
|
||||||
# Code taken from libtool.m4's _LT_CC_BASENAME.
|
|
||||||
|
|
||||||
for cc_temp in $CC""; do
|
|
||||||
case $cc_temp in
|
|
||||||
compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
|
|
||||||
distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
|
|
||||||
\-*) ;;
|
|
||||||
*) break;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'`
|
|
||||||
|
|
||||||
# Code taken from libtool.m4's _LT_COMPILER_PIC.
|
|
||||||
|
|
||||||
wl=
|
|
||||||
if test "$GCC" = yes; then
|
|
||||||
wl='-Wl,'
|
|
||||||
else
|
|
||||||
case "$host_os" in
|
|
||||||
aix*)
|
|
||||||
wl='-Wl,'
|
|
||||||
;;
|
|
||||||
darwin*)
|
|
||||||
case $cc_basename in
|
|
||||||
xlc*)
|
|
||||||
wl='-Wl,'
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
;;
|
|
||||||
mingw* | cygwin* | pw32* | os2* | cegcc*)
|
|
||||||
;;
|
|
||||||
hpux9* | hpux10* | hpux11*)
|
|
||||||
wl='-Wl,'
|
|
||||||
;;
|
|
||||||
irix5* | irix6* | nonstopux*)
|
|
||||||
wl='-Wl,'
|
|
||||||
;;
|
|
||||||
newsos6)
|
|
||||||
;;
|
|
||||||
linux* | k*bsd*-gnu)
|
|
||||||
case $cc_basename in
|
|
||||||
ecc*)
|
|
||||||
wl='-Wl,'
|
|
||||||
;;
|
|
||||||
icc* | ifort*)
|
|
||||||
wl='-Wl,'
|
|
||||||
;;
|
|
||||||
lf95*)
|
|
||||||
wl='-Wl,'
|
|
||||||
;;
|
|
||||||
pgcc | pgf77 | pgf90)
|
|
||||||
wl='-Wl,'
|
|
||||||
;;
|
|
||||||
ccc*)
|
|
||||||
wl='-Wl,'
|
|
||||||
;;
|
|
||||||
como)
|
|
||||||
wl='-lopt='
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
case `$CC -V 2>&1 | sed 5q` in
|
|
||||||
*Sun\ C*)
|
|
||||||
wl='-Wl,'
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
;;
|
|
||||||
osf3* | osf4* | osf5*)
|
|
||||||
wl='-Wl,'
|
|
||||||
;;
|
|
||||||
rdos*)
|
|
||||||
;;
|
|
||||||
solaris*)
|
|
||||||
wl='-Wl,'
|
|
||||||
;;
|
|
||||||
sunos4*)
|
|
||||||
wl='-Qoption ld '
|
|
||||||
;;
|
|
||||||
sysv4 | sysv4.2uw2* | sysv4.3*)
|
|
||||||
wl='-Wl,'
|
|
||||||
;;
|
|
||||||
sysv4*MP*)
|
|
||||||
;;
|
|
||||||
sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
|
|
||||||
wl='-Wl,'
|
|
||||||
;;
|
|
||||||
unicos*)
|
|
||||||
wl='-Wl,'
|
|
||||||
;;
|
|
||||||
uts4*)
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Code taken from libtool.m4's _LT_LINKER_SHLIBS.
|
|
||||||
|
|
||||||
hardcode_libdir_flag_spec=
|
|
||||||
hardcode_libdir_separator=
|
|
||||||
hardcode_direct=no
|
|
||||||
hardcode_minus_L=no
|
|
||||||
|
|
||||||
case "$host_os" in
|
|
||||||
cygwin* | mingw* | pw32* | cegcc*)
|
|
||||||
# FIXME: the MSVC++ port hasn't been tested in a loooong time
|
|
||||||
# When not using gcc, we currently assume that we are using
|
|
||||||
# Microsoft Visual C++.
|
|
||||||
if test "$GCC" != yes; then
|
|
||||||
with_gnu_ld=no
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
interix*)
|
|
||||||
# we just hope/assume this is gcc and not c89 (= MSVC++)
|
|
||||||
with_gnu_ld=yes
|
|
||||||
;;
|
|
||||||
openbsd*)
|
|
||||||
with_gnu_ld=no
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
ld_shlibs=yes
|
|
||||||
if test "$with_gnu_ld" = yes; then
|
|
||||||
# Set some defaults for GNU ld with shared library support. These
|
|
||||||
# are reset later if shared libraries are not supported. Putting them
|
|
||||||
# here allows them to be overridden if necessary.
|
|
||||||
# Unlike libtool, we use -rpath here, not --rpath, since the documented
|
|
||||||
# option of GNU ld is called -rpath, not --rpath.
|
|
||||||
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
|
|
||||||
case "$host_os" in
|
|
||||||
aix[3-9]*)
|
|
||||||
# On AIX/PPC, the GNU linker is very broken
|
|
||||||
if test "$host_cpu" != ia64; then
|
|
||||||
ld_shlibs=no
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
amigaos*)
|
|
||||||
hardcode_libdir_flag_spec='-L$libdir'
|
|
||||||
hardcode_minus_L=yes
|
|
||||||
# Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
|
|
||||||
# that the semantics of dynamic libraries on AmigaOS, at least up
|
|
||||||
# to version 4, is to share data among multiple programs linked
|
|
||||||
# with the same dynamic library. Since this doesn't match the
|
|
||||||
# behavior of shared libraries on other platforms, we cannot use
|
|
||||||
# them.
|
|
||||||
ld_shlibs=no
|
|
||||||
;;
|
|
||||||
beos*)
|
|
||||||
if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
|
|
||||||
:
|
|
||||||
else
|
|
||||||
ld_shlibs=no
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
cygwin* | mingw* | pw32* | cegcc*)
|
|
||||||
# hardcode_libdir_flag_spec is actually meaningless, as there is
|
|
||||||
# no search path for DLLs.
|
|
||||||
hardcode_libdir_flag_spec='-L$libdir'
|
|
||||||
if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
|
|
||||||
:
|
|
||||||
else
|
|
||||||
ld_shlibs=no
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
interix[3-9]*)
|
|
||||||
hardcode_direct=no
|
|
||||||
hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
|
|
||||||
;;
|
|
||||||
gnu* | linux* | k*bsd*-gnu)
|
|
||||||
if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
|
|
||||||
:
|
|
||||||
else
|
|
||||||
ld_shlibs=no
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
netbsd*)
|
|
||||||
;;
|
|
||||||
solaris*)
|
|
||||||
if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
|
|
||||||
ld_shlibs=no
|
|
||||||
elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
|
|
||||||
:
|
|
||||||
else
|
|
||||||
ld_shlibs=no
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
|
|
||||||
case `$LD -v 2>&1` in
|
|
||||||
*\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
|
|
||||||
ld_shlibs=no
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
|
|
||||||
hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
|
|
||||||
else
|
|
||||||
ld_shlibs=no
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
;;
|
|
||||||
sunos4*)
|
|
||||||
hardcode_direct=yes
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
|
|
||||||
:
|
|
||||||
else
|
|
||||||
ld_shlibs=no
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
if test "$ld_shlibs" = no; then
|
|
||||||
hardcode_libdir_flag_spec=
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
case "$host_os" in
|
|
||||||
aix3*)
|
|
||||||
# Note: this linker hardcodes the directories in LIBPATH if there
|
|
||||||
# are no directories specified by -L.
|
|
||||||
hardcode_minus_L=yes
|
|
||||||
if test "$GCC" = yes; then
|
|
||||||
# Neither direct hardcoding nor static linking is supported with a
|
|
||||||
# broken collect2.
|
|
||||||
hardcode_direct=unsupported
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
aix[4-9]*)
|
|
||||||
if test "$host_cpu" = ia64; then
|
|
||||||
# On IA64, the linker does run time linking by default, so we don't
|
|
||||||
# have to do anything special.
|
|
||||||
aix_use_runtimelinking=no
|
|
||||||
else
|
|
||||||
aix_use_runtimelinking=no
|
|
||||||
# Test if we are trying to use run time linking or normal
|
|
||||||
# AIX style linking. If -brtl is somewhere in LDFLAGS, we
|
|
||||||
# need to do runtime linking.
|
|
||||||
case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
|
|
||||||
for ld_flag in $LDFLAGS; do
|
|
||||||
if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
|
|
||||||
aix_use_runtimelinking=yes
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
hardcode_direct=yes
|
|
||||||
hardcode_libdir_separator=':'
|
|
||||||
if test "$GCC" = yes; then
|
|
||||||
case $host_os in aix4.[012]|aix4.[012].*)
|
|
||||||
collect2name=`${CC} -print-prog-name=collect2`
|
|
||||||
if test -f "$collect2name" && \
|
|
||||||
strings "$collect2name" | grep resolve_lib_name >/dev/null
|
|
||||||
then
|
|
||||||
# We have reworked collect2
|
|
||||||
:
|
|
||||||
else
|
|
||||||
# We have old collect2
|
|
||||||
hardcode_direct=unsupported
|
|
||||||
hardcode_minus_L=yes
|
|
||||||
hardcode_libdir_flag_spec='-L$libdir'
|
|
||||||
hardcode_libdir_separator=
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
# Begin _LT_AC_SYS_LIBPATH_AIX.
|
|
||||||
echo 'int main () { return 0; }' > conftest.c
|
|
||||||
${CC} ${LDFLAGS} conftest.c -o conftest
|
|
||||||
aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
|
|
||||||
}'`
|
|
||||||
if test -z "$aix_libpath"; then
|
|
||||||
aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
|
|
||||||
}'`
|
|
||||||
fi
|
|
||||||
if test -z "$aix_libpath"; then
|
|
||||||
aix_libpath="/usr/lib:/lib"
|
|
||||||
fi
|
|
||||||
rm -f conftest.c conftest
|
|
||||||
# End _LT_AC_SYS_LIBPATH_AIX.
|
|
||||||
if test "$aix_use_runtimelinking" = yes; then
|
|
||||||
hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
|
|
||||||
else
|
|
||||||
if test "$host_cpu" = ia64; then
|
|
||||||
hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
|
|
||||||
else
|
|
||||||
hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
amigaos*)
|
|
||||||
hardcode_libdir_flag_spec='-L$libdir'
|
|
||||||
hardcode_minus_L=yes
|
|
||||||
# see comment about different semantics on the GNU ld section
|
|
||||||
ld_shlibs=no
|
|
||||||
;;
|
|
||||||
bsdi[45]*)
|
|
||||||
;;
|
|
||||||
cygwin* | mingw* | pw32* | cegcc*)
|
|
||||||
# When not using gcc, we currently assume that we are using
|
|
||||||
# Microsoft Visual C++.
|
|
||||||
# hardcode_libdir_flag_spec is actually meaningless, as there is
|
|
||||||
# no search path for DLLs.
|
|
||||||
hardcode_libdir_flag_spec=' '
|
|
||||||
libext=lib
|
|
||||||
;;
|
|
||||||
darwin* | rhapsody*)
|
|
||||||
hardcode_direct=no
|
|
||||||
if test "$GCC" = yes ; then
|
|
||||||
:
|
|
||||||
else
|
|
||||||
case $cc_basename in
|
|
||||||
xlc*)
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
ld_shlibs=no
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
dgux*)
|
|
||||||
hardcode_libdir_flag_spec='-L$libdir'
|
|
||||||
;;
|
|
||||||
freebsd1*)
|
|
||||||
ld_shlibs=no
|
|
||||||
;;
|
|
||||||
freebsd2.2*)
|
|
||||||
hardcode_libdir_flag_spec='-R$libdir'
|
|
||||||
hardcode_direct=yes
|
|
||||||
;;
|
|
||||||
freebsd2*)
|
|
||||||
hardcode_direct=yes
|
|
||||||
hardcode_minus_L=yes
|
|
||||||
;;
|
|
||||||
freebsd* | dragonfly*)
|
|
||||||
hardcode_libdir_flag_spec='-R$libdir'
|
|
||||||
hardcode_direct=yes
|
|
||||||
;;
|
|
||||||
hpux9*)
|
|
||||||
hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
|
|
||||||
hardcode_libdir_separator=:
|
|
||||||
hardcode_direct=yes
|
|
||||||
# hardcode_minus_L: Not really in the search PATH,
|
|
||||||
# but as the default location of the library.
|
|
||||||
hardcode_minus_L=yes
|
|
||||||
;;
|
|
||||||
hpux10*)
|
|
||||||
if test "$with_gnu_ld" = no; then
|
|
||||||
hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
|
|
||||||
hardcode_libdir_separator=:
|
|
||||||
hardcode_direct=yes
|
|
||||||
# hardcode_minus_L: Not really in the search PATH,
|
|
||||||
# but as the default location of the library.
|
|
||||||
hardcode_minus_L=yes
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
hpux11*)
|
|
||||||
if test "$with_gnu_ld" = no; then
|
|
||||||
hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
|
|
||||||
hardcode_libdir_separator=:
|
|
||||||
case $host_cpu in
|
|
||||||
hppa*64*|ia64*)
|
|
||||||
hardcode_direct=no
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
hardcode_direct=yes
|
|
||||||
# hardcode_minus_L: Not really in the search PATH,
|
|
||||||
# but as the default location of the library.
|
|
||||||
hardcode_minus_L=yes
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
irix5* | irix6* | nonstopux*)
|
|
||||||
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
|
|
||||||
hardcode_libdir_separator=:
|
|
||||||
;;
|
|
||||||
netbsd*)
|
|
||||||
hardcode_libdir_flag_spec='-R$libdir'
|
|
||||||
hardcode_direct=yes
|
|
||||||
;;
|
|
||||||
newsos6)
|
|
||||||
hardcode_direct=yes
|
|
||||||
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
|
|
||||||
hardcode_libdir_separator=:
|
|
||||||
;;
|
|
||||||
openbsd*)
|
|
||||||
if test -f /usr/libexec/ld.so; then
|
|
||||||
hardcode_direct=yes
|
|
||||||
if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
|
|
||||||
hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
|
|
||||||
else
|
|
||||||
case "$host_os" in
|
|
||||||
openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
|
|
||||||
hardcode_libdir_flag_spec='-R$libdir'
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
ld_shlibs=no
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
os2*)
|
|
||||||
hardcode_libdir_flag_spec='-L$libdir'
|
|
||||||
hardcode_minus_L=yes
|
|
||||||
;;
|
|
||||||
osf3*)
|
|
||||||
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
|
|
||||||
hardcode_libdir_separator=:
|
|
||||||
;;
|
|
||||||
osf4* | osf5*)
|
|
||||||
if test "$GCC" = yes; then
|
|
||||||
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
|
|
||||||
else
|
|
||||||
# Both cc and cxx compiler support -rpath directly
|
|
||||||
hardcode_libdir_flag_spec='-rpath $libdir'
|
|
||||||
fi
|
|
||||||
hardcode_libdir_separator=:
|
|
||||||
;;
|
|
||||||
solaris*)
|
|
||||||
hardcode_libdir_flag_spec='-R$libdir'
|
|
||||||
;;
|
|
||||||
sunos4*)
|
|
||||||
hardcode_libdir_flag_spec='-L$libdir'
|
|
||||||
hardcode_direct=yes
|
|
||||||
hardcode_minus_L=yes
|
|
||||||
;;
|
|
||||||
sysv4)
|
|
||||||
case $host_vendor in
|
|
||||||
sni)
|
|
||||||
hardcode_direct=yes # is this really true???
|
|
||||||
;;
|
|
||||||
siemens)
|
|
||||||
hardcode_direct=no
|
|
||||||
;;
|
|
||||||
motorola)
|
|
||||||
hardcode_direct=no #Motorola manual says yes, but my tests say they lie
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
;;
|
|
||||||
sysv4.3*)
|
|
||||||
;;
|
|
||||||
sysv4*MP*)
|
|
||||||
if test -d /usr/nec; then
|
|
||||||
ld_shlibs=yes
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
|
|
||||||
;;
|
|
||||||
sysv5* | sco3.2v5* | sco5v6*)
|
|
||||||
hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
|
|
||||||
hardcode_libdir_separator=':'
|
|
||||||
;;
|
|
||||||
uts4*)
|
|
||||||
hardcode_libdir_flag_spec='-L$libdir'
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
ld_shlibs=no
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check dynamic linker characteristics
|
|
||||||
# Code taken from libtool.m4's _LT_SYS_DYNAMIC_LINKER.
|
|
||||||
# Unlike libtool.m4, here we don't care about _all_ names of the library, but
|
|
||||||
# only about the one the linker finds when passed -lNAME. This is the last
|
|
||||||
# element of library_names_spec in libtool.m4, or possibly two of them if the
|
|
||||||
# linker has special search rules.
|
|
||||||
library_names_spec= # the last element of library_names_spec in libtool.m4
|
|
||||||
libname_spec='lib$name'
|
|
||||||
case "$host_os" in
|
|
||||||
aix3*)
|
|
||||||
library_names_spec='$libname.a'
|
|
||||||
;;
|
|
||||||
aix[4-9]*)
|
|
||||||
library_names_spec='$libname$shrext'
|
|
||||||
;;
|
|
||||||
amigaos*)
|
|
||||||
library_names_spec='$libname.a'
|
|
||||||
;;
|
|
||||||
beos*)
|
|
||||||
library_names_spec='$libname$shrext'
|
|
||||||
;;
|
|
||||||
bsdi[45]*)
|
|
||||||
library_names_spec='$libname$shrext'
|
|
||||||
;;
|
|
||||||
cygwin* | mingw* | pw32* | cegcc*)
|
|
||||||
shrext=.dll
|
|
||||||
library_names_spec='$libname.dll.a $libname.lib'
|
|
||||||
;;
|
|
||||||
darwin* | rhapsody*)
|
|
||||||
shrext=.dylib
|
|
||||||
library_names_spec='$libname$shrext'
|
|
||||||
;;
|
|
||||||
dgux*)
|
|
||||||
library_names_spec='$libname$shrext'
|
|
||||||
;;
|
|
||||||
freebsd1*)
|
|
||||||
;;
|
|
||||||
freebsd* | dragonfly*)
|
|
||||||
case "$host_os" in
|
|
||||||
freebsd[123]*)
|
|
||||||
library_names_spec='$libname$shrext$versuffix' ;;
|
|
||||||
*)
|
|
||||||
library_names_spec='$libname$shrext' ;;
|
|
||||||
esac
|
|
||||||
;;
|
|
||||||
gnu*)
|
|
||||||
library_names_spec='$libname$shrext'
|
|
||||||
;;
|
|
||||||
hpux9* | hpux10* | hpux11*)
|
|
||||||
case $host_cpu in
|
|
||||||
ia64*)
|
|
||||||
shrext=.so
|
|
||||||
;;
|
|
||||||
hppa*64*)
|
|
||||||
shrext=.sl
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
shrext=.sl
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
library_names_spec='$libname$shrext'
|
|
||||||
;;
|
|
||||||
interix[3-9]*)
|
|
||||||
library_names_spec='$libname$shrext'
|
|
||||||
;;
|
|
||||||
irix5* | irix6* | nonstopux*)
|
|
||||||
library_names_spec='$libname$shrext'
|
|
||||||
case "$host_os" in
|
|
||||||
irix5* | nonstopux*)
|
|
||||||
libsuff= shlibsuff=
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
case $LD in
|
|
||||||
*-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;;
|
|
||||||
*-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;;
|
|
||||||
*-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;;
|
|
||||||
*) libsuff= shlibsuff= ;;
|
|
||||||
esac
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
;;
|
|
||||||
linux*oldld* | linux*aout* | linux*coff*)
|
|
||||||
;;
|
|
||||||
linux* | k*bsd*-gnu)
|
|
||||||
library_names_spec='$libname$shrext'
|
|
||||||
;;
|
|
||||||
knetbsd*-gnu)
|
|
||||||
library_names_spec='$libname$shrext'
|
|
||||||
;;
|
|
||||||
netbsd*)
|
|
||||||
library_names_spec='$libname$shrext'
|
|
||||||
;;
|
|
||||||
newsos6)
|
|
||||||
library_names_spec='$libname$shrext'
|
|
||||||
;;
|
|
||||||
nto-qnx*)
|
|
||||||
library_names_spec='$libname$shrext'
|
|
||||||
;;
|
|
||||||
openbsd*)
|
|
||||||
library_names_spec='$libname$shrext$versuffix'
|
|
||||||
;;
|
|
||||||
os2*)
|
|
||||||
libname_spec='$name'
|
|
||||||
shrext=.dll
|
|
||||||
library_names_spec='$libname.a'
|
|
||||||
;;
|
|
||||||
osf3* | osf4* | osf5*)
|
|
||||||
library_names_spec='$libname$shrext'
|
|
||||||
;;
|
|
||||||
rdos*)
|
|
||||||
;;
|
|
||||||
solaris*)
|
|
||||||
library_names_spec='$libname$shrext'
|
|
||||||
;;
|
|
||||||
sunos4*)
|
|
||||||
library_names_spec='$libname$shrext$versuffix'
|
|
||||||
;;
|
|
||||||
sysv4 | sysv4.3*)
|
|
||||||
library_names_spec='$libname$shrext'
|
|
||||||
;;
|
|
||||||
sysv4*MP*)
|
|
||||||
library_names_spec='$libname$shrext'
|
|
||||||
;;
|
|
||||||
sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
|
|
||||||
library_names_spec='$libname$shrext'
|
|
||||||
;;
|
|
||||||
uts4*)
|
|
||||||
library_names_spec='$libname$shrext'
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
|
|
||||||
escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"`
|
|
||||||
shlibext=`echo "$shrext" | sed -e 's,^\.,,'`
|
|
||||||
escaped_libname_spec=`echo "X$libname_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
|
|
||||||
escaped_library_names_spec=`echo "X$library_names_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
|
|
||||||
escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
|
|
||||||
|
|
||||||
LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <<EOF
|
|
||||||
|
|
||||||
# How to pass a linker flag through the compiler.
|
|
||||||
wl="$escaped_wl"
|
|
||||||
|
|
||||||
# Static library suffix (normally "a").
|
|
||||||
libext="$libext"
|
|
||||||
|
|
||||||
# Shared library suffix (normally "so").
|
|
||||||
shlibext="$shlibext"
|
|
||||||
|
|
||||||
# Format of library name prefix.
|
|
||||||
libname_spec="$escaped_libname_spec"
|
|
||||||
|
|
||||||
# Library names that the linker finds when passed -lNAME.
|
|
||||||
library_names_spec="$escaped_library_names_spec"
|
|
||||||
|
|
||||||
# Flag to hardcode \$libdir into a binary during linking.
|
|
||||||
# This must work even if \$libdir does not exist.
|
|
||||||
hardcode_libdir_flag_spec="$escaped_hardcode_libdir_flag_spec"
|
|
||||||
|
|
||||||
# Whether we need a single -rpath flag with a separated argument.
|
|
||||||
hardcode_libdir_separator="$hardcode_libdir_separator"
|
|
||||||
|
|
||||||
# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the
|
|
||||||
# resulting binary.
|
|
||||||
hardcode_direct="$hardcode_direct"
|
|
||||||
|
|
||||||
# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
|
|
||||||
# resulting binary.
|
|
||||||
hardcode_minus_L="$hardcode_minus_L"
|
|
||||||
|
|
||||||
EOF
|
|
1020
configure.ac
24
data/hexchat.gresource.xml
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<gresources>
|
||||||
|
<gresource prefix="/icons">
|
||||||
|
<file alias="hexchat.png" preprocess="to-pixdata">icons/hexchat.png</file>
|
||||||
|
<file alias="book.png" preprocess="to-pixdata">icons/book.png</file>
|
||||||
|
|
||||||
|
<file alias="ulist_voice.png" preprocess="to-pixdata">icons/ulist_voice.png</file>
|
||||||
|
<file alias="ulist_halfop.png" preprocess="to-pixdata">icons/ulist_halfop.png</file>
|
||||||
|
<file alias="ulist_op.png" preprocess="to-pixdata">icons/ulist_op.png</file>
|
||||||
|
<file alias="ulist_owner.png" preprocess="to-pixdata">icons/ulist_owner.png</file>
|
||||||
|
<file alias="ulist_founder.png" preprocess="to-pixdata">icons/ulist_founder.png</file>
|
||||||
|
<file alias="ulist_netop.png" preprocess="to-pixdata">icons/ulist_netop.png</file>
|
||||||
|
|
||||||
|
<file alias="tray_normal.png" preprocess="to-pixdata">icons/hexchat.png</file>
|
||||||
|
<file alias="tray_fileoffer.png" preprocess="to-pixdata">icons/tray_fileoffer.png</file>
|
||||||
|
<file alias="tray_highlight.png" preprocess="to-pixdata">icons/tray_highlight.png</file>
|
||||||
|
<file alias="tray_message.png" preprocess="to-pixdata">icons/tray_message.png</file>
|
||||||
|
|
||||||
|
<file alias="tree_channel.png" preprocess="to-pixdata">icons/tree_channel.png</file>
|
||||||
|
<file alias="tree_dialog.png" preprocess="to-pixdata">icons/tree_dialog.png</file>
|
||||||
|
<file alias="tree_server.png" preprocess="to-pixdata">icons/tree_server.png</file>
|
||||||
|
<file alias="tree_util.png" preprocess="to-pixdata">icons/tree_util.png</file>
|
||||||
|
</gresource>
|
||||||
|
</gresources>
|
Before Width: | Height: | Size: 841 B After Width: | Height: | Size: 841 B |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
63
data/icons/hexchat-shadowless.svg
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
<svg
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
height="64"
|
||||||
|
width="64">
|
||||||
|
<metadata>
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work>
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:creator>
|
||||||
|
<cc:Agent>
|
||||||
|
<dc:title>Guglielmi David</dc:title>
|
||||||
|
</cc:Agent>
|
||||||
|
</dc:creator>
|
||||||
|
<cc:license rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
|
||||||
|
<dc:rights>
|
||||||
|
<cc:Agent>
|
||||||
|
<dc:title>Peter Zelezny</dc:title>
|
||||||
|
</cc:Agent>
|
||||||
|
</dc:rights>
|
||||||
|
<dc:contributor>
|
||||||
|
<cc:Agent>
|
||||||
|
<dc:title>Samuel Messner</dc:title>
|
||||||
|
</cc:Agent>
|
||||||
|
</dc:contributor>
|
||||||
|
</cc:Work>
|
||||||
|
<cc:License rdf:about="http://creativecommons.org/licenses/GPL/2.0/">
|
||||||
|
<cc:requires rdf:resource="http://web.resource.org/cc/Notice" />
|
||||||
|
<cc:requires rdf:resource="http://web.resource.org/cc/ShareAlike" />
|
||||||
|
<cc:requires rdf:resource="http://web.resource.org/cc/SourceCode" />
|
||||||
|
<cc:permits rdf:resource="http://web.resource.org/cc/Reproduction" />
|
||||||
|
<cc:permits rdf:resource="http://web.resource.org/cc/Distribution" />
|
||||||
|
<cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
|
||||||
|
</cc:License>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<defs>
|
||||||
|
<linearGradient id="hexchatGradient" x1="0" y1="1" x2="0" y2="0">
|
||||||
|
<stop id="hgRedStop" offset="0" style="stop-color: #FF2600; stop-opacity: 1;" />
|
||||||
|
<stop id="hgYellowStop" offset="1" style="stop-color: #FFD600; stop-opacity: 1;" />
|
||||||
|
</linearGradient>
|
||||||
|
<filter inkscape:collect="always" id="dropshadow">
|
||||||
|
<feGaussianBlur inkscape:collect="always" stdDeviation="1.9736701" id="dropshadowGaussian" />
|
||||||
|
</filter>
|
||||||
|
</defs>
|
||||||
|
<path
|
||||||
|
style="fill: #000000; fill-opacity: 1;"
|
||||||
|
d="m 31.62506,4.4248023 c -7.285288,0.0713 -14.595323,0.526836 -15.96875,1.3125 C 12.909458,7.3086297 -0.0321942,29.523731 6.0185229e-5,32.612303 0.0323162,35.700876 13.470952,57.688808 16.25006,59.206053 c 2.779105,1.517245 29.159399,1.258827 31.90625,-0.3125 2.746852,-1.571328 15.688504,-23.786428 15.65625,-26.875 C 63.7803,28.929981 50.372918,6.9107967 47.59381,5.3935523 46.204258,4.6349293 38.910347,4.3535003 31.62506,4.4248023 z m -0.1875,9.2500007 c 3.386631,-0.03246 6.676687,0.05409 8.75,0.28125 l -8.71875,9.71875 -9.0625,-9.5 c 2.055746,-0.283043 5.521157,-0.466366 9.03125,-0.5 z m 17.34375,9.84375 c 2.298293,3.744897 4.302354,7.392556 4.3125,8.34375 0.01126,1.055883 -2.358157,5.507241 -4.875,9.6875 l -9.03125,-8.03125 z m -34.46875,0.25 8.75,9.75 -8.1875,7.875 c -2.482342,-3.992634 -4.707927,-8.110307 -4.71875,-9.125 -0.01021,-0.95736 1.927117,-4.687748 4.15625,-8.5 z m 17.15625,16.90625 9.8125,9.21875 c -4.111037,0.67314 -16.108253,0.781873 -19.46875,0.125 z"
|
||||||
|
id="outline"
|
||||||
|
sodipodi:nodetypes="ssssssssscccscsccccccsccccc" />
|
||||||
|
<path
|
||||||
|
style="fill: url(#hexchatGradient); fill-opacity: 1;"
|
||||||
|
d="m 31.25006,6.4873027 c -6.857093,0.06521 -13.707297,0.469014 -15,1.1875 -2.585405,1.4369712 -14.780358,21.7692653 -14.75,24.5937503 0.03036,2.824486 12.665486,22.924987 15.28125,24.3125 2.615763,1.387513 27.445846,1.186972 30.03125,-0.25 2.585405,-1.436972 14.780359,-21.769265 14.75,-24.59375 C 61.5322,28.912818 48.897074,8.7810649 46.28131,7.3935527 44.973429,6.6997957 38.107152,6.4220967 31.25006,6.4873027 z m 0.0625,5.0625003 c 5.36199,-0.05245 10.696035,0.19201 11.71875,0.75 0.06132,0.03346 0.143803,0.127745 0.21875,0.1875 l -11.28125,12.59375 -0.5,0.53125 -0.46875,-0.53125 -11.75,-12.3125 c 0.10903,-0.09884 0.228263,-0.201843 0.3125,-0.25 1.010846,-0.577879 6.38801,-0.916306 11.75,-0.96875 z m 18.0625,9.46875 c 2.883844,4.661341 5.612556,9.652893 5.625,10.84375 0.01348,1.290331 -3.064699,7.087557 -6.09375,12.09375 l -11.09375,-9.90625 -0.53125,-0.46875 0.5,-0.46875 11.59375,-12.09375 z m -35.78125,0.03125 10.84375,12.0625 0.4375,0.46875 -0.46875,0.4375 -10.28125,9.90625 c -3.04689,-4.86606 -6.049362,-10.36778 -6.0625,-11.625 -0.01271,-1.216102 2.689239,-6.451996 5.53125,-11.25 z m 17.875,17.78125 0.4375,0.4375 12.34375,11.59375 c -0.318014,0.365376 -0.587006,0.638955 -0.78125,0.75 -2.02169,1.155758 -21.423322,1.397228 -23.46875,0.28125 -0.228202,-0.124506 -0.601742,-0.47821 -1,-0.9375 l 12,-11.6875 0.46875,-0.4375 z"
|
||||||
|
id="coloredX" />
|
||||||
|
</svg>
|
After Width: | Height: | Size: 4.7 KiB |
BIN
data/icons/hexchat.ico
Normal file
After Width: | Height: | Size: 126 KiB |
BIN
data/icons/hexchat.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
58
data/icons/hexchat.svg
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
<svg
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
height="64"
|
||||||
|
width="64">
|
||||||
|
<metadata>
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work>
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:creator>
|
||||||
|
<cc:Agent>
|
||||||
|
<dc:title>Guglielmi David</dc:title>
|
||||||
|
</cc:Agent>
|
||||||
|
</dc:creator>
|
||||||
|
<cc:license rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
|
||||||
|
<dc:rights>
|
||||||
|
<cc:Agent>
|
||||||
|
<dc:title>Peter Zelezny</dc:title>
|
||||||
|
</cc:Agent>
|
||||||
|
</dc:rights>
|
||||||
|
<dc:contributor>
|
||||||
|
<cc:Agent>
|
||||||
|
<dc:title>Samuel Messner</dc:title>
|
||||||
|
</cc:Agent>
|
||||||
|
</dc:contributor>
|
||||||
|
</cc:Work>
|
||||||
|
<cc:License rdf:about="http://creativecommons.org/licenses/GPL/2.0/">
|
||||||
|
<cc:requires rdf:resource="http://web.resource.org/cc/Notice" />
|
||||||
|
<cc:requires rdf:resource="http://web.resource.org/cc/ShareAlike" />
|
||||||
|
<cc:requires rdf:resource="http://web.resource.org/cc/SourceCode" />
|
||||||
|
<cc:permits rdf:resource="http://web.resource.org/cc/Reproduction" />
|
||||||
|
<cc:permits rdf:resource="http://web.resource.org/cc/Distribution" />
|
||||||
|
<cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
|
||||||
|
</cc:License>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<defs>
|
||||||
|
<linearGradient id="hexchatGradient" x1="0" y1="0" x2="0" y2="1">
|
||||||
|
<stop id="hgYellowStop" offset="0" style="stop-color: #FFD600" />
|
||||||
|
<stop id="hgRedStop" offset="1" style="stop-color: #FF2600" />
|
||||||
|
</linearGradient>
|
||||||
|
</defs>
|
||||||
|
<use xlink:href="#outline" style="opacity:0.15" transform="translate(0,2)" id="shadow" />
|
||||||
|
<path
|
||||||
|
style="fill:#000000; fill-opacity: 1;"
|
||||||
|
d="M 31.71875,4.1088109 C 24.433462,4.1801109 17.123427,4.6356469 15.75,5.4213109 13.003148,6.9926379 0.06149557,29.207739 0.09374996,32.296311 0.12600597,35.384884 13.564642,57.372816 16.34375,58.890061 19.122855,60.407306 45.503149,60.148888 48.25,58.577561 50.996852,57.006233 63.938504,34.791133 63.90625,31.702561 63.87399,28.613989 50.466608,6.5948049 47.6875,5.0775609 46.297948,4.3189379 39.004037,4.0375089 31.71875,4.1088109 Z m -0.1875,9.2500001 c 3.386631,-0.03246 6.676687,0.05409 8.75,0.28125 l -8.71875,9.71875 -9.0625,-9.5 c 2.055746,-0.283043 5.521157,-0.466366 9.03125,-0.5 z m 17.34375,9.84375 c 2.298293,3.744897 4.302354,7.392556 4.3125,8.34375 0.01126,1.055883 -2.358157,5.507241 -4.875,9.6875 l -9.03125,-8.03125 z m -34.46875,0.25 8.75,9.75 -8.1875,7.875 c -2.482342,-3.992634 -4.707927,-8.110307 -4.71875,-9.125 -0.01021,-0.95736 1.927117,-4.687748 4.15625,-8.5 z m 17.15625,16.90625 9.8125,9.21875 c -4.111037,0.67314 -16.108253,0.781873 -19.46875,0.125 z"
|
||||||
|
id="outline" />
|
||||||
|
<path
|
||||||
|
style="fill:url(#hexchatGradient); fill-opacity: 1;"
|
||||||
|
d="m 31.34375,6.1713109 c -6.857093,0.06521 -13.707297,0.469014 -15,1.1875 C 13.758345,8.7957819 1.5633917,29.128076 1.5937497,31.952561 c 0.03036,2.824486 12.6654863,22.924987 15.2812503,24.3125 2.615763,1.387513 27.445846,1.186972 30.03125,-0.25 2.585405,-1.436972 14.780359,-21.769265 14.75,-24.59375 C 61.62589,28.596826 48.990764,8.4650729 46.375,7.0775609 45.067119,6.3838039 38.200842,6.1061049 31.34375,6.1713109 Z m 0.0625,5.0625001 c 5.36199,-0.05245 10.696035,0.19201 11.71875,0.75 0.06132,0.03346 0.143803,0.127745 0.21875,0.1875 l -11.28125,12.59375 -0.5,0.53125 -0.46875,-0.53125 -11.75,-12.3125 c 0.10903,-0.09884 0.228263,-0.201843 0.3125,-0.25 1.010846,-0.577879 6.38801,-0.916306 11.75,-0.96875 z m 18.0625,9.46875 c 2.883844,4.661341 5.612556,9.652893 5.625,10.84375 0.01348,1.290331 -3.064699,7.087557 -6.09375,12.09375 l -11.09375,-9.90625 -0.53125,-0.46875 0.5,-0.46875 11.59375,-12.09375 z m -35.78125,0.03125 10.84375,12.0625 0.4375,0.46875 -0.46875,0.4375 -10.28125,9.90625 c -3.04689,-4.86606 -6.0493623,-10.36778 -6.0625003,-11.625 -0.01271,-1.216102 2.6892393,-6.451996 5.5312503,-11.25 z m 17.875,17.78125 0.4375,0.4375 12.34375,11.59375 c -0.318014,0.365376 -0.587006,0.638955 -0.78125,0.75 -2.02169,1.155758 -21.423322,1.397228 -23.46875,0.28125 -0.228202,-0.124506 -0.601742,-0.47821 -1,-0.9375 l 12,-11.6875 0.46875,-0.4375 z"
|
||||||
|
id="coloredX" />
|
||||||
|
</svg>
|
After Width: | Height: | Size: 4.4 KiB |
9
data/icons/meson.build
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
icondir = join_paths(get_option('datadir'), 'icons/hicolor')
|
||||||
|
install_data(
|
||||||
|
'hexchat.png',
|
||||||
|
install_dir: join_paths(icondir, '48x48/apps')
|
||||||
|
)
|
||||||
|
install_data(
|
||||||
|
'hexchat.svg',
|
||||||
|
install_dir: join_paths(icondir, 'scalable/apps')
|
||||||
|
)
|
BIN
data/icons/tray_fileoffer.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
data/icons/tray_highlight.png
Normal file
After Width: | Height: | Size: 2.8 KiB |
BIN
data/icons/tray_message.png
Normal file
After Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 422 B After Width: | Height: | Size: 422 B |
Before Width: | Height: | Size: 911 B After Width: | Height: | Size: 911 B |
Before Width: | Height: | Size: 568 B After Width: | Height: | Size: 568 B |
Before Width: | Height: | Size: 611 B After Width: | Height: | Size: 611 B |
BIN
data/icons/ulist_founder.png
Normal file
After Width: | Height: | Size: 660 B |
BIN
data/icons/ulist_halfop.png
Normal file
After Width: | Height: | Size: 668 B |
BIN
data/icons/ulist_netop.png
Normal file
After Width: | Height: | Size: 593 B |
BIN
data/icons/ulist_op.png
Normal file
After Width: | Height: | Size: 691 B |
BIN
data/icons/ulist_owner.png
Normal file
After Width: | Height: | Size: 678 B |
BIN
data/icons/ulist_voice.png
Normal file
After Width: | Height: | Size: 670 B |
@@ -1,10 +1,10 @@
|
|||||||
.TH HEXCHAT "1" "November 2012" "HexChat 2.9.4" "User Commands"
|
.TH HEXCHAT "1" "April 2013" "HexChat @VERSION@" "User Commands"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
HexChat \- manual page for HexChat 2.9.4
|
HexChat \- IRC Client
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
.SS "Usage:"
|
.SS "Usage:"
|
||||||
.IP
|
.IP
|
||||||
hexchat [OPTION...]
|
hexchat [OPTION...] URL
|
||||||
.SS "Help Options:"
|
.SS "Help Options:"
|
||||||
.TP
|
.TP
|
||||||
\fB\-h\fR, \fB\-\-help\fR
|
\fB\-h\fR, \fB\-\-help\fR
|
||||||
@@ -33,7 +33,7 @@ Show plugin auto\-load directory
|
|||||||
Show user config directory
|
Show user config directory
|
||||||
.TP
|
.TP
|
||||||
\fB\-\-url\fR=\fIURL\fR
|
\fB\-\-url\fR=\fIURL\fR
|
||||||
Open an irc://server:port/channel URL
|
Open an irc://server:port/channel?key URL
|
||||||
.TP
|
.TP
|
||||||
\fB\-c\fR, \fB\-\-command\fR=\fICOMMAND\fR
|
\fB\-c\fR, \fB\-\-command\fR=\fICOMMAND\fR
|
||||||
Execute command:
|
Execute command:
|
10
data/man/meson.build
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
man_conf = configuration_data()
|
||||||
|
man_conf.set('VERSION', meson.project_version())
|
||||||
|
|
||||||
|
configure_file(
|
||||||
|
input: 'hexchat.1.in',
|
||||||
|
output: 'hexchat.1',
|
||||||
|
configuration: man_conf,
|
||||||
|
install: true,
|
||||||
|
install_dir: join_paths(get_option('mandir'), 'man1')
|
||||||
|
)
|
11
data/meson.build
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
if get_option('plugin')
|
||||||
|
subdir('pkgconfig')
|
||||||
|
endif
|
||||||
|
|
||||||
|
if get_option('gtk-frontend')
|
||||||
|
subdir('icons')
|
||||||
|
subdir('misc')
|
||||||
|
subdir('man')
|
||||||
|
elif get_option('theme-manager')
|
||||||
|
subdir('misc')
|
||||||
|
endif
|
11
data/misc/io.github.Hexchat.Plugin.metainfo.xml.in
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<component type="addon">
|
||||||
|
<id>io.github.Hexchat.Plugin.@NAME@</id>
|
||||||
|
<extends>io.github.Hexchat.desktop</extends>
|
||||||
|
<name>@NAME@ Plugin</name>
|
||||||
|
<summary>@SUMMARY@</summary>
|
||||||
|
<url type="homepage">https://hexchat.github.io/</url>
|
||||||
|
<project_license>@LICENSE@</project_license>
|
||||||
|
<metadata_license>CC0-1.0</metadata_license>
|
||||||
|
<update_contact>tingping_AT_fedoraproject.org</update_contact>
|
||||||
|
</component>
|
7
data/misc/io.github.Hexchat.ThemeManager.desktop.in
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Name=HexChat Theme Manager
|
||||||
|
Exec=thememan %f
|
||||||
|
Icon=hexchat
|
||||||
|
Terminal=false
|
||||||
|
Type=Application
|
||||||
|
MimeType=application/x-hct;
|
8
data/misc/io.github.Hexchat.ThemeManager.xml
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'>
|
||||||
|
<mime-type type="application/x-hct">
|
||||||
|
<comment>HexChat theme archives</comment>
|
||||||
|
<icon name="hexchat" />
|
||||||
|
<glob pattern="*.hct" weight="100" />
|
||||||
|
</mime-type>
|
||||||
|
</mime-info>
|
121
data/misc/io.github.Hexchat.appdata.xml.in
Normal file
@@ -0,0 +1,121 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<component type="desktop">
|
||||||
|
<id>io.github.Hexchat.desktop</id>
|
||||||
|
<name>HexChat</name>
|
||||||
|
<developer_name>HexChat</developer_name>
|
||||||
|
<metadata_license>CC0-1.0</metadata_license>
|
||||||
|
<project_license>GPL-2.0+</project_license>
|
||||||
|
<translation type="gettext">hexchat</translation>
|
||||||
|
<summary>IRC Client</summary>
|
||||||
|
<description>
|
||||||
|
<p>HexChat is an easy to use yet extensible IRC Client. It allows you to securely join multiple networks and talk to users privately or in channels using a customizable interface. You can even transfer files.</p>
|
||||||
|
<p>HexChat supports features such as: DCC, SASL, proxies, spellcheck, alerts, logging, custom themes, and Python/Perl scripts.</p>
|
||||||
|
</description>
|
||||||
|
<url type="homepage">http://hexchat.github.io</url>
|
||||||
|
<url type="bugtracker">https://github.com/hexchat/hexchat</url>
|
||||||
|
<url type="donation">https://goo.gl/jESZvU</url>
|
||||||
|
<url type="help">https://hexchat.readthedocs.io/en/latest/</url>
|
||||||
|
<screenshots>
|
||||||
|
<screenshot type="default">
|
||||||
|
<image>http://i.imgur.com/tLMguQz.png</image>
|
||||||
|
<caption>Main Chat Window</caption>
|
||||||
|
</screenshot>
|
||||||
|
</screenshots>
|
||||||
|
<provides>
|
||||||
|
<!-- Renamed from this -->
|
||||||
|
<id>hexchat.desktop</id>
|
||||||
|
</provides>
|
||||||
|
<releases>
|
||||||
|
<release date="2019-12-20" version="2.14.3">
|
||||||
|
<description>
|
||||||
|
<p>This is a bug-fix release:</p>
|
||||||
|
<ul>
|
||||||
|
<li>Fix various incorrect parsing of IRC messages relating to trailing parameters</li>
|
||||||
|
<li>Fix SASL negotiation combined with multi-line cap</li>
|
||||||
|
<li>Fix input box theming with Yaru theme</li>
|
||||||
|
<li>python: Work around Python 3.7 regression causing crash on unload</li>
|
||||||
|
<li>sysinfo: Add support for /etc/os-release</li>
|
||||||
|
<li>sysinfo: Ignore irrelevant mounts when calculating storage size</li>
|
||||||
|
</ul>
|
||||||
|
</description>
|
||||||
|
</release>
|
||||||
|
<release date="2018-08-29" version="2.14.2">
|
||||||
|
<description>
|
||||||
|
<p>This is a minor release:</p>
|
||||||
|
<ul>
|
||||||
|
<li>Remove shift+click to close tab binding</li>
|
||||||
|
<li>Always unminimize when opening from tray</li>
|
||||||
|
<li>Fix some translations containing invalid text events</li>
|
||||||
|
<li>Fix sending server passwords starting with ":"</li>
|
||||||
|
</ul>
|
||||||
|
</description>
|
||||||
|
</release>
|
||||||
|
<release date="2018-03-13" version="2.14.1">
|
||||||
|
<description>
|
||||||
|
<p>This is a very minor bug-fix release:</p>
|
||||||
|
<ul>
|
||||||
|
<li>Fix performance regression</li>
|
||||||
|
</ul>
|
||||||
|
</description>
|
||||||
|
</release>
|
||||||
|
<release date="2018-03-10" version="2.14.0">
|
||||||
|
<description>
|
||||||
|
<p>This is largely a bug fix release though it has some large behind the scenes changes:</p>
|
||||||
|
<ul>
|
||||||
|
<li>Rename data files to use *io.github.Hexchat* name</li>
|
||||||
|
<li>Add option (irc_reconnect_rejoin) to disable auto-rejoin on reconnect</li>
|
||||||
|
<li>Add ability to set custom tray icon separate of app icon</li>
|
||||||
|
<li>Fix Enchant 2.0+ support</li>
|
||||||
|
<li>Fix input box theming with Adwaita-dark</li>
|
||||||
|
<li>Fix custom sounds not respecting omit if away option</li>
|
||||||
|
<li>Fix detecting if a tray doesn't exist on x11</li>
|
||||||
|
<li>Fix cutting off ctcp text after ending \01</li>
|
||||||
|
<li>Fix /ignore not accepting full hosts</li>
|
||||||
|
<li>Fix characters getting cut off when their width changes</li>
|
||||||
|
<li>Fix various possible crashes</li>
|
||||||
|
<li>Change preference window to be scroll-able</li>
|
||||||
|
<li>Remove ctrl+w binding by default</li>
|
||||||
|
<li>doat: Fix channels with / in them</li>
|
||||||
|
<li>fishlim: Fix key exchange</li>
|
||||||
|
<li>fishlim: Fix building against LibreSSL</li>
|
||||||
|
<li>sysinfo: Fix pci.ids file not being found on some distros</li>
|
||||||
|
<li>sysinfo: Make libpci optional</li>
|
||||||
|
<li>lua: Avoid loading the same script multiple times</li>
|
||||||
|
<li>Update translations</li>
|
||||||
|
</ul>
|
||||||
|
</description>
|
||||||
|
</release>
|
||||||
|
<release date="2016-12-10" version="2.12.4">
|
||||||
|
<description>
|
||||||
|
<p>This is another bug fix release:</p>
|
||||||
|
<ul>
|
||||||
|
<li>Fix issue with timers causing ping timeouts</li>
|
||||||
|
<li>Fix building against OpenSSL 1.1</li>
|
||||||
|
<li>Fix /exec output printing invalid utf8</li>
|
||||||
|
<li>Replace doat plugin with an internal command</li>
|
||||||
|
<li>Change how tab colors interact with plugins</li>
|
||||||
|
<li>Enable filtering the beep character by default</li>
|
||||||
|
</ul>
|
||||||
|
</description>
|
||||||
|
</release>
|
||||||
|
<release date="2016-10-22" version="2.12.3">
|
||||||
|
<description>
|
||||||
|
<p>This is a minor bug fix release just cleaning up a few issues:</p>
|
||||||
|
<ul>
|
||||||
|
<li>Fix crash with bad translations</li>
|
||||||
|
<li>Add new mhop command</li>
|
||||||
|
<li>Change ping timeout to 60 by default</li>
|
||||||
|
</ul>
|
||||||
|
</description>
|
||||||
|
</release>
|
||||||
|
</releases>
|
||||||
|
<kudos>
|
||||||
|
<kudo>UserDocs</kudo>
|
||||||
|
<kudo>HiDpiIcon</kudo>
|
||||||
|
<kudo>Notifications</kudo>
|
||||||
|
</kudos>
|
||||||
|
<content_rating type="oars-1.1">
|
||||||
|
<content_attribute id="social-chat">intense</content_attribute>
|
||||||
|
</content_rating>
|
||||||
|
<update_contact>tingping_at_fedoraproject.org</update_contact>
|
||||||
|
</component>
|
19
data/misc/io.github.Hexchat.desktop.in.in
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Name=HexChat
|
||||||
|
GenericName=IRC Client
|
||||||
|
Comment=Chat with other people online
|
||||||
|
Keywords=IM;Chat;
|
||||||
|
Exec=@exec_command@
|
||||||
|
Icon=hexchat
|
||||||
|
Terminal=false
|
||||||
|
Type=Application
|
||||||
|
Categories=GTK;Network;IRCClient;
|
||||||
|
StartupNotify=true
|
||||||
|
StartupWMClass=Hexchat
|
||||||
|
X-GNOME-UsesNotifications=true
|
||||||
|
MimeType=x-scheme-handler/irc;x-scheme-handler/ircs;
|
||||||
|
Actions=SafeMode;
|
||||||
|
|
||||||
|
[Desktop Action SafeMode]
|
||||||
|
Name=Open Safe Mode
|
||||||
|
Exec=hexchat --no-auto --no-plugins
|
127
data/misc/meson.build
Normal file
@@ -0,0 +1,127 @@
|
|||||||
|
appdir = join_paths(get_option('datadir'), 'applications')
|
||||||
|
metainfodir = join_paths(get_option('datadir'), 'metainfo')
|
||||||
|
desktop_utils = find_program('desktop-file-validate', required: false)
|
||||||
|
|
||||||
|
if get_option('gtk-frontend')
|
||||||
|
if get_option('install-appdata')
|
||||||
|
hexchat_appdata = i18n.merge_file(
|
||||||
|
input: 'io.github.Hexchat.appdata.xml.in',
|
||||||
|
output: 'io.github.Hexchat.appdata.xml',
|
||||||
|
po_dir: '../../po',
|
||||||
|
install: true,
|
||||||
|
install_dir: metainfodir
|
||||||
|
)
|
||||||
|
|
||||||
|
appstream_util = find_program('appstream-util', required: false)
|
||||||
|
if appstream_util.found()
|
||||||
|
test('Validate io.github.Hexchat.appdata.xml', appstream_util,
|
||||||
|
args: ['validate-relax', hexchat_appdata]
|
||||||
|
)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
desktop_conf = configuration_data()
|
||||||
|
if dbus_glib_dep.found()
|
||||||
|
desktop_conf.set('exec_command', 'hexchat --existing %U')
|
||||||
|
else
|
||||||
|
desktop_conf.set('exec_command', 'hexchat %U')
|
||||||
|
endif
|
||||||
|
|
||||||
|
desktop_file = configure_file(
|
||||||
|
input: 'io.github.Hexchat.desktop.in.in',
|
||||||
|
output: 'io.github.Hexchat.desktop.in',
|
||||||
|
configuration: desktop_conf
|
||||||
|
)
|
||||||
|
|
||||||
|
hexchat_desktop = i18n.merge_file(
|
||||||
|
input: desktop_file,
|
||||||
|
output: 'io.github.Hexchat.desktop',
|
||||||
|
po_dir: '../../po',
|
||||||
|
type: 'desktop',
|
||||||
|
install: true,
|
||||||
|
install_dir: appdir
|
||||||
|
)
|
||||||
|
|
||||||
|
if desktop_utils.found()
|
||||||
|
test('Validate io.github.Hexchat.desktop', desktop_utils,
|
||||||
|
args: [hexchat_desktop]
|
||||||
|
)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
if get_option('theme-manager')
|
||||||
|
htm_desktop = i18n.merge_file(
|
||||||
|
input: 'io.github.Hexchat.ThemeManager.desktop.in',
|
||||||
|
output: 'io.github.Hexchat.ThemeManager.desktop',
|
||||||
|
po_dir: '../../po',
|
||||||
|
type: 'desktop',
|
||||||
|
install: true,
|
||||||
|
install_dir: appdir
|
||||||
|
)
|
||||||
|
|
||||||
|
if desktop_utils.found()
|
||||||
|
test('Validate io.github.Hexchat.ThemeManager.desktop', desktop_utils,
|
||||||
|
args: [htm_desktop]
|
||||||
|
)
|
||||||
|
endif
|
||||||
|
|
||||||
|
install_data('io.github.Hexchat.ThemeManager.xml',
|
||||||
|
install_dir: join_paths(get_option('datadir'), 'mime/packages')
|
||||||
|
)
|
||||||
|
endif
|
||||||
|
|
||||||
|
if get_option('plugin')
|
||||||
|
plugin_metainfo = []
|
||||||
|
|
||||||
|
# FIXME: These should all get translated somewhere
|
||||||
|
if get_option('with-checksum')
|
||||||
|
plugin_metainfo += [
|
||||||
|
['Checksum', 'Calculates a checksum for all sent and recieved DCC files', 'MIT']
|
||||||
|
]
|
||||||
|
endif
|
||||||
|
|
||||||
|
if get_option('with-fishlim')
|
||||||
|
plugin_metainfo += [
|
||||||
|
['Fishlim', 'Allows setting a key for encrypted conversations', 'MIT AND GPL-2.0+']
|
||||||
|
]
|
||||||
|
endif
|
||||||
|
|
||||||
|
if get_option('with-lua') != 'false'
|
||||||
|
plugin_metainfo += [
|
||||||
|
['Lua', 'Provides a scripting interface in Lua', 'MIT']
|
||||||
|
]
|
||||||
|
endif
|
||||||
|
|
||||||
|
if get_option('with-perl') != 'false'
|
||||||
|
plugin_metainfo += [
|
||||||
|
['Perl', 'Provides a scripting interface in Perl', 'GPL-2.0+']
|
||||||
|
]
|
||||||
|
endif
|
||||||
|
|
||||||
|
if get_option('with-python') != 'false'
|
||||||
|
plugin_metainfo += [
|
||||||
|
['Python', 'Provides a scripting interface in Python', 'GPL-2.0+']
|
||||||
|
]
|
||||||
|
endif
|
||||||
|
|
||||||
|
if get_option('with-sysinfo')
|
||||||
|
plugin_metainfo += [
|
||||||
|
['Sysinfo', 'Adds command to display system information', 'GPL-2.0+']
|
||||||
|
]
|
||||||
|
endif
|
||||||
|
|
||||||
|
foreach metainfo : plugin_metainfo
|
||||||
|
name = metainfo[0]
|
||||||
|
conf = configuration_data()
|
||||||
|
conf.set('NAME', name)
|
||||||
|
conf.set('SUMMARY', metainfo[1])
|
||||||
|
conf.set('LICENSE', metainfo[2])
|
||||||
|
|
||||||
|
configure_file(
|
||||||
|
input: 'io.github.Hexchat.Plugin.metainfo.xml.in',
|
||||||
|
output: 'io.github.Hexchat.Plugin.@0@.metainfo.xml'.format(name),
|
||||||
|
configuration: conf,
|
||||||
|
install_dir: get_option('install-plugin-metainfo') ? metainfodir : '',
|
||||||
|
)
|
||||||
|
endforeach
|
||||||
|
endif
|
9
data/pkgconfig/hexchat-plugin.pc.in
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
prefix=@prefix@
|
||||||
|
exec_prefix=${prefix}
|
||||||
|
includedir=@includedir@
|
||||||
|
hexchatlibdir=@hexchatlibdir@
|
||||||
|
|
||||||
|
Name: HexChat plugins
|
||||||
|
Description: Header and path for HexChat plugins
|
||||||
|
Version: @VERSION@
|
||||||
|
Cflags: -I${includedir}
|
14
data/pkgconfig/meson.build
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
pkg_conf = configuration_data()
|
||||||
|
prefix = get_option('prefix')
|
||||||
|
pkg_conf.set('prefix', prefix)
|
||||||
|
pkg_conf.set('VERSION', meson.project_version())
|
||||||
|
pkg_conf.set('hexchatlibdir', join_paths('${prefix}', plugindir))
|
||||||
|
pkg_conf.set('includedir', join_paths('${prefix}', get_option('includedir')))
|
||||||
|
|
||||||
|
configure_file(
|
||||||
|
input: 'hexchat-plugin.pc.in',
|
||||||
|
output: 'hexchat-plugin.pc',
|
||||||
|
configuration: pkg_conf,
|
||||||
|
install: true,
|
||||||
|
install_dir: join_paths(get_option('libdir'), 'pkgconfig'),
|
||||||
|
)
|
14
fedora-mingw64.ini
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
; dnf install mingw64-{gtk,openssl}
|
||||||
|
|
||||||
|
[binaries]
|
||||||
|
c = '/usr/bin/x86_64-w64-mingw32-gcc'
|
||||||
|
cpp = '/usr/bin/x86_64-w64-mingw32-g++'
|
||||||
|
ar = '/usr/bin/x86_64-w64-mingw32-gcc-ar'
|
||||||
|
strip = '/usr/bin/x86_64-w64-mingw32-strip'
|
||||||
|
pkgconfig = '/usr/bin/x86_64-w64-mingw32-pkg-config'
|
||||||
|
|
||||||
|
[host_machine]
|
||||||
|
system = 'windows'
|
||||||
|
cpu_family = 'x86_64'
|
||||||
|
cpu = 'x86_64'
|
||||||
|
endian = 'little'
|
25
flatpak/Load-plugins-from-Flatpak-extensions.patch
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
From 918503d57c6740d20be68a6717158673a2a8b25f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Patrick Griffis <tingping@tingping.se>
|
||||||
|
Date: Sat, 17 Mar 2018 05:57:49 -0400
|
||||||
|
Subject: [PATCH] Support loading Flatpak extensions
|
||||||
|
|
||||||
|
---
|
||||||
|
src/common/plugin.c | 2 ++
|
||||||
|
1 file changed, 2 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/common/plugin.c b/src/common/plugin.c
|
||||||
|
index 3ad3c558..6addf962 100644
|
||||||
|
--- a/src/common/plugin.c
|
||||||
|
+++ b/src/common/plugin.c
|
||||||
|
@@ -450,6 +450,8 @@ plugin_auto_load (session *sess)
|
||||||
|
lib_dir = plugin_get_libdir ();
|
||||||
|
sub_dir = g_build_filename (get_xdir (), "addons", NULL);
|
||||||
|
|
||||||
|
+ for_files ("/app/extensions/lib/hexchat/plugins", "*.so", plugin_auto_load_cb);
|
||||||
|
+
|
||||||
|
#ifdef WIN32
|
||||||
|
/* a long list of bundled plugins that should be loaded automatically,
|
||||||
|
* user plugins should go to <config>, leave Program Files alone! */
|
||||||
|
--
|
||||||
|
2.14.3
|
||||||
|
|
79
flatpak/io.github.Hexchat.json
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
{
|
||||||
|
"app-id": "io.github.Hexchat",
|
||||||
|
"branch": "stable",
|
||||||
|
"runtime": "org.gnome.Platform",
|
||||||
|
"runtime-version": "40",
|
||||||
|
"sdk": "org.gnome.Sdk",
|
||||||
|
"command": "hexchat",
|
||||||
|
"rename-icon": "hexchat",
|
||||||
|
"finish-args": [
|
||||||
|
"--share=ipc",
|
||||||
|
"--socket=x11",
|
||||||
|
"--share=network",
|
||||||
|
"--socket=pulseaudio",
|
||||||
|
"--filesystem=xdg-download",
|
||||||
|
|
||||||
|
"--talk-name=org.freedesktop.Notifications",
|
||||||
|
|
||||||
|
"--talk-name=org.mpris.MediaPlayer2.*"
|
||||||
|
],
|
||||||
|
"add-extensions": {
|
||||||
|
"io.github.Hexchat.Plugin": {
|
||||||
|
"version": "20.08",
|
||||||
|
"directory": "extensions",
|
||||||
|
"add-ld-path": "lib",
|
||||||
|
"merge-dirs": "lib/hexchat/plugins",
|
||||||
|
"subdirectories": true,
|
||||||
|
"no-autodownload": true,
|
||||||
|
"autodelete": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"modules": [
|
||||||
|
"shared-modules/gtk2/gtk2.json",
|
||||||
|
"shared-modules/gtk2/gtk2-common-themes.json",
|
||||||
|
"shared-modules/dbus-glib/dbus-glib-0.110.json",
|
||||||
|
"shared-modules/lua5.3/lua-5.3.5.json",
|
||||||
|
"shared-modules/libcanberra/libcanberra.json",
|
||||||
|
"python3-cffi.json",
|
||||||
|
{
|
||||||
|
"name": "lgi",
|
||||||
|
"buildsystem": "meson",
|
||||||
|
"sources": [
|
||||||
|
{
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/pavouk/lgi.git",
|
||||||
|
"commit": "95418635aa8151a516d43166227ea2b9d4c4403f"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "hexchat",
|
||||||
|
"buildsystem": "meson",
|
||||||
|
"config-opts": [
|
||||||
|
"--buildtype=release",
|
||||||
|
"-Ddbus-service-use-appid=true",
|
||||||
|
"-Dwith-perl=false",
|
||||||
|
"-Dwith-lua=lua"
|
||||||
|
],
|
||||||
|
"build-options": {
|
||||||
|
"cflags": "-Wno-error=missing-include-dirs"
|
||||||
|
},
|
||||||
|
"cleanup": [
|
||||||
|
"/share/man"
|
||||||
|
],
|
||||||
|
"post-install": [
|
||||||
|
"install -d /app/extensions"
|
||||||
|
],
|
||||||
|
"sources": [
|
||||||
|
{
|
||||||
|
"type": "dir",
|
||||||
|
"path": ".."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "patch",
|
||||||
|
"path": "Load-plugins-from-Flatpak-extensions.patch"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
19
flatpak/python3-cffi.json
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
{
|
||||||
|
"name": "python3-cffi",
|
||||||
|
"buildsystem": "simple",
|
||||||
|
"build-commands": [
|
||||||
|
"pip3 install --verbose --exists-action=i --no-index --find-links=\"file://${PWD}\" --prefix=${FLATPAK_DEST} \"cffi\" --no-build-isolation"
|
||||||
|
],
|
||||||
|
"sources": [
|
||||||
|
{
|
||||||
|
"type": "file",
|
||||||
|
"url": "https://files.pythonhosted.org/packages/0f/86/e19659527668d70be91d0369aeaa055b4eb396b0f387a4f92293a20035bd/pycparser-2.20.tar.gz",
|
||||||
|
"sha256": "2d475327684562c3a96cc71adf7dc8c4f0565175cf86b6d7a404ff4c771f15f0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "file",
|
||||||
|
"url": "https://files.pythonhosted.org/packages/a8/20/025f59f929bbcaa579704f443a438135918484fffaacfaddba776b374563/cffi-1.14.5.tar.gz",
|
||||||
|
"sha256": "fd78e5fee591709f32ef6edb9a015b4aa1a5022598e36227500c8f4e02328d9c"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
1
flatpak/shared-modules
Submodule
@@ -1 +0,0 @@
|
|||||||
man_MANS = hexchat.1
|
|
196
meson.build
Normal file
@@ -0,0 +1,196 @@
|
|||||||
|
project('hexchat', 'c',
|
||||||
|
version: '2.14.3',
|
||||||
|
meson_version: '>= 0.47.0',
|
||||||
|
default_options: [
|
||||||
|
'c_std=gnu89',
|
||||||
|
'buildtype=debugoptimized',
|
||||||
|
'warning_level=1',
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
i18n = import('i18n')
|
||||||
|
gnome = import('gnome')
|
||||||
|
cc = meson.get_compiler('c')
|
||||||
|
|
||||||
|
|
||||||
|
libgio_dep = dependency('gio-2.0', version: '>= 2.34.0')
|
||||||
|
libgmodule_dep = dependency('gmodule-2.0')
|
||||||
|
|
||||||
|
libcanberra_dep = dependency('libcanberra', version: '>= 0.22',
|
||||||
|
required: get_option('libcanberra'))
|
||||||
|
dbus_glib_dep = dependency('dbus-glib-1', required: get_option('dbus'))
|
||||||
|
|
||||||
|
global_deps = []
|
||||||
|
if cc.get_id() == 'msvc'
|
||||||
|
libssl_dep = cc.find_library('libeay32')
|
||||||
|
else
|
||||||
|
libssl_dep = dependency('openssl', version: '>= 0.9.8',
|
||||||
|
required: get_option('tls'))
|
||||||
|
endif
|
||||||
|
|
||||||
|
config_h = configuration_data()
|
||||||
|
config_h.set_quoted('PACKAGE_VERSION', meson.project_version())
|
||||||
|
config_h.set_quoted('PACKAGE_NAME', meson.project_name())
|
||||||
|
config_h.set_quoted('GETTEXT_PACKAGE', 'hexchat')
|
||||||
|
config_h.set_quoted('LOCALEDIR', join_paths(get_option('prefix'),
|
||||||
|
get_option('datadir'), 'locale'))
|
||||||
|
config_h.set10('ENABLE_NLS', true)
|
||||||
|
|
||||||
|
# Optional features
|
||||||
|
config_h.set('USE_OPENSSL', libssl_dep.found())
|
||||||
|
config_h.set('USE_LIBCANBERRA', libcanberra_dep.found())
|
||||||
|
config_h.set('USE_DBUS', dbus_glib_dep.found())
|
||||||
|
config_h.set('USE_PLUGIN', get_option('plugin'))
|
||||||
|
|
||||||
|
config_h.set('G_DISABLE_SINGLE_INCLUDES', true)
|
||||||
|
config_h.set('GTK_DISABLE_DEPRECATED', true)
|
||||||
|
config_h.set('GTK_DISABLE_SINGLE_INCLUDES', true)
|
||||||
|
config_h.set('GDK_PIXBUF_DISABLE_SINGLE_INCLUDES', true)
|
||||||
|
config_h.set('GLIB_VERSION_MAX_ALLOWED', 'GLIB_VERSION_2_34')
|
||||||
|
config_h.set('GLIB_VERSION_MIN_REQUIRED', 'GLIB_VERSION_2_34')
|
||||||
|
|
||||||
|
# Detected features
|
||||||
|
config_h.set('HAVE_MEMRCHR', cc.has_function('memrchr'))
|
||||||
|
config_h.set('HAVE_STRINGS_H', cc.has_header('strings.h'))
|
||||||
|
|
||||||
|
config_h.set_quoted('HEXCHATLIBDIR',
|
||||||
|
join_paths(get_option('prefix'), get_option('libdir'), 'hexchat/plugins')
|
||||||
|
)
|
||||||
|
|
||||||
|
if libssl_dep.found()
|
||||||
|
config_h.set('HAVE_X509_GET_SIGNATURE_NID',
|
||||||
|
cc.has_function('X509_get_signature_nid', dependencies: libssl_dep)
|
||||||
|
)
|
||||||
|
config_h.set('HAVE_SSL_CTX_GET_SSL_METHOD',
|
||||||
|
cc.has_function('SSL_CTX_get_ssl_method', dependencies: libssl_dep)
|
||||||
|
)
|
||||||
|
config_h.set('HAVE_DH_SET0_PQG',
|
||||||
|
cc.has_function('DH_set0_pqg', dependencies: libssl_dep)
|
||||||
|
)
|
||||||
|
config_h.set('HAVE_DH_GET0_KEY',
|
||||||
|
cc.has_function('DH_get0_key', dependencies: libssl_dep)
|
||||||
|
)
|
||||||
|
config_h.set('HAVE_DH_SET0_KEY',
|
||||||
|
cc.has_function('DH_set0_key', dependencies: libssl_dep)
|
||||||
|
)
|
||||||
|
config_h.set('HAVE_ERR_REMOVE_THREAD_STATE',
|
||||||
|
cc.has_function('ERR_remove_thread_state', dependencies: libssl_dep)
|
||||||
|
)
|
||||||
|
config_h.set('HAVE_ASN1_STRING_GET0_DATA',
|
||||||
|
cc.has_function('ASN1_STRING_get0_data', dependencies: libssl_dep)
|
||||||
|
)
|
||||||
|
endif
|
||||||
|
|
||||||
|
configure_file(output: 'config.h', configuration: config_h)
|
||||||
|
config_h_include = include_directories('.')
|
||||||
|
|
||||||
|
if host_machine.system() == 'windows'
|
||||||
|
add_project_arguments(
|
||||||
|
'-DWIN32',
|
||||||
|
'-DNTDDI_VERSION=NTDDI_WIN7',
|
||||||
|
'-D_WIN32_WINNT=_WIN32_WINNT_WIN7',
|
||||||
|
language: 'c')
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
global_cflags = []
|
||||||
|
test_cflags = [
|
||||||
|
'-funsigned-char',
|
||||||
|
'-Wno-conversion',
|
||||||
|
'-Wno-pointer-sign',
|
||||||
|
'-Wno-padded',
|
||||||
|
'-Wno-unused-parameter',
|
||||||
|
'-Wno-missing-prototypes',
|
||||||
|
'-Winline',
|
||||||
|
'-Wstrict-prototypes',
|
||||||
|
'-Werror=implicit-function-declaration',
|
||||||
|
'-Werror=pointer-arith',
|
||||||
|
'-Werror=init-self',
|
||||||
|
['-Werror=format-security', '-Werror=format=1'],
|
||||||
|
'-Werror=missing-include-dirs',
|
||||||
|
'-Werror=date-time',
|
||||||
|
]
|
||||||
|
foreach cflag : test_cflags
|
||||||
|
if cc.has_multi_arguments(cflag)
|
||||||
|
global_cflags += cflag
|
||||||
|
endif
|
||||||
|
endforeach
|
||||||
|
if get_option('buildtype') != 'plain'
|
||||||
|
if cc.has_argument('-fstack-protector-strong') and cc.links('''
|
||||||
|
int main (void) {
|
||||||
|
char buffer[16];
|
||||||
|
strcpy(buffer, "foo");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
''', args: '-fstack-protector-all')
|
||||||
|
global_cflags += '-fstack-protector-strong'
|
||||||
|
|
||||||
|
if host_machine.system() == 'windows'
|
||||||
|
global_deps += cc.find_library('ssp')
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
add_project_arguments(global_cflags, language: 'c')
|
||||||
|
|
||||||
|
|
||||||
|
global_ldflags = []
|
||||||
|
test_ldflags = [
|
||||||
|
'-Wl,-z,relro',
|
||||||
|
'-Wl,-z,now',
|
||||||
|
# mingw
|
||||||
|
'-Wl,--nxcompat',
|
||||||
|
]
|
||||||
|
if not (host_machine.system() == 'windows' and get_option('debug'))
|
||||||
|
test_ldflags += '-Wl,--dynamicbase'
|
||||||
|
endif
|
||||||
|
foreach ldflag : test_ldflags
|
||||||
|
if meson.version().version_compare('>= 0.46.0')
|
||||||
|
has_arg = cc.has_link_argument(ldflag)
|
||||||
|
else
|
||||||
|
has_arg = cc.has_argument(ldflag)
|
||||||
|
endif
|
||||||
|
|
||||||
|
if has_arg and cc.links('int main (void) { return 0; }', args: ldflag)
|
||||||
|
global_ldflags += ldflag
|
||||||
|
endif
|
||||||
|
endforeach
|
||||||
|
add_project_link_arguments(global_ldflags, language: 'c')
|
||||||
|
|
||||||
|
subdir('src')
|
||||||
|
if get_option('plugin')
|
||||||
|
subdir('plugins')
|
||||||
|
endif
|
||||||
|
if cc.get_id() != 'msvc'
|
||||||
|
subdir('data')
|
||||||
|
subdir('po') # FIXME: build xgettext
|
||||||
|
|
||||||
|
meson.add_install_script('meson_post_install.py',
|
||||||
|
'@0@'.format(get_option('theme-manager'))
|
||||||
|
)
|
||||||
|
endif
|
||||||
|
|
||||||
|
if meson.version().version_compare('>= 0.53.0')
|
||||||
|
summary({
|
||||||
|
'prefix': get_option('prefix'),
|
||||||
|
'bindir': get_option('bindir'),
|
||||||
|
'libdir': get_option('libdir'),
|
||||||
|
'datadir': get_option('datadir'),
|
||||||
|
}, section: 'Directories')
|
||||||
|
|
||||||
|
summary({
|
||||||
|
'TLS (openssl)': libssl_dep.found(),
|
||||||
|
'Plugin Support': get_option('plugin'),
|
||||||
|
'DBus Support': dbus_glib_dep.found(),
|
||||||
|
'libcanberra': libcanberra_dep.found(),
|
||||||
|
}, section: 'Features')
|
||||||
|
|
||||||
|
summary({
|
||||||
|
'Lua': get_option('with-lua'),
|
||||||
|
'Python': get_option('with-python'),
|
||||||
|
'Perl': get_option('with-perl'),
|
||||||
|
'Perl Legacy API': get_option('with-perl-legacy-api'),
|
||||||
|
'FiSH': get_option('with-fishlim'),
|
||||||
|
'Sysinfo': get_option('with-sysinfo'),
|
||||||
|
'DCC Checksum': get_option('with-checksum'),
|
||||||
|
}, section: 'Plugins')
|
||||||
|
endif
|
67
meson_options.txt
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
# Applications
|
||||||
|
option('gtk-frontend', type: 'boolean',
|
||||||
|
description: 'Main graphical interface'
|
||||||
|
)
|
||||||
|
option('text-frontend', type: 'boolean', value: false,
|
||||||
|
description: 'Text interface (not generally useful)'
|
||||||
|
)
|
||||||
|
option('theme-manager', type: 'boolean', value: false,
|
||||||
|
description: 'Utility to help manage themes, requires mono/.net'
|
||||||
|
)
|
||||||
|
|
||||||
|
# Features
|
||||||
|
option('tls', type: 'feature', value: 'enabled',
|
||||||
|
description: 'Support for TLS connections, requires openssl'
|
||||||
|
)
|
||||||
|
option('plugin', type: 'boolean',
|
||||||
|
description: 'Support for loadable plugins'
|
||||||
|
)
|
||||||
|
option('dbus', type: 'feature', value: 'auto',
|
||||||
|
description: 'Support used for single-instance and scripting interface, Unix only'
|
||||||
|
)
|
||||||
|
option('libcanberra', type: 'feature', value: 'auto',
|
||||||
|
description: 'Support for sound alerts, Unix only'
|
||||||
|
)
|
||||||
|
|
||||||
|
# Install options
|
||||||
|
option('dbus-service-use-appid', type: 'boolean', value: false,
|
||||||
|
description: 'Rename dbus service to match app-id, required for Flatpak'
|
||||||
|
)
|
||||||
|
option('install-appdata', type: 'boolean',
|
||||||
|
description: 'Install appdata files for app stores'
|
||||||
|
)
|
||||||
|
option('install-plugin-metainfo', type: 'boolean', value: false,
|
||||||
|
description: 'Installs metainfo files for enabled plugins, useful when distros create split packages'
|
||||||
|
)
|
||||||
|
|
||||||
|
# Plugins
|
||||||
|
option('with-checksum', type: 'boolean',
|
||||||
|
description: 'DCC checksum plugin'
|
||||||
|
)
|
||||||
|
option('with-exec', type: 'boolean',
|
||||||
|
description: '/exec plugin, Windows only'
|
||||||
|
)
|
||||||
|
option('with-fishlim', type: 'boolean',
|
||||||
|
description: 'Fish encryption plugin, requires openssl'
|
||||||
|
)
|
||||||
|
option('with-lua', type: 'string', value: 'luajit',
|
||||||
|
description: 'Lua scripting plugin, value is pkg-config name to use or "false"'
|
||||||
|
)
|
||||||
|
option('with-perl', type: 'string', value: 'perl',
|
||||||
|
description: 'Perl scripting plugin, value is path to perl executable or "false"'
|
||||||
|
)
|
||||||
|
option('with-python', type: 'string', value: 'python3',
|
||||||
|
description: 'Python scripting plugin. value is pkg-config name to use or "false"'
|
||||||
|
)
|
||||||
|
option('with-sysinfo', type: 'boolean',
|
||||||
|
description: 'System information plugin, requires libpci on Unix'
|
||||||
|
)
|
||||||
|
option('with-upd', type: 'boolean',
|
||||||
|
description: 'Update plugin, Windows only'
|
||||||
|
)
|
||||||
|
option('with-winamp', type: 'boolean',
|
||||||
|
description: 'Winamp plugin, Windows only'
|
||||||
|
)
|
||||||
|
option('with-perl-legacy-api', type: 'boolean', value: false,
|
||||||
|
description: 'Enables the legacy IRC perl module for compatibility with old scripts'
|
||||||
|
)
|
24
meson_post_install.py
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import subprocess
|
||||||
|
|
||||||
|
prefix = os.environ.get('MESON_INSTALL_PREFIX', '/usr/local')
|
||||||
|
datadir = os.path.join(prefix, 'share')
|
||||||
|
with_thememan = sys.argv[1] == 'true'
|
||||||
|
|
||||||
|
# Packaging tools define DESTDIR and this isn't needed for them
|
||||||
|
if 'DESTDIR' not in os.environ:
|
||||||
|
print('Updating icon cache...')
|
||||||
|
subprocess.call(['gtk-update-icon-cache', '-qtf',
|
||||||
|
os.path.join(datadir, 'icons', 'hicolor')])
|
||||||
|
|
||||||
|
print('Updating desktop database...')
|
||||||
|
subprocess.call(['update-desktop-database', '-q',
|
||||||
|
os.path.join(datadir, 'applications')])
|
||||||
|
|
||||||
|
if with_thememan:
|
||||||
|
print('Updating mime database...')
|
||||||
|
subprocess.call(['update-mime-database',
|
||||||
|
os.path.join(datadir, 'mime')])
|
30
osx/Info.plist.in
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>CFBundleDevelopmentRegion</key>
|
||||||
|
<string>English</string>
|
||||||
|
<key>CFBundleExecutable</key>
|
||||||
|
<string>HexChat</string>
|
||||||
|
<key>CFBundleGetInfoString</key>
|
||||||
|
<string>@VERSION@</string>
|
||||||
|
<key>CFBundleIconFile</key>
|
||||||
|
<string>hexchat.icns</string>
|
||||||
|
<key>CFBundleIdentifier</key>
|
||||||
|
<string>org.hexchat</string>
|
||||||
|
<key>CFBundleInfoDictionaryVersion</key>
|
||||||
|
<string>6.0</string>
|
||||||
|
<key>CFBundlePackageType</key>
|
||||||
|
<string>APPL</string>
|
||||||
|
<key>CFBundleShortVersionString</key>
|
||||||
|
<string>@VERSION@</string>
|
||||||
|
<key>CFBundleSignature</key>
|
||||||
|
<string>????</string>
|
||||||
|
<key>CFBundleVersion</key>
|
||||||
|
<string>@VERSION@</string>
|
||||||
|
<key>NSHumanReadableCopyright</key>
|
||||||
|
<string></string>
|
||||||
|
<key>LSMinimumSystemVersion</key>
|
||||||
|
<string>10.4</string>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
435
osx/gtkrc
Normal file
@@ -0,0 +1,435 @@
|
|||||||
|
# Mac Theme for Xamarin composed by Lanedo GmbH
|
||||||
|
# Copyright 2012 Xamarin Inc.
|
||||||
|
# Authors:
|
||||||
|
# Christian Kellner <christian.kellner@lanedo.com>
|
||||||
|
# Carlos Garnacho <carlos.garnacho@lanedo.com>
|
||||||
|
#
|
||||||
|
# Modified by HexChat
|
||||||
|
#
|
||||||
|
|
||||||
|
gtk-color-scheme =
|
||||||
|
"bg_color: #f5f5f5
|
||||||
|
fg_color: #000
|
||||||
|
base_color: #fff
|
||||||
|
text_color: #000
|
||||||
|
selected_bg_color: #0066FF
|
||||||
|
selected_fg_color: #fff
|
||||||
|
tooltip_bg_color: #fafaba
|
||||||
|
tooltip_fg_color: #000"
|
||||||
|
|
||||||
|
gtk-button-images = 0
|
||||||
|
gtk-menu-images = 0
|
||||||
|
gtk-toolbar-style = 0
|
||||||
|
gtk-enable-mnemonics = 0
|
||||||
|
gtk-icon-sizes = "gtk-small-toolbar=16,16:gtk-large-toolbar=22,22"
|
||||||
|
gtk-toolbar-icon-size = large-toolbar
|
||||||
|
gtk-auto-mnemonics = 1
|
||||||
|
gtk-error-bell = 0
|
||||||
|
gtk-show-input-method-menu = 0
|
||||||
|
gtk-key-theme-name="Mac"
|
||||||
|
|
||||||
|
style "default" {
|
||||||
|
xthickness = 1
|
||||||
|
ythickness = 1
|
||||||
|
|
||||||
|
### colours
|
||||||
|
bg[NORMAL] = @bg_color
|
||||||
|
bg[PRELIGHT] = @bg_color
|
||||||
|
bg[SELECTED] = @selected_bg_color
|
||||||
|
bg[INSENSITIVE] = @bg_color
|
||||||
|
bg[ACTIVE] = @bg_color
|
||||||
|
|
||||||
|
fg[NORMAL] = @fg_color
|
||||||
|
fg[PRELIGHT] = @fg_color
|
||||||
|
fg[SELECTED] = @selected_fg_color
|
||||||
|
fg[INSENSITIVE] = darker (@bg_color)
|
||||||
|
fg[ACTIVE] = @fg_color
|
||||||
|
|
||||||
|
text[NORMAL] = @text_color
|
||||||
|
text[PRELIGHT] = @text_color
|
||||||
|
text[SELECTED] = @selected_fg_color
|
||||||
|
text[INSENSITIVE] = darker (@bg_color)
|
||||||
|
text[ACTIVE] = @text_color
|
||||||
|
|
||||||
|
base[NORMAL] = @base_color
|
||||||
|
base[PRELIGHT] = @selected_bg_color
|
||||||
|
base[SELECTED] = @selected_bg_color
|
||||||
|
base[INSENSITIVE] = @bg_color
|
||||||
|
base[ACTIVE] = shade (1.3, @selected_bg_color)
|
||||||
|
|
||||||
|
### style properties
|
||||||
|
GtkWidget::new-tooltip-style = 1
|
||||||
|
|
||||||
|
GtkEntry::honors-transparent-bg-hint = 1
|
||||||
|
GtkEntry::inner-border = { 2, 2, 2, 2 }
|
||||||
|
|
||||||
|
GtkButton::child-displacement-x = 0
|
||||||
|
GtkButton::child-displacement-y = 0
|
||||||
|
GtkButton::default-border = { 0, 0, 0, 0 }
|
||||||
|
GtkButton::inner-border = { 2, 2, 4, 4 }
|
||||||
|
|
||||||
|
GtkButtonBox::child-min-width = 70
|
||||||
|
GtkButtonBox::child-min-height = 22
|
||||||
|
|
||||||
|
GtkTreeView::odd-row-color = "#f0f4f9"
|
||||||
|
|
||||||
|
GtkScrolledWindow::scrollbar-spacing = 0
|
||||||
|
GtkScrolledWindow::scrollbars-within-bevel = 1
|
||||||
|
GtkScale::slider-length = 14
|
||||||
|
GtkRange::trough-side-details = 1
|
||||||
|
|
||||||
|
GtkTreeView::expander-size = 8
|
||||||
|
GtkExpander::expander-size = 8
|
||||||
|
GtkComboBox::arrow-size = 12
|
||||||
|
|
||||||
|
GtkMenu::vertical-padding = 4
|
||||||
|
GtkMenuItem::horizontal-padding = 9
|
||||||
|
GtkMenuItem::toggle-spacing = 0
|
||||||
|
GtkSeparatorMenuItem::horizontal-padding = 2
|
||||||
|
|
||||||
|
engine "xamarin" {
|
||||||
|
|
||||||
|
arrowstyle = 2
|
||||||
|
rgba = TRUE
|
||||||
|
roundness = 3
|
||||||
|
glazestyle = 0
|
||||||
|
|
||||||
|
menustyle = 0
|
||||||
|
menuitemstyle = 0
|
||||||
|
menubaritemstyle = 0
|
||||||
|
comboboxstyle = 1
|
||||||
|
spinbuttonstyle = 1
|
||||||
|
colorize_scrollbar = FALSE
|
||||||
|
progressbarstyle = 0
|
||||||
|
trough_shades = { 0.842, 0.886 }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
style "wide" = "default" {
|
||||||
|
xthickness = 2
|
||||||
|
ythickness = 2
|
||||||
|
}
|
||||||
|
|
||||||
|
style "wider" = "default" {
|
||||||
|
xthickness = 3
|
||||||
|
ythickness = 3
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
style "button" {
|
||||||
|
xthickness = 2
|
||||||
|
ythickness = 2
|
||||||
|
|
||||||
|
bg[NORMAL] = @bg_color
|
||||||
|
bg[PRELIGHT] = shade(1.1, @bg_color)
|
||||||
|
bg[ACTIVE] = @bg_color
|
||||||
|
bg[INSENSITIVE] = @bg_color
|
||||||
|
GtkWidget::focus-padding = 0
|
||||||
|
|
||||||
|
engine "quartz" {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
style "combo-box-button" {
|
||||||
|
xthickness = 2
|
||||||
|
ythickness = 4
|
||||||
|
|
||||||
|
bg[NORMAL] = @base_color
|
||||||
|
bg[PRELIGHT] = shade(1.1, @base_color)
|
||||||
|
bg[ACTIVE] = @base_color
|
||||||
|
bg[INSENSITIVE] = @base_color
|
||||||
|
GtkWidget::focus-padding = 0
|
||||||
|
|
||||||
|
engine "xamarin" {
|
||||||
|
contrast = 1.0
|
||||||
|
gradient_shades = {0.99, 0.98, 0.97, 0.96}
|
||||||
|
focus_color = shade(0.6, @base_color)
|
||||||
|
textstyle = 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
style "dialog-button" = "default" {
|
||||||
|
xthickness = 3
|
||||||
|
ythickness = 2
|
||||||
|
font_name = "Lucida Grande 13"
|
||||||
|
|
||||||
|
GtkWidget::draw-border = { 2, 2, 2, 2 }
|
||||||
|
GtkWidget::focus-line-width = 1
|
||||||
|
GtkButton::inner-border = { 8, 8, 0, 3 }
|
||||||
|
|
||||||
|
engine "quartz" {
|
||||||
|
buttontype = "aqua"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
style "toggle-button" = "button" {
|
||||||
|
bg[NORMAL] = @base_color
|
||||||
|
bg[PRELIGHT] = shade(0.98, @base_color)
|
||||||
|
}
|
||||||
|
|
||||||
|
style "menu" {
|
||||||
|
xthickness = 0
|
||||||
|
ythickness = 0
|
||||||
|
font_name = "Lucida Grande 14"
|
||||||
|
|
||||||
|
bg[PRELIGHT] = @selected_fg_color
|
||||||
|
fg[PRELIGHT] = @selected_fg_color
|
||||||
|
text[PRELIGHT] = @selected_fg_color
|
||||||
|
|
||||||
|
engine "quartz" {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
style "menu-item" = "menu" {
|
||||||
|
ythickness = 2
|
||||||
|
GtkWidget::draw-border = { 0, 0, 0, 2 }
|
||||||
|
}
|
||||||
|
|
||||||
|
style "menu-separator" = "menu-item" {
|
||||||
|
ythickness = 3
|
||||||
|
}
|
||||||
|
|
||||||
|
style "toolbar" = "default"
|
||||||
|
{
|
||||||
|
bg[NORMAL] = "#ddd"
|
||||||
|
engine "xamarin" {
|
||||||
|
toolbarstyle = 2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
style "toolbar-button"
|
||||||
|
{
|
||||||
|
engine "xamarin" {
|
||||||
|
contrast = 1.0
|
||||||
|
focus_color = @bg_color
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
style "tooltip"
|
||||||
|
{
|
||||||
|
xthickness = 5
|
||||||
|
ythickness = 5
|
||||||
|
|
||||||
|
fg[NORMAL] = @tooltip_fg_color
|
||||||
|
bg[NORMAL] = @tooltip_bg_color
|
||||||
|
|
||||||
|
engine "xamarin" {
|
||||||
|
roundness = 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
style "treeview" = "default"
|
||||||
|
{
|
||||||
|
GtkTreeView::odd-row-color = "#f5f5f5"
|
||||||
|
|
||||||
|
base[SELECTED] = "#2b5dcd"
|
||||||
|
base[ACTIVE] = "#cacaca"
|
||||||
|
text[SELECTED] = "#FFF"
|
||||||
|
text[ACTIVE] = "#000"
|
||||||
|
|
||||||
|
font_name = "Lucida Grande 12"
|
||||||
|
|
||||||
|
engine "quartz" {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
style "tree-header"
|
||||||
|
{
|
||||||
|
ythickness = 0
|
||||||
|
bg[NORMAL] = "#f2f2f2"
|
||||||
|
font_name = "Lucida Grande 11"
|
||||||
|
|
||||||
|
GtkWidget::focus-line-width = 0
|
||||||
|
GtkWidget::draw-border = { 1, 1, 1, 1 }
|
||||||
|
GtkButton::inner-border = { 3, 3, 1, 3 }
|
||||||
|
|
||||||
|
engine "quartz" {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
style "icon-view" = "default"
|
||||||
|
{
|
||||||
|
bg[SELECTED] = "#f5f7fa"
|
||||||
|
base[SELECTED] = "#f5f7fa"
|
||||||
|
fg[SELECTED] = "#000"
|
||||||
|
text[SELECTED] = "#000"
|
||||||
|
}
|
||||||
|
|
||||||
|
style "toolbar-combo-box" = "default"
|
||||||
|
{
|
||||||
|
fg[NORMAL] = "#616161"
|
||||||
|
text[NORMAL] = @fg_color
|
||||||
|
bg[NORMAL] = "#fff"
|
||||||
|
base[NORMAL] = "#fff"
|
||||||
|
ythickness = 4
|
||||||
|
xthickness = 2
|
||||||
|
|
||||||
|
engine "xamarin" {
|
||||||
|
comboboxstyle = 0
|
||||||
|
arrowstyle = 2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
style "combo-box" = "default"
|
||||||
|
{
|
||||||
|
fg[NORMAL] = "#616161"
|
||||||
|
xthickness = 2
|
||||||
|
ythickness = 4
|
||||||
|
|
||||||
|
engine "xamarin" {
|
||||||
|
arrowstyle = 4
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
style "combo-box-entry" = "combo-box"
|
||||||
|
{
|
||||||
|
engine "xamarin" {
|
||||||
|
arrowstyle = 3
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
style "combo-box-label" = "combo-box"
|
||||||
|
{
|
||||||
|
fg[NORMAL] = "#595959"
|
||||||
|
}
|
||||||
|
|
||||||
|
style "combo-box-menu" = "menu" {
|
||||||
|
font_name = "Lucida Grande 12"
|
||||||
|
}
|
||||||
|
|
||||||
|
style "notebook" = "default"
|
||||||
|
{
|
||||||
|
GtkNotebook::tab-overlap = 1
|
||||||
|
#bg[ACTIVE] = @base_color
|
||||||
|
bg[NORMAL] = @base_color
|
||||||
|
|
||||||
|
engine "xamarin" {
|
||||||
|
gradient_shades = { 0.945, 0.945, 0.945, 0.685 }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
style "radio-or-check-box"
|
||||||
|
{
|
||||||
|
ythickness = 6
|
||||||
|
#GtkCheckButton::indicator-size = 14
|
||||||
|
GtkCheckButton::indicator-spacing = 4
|
||||||
|
|
||||||
|
engine "quartz" {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
style "entry" = "default"
|
||||||
|
{
|
||||||
|
xthickness = 2
|
||||||
|
ythickness = 2
|
||||||
|
GtkEntry::inner-border = { 2, 2, 2, 2 }
|
||||||
|
base[INSENSITIVE] = shade(1.02, @bg_color)
|
||||||
|
|
||||||
|
engine "quartz" {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
style "search-entry" = "wider"
|
||||||
|
{
|
||||||
|
xthickness = 6
|
||||||
|
ythickness = 4
|
||||||
|
bg[NORMAL] = @base_color
|
||||||
|
}
|
||||||
|
|
||||||
|
style "scrollbar" = "default"
|
||||||
|
{
|
||||||
|
GtkScrollbar::has-forward-stepper = 0
|
||||||
|
GtkScrollbar::has-backward-stepper = 0
|
||||||
|
GtkRange::slider-width = 15
|
||||||
|
GtkRange::trough-border = 0
|
||||||
|
GtkRange::trough-side-details = 0
|
||||||
|
|
||||||
|
engine "quartz" {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
style "progressbar" = "default"
|
||||||
|
{
|
||||||
|
engine "quartz" {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
style "scrolled-window" = "default"
|
||||||
|
{
|
||||||
|
xthickness = 1
|
||||||
|
ythickness = 1
|
||||||
|
}
|
||||||
|
|
||||||
|
style "scale" = "default"
|
||||||
|
{
|
||||||
|
bg[SELECTED] = @selected_bg_color
|
||||||
|
|
||||||
|
engine "xamarin" {
|
||||||
|
roundness = 7
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
style "spin-button" = "wider"
|
||||||
|
{
|
||||||
|
fg[NORMAL] = "#616161"
|
||||||
|
ythickness = 4
|
||||||
|
GtkEntry::inner-border = { 2, 2, 1, 1 }
|
||||||
|
engine "xamarin" {
|
||||||
|
arrowstyle = 3
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
### Apply the styles
|
||||||
|
class "GtkWidget" style "default"
|
||||||
|
|
||||||
|
class "GtkEntry" style "entry"
|
||||||
|
class "GtkSpinButton" style "spin-button"
|
||||||
|
class "GtkFrame" style "wider"
|
||||||
|
class "GtkRange" style "wide"
|
||||||
|
class "GtkSeparator" style "wide"
|
||||||
|
class "GtkScrollbar" style "scrollbar"
|
||||||
|
class "GtkProgressBar" style "progressbar"
|
||||||
|
class "GtkScrolledWindow" style "scrolled-window"
|
||||||
|
class "GtkNotebook" style "notebook"
|
||||||
|
class "GtkButton" style "button"
|
||||||
|
class "GtkToggleButton" style "toggle-button"
|
||||||
|
class "GtkScale" style "scale"
|
||||||
|
|
||||||
|
#widget "*GtkEntry" style "entry"
|
||||||
|
widget "*search-entry*" style "search-entry"
|
||||||
|
widget "*GtkTextView" style "entry"
|
||||||
|
|
||||||
|
widget_class "<GtkDialog>*<GtkCheckButton>" style "radio-or-check-box"
|
||||||
|
widget_class "<GtkDialog>.<GtkVBox>.<GtkButtonBox>.<GtkButton>*" style "dialog-button"
|
||||||
|
widget_class "<GtkDialog>.<GtkVBox>.<GtkHBox>.<GtkButtonBox>.<GtkButton>*" style "dialog-button"
|
||||||
|
widget "*.toggleFindInFiles" style "toggle-button"
|
||||||
|
widget "*.toggleReplaceInFiles" style "toggle-button"
|
||||||
|
|
||||||
|
widget_class "*<GtkMenu>*" style "menu"
|
||||||
|
widget_class "*<GtkMenuItem>*" style "menu-item"
|
||||||
|
widget_class "*<GtkSeparatorMenuItem>" style "menu-separator"
|
||||||
|
widget "*.gtk-combobox-popup-menu*" style "combo-box-menu"
|
||||||
|
|
||||||
|
widget_class "*<GtkToolbar>*" style "toolbar"
|
||||||
|
widget_class "*ToolButton*" style "toolbar-button"
|
||||||
|
|
||||||
|
widget_class "*.<GtkTreeView>*" style "treeview"
|
||||||
|
widget_class "*.GtkTreeView.GtkButton" style "tree-header"
|
||||||
|
widget_class "*.GtkList.GtkButton" style "tree-header"
|
||||||
|
|
||||||
|
widget_class "*<GtkIconView>" style "icon-view"
|
||||||
|
|
||||||
|
widget_class "*.<GtkComboBox>.*" style "combo-box"
|
||||||
|
widget_class "*.<GtkComboBoxText>.*" style "combo-box-entry"
|
||||||
|
widget_class "*.<GtkComboBoxEntry>.*" style "combo-box-entry"
|
||||||
|
widget_class "*.<GtkComboBoxText>.<GtkEntry>" style "combo-box-entry"
|
||||||
|
widget_class "*.<GtkComboBoxEntry>.<GtkEntry>" style "combo-box-entry"
|
||||||
|
widget_class "*.<GtkComboBoxText>.<GtkToggleButton>" style "combo-box-button"
|
||||||
|
widget_class "*.<GtkComboBoxEntry>.<GtkToggleButton>" style "combo-box-button"
|
||||||
|
widget_class "*.<GtkComboBox>.*.GtkLabel" style "combo-box-label"
|
||||||
|
|
||||||
|
# Comboboxes within toolbars
|
||||||
|
widget_class "*.<GtkToolbar>.*.<GtkComboBox>.*" style "toolbar-combo-box"
|
||||||
|
widget "*MainToolbar*.GtkComboBox.*" style "toolbar-combo-box"
|
||||||
|
|
||||||
|
widget "gtk-tooltip*" style "tooltip"
|
68
osx/hexchat.bundle
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<app-bundle>
|
||||||
|
|
||||||
|
<meta>
|
||||||
|
<prefix name="default">/usr/local</prefix>
|
||||||
|
<prefix name="enchant">/usr/local/opt/enchant-applespell</prefix>
|
||||||
|
<destination overwrite="yes">${project}</destination>
|
||||||
|
|
||||||
|
<run-install-name-tool/>
|
||||||
|
<launcher-script>${project}/launcher.sh</launcher-script >
|
||||||
|
<gtk>gtk+-2.0</gtk>
|
||||||
|
</meta>
|
||||||
|
|
||||||
|
<plist>${project}/Info.plist</plist>
|
||||||
|
|
||||||
|
<main-binary>
|
||||||
|
${prefix}/bin/hexchat
|
||||||
|
</main-binary>
|
||||||
|
|
||||||
|
<binary>
|
||||||
|
${prefix}/lib/hexchat/plugins/*.so
|
||||||
|
</binary>
|
||||||
|
|
||||||
|
<binary>
|
||||||
|
${prefix:enchant}/lib/libenchant.dylib
|
||||||
|
</binary>
|
||||||
|
<binary>
|
||||||
|
${prefix:enchant}/lib/enchant/libenchant_applespell.so
|
||||||
|
</binary>
|
||||||
|
|
||||||
|
<binary>
|
||||||
|
${prefix}/lib/${gtkdir}/modules/*.so
|
||||||
|
</binary>
|
||||||
|
<binary>
|
||||||
|
${prefix}/lib/${gtkdir}/${pkg:${gtk}:gtk_binary_version}/engines/libquartz.so
|
||||||
|
</binary>
|
||||||
|
<binary>
|
||||||
|
${prefix}/lib/${gtkdir}/${pkg:${gtk}:gtk_binary_version}/engines/libxamarin.so
|
||||||
|
</binary>
|
||||||
|
<binary>
|
||||||
|
${prefix}/lib/${gtkdir}/${pkg:${gtk}:gtk_binary_version}/printbackends/*.so
|
||||||
|
</binary>
|
||||||
|
<binary>
|
||||||
|
${prefix}/lib/gdk-pixbuf-2.0/${pkg:${gtk}:gtk_binary_version}/loaders/*.so
|
||||||
|
</binary>
|
||||||
|
<binary>
|
||||||
|
${prefix}/lib/pango/${pkg:pango:pango_module_version}/modules/
|
||||||
|
</binary>
|
||||||
|
<data>
|
||||||
|
${prefix}/share/themes/Mac/gtk-2.0-key/gtkrc
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<translations name="gtk20">
|
||||||
|
${prefix}/share/locale
|
||||||
|
</translations>
|
||||||
|
<translations name="hexchat">
|
||||||
|
${prefix}/share/locale
|
||||||
|
</translations>
|
||||||
|
|
||||||
|
<data dest="${bundle}/Contents/Resources/etc/${gtkdir}/gtkrc">
|
||||||
|
${project}/gtkrc
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<data dest="${bundle}/Contents/Resources">
|
||||||
|
${project}/hexchat.icns
|
||||||
|
</data>
|
||||||
|
|
||||||
|
</app-bundle>
|
BIN
osx/hexchat.icns
Normal file
174
osx/launcher.sh
Executable file
@@ -0,0 +1,174 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
if test "x$GTK_DEBUG_LAUNCHER" != x; then
|
||||||
|
set -x
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "x$GTK_DEBUG_GDB" != x; then
|
||||||
|
EXEC="gdb --args"
|
||||||
|
else
|
||||||
|
EXEC=exec
|
||||||
|
fi
|
||||||
|
|
||||||
|
name=`basename "$0"`
|
||||||
|
tmp="$0"
|
||||||
|
tmp=`dirname "$tmp"`
|
||||||
|
tmp=`dirname "$tmp"`
|
||||||
|
bundle=`dirname "$tmp"`
|
||||||
|
bundle_contents="$bundle"/Contents
|
||||||
|
bundle_res="$bundle_contents"/Resources
|
||||||
|
bundle_lib="$bundle_res"/lib
|
||||||
|
bundle_bin="$bundle_res"/bin
|
||||||
|
bundle_data="$bundle_res"/share
|
||||||
|
bundle_etc="$bundle_res"/etc
|
||||||
|
|
||||||
|
export PREFIX="$bundle_res"
|
||||||
|
export DYLD_LIBRARY_PATH="$bundle_lib"
|
||||||
|
export XDG_CONFIG_DIRS="$bundle_etc"/xdg
|
||||||
|
export XDG_DATA_DIRS="$bundle_data"
|
||||||
|
export GTK_DATA_PREFIX="$bundle_res"
|
||||||
|
export GTK_EXE_PREFIX="$bundle_res"
|
||||||
|
export GTK_PATH="$bundle_res"
|
||||||
|
|
||||||
|
export GTK2_RC_FILES="$bundle_etc/gtk-2.0/gtkrc"
|
||||||
|
export GTK_IM_MODULE_FILE="$bundle_etc/gtk-2.0/gtk.immodules"
|
||||||
|
export GDK_PIXBUF_MODULE_FILE="$bundle_etc/gtk-2.0/gdk-pixbuf.loaders"
|
||||||
|
export PANGO_LIBDIR="$bundle_lib"
|
||||||
|
export PANGO_SYSCONFDIR="$bundle_etc"
|
||||||
|
|
||||||
|
export OPENSSL_CONF="/System/Library/OpenSSL/openssl.cnf"
|
||||||
|
|
||||||
|
export HEXCHAT_LIBDIR="$bundle_lib/hexchat/plugins"
|
||||||
|
|
||||||
|
APP=name
|
||||||
|
I18NDIR="$bundle_data/locale"
|
||||||
|
# Set the locale-related variables appropriately:
|
||||||
|
unset LANG LC_MESSAGES LC_MONETARY LC_COLLATE
|
||||||
|
|
||||||
|
# Has a language ordering been set?
|
||||||
|
# If so, set LC_MESSAGES and LANG accordingly; otherwise skip it.
|
||||||
|
# First step uses sed to clean off the quotes and commas, to change - to _, and change the names for the chinese scripts from "Hans" to CN and "Hant" to TW.
|
||||||
|
APPLELANGUAGES=`defaults read .GlobalPreferences AppleLanguages | sed -En -e 's/\-/_/' -e 's/Hant/TW/' -e 's/Hans/CN/' -e 's/[[:space:]]*\"?([[:alnum:]_]+)\"?,?/\1/p' `
|
||||||
|
if test "$APPLELANGUAGES"; then
|
||||||
|
# A language ordering exists.
|
||||||
|
# Test, item per item, to see whether there is an corresponding locale.
|
||||||
|
for L in $APPLELANGUAGES; do
|
||||||
|
#test for exact matches:
|
||||||
|
if test -f "$I18NDIR/${L}/LC_MESSAGES/$APP.mo"; then
|
||||||
|
export LANG=$L
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
#This is a special case, because often the original strings are in US
|
||||||
|
#English and there is no translation file.
|
||||||
|
if test "x$L" == "xen_US"; then
|
||||||
|
export LANG=$L
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
#OK, now test for just the first two letters:
|
||||||
|
if test -f "$I18NDIR/${L:0:2}/LC_MESSAGES/$APP.mo"; then
|
||||||
|
export LANG=${L:0:2}
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
#Same thing, but checking for any english variant.
|
||||||
|
if test "x${L:0:2}" == "xen"; then
|
||||||
|
export LANG=$L
|
||||||
|
break
|
||||||
|
fi;
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
unset APPLELANGUAGES L
|
||||||
|
|
||||||
|
# If we didn't get a language from the language list, try the Collation preference, in case it's the only setting that exists.
|
||||||
|
APPLECOLLATION=`defaults read .GlobalPreferences AppleCollationOrder`
|
||||||
|
if test -z ${LANG} -a -n $APPLECOLLATION; then
|
||||||
|
if test -f "$I18NDIR/${APPLECOLLATION:0:2}/LC_MESSAGES/$APP.mo"; then
|
||||||
|
export LANG=${APPLECOLLATION:0:2}
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if test ! -z $APPLECOLLATION; then
|
||||||
|
export LC_COLLATE=$APPLECOLLATION
|
||||||
|
fi
|
||||||
|
unset APPLECOLLATION
|
||||||
|
|
||||||
|
# Continue by attempting to find the Locale preference.
|
||||||
|
APPLELOCALE=`defaults read .GlobalPreferences AppleLocale`
|
||||||
|
|
||||||
|
if test -f "$I18NDIR/${APPLELOCALE:0:5}/LC_MESSAGES/$APP.mo"; then
|
||||||
|
if test -z $LANG; then
|
||||||
|
export LANG="${APPLELOCALE:0:5}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
elif test -z $LANG -a -f "$I18NDIR/${APPLELOCALE:0:2}/LC_MESSAGES/$APP.mo"; then
|
||||||
|
export LANG="${APPLELOCALE:0:2}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
#Next we need to set LC_MESSAGES. If at all possilbe, we want a full
|
||||||
|
#5-character locale to avoid the "Locale not supported by C library"
|
||||||
|
#warning from Gtk -- even though Gtk will translate with a
|
||||||
|
#two-character code.
|
||||||
|
if test -n $LANG; then
|
||||||
|
#If the language code matches the applelocale, then that's the message
|
||||||
|
#locale; otherwise, if it's longer than two characters, then it's
|
||||||
|
#probably a good message locale and we'll go with it.
|
||||||
|
if test $LANG == ${APPLELOCALE:0:5} -o $LANG != ${LANG:0:2}; then
|
||||||
|
export LC_MESSAGES=$LANG
|
||||||
|
#Next try if the Applelocale is longer than 2 chars and the language
|
||||||
|
#bit matches $LANG
|
||||||
|
elif test $LANG == ${APPLELOCALE:0:2} -a $APPLELOCALE > ${APPLELOCALE:0:2}; then
|
||||||
|
export LC_MESSAGES=${APPLELOCALE:0:5}
|
||||||
|
#Fail. Get a list of the locales in $PREFIX/share/locale that match
|
||||||
|
#our two letter language code and pick the first one, special casing
|
||||||
|
#english to set en_US
|
||||||
|
elif test $LANG == "en"; then
|
||||||
|
export LC_MESSAGES="en_US"
|
||||||
|
else
|
||||||
|
LOC=`find $PREFIX/share/locale -name $LANG???`
|
||||||
|
for L in $LOC; do
|
||||||
|
export LC_MESSAGES=$L
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
#All efforts have failed, so default to US english
|
||||||
|
export LANG="en_US"
|
||||||
|
export LC_MESSAGES="en_US"
|
||||||
|
fi
|
||||||
|
CURRENCY=`echo $APPLELOCALE | sed -En 's/.*currency=([[:alpha:]]+).*/\1/p'`
|
||||||
|
if test "x$CURRENCY" != "x"; then
|
||||||
|
#The user has set a special currency. Gtk doesn't install LC_MONETARY files, but Apple does in /usr/share/locale, so we're going to look there for a locale to set LC_CURRENCY to.
|
||||||
|
if test -f /usr/local/share/$LC_MESSAGES/LC_MONETARY; then
|
||||||
|
if test -a `cat /usr/local/share/$LC_MESSAGES/LC_MONETARY` == $CURRENCY; then
|
||||||
|
export LC_MONETARY=$LC_MESSAGES
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if test -z "$LC_MONETARY"; then
|
||||||
|
FILES=`find /usr/share/locale -name LC_MONETARY -exec grep -H $CURRENCY {} \;`
|
||||||
|
if test -n "$FILES"; then
|
||||||
|
export LC_MONETARY=`echo $FILES | sed -En 's%/usr/share/locale/([[:alpha:]_]+)/LC_MONETARY.*%\1%p'`
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
#No currency value means that the AppleLocale governs:
|
||||||
|
if test -z "$LC_MONETARY"; then
|
||||||
|
LC_MONETARY=${APPLELOCALE:0:5}
|
||||||
|
fi
|
||||||
|
#For Gtk, which only looks at LC_ALL:
|
||||||
|
export LC_ALL=$LC_MESSAGES
|
||||||
|
|
||||||
|
unset APPLELOCALE FILES LOC
|
||||||
|
|
||||||
|
if test -f "$bundle_lib/charset.alias"; then
|
||||||
|
export CHARSETALIASDIR="$bundle_lib"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Extra arguments can be added in environment.sh.
|
||||||
|
EXTRA_ARGS=
|
||||||
|
if test -f "$bundle_res/environment.sh"; then
|
||||||
|
source "$bundle_res/environment.sh"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Strip out the argument added by the OS.
|
||||||
|
if /bin/expr "x$1" : '^x-psn_' > /dev/null; then
|
||||||
|
shift 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
$EXEC "$bundle_contents/MacOS/$name-bin" "$@" $EXTRA_ARGS
|
11
osx/makebundle.sh
Executable file
@@ -0,0 +1,11 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
rm -rf HexChat.app
|
||||||
|
rm -f *.app.zip
|
||||||
|
|
||||||
|
python $HOME/.local/bin/gtk-mac-bundler hexchat.bundle
|
||||||
|
|
||||||
|
echo "Compressing bundle"
|
||||||
|
#hdiutil create -format UDBZ -srcdir HexChat.app -quiet HexChat-2.9.6.1-$(git rev-parse --short master).dmg
|
||||||
|
zip -9rXq ./HexChat-$(git describe --tags).app.zip ./HexChat.app
|
||||||
|
|
@@ -1,38 +0,0 @@
|
|||||||
# Makefile stub for creating standalone plugin distributions.
|
|
||||||
|
|
||||||
plugin_dist: pg_dist pg_dist/config.status
|
|
||||||
pgi=`cd $(srcdir)/.. && pwd`; cd pg_dist; \
|
|
||||||
$(MAKE) $(AM_MAKEFLAGS) PLUGIN_INCLUDES=-I$$pgi distcheck dist
|
|
||||||
|
|
||||||
pg_dist: pg_distdir pg_dist/configure.in pg_dist/install-sh
|
|
||||||
cd pg_dist \
|
|
||||||
&& libtoolize --copy --force --automake \
|
|
||||||
&& automake --copy --add-missing --foreign \
|
|
||||||
&& autoconf -l ../$(top_srcdir)
|
|
||||||
|
|
||||||
pg_distdir: $(DISTFILES)
|
|
||||||
test -d pg_dist || mkdir pg_dist
|
|
||||||
for dfile in $(DISTFILES); do \
|
|
||||||
test -f $$dfile && cp $$dfile pg_dist \
|
|
||||||
|| test -f $(srcdir)/$$dfile && cp $(srcdir)/$$dfile pg_dist; done
|
|
||||||
sed '/Make.plugin/d' < $(srcdir)/Makefile.am > pg_dist/Makefile.am
|
|
||||||
|
|
||||||
pg_dist/configure.in: $(srcdir)/../plugin-conf.in
|
|
||||||
rm -f pg_dist/configure.in
|
|
||||||
test -f $(srcdir)/config.stub \
|
|
||||||
&& cat $(srcdir)/config.stub > pg_dist/configure.in || true
|
|
||||||
cat $(srcdir)/../plugin-conf.in | \
|
|
||||||
sed 's%@PLUGIN_VERSION@%$(PLUGIN_VERSION)%; \
|
|
||||||
s%@PLUGIN@%$(PLUGIN)%' >> pg_dist/configure.in
|
|
||||||
|
|
||||||
pg_dist/install-sh: pg_distdir
|
|
||||||
cp $(top_srcdir)/install-sh pg_dist
|
|
||||||
|
|
||||||
pg_dist/config.status: pg_dist/configure
|
|
||||||
cd pg_dist \
|
|
||||||
&& test -f config.status && $(SHELL) ./config.status --recheck \
|
|
||||||
|| $(SHELL) ./configure --enable-maintainer-mode
|
|
||||||
|
|
||||||
DISTCLEANFILES = pg_dist/* pg_dist
|
|
||||||
|
|
||||||
#
|
|
@@ -1,39 +0,0 @@
|
|||||||
# temp. solution while mailcheck & xdcc arn't in SUBDIRS
|
|
||||||
EXTRA_DIST = Make.plugin plugin-conf.in xdcc/xdcc.c xdcc/Makefile.am
|
|
||||||
|
|
||||||
# noinst_HEADERS = hexchat-plugin.h
|
|
||||||
|
|
||||||
if DO_PYTHON
|
|
||||||
pythondir = python
|
|
||||||
endif
|
|
||||||
|
|
||||||
if DO_PERL
|
|
||||||
perldir = perl
|
|
||||||
endif
|
|
||||||
|
|
||||||
if DO_TCL
|
|
||||||
tcldir = tcl
|
|
||||||
endif
|
|
||||||
|
|
||||||
#if DO_SASL
|
|
||||||
#sasldir = sasl
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if DO_DOAT
|
|
||||||
doatdir = doat
|
|
||||||
endif
|
|
||||||
|
|
||||||
if DO_FISHLIM
|
|
||||||
fishlimdir = fishlim
|
|
||||||
endif
|
|
||||||
|
|
||||||
if DO_CHECKSUM
|
|
||||||
checksumdir = checksum
|
|
||||||
endif
|
|
||||||
|
|
||||||
if DO_SYSINFO
|
|
||||||
sysinfodir = sysinfo
|
|
||||||
endif
|
|
||||||
|
|
||||||
#SUBDIRS = . $(pythondir) $(perldir) mailcheck xdcc
|
|
||||||
SUBDIRS = . $(pythondir) $(perldir) $(tcldir) $(doatdir) $(fishlimdir) $(checksumdir) $(sysinfodir)
|
|
@@ -1,7 +0,0 @@
|
|||||||
libdir = $(hexchatlibdir)/plugins
|
|
||||||
|
|
||||||
lib_LTLIBRARIES = checksum.la
|
|
||||||
checksum_la_SOURCES = checksum.c
|
|
||||||
checksum_la_LDFLAGS = -avoid-version -module
|
|
||||||
checksum_la_LIBADD =
|
|
||||||
AM_CPPFLAGS = $(COMMON_CFLAGS) -I$(srcdir)/../../src/common
|
|
@@ -1,109 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<ItemGroup Label="ProjectConfigurations">
|
|
||||||
<ProjectConfiguration Include="Release|Win32">
|
|
||||||
<Configuration>Release</Configuration>
|
|
||||||
<Platform>Win32</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
<ProjectConfiguration Include="Release|x64">
|
|
||||||
<Configuration>Release</Configuration>
|
|
||||||
<Platform>x64</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
</ItemGroup>
|
|
||||||
<PropertyGroup Label="Globals">
|
|
||||||
<ProjectGuid>{5EF7F47D-D09C-43C4-BF64-B28B11A0FF91}</ProjectGuid>
|
|
||||||
<Keyword>Win32Proj</Keyword>
|
|
||||||
<RootNamespace>checksum</RootNamespace>
|
|
||||||
<ProjectName>checksum</ProjectName>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
||||||
<CharacterSet>MultiByte</CharacterSet>
|
|
||||||
<PlatformToolset>WDK7</PlatformToolset>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
||||||
<CharacterSet>MultiByte</CharacterSet>
|
|
||||||
<PlatformToolset>WDK7</PlatformToolset>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
|
||||||
<ImportGroup Label="ExtensionSettings">
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
<Import Project="..\..\win32\hexchat-xp.props" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
<Import Project="..\..\win32\hexchat-xp.props" />
|
|
||||||
</ImportGroup>
|
|
||||||
<PropertyGroup Label="UserMacros" />
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<LinkIncremental>false</LinkIncremental>
|
|
||||||
<TargetName>hcchecksum</TargetName>
|
|
||||||
<OutDir>$(HexChatBin)</OutDir>
|
|
||||||
<IntDir>$(HexChatObj)$(ProjectName)\</IntDir>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
|
||||||
<LinkIncremental>false</LinkIncremental>
|
|
||||||
<TargetName>hcchecksum</TargetName>
|
|
||||||
<OutDir>$(HexChatBin)</OutDir>
|
|
||||||
<IntDir>$(HexChatObj)$(ProjectName)\</IntDir>
|
|
||||||
</PropertyGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<ClCompile>
|
|
||||||
<PrecompiledHeader>
|
|
||||||
</PrecompiledHeader>
|
|
||||||
<Optimization>MaxSpeed</Optimization>
|
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
|
||||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;CHECKSUM_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<AdditionalIncludeDirectories>$(DepsRoot)\include;$(Glib);..\..\src\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
||||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<SubSystem>Windows</SubSystem>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
|
||||||
<ModuleDefinitionFile>checksum.def</ModuleDefinitionFile>
|
|
||||||
<AdditionalLibraryDirectories>$(DepsRoot)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
|
||||||
<AdditionalDependencies>$(DepLibs);%(AdditionalDependencies)</AdditionalDependencies>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
|
||||||
<ClCompile>
|
|
||||||
<PrecompiledHeader>
|
|
||||||
</PrecompiledHeader>
|
|
||||||
<Optimization>MaxSpeed</Optimization>
|
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
|
||||||
<PreprocessorDefinitions>WIN32;_WIN64;_AMD64_;NDEBUG;_WINDOWS;_USRDLL;CHECKSUM_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<AdditionalIncludeDirectories>$(DepsRoot)\include;$(Glib);..\..\src\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
||||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<SubSystem>Windows</SubSystem>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
|
||||||
<ModuleDefinitionFile>checksum.def</ModuleDefinitionFile>
|
|
||||||
<AdditionalLibraryDirectories>$(DepsRoot)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
|
||||||
<AdditionalDependencies>$(DepLibs);%(AdditionalDependencies)</AdditionalDependencies>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClCompile Include="checksum.c" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<None Include="checksum.def" />
|
|
||||||
</ItemGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
|
||||||
<ImportGroup Label="ExtensionTargets">
|
|
||||||
</ImportGroup>
|
|
||||||
</Project>
|
|
@@ -1,23 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<ItemGroup>
|
|
||||||
<Filter Include="Source Files">
|
|
||||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
|
||||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
|
||||||
</Filter>
|
|
||||||
<Filter Include="Resource Files">
|
|
||||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
|
||||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
|
||||||
</Filter>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClCompile Include="checksum.c">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<None Include="checksum.def">
|
|
||||||
<Filter>Resource Files</Filter>
|
|
||||||
</None>
|
|
||||||
</ItemGroup>
|
|
||||||
</Project>
|
|
@@ -20,208 +20,194 @@
|
|||||||
* THE SOFTWARE.
|
* THE SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <stdio.h>
|
#include "config.h"
|
||||||
#include <string.h>
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <malloc.h>
|
|
||||||
#include <errno.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <openssl/sha.h>
|
|
||||||
#include <glib.h>
|
#include <glib.h>
|
||||||
|
#include <glib/gstdio.h>
|
||||||
#ifdef WIN32
|
#include <gio/gio.h>
|
||||||
#ifndef snprintf
|
|
||||||
#define snprintf _snprintf
|
|
||||||
#endif
|
|
||||||
#ifndef stat64
|
|
||||||
#define stat64 _stat64
|
|
||||||
#endif
|
|
||||||
#else
|
|
||||||
/* for INT_MAX */
|
|
||||||
#include <limits.h>
|
|
||||||
#define __USE_LARGEFILE64
|
|
||||||
#define _LARGEFILE_SOURCE
|
|
||||||
#define _LARGEFILE64_SOURCE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <sys/stat.h>
|
|
||||||
|
|
||||||
#include "hexchat-plugin.h"
|
#include "hexchat-plugin.h"
|
||||||
|
|
||||||
#define BUFSIZE 32768
|
#define BUFSIZE 32768
|
||||||
#define DEFAULT_LIMIT 256 /* default size is 256 MiB */
|
#define DEFAULT_LIMIT 256 /* default size is 256 MiB */
|
||||||
|
#define SHA256_DIGEST_LENGTH 32
|
||||||
|
#define SHA256_BUFFER_LENGTH 65
|
||||||
|
|
||||||
static hexchat_plugin *ph; /* plugin handle */
|
static hexchat_plugin *ph; /* plugin handle */
|
||||||
static char name[] = "Checksum";
|
static char name[] = "Checksum";
|
||||||
static char desc[] = "Calculate checksum for DCC file transfers";
|
static char desc[] = "Calculate checksum for DCC file transfers";
|
||||||
static char version[] = "3.1";
|
static char version[] = "3.1";
|
||||||
|
|
||||||
/* Use of OpenSSL SHA256 interface: http://adamlamers.com/?p=5 */
|
|
||||||
static void
|
static void
|
||||||
sha256_hash_string (unsigned char hash[SHA256_DIGEST_LENGTH], char outputBuffer[65])
|
set_limit (char *size)
|
||||||
{
|
{
|
||||||
int i;
|
int limit = atoi (size);
|
||||||
for (i = 0; i < SHA256_DIGEST_LENGTH; i++)
|
|
||||||
|
if (limit > 0 && limit < INT_MAX)
|
||||||
{
|
{
|
||||||
sprintf (outputBuffer + (i * 2), "%02x", hash[i]);
|
if (hexchat_pluginpref_set_int (ph, "limit", limit))
|
||||||
}
|
hexchat_printf (ph, "Checksum: File size limit has successfully been set to: %d MiB\n", limit);
|
||||||
outputBuffer[64] = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
static void
|
|
||||||
sha256 (char *string, char outputBuffer[65])
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
unsigned char hash[SHA256_DIGEST_LENGTH];
|
|
||||||
SHA256_CTX sha256;
|
|
||||||
|
|
||||||
SHA256_Init (&sha256);
|
|
||||||
SHA256_Update (&sha256, string, strlen (string));
|
|
||||||
SHA256_Final (hash, &sha256);
|
|
||||||
|
|
||||||
for (i = 0; i < SHA256_DIGEST_LENGTH; i++)
|
|
||||||
{
|
|
||||||
sprintf (outputBuffer + (i * 2), "%02x", hash[i]);
|
|
||||||
}
|
|
||||||
outputBuffer[64] = 0;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static int
|
|
||||||
sha256_file (char *path, char outputBuffer[65])
|
|
||||||
{
|
|
||||||
int bytesRead;
|
|
||||||
unsigned char *buffer;
|
|
||||||
unsigned char hash[SHA256_DIGEST_LENGTH];
|
|
||||||
SHA256_CTX sha256;
|
|
||||||
|
|
||||||
FILE *file = fopen (path, "rb");
|
|
||||||
if (!file)
|
|
||||||
{
|
|
||||||
return -534;
|
|
||||||
}
|
|
||||||
|
|
||||||
SHA256_Init (&sha256);
|
|
||||||
buffer = malloc (BUFSIZE);
|
|
||||||
bytesRead = 0;
|
|
||||||
|
|
||||||
if (!buffer)
|
|
||||||
{
|
|
||||||
return ENOMEM;
|
|
||||||
}
|
|
||||||
|
|
||||||
while ((bytesRead = fread (buffer, 1, BUFSIZE, file)))
|
|
||||||
{
|
|
||||||
SHA256_Update (&sha256, buffer, bytesRead);
|
|
||||||
}
|
|
||||||
|
|
||||||
SHA256_Final (hash, &sha256);
|
|
||||||
sha256_hash_string (hash, outputBuffer);
|
|
||||||
|
|
||||||
fclose (file);
|
|
||||||
free (buffer);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
set_limit (char* size)
|
|
||||||
{
|
|
||||||
int buffer = atoi (size);
|
|
||||||
|
|
||||||
if (buffer > 0 && buffer < INT_MAX)
|
|
||||||
{
|
|
||||||
if (hexchat_pluginpref_set_int (ph, "limit", buffer))
|
|
||||||
{
|
|
||||||
hexchat_printf (ph, "File size limit has successfully been set to: %d MiB\n", buffer);
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
hexchat_printf (ph, "Checksum: File access error while saving!\n");
|
||||||
hexchat_printf (ph, "File access error while saving!\n");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
hexchat_printf (ph, "Invalid input!\n");
|
hexchat_printf (ph, "Checksum: Invalid input!\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
get_limit ()
|
get_limit (void)
|
||||||
{
|
{
|
||||||
int size = hexchat_pluginpref_get_int (ph, "limit");
|
int size = hexchat_pluginpref_get_int (ph, "limit");
|
||||||
|
|
||||||
if (size <= -1 || size >= INT_MAX)
|
if (size <= 0 || size >= INT_MAX)
|
||||||
{
|
|
||||||
return DEFAULT_LIMIT;
|
return DEFAULT_LIMIT;
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
|
||||||
return size;
|
return size;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static gboolean
|
||||||
print_limit ()
|
check_limit (GFile *file)
|
||||||
{
|
{
|
||||||
hexchat_printf (ph, "File size limit for checksums: %d MiB", get_limit ());
|
GFileInfo *file_info;
|
||||||
|
goffset file_size;
|
||||||
|
|
||||||
|
file_info = g_file_query_info (file, G_FILE_ATTRIBUTE_STANDARD_SIZE, G_FILE_QUERY_INFO_NONE,
|
||||||
|
NULL, NULL);
|
||||||
|
|
||||||
|
if (!file_info)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
file_size = g_file_info_get_size (file_info);
|
||||||
|
g_object_unref (file_info);
|
||||||
|
|
||||||
|
if (file_size > get_limit () * 1048576ll)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
sha256_from_stream (GFileInputStream *file_stream, char out_buf[])
|
||||||
|
{
|
||||||
|
GChecksum *checksum;
|
||||||
|
gssize bytes_read;
|
||||||
|
guint8 digest[SHA256_DIGEST_LENGTH];
|
||||||
|
gsize digest_len = sizeof(digest);
|
||||||
|
guchar buffer[BUFSIZE];
|
||||||
|
gsize i;
|
||||||
|
|
||||||
|
checksum = g_checksum_new (G_CHECKSUM_SHA256);
|
||||||
|
|
||||||
|
while ((bytes_read = g_input_stream_read (G_INPUT_STREAM (file_stream), buffer, sizeof (buffer), NULL, NULL)))
|
||||||
|
{
|
||||||
|
if (bytes_read == -1)
|
||||||
|
{
|
||||||
|
g_checksum_free (checksum);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
g_checksum_update (checksum, buffer, bytes_read);
|
||||||
|
}
|
||||||
|
|
||||||
|
g_checksum_get_digest (checksum, digest, &digest_len);
|
||||||
|
g_checksum_free (checksum);
|
||||||
|
|
||||||
|
for (i = 0; i < SHA256_DIGEST_LENGTH; i++)
|
||||||
|
{
|
||||||
|
/* out_buf will be exactly SHA256_BUFFER_LENGTH including null */
|
||||||
|
g_sprintf (out_buf + (i * 2), "%02x", digest[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
sha256_from_file (char *filename, char out_buf[])
|
||||||
|
{
|
||||||
|
GFileInputStream *file_stream;
|
||||||
|
char *filename_fs;
|
||||||
|
GFile *file;
|
||||||
|
|
||||||
|
filename_fs = g_filename_from_utf8 (filename, -1, NULL, NULL, NULL);
|
||||||
|
if (!filename_fs)
|
||||||
|
{
|
||||||
|
hexchat_printf (ph, "Checksum: Invalid filename (%s)\n", filename);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
file = g_file_new_for_path (filename_fs);
|
||||||
|
g_free (filename_fs);
|
||||||
|
if (!file)
|
||||||
|
{
|
||||||
|
hexchat_printf (ph, "Checksum: Failed to open %s\n", filename);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!check_limit (file))
|
||||||
|
{
|
||||||
|
hexchat_printf (ph, "Checksum: %s is larger than size limit. You can increase it with /CHECKSUM SET.\n", filename);
|
||||||
|
g_object_unref (file);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
file_stream = g_file_read (file, NULL, NULL);
|
||||||
|
if (!file_stream)
|
||||||
|
{
|
||||||
|
hexchat_printf (ph, "Checksum: Failed to read file %s\n", filename);
|
||||||
|
g_object_unref (file);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!sha256_from_stream (file_stream, out_buf))
|
||||||
|
{
|
||||||
|
hexchat_printf (ph, "Checksum: Failed to generate checksum for %s\n", filename);
|
||||||
|
g_object_unref (file_stream);
|
||||||
|
g_object_unref (file);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
g_object_unref (file_stream);
|
||||||
|
g_object_unref (file);
|
||||||
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
dccrecv_cb (char *word[], void *userdata)
|
dccrecv_cb (char *word[], void *userdata)
|
||||||
{
|
{
|
||||||
int result;
|
const char *dcc_completed_dir;
|
||||||
struct stat64 buffer; /* buffer for storing file info */
|
char *filename, checksum[SHA256_BUFFER_LENGTH];
|
||||||
char sum[65]; /* buffer for checksum */
|
|
||||||
|
|
||||||
result = stat64 (word[2], &buffer);
|
/* Print in the privmsg tab of the sender */
|
||||||
if (result == 0) /* stat returns 0 on success */
|
hexchat_set_context (ph, hexchat_find_context (ph, NULL, word[3]));
|
||||||
{
|
|
||||||
if (buffer.st_size <= (unsigned long long) get_limit () * 1048576)
|
if (hexchat_get_prefs (ph, "dcc_completed_dir", &dcc_completed_dir, NULL) == 1 && dcc_completed_dir[0] != '\0')
|
||||||
{
|
filename = g_build_filename (dcc_completed_dir, word[1], NULL);
|
||||||
sha256_file (word[2], sum); /* word[2] is the full filename */
|
|
||||||
/* try to print the checksum in the privmsg tab of the sender */
|
|
||||||
hexchat_set_context (ph, hexchat_find_context (ph, NULL, word[3]));
|
|
||||||
hexchat_printf (ph, "SHA-256 checksum for %s (local): %s\n", word[1], sum);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
hexchat_set_context (ph, hexchat_find_context (ph, NULL, word[3]));
|
|
||||||
hexchat_printf (ph, "SHA-256 checksum for %s (local): (size limit reached, no checksum calculated, you can increase it with /CHECKSUM INC)\n", word[1]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
|
filename = g_strdup (word[2]);
|
||||||
|
|
||||||
|
if (sha256_from_file (filename, checksum))
|
||||||
{
|
{
|
||||||
hexchat_printf (ph, "File access error!\n");
|
hexchat_printf (ph, "SHA-256 checksum for %s (local): %s\n", word[1], checksum);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
g_free (filename);
|
||||||
return HEXCHAT_EAT_NONE;
|
return HEXCHAT_EAT_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
dccoffer_cb (char *word[], void *userdata)
|
dccoffer_cb (char *word[], void *userdata)
|
||||||
{
|
{
|
||||||
int result;
|
char checksum[SHA256_BUFFER_LENGTH];
|
||||||
struct stat64 buffer; /* buffer for storing file info */
|
|
||||||
char sum[65]; /* buffer for checksum */
|
|
||||||
|
|
||||||
result = stat64 (word[3], &buffer);
|
/* Print in the privmsg tab of the receiver */
|
||||||
if (result == 0) /* stat returns 0 on success */
|
hexchat_set_context (ph, hexchat_find_context (ph, NULL, word[3]));
|
||||||
|
|
||||||
|
if (sha256_from_file (word[3], checksum))
|
||||||
{
|
{
|
||||||
if (buffer.st_size <= (unsigned long long) get_limit () * 1048576)
|
hexchat_commandf (ph, "quote PRIVMSG %s :SHA-256 checksum for %s (remote): %s", word[2], word[1], checksum);
|
||||||
{
|
|
||||||
sha256_file (word[3], sum); /* word[3] is the full filename */
|
|
||||||
hexchat_commandf (ph, "quote PRIVMSG %s :SHA-256 checksum for %s (remote): %s", word[2], word[1], sum);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
hexchat_set_context (ph, hexchat_find_context (ph, NULL, word[3]));
|
|
||||||
hexchat_printf (ph, "quote PRIVMSG %s :SHA-256 checksum for %s (remote): (size limit reached, no checksum calculated)", word[2], word[1]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
hexchat_printf (ph, "File access error!\n");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return HEXCHAT_EAT_NONE;
|
return HEXCHAT_EAT_NONE;
|
||||||
@@ -232,7 +218,7 @@ checksum (char *word[], char *word_eol[], void *userdata)
|
|||||||
{
|
{
|
||||||
if (!g_ascii_strcasecmp ("GET", word[2]))
|
if (!g_ascii_strcasecmp ("GET", word[2]))
|
||||||
{
|
{
|
||||||
print_limit ();
|
hexchat_printf (ph, "File size limit for checksums: %d MiB", get_limit ());
|
||||||
}
|
}
|
||||||
else if (!g_ascii_strcasecmp ("SET", word[2]))
|
else if (!g_ascii_strcasecmp ("SET", word[2]))
|
||||||
{
|
{
|
||||||
@@ -240,12 +226,12 @@ checksum (char *word[], char *word_eol[], void *userdata)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
hexchat_printf (ph, "Usage: /CHECKSUM GET|INC|DEC\n");
|
hexchat_printf (ph, "Usage: /CHECKSUM GET|SET\n");
|
||||||
hexchat_printf (ph, " GET - print the maximum file size (in MiB) to be hashed\n");
|
hexchat_printf (ph, " GET - print the maximum file size (in MiB) to be hashed\n");
|
||||||
hexchat_printf (ph, " SET <filesize> - set the maximum file size (in MiB) to be hashed\n");
|
hexchat_printf (ph, " SET <filesize> - set the maximum file size (in MiB) to be hashed\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
return HEXCHAT_EAT_NONE;
|
return HEXCHAT_EAT_ALL;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -263,7 +249,7 @@ hexchat_plugin_init (hexchat_plugin *plugin_handle, char **plugin_name, char **p
|
|||||||
hexchat_pluginpref_set_int (ph, "limit", DEFAULT_LIMIT);
|
hexchat_pluginpref_set_int (ph, "limit", DEFAULT_LIMIT);
|
||||||
}
|
}
|
||||||
|
|
||||||
hexchat_hook_command (ph, "CHECKSUM", HEXCHAT_PRI_NORM, checksum, "Usage: /CHECKSUM GET|SET", 0);
|
hexchat_hook_command (ph, "CHECKSUM", HEXCHAT_PRI_NORM, checksum, "Usage: /CHECKSUM GET|SET", NULL);
|
||||||
hexchat_hook_print (ph, "DCC RECV Complete", HEXCHAT_PRI_NORM, dccrecv_cb, NULL);
|
hexchat_hook_print (ph, "DCC RECV Complete", HEXCHAT_PRI_NORM, dccrecv_cb, NULL);
|
||||||
hexchat_hook_print (ph, "DCC Offer", HEXCHAT_PRI_NORM, dccoffer_cb, NULL);
|
hexchat_hook_print (ph, "DCC Offer", HEXCHAT_PRI_NORM, dccoffer_cb, NULL);
|
||||||
|
|
||||||
|
@@ -1,5 +1,9 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<PropertyGroup Label="Configuration">
|
||||||
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
|
</PropertyGroup>
|
||||||
<ItemGroup Label="ProjectConfigurations">
|
<ItemGroup Label="ProjectConfigurations">
|
||||||
<ProjectConfiguration Include="Release|Win32">
|
<ProjectConfiguration Include="Release|Win32">
|
||||||
<Configuration>Release</Configuration>
|
<Configuration>Release</Configuration>
|
||||||
@@ -16,58 +20,19 @@
|
|||||||
<RootNamespace>checksum</RootNamespace>
|
<RootNamespace>checksum</RootNamespace>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
||||||
<CharacterSet>MultiByte</CharacterSet>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
||||||
<CharacterSet>MultiByte</CharacterSet>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
<ImportGroup Label="ExtensionSettings">
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
</ImportGroup>
|
<Import Project="..\..\win32\hexchat.props" />
|
||||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
<PropertyGroup>
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
<Import Project="..\..\win32\hexchat.props" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
<Import Project="..\..\win32\hexchat.props" />
|
|
||||||
</ImportGroup>
|
|
||||||
<PropertyGroup Label="UserMacros" />
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<LinkIncremental>false</LinkIncremental>
|
|
||||||
<TargetName>hcchecksum</TargetName>
|
<TargetName>hcchecksum</TargetName>
|
||||||
<OutDir>$(HexChatBin)</OutDir>
|
<OutDir>$(HexChatRel)plugins\</OutDir>
|
||||||
<IntDir>$(HexChatObj)$(ProjectName)\</IntDir>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
|
||||||
<LinkIncremental>false</LinkIncremental>
|
|
||||||
<TargetName>hcchecksum</TargetName>
|
|
||||||
<OutDir>$(HexChatBin)</OutDir>
|
|
||||||
<IntDir>$(HexChatObj)$(ProjectName)\</IntDir>
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
<ClCompile>
|
<ClCompile>
|
||||||
<PrecompiledHeader>
|
|
||||||
</PrecompiledHeader>
|
|
||||||
<Optimization>MaxSpeed</Optimization>
|
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
|
||||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;CHECKSUM_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;CHECKSUM_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<AdditionalIncludeDirectories>$(DepsRoot)\include;$(Glib);..\..\src\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>$(DepsRoot)\include;$(Glib);..\..\src\common;$(HexChatLib);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<SubSystem>Windows</SubSystem>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
|
||||||
<ModuleDefinitionFile>checksum.def</ModuleDefinitionFile>
|
<ModuleDefinitionFile>checksum.def</ModuleDefinitionFile>
|
||||||
<AdditionalLibraryDirectories>$(DepsRoot)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
<AdditionalLibraryDirectories>$(DepsRoot)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||||
<AdditionalDependencies>$(DepLibs);%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>$(DepLibs);%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
@@ -75,20 +40,10 @@
|
|||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
<ClCompile>
|
<ClCompile>
|
||||||
<PrecompiledHeader>
|
|
||||||
</PrecompiledHeader>
|
|
||||||
<Optimization>MaxSpeed</Optimization>
|
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
|
||||||
<PreprocessorDefinitions>WIN32;_WIN64;_AMD64_;NDEBUG;_WINDOWS;_USRDLL;CHECKSUM_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;_WIN64;_AMD64_;NDEBUG;_WINDOWS;_USRDLL;CHECKSUM_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<AdditionalIncludeDirectories>$(DepsRoot)\include;$(Glib);..\..\src\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>$(DepsRoot)\include;$(Glib);..\..\src\common;$(HexChatLib);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<SubSystem>Windows</SubSystem>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
|
||||||
<ModuleDefinitionFile>checksum.def</ModuleDefinitionFile>
|
<ModuleDefinitionFile>checksum.def</ModuleDefinitionFile>
|
||||||
<AdditionalLibraryDirectories>$(DepsRoot)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
<AdditionalLibraryDirectories>$(DepsRoot)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||||
<AdditionalDependencies>$(DepLibs);%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>$(DepLibs);%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
@@ -101,6 +56,4 @@
|
|||||||
<None Include="checksum.def" />
|
<None Include="checksum.def" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
<ImportGroup Label="ExtensionTargets">
|
|
||||||
</ImportGroup>
|
|
||||||
</Project>
|
</Project>
|
6
plugins/checksum/meson.build
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
shared_module('checksum', 'checksum.c',
|
||||||
|
dependencies: [libgio_dep, hexchat_plugin_dep],
|
||||||
|
install: true,
|
||||||
|
install_dir: plugindir,
|
||||||
|
name_prefix: '',
|
||||||
|
)
|
@@ -1,113 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<ItemGroup Label="ProjectConfigurations">
|
|
||||||
<ProjectConfiguration Include="Release|Win32">
|
|
||||||
<Configuration>Release</Configuration>
|
|
||||||
<Platform>Win32</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
<ProjectConfiguration Include="Release|x64">
|
|
||||||
<Configuration>Release</Configuration>
|
|
||||||
<Platform>x64</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
</ItemGroup>
|
|
||||||
<PropertyGroup Label="Globals">
|
|
||||||
<ProjectGuid>{3786FA8C-3E76-45E3-984E-FCCFF44729C9}</ProjectGuid>
|
|
||||||
<Keyword>Win32Proj</Keyword>
|
|
||||||
<RootNamespace>dns</RootNamespace>
|
|
||||||
<ProjectName>dns</ProjectName>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
||||||
<CharacterSet>MultiByte</CharacterSet>
|
|
||||||
<PlatformToolset>WDK7</PlatformToolset>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
||||||
<CharacterSet>MultiByte</CharacterSet>
|
|
||||||
<PlatformToolset>WDK7</PlatformToolset>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
|
||||||
<ImportGroup Label="ExtensionSettings">
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
<Import Project="..\..\win32\hexchat-xp.props" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
<Import Project="..\..\win32\hexchat-xp.props" />
|
|
||||||
</ImportGroup>
|
|
||||||
<PropertyGroup Label="UserMacros" />
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<LinkIncremental>false</LinkIncremental>
|
|
||||||
<TargetName>hcdns</TargetName>
|
|
||||||
<OutDir>$(HexChatBin)</OutDir>
|
|
||||||
<IntDir>$(HexChatObj)$(ProjectName)\</IntDir>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
|
||||||
<LinkIncremental>false</LinkIncremental>
|
|
||||||
<TargetName>hcdns</TargetName>
|
|
||||||
<OutDir>$(HexChatBin)</OutDir>
|
|
||||||
<IntDir>$(HexChatObj)$(ProjectName)\</IntDir>
|
|
||||||
</PropertyGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<ClCompile>
|
|
||||||
<PrecompiledHeader>
|
|
||||||
</PrecompiledHeader>
|
|
||||||
<Optimization>MaxSpeed</Optimization>
|
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
|
||||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;DNS_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<AdditionalIncludeDirectories>..\..\src\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
||||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<SubSystem>Windows</SubSystem>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
|
||||||
<AdditionalLibraryDirectories>$(DepsRoot)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
|
||||||
<AdditionalDependencies>$(DepLibs);%(AdditionalDependencies)</AdditionalDependencies>
|
|
||||||
<ModuleDefinitionFile>dns.def</ModuleDefinitionFile>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
|
||||||
<ClCompile>
|
|
||||||
<PrecompiledHeader>
|
|
||||||
</PrecompiledHeader>
|
|
||||||
<Optimization>MaxSpeed</Optimization>
|
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
|
||||||
<PreprocessorDefinitions>WIN32;_WIN64;_AMD64_;NDEBUG;_WINDOWS;_USRDLL;DNS_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<AdditionalIncludeDirectories>..\..\src\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
||||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<SubSystem>Windows</SubSystem>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
|
||||||
<AdditionalLibraryDirectories>$(DepsRoot)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
|
||||||
<AdditionalDependencies>$(DepLibs);%(AdditionalDependencies)</AdditionalDependencies>
|
|
||||||
<ModuleDefinitionFile>dns.def</ModuleDefinitionFile>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<None Include="dns.def" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClCompile Include="dns.c" />
|
|
||||||
<ClCompile Include="thread.c" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClInclude Include="thread.h" />
|
|
||||||
</ItemGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
|
||||||
<ImportGroup Label="ExtensionTargets">
|
|
||||||
</ImportGroup>
|
|
||||||
</Project>
|
|
@@ -1,35 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<ItemGroup>
|
|
||||||
<Filter Include="Source Files">
|
|
||||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
|
||||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
|
||||||
</Filter>
|
|
||||||
<Filter Include="Header Files">
|
|
||||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
|
||||||
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
|
||||||
</Filter>
|
|
||||||
<Filter Include="Resource Files">
|
|
||||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
|
||||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
|
||||||
</Filter>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<None Include="dns.def">
|
|
||||||
<Filter>Resource Files</Filter>
|
|
||||||
</None>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClCompile Include="dns.c">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="thread.c">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClInclude Include="thread.h">
|
|
||||||
<Filter>Header Files</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
</ItemGroup>
|
|
||||||
</Project>
|
|
@@ -1,332 +0,0 @@
|
|||||||
/* HexChat Win32 DNS Plugin
|
|
||||||
* Copyright (C) 2003-2004 Peter Zelezny.
|
|
||||||
* Copyright (C) 2012 Berke Viktor.
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation; either version 2 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
|
||||||
*/
|
|
||||||
/*
|
|
||||||
* Requires MS Visual Studio and IPV6 headers to compile (run nmake).
|
|
||||||
* Compiling with gcc (mingw) will fail due to missing gai_strerror.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define DNS_VERSION "2.4"
|
|
||||||
|
|
||||||
#include <string.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <fcntl.h>
|
|
||||||
|
|
||||||
#define USE_IPV6
|
|
||||||
|
|
||||||
#ifdef WIN32
|
|
||||||
#ifdef USE_IPV6
|
|
||||||
#include <winsock2.h>
|
|
||||||
#include <ws2tcpip.h>
|
|
||||||
#else
|
|
||||||
#include <winsock2.h>
|
|
||||||
#endif
|
|
||||||
#include <io.h>
|
|
||||||
#else
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <netdb.h>
|
|
||||||
#include <sys/socket.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "hexchat-plugin.h"
|
|
||||||
#include "thread.h"
|
|
||||||
|
|
||||||
#define HELP "Usage: DNS <nickname|hostname|numerical address>\n"
|
|
||||||
#define HEAD "\0034[DNS]\017\t"
|
|
||||||
|
|
||||||
#define PIPE_READ 0
|
|
||||||
#define PIPE_WRITE 1
|
|
||||||
#define MAX_HOSTNAME 128
|
|
||||||
|
|
||||||
static hexchat_plugin *ph;
|
|
||||||
static thread *active_thread = NULL;
|
|
||||||
|
|
||||||
|
|
||||||
static int
|
|
||||||
waitline (void *source, char *buf, int bufsize)
|
|
||||||
{
|
|
||||||
int i = 0;
|
|
||||||
int len;
|
|
||||||
|
|
||||||
while(1)
|
|
||||||
{
|
|
||||||
len = 1;
|
|
||||||
/* we can't read() here, due to glib's giowin32 */
|
|
||||||
if (ph->hexchat_read_fd (ph, source, buf + i, &len) != 0)
|
|
||||||
{
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
if (buf[i] == '\n' || bufsize == i + 1)
|
|
||||||
{
|
|
||||||
buf[i] = 0;
|
|
||||||
return i;
|
|
||||||
}
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void *
|
|
||||||
thread_function (void *ud)
|
|
||||||
{
|
|
||||||
#ifdef USE_IPV6
|
|
||||||
struct addrinfo *ent;
|
|
||||||
struct addrinfo *cur;
|
|
||||||
struct addrinfo hints;
|
|
||||||
#else
|
|
||||||
struct hostent *ent;
|
|
||||||
#endif
|
|
||||||
thread *th = ud;
|
|
||||||
int fd = th->pipe_fd[PIPE_WRITE];
|
|
||||||
int ret;
|
|
||||||
char ipstring[MAX_HOSTNAME];
|
|
||||||
char reverse[MAX_HOSTNAME];
|
|
||||||
// int i;
|
|
||||||
|
|
||||||
active_thread = th;
|
|
||||||
|
|
||||||
#ifdef USE_IPV6
|
|
||||||
memset (&hints, 0, sizeof (hints));
|
|
||||||
hints.ai_family = PF_UNSPEC; /* support ipv6 and ipv4 */
|
|
||||||
hints.ai_flags = AI_CANONNAME;
|
|
||||||
// hints.ai_socktype = SOCK_STREAM;
|
|
||||||
|
|
||||||
ret = getaddrinfo (th->userdata, NULL, &hints, &ent);
|
|
||||||
if (ret != 0)
|
|
||||||
{
|
|
||||||
sprintf (ipstring, "1%d\n", ret); /* failed */
|
|
||||||
write (fd, ipstring, strlen (ipstring));
|
|
||||||
// Sleep (3000);
|
|
||||||
active_thread = NULL;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// i = 0;
|
|
||||||
cur = ent;
|
|
||||||
while (cur)
|
|
||||||
{
|
|
||||||
/* find the numeric IP number */
|
|
||||||
ipstring[0] = 0;
|
|
||||||
getnameinfo (cur->ai_addr, cur->ai_addrlen,
|
|
||||||
ipstring, sizeof (ipstring), NULL, 0, NI_NUMERICHOST);
|
|
||||||
|
|
||||||
if (cur->ai_canonname)
|
|
||||||
{
|
|
||||||
/* force reverse lookup if canonname & ipstring are the same */
|
|
||||||
if (/*i == 0 &&*/ strcmp (cur->ai_canonname, ipstring) == 0)
|
|
||||||
goto lamecode;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (cur->ai_canonname)
|
|
||||||
{
|
|
||||||
write (fd, "0", 1);
|
|
||||||
write (fd, ipstring, strlen (ipstring));
|
|
||||||
write (fd, "\n", 1);
|
|
||||||
write (fd, cur->ai_canonname, strlen (cur->ai_canonname));
|
|
||||||
} else
|
|
||||||
{
|
|
||||||
lamecode:
|
|
||||||
// ret = 1;
|
|
||||||
// if (i == 0)
|
|
||||||
{
|
|
||||||
/* reverse lookup */
|
|
||||||
reverse[0] = 0;
|
|
||||||
ret = getnameinfo (cur->ai_addr, cur->ai_addrlen,
|
|
||||||
reverse, sizeof (reverse), NULL, 0, NI_NAMEREQD);
|
|
||||||
}
|
|
||||||
|
|
||||||
write (fd, "0", 1);
|
|
||||||
write (fd, ipstring, strlen (ipstring));
|
|
||||||
|
|
||||||
write (fd, "\n", 1);
|
|
||||||
if (ret == 0)
|
|
||||||
write (fd, reverse, strlen (reverse));
|
|
||||||
}
|
|
||||||
write (fd, "\n", 1);
|
|
||||||
|
|
||||||
// i++;
|
|
||||||
cur = cur->ai_next;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* tell the parent we're done */
|
|
||||||
write (fd, "2\n", 2);
|
|
||||||
freeaddrinfo (ent);
|
|
||||||
|
|
||||||
#else
|
|
||||||
ent = gethostbyname (th->userdata);
|
|
||||||
if (ent)
|
|
||||||
{
|
|
||||||
write (fd, "0", 1);
|
|
||||||
write (fd, ent->h_name, strlen (ent->h_name));
|
|
||||||
write (fd, "\n", 1);
|
|
||||||
write (fd, ent->h_name, strlen (ent->h_name));
|
|
||||||
write (fd, "\n", 1);
|
|
||||||
write (fd, "2\n", 2);
|
|
||||||
} else
|
|
||||||
{
|
|
||||||
write (fd, "10\n", 1);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Sleep (3000);
|
|
||||||
active_thread = NULL; /* race condition, better than nothing */
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
dns_close_pipe (int fd)
|
|
||||||
{
|
|
||||||
close (fd);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* read messages comming from the child (through the pipe) */
|
|
||||||
|
|
||||||
static int
|
|
||||||
dns_read_cb (int fd, int flags, thread *th, void *source)
|
|
||||||
{
|
|
||||||
char buf[512];
|
|
||||||
char buf2[512];
|
|
||||||
|
|
||||||
while (waitline (source, buf, sizeof (buf)))
|
|
||||||
{
|
|
||||||
switch (buf[0])
|
|
||||||
{
|
|
||||||
case '0': /* got data to show */
|
|
||||||
waitline (source, buf2, sizeof (buf2));
|
|
||||||
if (buf2[0] == 0)
|
|
||||||
hexchat_printf(ph, HEAD"\002Numerical\002: %s\n", buf + 1);
|
|
||||||
else
|
|
||||||
hexchat_printf(ph, HEAD"\002Canonical\002: %s \002Numerical\002: %s\n", buf2, buf + 1);
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
case '1': /* failed */
|
|
||||||
hexchat_printf(ph, HEAD"Lookup failed. %s\n", gai_strerrorA (atoi (buf + 1)));
|
|
||||||
|
|
||||||
case '2': /* done */
|
|
||||||
// close (th->pipe_fd[PIPE_WRITE]);
|
|
||||||
// close (th->pipe_fd[PIPE_READ]);
|
|
||||||
hexchat_hook_timer(ph, 3000, dns_close_pipe, (void *)th->pipe_fd[PIPE_WRITE]);
|
|
||||||
hexchat_hook_timer(ph, 4000, dns_close_pipe, (void *)th->pipe_fd[PIPE_READ]);
|
|
||||||
free (th->userdata); /* hostname strdup'ed */
|
|
||||||
free (th);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* find hostname from nickname (search the userlist, current chan only) */
|
|
||||||
|
|
||||||
static char *
|
|
||||||
find_nick_host (char *nick)
|
|
||||||
{
|
|
||||||
hexchat_list *list;
|
|
||||||
char *at;
|
|
||||||
const char *host;
|
|
||||||
|
|
||||||
list = hexchat_list_get (ph, "users");
|
|
||||||
if (!list)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
while (hexchat_list_next (ph, list))
|
|
||||||
{
|
|
||||||
if (stricmp (nick, hexchat_list_str (ph, list, "nick")) == 0)
|
|
||||||
{
|
|
||||||
host = hexchat_list_str (ph, list, "host");
|
|
||||||
if (host)
|
|
||||||
{
|
|
||||||
at = strrchr (host, '@');
|
|
||||||
if (at)
|
|
||||||
return at + 1;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
dns_cmd_cb (char *word[], char *word_eol[], void *ud)
|
|
||||||
{
|
|
||||||
thread *th;
|
|
||||||
char *nickhost;
|
|
||||||
|
|
||||||
if (!word[2][0])
|
|
||||||
{
|
|
||||||
hexchat_print (ph, HELP);
|
|
||||||
return HEXCHAT_EAT_ALL;
|
|
||||||
}
|
|
||||||
|
|
||||||
th = thread_new ();
|
|
||||||
if (th)
|
|
||||||
{
|
|
||||||
nickhost = find_nick_host (word[2]);
|
|
||||||
if (nickhost)
|
|
||||||
{
|
|
||||||
hexchat_printf (ph, HEAD"Looking up %s (%s)...\n", nickhost, word[2]);
|
|
||||||
th->userdata = strdup (nickhost);
|
|
||||||
} else
|
|
||||||
{
|
|
||||||
hexchat_printf (ph, HEAD"Looking up %s...\n", word[2]);
|
|
||||||
th->userdata = strdup (word[2]);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (thread_start (th, thread_function, th))
|
|
||||||
{
|
|
||||||
hexchat_hook_fd(ph, th->pipe_fd[PIPE_READ],
|
|
||||||
HEXCHAT_FD_READ | HEXCHAT_FD_EXCEPTION | HEXCHAT_FD_NOTSOCKET,
|
|
||||||
(void *)dns_read_cb, th);
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return HEXCHAT_EAT_ALL;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
hexchat_plugin_deinit (hexchat_plugin *plugin_handle)
|
|
||||||
{
|
|
||||||
while (active_thread) /* children will set this var to NULL soon... */
|
|
||||||
{
|
|
||||||
Sleep (1000);
|
|
||||||
}
|
|
||||||
hexchat_printf (ph, "DNS plugin unloaded\n");
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
hexchat_plugin_init
|
|
||||||
(hexchat_plugin *plugin_handle, char **plugin_name,
|
|
||||||
char **plugin_desc, char **plugin_version, char *arg)
|
|
||||||
{
|
|
||||||
/* we need to save this for use with any hexchat_* functions */
|
|
||||||
ph = plugin_handle;
|
|
||||||
|
|
||||||
*plugin_name = "DNS";
|
|
||||||
*plugin_desc = "Threaded IPv4/6 DNS Command";
|
|
||||||
*plugin_version = DNS_VERSION;
|
|
||||||
|
|
||||||
hexchat_hook_command(ph, "DNS", HEXCHAT_PRI_LOW, dns_cmd_cb, HELP, 0);
|
|
||||||
hexchat_printf (ph, "DNS plugin loaded\n");
|
|
||||||
|
|
||||||
return 1; /* return 1 for success */
|
|
||||||
}
|
|
@@ -1,3 +0,0 @@
|
|||||||
EXPORTS
|
|
||||||
hexchat_plugin_init
|
|
||||||
hexchat_plugin_deinit
|
|
@@ -1,110 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<ItemGroup Label="ProjectConfigurations">
|
|
||||||
<ProjectConfiguration Include="Release|Win32">
|
|
||||||
<Configuration>Release</Configuration>
|
|
||||||
<Platform>Win32</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
<ProjectConfiguration Include="Release|x64">
|
|
||||||
<Configuration>Release</Configuration>
|
|
||||||
<Platform>x64</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
</ItemGroup>
|
|
||||||
<PropertyGroup Label="Globals">
|
|
||||||
<ProjectGuid>{3786FA8C-3E76-45E3-984E-FCCFF44729C9}</ProjectGuid>
|
|
||||||
<Keyword>Win32Proj</Keyword>
|
|
||||||
<RootNamespace>dns</RootNamespace>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
||||||
<CharacterSet>MultiByte</CharacterSet>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
||||||
<CharacterSet>MultiByte</CharacterSet>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
|
||||||
<ImportGroup Label="ExtensionSettings">
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
<Import Project="..\..\win32\hexchat.props" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
<Import Project="..\..\win32\hexchat.props" />
|
|
||||||
</ImportGroup>
|
|
||||||
<PropertyGroup Label="UserMacros" />
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<LinkIncremental>false</LinkIncremental>
|
|
||||||
<TargetName>hcdns</TargetName>
|
|
||||||
<OutDir>$(HexChatBin)</OutDir>
|
|
||||||
<IntDir>$(HexChatObj)$(ProjectName)\</IntDir>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
|
||||||
<LinkIncremental>false</LinkIncremental>
|
|
||||||
<TargetName>hcdns</TargetName>
|
|
||||||
<OutDir>$(HexChatBin)</OutDir>
|
|
||||||
<IntDir>$(HexChatObj)$(ProjectName)\</IntDir>
|
|
||||||
</PropertyGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<ClCompile>
|
|
||||||
<PrecompiledHeader>
|
|
||||||
</PrecompiledHeader>
|
|
||||||
<Optimization>MaxSpeed</Optimization>
|
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
|
||||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;DNS_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<AdditionalIncludeDirectories>..\..\src\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
||||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<SubSystem>Windows</SubSystem>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
|
||||||
<AdditionalLibraryDirectories>$(DepsRoot)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
|
||||||
<AdditionalDependencies>$(DepLibs);%(AdditionalDependencies)</AdditionalDependencies>
|
|
||||||
<ModuleDefinitionFile>dns.def</ModuleDefinitionFile>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
|
||||||
<ClCompile>
|
|
||||||
<PrecompiledHeader>
|
|
||||||
</PrecompiledHeader>
|
|
||||||
<Optimization>MaxSpeed</Optimization>
|
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
|
||||||
<PreprocessorDefinitions>WIN32;_WIN64;_AMD64_;NDEBUG;_WINDOWS;_USRDLL;DNS_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<AdditionalIncludeDirectories>..\..\src\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
||||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<SubSystem>Windows</SubSystem>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
|
||||||
<AdditionalLibraryDirectories>$(DepsRoot)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
|
||||||
<AdditionalDependencies>$(DepLibs);%(AdditionalDependencies)</AdditionalDependencies>
|
|
||||||
<ModuleDefinitionFile>dns.def</ModuleDefinitionFile>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<None Include="dns.def" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClCompile Include="dns.c" />
|
|
||||||
<ClCompile Include="thread.c" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClInclude Include="thread.h" />
|
|
||||||
</ItemGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
|
||||||
<ImportGroup Label="ExtensionTargets">
|
|
||||||
</ImportGroup>
|
|
||||||
</Project>
|
|
@@ -1,35 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<ItemGroup>
|
|
||||||
<Filter Include="Source Files">
|
|
||||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
|
||||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
|
||||||
</Filter>
|
|
||||||
<Filter Include="Header Files">
|
|
||||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
|
||||||
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
|
||||||
</Filter>
|
|
||||||
<Filter Include="Resource Files">
|
|
||||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
|
||||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
|
||||||
</Filter>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<None Include="dns.def">
|
|
||||||
<Filter>Resource Files</Filter>
|
|
||||||
</None>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClCompile Include="dns.c">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="thread.c">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClInclude Include="thread.h">
|
|
||||||
<Filter>Header Files</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
</ItemGroup>
|
|
||||||
</Project>
|
|
@@ -1,34 +0,0 @@
|
|||||||
#include <io.h>
|
|
||||||
#include <fcntl.h>
|
|
||||||
#include "thread.h"
|
|
||||||
|
|
||||||
thread *
|
|
||||||
thread_new (void)
|
|
||||||
{
|
|
||||||
thread *th;
|
|
||||||
|
|
||||||
th = calloc (1, sizeof (*th));
|
|
||||||
if (!th)
|
|
||||||
{
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_pipe (th->pipe_fd, 4096, _O_BINARY) == -1)
|
|
||||||
{
|
|
||||||
free (th);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
return th;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
thread_start (thread *th, void *(*start_routine)(void *), void *arg)
|
|
||||||
{
|
|
||||||
DWORD id;
|
|
||||||
|
|
||||||
CloseHandle (CreateThread (NULL, 0, (LPTHREAD_START_ROUTINE)start_routine, arg, 0, (DWORD *)&id));
|
|
||||||
th->threadid = id;
|
|
||||||
|
|
||||||
return 1;
|
|
||||||
}
|
|
@@ -1,11 +0,0 @@
|
|||||||
#include <windows.h>
|
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
DWORD threadid;
|
|
||||||
int pipe_fd[2];
|
|
||||||
void *userdata;
|
|
||||||
} thread;
|
|
||||||
|
|
||||||
thread *thread_new (void);
|
|
||||||
int thread_start (thread *th, void *(*start_routine)(void *), void *arg);
|
|
@@ -1,8 +0,0 @@
|
|||||||
libdir = $(hexchatlibdir)/plugins
|
|
||||||
|
|
||||||
lib_LTLIBRARIES = doat.la
|
|
||||||
doat_la_SOURCES = doat.c
|
|
||||||
doat_la_LDFLAGS = -avoid-version -module
|
|
||||||
doat_la_LIBADD =
|
|
||||||
AM_CPPFLAGS = $(COMMON_CFLAGS) -I$(srcdir)/../../src/common
|
|
||||||
|
|
@@ -1,105 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<ItemGroup Label="ProjectConfigurations">
|
|
||||||
<ProjectConfiguration Include="Release|Win32">
|
|
||||||
<Configuration>Release</Configuration>
|
|
||||||
<Platform>Win32</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
<ProjectConfiguration Include="Release|x64">
|
|
||||||
<Configuration>Release</Configuration>
|
|
||||||
<Platform>x64</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
</ItemGroup>
|
|
||||||
<PropertyGroup Label="Globals">
|
|
||||||
<ProjectGuid>{4980AF24-9D42-427D-A8E6-0DF3B97C455D}</ProjectGuid>
|
|
||||||
<Keyword>Win32Proj</Keyword>
|
|
||||||
<RootNamespace>doat</RootNamespace>
|
|
||||||
<ProjectName>doat</ProjectName>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
||||||
<CharacterSet>MultiByte</CharacterSet>
|
|
||||||
<PlatformToolset>WDK7</PlatformToolset>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
||||||
<CharacterSet>MultiByte</CharacterSet>
|
|
||||||
<PlatformToolset>WDK7</PlatformToolset>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
|
||||||
<ImportGroup Label="ExtensionSettings">
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
<Import Project="..\..\win32\hexchat-xp.props" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
<Import Project="..\..\win32\hexchat-xp.props" />
|
|
||||||
</ImportGroup>
|
|
||||||
<PropertyGroup Label="UserMacros" />
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<LinkIncremental>false</LinkIncremental>
|
|
||||||
<TargetName>hcdoat</TargetName>
|
|
||||||
<OutDir>$(HexChatBin)</OutDir>
|
|
||||||
<IntDir>$(HexChatObj)$(ProjectName)\</IntDir>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
|
||||||
<LinkIncremental>false</LinkIncremental>
|
|
||||||
<TargetName>hcdoat</TargetName>
|
|
||||||
<OutDir>$(HexChatBin)</OutDir>
|
|
||||||
<IntDir>$(HexChatObj)$(ProjectName)\</IntDir>
|
|
||||||
</PropertyGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<ClCompile>
|
|
||||||
<PrecompiledHeader>
|
|
||||||
</PrecompiledHeader>
|
|
||||||
<Optimization>MaxSpeed</Optimization>
|
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
|
||||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;DOAT_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<AdditionalIncludeDirectories>..\..\src\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
||||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<SubSystem>Windows</SubSystem>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
|
||||||
<ModuleDefinitionFile>doat.def</ModuleDefinitionFile>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
|
||||||
<ClCompile>
|
|
||||||
<PrecompiledHeader>
|
|
||||||
</PrecompiledHeader>
|
|
||||||
<Optimization>MaxSpeed</Optimization>
|
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
|
||||||
<PreprocessorDefinitions>WIN32;_WIN64;_AMD64_;NDEBUG;_WINDOWS;_USRDLL;DOAT_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<AdditionalIncludeDirectories>..\..\src\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
||||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<SubSystem>Windows</SubSystem>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
|
||||||
<ModuleDefinitionFile>doat.def</ModuleDefinitionFile>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClCompile Include="doat.c" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<None Include="doat.def" />
|
|
||||||
</ItemGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
|
||||||
<ImportGroup Label="ExtensionTargets">
|
|
||||||
</ImportGroup>
|
|
||||||
</Project>
|
|
@@ -1,23 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<ItemGroup>
|
|
||||||
<Filter Include="Source Files">
|
|
||||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
|
||||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
|
||||||
</Filter>
|
|
||||||
<Filter Include="Resource Files">
|
|
||||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
|
||||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
|
||||||
</Filter>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClCompile Include="doat.c">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<None Include="doat.def">
|
|
||||||
<Filter>Resource Files</Filter>
|
|
||||||
</None>
|
|
||||||
</ItemGroup>
|
|
||||||
</Project>
|
|
@@ -1,94 +0,0 @@
|
|||||||
/* This program is free software. It comes without any warranty, to
|
|
||||||
* the extent permitted by applicable law. You can redistribute it
|
|
||||||
* and/or modify it under the terms of the Do What The Fuck You Want
|
|
||||||
* To Public License, Version 2, as published by Sam Hocevar. See
|
|
||||||
* http://sam.zoy.org/wtfpl/COPYING or http://lwsitu.com/xchat/COPYING
|
|
||||||
* for more details. */
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include "hexchat-plugin.h"
|
|
||||||
|
|
||||||
static hexchat_plugin *ph;
|
|
||||||
|
|
||||||
static int
|
|
||||||
parse_command( char *word[], char *word_eol[], void *userdata ) {
|
|
||||||
char *channel = NULL, *server = NULL, *token = NULL;
|
|
||||||
/* char *save_ptr1 = NULL;*/
|
|
||||||
char *str1 = NULL;
|
|
||||||
char *delimiter = NULL;
|
|
||||||
|
|
||||||
hexchat_context *ctx = NULL;
|
|
||||||
|
|
||||||
if( word[2] != NULL && word[3] != NULL ) {
|
|
||||||
for( str1 = word[2]; ; str1 = NULL ) {
|
|
||||||
/* token = strtok_r( str1, ",", &save_ptr1 );*/
|
|
||||||
token = strtok( str1, "," );
|
|
||||||
/* printf( "token: %s\n", token );*/
|
|
||||||
|
|
||||||
if( token == NULL ) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
channel = strdup( token );
|
|
||||||
|
|
||||||
delimiter = strchr( channel, '/' );
|
|
||||||
|
|
||||||
server = NULL;
|
|
||||||
if( delimiter != NULL ) {
|
|
||||||
*delimiter = '\0';
|
|
||||||
|
|
||||||
if( strlen( delimiter + 1 ) > 0 ) {
|
|
||||||
server = strdup( delimiter + 1 );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* /Network form */
|
|
||||||
if( strlen( channel ) == 0 ) {
|
|
||||||
free( channel );
|
|
||||||
channel = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* printf( "channel[%s] server[%s]\n", channel, server );*/
|
|
||||||
|
|
||||||
if( (ctx = hexchat_find_context( ph, server, channel ) ) != NULL ) {
|
|
||||||
if( hexchat_set_context( ph, ctx ) ) {
|
|
||||||
hexchat_command( ph, word_eol[3] );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if( channel != NULL ) {
|
|
||||||
free( channel );
|
|
||||||
}
|
|
||||||
|
|
||||||
if( server != NULL ) {
|
|
||||||
free( server );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return HEXCHAT_EAT_HEXCHAT;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
hexchat_plugin_init( hexchat_plugin * plugin_handle, char **plugin_name,
|
|
||||||
char **plugin_desc, char **plugin_version, char *arg ) {
|
|
||||||
|
|
||||||
ph = plugin_handle;
|
|
||||||
*plugin_name = "Do At";
|
|
||||||
*plugin_version = "1.0001";
|
|
||||||
*plugin_desc = "Perform an arbitrary command on multiple channels";
|
|
||||||
|
|
||||||
hexchat_hook_command( ph, "doat", HEXCHAT_PRI_NORM, parse_command, "DOAT [channel,list,/network] [command], perform a command on multiple contexts", NULL );
|
|
||||||
|
|
||||||
hexchat_print (ph, "Do At plugin loaded\n");
|
|
||||||
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
hexchat_plugin_deinit (void)
|
|
||||||
{
|
|
||||||
hexchat_print (ph, "Do At plugin unloaded\n");
|
|
||||||
return 1;
|
|
||||||
}
|
|
@@ -1,3 +0,0 @@
|
|||||||
EXPORTS
|
|
||||||
hexchat_plugin_init
|
|
||||||
hexchat_plugin_deinit
|
|
@@ -1,102 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<ItemGroup Label="ProjectConfigurations">
|
|
||||||
<ProjectConfiguration Include="Release|Win32">
|
|
||||||
<Configuration>Release</Configuration>
|
|
||||||
<Platform>Win32</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
<ProjectConfiguration Include="Release|x64">
|
|
||||||
<Configuration>Release</Configuration>
|
|
||||||
<Platform>x64</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
</ItemGroup>
|
|
||||||
<PropertyGroup Label="Globals">
|
|
||||||
<ProjectGuid>{4980AF24-9D42-427D-A8E6-0DF3B97C455D}</ProjectGuid>
|
|
||||||
<Keyword>Win32Proj</Keyword>
|
|
||||||
<RootNamespace>doat</RootNamespace>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
||||||
<CharacterSet>MultiByte</CharacterSet>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
||||||
<CharacterSet>MultiByte</CharacterSet>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
|
||||||
<ImportGroup Label="ExtensionSettings">
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
<Import Project="..\..\win32\hexchat.props" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
<Import Project="..\..\win32\hexchat.props" />
|
|
||||||
</ImportGroup>
|
|
||||||
<PropertyGroup Label="UserMacros" />
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<LinkIncremental>false</LinkIncremental>
|
|
||||||
<TargetName>hcdoat</TargetName>
|
|
||||||
<OutDir>$(HexChatBin)</OutDir>
|
|
||||||
<IntDir>$(HexChatObj)$(ProjectName)\</IntDir>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
|
||||||
<LinkIncremental>false</LinkIncremental>
|
|
||||||
<TargetName>hcdoat</TargetName>
|
|
||||||
<OutDir>$(HexChatBin)</OutDir>
|
|
||||||
<IntDir>$(HexChatObj)$(ProjectName)\</IntDir>
|
|
||||||
</PropertyGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<ClCompile>
|
|
||||||
<PrecompiledHeader>
|
|
||||||
</PrecompiledHeader>
|
|
||||||
<Optimization>MaxSpeed</Optimization>
|
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
|
||||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;DOAT_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<AdditionalIncludeDirectories>..\..\src\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
||||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<SubSystem>Windows</SubSystem>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
|
||||||
<ModuleDefinitionFile>doat.def</ModuleDefinitionFile>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
|
||||||
<ClCompile>
|
|
||||||
<PrecompiledHeader>
|
|
||||||
</PrecompiledHeader>
|
|
||||||
<Optimization>MaxSpeed</Optimization>
|
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
|
||||||
<PreprocessorDefinitions>WIN32;_WIN64;_AMD64_;NDEBUG;_WINDOWS;_USRDLL;DOAT_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<AdditionalIncludeDirectories>..\..\src\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
||||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<SubSystem>Windows</SubSystem>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
|
||||||
<ModuleDefinitionFile>doat.def</ModuleDefinitionFile>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClCompile Include="doat.c" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<None Include="doat.def" />
|
|
||||||
</ItemGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
|
||||||
<ImportGroup Label="ExtensionTargets">
|
|
||||||
</ImportGroup>
|
|
||||||
</Project>
|
|
@@ -1,23 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<ItemGroup>
|
|
||||||
<Filter Include="Source Files">
|
|
||||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
|
||||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
|
||||||
</Filter>
|
|
||||||
<Filter Include="Resource Files">
|
|
||||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
|
||||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
|
||||||
</Filter>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClCompile Include="doat.c">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<None Include="doat.def">
|
|
||||||
<Filter>Resource Files</Filter>
|
|
||||||
</None>
|
|
||||||
</ItemGroup>
|
|
||||||
</Project>
|
|
@@ -1,502 +0,0 @@
|
|||||||
GNU LESSER GENERAL PUBLIC LICENSE
|
|
||||||
Version 2.1, February 1999
|
|
||||||
|
|
||||||
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
|
|
||||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
||||||
Everyone is permitted to copy and distribute verbatim copies
|
|
||||||
of this license document, but changing it is not allowed.
|
|
||||||
|
|
||||||
[This is the first released version of the Lesser GPL. It also counts
|
|
||||||
as the successor of the GNU Library Public License, version 2, hence
|
|
||||||
the version number 2.1.]
|
|
||||||
|
|
||||||
Preamble
|
|
||||||
|
|
||||||
The licenses for most software are designed to take away your
|
|
||||||
freedom to share and change it. By contrast, the GNU General Public
|
|
||||||
Licenses are intended to guarantee your freedom to share and change
|
|
||||||
free software--to make sure the software is free for all its users.
|
|
||||||
|
|
||||||
This license, the Lesser General Public License, applies to some
|
|
||||||
specially designated software packages--typically libraries--of the
|
|
||||||
Free Software Foundation and other authors who decide to use it. You
|
|
||||||
can use it too, but we suggest you first think carefully about whether
|
|
||||||
this license or the ordinary General Public License is the better
|
|
||||||
strategy to use in any particular case, based on the explanations below.
|
|
||||||
|
|
||||||
When we speak of free software, we are referring to freedom of use,
|
|
||||||
not price. Our General Public Licenses are designed to make sure that
|
|
||||||
you have the freedom to distribute copies of free software (and charge
|
|
||||||
for this service if you wish); that you receive source code or can get
|
|
||||||
it if you want it; that you can change the software and use pieces of
|
|
||||||
it in new free programs; and that you are informed that you can do
|
|
||||||
these things.
|
|
||||||
|
|
||||||
To protect your rights, we need to make restrictions that forbid
|
|
||||||
distributors to deny you these rights or to ask you to surrender these
|
|
||||||
rights. These restrictions translate to certain responsibilities for
|
|
||||||
you if you distribute copies of the library or if you modify it.
|
|
||||||
|
|
||||||
For example, if you distribute copies of the library, whether gratis
|
|
||||||
or for a fee, you must give the recipients all the rights that we gave
|
|
||||||
you. You must make sure that they, too, receive or can get the source
|
|
||||||
code. If you link other code with the library, you must provide
|
|
||||||
complete object files to the recipients, so that they can relink them
|
|
||||||
with the library after making changes to the library and recompiling
|
|
||||||
it. And you must show them these terms so they know their rights.
|
|
||||||
|
|
||||||
We protect your rights with a two-step method: (1) we copyright the
|
|
||||||
library, and (2) we offer you this license, which gives you legal
|
|
||||||
permission to copy, distribute and/or modify the library.
|
|
||||||
|
|
||||||
To protect each distributor, we want to make it very clear that
|
|
||||||
there is no warranty for the free library. Also, if the library is
|
|
||||||
modified by someone else and passed on, the recipients should know
|
|
||||||
that what they have is not the original version, so that the original
|
|
||||||
author's reputation will not be affected by problems that might be
|
|
||||||
introduced by others.
|
|
||||||
|
|
||||||
Finally, software patents pose a constant threat to the existence of
|
|
||||||
any free program. We wish to make sure that a company cannot
|
|
||||||
effectively restrict the users of a free program by obtaining a
|
|
||||||
restrictive license from a patent holder. Therefore, we insist that
|
|
||||||
any patent license obtained for a version of the library must be
|
|
||||||
consistent with the full freedom of use specified in this license.
|
|
||||||
|
|
||||||
Most GNU software, including some libraries, is covered by the
|
|
||||||
ordinary GNU General Public License. This license, the GNU Lesser
|
|
||||||
General Public License, applies to certain designated libraries, and
|
|
||||||
is quite different from the ordinary General Public License. We use
|
|
||||||
this license for certain libraries in order to permit linking those
|
|
||||||
libraries into non-free programs.
|
|
||||||
|
|
||||||
When a program is linked with a library, whether statically or using
|
|
||||||
a shared library, the combination of the two is legally speaking a
|
|
||||||
combined work, a derivative of the original library. The ordinary
|
|
||||||
General Public License therefore permits such linking only if the
|
|
||||||
entire combination fits its criteria of freedom. The Lesser General
|
|
||||||
Public License permits more lax criteria for linking other code with
|
|
||||||
the library.
|
|
||||||
|
|
||||||
We call this license the "Lesser" General Public License because it
|
|
||||||
does Less to protect the user's freedom than the ordinary General
|
|
||||||
Public License. It also provides other free software developers Less
|
|
||||||
of an advantage over competing non-free programs. These disadvantages
|
|
||||||
are the reason we use the ordinary General Public License for many
|
|
||||||
libraries. However, the Lesser license provides advantages in certain
|
|
||||||
special circumstances.
|
|
||||||
|
|
||||||
For example, on rare occasions, there may be a special need to
|
|
||||||
encourage the widest possible use of a certain library, so that it becomes
|
|
||||||
a de-facto standard. To achieve this, non-free programs must be
|
|
||||||
allowed to use the library. A more frequent case is that a free
|
|
||||||
library does the same job as widely used non-free libraries. In this
|
|
||||||
case, there is little to gain by limiting the free library to free
|
|
||||||
software only, so we use the Lesser General Public License.
|
|
||||||
|
|
||||||
In other cases, permission to use a particular library in non-free
|
|
||||||
programs enables a greater number of people to use a large body of
|
|
||||||
free software. For example, permission to use the GNU C Library in
|
|
||||||
non-free programs enables many more people to use the whole GNU
|
|
||||||
operating system, as well as its variant, the GNU/Linux operating
|
|
||||||
system.
|
|
||||||
|
|
||||||
Although the Lesser General Public License is Less protective of the
|
|
||||||
users' freedom, it does ensure that the user of a program that is
|
|
||||||
linked with the Library has the freedom and the wherewithal to run
|
|
||||||
that program using a modified version of the Library.
|
|
||||||
|
|
||||||
The precise terms and conditions for copying, distribution and
|
|
||||||
modification follow. Pay close attention to the difference between a
|
|
||||||
"work based on the library" and a "work that uses the library". The
|
|
||||||
former contains code derived from the library, whereas the latter must
|
|
||||||
be combined with the library in order to run.
|
|
||||||
|
|
||||||
GNU LESSER GENERAL PUBLIC LICENSE
|
|
||||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
|
||||||
|
|
||||||
0. This License Agreement applies to any software library or other
|
|
||||||
program which contains a notice placed by the copyright holder or
|
|
||||||
other authorized party saying it may be distributed under the terms of
|
|
||||||
this Lesser General Public License (also called "this License").
|
|
||||||
Each licensee is addressed as "you".
|
|
||||||
|
|
||||||
A "library" means a collection of software functions and/or data
|
|
||||||
prepared so as to be conveniently linked with application programs
|
|
||||||
(which use some of those functions and data) to form executables.
|
|
||||||
|
|
||||||
The "Library", below, refers to any such software library or work
|
|
||||||
which has been distributed under these terms. A "work based on the
|
|
||||||
Library" means either the Library or any derivative work under
|
|
||||||
copyright law: that is to say, a work containing the Library or a
|
|
||||||
portion of it, either verbatim or with modifications and/or translated
|
|
||||||
straightforwardly into another language. (Hereinafter, translation is
|
|
||||||
included without limitation in the term "modification".)
|
|
||||||
|
|
||||||
"Source code" for a work means the preferred form of the work for
|
|
||||||
making modifications to it. For a library, complete source code means
|
|
||||||
all the source code for all modules it contains, plus any associated
|
|
||||||
interface definition files, plus the scripts used to control compilation
|
|
||||||
and installation of the library.
|
|
||||||
|
|
||||||
Activities other than copying, distribution and modification are not
|
|
||||||
covered by this License; they are outside its scope. The act of
|
|
||||||
running a program using the Library is not restricted, and output from
|
|
||||||
such a program is covered only if its contents constitute a work based
|
|
||||||
on the Library (independent of the use of the Library in a tool for
|
|
||||||
writing it). Whether that is true depends on what the Library does
|
|
||||||
and what the program that uses the Library does.
|
|
||||||
|
|
||||||
1. You may copy and distribute verbatim copies of the Library's
|
|
||||||
complete source code as you receive it, in any medium, provided that
|
|
||||||
you conspicuously and appropriately publish on each copy an
|
|
||||||
appropriate copyright notice and disclaimer of warranty; keep intact
|
|
||||||
all the notices that refer to this License and to the absence of any
|
|
||||||
warranty; and distribute a copy of this License along with the
|
|
||||||
Library.
|
|
||||||
|
|
||||||
You may charge a fee for the physical act of transferring a copy,
|
|
||||||
and you may at your option offer warranty protection in exchange for a
|
|
||||||
fee.
|
|
||||||
|
|
||||||
2. You may modify your copy or copies of the Library or any portion
|
|
||||||
of it, thus forming a work based on the Library, and copy and
|
|
||||||
distribute such modifications or work under the terms of Section 1
|
|
||||||
above, provided that you also meet all of these conditions:
|
|
||||||
|
|
||||||
a) The modified work must itself be a software library.
|
|
||||||
|
|
||||||
b) You must cause the files modified to carry prominent notices
|
|
||||||
stating that you changed the files and the date of any change.
|
|
||||||
|
|
||||||
c) You must cause the whole of the work to be licensed at no
|
|
||||||
charge to all third parties under the terms of this License.
|
|
||||||
|
|
||||||
d) If a facility in the modified Library refers to a function or a
|
|
||||||
table of data to be supplied by an application program that uses
|
|
||||||
the facility, other than as an argument passed when the facility
|
|
||||||
is invoked, then you must make a good faith effort to ensure that,
|
|
||||||
in the event an application does not supply such function or
|
|
||||||
table, the facility still operates, and performs whatever part of
|
|
||||||
its purpose remains meaningful.
|
|
||||||
|
|
||||||
(For example, a function in a library to compute square roots has
|
|
||||||
a purpose that is entirely well-defined independent of the
|
|
||||||
application. Therefore, Subsection 2d requires that any
|
|
||||||
application-supplied function or table used by this function must
|
|
||||||
be optional: if the application does not supply it, the square
|
|
||||||
root function must still compute square roots.)
|
|
||||||
|
|
||||||
These requirements apply to the modified work as a whole. If
|
|
||||||
identifiable sections of that work are not derived from the Library,
|
|
||||||
and can be reasonably considered independent and separate works in
|
|
||||||
themselves, then this License, and its terms, do not apply to those
|
|
||||||
sections when you distribute them as separate works. But when you
|
|
||||||
distribute the same sections as part of a whole which is a work based
|
|
||||||
on the Library, the distribution of the whole must be on the terms of
|
|
||||||
this License, whose permissions for other licensees extend to the
|
|
||||||
entire whole, and thus to each and every part regardless of who wrote
|
|
||||||
it.
|
|
||||||
|
|
||||||
Thus, it is not the intent of this section to claim rights or contest
|
|
||||||
your rights to work written entirely by you; rather, the intent is to
|
|
||||||
exercise the right to control the distribution of derivative or
|
|
||||||
collective works based on the Library.
|
|
||||||
|
|
||||||
In addition, mere aggregation of another work not based on the Library
|
|
||||||
with the Library (or with a work based on the Library) on a volume of
|
|
||||||
a storage or distribution medium does not bring the other work under
|
|
||||||
the scope of this License.
|
|
||||||
|
|
||||||
3. You may opt to apply the terms of the ordinary GNU General Public
|
|
||||||
License instead of this License to a given copy of the Library. To do
|
|
||||||
this, you must alter all the notices that refer to this License, so
|
|
||||||
that they refer to the ordinary GNU General Public License, version 2,
|
|
||||||
instead of to this License. (If a newer version than version 2 of the
|
|
||||||
ordinary GNU General Public License has appeared, then you can specify
|
|
||||||
that version instead if you wish.) Do not make any other change in
|
|
||||||
these notices.
|
|
||||||
|
|
||||||
Once this change is made in a given copy, it is irreversible for
|
|
||||||
that copy, so the ordinary GNU General Public License applies to all
|
|
||||||
subsequent copies and derivative works made from that copy.
|
|
||||||
|
|
||||||
This option is useful when you wish to copy part of the code of
|
|
||||||
the Library into a program that is not a library.
|
|
||||||
|
|
||||||
4. You may copy and distribute the Library (or a portion or
|
|
||||||
derivative of it, under Section 2) in object code or executable form
|
|
||||||
under the terms of Sections 1 and 2 above provided that you accompany
|
|
||||||
it with the complete corresponding machine-readable source code, which
|
|
||||||
must be distributed under the terms of Sections 1 and 2 above on a
|
|
||||||
medium customarily used for software interchange.
|
|
||||||
|
|
||||||
If distribution of object code is made by offering access to copy
|
|
||||||
from a designated place, then offering equivalent access to copy the
|
|
||||||
source code from the same place satisfies the requirement to
|
|
||||||
distribute the source code, even though third parties are not
|
|
||||||
compelled to copy the source along with the object code.
|
|
||||||
|
|
||||||
5. A program that contains no derivative of any portion of the
|
|
||||||
Library, but is designed to work with the Library by being compiled or
|
|
||||||
linked with it, is called a "work that uses the Library". Such a
|
|
||||||
work, in isolation, is not a derivative work of the Library, and
|
|
||||||
therefore falls outside the scope of this License.
|
|
||||||
|
|
||||||
However, linking a "work that uses the Library" with the Library
|
|
||||||
creates an executable that is a derivative of the Library (because it
|
|
||||||
contains portions of the Library), rather than a "work that uses the
|
|
||||||
library". The executable is therefore covered by this License.
|
|
||||||
Section 6 states terms for distribution of such executables.
|
|
||||||
|
|
||||||
When a "work that uses the Library" uses material from a header file
|
|
||||||
that is part of the Library, the object code for the work may be a
|
|
||||||
derivative work of the Library even though the source code is not.
|
|
||||||
Whether this is true is especially significant if the work can be
|
|
||||||
linked without the Library, or if the work is itself a library. The
|
|
||||||
threshold for this to be true is not precisely defined by law.
|
|
||||||
|
|
||||||
If such an object file uses only numerical parameters, data
|
|
||||||
structure layouts and accessors, and small macros and small inline
|
|
||||||
functions (ten lines or less in length), then the use of the object
|
|
||||||
file is unrestricted, regardless of whether it is legally a derivative
|
|
||||||
work. (Executables containing this object code plus portions of the
|
|
||||||
Library will still fall under Section 6.)
|
|
||||||
|
|
||||||
Otherwise, if the work is a derivative of the Library, you may
|
|
||||||
distribute the object code for the work under the terms of Section 6.
|
|
||||||
Any executables containing that work also fall under Section 6,
|
|
||||||
whether or not they are linked directly with the Library itself.
|
|
||||||
|
|
||||||
6. As an exception to the Sections above, you may also combine or
|
|
||||||
link a "work that uses the Library" with the Library to produce a
|
|
||||||
work containing portions of the Library, and distribute that work
|
|
||||||
under terms of your choice, provided that the terms permit
|
|
||||||
modification of the work for the customer's own use and reverse
|
|
||||||
engineering for debugging such modifications.
|
|
||||||
|
|
||||||
You must give prominent notice with each copy of the work that the
|
|
||||||
Library is used in it and that the Library and its use are covered by
|
|
||||||
this License. You must supply a copy of this License. If the work
|
|
||||||
during execution displays copyright notices, you must include the
|
|
||||||
copyright notice for the Library among them, as well as a reference
|
|
||||||
directing the user to the copy of this License. Also, you must do one
|
|
||||||
of these things:
|
|
||||||
|
|
||||||
a) Accompany the work with the complete corresponding
|
|
||||||
machine-readable source code for the Library including whatever
|
|
||||||
changes were used in the work (which must be distributed under
|
|
||||||
Sections 1 and 2 above); and, if the work is an executable linked
|
|
||||||
with the Library, with the complete machine-readable "work that
|
|
||||||
uses the Library", as object code and/or source code, so that the
|
|
||||||
user can modify the Library and then relink to produce a modified
|
|
||||||
executable containing the modified Library. (It is understood
|
|
||||||
that the user who changes the contents of definitions files in the
|
|
||||||
Library will not necessarily be able to recompile the application
|
|
||||||
to use the modified definitions.)
|
|
||||||
|
|
||||||
b) Use a suitable shared library mechanism for linking with the
|
|
||||||
Library. A suitable mechanism is one that (1) uses at run time a
|
|
||||||
copy of the library already present on the user's computer system,
|
|
||||||
rather than copying library functions into the executable, and (2)
|
|
||||||
will operate properly with a modified version of the library, if
|
|
||||||
the user installs one, as long as the modified version is
|
|
||||||
interface-compatible with the version that the work was made with.
|
|
||||||
|
|
||||||
c) Accompany the work with a written offer, valid for at
|
|
||||||
least three years, to give the same user the materials
|
|
||||||
specified in Subsection 6a, above, for a charge no more
|
|
||||||
than the cost of performing this distribution.
|
|
||||||
|
|
||||||
d) If distribution of the work is made by offering access to copy
|
|
||||||
from a designated place, offer equivalent access to copy the above
|
|
||||||
specified materials from the same place.
|
|
||||||
|
|
||||||
e) Verify that the user has already received a copy of these
|
|
||||||
materials or that you have already sent this user a copy.
|
|
||||||
|
|
||||||
For an executable, the required form of the "work that uses the
|
|
||||||
Library" must include any data and utility programs needed for
|
|
||||||
reproducing the executable from it. However, as a special exception,
|
|
||||||
the materials to be distributed need not include anything that is
|
|
||||||
normally distributed (in either source or binary form) with the major
|
|
||||||
components (compiler, kernel, and so on) of the operating system on
|
|
||||||
which the executable runs, unless that component itself accompanies
|
|
||||||
the executable.
|
|
||||||
|
|
||||||
It may happen that this requirement contradicts the license
|
|
||||||
restrictions of other proprietary libraries that do not normally
|
|
||||||
accompany the operating system. Such a contradiction means you cannot
|
|
||||||
use both them and the Library together in an executable that you
|
|
||||||
distribute.
|
|
||||||
|
|
||||||
7. You may place library facilities that are a work based on the
|
|
||||||
Library side-by-side in a single library together with other library
|
|
||||||
facilities not covered by this License, and distribute such a combined
|
|
||||||
library, provided that the separate distribution of the work based on
|
|
||||||
the Library and of the other library facilities is otherwise
|
|
||||||
permitted, and provided that you do these two things:
|
|
||||||
|
|
||||||
a) Accompany the combined library with a copy of the same work
|
|
||||||
based on the Library, uncombined with any other library
|
|
||||||
facilities. This must be distributed under the terms of the
|
|
||||||
Sections above.
|
|
||||||
|
|
||||||
b) Give prominent notice with the combined library of the fact
|
|
||||||
that part of it is a work based on the Library, and explaining
|
|
||||||
where to find the accompanying uncombined form of the same work.
|
|
||||||
|
|
||||||
8. You may not copy, modify, sublicense, link with, or distribute
|
|
||||||
the Library except as expressly provided under this License. Any
|
|
||||||
attempt otherwise to copy, modify, sublicense, link with, or
|
|
||||||
distribute the Library is void, and will automatically terminate your
|
|
||||||
rights under this License. However, parties who have received copies,
|
|
||||||
or rights, from you under this License will not have their licenses
|
|
||||||
terminated so long as such parties remain in full compliance.
|
|
||||||
|
|
||||||
9. You are not required to accept this License, since you have not
|
|
||||||
signed it. However, nothing else grants you permission to modify or
|
|
||||||
distribute the Library or its derivative works. These actions are
|
|
||||||
prohibited by law if you do not accept this License. Therefore, by
|
|
||||||
modifying or distributing the Library (or any work based on the
|
|
||||||
Library), you indicate your acceptance of this License to do so, and
|
|
||||||
all its terms and conditions for copying, distributing or modifying
|
|
||||||
the Library or works based on it.
|
|
||||||
|
|
||||||
10. Each time you redistribute the Library (or any work based on the
|
|
||||||
Library), the recipient automatically receives a license from the
|
|
||||||
original licensor to copy, distribute, link with or modify the Library
|
|
||||||
subject to these terms and conditions. You may not impose any further
|
|
||||||
restrictions on the recipients' exercise of the rights granted herein.
|
|
||||||
You are not responsible for enforcing compliance by third parties with
|
|
||||||
this License.
|
|
||||||
|
|
||||||
11. If, as a consequence of a court judgment or allegation of patent
|
|
||||||
infringement or for any other reason (not limited to patent issues),
|
|
||||||
conditions are imposed on you (whether by court order, agreement or
|
|
||||||
otherwise) that contradict the conditions of this License, they do not
|
|
||||||
excuse you from the conditions of this License. If you cannot
|
|
||||||
distribute so as to satisfy simultaneously your obligations under this
|
|
||||||
License and any other pertinent obligations, then as a consequence you
|
|
||||||
may not distribute the Library at all. For example, if a patent
|
|
||||||
license would not permit royalty-free redistribution of the Library by
|
|
||||||
all those who receive copies directly or indirectly through you, then
|
|
||||||
the only way you could satisfy both it and this License would be to
|
|
||||||
refrain entirely from distribution of the Library.
|
|
||||||
|
|
||||||
If any portion of this section is held invalid or unenforceable under any
|
|
||||||
particular circumstance, the balance of the section is intended to apply,
|
|
||||||
and the section as a whole is intended to apply in other circumstances.
|
|
||||||
|
|
||||||
It is not the purpose of this section to induce you to infringe any
|
|
||||||
patents or other property right claims or to contest validity of any
|
|
||||||
such claims; this section has the sole purpose of protecting the
|
|
||||||
integrity of the free software distribution system which is
|
|
||||||
implemented by public license practices. Many people have made
|
|
||||||
generous contributions to the wide range of software distributed
|
|
||||||
through that system in reliance on consistent application of that
|
|
||||||
system; it is up to the author/donor to decide if he or she is willing
|
|
||||||
to distribute software through any other system and a licensee cannot
|
|
||||||
impose that choice.
|
|
||||||
|
|
||||||
This section is intended to make thoroughly clear what is believed to
|
|
||||||
be a consequence of the rest of this License.
|
|
||||||
|
|
||||||
12. If the distribution and/or use of the Library is restricted in
|
|
||||||
certain countries either by patents or by copyrighted interfaces, the
|
|
||||||
original copyright holder who places the Library under this License may add
|
|
||||||
an explicit geographical distribution limitation excluding those countries,
|
|
||||||
so that distribution is permitted only in or among countries not thus
|
|
||||||
excluded. In such case, this License incorporates the limitation as if
|
|
||||||
written in the body of this License.
|
|
||||||
|
|
||||||
13. The Free Software Foundation may publish revised and/or new
|
|
||||||
versions of the Lesser General Public License from time to time.
|
|
||||||
Such new versions will be similar in spirit to the present version,
|
|
||||||
but may differ in detail to address new problems or concerns.
|
|
||||||
|
|
||||||
Each version is given a distinguishing version number. If the Library
|
|
||||||
specifies a version number of this License which applies to it and
|
|
||||||
"any later version", you have the option of following the terms and
|
|
||||||
conditions either of that version or of any later version published by
|
|
||||||
the Free Software Foundation. If the Library does not specify a
|
|
||||||
license version number, you may choose any version ever published by
|
|
||||||
the Free Software Foundation.
|
|
||||||
|
|
||||||
14. If you wish to incorporate parts of the Library into other free
|
|
||||||
programs whose distribution conditions are incompatible with these,
|
|
||||||
write to the author to ask for permission. For software which is
|
|
||||||
copyrighted by the Free Software Foundation, write to the Free
|
|
||||||
Software Foundation; we sometimes make exceptions for this. Our
|
|
||||||
decision will be guided by the two goals of preserving the free status
|
|
||||||
of all derivatives of our free software and of promoting the sharing
|
|
||||||
and reuse of software generally.
|
|
||||||
|
|
||||||
NO WARRANTY
|
|
||||||
|
|
||||||
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
|
|
||||||
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
|
|
||||||
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
|
|
||||||
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
|
|
||||||
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
||||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
|
|
||||||
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
|
|
||||||
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
|
||||||
|
|
||||||
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
|
|
||||||
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
|
|
||||||
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
|
|
||||||
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
|
|
||||||
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
|
|
||||||
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
|
|
||||||
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
|
|
||||||
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
|
|
||||||
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
|
||||||
DAMAGES.
|
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
|
||||||
|
|
||||||
How to Apply These Terms to Your New Libraries
|
|
||||||
|
|
||||||
If you develop a new library, and you want it to be of the greatest
|
|
||||||
possible use to the public, we recommend making it free software that
|
|
||||||
everyone can redistribute and change. You can do so by permitting
|
|
||||||
redistribution under these terms (or, alternatively, under the terms of the
|
|
||||||
ordinary General Public License).
|
|
||||||
|
|
||||||
To apply these terms, attach the following notices to the library. It is
|
|
||||||
safest to attach them to the start of each source file to most effectively
|
|
||||||
convey the exclusion of warranty; and each file should have at least the
|
|
||||||
"copyright" line and a pointer to where the full notice is found.
|
|
||||||
|
|
||||||
<one line to give the library's name and a brief idea of what it does.>
|
|
||||||
Copyright (C) <year> <name of author>
|
|
||||||
|
|
||||||
This library is free software; you can redistribute it and/or
|
|
||||||
modify it under the terms of the GNU Lesser General Public
|
|
||||||
License as published by the Free Software Foundation; either
|
|
||||||
version 2.1 of the License, or (at your option) any later version.
|
|
||||||
|
|
||||||
This library is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
Lesser General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU Lesser General Public
|
|
||||||
License along with this library; if not, write to the Free Software
|
|
||||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
||||||
|
|
||||||
Also add information on how to contact you by electronic and paper mail.
|
|
||||||
|
|
||||||
You should also get your employer (if you work as a programmer) or your
|
|
||||||
school, if any, to sign a "copyright disclaimer" for the library, if
|
|
||||||
necessary. Here is a sample; alter the names:
|
|
||||||
|
|
||||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the
|
|
||||||
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
|
|
||||||
|
|
||||||
<signature of Ty Coon>, 1 April 1990
|
|
||||||
Ty Coon, President of Vice
|
|
||||||
|
|
||||||
That's all there is to it!
|
|
@@ -1,231 +0,0 @@
|
|||||||
/*
|
|
||||||
EasyWinampControl - A Winamp "What's playing" plugin for HexChat
|
|
||||||
Copyright (C) Yann HAMON & contributors
|
|
||||||
|
|
||||||
This library is free software; you can redistribute it and/or
|
|
||||||
modify it under the terms of the GNU Lesser General Public
|
|
||||||
License as published by the Free Software Foundation; either
|
|
||||||
version 2.1 of the License, or (at your option) any later version.
|
|
||||||
|
|
||||||
This library is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
Lesser General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU Lesser General Public
|
|
||||||
License along with this library; if not, write to the Free Software
|
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <windows.h>
|
|
||||||
#include "hexchat-plugin.h"
|
|
||||||
|
|
||||||
static hexchat_plugin *ph; /* plugin handle */
|
|
||||||
static int enable = 1;
|
|
||||||
|
|
||||||
// For example, circularstrstr("winamp", "pwi", 3) would return 5 (the index of p)
|
|
||||||
int circularstrstr(char* a, char* b, int nb)
|
|
||||||
{
|
|
||||||
int equal = 1;
|
|
||||||
int length;
|
|
||||||
int pos=-1;
|
|
||||||
int i, j;
|
|
||||||
|
|
||||||
length = strlen(a);
|
|
||||||
|
|
||||||
for (i=0; i<length && pos == -1; ++i) {
|
|
||||||
equal = 1;
|
|
||||||
for (j=0; j<nb;j++) {
|
|
||||||
if (a[(i+j)%length] != b[j])
|
|
||||||
equal = 0;
|
|
||||||
}
|
|
||||||
if (equal == 1)
|
|
||||||
pos = i;
|
|
||||||
}
|
|
||||||
|
|
||||||
return pos;
|
|
||||||
}
|
|
||||||
|
|
||||||
void GetCurrentSongsName(HWND hwndWinamp, char* title, int titlesize)
|
|
||||||
{
|
|
||||||
int pos;
|
|
||||||
char *title2;
|
|
||||||
int i, j=0;
|
|
||||||
int length;
|
|
||||||
char *p;
|
|
||||||
|
|
||||||
GetWindowText(hwndWinamp, title, titlesize);
|
|
||||||
length = strlen(title);
|
|
||||||
|
|
||||||
if ((pos = circularstrstr(title, "- Winamp ***", 12)) != -1) {
|
|
||||||
// The option "scroll song title in taskbar" is on
|
|
||||||
title2 = (char*) malloc (titlesize*sizeof(char));
|
|
||||||
|
|
||||||
for (i=(pos+12)%length; i!=pos; i=(i+1)%length)
|
|
||||||
title2[j++] = title[i];
|
|
||||||
|
|
||||||
title2[j] = '\0';
|
|
||||||
|
|
||||||
p = title2;
|
|
||||||
while (p<title2+titlesize && *p != '.')
|
|
||||||
p++;
|
|
||||||
p+=2; // Delete the . and the following white space
|
|
||||||
|
|
||||||
strcpy(title, p);
|
|
||||||
free(title2);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
p = title;
|
|
||||||
while (p<title+titlesize && *p != '.')
|
|
||||||
p++;
|
|
||||||
p+=2; // Delete the . and the following white space
|
|
||||||
if (p<title+titlesize)
|
|
||||||
strncpy(title, p, titlesize-(p-title));
|
|
||||||
|
|
||||||
// Delete the trailing "- winamp"
|
|
||||||
p = title + titlesize - 1;
|
|
||||||
while (p>title && *p != '-') p--;
|
|
||||||
*p = '\0';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Controlling winamp
|
|
||||||
static int wcmd_cb(char *word[], char *word_eol[], void *userdata)
|
|
||||||
{
|
|
||||||
// Everything's here : http://winamp.com/nsdn/winamp2x/dev/sdk/api.php
|
|
||||||
// The previous url seems dead, see http://forums.winamp.com/showthread.php?threadid=180297
|
|
||||||
HWND hwndWinamp = NULL;
|
|
||||||
|
|
||||||
if ((hwndWinamp = FindWindow("Winamp v1.x",NULL)) == NULL) {
|
|
||||||
hexchat_print(ph, "Winamp's window not found - Is winamp really running?\n");
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if (strcmp(word[1], "") == 0)
|
|
||||||
hexchat_print(ph, "Usage: wcmd [command]\n");
|
|
||||||
else if (strcmp(word[2], "next") == 0) {
|
|
||||||
hexchat_print(ph, "Loading next song...\n");
|
|
||||||
SendMessage (hwndWinamp, WM_COMMAND, 40048, 0);
|
|
||||||
}
|
|
||||||
else if (strcmp(word[2], "prev") == 0) {
|
|
||||||
hexchat_print(ph, "Loading previous song...\n");
|
|
||||||
SendMessage (hwndWinamp, WM_COMMAND, 40044, 0);
|
|
||||||
}
|
|
||||||
else if (strcmp(word[2], "play") == 0) {
|
|
||||||
hexchat_print(ph, "Playin'...\n");
|
|
||||||
SendMessage (hwndWinamp, WM_COMMAND, 40045, 0);
|
|
||||||
}
|
|
||||||
else if (strcmp(word[2], "stop") == 0) {
|
|
||||||
hexchat_print(ph, "Winamp stopped!...\n");
|
|
||||||
SendMessage (hwndWinamp, WM_COMMAND, 40047, 0);
|
|
||||||
}
|
|
||||||
else if (strcmp(word[2], "pause") == 0) {
|
|
||||||
SendMessage (hwndWinamp, WM_COMMAND, 40046, 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return HEXCHAT_EAT_ALL;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Display current song
|
|
||||||
static int wp_cb(char *word[], char *word_eol[], void *userdata)
|
|
||||||
{
|
|
||||||
HWND hwndWinamp = NULL;
|
|
||||||
int bitrate, length, elapsed, minutes, seconds, eminutes, eseconds, samplerate, nbchannels;
|
|
||||||
char elapsedtime[7];
|
|
||||||
char totaltime[7];
|
|
||||||
char this_title[1024];
|
|
||||||
|
|
||||||
if ((hwndWinamp = FindWindow("Winamp v1.x",NULL)) == NULL)
|
|
||||||
hexchat_print(ph, "Winamp's window not found - Is winamp really running?\n");
|
|
||||||
else {
|
|
||||||
//Winamp's running
|
|
||||||
// Seems buggy when winamp2's agent is running, and winamp not (or winamp3) -> crashes HexChat.
|
|
||||||
SendMessage(hwndWinamp, WM_USER, (WPARAM)0, (LPARAM)125);
|
|
||||||
|
|
||||||
if ((samplerate = SendMessage(hwndWinamp, WM_USER, (WPARAM)0, (LPARAM)126)) == 0) {
|
|
||||||
hexchat_print(ph, "Could not get current song's samplerate... !?\n");
|
|
||||||
return HEXCHAT_EAT_ALL;
|
|
||||||
}
|
|
||||||
if ((bitrate = SendMessage(hwndWinamp, WM_USER, (WPARAM)1, (LPARAM)126)) == 0) {
|
|
||||||
hexchat_print(ph, "Could not get current song's bitrate... !?\n");
|
|
||||||
return HEXCHAT_EAT_ALL;
|
|
||||||
}
|
|
||||||
if ((nbchannels = SendMessage(hwndWinamp, WM_USER, (WPARAM)2, (LPARAM)126)) == 0) {
|
|
||||||
hexchat_print(ph, "Could not get the number of channels... !?\n");
|
|
||||||
return HEXCHAT_EAT_ALL;
|
|
||||||
}
|
|
||||||
if ((length = SendMessage(hwndWinamp, WM_USER, (WPARAM)1, (LPARAM)105)) == 0) {
|
|
||||||
// Could be buggy when streaming audio or video, returned length is unexpected;
|
|
||||||
// How to detect is Winamp is streaming, and display ??:?? in that case?
|
|
||||||
hexchat_print(ph, "Could not get current song's length... !?\n");
|
|
||||||
return HEXCHAT_EAT_ALL;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
minutes = length/60;
|
|
||||||
seconds = length%60;
|
|
||||||
|
|
||||||
if (seconds>9)
|
|
||||||
wsprintf(totaltime, "%d:%d", minutes, seconds);
|
|
||||||
else
|
|
||||||
wsprintf(totaltime, "%d:0%d", minutes, seconds);
|
|
||||||
}
|
|
||||||
if ((elapsed = SendMessage(hwndWinamp, WM_USER, (WPARAM)0, (LPARAM)105)) == 0) {
|
|
||||||
hexchat_print(ph, "Could not get current song's elapsed time... !?\n");
|
|
||||||
return HEXCHAT_EAT_ALL;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
eminutes = (elapsed/1000)/60; /* kinda stupid sounding, but e is for elapsed */
|
|
||||||
eseconds = (elapsed/1000)%60;
|
|
||||||
|
|
||||||
if (eseconds>9)
|
|
||||||
wsprintf(elapsedtime, "%d:%d", eminutes, eseconds);
|
|
||||||
else
|
|
||||||
wsprintf(elapsedtime, "%d:0%d", eminutes, eseconds);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((bitrate = SendMessage(hwndWinamp, WM_USER, (WPARAM)1, (LPARAM)126)) == 0) {
|
|
||||||
hexchat_print(ph, "Could not get current song's bitrate... !?\n");
|
|
||||||
return HEXCHAT_EAT_ALL;
|
|
||||||
}
|
|
||||||
|
|
||||||
GetCurrentSongsName(hwndWinamp, this_title, 1024);
|
|
||||||
|
|
||||||
hexchat_commandf(ph, "dispcurrsong %d %d %d %s %s %s", samplerate, bitrate, nbchannels, elapsedtime, totaltime, this_title);
|
|
||||||
}
|
|
||||||
|
|
||||||
return HEXCHAT_EAT_ALL; /* eat this command so HexChat and other plugins can't process it */
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int hexchat_plugin_init(hexchat_plugin *plugin_handle,
|
|
||||||
char **plugin_name,
|
|
||||||
char **plugin_desc,
|
|
||||||
char **plugin_version,
|
|
||||||
char *arg)
|
|
||||||
{
|
|
||||||
/* we need to save this for use with any hexchat_* functions */
|
|
||||||
ph = plugin_handle;
|
|
||||||
|
|
||||||
*plugin_name = "EasyWinampControl";
|
|
||||||
*plugin_desc = "Some commands to remotely control winamp";
|
|
||||||
*plugin_version = "1.2";
|
|
||||||
|
|
||||||
hexchat_hook_command(ph, "wp", HEXCHAT_PRI_NORM, wp_cb,
|
|
||||||
"Usage: wp", 0);
|
|
||||||
|
|
||||||
hexchat_hook_command(ph, "wcmd", HEXCHAT_PRI_NORM, wcmd_cb,
|
|
||||||
"Usage: wcmd [play|pause|stop|prev|next]", 0);
|
|
||||||
|
|
||||||
hexchat_print(ph, "EasyWinampControl plugin loaded\n");
|
|
||||||
|
|
||||||
return 1; /* return 1 for success */
|
|
||||||
}
|
|
||||||
|
|
||||||
int hexchat_plugin_deinit(void)
|
|
||||||
{
|
|
||||||
hexchat_print(ph, "EasyWinampControl plugin unloaded\n");
|
|
||||||
return 1;
|
|
||||||
}
|
|
@@ -1,18 +0,0 @@
|
|||||||
include "..\..\src\makeinc.mak"
|
|
||||||
|
|
||||||
all: ewc.obj ewc.def
|
|
||||||
link $(LDFLAGS) $(LIBS) /dll /out:xcewc.dll /def:ewc.def ewc.obj
|
|
||||||
|
|
||||||
ewc.def:
|
|
||||||
echo EXPORTS > ewc.def
|
|
||||||
echo hexchat_plugin_init >> ewc.def
|
|
||||||
echo hexchat_plugin_deinit >> ewc.def
|
|
||||||
|
|
||||||
ewc.obj: ewc.c makefile.mak
|
|
||||||
cl $(CFLAGS) ewc.c
|
|
||||||
|
|
||||||
clean:
|
|
||||||
del *.obj
|
|
||||||
del *.dll
|
|
||||||
del *.exp
|
|
||||||
del *.lib
|
|
@@ -1,105 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<ItemGroup Label="ProjectConfigurations">
|
|
||||||
<ProjectConfiguration Include="Release|Win32">
|
|
||||||
<Configuration>Release</Configuration>
|
|
||||||
<Platform>Win32</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
<ProjectConfiguration Include="Release|x64">
|
|
||||||
<Configuration>Release</Configuration>
|
|
||||||
<Platform>x64</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
</ItemGroup>
|
|
||||||
<PropertyGroup Label="Globals">
|
|
||||||
<ProjectGuid>{17E4BE39-76F7-4A06-AD21-EFD0C5091F76}</ProjectGuid>
|
|
||||||
<Keyword>Win32Proj</Keyword>
|
|
||||||
<RootNamespace>exec</RootNamespace>
|
|
||||||
<ProjectName>exec</ProjectName>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
||||||
<CharacterSet>MultiByte</CharacterSet>
|
|
||||||
<PlatformToolset>WDK7</PlatformToolset>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
||||||
<CharacterSet>MultiByte</CharacterSet>
|
|
||||||
<PlatformToolset>WDK7</PlatformToolset>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
|
||||||
<ImportGroup Label="ExtensionSettings">
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
<Import Project="..\..\win32\hexchat-xp.props" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
<Import Project="..\..\win32\hexchat-xp.props" />
|
|
||||||
</ImportGroup>
|
|
||||||
<PropertyGroup Label="UserMacros" />
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<LinkIncremental>false</LinkIncremental>
|
|
||||||
<TargetName>hcexec</TargetName>
|
|
||||||
<OutDir>$(HexChatBin)</OutDir>
|
|
||||||
<IntDir>$(HexChatObj)$(ProjectName)\</IntDir>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
|
||||||
<LinkIncremental>false</LinkIncremental>
|
|
||||||
<TargetName>hcexec</TargetName>
|
|
||||||
<OutDir>$(HexChatBin)</OutDir>
|
|
||||||
<IntDir>$(HexChatObj)$(ProjectName)\</IntDir>
|
|
||||||
</PropertyGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<ClCompile>
|
|
||||||
<PrecompiledHeader>
|
|
||||||
</PrecompiledHeader>
|
|
||||||
<Optimization>MaxSpeed</Optimization>
|
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
|
||||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;EXEC_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
|
||||||
<AdditionalIncludeDirectories>..\..\src\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<SubSystem>Windows</SubSystem>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
|
||||||
<ModuleDefinitionFile>exec.def</ModuleDefinitionFile>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
|
||||||
<ClCompile>
|
|
||||||
<PrecompiledHeader>
|
|
||||||
</PrecompiledHeader>
|
|
||||||
<Optimization>MaxSpeed</Optimization>
|
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
|
||||||
<PreprocessorDefinitions>WIN32;_WIN64;_AMD64_;NDEBUG;_WINDOWS;_USRDLL;EXEC_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
|
||||||
<AdditionalIncludeDirectories>..\..\src\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<SubSystem>Windows</SubSystem>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
|
||||||
<ModuleDefinitionFile>exec.def</ModuleDefinitionFile>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<None Include="exec.def" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClCompile Include="exec.c" />
|
|
||||||
</ItemGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
|
||||||
<ImportGroup Label="ExtensionTargets">
|
|
||||||
</ImportGroup>
|
|
||||||
</Project>
|
|
@@ -1,23 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<ItemGroup>
|
|
||||||
<Filter Include="Source Files">
|
|
||||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
|
||||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
|
||||||
</Filter>
|
|
||||||
<Filter Include="Resource Files">
|
|
||||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
|
||||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
|
||||||
</Filter>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<None Include="exec.def">
|
|
||||||
<Filter>Resource Files</Filter>
|
|
||||||
</None>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClCompile Include="exec.c">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
</ItemGroup>
|
|
||||||
</Project>
|
|
@@ -28,7 +28,7 @@
|
|||||||
static hexchat_plugin *ph; /* plugin handle */
|
static hexchat_plugin *ph; /* plugin handle */
|
||||||
static char name[] = "Exec";
|
static char name[] = "Exec";
|
||||||
static char desc[] = "Execute commands inside HexChat";
|
static char desc[] = "Execute commands inside HexChat";
|
||||||
static char version[] = "1.1";
|
static char version[] = "1.2";
|
||||||
|
|
||||||
static int
|
static int
|
||||||
run_command (char *word[], char *word_eol[], void *userdata)
|
run_command (char *word[], char *word_eol[], void *userdata)
|
||||||
@@ -41,6 +41,10 @@ run_command (char *word[], char *word_eol[], void *userdata)
|
|||||||
time_t start;
|
time_t start;
|
||||||
double timeElapsed;
|
double timeElapsed;
|
||||||
|
|
||||||
|
char *token;
|
||||||
|
char *context = NULL;
|
||||||
|
int announce = 0;
|
||||||
|
|
||||||
HANDLE readPipe;
|
HANDLE readPipe;
|
||||||
HANDLE writePipe;
|
HANDLE writePipe;
|
||||||
STARTUPINFO sInfo;
|
STARTUPINFO sInfo;
|
||||||
@@ -59,9 +63,8 @@ run_command (char *word[], char *word_eol[], void *userdata)
|
|||||||
|
|
||||||
if (!stricmp("-O", word[2]))
|
if (!stricmp("-O", word[2]))
|
||||||
{
|
{
|
||||||
/*strcat (commandLine, word_eol[3]);*/
|
strcat (commandLine, word_eol[3]);
|
||||||
hexchat_printf (ph, "Printing Exec output to others is not supported yet.\n");
|
announce = 1;
|
||||||
return HEXCHAT_EAT_HEXCHAT;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -90,7 +93,19 @@ run_command (char *word[], char *word_eol[], void *userdata)
|
|||||||
{
|
{
|
||||||
/* avoid garbage */
|
/* avoid garbage */
|
||||||
buffer[dwRead] = '\0';
|
buffer[dwRead] = '\0';
|
||||||
hexchat_printf (ph, "%s", buffer);
|
|
||||||
|
if (announce)
|
||||||
|
{
|
||||||
|
/* Say each line seperately, TODO: improve... */
|
||||||
|
token = strtok_s (buffer, "\n", &context);
|
||||||
|
while (token != NULL)
|
||||||
|
{
|
||||||
|
hexchat_commandf (ph, "SAY %s", token);
|
||||||
|
token = strtok_s (NULL, "\n", &context);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
hexchat_printf (ph, "%s", buffer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -100,20 +115,25 @@ run_command (char *word[], char *word_eol[], void *userdata)
|
|||||||
}
|
}
|
||||||
timeElapsed = difftime (time (0), start);
|
timeElapsed = difftime (time (0), start);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* display a newline to separate things */
|
||||||
|
if (!announce)
|
||||||
|
hexchat_printf (ph, "\n");
|
||||||
|
|
||||||
|
if (timeElapsed >= 10)
|
||||||
|
{
|
||||||
|
hexchat_printf (ph, "Command took too much time to run, execution aborted.\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
CloseHandle (readPipe);
|
||||||
|
CloseHandle (pInfo.hProcess);
|
||||||
|
CloseHandle (pInfo.hThread);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
/* display a newline to separate things */
|
|
||||||
hexchat_printf (ph, "\n");
|
|
||||||
|
|
||||||
if (timeElapsed >= 10)
|
|
||||||
{
|
{
|
||||||
hexchat_printf (ph, "Command took too much time to run, execution aborted.\n");
|
hexchat_command (ph, "help exec");
|
||||||
}
|
}
|
||||||
|
|
||||||
CloseHandle (readPipe);
|
|
||||||
CloseHandle (pInfo.hProcess);
|
|
||||||
CloseHandle (pInfo.hThread);
|
|
||||||
|
|
||||||
return HEXCHAT_EAT_HEXCHAT;
|
return HEXCHAT_EAT_HEXCHAT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1,5 +1,9 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<PropertyGroup Label="Configuration">
|
||||||
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
|
</PropertyGroup>
|
||||||
<ItemGroup Label="ProjectConfigurations">
|
<ItemGroup Label="ProjectConfigurations">
|
||||||
<ProjectConfiguration Include="Release|Win32">
|
<ProjectConfiguration Include="Release|Win32">
|
||||||
<Configuration>Release</Configuration>
|
<Configuration>Release</Configuration>
|
||||||
@@ -16,77 +20,28 @@
|
|||||||
<RootNamespace>exec</RootNamespace>
|
<RootNamespace>exec</RootNamespace>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
||||||
<CharacterSet>MultiByte</CharacterSet>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
||||||
<CharacterSet>MultiByte</CharacterSet>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
<ImportGroup Label="ExtensionSettings">
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
</ImportGroup>
|
<Import Project="..\..\win32\hexchat.props" />
|
||||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
<PropertyGroup>
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
<Import Project="..\..\win32\hexchat.props" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
<Import Project="..\..\win32\hexchat.props" />
|
|
||||||
</ImportGroup>
|
|
||||||
<PropertyGroup Label="UserMacros" />
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<LinkIncremental>false</LinkIncremental>
|
|
||||||
<TargetName>hcexec</TargetName>
|
<TargetName>hcexec</TargetName>
|
||||||
<OutDir>$(HexChatBin)</OutDir>
|
<OutDir>$(HexChatRel)plugins\</OutDir>
|
||||||
<IntDir>$(HexChatObj)$(ProjectName)\</IntDir>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
|
||||||
<LinkIncremental>false</LinkIncremental>
|
|
||||||
<TargetName>hcexec</TargetName>
|
|
||||||
<OutDir>$(HexChatBin)</OutDir>
|
|
||||||
<IntDir>$(HexChatObj)$(ProjectName)\</IntDir>
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
<ClCompile>
|
<ClCompile>
|
||||||
<PrecompiledHeader>
|
|
||||||
</PrecompiledHeader>
|
|
||||||
<Optimization>MaxSpeed</Optimization>
|
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
|
||||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;EXEC_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;EXEC_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
|
||||||
<AdditionalIncludeDirectories>..\..\src\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>..\..\src\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<SubSystem>Windows</SubSystem>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
|
||||||
<ModuleDefinitionFile>exec.def</ModuleDefinitionFile>
|
<ModuleDefinitionFile>exec.def</ModuleDefinitionFile>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
<ClCompile>
|
<ClCompile>
|
||||||
<PrecompiledHeader>
|
|
||||||
</PrecompiledHeader>
|
|
||||||
<Optimization>MaxSpeed</Optimization>
|
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
|
||||||
<PreprocessorDefinitions>WIN32;_WIN64;_AMD64_;NDEBUG;_WINDOWS;_USRDLL;EXEC_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;_WIN64;_AMD64_;NDEBUG;_WINDOWS;_USRDLL;EXEC_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
|
||||||
<AdditionalIncludeDirectories>..\..\src\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>..\..\src\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<SubSystem>Windows</SubSystem>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
|
||||||
<ModuleDefinitionFile>exec.def</ModuleDefinitionFile>
|
<ModuleDefinitionFile>exec.def</ModuleDefinitionFile>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
@@ -97,6 +52,4 @@
|
|||||||
<ClCompile Include="exec.c" />
|
<ClCompile Include="exec.c" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
<ImportGroup Label="ExtensionTargets">
|
|
||||||
</ImportGroup>
|
|
||||||
</Project>
|
</Project>
|
5
plugins/exec/meson.build
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
shared_module('exec', 'exec.c',
|
||||||
|
dependencies: hexchat_plugin_dep,
|
||||||
|
install: true,
|
||||||
|
install_dir: plugindir
|
||||||
|
)
|
@@ -1,16 +0,0 @@
|
|||||||
|
|
||||||
Install dependencies (on Debian/Ubuntu):
|
|
||||||
|
|
||||||
sudo apt-get install build-essential libglib2.0-dev libssl-dev
|
|
||||||
|
|
||||||
|
|
||||||
Build the plugin with:
|
|
||||||
|
|
||||||
make
|
|
||||||
|
|
||||||
|
|
||||||
Install with:
|
|
||||||
|
|
||||||
sudo make install
|
|
||||||
|
|
||||||
|
|
@@ -1,9 +0,0 @@
|
|||||||
EXTRA_DIST = INSTALL LICENSE README
|
|
||||||
|
|
||||||
libdir = $(hexchatlibdir)/plugins
|
|
||||||
|
|
||||||
lib_LTLIBRARIES = fishlim.la
|
|
||||||
fishlim_la_SOURCES = fish.c irc.c keystore.c misc.c plugin_hexchat.c
|
|
||||||
fishlim_la_LDFLAGS = -avoid-version -module
|
|
||||||
fishlim_la_LIBADD =
|
|
||||||
AM_CPPFLAGS = $(COMMON_CFLAGS) -I$(srcdir)/../../src/common
|
|