Compare commits
1197 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
dd758f8b33 | ||
|
|
adf07a9af0 | ||
|
|
be62157308 | ||
|
|
061639a370 | ||
|
|
ad7abec3d7 | ||
|
|
e923282181 | ||
|
|
6554e4d0f4 | ||
|
|
eb65dd42e4 | ||
|
|
d917215417 | ||
|
|
69f2669bee | ||
|
|
dfc35f3744 | ||
|
|
56dee6975e | ||
|
|
9b80017323 | ||
|
|
75666c56cc | ||
|
|
0a3ee9f0a7 | ||
|
|
67546f8163 | ||
|
|
22d99806d0 | ||
|
|
883e264319 | ||
|
|
e80769794e | ||
|
|
4adfec4482 | ||
|
|
adb72ef023 | ||
|
|
69e0893c61 | ||
|
|
10318fd19e | ||
|
|
756200676d | ||
|
|
73d8fb96cb | ||
|
|
e9cbedd042 | ||
|
|
b22869f9ef | ||
|
|
1a02cacc53 | ||
|
|
cb952329d3 | ||
|
|
579ebe6130 | ||
|
|
89ae64c5fb | ||
|
|
ad9f318e10 | ||
|
|
0e411cd646 | ||
|
|
2b2795077b | ||
|
|
58910b07ef | ||
|
|
5567b04277 | ||
|
|
73d6e05c0e | ||
|
|
0642c37c04 | ||
|
|
45b66cd785 | ||
|
|
ed7c3fad57 | ||
|
|
fa37e002f0 | ||
|
|
f99cd158dd | ||
|
|
a790958daa | ||
|
|
3341f74374 | ||
|
|
1505743fbf | ||
|
|
625ad3d7cf | ||
|
|
f351e17a63 | ||
|
|
c1360506c9 | ||
|
|
50f27e0952 | ||
|
|
dd423d315b | ||
|
|
78c7408380 | ||
|
|
d09a079199 | ||
|
|
ea8b4beede | ||
|
|
30e8b03038 | ||
|
|
79050c29d7 | ||
|
|
98f4e22950 | ||
|
|
47f5a45e47 | ||
|
|
c37f36510a | ||
|
|
c65cb536cc | ||
|
|
4a8b356867 | ||
|
|
ea2d57edd3 | ||
|
|
585cbdfcac | ||
|
|
572a833a51 | ||
|
|
b1700f3cf6 | ||
|
|
4f1183a358 | ||
|
|
180d4ece77 | ||
|
|
0c5a71b02f | ||
|
|
9cab749016 | ||
|
|
06ecef76d3 | ||
|
|
2dfe144236 | ||
|
|
3e5ea8cb6c | ||
|
|
56edf73d93 | ||
|
|
2b63f781e9 | ||
|
|
ccb6327131 | ||
|
|
401f1b6496 | ||
|
|
48bf9d9f85 | ||
|
|
cc82823c47 | ||
|
|
383962173e | ||
|
|
c8d208b9be | ||
|
|
d6daa336ca | ||
|
|
b02374c3f5 | ||
|
|
03f7e0686f | ||
|
|
545013e839 | ||
|
|
4025488cf8 | ||
|
|
4ce2a1d071 | ||
|
|
a7244a999e | ||
|
|
5b2cde4e30 | ||
|
|
21d5607af2 | ||
|
|
1cd6d4c7e7 | ||
|
|
8540cab0a6 | ||
|
|
e3c28f3fb3 | ||
|
|
f6f84aaf42 | ||
|
|
b927d95d58 | ||
|
|
dd5623be65 | ||
|
|
78063c4df7 | ||
|
|
ab86490b37 | ||
|
|
69cae7731f | ||
|
|
eeefc8a992 | ||
|
|
77e98c8c03 | ||
|
|
fccd0d6c96 | ||
|
|
4f70969306 | ||
|
|
57e94585e8 | ||
|
|
c66d6b0500 | ||
|
|
31055360dc | ||
|
|
229a3d309c | ||
|
|
c82469fa2c | ||
|
|
5a886f6e58 | ||
|
|
abffaa184b | ||
|
|
70a0cd670b | ||
|
|
720f28c09c | ||
|
|
a8f03679ed | ||
|
|
0b67dfa38c | ||
|
|
e53ba8110b | ||
|
|
a6875ced6e | ||
|
|
57cac49362 | ||
|
|
81acaa6ae0 | ||
|
|
b596e96b43 | ||
|
|
8e47342a18 | ||
|
|
cb821c2a25 | ||
|
|
0faf7fa8ee | ||
|
|
0002376f2a | ||
|
|
f87b2ee636 | ||
|
|
3aae7b180b | ||
|
|
b001c2f40b | ||
|
|
660d0cca3e | ||
|
|
db1a6601eb | ||
|
|
78778c2819 | ||
|
|
585020ef97 | ||
|
|
e1f3f2355a | ||
|
|
c02cfd594c | ||
|
|
5dbadda512 | ||
|
|
c73376cb2f | ||
|
|
0b5a105b9b | ||
|
|
e92fb9287a | ||
|
|
875c5c1880 | ||
|
|
2b71317e09 | ||
|
|
44aeea8e45 | ||
|
|
f435eeed7a | ||
|
|
a5cb041ef2 | ||
|
|
bfdeee2cea | ||
|
|
414cdf8669 | ||
|
|
3b52b75d2a | ||
|
|
f56e1bef54 | ||
|
|
1b60c20bad | ||
|
|
7ef5233547 | ||
|
|
d552b208dd | ||
|
|
6dd00f41e9 | ||
|
|
a75e7978ab | ||
|
|
6abc40ef46 | ||
|
|
0ab2169c65 | ||
|
|
93067f3c3b | ||
|
|
8d8f7ddb40 | ||
|
|
be75b4bf3a | ||
|
|
3031cf8da9 | ||
|
|
db707d5e15 | ||
|
|
065384027e | ||
|
|
dca4772f33 | ||
|
|
48daf13d7f | ||
|
|
79113668cd | ||
|
|
167b9aa8eb | ||
|
|
9ce55bcf67 | ||
|
|
6cfb913e45 | ||
|
|
5ef3bcc243 | ||
|
|
f43e093515 | ||
|
|
ecb4190e0b | ||
|
|
338e4dfbc7 | ||
|
|
1046555c9c | ||
|
|
b8377b7e5c | ||
|
|
2a8acaf351 | ||
|
|
2ec5a315cb | ||
|
|
be86c52dc0 | ||
|
|
2cf25b7c35 | ||
|
|
75e738a9c9 | ||
|
|
42981c746e | ||
|
|
5a66ac94ee | ||
|
|
eaeca45eae | ||
|
|
37411c7521 | ||
|
|
4ea71c939a | ||
|
|
81ce844d79 | ||
|
|
0780919c2e | ||
|
|
8d43a35ca4 | ||
|
|
42c1b30c31 | ||
|
|
b032a00283 | ||
|
|
b684ded845 | ||
|
|
780d9bb7e7 | ||
|
|
7acef0c9fd | ||
|
|
d019126086 | ||
|
|
a7feed2ae9 | ||
|
|
64c643920f | ||
|
|
2c5f590fed | ||
|
|
3003cdaf08 | ||
|
|
5f353f800d | ||
|
|
f3d31834ee | ||
|
|
28377502f6 | ||
|
|
a6c7236ff3 | ||
|
|
204d287b20 | ||
|
|
6fc34eef42 | ||
|
|
e99c01c92c | ||
|
|
b3e3c36d50 | ||
|
|
e717345f20 | ||
|
|
850135376d | ||
|
|
5d0e6c3435 | ||
|
|
3b354b6d47 | ||
|
|
2c0da35225 | ||
|
|
13955bc6ae | ||
|
|
1d80a2ebdc | ||
|
|
d4910f65eb | ||
|
|
2b44d513e8 | ||
|
|
7f11f1b560 | ||
|
|
b246fae889 | ||
|
|
8c5508de4b | ||
|
|
b3db2245fa | ||
|
|
00b246ce8a | ||
|
|
b94706c56e | ||
|
|
8d784da0ae | ||
|
|
b5f65850f8 | ||
|
|
b7726bce21 | ||
|
|
d44e9363f0 | ||
|
|
5e905742ad | ||
|
|
549e700bc8 | ||
|
|
b2fc4969b9 | ||
|
|
e319359935 | ||
|
|
331b08055a | ||
|
|
847a8b6d49 | ||
|
|
3abce22f0c | ||
|
|
c090367eb8 | ||
|
|
fff789a509 | ||
|
|
e7c8114dff | ||
|
|
fbb217538e | ||
|
|
12c4983936 | ||
|
|
39d9f235de | ||
|
|
7aa0c3698a | ||
|
|
bc40ab63b3 | ||
|
|
6e673d2834 | ||
|
|
30c6dd0047 | ||
|
|
64bc2a165a | ||
|
|
5b96dbbce8 | ||
|
|
3214dc5d37 | ||
|
|
bb89e1a70f | ||
|
|
a16122bbe9 | ||
|
|
57ef35441d | ||
|
|
77dd930574 | ||
|
|
e222090d1f | ||
|
|
bf077c0f97 | ||
|
|
f6842941f3 | ||
|
|
e2e0851a69 | ||
|
|
1299fe468b | ||
|
|
de50b2902c | ||
|
|
bcdcbeeea0 | ||
|
|
469cafa053 | ||
|
|
fdb359c180 | ||
|
|
d321ee242d | ||
|
|
9f9c19d4ae | ||
|
|
179b51278f | ||
|
|
1bb907f76d | ||
|
|
99641e7b0b | ||
|
|
d7bded0d73 | ||
|
|
80a3196097 | ||
|
|
010ef7cd07 | ||
|
|
e5fce9ac08 | ||
|
|
175dd3eb4f | ||
|
|
3cd45c3acd | ||
|
|
157b32e93b | ||
|
|
0b187f3ff8 | ||
|
|
b3d40b2554 | ||
|
|
bb2eb5f266 | ||
|
|
675df6487a | ||
|
|
b2b4fc6b54 | ||
|
|
2074c8bb27 | ||
|
|
ff3b7cf337 | ||
|
|
58730a48b3 | ||
|
|
37436071a0 | ||
|
|
de8a2c36a0 | ||
|
|
1d4c942675 | ||
|
|
fba076a0d0 | ||
|
|
09d7940dd3 | ||
|
|
00031dc1ab | ||
|
|
3ef844de5f | ||
|
|
bb45d91ddb | ||
|
|
f243f0ed44 | ||
|
|
b305cc0a60 | ||
|
|
53609b2837 | ||
|
|
bdaa0f89d9 | ||
|
|
2fd8d8aa83 | ||
|
|
e69fb81b2b | ||
|
|
d2aa0f31b0 | ||
|
|
05f67db429 | ||
|
|
62be3f8acb | ||
|
|
cc5c99c0a1 | ||
|
|
35792e7874 | ||
|
|
083407f789 | ||
|
|
e1146cdd20 | ||
|
|
f04205be4c | ||
|
|
07da2396fc | ||
|
|
ec7f7cc939 | ||
|
|
1b28d8714b | ||
|
|
79f59f12ae | ||
|
|
f595bc4731 | ||
|
|
972efc58f4 | ||
|
|
dc9ba6d6b8 | ||
|
|
a7196ca181 | ||
|
|
1355571876 | ||
|
|
d3fcd40279 | ||
|
|
c4dcdbff0f | ||
|
|
d39e45841d | ||
|
|
b28575625e | ||
|
|
fc8f8957c4 | ||
|
|
0499bfff49 | ||
|
|
af49ccf508 | ||
|
|
7b0edfdeba | ||
|
|
e5d56e3075 | ||
|
|
ede746ba16 | ||
|
|
0bad0277fe | ||
|
|
8488cbd1a6 | ||
|
|
6f9356da64 | ||
|
|
90d53245c3 | ||
|
|
14977ef317 | ||
|
|
bb5458fd6b | ||
|
|
8c692593b4 | ||
|
|
e8fc210ab0 | ||
|
|
e5f2b0c7d1 | ||
|
|
6c2fc108b4 | ||
|
|
9100217da0 | ||
|
|
c5809b6b8d | ||
|
|
3fce45baa4 | ||
|
|
67debb93f7 | ||
|
|
9718fa6924 | ||
|
|
5489cc5a0c | ||
|
|
8bf0f1176b | ||
|
|
e2da1d0a9a | ||
|
|
b02c11be0e | ||
|
|
ab3de212bf | ||
|
|
9fb5b34759 | ||
|
|
1aa856d078 | ||
|
|
81df2f2b19 | ||
|
|
4511d87bc0 | ||
|
|
4439c07516 | ||
|
|
f790d52f62 | ||
|
|
c275ded443 | ||
|
|
1900ee93f7 | ||
|
|
9095934bc0 | ||
|
|
2d79e59647 | ||
|
|
84f48fd056 | ||
|
|
bf3e69add6 | ||
|
|
844dd473e6 | ||
|
|
6ca39b51b6 | ||
|
|
466cc4c362 | ||
|
|
56a0997ecf | ||
|
|
d45ce09ccc | ||
|
|
98553e0196 | ||
|
|
75054617c4 | ||
|
|
3e5355bc39 | ||
|
|
e8716e68ae | ||
|
|
cb1313779b | ||
|
|
8af0953b63 | ||
|
|
51ad77e952 | ||
|
|
28ab9e36cd | ||
|
|
b5d8045eb3 | ||
|
|
4c6d58549d | ||
|
|
ebff1f48c2 | ||
|
|
6e87e05e15 | ||
|
|
fbeadfa313 | ||
|
|
e20e05ab54 | ||
|
|
f2af6cc2dd | ||
|
|
9d85a0e0e2 | ||
|
|
519ee9a7a9 | ||
|
|
d5d4de403f | ||
|
|
6a55549588 | ||
|
|
d63d396386 | ||
|
|
f7f8b1aee5 | ||
|
|
605eb397fc | ||
|
|
6f318ecdcf | ||
|
|
0d349bab92 | ||
|
|
131f6687ea | ||
|
|
6612f3e276 | ||
|
|
4af2b2dc13 | ||
|
|
69e839724d | ||
|
|
abcec98bef | ||
|
|
ca4bae558d | ||
|
|
02c7d7607c | ||
|
|
f633e42597 | ||
|
|
a6e9e6cdfb | ||
|
|
8473227f52 | ||
|
|
a23a350b8b | ||
|
|
3072476e53 | ||
|
|
66e5c7fd64 | ||
|
|
8312dc1f1d | ||
|
|
03c9cc6005 | ||
|
|
543fc1727d | ||
|
|
bd89287f05 | ||
|
|
ef7c5dc4eb | ||
|
|
367214c57a | ||
|
|
5726926449 | ||
|
|
32b951dcc9 | ||
|
|
65595220f2 | ||
|
|
5a1191300c | ||
|
|
73378dd67e | ||
|
|
8145b7b28e | ||
|
|
c00e5138e0 | ||
|
|
c89a0bbbd8 | ||
|
|
b692ae3b25 | ||
|
|
a41f0a0256 | ||
|
|
9f4a9d1325 | ||
|
|
89e1eeacd2 | ||
|
|
d68b86fe56 | ||
|
|
edcb719d94 | ||
|
|
389fa400a6 | ||
|
|
7fec8a5c9b | ||
|
|
10fe3d6b28 | ||
|
|
f588055b31 | ||
|
|
21c3a0ef48 | ||
|
|
e7ba2ab76d | ||
|
|
569d31da7a | ||
|
|
0891d3ea63 | ||
|
|
b7a0883212 | ||
|
|
652f9b3c0a | ||
|
|
ed49546eac | ||
|
|
4c65fa1291 | ||
|
|
af7803ea27 | ||
|
|
dc2bac1b5e | ||
|
|
5d8c28f72f | ||
|
|
c29682b91f | ||
|
|
58d7de8478 | ||
|
|
b9e1bdc145 | ||
|
|
ce4f26bdf3 | ||
|
|
f3d3126839 | ||
|
|
3dcda73e0c | ||
|
|
8d76eaca88 | ||
|
|
a2cc75d2c7 | ||
|
|
1f3092469e | ||
|
|
52052f91f9 | ||
|
|
029b2d1182 | ||
|
|
6e4f60c4fe | ||
|
|
8e8f5935b3 | ||
|
|
facb4dcb41 | ||
|
|
7e0a1759f9 | ||
|
|
518aea870f | ||
|
|
6d3df6922b | ||
|
|
c787e67d9c | ||
|
|
9aed6ec228 | ||
|
|
bb78f61d2a | ||
|
|
0440189b1d | ||
|
|
53155fcc34 | ||
|
|
d6168ff6a6 | ||
|
|
f3659cf709 | ||
|
|
1cfe879409 | ||
|
|
a56eeb9ec2 | ||
|
|
c5d7b41d98 | ||
|
|
8bcf459a52 | ||
|
|
104ad5a5b5 | ||
|
|
a32263e7ea | ||
|
|
f31f068322 | ||
|
|
5632c49945 | ||
|
|
b67b64ea00 | ||
|
|
5cb009bc0a | ||
|
|
ed7a9273d0 | ||
|
|
78afa4e110 | ||
|
|
b6bc72c449 | ||
|
|
acb6e3cfdc | ||
|
|
b31cc639a4 | ||
|
|
f7c91d6db7 | ||
|
|
f7d40e8d8d | ||
|
|
50f000988b | ||
|
|
e59e35ae29 | ||
|
|
c6a56d444e | ||
|
|
62449d8b3e | ||
|
|
a4f9493ce7 | ||
|
|
dd3b651767 | ||
|
|
39da7bddfd | ||
|
|
94e4c7b9da | ||
|
|
329a78039a | ||
|
|
40bde9e765 | ||
|
|
52fb6abb9b | ||
|
|
343c43a010 | ||
|
|
245339e7fc | ||
|
|
fab37d3383 | ||
|
|
93a68361a7 | ||
|
|
aae4cbac8b | ||
|
|
cbecec263a | ||
|
|
3bed6bb573 | ||
|
|
344b1aba58 | ||
|
|
f5e0f8b7a6 | ||
|
|
02518e0223 | ||
|
|
173b3f6828 | ||
|
|
dcb4ae5497 | ||
|
|
8dab95e200 | ||
|
|
20bd2cf594 | ||
|
|
3ffb855956 | ||
|
|
cea84b3d3b | ||
|
|
456a493ab5 | ||
|
|
9c2e70b73a | ||
|
|
1511c1fcfd | ||
|
|
315c70c503 | ||
|
|
aeaf443f67 | ||
|
|
ec17eaaa43 | ||
|
|
ae3257b623 | ||
|
|
b9a1993692 | ||
|
|
af606598fa | ||
|
|
96be49b78d | ||
|
|
8cf7888fd5 | ||
|
|
0ae76d3bf2 | ||
|
|
5eb4d23685 | ||
|
|
b932d9b9b7 | ||
|
|
4d43b77441 | ||
|
|
840c61cbbf | ||
|
|
7e2da42f40 | ||
|
|
f701f10234 | ||
|
|
61cedc3ad1 | ||
|
|
07cf8d6ee8 | ||
|
|
b2c76f6123 | ||
|
|
051720a279 | ||
|
|
23f0a9658e | ||
|
|
8a22ac7cf2 | ||
|
|
e7a0a20d55 | ||
|
|
7a77cd6d4a | ||
|
|
78ec411067 | ||
|
|
7a2c40626e | ||
|
|
027b343e49 | ||
|
|
97d732e5f7 | ||
|
|
5691ed0588 | ||
|
|
cdd07be331 | ||
|
|
db0d85f5e7 | ||
|
|
6a77d61faa | ||
|
|
71b320b361 | ||
|
|
41e137a92c | ||
|
|
1551362d1e | ||
|
|
6e6f86783f | ||
|
|
858f34cf95 | ||
|
|
108b486ac1 | ||
|
|
0fe4a850df | ||
|
|
bc65d7292f | ||
|
|
00c5e61d49 | ||
|
|
717e0f6329 | ||
|
|
4470c3b88c | ||
|
|
62f240aad4 | ||
|
|
b742712bb1 | ||
|
|
9f1880e050 | ||
|
|
c65b6e9f48 | ||
|
|
91da9440c5 | ||
|
|
98316f7ab1 | ||
|
|
3d9ec60153 | ||
|
|
7ff178cecc | ||
|
|
314ce572e1 | ||
|
|
f98abbe036 | ||
|
|
80bb9f0a18 | ||
|
|
53d0d1cbac | ||
|
|
1560463f9e | ||
|
|
ffd887747f | ||
|
|
9004b65956 | ||
|
|
f470acadaa | ||
|
|
efe0b86708 | ||
|
|
8529daaf28 | ||
|
|
819c33e491 | ||
|
|
a09246fd71 | ||
|
|
9f6b112003 | ||
|
|
85e38e67d3 | ||
|
|
113c15ef2f | ||
|
|
c89a222c7c | ||
|
|
841958d889 | ||
|
|
a04bfc468b | ||
|
|
25d27bec93 | ||
|
|
eda17772c9 | ||
|
|
0665caae55 | ||
|
|
d99dec5556 | ||
|
|
5288e167d0 | ||
|
|
788e264378 | ||
|
|
c9807f4636 | ||
|
|
6ac8bdc5ca | ||
|
|
bd0309b4ff | ||
|
|
5a0535c9b5 | ||
|
|
0b14efbb76 | ||
|
|
bc8aba26a9 | ||
|
|
d898f3f509 | ||
|
|
5836430cc1 | ||
|
|
37e08df8ba | ||
|
|
edd065d80e | ||
|
|
66011acbf8 | ||
|
|
ac9dae9af8 | ||
|
|
754b79afb2 | ||
|
|
1ff3e73ebc | ||
|
|
48683370c0 | ||
|
|
c3309cfb54 | ||
|
|
cebe220344 | ||
|
|
9b4262bfc0 | ||
|
|
41be5fd66a | ||
|
|
94d8702666 | ||
|
|
e39619e4ce | ||
|
|
78c770afe6 | ||
|
|
1cac0d6647 | ||
|
|
6066fa51ba | ||
|
|
9a94ea963c | ||
|
|
ed2ed7c2e2 | ||
|
|
a58aa948b8 | ||
|
|
d4a9a387af | ||
|
|
d961dfda59 | ||
|
|
7b9cb12308 | ||
|
|
8728312da6 | ||
|
|
9776495286 | ||
|
|
fc7b344a8b | ||
|
|
8bef5a90cd | ||
|
|
df38d5aaa0 | ||
|
|
d7da182450 | ||
|
|
71f4749d56 | ||
|
|
41bcdc2875 | ||
|
|
2da4f8ba7a | ||
|
|
8dfe4bd30a | ||
|
|
0449f9e0a2 | ||
|
|
f3f77a4c78 | ||
|
|
a694ac05b1 | ||
|
|
940f4a85a4 | ||
|
|
1422a15cbc | ||
|
|
9c15457d7f | ||
|
|
f209e4aa93 | ||
|
|
20d8124a1d | ||
|
|
db6de54ccc | ||
|
|
eb864820cf | ||
|
|
0291e4c72e | ||
|
|
6e27feb8a3 | ||
|
|
1dcba4619e | ||
|
|
7538b43c68 | ||
|
|
aff828c51b | ||
|
|
fb5fe5f5b4 | ||
|
|
cf67e0142c | ||
|
|
9d48faa759 | ||
|
|
72e3f76ed9 | ||
|
|
bf4cf8e786 | ||
|
|
ed39b88719 | ||
|
|
7a219c999e | ||
|
|
d702ba8f24 | ||
|
|
190c6b53fc | ||
|
|
24f31eeb00 | ||
|
|
ffa0c6e758 | ||
|
|
049767484f | ||
|
|
a2a9fa7f35 | ||
|
|
9b78631e6f | ||
|
|
7965bd5b4f | ||
|
|
db52cf7327 | ||
|
|
36d4ecab43 | ||
|
|
bc13f0be48 | ||
|
|
e9c45aab85 | ||
|
|
82f94a6999 | ||
|
|
37dd592110 | ||
|
|
f43e47a739 | ||
|
|
76aa3c535e | ||
|
|
60f3da15a7 | ||
|
|
292ef5248c | ||
|
|
748e2ea00d | ||
|
|
c2a386b913 | ||
|
|
0ec3b4b6af | ||
|
|
2aa43fe4fe | ||
|
|
32e99b3ed6 | ||
|
|
a60d54be61 | ||
|
|
531cffdc7f | ||
|
|
da88dfe15a | ||
|
|
54f155f439 | ||
|
|
f85fc2d8c9 | ||
|
|
024986fe88 | ||
|
|
b887f7267b | ||
|
|
25450b4a7c | ||
|
|
f295fdf78f | ||
|
|
55771cc999 | ||
|
|
ac871d9e8d | ||
|
|
66bd5fc3c0 | ||
|
|
98978c7c00 | ||
|
|
4ede817ead | ||
|
|
9eb68881af | ||
|
|
948380ce96 | ||
|
|
2faa256a55 | ||
|
|
0dab0384ea | ||
|
|
ddfbfea715 | ||
|
|
a98951a8c3 | ||
|
|
75c220c352 | ||
|
|
7248267a72 | ||
|
|
ccff27b535 | ||
|
|
3274f1f0a6 | ||
|
|
4ed6dc3cce | ||
|
|
97145fbb07 | ||
|
|
fe4c8f3a9d | ||
|
|
766c2d3620 | ||
|
|
ed685a55ce | ||
|
|
a57552f8bc | ||
|
|
2ac2aafbe7 | ||
|
|
963574e298 | ||
|
|
cebacc7273 | ||
|
|
dde044c3d7 | ||
|
|
87ed7dad6c | ||
|
|
5263147c83 | ||
|
|
7c0aee4a5f | ||
|
|
4fda101f28 | ||
|
|
54789082c9 | ||
|
|
8627a924f7 | ||
|
|
64a891e8b1 | ||
|
|
a7424f90b3 | ||
|
|
dc52e096ba | ||
|
|
7aace1b3db | ||
|
|
73ecb0480f | ||
|
|
0fcaf85652 | ||
|
|
8dd9690a65 | ||
|
|
2083dc4175 | ||
|
|
de08c1d32e | ||
|
|
2dc566a726 | ||
|
|
4cbc67b30b | ||
|
|
7ff41a222a | ||
|
|
3b4390a446 | ||
|
|
09c88baeaf | ||
|
|
5ff44e2f33 | ||
|
|
6af093126e | ||
|
|
4532727a32 | ||
|
|
c223d38872 | ||
|
|
020604334e | ||
|
|
d09630a3a0 | ||
|
|
41a6cdea22 | ||
|
|
c860d58641 | ||
|
|
6600f9bac4 | ||
|
|
2aa2a4e257 | ||
|
|
b7866b7434 | ||
|
|
2e5e20e3e5 | ||
|
|
0eff6fa2b1 | ||
|
|
8fa38fc4c3 | ||
|
|
f3724aa714 | ||
|
|
3cdfb733de | ||
|
|
fbea29e27c | ||
|
|
17979e10f0 | ||
|
|
627d0a7ae9 | ||
|
|
df3fc9b723 | ||
|
|
dd8b181081 | ||
|
|
a9d46a0714 | ||
|
|
1ad23c7bdc | ||
|
|
78e9b00a63 | ||
|
|
5ac3f0c47e | ||
|
|
886f8e252e | ||
|
|
419ab2ad51 | ||
|
|
eb5bd63459 | ||
|
|
cce755e5da | ||
|
|
b194f37f11 | ||
|
|
3156e1c085 | ||
|
|
8b17bdc037 | ||
|
|
b9448c3a2c | ||
|
|
179f60ed8d | ||
|
|
e754fa6eac | ||
|
|
f97dff0125 | ||
|
|
81e96e0ec4 | ||
|
|
f37d39d4ce | ||
|
|
124dc75861 | ||
|
|
f933067a09 | ||
|
|
c754e35b5b | ||
|
|
3a9c98d342 | ||
|
|
04f60a4d8c | ||
|
|
5d275188e9 | ||
|
|
32d89560d5 | ||
|
|
58e1f3691c | ||
|
|
fdd43a9619 | ||
|
|
2e39929d71 | ||
|
|
5ba1fd6aeb | ||
|
|
fa76326aba | ||
|
|
7a03d819a0 | ||
|
|
69ed1e0ebb | ||
|
|
833fac3c13 | ||
|
|
6bef54cdae | ||
|
|
dbc98c1230 | ||
|
|
59bd54fd37 | ||
|
|
9d2b2de494 | ||
|
|
f974e33fa4 | ||
|
|
a120b4bd89 | ||
|
|
13aeff1389 | ||
|
|
f6b8b39d8b | ||
|
|
11ee827a0d | ||
|
|
89bbce8661 | ||
|
|
e1a7f61fb1 | ||
|
|
f310924675 | ||
|
|
2fd7f6d681 | ||
|
|
612b872ed4 | ||
|
|
f97955ded8 | ||
|
|
38907ac6d7 | ||
|
|
1da111ad6e | ||
|
|
c7d0b1c21b | ||
|
|
0c775f7998 | ||
|
|
c872e30ef5 | ||
|
|
2c826b6213 | ||
|
|
9d8777ec7d | ||
|
|
ee06280808 | ||
|
|
da8c3c1a16 | ||
|
|
4346f83f6e | ||
|
|
8b045156d0 | ||
|
|
c4e459e8d7 | ||
|
|
77475136b9 | ||
|
|
362b4a5bc9 | ||
|
|
ff14f0a28a | ||
|
|
a6637db232 | ||
|
|
95f07cf363 | ||
|
|
f9035eec70 | ||
|
|
cc5d44ee9d | ||
|
|
3f97bb0663 | ||
|
|
e268b7f71c | ||
|
|
753305a262 | ||
|
|
cec42bb2c4 | ||
|
|
de7f70ad3e | ||
|
|
046f511d66 | ||
|
|
e2e5b4884c | ||
|
|
05243c9e7a | ||
|
|
fd823871f0 | ||
|
|
4087a82402 | ||
|
|
e8da71498d | ||
|
|
4ab665b876 | ||
|
|
6762af8ffd | ||
|
|
407ef39c54 | ||
|
|
de4194479a | ||
|
|
08188fb811 | ||
|
|
cd89e10cfb | ||
|
|
1c736a319d | ||
|
|
72f84b3c3e | ||
|
|
e8443889bb | ||
|
|
e81fdd1975 | ||
|
|
f9c3103264 | ||
|
|
143666aca0 | ||
|
|
f7fc455b62 | ||
|
|
5814432366 | ||
|
|
90c721295a | ||
|
|
5cf33105a3 | ||
|
|
b23bad9a5b | ||
|
|
c61a295df7 | ||
|
|
aec64afc5c | ||
|
|
72ff15ea7a | ||
|
|
fea19e036a | ||
|
|
98391a0c24 | ||
|
|
2975b9244a | ||
|
|
c78be053cb | ||
|
|
708995093b | ||
|
|
7fea1f6a63 | ||
|
|
b67b27f5cd | ||
|
|
07819a1885 | ||
|
|
e03e1ec7b0 | ||
|
|
fb674a5626 | ||
|
|
410a63fe14 | ||
|
|
2cc625f631 | ||
|
|
51a78ab996 | ||
|
|
d7f9b2165c | ||
|
|
d135dc2337 | ||
|
|
57a11a74e1 | ||
|
|
f73281ee30 | ||
|
|
262e42d42b | ||
|
|
99174d66b6 | ||
|
|
a0838474c4 | ||
|
|
3235ac592f | ||
|
|
dcedbb3076 | ||
|
|
e84c5c4a3c | ||
|
|
c4ec5989fe | ||
|
|
a737b0e0c8 | ||
|
|
f2b7780d6b | ||
|
|
1b6faf57c9 | ||
|
|
76c66b8ab1 | ||
|
|
fe84ddcc98 | ||
|
|
0d832a6848 | ||
|
|
a77d4662f8 | ||
|
|
60915cefd4 | ||
|
|
f896d3f160 | ||
|
|
e23243e195 | ||
|
|
5b14fb63d8 | ||
|
|
081f8f5b3c | ||
|
|
06062a96eb | ||
|
|
2f18c512e0 | ||
|
|
7431f0cdd3 | ||
|
|
22f0b1d9fb | ||
|
|
b8187e24ae | ||
|
|
120593887b | ||
|
|
01e5e773eb | ||
|
|
e0fd39db7b | ||
|
|
a39261f82d | ||
|
|
a6b45af0a2 | ||
|
|
daea320564 | ||
|
|
1cbec205f1 | ||
|
|
579232b7ea | ||
|
|
cee8fda236 | ||
|
|
4dda1f0c27 | ||
|
|
0571412da0 | ||
|
|
b4f031e4a7 | ||
|
|
5b1d64960d | ||
|
|
a5fef2cc6b | ||
|
|
8ab3c1cc3c | ||
|
|
2700713c03 | ||
|
|
567bdd98a4 | ||
|
|
25425614b1 | ||
|
|
3b65051e9e | ||
|
|
5f4563af2f | ||
|
|
7e2bd166fa | ||
|
|
41b60f88d3 | ||
|
|
93ec320555 | ||
|
|
c1291dc587 | ||
|
|
57deb83b25 | ||
|
|
e4f5d6579c | ||
|
|
99dc72f26f | ||
|
|
406e648d58 | ||
|
|
db7b2dd9fe | ||
|
|
c31ec6b6a6 | ||
|
|
1a656f0f60 | ||
|
|
5ec0d569a9 | ||
|
|
3979c3283e | ||
|
|
ca795ea281 | ||
|
|
d10e9be500 | ||
|
|
f790df24c5 | ||
|
|
ca933d7f39 | ||
|
|
827bc6204b | ||
|
|
4537d5048e | ||
|
|
74ea5b4ef6 | ||
|
|
cc2220b406 | ||
|
|
7389ce617a | ||
|
|
165001acac | ||
|
|
3d3d788961 | ||
|
|
3c196230dd | ||
|
|
9a350a7dcd | ||
|
|
92579e5531 | ||
|
|
40a538a769 | ||
|
|
b6e4bc966f | ||
|
|
03815967d2 | ||
|
|
7049bf19d9 | ||
|
|
c69c3bb090 | ||
|
|
7238d1f1c9 | ||
|
|
9f82c55c5b | ||
|
|
87be68e2e8 | ||
|
|
7b1dec0d77 | ||
|
|
f8af5d999a | ||
|
|
8efd8620c8 | ||
|
|
e8a795befb | ||
|
|
b5690f00e2 | ||
|
|
65f74da7a4 | ||
|
|
429d0f3071 | ||
|
|
4baf30cf9c | ||
|
|
a3882160fa | ||
|
|
cd85a28e98 | ||
|
|
e33a918c24 | ||
|
|
df82fade2c | ||
|
|
2d2bd47075 | ||
|
|
bdd1b16ba0 | ||
|
|
5383943fa7 | ||
|
|
8ac3978222 | ||
|
|
c9a6d2a750 | ||
|
|
64cfc26ff3 | ||
|
|
7c87bbc19a | ||
|
|
4a524a220e | ||
|
|
2216eee678 | ||
|
|
28c97f181a | ||
|
|
0cfc9c720e | ||
|
|
05b5273136 | ||
|
|
c35a764019 | ||
|
|
8c95e82a63 | ||
|
|
79d644c257 | ||
|
|
2d07b08260 | ||
|
|
1f45e47e36 | ||
|
|
dac1942cad | ||
|
|
6d8cb5181f | ||
|
|
d174bb1143 | ||
|
|
dc946e175e | ||
|
|
9f278b1ffc | ||
|
|
6fade84535 | ||
|
|
0ff33d1c16 | ||
|
|
1999e38ba5 | ||
|
|
17de9fec9f | ||
|
|
751094cffb | ||
|
|
012e47267f | ||
|
|
bd5e91c31f | ||
|
|
9e7844796b | ||
|
|
209f7ffb00 | ||
|
|
28e997691f | ||
|
|
3f418c6fdc | ||
|
|
0362b41f3b | ||
|
|
4fa4c5f532 | ||
|
|
3088e1ebe1 | ||
|
|
6a7c66aa05 | ||
|
|
3b1d396e0a | ||
|
|
463c968cac | ||
|
|
41b8b207d4 | ||
|
|
9535121c1e | ||
|
|
9988ecec5e | ||
|
|
d573599a7e | ||
|
|
d831ab335a | ||
|
|
d7a9d06360 | ||
|
|
d69d658531 | ||
|
|
5c89c0f1be | ||
|
|
964d04322c | ||
|
|
8157c729d6 | ||
|
|
a1b7516cf8 | ||
|
|
1e70400143 | ||
|
|
6e956b45ad | ||
|
|
59a014d866 | ||
|
|
76c9d3565c | ||
|
|
8c484a333d | ||
|
|
0605161236 | ||
|
|
f9272773ac | ||
|
|
e2fca47a27 | ||
|
|
92ba36bdec | ||
|
|
72efddc066 | ||
|
|
bcf512e529 | ||
|
|
6d551357ff | ||
|
|
0219ed4fe3 | ||
|
|
cc7c1819ce | ||
|
|
1a4469d388 | ||
|
|
4e63d93005 | ||
|
|
481a0aa1eb | ||
|
|
6764a6a7ec | ||
|
|
dae268a836 | ||
|
|
096a4b9bdb | ||
|
|
e65a45ce17 | ||
|
|
01b3cb190c | ||
|
|
6faf1e44f5 | ||
|
|
2307dcab8a | ||
|
|
eba05513f7 | ||
|
|
2f7060ce56 | ||
|
|
c28c698bbf | ||
|
|
b55eaf8f16 | ||
|
|
3d4beaf41f | ||
|
|
50ccb67185 | ||
|
|
14d3abacf4 | ||
|
|
857f813a24 | ||
|
|
8639e92606 | ||
|
|
5498986e15 | ||
|
|
eb827603c3 | ||
|
|
6e1dbfb16e | ||
|
|
748300631a | ||
|
|
6d5309527c | ||
|
|
aafcba436e | ||
|
|
28ceeac796 | ||
|
|
ecdfb31553 | ||
|
|
8d920f9dc4 | ||
|
|
5f85550664 | ||
|
|
b548342acc | ||
|
|
ee961daef6 | ||
|
|
ce42ae9622 | ||
|
|
47ffc0babc | ||
|
|
612a183776 | ||
|
|
396d85cd53 | ||
|
|
038f432752 | ||
|
|
ef886dff53 | ||
|
|
2cae1df42f | ||
|
|
82c0fea708 | ||
|
|
d6b30466c1 | ||
|
|
b0e18de1b6 | ||
|
|
b7e889339d | ||
|
|
2a5736b876 | ||
|
|
b176591261 | ||
|
|
c44baf913d | ||
|
|
0987171280 | ||
|
|
47c02965e9 | ||
|
|
ce561a6c43 | ||
|
|
b4b389c27e | ||
|
|
437c85da39 | ||
|
|
62115ea988 | ||
|
|
3ed1269753 | ||
|
|
a5ec1e4b27 | ||
|
|
a815492111 | ||
|
|
f3aa88cf83 | ||
|
|
f26a9c67be | ||
|
|
d837a25be7 | ||
|
|
78fae5195b | ||
|
|
e7304e86ce | ||
|
|
d7b95cb2e1 | ||
|
|
45ed7dcdaa | ||
|
|
d809b6dae7 | ||
|
|
a1cc4e5774 | ||
|
|
21c33f7030 | ||
|
|
2e32457032 | ||
|
|
e4ed873d60 | ||
|
|
e35dcd0e42 | ||
|
|
ec15dc9342 | ||
|
|
fb87039d8c | ||
|
|
e9a71b7db9 | ||
|
|
df215f228d | ||
|
|
4f8f044644 | ||
|
|
4380c7c712 | ||
|
|
4abc722eff | ||
|
|
11225eb599 | ||
|
|
e16bd057d8 | ||
|
|
29a152edb0 | ||
|
|
e99e6832f2 | ||
|
|
ff4e8dbef1 | ||
|
|
d265ac6c2d | ||
|
|
dc1760769f | ||
|
|
c6eb09cd63 | ||
|
|
e080c3168c | ||
|
|
ea06565007 | ||
|
|
4ae189f77d | ||
|
|
ebf4f3cb12 | ||
|
|
4d1cdf0270 | ||
|
|
ceffdca8a2 | ||
|
|
bb7f48496a | ||
|
|
da7cda3c82 | ||
|
|
31a5816fb4 | ||
|
|
a443257aaa | ||
|
|
60b7d15a1d | ||
|
|
2b646b3fa0 | ||
|
|
86f5294436 | ||
|
|
fe03f91744 | ||
|
|
9fcd5b1801 | ||
|
|
2380c8b33a | ||
|
|
849cb65b0e | ||
|
|
84d0dce20c | ||
|
|
2150642f9d | ||
|
|
ec8da0baaa | ||
|
|
cf27fa027b | ||
|
|
01314c753b | ||
|
|
6f7b9b7d42 | ||
|
|
46ded4c026 | ||
|
|
95752390de | ||
|
|
ba342eeeb6 | ||
|
|
0e611eda19 | ||
|
|
17152d8a46 | ||
|
|
947e65c1e2 | ||
|
|
b1aaab0a8e | ||
|
|
1712ad2cde | ||
|
|
79f6ef075e | ||
|
|
97b120de67 | ||
|
|
2181041c8c | ||
|
|
e85d36cea0 | ||
|
|
188b9f36f2 | ||
|
|
6c7ad2b398 | ||
|
|
72c7afe1a1 | ||
|
|
ef7ff55535 | ||
|
|
0d3a93ea20 | ||
|
|
42d164863a | ||
|
|
06d595d944 | ||
|
|
2d66324cb2 | ||
|
|
00b7a5f1b4 | ||
|
|
d199bada33 | ||
|
|
647cbab3f4 | ||
|
|
6066cc3bab | ||
|
|
5c91a0d963 | ||
|
|
1ef7b0c43a | ||
|
|
be6136c1e9 | ||
|
|
5d158d752d | ||
|
|
2d21558a5a | ||
|
|
0034534803 | ||
|
|
3f21a0fe4d | ||
|
|
cc9235033f | ||
|
|
f61c849816 | ||
|
|
195b5a5e0a | ||
|
|
bcae2d2b93 | ||
|
|
3a6de7d940 | ||
|
|
994f98b57a | ||
|
|
44ca388b52 | ||
|
|
06a85c24ad | ||
|
|
ceaba87ba3 | ||
|
|
61acf6239c | ||
|
|
8dc8cdeea7 | ||
|
|
10ef3013e3 | ||
|
|
3899f5352f | ||
|
|
64fbf88f48 | ||
|
|
2e0964aeb8 | ||
|
|
35d878de96 | ||
|
|
d771586080 | ||
|
|
6673e408a2 | ||
|
|
422ad576ea | ||
|
|
c1a1d13aab | ||
|
|
42189ce998 | ||
|
|
43287d7fc9 | ||
|
|
06f6aaaded | ||
|
|
0c17986303 | ||
|
|
feb9959907 | ||
|
|
7409e23ce0 | ||
|
|
4572c97c9d | ||
|
|
9bca303113 | ||
|
|
7fb3ab0c3d | ||
|
|
56037fe3bc | ||
|
|
a2f8ce41cf | ||
|
|
598bd3b4ef | ||
|
|
315a7d69fb | ||
|
|
64fff6c2ff | ||
|
|
969ecd7b5d | ||
|
|
cede865693 | ||
|
|
d68395bc51 | ||
|
|
7ec523d5ea | ||
|
|
08fc906d5f | ||
|
|
f3e995ef92 | ||
|
|
a4304c97af | ||
|
|
d1ef0d17d5 | ||
|
|
c54cb4d6c8 | ||
|
|
c393d47cdf | ||
|
|
3525b6db2c | ||
|
|
d50efe5e27 | ||
|
|
2c0a1ddb3a | ||
|
|
d7ac37783c | ||
|
|
03bb50c4ea | ||
|
|
1535010ac9 | ||
|
|
8d90035bbc | ||
|
|
fd7bb9daa9 | ||
|
|
88b12bc66a | ||
|
|
a8ac82ca22 | ||
|
|
438f3cb134 | ||
|
|
131693f617 | ||
|
|
07d1f63e31 | ||
|
|
73286e8662 | ||
|
|
95c3f78c68 | ||
|
|
90df505982 | ||
|
|
e8b7114ce8 | ||
|
|
714d9c5544 | ||
|
|
f2ba9f796b | ||
|
|
e025ecc3d4 | ||
|
|
ccd2b9fc44 | ||
|
|
6cb902c499 |
10
.gitignore
vendored
10
.gitignore
vendored
@@ -1,4 +1,3 @@
|
||||
Makefile.in
|
||||
aclocal.m4
|
||||
autom4te.cache
|
||||
auto.h*
|
||||
@@ -6,8 +5,15 @@ config.h.in
|
||||
config.status
|
||||
src/.deps
|
||||
src/Makefile
|
||||
src/task
|
||||
*/*task
|
||||
stamp-h1
|
||||
Makefile
|
||||
Makefile.in
|
||||
configure
|
||||
config.log
|
||||
www.xls
|
||||
src/tests/all.log
|
||||
src/tests/*.data
|
||||
*~
|
||||
.*.swp
|
||||
package-config/osx/binary/task
|
||||
|
||||
49
AUTHORS
49
AUTHORS
@@ -1,7 +1,46 @@
|
||||
Principal Author:
|
||||
Paul Beckingham, paul@beckingham.net
|
||||
The development of task was made possible by the significant contributions of the following people:
|
||||
Paul Beckingham (Principal Author)
|
||||
Federico Hernandez (Package Maintainer & Contributing Author)
|
||||
David J Patrick (Designer)
|
||||
John Florian (Contributing Author)
|
||||
Cory Donnelly (Contributing Author)
|
||||
|
||||
With thanks to:
|
||||
The following submitted code, packages or analysis, and deserve special thanks:
|
||||
Damian Glenny
|
||||
Andy Lester
|
||||
H. İbrahim Güngör
|
||||
Stefan Dorn
|
||||
Michael Greb
|
||||
Benjamin Tegarden
|
||||
Chris Pride
|
||||
Richard Querin
|
||||
T. Charles Yun
|
||||
P.C. Shyamshankar
|
||||
Johan Friis
|
||||
Steven de Brouwer
|
||||
Pietro Cerutti
|
||||
Alexander Neumann
|
||||
|
||||
Thanks to the following, who submitted detailed bug reports and excellent suggestions:
|
||||
Eugene Kramer
|
||||
SK
|
||||
|
||||
Srijith K
|
||||
Bruce Israel
|
||||
Thomas Engel
|
||||
Nishiishii
|
||||
galvanizd
|
||||
Stas Antons
|
||||
Vincent Fleuranceau
|
||||
ArchiMark
|
||||
Carlos Yoder
|
||||
Russell Friesenhahn
|
||||
Paolo Marsi
|
||||
Eric Farris
|
||||
Bruce Dillahunty
|
||||
Askme Too
|
||||
Mike Adonay
|
||||
Thomas@BIC
|
||||
Ian Mortimer
|
||||
Zach Frazier
|
||||
Ivo Jimenez
|
||||
Joe Pulliam
|
||||
Juergen Daubert
|
||||
|
||||
647
ChangeLog
647
ChangeLog
@@ -1,36 +1,538 @@
|
||||
1.1.0 (?)
|
||||
- Command line specification of alternate .taskrc file
|
||||
|
||||
------ reality -----------------------------------
|
||||
------ current release ---------------------------
|
||||
|
||||
1.0.0 (6/3/2008)
|
||||
+ New movie made, uploaded
|
||||
+ Bug: assertion fails on mobile for t v
|
||||
+ Bug: configure.ac does not properly determine ncurses availability
|
||||
+ Bug: Cannot seem to use the percent character in a task description
|
||||
+ Bug: New installation "task stats" reports newest task 12/31/1969
|
||||
+ Bug: New installation task projects displays header but no data - should short-circuit
|
||||
+ Bug: incorrect color specification in sample .taskrc file
|
||||
+ Bug: when run without arguments, task dumps core on Solaris 10
|
||||
+ "task calendar" now reports all months with due pending tasks
|
||||
+ Added rules for colorization by tag, project and keyword
|
||||
+ Added legend to "task calendar"
|
||||
1.9.0 (2/22/2010)
|
||||
+ Added feature #283 that makes it possible to control the verbosity
|
||||
of the output of annotations.
|
||||
+ Added feature #254 (#295) which gives task a second date format to be
|
||||
used in the reports with more conversion sequences like weekday name
|
||||
or weeknumber. The date format is set with variable "dateformat.report".
|
||||
+ Added feature #292 that permits alternate line coloration in reports
|
||||
(thanks to Richard Querin).
|
||||
+ Added feature #307 that provides vim with syntax highlighting for .taskrc.
|
||||
+ Added feature #336 which gives task a 'prepend' command for symmetry
|
||||
with the 'append' command.
|
||||
+ Added feature #341 that makes explicit references to the task and taskrc
|
||||
man pages, both in the auto-generated .taskrc file and the version command
|
||||
output (thanks to Cory Donnelly).
|
||||
+ The 'delete' command is now aliased to 'rm' (thanks to Ivo Jimenez).
|
||||
+ Added new attribute modifiers 'word' and 'noword' which find the existence
|
||||
of whole words, or prove the non-existence of whole words. If a task has
|
||||
the description "Pay the bill", then "description.word:the" will match, but
|
||||
"description.word:th" will not. For partial word matches, there is still
|
||||
"description.contains:th".
|
||||
+ Added new 'config' command to display the configuration settings of task.
|
||||
As a consequence 'version' now only shows the version number and legal
|
||||
information.
|
||||
+ The 'config' command now complains about use of deprecated color names in
|
||||
your .taskrc file.
|
||||
+ Added feature #296, that allows the 'config' command to modify your .taskrc
|
||||
settings directly, with the command 'task config <name> <value>', or
|
||||
'task config <name>' to remove the setting.
|
||||
+ Task now supports nested .taskrc files using the "include /path" directive.
|
||||
+ The 'entry', 'start' and 'end' columns now have equivalents that include the
|
||||
time, and are called 'entry_time', 'start_time', and 'end_time', for use in
|
||||
custom reports.
|
||||
+ 2 new columns have been added to the reports: countdown and
|
||||
countdown_compact. They show the days left until a task is due or how many
|
||||
days a task has been overdue.
|
||||
+ The new 'priority_long' field can be shown in custom reports, and will
|
||||
display 'High' rather than the abbreviated 'H'.
|
||||
+ Task now supports .taskrc command line overrides using rc.name:value and
|
||||
the new rc.name=value to accommodate a frequent mistake.
|
||||
+ The color rules for projects (color.project.foo) now matches on partial
|
||||
project names, the same way as filters.
|
||||
+ The color command now takes a color as an argument, and displays that color
|
||||
with sample text.
|
||||
+ Added 2 new configuration variables to display the details of tasks with due
|
||||
dates when doing a 'task cal' for the corresponding months:
|
||||
'calendar.details' and 'calendar.details.report'
|
||||
+ Added 5 new color configuration variables to colorize today, days with due
|
||||
tasks, days with overdue tasks, weekend days and week numbers in the
|
||||
calendar:
|
||||
'calendar.color.today', 'color.calendar.due', 'calendar.calendar.overdue',
|
||||
'color.calendar.weekend'and 'color.calendar.weeknumber'.
|
||||
+ Added support for holidays in the calendar by using calendar.holidays
|
||||
and the corresponding holiday.X.name and holiday.X.date variables.
|
||||
The default dateformat being YMD (20101224) set by dateformat.holiday.
|
||||
+ The coloring of due tasks in reports can now be enabled for all tasks, and
|
||||
not only the imminent ones, by setting the configuration variable due=0.
|
||||
+ Tasks due on the current day ("today") can now have their own color setting
|
||||
color.due.today and color.calendar.due.today.
|
||||
+ Added a new 'task-faq' man page for common questions and answers.
|
||||
+ Added a new 'task-color' man page detailing how to set up and use color in
|
||||
task.
|
||||
+ Added feature #176, which allows for configurable case-sensitivity for
|
||||
keyword
|
||||
searches and substitutions (thanks to John Florian).
|
||||
+ Task can now use an alternate tag indicator by setting the tag.indicator
|
||||
configuration variable to something other than the default of +.
|
||||
+ Task can now use an alternate active indicator by setting the
|
||||
active.indicator configuration variable to something other than the default
|
||||
of *.
|
||||
+ Task can now use an alternate recurrence indicator by setting the
|
||||
recurrence.indicator configuration variable to something other than the
|
||||
default of R.
|
||||
+ Added a new file, README.build, which provides assistance troubleshooting
|
||||
build-related problems on different operating systems and environments.
|
||||
+ Fixed bug #316 which caused the timesheet report to display an oddly sorted
|
||||
list.
|
||||
+ Fixed bug #317 which colored tasks in the 'completed' report according to
|
||||
due dates, which are no longer relevant to a completed task (thanks to
|
||||
Cory Donnelly).
|
||||
+ Fixed bug #347 which used only a lowercase "all" to confirm multiple changes
|
||||
instead of an uppercase "All" like the "Yes" answer.
|
||||
+ Fixed bug that was causing the 'completed' report to sort incorrectly.
|
||||
+ Fixed bug that showed a calendar for the year 2037 when 'task calendar due'
|
||||
was run, and there are no tasks with due dates.
|
||||
+ Fixed bug #360 which prevented certain modifications to recurring tasks
|
||||
(thanks to John Florian).
|
||||
+ Fixed bug #299 which prevented excluding multiple projects from a report,
|
||||
by using "task list project.isnt:foo project.isnt:bar" (thanks to John
|
||||
Florian).
|
||||
+ Fixed bug #368 which caused recurring tasks 'until' dates to be rendered as
|
||||
epoch numbers instead of dates (thanks to Cory Donnelly).
|
||||
+ Fixed bug #369 which prevented the config command from setting quoted or
|
||||
unquoted multi-word values (thanks to Richard Querin).
|
||||
+ Fixed bug #370 which prevented the removal of a due date from a task,
|
||||
mis-identifying the task as recurring just because it had a due date
|
||||
(thanks to John Florian).
|
||||
+ Fixed bug #371 which caused task to mis-apply certain color rules, like
|
||||
color.alternate, which was (a) not applied first, and (b) not blended
|
||||
with the other color rules (thanks to Richard Querin).
|
||||
+ Fixed bug #372 which incorrectly mapped 16-color backgrounds into the
|
||||
256-color space.
|
||||
|
||||
0.9.9 (5/27/2008)
|
||||
------ old releases ------------------------------
|
||||
|
||||
1.8.5 (12/05/2009) a6c7236ff34e5eee3ef1693b97cb1367e6e3c607
|
||||
+ Added feature to allow the user to quit when asked to confirm multiple
|
||||
changes. Now task asks "Proceed with change? (Yes/no/all/quit)".
|
||||
+ Added feature #341 that makes explicit references to the task and taskrc
|
||||
man pages, both in the auto-generated .taskrc file and the version command
|
||||
output (thanks to Cory Donnelly).
|
||||
+ Added feature - #310 that simplified and make clearer an error message
|
||||
that complained about things that were beyond user control (thanks to
|
||||
John Florian).
|
||||
+ Fixed bug that was causing the 'completed' report to sort incorrectly.
|
||||
+ Fixed bug #321 where all shell input was converted to lower case (thanks
|
||||
to Juergen Daubert).
|
||||
+ Fixed bug #327 that allowed the removal of a due date from a recurring
|
||||
task.
|
||||
+ Fixed bug #317 which colored tasks in the 'completed' report according
|
||||
to due dates, which are no longer relevant to a completed task (thanks
|
||||
to Cory Donnelly).
|
||||
+ Fixed bug that was causing the 'completed' report to sort incorrectly.
|
||||
+ Fixed bug #322 which failed to propagate rc overrides to shell commands.
|
||||
+ Fixed redundant messages when exiting shell mode.
|
||||
+ Fixed bug #333 which failed to display the ID of a duplicated task (thanks
|
||||
to Cory Donnelly).
|
||||
+ Fixed bug #332 where task complained that the 'recur_ind' custom report
|
||||
column was invalid. It was misnamed in the documentation, which should
|
||||
have read 'recurrence_indicator'. Also, the 'tag_indicator' column was
|
||||
not mentioned anywhere (thanks to T. Charles Yun).
|
||||
+ Fixed bug #319 that caused task to not properly detect the removal of a
|
||||
tag when obtaining confirmation from the user fora bulk modification
|
||||
(thanks to Cory Donnelly).
|
||||
|
||||
1.8.4 (11/17/2009) 12c4983936d27317df100f05da8244139dd06a3f
|
||||
+ Fixed bug that caused wait: dates to not be properly rendered in a
|
||||
readable and preferred format with the "edit" command.
|
||||
+ Fixed bug that caused a hang on cygwin, when a task with multiple
|
||||
annotations was edited (thanks to Joe Pulliam).
|
||||
+ Fixed bug #314 where the edit command fails when data.location includes
|
||||
directories containing spaces (thanks to Cory Donnelly).
|
||||
+ Added a warning (issue #312) when modifying recurring tasks, that all
|
||||
instances of that task may be modified. When task confirms a bulk edit
|
||||
the recurrence is again indicated (thanks to Cory Donnelly).
|
||||
|
||||
1.8.3 (10/21/2009) bcdcbeeea0d92f21c3565aebfaf6332b959f4025
|
||||
+ Added support for Haiku R1/alpha1
|
||||
|
||||
1.8.2 (9/7/2009) f243f0ed443ecd7dde779de8a6525222591024db
|
||||
+ Added feature #282 that returns useful exit codes to the shell. Now a
|
||||
script can detect whether no tasks were returned by a report (thanks to
|
||||
Pietro Cerutti).
|
||||
+ Fixed bug #287 that causes color control codes to be written to shadow
|
||||
files (thanks to Richard Querin).
|
||||
+ Fixed bug #289 which imported task from todo.sh without valid uuids
|
||||
(thanks to Ben Jackson).
|
||||
+ Fixed bug #291 which generated a false warning about an unrecognized
|
||||
variable when enabling default.projects in .taskrc (thanks to Thomas@BIC).
|
||||
+ Fixed bug #288 which failed to propagate rc file overrides on the command
|
||||
line to the default command (thanks to Zach Frazier).
|
||||
|
||||
1.8.1 (8/20/2009) 35792e7874d2bb664abb1a0a67960b7fe7e0fccf
|
||||
+ Fixed bug #231 that broke the build on OpenBSD 32-bit due to a time_t
|
||||
and int collision (thanks to Pietro Cerutti).
|
||||
+ Fixed bug #241 that prevented bash's tab-completion of projects in Fedora
|
||||
11 and likely anything using bash-4 (thanks to John Florian).
|
||||
+ Fixed bug #242 that sometimes causes the ID echoed after a task is added
|
||||
to be incorrect (thanks to John Florian).
|
||||
+ Fixed bug #245 that quoted date fields on export, that were subsequently
|
||||
improperly parsed on import (thanks to John Florian).
|
||||
+ Fixed bug #248 where single and double quotes are both stored as
|
||||
ampersand-quot-semi (thanks to John Florian).
|
||||
+ Fixed bug #249 that caused annotations with the same date to be lost after
|
||||
a "task edit" command (thanks to Federico Hernandez).
|
||||
+ Fixed bug #250 whereby rc.dateformat was not observed when parsing the
|
||||
creation date of an annotation (thanks to Federico Hernandez).
|
||||
+ Fixed bug #251 whereby the presence of annotations cause the .hasnt attribute
|
||||
modifier to not work (thanks to John Florian).
|
||||
+ Fixed bug #252 that prevented use of attribute modifiers on dates to effect
|
||||
a range, such as "task ls due.after:eom due.before:eoy" (thanks to John
|
||||
Florian).
|
||||
+ Fixed bug #256 that allowed a recurring task with no due date.
|
||||
+ Fixed bug #257 where an extant ~/.taskrc file prevented the override and
|
||||
automatic creation of an alternate rc file (thanks to Zach Frazier).
|
||||
+ Fixed bug #259 that cause a build failure on Snow Leopard 10a432.
|
||||
+ Fixed bug #260 whereby the start, stop and delete commands did not complain
|
||||
when filter arguments were specified, even though they were ignored
|
||||
(thanks to T. Charles Yun).
|
||||
+ Fixed bug that allowed a recurring task to be added without a due date.
|
||||
+ Fixed bug that displays the wrong .taskrc file name on override (thanks to
|
||||
Federico Hernandez).
|
||||
+ Fixed bug that failed to suppress color control code in the header and
|
||||
footnote when redirecting output to a file (thanks to John Florian).
|
||||
|
||||
1.8.0 (7/21/2009) 14977ef317bd004dae2f2c313e806af9f2a2140c
|
||||
+ Added zsh tab completion script (thanks to P.C. Shyamshankar).
|
||||
+ Fixed bug that cause the _forcecolor configuration variable to be
|
||||
considered obsolete (thank to Bruce Dillahunty).
|
||||
+ Fixed documentation errors (thanks to Thomas@BIC).
|
||||
+ The 'weekstart' configuration variable now controls the 'calendar'
|
||||
report (thanks to Federico Hernandez).
|
||||
+ The 'displayweeknumber' configuration variable now controls the display
|
||||
of week number in the 'calendar' report (thanks to Federico Hernandez).
|
||||
+ Supports '--' argument to indicate that all subsequence arguments are
|
||||
part of the description, despite what they otherwise might mean.
|
||||
+ Removed support for the obsolete task file format 1 (never released).
|
||||
+ Fixed bug that allowed blank annotations to be added (thanks to Bruce
|
||||
Dillahunty).
|
||||
+ Supports negative tag filters, so that (task list +foo -bar) now filters
|
||||
tasks that have the "foo" tag, but do not have the "bar" tag (thanks to
|
||||
Chris Pride).
|
||||
+ Custom reports now support a more compact form of the "age" column,
|
||||
called "age_compact" (thanks to T. Charles Yun).
|
||||
+ Supports 'rc.name:value' for a command line override to .taskrc data
|
||||
(thanks to Federico Hernandez).
|
||||
+ Removed obsolete DEVELOPERS file. The online support forums at
|
||||
http://taskwarrior.org will provide better information.
|
||||
+ Fixed bug that kept some deleted tasks showing up on the calendar report
|
||||
(thanks to Federico Hernandez).
|
||||
+ Now asks the user to confirm large changes if configuration variable
|
||||
'confirmation' is set to 'yes'. A large change is one that completely
|
||||
replaces a task description, or operates on a large number of tasks,
|
||||
which defaults to 4 but is configurable via the 'bulk' configuration
|
||||
variable (thanks to John Florian).
|
||||
+ Now echoes back the new task ID on 'add' (thanks to Bruce Dillahunty).
|
||||
+ The new "shell" command provides an interactive shell for task. All
|
||||
commands are supported (thanks to Bruce Dillahunty, Federico Hernandez,
|
||||
and John Florian).
|
||||
+ New "recurring" report to list all recurring tasks.
|
||||
+ New, more flexible, more consistent, grep-able file format.
|
||||
+ If task is renamed to "cal", or there is a symlink to task called "cal",
|
||||
then task can act as a replacement for the Unix "cal" command.
|
||||
+ Supports arguments to the cal command like "month year", "year", etc.
|
||||
+ The "tags" report now shows the tag usage count.
|
||||
+ The "projects" report now shows totals by project and priority.
|
||||
+ Now supports attribute modifiers that allow much finer control over report
|
||||
filtering, for example "task list due.before:friday", or "task list
|
||||
pri.not:H" and many more.
|
||||
+ Now supports new "age_compact" and "wait" custom report columns.
|
||||
+ Now supports colorization of the header and footnote messages that are
|
||||
printed before and after report output, with the 'color.header' and
|
||||
'color.footnote' configuration variables.
|
||||
+ Now supports the 'limit' attribute, to control the number of tasks that
|
||||
are shown, for example: "task list limit:10".
|
||||
+ Now supports a debug mode that can be used to generate helpful information
|
||||
when reporting a problem. Just run the command with "task rc.debug:on ..."
|
||||
and diagnostics will be generated that will help pinpoint a problem.
|
||||
+ The new "undo" command replaces the old "undo" and "undelete" command
|
||||
with a complete undo stack that can rollback all changes.
|
||||
+ While waiting for a file lock, task states the reason for the delay.
|
||||
+ Now supports a 'waiting' state that causes tasks to not appear until
|
||||
a certain date, for example "task <ID> wait:<date>". The task
|
||||
will then not show up on any report (except 'all') until that date.
|
||||
+ The "active", "completed", "overdue" and "next" reports are now custom
|
||||
reports, and therefore modifiable.
|
||||
+ Now supports a 'waiting' custom report to list all waiting tasks.
|
||||
+ Now supports a 'recurring' custom report to list all recurring tasks.
|
||||
+ Now supports an 'all' report to list all tasks, including deleted
|
||||
+ Supports command aliases - create an alias for any command by creating
|
||||
a .taskrc entry like "alias.new_name=old_name".
|
||||
and completed tasks.
|
||||
+ Now over 1,600 unit tests, helping to maintain code quality.
|
||||
|
||||
1.7.1 (6/8/2009) 1422a15cbc470cff590bf06daad20d01fe1b05ef
|
||||
+ Fixed build failure on OpenBSD (thanks to Mike Adonay).
|
||||
+ Took the opportunity of a patch release to update the various email
|
||||
addresses and URLs in the various documents.
|
||||
|
||||
1.7.0 (5/14/2009) f6b8b39d8b4a85c30a457e9e78b582b74531bfe4
|
||||
+ Improved the errors when parsing a corrupt or unrecognized pending.data
|
||||
or completed.data file (thanks to T. Charles Yun).
|
||||
+ Added details to the "info" report about recurring tasks (thanks to T.
|
||||
Charles Yun).
|
||||
+ Now writes a sample "defaultwidth" configuration variable to the default
|
||||
.taskrc file (thanks to T. Charles Yun).
|
||||
+ Task allows commands that require an ID to now be given a sequence, which
|
||||
is a set of IDs. This allows commands like "task delete 1 2 5-10,12".
|
||||
+ Fixed bug in the ghistory report, which caused it to only show a new
|
||||
month if a task was added during that month.
|
||||
+ New command "duplicate" which allow existing task(s) to be duplicated,
|
||||
and also have modifications applied (thanks to David J Patrick).
|
||||
+ The "append", and "done" commands now allow modifications to be applied
|
||||
to the task(s) (thanks to David J Patrick).
|
||||
+ Improved word wrapping in various output.
|
||||
+ Fixed bug that added an extra line between header and graph in the
|
||||
ghistory report.
|
||||
+ Added simple 'taskprogram' mailing list subscribe form to the web site.
|
||||
+ For custom reports that define a "limit" to the number of rows of output
|
||||
such as "oldest" and "newest", task allows an override value. For
|
||||
example "task oldest 5" will display the 5 oldest tasks.
|
||||
+ Modified the "stats" report so that it has the same aesthetics as the
|
||||
other reports.
|
||||
+ New "timesheet" command displays tasks completed and started, per week,
|
||||
and can display multiple weeks.
|
||||
+ New tab completion script, task_completion.sh, for bash users, is installed
|
||||
to /usr/local/share/task (thanks to Federico Hernandez).
|
||||
+ Applied patch to allow task to build on Arch Linux (thanks to Johan Friis).
|
||||
+ Applied patch to fix a UUID bug on Solaris 8 (thanks to Steven de Brouwer).
|
||||
+ The task and taskrc man pages are here. Try "man task", "man taskrc"
|
||||
(thanks to Federico Hernandez and P.C. Shyamshankar).
|
||||
+ Fixed bug that causes task to create a default .task directory, even if
|
||||
data.location specified otherwise (thanks to Federico Hernandez).
|
||||
+ New "edit" command that fires up a text editor (uses 'editor' configuration
|
||||
variable, $VISUAL or $EDITOR environment variable) and allows direct
|
||||
editing of all editable task details.
|
||||
|
||||
1.6.1 (4/24/2009) 1b6faf57c998617024d0348a87b941a5d2ab2249
|
||||
+ Fixed bug that caused new, first-time .taskrc files to be written without
|
||||
including the custom report labels (thanks to P.C. Shyamshankar).
|
||||
|
||||
1.6.0 (4/12/2009) 06062a96eb57d10dcd7fbe1edf968bb638a0b3a9
|
||||
+ Added support for new "append" command that adds more description text to
|
||||
an existing task.
|
||||
+ Added support for the "weekdays" recurrence, which means a task can recur
|
||||
five times a week, and not on weekends (thanks to Chris Pride).
|
||||
+ UTF8 text is now supported in task project names, tags and descriptions.
|
||||
+ Fixed bug that caused the y/n confirmation on task deletion to ignore the
|
||||
Enter key and fail to re-prompt (thanks to Bruce Dillahunty).
|
||||
+ When the "echo.command" configuration variable is set to "yes", it causes
|
||||
commands that modify tasks to display which task was affected (thanks to
|
||||
Bruce Dillahunty).
|
||||
+ A task can now be annotated with the command "task <id> annotate ...", and
|
||||
a timestamped annotation will appear in reports.
|
||||
+ A 'description_only' column is now available for use in custom reports,
|
||||
and it excludes annotations.
|
||||
+ A task can now be upgraded to a recurring task by adding a recurrence
|
||||
frequency, a due date, and an optional until date.
|
||||
+ When a recurring task is modified, all other instances of the recurring
|
||||
task are also modified.
|
||||
+ Custom reports now support user-specified column labels (thanks to T.
|
||||
Charles Yun).
|
||||
+ Task can now import tasks from a variety of data formats, including task
|
||||
export files from versions 1.4.3 and earlier, versions 1.5.0 and later,
|
||||
todo.sh 2.x, CSV, plain text and task command line. See online docs for
|
||||
full details.
|
||||
+ Export was including 'id' in the column header even though it was not
|
||||
included in the data.
|
||||
+ The task file format has changed slightly. Please back up your task
|
||||
data files before upgrading to 1.6.0.
|
||||
+ Added new column 'recurrence_indicator' that displays an 'R' if the task
|
||||
is a recurring task. This column can be added to any custom report.
|
||||
+ Added new column 'tag_indicator' that displays a '+' if the task
|
||||
has any tags. This column can be added to any custom report.
|
||||
+ Fixed bug where sometimes a task description was concatenated oddly if
|
||||
there was a colon somewhere in the description.
|
||||
+ Fixed bug that caused recurring annual tasks to exhibit a creeping due
|
||||
date, because of an assumption of 365 days per year, which failed to
|
||||
consider leap years (thanks to T. Charles Yun).
|
||||
+ Annotations can now be modified with the substitution commands /from/to/.
|
||||
+ Substitutions can now be made global with /from/to/g and all occurrences
|
||||
of "from" will be replaced with "to".
|
||||
|
||||
1.5.0 (3/15/2009) 87be68e2e83d7bb628be1e5679b16a49a26d3549
|
||||
+ Removed deprecated TUTORIAL file.
|
||||
+ Removed "showage" configuration variable.
|
||||
+ "task stop" can now remove the start time from a started task.
|
||||
+ "task ghistory" now displays a differently aligned graph, allowing
|
||||
easier comparison by month of tasks added versus completed and deleted.
|
||||
+ "task version" command now reports unrecognized configuration variables,
|
||||
which may be spelling mistakes or deprecated variables.
|
||||
+ "configure --enable-debug" now supported to suppress compiler optimization
|
||||
to allow debugging.
|
||||
+ Allow lower case priorities, and automatically upper case them.
|
||||
+ Added support for "due" configuration variable which defines the number
|
||||
of days in the future when a task is considered due.
|
||||
+ Added support for custom reports, comprised of a set of column names and
|
||||
sort order, with optional filtering in the configuration file. This
|
||||
means user-defined reports can be written, and the reports currently
|
||||
in the configuration file can be renamed. Several of task's built in
|
||||
reports have been converted to user-defined reports.
|
||||
+ New online documentation for custom reports.
|
||||
+ New algorithm for determining when the "nag" message is displayed.
|
||||
+ Fixed bug where task hangs with a certain combination of recurring tasks
|
||||
and shadow files.
|
||||
+ Fixed bug with the task sort algorithm, which led to an unstable sequence
|
||||
when there were only a handful of tasks.
|
||||
+ Performance enhanced by eliminating unnecessary sorting.
|
||||
+ Task now has a large (and growing) test suite and bug regression tests
|
||||
to help ensure higher quality releases.
|
||||
+ Fixed bug that caused performance hit during table rendering.
|
||||
+ Fixed bug that concatenated a modified description without spaces.
|
||||
+ Added new column 'recur' that displays the recurrence period of any
|
||||
recurring tasks. This column can be added to any custom report.
|
||||
+ Added support for "color.recurring" configuration variable which
|
||||
specifies the color of recurring tasks.
|
||||
+ Added support for "locking" configuration variable that controls whether
|
||||
file locking is used.
|
||||
+ Task export feature now includes recurrence information, removes nested
|
||||
quotes, and limits output to pending tasks.
|
||||
+ Task no longer includes deleted tasks in the summary report (thanks to
|
||||
Benjamin Tegarden).
|
||||
+ Fixed bug that prevented the summary report from properly reporting
|
||||
recently completed tasks.
|
||||
|
||||
1.4.3 (11/1/2008) 8639e9260646c8c9224e0fc47e5d2443b46eecfc
|
||||
+ Fixed misleading task count at bottom on "info" report.
|
||||
+ Added support for a shadow file that contains a plain text task report,
|
||||
with the "shadow.file" and "shadow.command" configuration variables.
|
||||
The shadow file is automatically updated whenever the task database
|
||||
changes. Useful for integrating with "Samurize".
|
||||
+ Task now displays a message whenever a shadow file is updated, if the
|
||||
"shadow.notify" configuration variable is set "on".
|
||||
+ Bug: adding a task with a \n, \r or \f in it now fails properly.
|
||||
+ Removed "usage" command, and support for "command.logging" configuration
|
||||
variable.
|
||||
+ Added documentation for Shadow files.
|
||||
+ Added documentation for task filters.
|
||||
|
||||
1.4.2 (9/18/2008) e7304e86ce9bb80978c7055fd2a9e999619a6fb8
|
||||
+ "task undo" can now retract a "task done" command, provided no reports
|
||||
have been run (and therefore TDB::gc run).
|
||||
+ Task now correctly sorts on entire strings, instead of just the first
|
||||
character (thanks to Andy Lester).
|
||||
+ Task now uses dashes (-----) to column underlines when color is disabled
|
||||
(thanks to Vincent Fleuranceau).
|
||||
+ Task now allows mixed case attribute names (pri:, PRI:, Pri: ...) and
|
||||
commands (add, ADD, Add ...) (thanks to Vincent Fleuranceau).
|
||||
+ Task now supports a default project and priority for new tasks, via
|
||||
the new "default.project" and "default.priority" configuration variables
|
||||
(thanks to Vincent Fleuranceau).
|
||||
+ Task supports improved word-wrapping to the terminal width.
|
||||
+ Task now supports "default.command" configuration variable (for example
|
||||
it could contain "list due:tomorrow") that is the command that is run
|
||||
whenever task is invoked with no arguments.
|
||||
+ Task supports modifying the existing description of a task, with the
|
||||
following syntax: task <id> "new description ...".
|
||||
+ Bug: Now properly supports relative dates in filters (task list due:eom,
|
||||
task list due:tomorrow, task list due:23rd ...).
|
||||
+ Bug: Source now properly includes <string.h> in order to build clean
|
||||
using gcc 4.3 (thanks to H. İbrahim Güngör).
|
||||
|
||||
1.4.1 (7/18/2008) e080c3168c6064628ab85b21bd859d9875a3a9a7
|
||||
+ Bug: Descriptions can not be altered with "task 123 New description".
|
||||
+ Tweak: For "task calendar" month names are now centered over the month.
|
||||
+ Removed TUTORIAL file contents in favor of online version.
|
||||
+ Provided Mac .pkg binary.
|
||||
|
||||
1.4.0 (7/10/2008) 60b7d15a1d22e064acf0974c5d7eabbb57dd8071
|
||||
+ New recurring tasks feature.
|
||||
+ "task undelete" can now undelete erroneously deleted tasks, provided no
|
||||
reports have been run (and therefore TDB::gc run).
|
||||
+ Added averages to the "task history" report.
|
||||
+ Added ability to override ~/.taskrc with rc:<file>.
|
||||
+ Added bar chart history report "task ghistory".
|
||||
+ Added task filtering on all reports.
|
||||
+ Automatically shuts off color, curses when output is not a tty.
|
||||
+ Supports relative due: dates (tomorrow, wednesday, 23rd, eom ...).
|
||||
+ Supports the ~ character in .taskrc data.location.
|
||||
+ Allows colons on the description, provided what is to the left of the colon
|
||||
is not a standard attribute name.
|
||||
+ Bug: Fixed where Esc[0m sequences were being emitted for no good reason.
|
||||
+ Bug: Fixed underlined table headers when color is turned off.
|
||||
+ Bug: Adding a blank priority resulted in an assigned garbage value.
|
||||
+ Bug: Fixed parsing of date "07/08/2008" when using dateformat "m/d/Y".
|
||||
|
||||
1.3.1 (6/21/2008) 3a6de7d9402f2609a773a73b16eff97b14a32869
|
||||
+ New configuration variable, "defaultwidth" that determines the width
|
||||
of tables when ncurses support is not available.
|
||||
+ Bug: "showage" configuration variable should apply to all reports, not
|
||||
just the ones based on "list".
|
||||
+ Bug: Fixed segmentation faults on Ubuntu when the "dateformat"
|
||||
configuration variables was missing. This was a code bug, and should
|
||||
have affected more platforms.
|
||||
+ Bug: Task now will recreate a missing ~/.taskrc file, OR a missing
|
||||
~/.task directory.
|
||||
|
||||
1.3.0 (6/18/2008) 6673e408a223af98c38779c20b08524042c0edfa
|
||||
+ "task calendar" now displays multiple months per line, adjustable by the
|
||||
"monthsperline" configuration variable. Feature added by Damian Glenny.
|
||||
+ "task export" can now filter tasks like the reports.
|
||||
+ Factored out code to filter tasks.
|
||||
+ Displays shorter message when a command is entered incorrectly, and the
|
||||
full usage for "task help".
|
||||
+ "task oldest" shows the oldest tasks.
|
||||
+ "task newest" shows the newest tasks.
|
||||
+ Bug: Segmentation fault when no "dateformat" configuration variable
|
||||
specified.
|
||||
+ Bug: Fixed bug whereby if you have more than one task with a due date, 7
|
||||
days gets added to the entry date of task 2..n.
|
||||
+ Bug: Fixed bug whereby "1 wks" was being improperly pluralized.
|
||||
|
||||
1.2.0 (6/13/2008) c393d47cdfe7e197a31e94f4bb764474fa05ad8d
|
||||
+ Bug: "dateformat" configuration variable used to display dates, but
|
||||
not parse them.
|
||||
+ "task list x" now performs a caseless comparison between "x" and the
|
||||
description.
|
||||
+ Task sub projects supported.
|
||||
+ "showage" confguration determines whether "Age" column appears on the
|
||||
"list" and "next" reports.
|
||||
+ Improved TUTORIAL.
|
||||
|
||||
1.1.0 (6/7/2008) 73286e86628725b346db2a25fbcd4bd68efb9b3a
|
||||
+ "blanklines" configuration to stop displaying unnecessary white
|
||||
space and thus work better on small-screen devices.
|
||||
+ "dateformat" configuration now determines how dates are formatted.
|
||||
+ Better formatting of "task tags" output.
|
||||
+ http://www.beckingham.net/task.html home page set up.
|
||||
+ Added tags to the "task long" report.
|
||||
|
||||
1.0.1 (6/4/2008) d216d401217027d93581808fc8944ab7d6b85fb0
|
||||
+ Bug: UUID generator not properly terminating string.
|
||||
+ Bug: srandom/srand not called prior to UUID generation.
|
||||
|
||||
1.0.0 (6/3/2008) f3de5c07118c597091a05c7d7fe8bdeae95474c1
|
||||
+ New movie made, uploaded.
|
||||
+ Bug: assertion fails on mobile for t v.
|
||||
+ Bug: configure.ac does not properly determine ncurses availability.
|
||||
+ Bug: Cannot seem to use the percent character in a task description.
|
||||
+ Bug: New installation "task stats" reports newest task 12/31/1969.
|
||||
+ Bug: New installation task projects displays header but no data - should
|
||||
short-circuit.
|
||||
+ Bug: incorrect color specification in sample .taskrc file.
|
||||
+ Bug: when run without arguments, task dumps core on Solaris 10.
|
||||
+ "task calendar" now reports all months with due pending tasks.
|
||||
+ Added rules for colorization by tag, project and keyword.
|
||||
+ Added legend to "task calendar".
|
||||
|
||||
0.9.9 (5/27/2008) 2ecf50032226c91b406f247417a063dc17c8e324
|
||||
+ Autoconf/automake behaving properly.
|
||||
+ Clean build on OS X 10.5.
|
||||
+ Clean build on Ubuntu 8.0.
|
||||
+ Clean build on Fedora Core 8.
|
||||
+ Clean build on Fedora Core 9.
|
||||
|
||||
0.9.8 (5/25/2008)
|
||||
0.9.8 (5/25/2008) 18fd59a1edb20e5c68d086a97fae5fa9f6bb348a
|
||||
+ Added "task color" command.
|
||||
+ Removed unnecessary files.
|
||||
+ Completed documentation.
|
||||
|
||||
0.9.7 (5/24/2008)
|
||||
+ Migrated old compiler flags into Makefile.am
|
||||
+ Added ncurses endwin function check to configure.ac
|
||||
0.9.7 (5/24/2008) 25dc4150947a3e612c8118838d04b3bbe68441f7
|
||||
+ Migrated old compiler flags into Makefile.am.
|
||||
+ Added ncurses endwin function check to configure.ac.
|
||||
+ Set up structure for AUTHORS file.
|
||||
+ Set up NEWS file, with pleas for feedback.
|
||||
+ Added welcome message to README.
|
||||
@@ -41,35 +543,35 @@
|
||||
+ Removed unnecessary SAMPLE_taskrc, and assorted references.
|
||||
+ Cleaned up ChangeLog.
|
||||
+ Minor mods to standard docs.
|
||||
+ Bumped version to 0.9.7
|
||||
+ Changed some autoconf details
|
||||
+ Corrected comment in T.cpp
|
||||
+ Bumped version to 0.9.7.
|
||||
+ Changed some autoconf details.
|
||||
+ Corrected comment in T.cpp.
|
||||
+ Made unit tests compile and run again.
|
||||
+ Removed tests from distibution.
|
||||
|
||||
0.9.6 (5/13/208)
|
||||
+ Corrected wrong include file in Table.cpp
|
||||
0.9.6 (5/13/2008)
|
||||
+ Corrected wrong include file in Table.cpp.
|
||||
+ Replaced color management code.
|
||||
+ Improved color rules code.
|
||||
|
||||
0.9.5 (5/12/2008)
|
||||
+ Replaced Table storage with Grid.
|
||||
+ Added Grid.cpp to configure.ac
|
||||
+ Added Makefile to src/.gitignore
|
||||
+ Added Grid.cpp to configure.ac.
|
||||
+ Added Makefile to src/.gitignore.
|
||||
+ Makefile should not be part of the repository.
|
||||
+ Added Grid.cpp
|
||||
+ Added Grid::Cell::operator==
|
||||
+ Added Grid.cpp.
|
||||
+ Added Grid::Cell::operator==.
|
||||
+ ChangeLog file begun.
|
||||
+ Bumped version to 0.9.5 for next release.
|
||||
|
||||
0.9.4 (4/26/2008)
|
||||
+ Integrated new Grid object into build - not yet integrated into Table.
|
||||
+ More .gitignore tweaks.
|
||||
+ Added .gitignore
|
||||
+ Added .gitignore.
|
||||
+ Added more missing files.
|
||||
+ Added all source code.
|
||||
+ Generic OSS files added.
|
||||
+ Initial commit.
|
||||
+ Initial commit on Github.
|
||||
|
||||
0.9.3 (4/6/2008)
|
||||
+ Added "task completed" command.
|
||||
@@ -80,73 +582,76 @@
|
||||
+ "task" duplicated to "task_rel" for preparation of a fork.
|
||||
|
||||
0.9.1 (4/1/2008)
|
||||
+ Blank attributes read are longer be written out.
|
||||
+ Blank attributes read are no longer written out.
|
||||
+ Completed "task export" command.
|
||||
+ Added configuration values to "task version" command.
|
||||
+ Consolidated header files, removed unnecessary ones.
|
||||
|
||||
0.9.0 (3/23/2008)
|
||||
+ flat source directory
|
||||
+ autoconf complete
|
||||
+ "task next"
|
||||
+ "task stats"
|
||||
+ "task export"
|
||||
+ Rules-based colorization
|
||||
+ flat source directory.
|
||||
+ autoconf complete.
|
||||
+ "task next".
|
||||
+ "task stats".
|
||||
+ "task export".
|
||||
+ Rules-based colorization.
|
||||
|
||||
0.8.1 (1/28/2008) - 0.8.16 (3/13/2008)
|
||||
+ autoconf conversion (many builds)
|
||||
+ autoconf conversion
|
||||
|
||||
0.8.0 Polish (1/25/2008)
|
||||
+ Code cleanup, reorganization
|
||||
+ "task overdue"
|
||||
+ Add "age" column to list and long
|
||||
+ Use 'conf' for build, version tracking
|
||||
+ Add "/from/to/" description editing
|
||||
+ Code cleanup, reorganization.
|
||||
+ "task overdue".
|
||||
+ Add "age" column to list and long.
|
||||
+ Use 'conf' for build, version tracking.
|
||||
+ Add "/from/to/" description editing.
|
||||
|
||||
0.7.0 Multi-user, File handling, atomicity (1/8/2008)
|
||||
+ Clean, publishable API reimplementation
|
||||
+ File locking
|
||||
+ retain deleted tasks
|
||||
+ "task info ID" report showing all metadata
|
||||
+ Clean, publishable API reimplementation.
|
||||
+ File locking.
|
||||
+ retain deleted tasks.
|
||||
+ "task info ID" report showing all metadata.
|
||||
+ File format v2, including UUID.
|
||||
|
||||
[Development hiatus while planning for T, TDB API, new features and the future
|
||||
of the project. Seeded to two testers for feedback, suggestions.]
|
||||
of the project. Seeded to two testers for feedback, suggestions. Development
|
||||
deliberately stopped to allow extended use of task, allowing command logging and
|
||||
regular usage to determine which features were needed or unnecessary.]
|
||||
|
||||
0.6.0 Reports (12/27/2006)
|
||||
+ "task history"
|
||||
+ "task summary"
|
||||
+ "task calendar"
|
||||
+ due support
|
||||
+ Table sorting
|
||||
+ "task history".
|
||||
+ "task summary".
|
||||
+ "task calendar".
|
||||
+ due support.
|
||||
+ Table sorting.
|
||||
|
||||
0.5.0 Multi-user support (12/10/2006)
|
||||
+ Command logging
|
||||
+ "task usage" report
|
||||
+ Command logging.
|
||||
+ "task usage" report.
|
||||
|
||||
0.4.0 Destructive / modification commands (12/3/2006)
|
||||
+ "task delete" complete
|
||||
+ "task id ..." complete
|
||||
+ "task list ..." synonym for "task find ..."
|
||||
+ "task delete" complete.
|
||||
+ "task id ..." complete.
|
||||
+ "task list ..." synonym for "task find ...".
|
||||
|
||||
0.3.0 Work in progress support (12/3/2006)
|
||||
+ "task start" complete
|
||||
+ "task done" complete
|
||||
+ completed.data support
|
||||
+ "task start" complete.
|
||||
+ "task done" complete.
|
||||
+ completed.data support.
|
||||
|
||||
0.2.0 Neutral commands (12/2/2006)
|
||||
+ "task find" complete
|
||||
+ "task projects" complete
|
||||
+ "task tags" complete
|
||||
+ "task find" complete.
|
||||
+ "task projects" complete.
|
||||
+ "task tags" complete.
|
||||
|
||||
0.1.0 Constructive commands (12/1/2006)
|
||||
+ "task add" complete
|
||||
+ completed.data support
|
||||
+ ~/.taskrc support
|
||||
+ "task add" complete.
|
||||
+ completed.data support.
|
||||
+ ~/.taskrc support.
|
||||
|
||||
0.0.1 Basic infrastructure (11/29/2006)
|
||||
+ Command line parsing
|
||||
+ API layer
|
||||
+ Usage
|
||||
+ Command line parsing.
|
||||
+ API layer.
|
||||
+ Usage.
|
||||
|
||||
------ start -----------------------------------
|
||||
|
||||
|
||||
20
DEVELOPERS
20
DEVELOPERS
@@ -1,20 +0,0 @@
|
||||
Developers may wish to change task, and here is a high-level guide to the files
|
||||
included.
|
||||
|
||||
task.{cpp,h} Functions that implement the task commands, and main.
|
||||
parse.cpp Parses the command line.
|
||||
TDB.{cpp,h} The task database, performs all file I/O
|
||||
T.{cpp,h} Represents a single task - parses a record from TDB, and also
|
||||
composes record for TDB. Provides accessors for tasks.
|
||||
Grid.{cpp,h} Implements a sparse 2D array, provides data storage for the
|
||||
Table object.
|
||||
Table.{cpp,h} Implements tabular data rendering, wrapping etc.
|
||||
Config.{cpp,h} Implements a reader for the .taskrc file.
|
||||
Date.{cpp,h} General date class for the time_t type.
|
||||
text.cpp Text manipulation functions.
|
||||
util.cpp General utility functions.
|
||||
color.cpp Color support functions.
|
||||
rules.cpp Auto-colorization rules.
|
||||
|
||||
Don't forget, please send bugs, patches to task@beckingham.net
|
||||
|
||||
23
Makefile.am
23
Makefile.am
@@ -1,3 +1,24 @@
|
||||
SUBDIRS = src
|
||||
EXTRA_DIST = TUTORIAL DEVELOPERS
|
||||
|
||||
dist_man_MANS = doc/man/task.1 doc/man/taskrc.5 doc/man/task-tutorial.5 doc/man/task-faq.5 doc/man/task-color.5
|
||||
|
||||
#docdir = $(datadir)/doc/${PACKAGE}-${VERSION}
|
||||
doc_DATA = AUTHORS ChangeLog COPYING NEWS README
|
||||
|
||||
EXTRA_DIST = INSTALL README.build
|
||||
|
||||
bashscriptsdir = $(docdir)
|
||||
nobase_dist_bashscripts_DATA = scripts/bash/task_completion.sh
|
||||
|
||||
zshscriptsdir = $(docdir)
|
||||
nobase_dist_zshscripts_DATA = scripts/zsh/_task
|
||||
|
||||
vimscriptsdir = $(docdir)
|
||||
nobase_dist_vimscripts_DATA = scripts/vim/README scripts/vim/ftdetect/task.vim scripts/vim/syntax/taskdata.vim scripts/vim/syntax/taskedit.vim scripts/vim/syntax/taskrc.vim
|
||||
|
||||
i18ndir = $(docdir)
|
||||
nobase_dist_i18n_DATA = i18n/strings.de-DE i18n/strings.en-US i18n/strings.es-ES i18n/strings.fr-FR i18n/strings.nl-NL i18n/strings.sv-SE i18n/tips.de-DE i18n/tips.en-US i18n/tips.sv-SE
|
||||
|
||||
rcfiledir = $(docdir)/rc
|
||||
dist_rcfile_DATA = doc/rc/holidays-US.rc doc/rc/holidays-SE.rc doc/rc/dark-16.theme doc/rc/dark-256.theme doc/rc/light-16.theme doc/rc/light-256.theme
|
||||
|
||||
|
||||
61
NEWS
61
NEWS
@@ -1,30 +1,55 @@
|
||||
Welcome to Task 1.0.0.
|
||||
|
||||
New Features in task 1.9
|
||||
|
||||
- 256-color support
|
||||
- Support for coloring alternate lines of output. Remember that old green
|
||||
and white fan-fold printer paper?
|
||||
- Supports nested .taskrc files with the new "include" statement"
|
||||
- New columns that include the time as well as date
|
||||
- New attribute modifiers
|
||||
- New date format for reports
|
||||
- Improved .taskrc validation
|
||||
- Improved calendar report with custom coloring and optional task details output
|
||||
- Holidays are now supported in the calendar report
|
||||
- Ability to use multiple, similar filter terms, like:
|
||||
task list project.not:foo project.not:bar
|
||||
- Ability to do case-sensitive or case-insensitive search for keywords, and
|
||||
substitutions in the description and annotations.
|
||||
- Task is now part of Debian
|
||||
|
||||
Please refer to the ChangeLog file for full details. There are too many to
|
||||
list here.
|
||||
|
||||
Task has been built and tested on the following configurations:
|
||||
|
||||
- OS X 10.4 Tiger
|
||||
- OS X 10.5 Leopard
|
||||
- Fedora Core 8
|
||||
- Fedora Core 9
|
||||
- Ubuntu 8 Hardy Heron
|
||||
- Solaris 10
|
||||
* OS X 10.6 Snow Leopard and 10.5 Leopard
|
||||
* Fedora 12 Constantine and 11 Leonidas
|
||||
* Ubuntu 9.10 Karmic Koala and 9.04 Jaunty Jackalope
|
||||
* Debian Sid
|
||||
* Slackware 12.2
|
||||
* Arch Linux
|
||||
* Gentoo Linux
|
||||
* SliTaz Linux
|
||||
* CRUX Linux
|
||||
* Solaris 10 and 8
|
||||
* OpenBSD 4.5
|
||||
* FreeBSD
|
||||
* Cygwin 1.7 and 1.5
|
||||
* Haiku R1/alpha1
|
||||
|
||||
While Task has undergone testing, bugs are sure to remain. If you encounter a
|
||||
bug, please contact me at task@beckingham.net. Here is what you could do, in
|
||||
order of increasing effort (to you) and usefulness (to me):
|
||||
bug, please enter a new issue at:
|
||||
|
||||
- Do nothing. Bug probably won't get fixed.
|
||||
http://taskwarrior.org/projects/taskwarrior/issues/new
|
||||
|
||||
- Send an email to task@beckingham.net, explaining what you saw. The bug
|
||||
will be addressed, and a new release will be made. You will be a hero.
|
||||
Or you can also report the issue in the forums at:
|
||||
|
||||
- Send an email, and a reproducible test case in the form of the few commands
|
||||
it takes to recreate the problem. The bug will be addressed, and a new
|
||||
release will be made. You will be a hero.
|
||||
http://taskwarrior.org/projects/taskwarrior/boards
|
||||
|
||||
- If you are a developer, send a patch that fixes the problem. Your patch
|
||||
will be applied and tested, and a new release will be made. You will be a
|
||||
hero.
|
||||
Or just send a message to:
|
||||
|
||||
support@taskwarrior.org
|
||||
|
||||
Thank you.
|
||||
|
||||
---
|
||||
|
||||
53
README
53
README
@@ -1,48 +1,23 @@
|
||||
Thank you for taking a look at task. Task is a GTD utility featuring:
|
||||
|
||||
- Robust C++ implementation
|
||||
- Tags
|
||||
- Colorful, tabular output
|
||||
- Reports
|
||||
- Lots of commands
|
||||
- Low-level API
|
||||
- Abbreviations for all commands, options
|
||||
- Multi-user file locking
|
||||
- Clean architecture allowing quick addition of new features
|
||||
Thank you for taking a look at task!
|
||||
|
||||
It is intended that features, mainly in the form of reports will be added
|
||||
frequently, with best practices and useful reports evolving from usage patterns.
|
||||
Task is a GTD, todo list, task management, command line utility with a multitude
|
||||
of features. It is a portable, well supported, very active project, and it is
|
||||
Open Source. Task has binary distributions, online documentation, demonstration
|
||||
movies, and you'll find all the details at:
|
||||
|
||||
Task is scope-limited to GTD functionality only.
|
||||
http://taskwarrior.org
|
||||
|
||||
You may want to jump straight to the TUTORIAL file, or perhaps watch the old
|
||||
task movie on YouTube:
|
||||
At the site you'll find a wiki, discussion forums, downloads, news and more.
|
||||
|
||||
http://www.youtube.com/watch?v=l68LCl6BYvs
|
||||
Your contributions are especially welcome. Whether it comes in the form of
|
||||
code patches, ideas, discussion, bug reports, encouragement or criticism, your
|
||||
input is needed.
|
||||
|
||||
or the new improved one:
|
||||
Please send your support questions and code patches to:
|
||||
|
||||
http://www.youtube.com/watch?v=D2Kn4DMOVSw
|
||||
support@taskwarrior.org
|
||||
|
||||
Either will give you a fairly good idea of what task is capable of, and whether
|
||||
it fits in to your way of working. As a command line application, task is not
|
||||
for everyone and some of you may prefer to not proceed. The movie or TUTORIAL
|
||||
file are the quickest way for you to make that decision.
|
||||
|
||||
Task is based on ideas presented in the todo.sh script, found on:
|
||||
|
||||
http://todotxt.org
|
||||
|
||||
Task has a few more features than todo.sh, but fundamentally, they are both
|
||||
working toward the same goals, which is to help you follow basic Getting Things
|
||||
Done (GTD) principles.
|
||||
|
||||
All feedback is welcome, in addition to any bug reports or patches to:
|
||||
|
||||
task@beckingham.net
|
||||
|
||||
Got an idea for an enhancement? Send a message!
|
||||
|
||||
I have found that task makes me more productive and organized. I hope task can
|
||||
do the same for you.
|
||||
Consider joining taskwarrior.org and participating in the future of task.
|
||||
|
||||
---
|
||||
|
||||
98
README.build
Normal file
98
README.build
Normal file
@@ -0,0 +1,98 @@
|
||||
|
||||
Task Build Notes
|
||||
----------------
|
||||
|
||||
Task 1.9 has dependencies that are detected by the configure program in almost
|
||||
all cases, but there are situations and operating systems that mean you will
|
||||
need to offer configure a little help.
|
||||
|
||||
If task will not build on your system, first take a look at the Operating System
|
||||
notes below. If this doesn't help, then go to the Troubleshooting section,
|
||||
which includes instructions on how to contact us for help.
|
||||
|
||||
|
||||
|
||||
Operating System Notes
|
||||
----------------------
|
||||
|
||||
Cygwin 1.7
|
||||
Building task on Cygwin 1.7 requires a configure option:
|
||||
|
||||
./configure --with-ncurses-inc=/usr/include/ncurses
|
||||
|
||||
This is because the ncurses include files are in a different location to
|
||||
Cygwin 1.5.
|
||||
|
||||
|
||||
Haiku Alpha/R1
|
||||
Task must be built with gcc version 4.x, so make sure you run:
|
||||
|
||||
$ setgcc gcc4
|
||||
|
||||
To switch from gcc 2.95 to gcc 4.x.
|
||||
|
||||
|
||||
|
||||
Troubleshooting
|
||||
---------------
|
||||
|
||||
In most cases, it is sufficient to run the configure program like this:
|
||||
|
||||
$ ./configure
|
||||
|
||||
Configure will run and locate all the necessary pieces for the build, and create
|
||||
a Makefile. There may be errors and warnings when running configure, or there
|
||||
may be compiler errors and warnings when running 'make'. Sometimes you will run
|
||||
configure with no reported problems, and the build will fail later. This is
|
||||
almost always because configure is mistaken about some assumption.
|
||||
|
||||
The configure program can accept several options that help with its ability to
|
||||
locate and use the ncurses library. They are:
|
||||
|
||||
--with-ncurses
|
||||
|
||||
This option tells configure that no matter what it thinks, ncurses is
|
||||
definitely on this system and should be enabled. If needed, this option
|
||||
probable needs to be accompanied by the next two options.
|
||||
|
||||
--with-ncurses-inc=/usr/include
|
||||
|
||||
If configure cannot find ncurses header files, this option will tell it
|
||||
exactly where to look. The path specified in this example is the default,
|
||||
so that probably won't help you. The path should be the directory in which
|
||||
the file 'ncurses.h' resides. Here are some possible values to try:
|
||||
|
||||
/usr/include (the default shown above)
|
||||
/usr/include/ncurses
|
||||
/usr/local/include
|
||||
/usr/local/include/ncurses
|
||||
|
||||
This should cover most systems, but new variations keeps cropping up.
|
||||
|
||||
--with-ncurses-lib=/usr/lib
|
||||
|
||||
If configure cannot find the ncurses library, this option will tell it
|
||||
exactly where to look. The path specified in this example is the default,
|
||||
so that probably won't help you. The path should be the directory in which
|
||||
the file 'libncurses.a' (or your system's equivalent) resides. Here are
|
||||
some possible values to try:
|
||||
|
||||
/usr/lib
|
||||
/usr/local/lib
|
||||
|
||||
This should cover most systems, but new variations keeps cropping up.
|
||||
|
||||
--without-ncurses
|
||||
|
||||
This disables ncurses support in task, and should really be used as a last
|
||||
resort. We know of no systems where this is needed.
|
||||
|
||||
If trying these options does not succeed, please send the contents of the
|
||||
'config.log' files to support@taskwarrior.org, or post a message in the support
|
||||
forums at taskwarrior.org along with the information.
|
||||
|
||||
If configure runs, but task does not build, when ideally you would send both the
|
||||
contents of config.log, and a transcript from the build, which is not written to
|
||||
a file, and must be captured from the terminal.
|
||||
|
||||
---
|
||||
654
TUTORIAL
654
TUTORIAL
@@ -1,654 +0,0 @@
|
||||
Task program tutorial, for version 1.0.0
|
||||
----------------------------------------
|
||||
|
||||
This guide shows how to quickly set up the task program, and become proficient
|
||||
with it.
|
||||
|
||||
Contents:
|
||||
Quick Setup
|
||||
Simple Usage
|
||||
Advanced Usage
|
||||
Interacting with the Shell
|
||||
Configuring Task
|
||||
Colors
|
||||
|
||||
|
||||
|
||||
Quick Setup
|
||||
-----------
|
||||
|
||||
Build the task program according to the directions in the INSTALL file. This
|
||||
transcript illustrates a typical installation:
|
||||
|
||||
% ls
|
||||
task-1.0.0.tar.gz
|
||||
% gunzip task-1.0.0.tar.gz
|
||||
% tar xf task-1.0.0.tar
|
||||
% cd task-1.0.0
|
||||
% ./configure
|
||||
...
|
||||
% make
|
||||
...
|
||||
% make install # (may require sudo, depending on --prefix)
|
||||
|
||||
You need to make sure that the installed task program is in your PATH
|
||||
environment variable.
|
||||
|
||||
Task reads a configuration file - called .taskrc in your home directory - and
|
||||
stores pending and completed tasks in in a directory specified in the
|
||||
configuration file.
|
||||
|
||||
The simplest way to get a configuration file and task directory is to run task.
|
||||
On startup, task will check to see if it can find the configuration file and
|
||||
task directory, and if not found, will ask you whether it may create both.
|
||||
|
||||
% task version
|
||||
|
||||
A configuration file could not be found in /Users/paul/.taskrc
|
||||
|
||||
Would you like a sample .taskrc created, so task can proceed? (y/n) y
|
||||
Done.
|
||||
|
||||
[then task will show version information]
|
||||
|
||||
|
||||
Simple Usage
|
||||
------------
|
||||
|
||||
Let us begin by adding some tasks:
|
||||
|
||||
% task add Book plane ticket
|
||||
% task add Rent a tux
|
||||
% task add Reserve a rental car
|
||||
% task add Reserve a hotel room
|
||||
|
||||
That's it. You'll notice immediately that task has a very minimalist
|
||||
interface. Let us take a look at those tasks:
|
||||
|
||||
% task ls
|
||||
|
||||
ID Project Pri Description
|
||||
1 Book plane ticket
|
||||
2 Rent a tux
|
||||
3 Reserve a rental car
|
||||
4 Send John a birthday card
|
||||
|
||||
The 'ls' command provides the most minimal list of tasks. Each task has been
|
||||
given an id number, and you can see that there are no projects or priorities
|
||||
assigned. Wait a minute - I own a tux, I don't need to rent one. Let us delete
|
||||
task 2:
|
||||
|
||||
% task 2 delete
|
||||
Permanently delete task? (y/n) y
|
||||
|
||||
Task wants you to confirm deletions. To remove the confirmation, edit your
|
||||
.taskrc file and change the line:
|
||||
|
||||
confirmation=yes
|
||||
|
||||
to have a value of "no".
|
||||
|
||||
While the use of projects and priorities are not essential to benefitting from
|
||||
task, they can be very useful when the list of tasks grows large. Let's assign
|
||||
a project to these tasks:
|
||||
|
||||
% task 1 project:Wedding
|
||||
% task 3 project:Wedding
|
||||
% task 4 project:Family
|
||||
% task ls
|
||||
|
||||
ID Project Pri Description
|
||||
3 Family Send John a birthday card
|
||||
2 Wedding Reserve a rental car
|
||||
1 Wedding Book plane ticket
|
||||
|
||||
Notice that the id numbers have changed. When tasks get deleted, or have their
|
||||
attributes changed (project, for example), the ids are prone to change. But the
|
||||
id numbers will remain valid until the next 'ls' command is run. You should
|
||||
only use the ids from the most recent 'ls' command. The ids change, because
|
||||
task is always trying to use small numbers so that it is easy for you to enter
|
||||
them correctly. Now that projects are assigned, we can look at just the Wedding
|
||||
project tasks:
|
||||
|
||||
% task ls project:Wedding
|
||||
|
||||
ID Project Pri Description
|
||||
1 Wedding Book plane ticket
|
||||
2 Wedding Reserve a rental car
|
||||
|
||||
Any command arguments after the 'ls' are used for filtering the output. We
|
||||
could also have requested:
|
||||
|
||||
% task ls ticket plane
|
||||
|
||||
ID Project Pri Description
|
||||
1 Wedding Book plane ticket
|
||||
|
||||
Now let's prioritize. Priorities can be H, M or L (High, Medium, Low).
|
||||
|
||||
% task ls
|
||||
|
||||
ID Project Pri Description
|
||||
3 Family Send John a birthday card
|
||||
2 Wedding Reserve a rental car
|
||||
1 Wedding Book plane ticket
|
||||
|
||||
% task 1 priority:H
|
||||
% task 2 prior:M
|
||||
% task 3 pr:H
|
||||
Ambiguous attribute 'pr' - could be either of project, priority
|
||||
% task 3 pri:H
|
||||
% task ls
|
||||
|
||||
ID Project Pri Description
|
||||
3 Family H Send John a birthday card
|
||||
1 Wedding H Book plane ticket
|
||||
2 Wedding M Reserve a rental car
|
||||
|
||||
Notice that task supports the abbreviation of words such as priority, project.
|
||||
Priority can be abbreviated to pri, but not pr, because it is ambiguous. Now
|
||||
that tasks have been prioritized, you can see that the tasks are being sorted
|
||||
by priority, with the highest priority tasks at the top.
|
||||
|
||||
These attributes can all be provided when the task is added, instead of
|
||||
applying them afterwards, as shown. The following command shows how to set all
|
||||
the attributes at once:
|
||||
|
||||
% task add project:Wedding priority:H Book plane ticket
|
||||
|
||||
The 'ls' command provides the least information for each task. The 'list'
|
||||
command provides more:
|
||||
|
||||
% task list
|
||||
|
||||
ID Project Pri Due Active Age Description
|
||||
3 Family H 4 mins Send John a birthday card
|
||||
1 Wedding H 5 mins Book plane ticket
|
||||
2 Wedding M 5 mins Reserve a rental car
|
||||
|
||||
Notice that a task can have a due date, and can be active. The task lists are
|
||||
sorted by due date, then priority. Let's add due dates:
|
||||
|
||||
% task 3 due:6/25/2008
|
||||
% task 1 due:7/31/2008
|
||||
% task list
|
||||
|
||||
ID Project Pri Due Active Age Description
|
||||
3 Family H 6/25/2008 6 mins Send John a birthday card
|
||||
1 Wedding H 7/31/2008 7 mins Book plane ticket
|
||||
2 Wedding M 7 mins Reserve a rental car
|
||||
|
||||
If today's date is 6/23/2008, then task 3 is due in 2 days. It will be colored
|
||||
yellow if your terminal supports color. To change this color, edit your
|
||||
.taskrc file, and change the line to one of these alternatives:
|
||||
|
||||
color.due=red
|
||||
color.due=on_blue
|
||||
color.due=red on_blue
|
||||
color.due=bold_red on_blue
|
||||
|
||||
Where color is one of the following:
|
||||
|
||||
black
|
||||
blue
|
||||
red
|
||||
green
|
||||
cyan
|
||||
magenta
|
||||
yellow
|
||||
white
|
||||
|
||||
All colors are specified in this way. Take a look in .taskrc for all the other
|
||||
color rules that you control.
|
||||
|
||||
Tagging tasks is a good way to group them, aside from specifying a project. To
|
||||
add a tag to a task:
|
||||
|
||||
% task <id> +tag
|
||||
|
||||
The plus sign indicates that this is a tag. Any number of tags may be applied
|
||||
to a task, and then used for searching. Tags are just single words that are
|
||||
labels.
|
||||
|
||||
% task list
|
||||
|
||||
ID Project Pri Due Active Age Description
|
||||
3 Family H 6/25/2008 8 mins Send John a birthday card
|
||||
1 Wedding H 7/31/2008 9 mins Book plane ticket
|
||||
2 Wedding M 9 mins Reserve a rental car
|
||||
|
||||
% task 1 +phone
|
||||
% task 2 +phone
|
||||
% task 3 +shopping
|
||||
% task 3 +john
|
||||
|
||||
% task list +phone
|
||||
|
||||
ID Project Pri Due Active Age Description
|
||||
1 Wedding H 7/31/2008 9 mins Book plane ticket
|
||||
2 Wedding M 9 mins Reserve a rental car
|
||||
|
||||
To remove a tag from a task, use the minus sign:
|
||||
|
||||
% task 3 -john
|
||||
|
||||
|
||||
|
||||
Advanced Use
|
||||
------------
|
||||
|
||||
Here are the other commands, in some detail. Note that the command:
|
||||
|
||||
% task
|
||||
|
||||
with no arguments will generate a help message that lists all these commands.
|
||||
|
||||
|
||||
% task projects
|
||||
---------------
|
||||
|
||||
This report generates a list of all the different projects that you are using
|
||||
along with a count of the pending tasks for each project. For example:
|
||||
|
||||
% task projects
|
||||
|
||||
Project Tasks
|
||||
Errands 1
|
||||
Birthdays 3
|
||||
Car 2
|
||||
|
||||
|
||||
|
||||
% task summary
|
||||
--------------
|
||||
|
||||
This report lists all the projects and a summary of their task status.
|
||||
|
||||
% task summary
|
||||
|
||||
Project Remaining Avg age Complete 0% 100%
|
||||
Errands 1 3 days 50% XXXXXXXXXXXXXXXX
|
||||
Birthdays 3 7 mths 0%
|
||||
Car 2 2 wks 25% XXXXXXXXX
|
||||
|
||||
This shows the project, the remaining tasks, the average age of each task,
|
||||
the percentage completed (remaining vs total) and a bar indicating that
|
||||
percentage.
|
||||
|
||||
|
||||
|
||||
% task delete <id>
|
||||
------------------
|
||||
|
||||
There are two ways of getting rid of tasks - mark them as done, or delete
|
||||
them.
|
||||
|
||||
|
||||
|
||||
% task done <id>
|
||||
----------------
|
||||
|
||||
This is how a task is marked as done.
|
||||
|
||||
|
||||
|
||||
% task list ...
|
||||
---------------
|
||||
|
||||
The list report will show the active status, and age of the task in addition
|
||||
to the columns that "task ls" shows. It is just a more detailed list.
|
||||
|
||||
|
||||
|
||||
% task long ...
|
||||
---------------
|
||||
|
||||
The long report will show the entry date and start date of a task, in
|
||||
addition to the columns that the "task list" shows.
|
||||
|
||||
|
||||
|
||||
% task start <id>
|
||||
-----------------
|
||||
|
||||
This marks a task as started (and therefore active), which is shown in the
|
||||
"list" report:
|
||||
|
||||
% task list
|
||||
|
||||
ID Project Pri Due Active Age Description
|
||||
12 Errand L Remember to deposit check
|
||||
...
|
||||
|
||||
% task start 12
|
||||
% task list
|
||||
|
||||
ID Project Pri Due Active Age Description
|
||||
12 Errand L * 3 days Remember to deposit check
|
||||
...
|
||||
|
||||
|
||||
|
||||
% task active
|
||||
-------------
|
||||
|
||||
Shows all active tasks, that is, the tasks for which the "task start ..."
|
||||
command was run, as shown above.
|
||||
|
||||
|
||||
|
||||
% task overdue
|
||||
--------------
|
||||
|
||||
Simply lists all the task that have a due date that is past, in "list"
|
||||
format.
|
||||
|
||||
|
||||
|
||||
% task history
|
||||
--------------
|
||||
|
||||
This report shows you an overview of how many tasks were added, completed and
|
||||
deleted, by month. It looks like this:
|
||||
|
||||
% task history
|
||||
|
||||
Year Month Added Completed Deleted Net
|
||||
2008 March 21 16 0 5
|
||||
April 13 11 1 1
|
||||
May 8 14 3 -9
|
||||
|
||||
This shows that for the three months that task has been used, March and April
|
||||
saw the total number of tasks increase, but in May the number decreased as
|
||||
more task were completed than added.
|
||||
|
||||
|
||||
|
||||
% task calendar
|
||||
---------------
|
||||
|
||||
This report shows a calendar of the current month, with any task due or
|
||||
overdue dates marked on it. Color is used to mark these dates.
|
||||
|
||||
% task calendar
|
||||
|
||||
May 2008
|
||||
|
||||
Su Mo Tu We Th Fr Sa
|
||||
1 2 3
|
||||
4 5 6 7 8 9 10
|
||||
11 12 13 14 15 16 17
|
||||
18 19 20 21 22 23 24
|
||||
25 26 27 28 29 30 31
|
||||
|
||||
|
||||
|
||||
% task next
|
||||
-----------
|
||||
|
||||
This report shows you the tasks you should probable work on next. Task will
|
||||
scan all the tasks and will pick two task from each project to report. Those
|
||||
two tasks will be chosen in order of overdue, due soon, High, Medium or Low
|
||||
priority. Essentially task chooses the two most important task for each
|
||||
project and displays them ordered in the usual way.
|
||||
|
||||
If you wish to show a different number of tasks per project, modify the entry
|
||||
in .taskrc:
|
||||
|
||||
next=2
|
||||
|
||||
To be your preferred number.
|
||||
|
||||
|
||||
|
||||
% task <id> ...
|
||||
---------------
|
||||
|
||||
When a task id is specified, everything applies to just that task. Suppose
|
||||
we needed to correct a task:
|
||||
|
||||
% task ls
|
||||
|
||||
ID Project Pri Description
|
||||
12 Errand L Remember to deposit chekc
|
||||
...
|
||||
|
||||
% task 12 Remember to deposit bonus check
|
||||
% task ls
|
||||
|
||||
ID Project Pri Description
|
||||
12 Errand L Remember to deposit bonus check
|
||||
...
|
||||
|
||||
|
||||
|
||||
% task /from/to/
|
||||
----------------
|
||||
|
||||
If a task has been entered with a typo, it can be easily corrected by this
|
||||
command. For example:
|
||||
|
||||
% task ls
|
||||
|
||||
ID Project Pri Description
|
||||
12 Errand L Remember to deposit chekc
|
||||
...
|
||||
|
||||
% task 12 /chekc/check/
|
||||
% task ls
|
||||
|
||||
ID Project Pri Description
|
||||
12 Errand L Remember to deposit check
|
||||
...
|
||||
|
||||
This command makes single corrections to a task description.
|
||||
|
||||
|
||||
|
||||
% task tags
|
||||
-----------
|
||||
|
||||
This command will generate a list of all the tags that are currently in use
|
||||
by task.
|
||||
|
||||
|
||||
|
||||
% task info <id>
|
||||
----------------
|
||||
|
||||
This command gives detailed information about a single task. It will tell
|
||||
you when the task was entered, when started, its status, tags, and more.
|
||||
|
||||
|
||||
|
||||
% task stats
|
||||
------------
|
||||
|
||||
This command generates a list of statistics about your task usage, such as
|
||||
the average time it takes to complete a task, how often new tasks are added,
|
||||
and more.
|
||||
|
||||
|
||||
|
||||
% task completed
|
||||
----------------
|
||||
|
||||
This generates a list of all tasks that have been completed, sorted by their
|
||||
completion date.
|
||||
|
||||
|
||||
|
||||
% task export <file name>
|
||||
-------------------------
|
||||
|
||||
This instructs task to write out a CSV format dump of all tasks, both pending
|
||||
and completed, to the file specified. This is how you might view tasks in a
|
||||
spreadsheet.
|
||||
|
||||
|
||||
|
||||
% task colors
|
||||
-------------
|
||||
|
||||
This command displays all the colors that task supports.
|
||||
|
||||
|
||||
|
||||
% task usage
|
||||
------------
|
||||
|
||||
If logging has been enabled by the "command.logging=on" directive in the
|
||||
.taskrc file, then task will record every command that is run. When this
|
||||
command is run, task will display a count of how many times each command was
|
||||
used.
|
||||
|
||||
This command is for the purpose of seeing whether command are actually used.
|
||||
|
||||
|
||||
|
||||
% task version
|
||||
--------------
|
||||
|
||||
This can be used to show the version number of task, and to display all the
|
||||
current configuration settings, as read from the .taskrc file.
|
||||
|
||||
|
||||
|
||||
Interacting with the Shell
|
||||
--------------------------
|
||||
|
||||
Certain characters are interpreted by the shell. For example, the "&". If
|
||||
you wish to include the & in a task description, you need to escape it, so
|
||||
the shell doesn't interpret it. For example:
|
||||
|
||||
% task add Buy bread & milk
|
||||
|
||||
This command is an error because of the &. The shell will consider this to
|
||||
be two commands:
|
||||
|
||||
% task add Buy bread &
|
||||
% milk
|
||||
|
||||
The shell treats the & character as an indicator that the command is complete
|
||||
and should be run in the background. Then the shell considers "milk" to be a
|
||||
command all by itself. Which it is not. One way to get around this is to
|
||||
individually escape the & character:
|
||||
|
||||
% task add Buy bread \& milk
|
||||
|
||||
Another is to quote the entire description, with either ' or " characters:
|
||||
|
||||
% task add "Buy bread & milk"
|
||||
|
||||
Task itself interprets the commands, and it too can make mistakes. For
|
||||
example, any colon : character will be interpreted by task as a delimiter
|
||||
between an attribute name and its value. Currently there is no workaround
|
||||
for this.
|
||||
|
||||
|
||||
|
||||
% task <id> fg:... bg:...
|
||||
-------------------------
|
||||
|
||||
Not strictly a command, the setting of the fg and bg (foreground and
|
||||
background) attributes determines the colors used to represent the task.
|
||||
Valid foreground colors are:
|
||||
|
||||
Valid background colors are:
|
||||
|
||||
Note that these are not just colors, but combinations of colors and
|
||||
attributes.
|
||||
|
||||
Note also that this capability does depend on whether your terminal program
|
||||
can display these colors.
|
||||
|
||||
|
||||
|
||||
|
||||
Configuring Task
|
||||
----------------
|
||||
|
||||
Task recognizes several entries in the .taskrc file for configuration
|
||||
purposes. Valid entries are of the form:
|
||||
|
||||
name=value
|
||||
|
||||
Valid examples are:
|
||||
|
||||
data.location This is a path to the directory containing all the task
|
||||
files. By default, it is set up to be ~/.task, for
|
||||
example: /Users/paul/.task
|
||||
|
||||
command.logging May be "on" or "off", defaulting to "off". This
|
||||
determines whether task records commands. This is not
|
||||
generally useful, except while developing task.
|
||||
|
||||
confirmation May be "yes" or "no", and determines whether task will
|
||||
ask for confirmation before deleting a task.
|
||||
|
||||
nag This may be a string of text, or blank. It is used as
|
||||
a prompt when a task is completed that is not considered
|
||||
high priority. The "task next" command lists important
|
||||
tasks, and completing one of those does not generate
|
||||
this nagging. Default value is:
|
||||
|
||||
Note: try to stick to high priority tasks.
|
||||
See "task next".
|
||||
|
||||
next Is a number, defaulting to 2, which is the number of
|
||||
tasks for each project that are shown in the "task next"
|
||||
command.
|
||||
|
||||
curses Determines whether task uses ncurses to establish the
|
||||
size of the window you are using, for text wrapping.
|
||||
|
||||
color May be "on" or "off". Determines whether task uses
|
||||
color.
|
||||
|
||||
color.overdue These are the coloration rules. They correspond to a
|
||||
color.due particular attribute of a task, such as it being due, or
|
||||
color.pri.H being active, and specifies the automatic coloring of
|
||||
color.pri.M that task.
|
||||
color.pri.L
|
||||
color.pri.none The value may be one optional foreground color (see
|
||||
color.active below) and one optional background color.
|
||||
color.tagged
|
||||
For example, the value may be:
|
||||
|
||||
bold_red on_bright_yellow
|
||||
|
||||
color.tag.X Colors any task that has the tag X.
|
||||
|
||||
color.project.X Colors any task assigned to project X.
|
||||
|
||||
color.keyword.X Colors any task where the description contains X.
|
||||
|
||||
|
||||
Colors
|
||||
------
|
||||
|
||||
Task supports color in several places. In cases where you may specify a
|
||||
color, a foreground, a background, or a combination foreground and background
|
||||
color may be used. The following are valid foreground colors:
|
||||
|
||||
bold underline bold_underline
|
||||
black bold_black underline_black bold_underline_black
|
||||
red bold_red underline_red bold_underline_red
|
||||
green bold_green underline_green bold_underline_green
|
||||
yellow bold_yellow underline_yellow bold_underline_yellow
|
||||
blue bold_blue underline_blue bold_underline_blue
|
||||
magenta bold_magenta underline_magenta bold_underline_magenta
|
||||
cyan bold_cyan underline_cyan bold_underline_cyan
|
||||
white bold_white underline_white bold_underline_white
|
||||
|
||||
and the following are valid background colors:
|
||||
|
||||
on_black on_bright_black
|
||||
on_red on_bright_red
|
||||
on_green on_bright_green
|
||||
on_yellow on_bright_yellow
|
||||
on_blue on_bright_blue
|
||||
on_magenta on_bright_magenta
|
||||
on_cyan on_bright_cyan
|
||||
on_white on_bright_white
|
||||
|
||||
@@ -1,36 +0,0 @@
|
||||
Some considerable time ago - longer than I had hoped - I demonstrated an
|
||||
alternate implementation of the todo script, called task, in the form of a
|
||||
YouTube movie:
|
||||
|
||||
http://www.youtube.com/watch?v=l68LCl6BYvs
|
||||
|
||||
A lot has happened since then, and the task program has been slowly improving
|
||||
thanks to feedback from some early testers, and continuous use by me. Today,
|
||||
I have uploaded a new movie:
|
||||
|
||||
http://www.youtube.com/watch?v=D2Kn4DMOVSw
|
||||
|
||||
This movie includes most of the changes and improvements to task, but behind
|
||||
the scenes are the biggest changes. There was a rewrite of the underlying
|
||||
storage mechanism yielding a clean API for the front end, and the code was
|
||||
reviewed for portability and converted to use GNU autoconf/automake.
|
||||
|
||||
Task has been released under GPL, and so far has been tested on:
|
||||
|
||||
Max OS X 10.4 (Tiger)
|
||||
Max OS X 10.5 (Leopard)
|
||||
Fedora 8
|
||||
Fedora 9
|
||||
Ubuntu 8 (Hardy Heron)
|
||||
Solaris 10
|
||||
|
||||
Task has been making me more organized and productive for some time now.
|
||||
Perhaps some of you might find it useful, and I welcome feedback of all kinds.
|
||||
|
||||
You can find the task source code at:
|
||||
|
||||
http://www.beckingham.net/task-1.0.0.tar.gz
|
||||
|
||||
Thank you.
|
||||
Paul Beckingham
|
||||
|
||||
179
configure.ac
179
configure.ac
@@ -2,24 +2,178 @@
|
||||
# Process this file with autoconf to produce a configure script.
|
||||
|
||||
AC_PREREQ(2.61)
|
||||
AC_INIT(task, 1.0.1, bugs@beckingham.net)
|
||||
AM_INIT_AUTOMAKE
|
||||
AC_CONFIG_SRCDIR([src/task.cpp])
|
||||
AC_CONFIG_HEADER([auto.h])
|
||||
AC_INIT(task, 1.9.0, support@taskwarrior.org)
|
||||
|
||||
# Checks for programs.
|
||||
|
||||
# Source type.
|
||||
AC_PROG_CXX
|
||||
AC_PROG_CC
|
||||
AC_LANG(C++)
|
||||
|
||||
# Checks for libraries.
|
||||
AC_CHECK_LIB(ncurses,initscr)
|
||||
AC_CHECK_LIB(ncurses,endwin)
|
||||
|
||||
# Local copies for modification and later AC_SUBST.
|
||||
CFLAGS="${CFLAGS=}"
|
||||
CXXFLAGS="${CXXFLAGS=}"
|
||||
|
||||
|
||||
# this macro is used to get the arguments supplied
|
||||
# to the configure script (./configure --enable-debug)
|
||||
# Check if we have enable debug support.
|
||||
AC_MSG_CHECKING(whether to enable debugging)
|
||||
debug_default="no"
|
||||
AC_ARG_ENABLE(debug, [ --enable-debug=[no/yes] turn on debugging
|
||||
[default=$debug_default]],, enable_debug=$debug_default)
|
||||
|
||||
if test "x$enable_debug" = "xyes"; then
|
||||
CFLAGS="$CFLAGS -Wall -pedantic -ggdb3 -DDEBUG"
|
||||
CXXFLAGS="$CXXFLAGS -Wall -pedantic -ggdb3 -DDEBUG"
|
||||
AC_MSG_RESULT(yes)
|
||||
else
|
||||
CFLAGS="$CFLAGS -Wall -pedantic -O3"
|
||||
CXXFLAGS="$CXXFLAGS -Wall -pedantic -O3"
|
||||
AC_MSG_RESULT(no)
|
||||
fi
|
||||
|
||||
|
||||
# Check for OS.
|
||||
OS=`uname|sed -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'|cut -c 1-5`
|
||||
if test "$OS" = "sunos"; then
|
||||
AC_MSG_NOTICE([OS Solaris detected])
|
||||
AC_DEFINE([SOLARIS], [], [Compiling on Solaris])
|
||||
elif test "$OS" = "darwi"; then
|
||||
AC_MSG_NOTICE([OS Darwin detected])
|
||||
AC_DEFINE([DARWIN], [], [Compiling on Darwin])
|
||||
elif test "$OS" = "cygwi"; then
|
||||
AC_MSG_NOTICE([OS Cygwin detected])
|
||||
AC_DEFINE([CYGWIN], [], [Compiling on Cygwin])
|
||||
elif test "$OS" = "openb"; then
|
||||
AC_MSG_NOTICE([OS OpenBSD detected])
|
||||
AC_DEFINE([OPENBSD], [], [Compiling on OpenBSD])
|
||||
elif test "$OS" = "haiku"; then
|
||||
AC_MSG_NOTICE([OS Haiku detected])
|
||||
AC_DEFINE([HAIKU], [], [Compiling on Haiku])
|
||||
elif test "$OS" = "freeb"; then
|
||||
AC_MSG_NOTICE([OS FreeBSD detected])
|
||||
AC_DEFINE([FREEBSD], [], [Compiling on FreeBSD])
|
||||
elif test "$OS" = "linux"; then
|
||||
AC_MSG_NOTICE([OS Linux detected])
|
||||
AC_DEFINE([LINUX], [], [Compiling on Linux])
|
||||
else
|
||||
AC_MSG_NOTICE([OS not detected])
|
||||
AC_DEFINE([UNKNOWN], [], [Compiling on Unknown])
|
||||
fi
|
||||
|
||||
|
||||
# ncurses enabled by default.
|
||||
AC_ARG_WITH([ncurses],
|
||||
[AS_HELP_STRING([--without-ncurses], [disable support for ncurses])],
|
||||
[with_ncurses=no],
|
||||
[with_ncurses=yes])
|
||||
|
||||
AC_ARG_WITH([ncurses-inc],
|
||||
[AS_HELP_STRING ([--with-ncurses-inc=DIR], [ncurses include files are in DIR])],
|
||||
[ncurses_inc=$withval],
|
||||
[ncurses_inc=''])
|
||||
|
||||
AC_ARG_WITH([ncurses-lib],
|
||||
[AS_HELP_STRING ([--with-ncurses-lib=DIR], [ncurses lib files are in DIR])],
|
||||
[ncurses_lib=$withval],
|
||||
[ncurses_lib=''])
|
||||
|
||||
if test "x$with_ncurses" == "xyes" ; then
|
||||
AC_DEFINE([HAVE_LIBNCURSES], [1], [Defined if you have libncurses])
|
||||
if test -n "$ncurses_inc"; then
|
||||
CFLAGS="$CFLAGS -I$ncurses_inc"
|
||||
CXXFLAGS="$CXXFLAGS -I$ncurses_inc"
|
||||
fi
|
||||
|
||||
if test -n "$ncurses_lib"; then
|
||||
LDFLAGS="$LDFLAGS -L$ncurses_lib"
|
||||
fi
|
||||
|
||||
AC_CHECK_LIB([ncurses],[main])
|
||||
fi
|
||||
|
||||
|
||||
# Readline enabled by default.
|
||||
#AC_ARG_WITH([readline],
|
||||
# [AS_HELP_STRING([--without-readline], [disable support for readline])],
|
||||
# [with_readline=no],
|
||||
# [with_readline=yes])
|
||||
#
|
||||
#AC_ARG_WITH([readline-inc],
|
||||
# [AS_HELP_STRING ([--with-readline-inc=DIR], [readline include files are in DIR])],
|
||||
# [readline_inc=$withval],
|
||||
# [readline_inc=''])
|
||||
#
|
||||
#AC_ARG_WITH([readline-lib],
|
||||
# [AS_HELP_STRING ([--with-readline-lib=DIR], [readline lib files are in DIR])],
|
||||
# [readline_lib=$withval],
|
||||
# [readline_lib=''])
|
||||
#
|
||||
#if test "x$with_readline" == "xyes" ; then
|
||||
# AC_DEFINE([HAVE_LIBREADLINE], [1], [Defined if you have libreadline])
|
||||
# if test -n "$readline_inc"; then
|
||||
# CFLAGS="$CFLAGS -I$readline_inc"
|
||||
# CXXFLAGS="$CXXFLAGS -I$readline_inc"
|
||||
# fi
|
||||
#
|
||||
# if test -n "$readline_lib"; then
|
||||
# LDFLAGS="$LDFLAGS -L$readline_lib"
|
||||
# fi
|
||||
#
|
||||
# AC_CHECK_LIB([readline],[main])
|
||||
#fi
|
||||
|
||||
|
||||
# Lua disabled by default.
|
||||
AC_ARG_WITH([lua],
|
||||
[AS_HELP_STRING([--with-lua], [enable support for lua])],
|
||||
[with_lua=yes],
|
||||
[with_lua=no])
|
||||
|
||||
AC_ARG_WITH([lua-inc],
|
||||
[AS_HELP_STRING ([--with-lua-inc=DIR], [lua include files are in DIR])],
|
||||
[lua_inc=$withval],
|
||||
[lua_inc=''])
|
||||
|
||||
AC_ARG_WITH([lua-lib],
|
||||
[AS_HELP_STRING ([--with-lua-lib=DIR], [lua lib files are in DIR])],
|
||||
[lua_lib=$withval],
|
||||
[lua_lib=''])
|
||||
|
||||
if test "x$with_lua" == "xyes" ; then
|
||||
AC_DEFINE([HAVE_LIBLUA], [1], [Defined if you have liblua])
|
||||
if test -n "$lua_inc"; then
|
||||
CFLAGS="$CFLAGS -I$lua_inc"
|
||||
CXXFLAGS="$CXXFLAGS -I$lua_inc"
|
||||
fi
|
||||
|
||||
if test -n "$lua_lib"; then
|
||||
LDFLAGS="$LDFLAGS -L$lua_lib"
|
||||
fi
|
||||
|
||||
AC_CHECK_LIB([lua],[main])
|
||||
fi
|
||||
|
||||
|
||||
# Allow the changes above to take effect.
|
||||
AC_SUBST(CFLAGS)
|
||||
AC_SUBST(CXXFLAGS)
|
||||
AC_SUBST(LDFLAGS)
|
||||
|
||||
|
||||
# Now the smaller details.
|
||||
AM_INIT_AUTOMAKE
|
||||
AC_CONFIG_SRCDIR([src/main.cpp])
|
||||
AC_CONFIG_HEADER([auto.h])
|
||||
|
||||
|
||||
# Checks for header files.
|
||||
AC_HEADER_STDC
|
||||
AC_CHECK_HEADERS([stdlib.h sys/file.h sys/stat.h sys/time.h unistd.h])
|
||||
AC_CHECK_HEADERS([string vector map])
|
||||
AC_CHECK_HEADERS([sstream string vector map])
|
||||
|
||||
|
||||
# Checks for typedefs, structures, and compiler characteristics.
|
||||
AC_HEADER_STDBOOL
|
||||
@@ -29,14 +183,19 @@ AC_TYPE_SIZE_T
|
||||
AC_HEADER_TIME
|
||||
AC_STRUCT_TM
|
||||
|
||||
|
||||
# Checks for library functions.
|
||||
AC_FUNC_MKTIME
|
||||
AC_FUNC_SELECT_ARGTYPES
|
||||
AC_CHECK_FUNCS([select])
|
||||
AC_CHECK_FUNC(flock, [AC_DEFINE([HAVE_FLOCK], [1], [Found flock])])
|
||||
AC_CHECK_FUNC(uuid_unparse_lower, [AC_DEFINE([HAVE_UUID], [1], [Found uuid_unparse_lower])])
|
||||
AC_CHECK_FUNC(random, [AC_DEFINE([HAVE_RANDOM], [1], [Found random])])
|
||||
AC_CHECK_FUNC(srandom, [AC_DEFINE([HAVE_SRANDOM], [1], [Found srandom])])
|
||||
|
||||
|
||||
# Generate the Makefiles.
|
||||
AC_CONFIG_FILES([Makefile src/Makefile])
|
||||
AC_OUTPUT
|
||||
|
||||
# End.
|
||||
|
||||
|
||||
274
doc/man/task-color.5
Normal file
274
doc/man/task-color.5
Normal file
@@ -0,0 +1,274 @@
|
||||
.TH task-color 5 2010-02-03 "task 1.9.0" "User Manuals"
|
||||
|
||||
.SH NAME
|
||||
task-color \- A color tutorial for the task(1) command line todo manager.
|
||||
|
||||
.SH SETUP
|
||||
The first thing you need is a terminal program that supports color. All
|
||||
terminal programs support color, but only a few support lots of colors. First
|
||||
tell your terminal program to use color by specifying the TERM environment
|
||||
variable like this:
|
||||
|
||||
TERM=xterm-color
|
||||
|
||||
In this example, xterm-color is used - a common value, and one that doesn't
|
||||
require that you use xterm. This works for most setups. This setting belongs
|
||||
in your shell profile (~/.bash_profile, ~/.bashrc, ~/.cshrc etc, depending on
|
||||
which shell you use). If this is a new setting, you will need to either run
|
||||
that profile script, or close and reopen the terminal window (which does the
|
||||
same thing).
|
||||
|
||||
Now tell task that you want to use color. This is the default for task, so
|
||||
the following step may be unnecessary.
|
||||
|
||||
$ task config color on
|
||||
|
||||
This command will make sure there is an entry in your ~/.taskrc file that looks
|
||||
like:
|
||||
|
||||
color=on
|
||||
|
||||
Now task is ready.
|
||||
|
||||
.SH AUTOMATIC MONOCHROME
|
||||
It should be mentioned that task is aware of whether it's output is going to a
|
||||
terminal, or to a file or through a pipe. When task output goes to a terminal,
|
||||
color is desirable, but consider the following command:
|
||||
|
||||
$ task list > file.txt
|
||||
|
||||
Do we really want all those color control codes in the file? Task assumes that
|
||||
you do not, and temporarily sets color to 'off' while generating the output.
|
||||
This explains the output from the following command:
|
||||
|
||||
$ task config | grep '^color '
|
||||
color off
|
||||
|
||||
it always returns 'off', no matter what the setting.
|
||||
|
||||
The reason is that the task output gets piped into grep, and the color is
|
||||
disabled. If you wanted those color codes, you can override this behavior by
|
||||
setting the _forcecolor variable to on, like this:
|
||||
|
||||
$ task config _forcecolor on
|
||||
$ task config | grep '^color '
|
||||
color on
|
||||
|
||||
or by temporarily overriding it like this:
|
||||
|
||||
$ task rc._forcecolor=on config | grep '^color '
|
||||
color on
|
||||
|
||||
.SH AVAILABLE COLORS
|
||||
Task has a 'color' command that will show all the colors it is capable of
|
||||
displaying. Try this:
|
||||
|
||||
$ task color
|
||||
|
||||
The output cannot be replicated here in a man page, but you should see a set of
|
||||
color samples. How many you see depends on your terminal program's ability to
|
||||
render them.
|
||||
|
||||
You should at least see the Basic colors and Effects - if you do, then you have
|
||||
16-color support. If your terminal supports 256 colors, you'll know it!
|
||||
|
||||
.SH 16-COLOR SUPPORT
|
||||
The basic color support is provided through named colors:
|
||||
|
||||
black, red, blue, green, magenta, cyan, yellow, white
|
||||
|
||||
Foreground color (for text) is simply specified as one of the above colors, or
|
||||
not specified at all to use the default terminal text color.
|
||||
|
||||
Background color is specified by using the word 'on', and one of the above
|
||||
colors. Some examples:
|
||||
|
||||
green # green text, default background color
|
||||
green on yellow # green text, yellow background
|
||||
on yellow # default text color, yellow background
|
||||
|
||||
These colors can be modified further, by making the foreground bold, or by
|
||||
making the background bright. Some examples:
|
||||
|
||||
bold green
|
||||
bold white on bright red
|
||||
on bright cyan
|
||||
|
||||
The order of the words is not important, so the following are equivalent:
|
||||
|
||||
bold green
|
||||
green bold
|
||||
|
||||
But the 'on' is important - colors before the 'on' are foreground, and colors
|
||||
after 'on' are background.
|
||||
|
||||
There is an additional 'underline' attribute that may be used:
|
||||
|
||||
underline bright red on black
|
||||
|
||||
Task has a command that helps you visualize these color combinations. Try this:
|
||||
|
||||
$ task color underline bright red on black
|
||||
|
||||
You can use this command to see how the various color combinations work. You
|
||||
will also see some sample colors displayed, like the ones above, in addition to
|
||||
the sample requested.
|
||||
|
||||
Some combinations look very nice, some look terrible. Different terminal
|
||||
programs do implement slightly different versions of 'red', for example, so you
|
||||
may see some unwanted variation due to the program. The brightness of your
|
||||
display is also a factor.
|
||||
|
||||
.SH 256-COLOR SUPPORT
|
||||
|
||||
Using 256 colors follows the same form, but the names are different, and some
|
||||
colors can be referenced in different ways. First there is by color ordinal,
|
||||
which is like this:
|
||||
|
||||
color0
|
||||
color1
|
||||
color2
|
||||
...
|
||||
color255
|
||||
|
||||
This gives you access to all 256 colors, but doesn't help you much. This range
|
||||
is a combination of 8 basic colors (color0 - color7), then 8 brighter variations
|
||||
(color8 - color15). Then a block of 216 colors (color16 - color231). Then a
|
||||
block of 24 gray colors (color232 - color255).
|
||||
|
||||
The large block of 216 colors (6x6x6 = 216) represents a color cube, which can
|
||||
be addressed via RGB values from 0 to 5 for each component color. A value of 0
|
||||
means none of this component color, and a value of 5 means the most intense
|
||||
component color. For example, a bright red is specified as:
|
||||
|
||||
rgb500
|
||||
|
||||
And a darker red would be:
|
||||
|
||||
rgb300
|
||||
|
||||
Note that the three digits represent the three component values, so in this
|
||||
example the 5, 0 and 0 represent red=5, green=0, blue=0. Combining intense red
|
||||
with no green and no blue yields red. Similarly, blue and green are:
|
||||
|
||||
rgb005
|
||||
rgb050
|
||||
|
||||
Another example - bright yellow - is a mix of bright red and bright green, but
|
||||
no blue component, so bright yellow is addressed as:
|
||||
|
||||
rgb550
|
||||
|
||||
A soft pink would be addressed as:
|
||||
|
||||
rgb515
|
||||
|
||||
See if you agree, by running:
|
||||
|
||||
$ task color black on rgb515
|
||||
|
||||
You may notice that the large color block is represented as 6 squares. All
|
||||
colors in the first square have a red value of 0. All colors in the 6th square
|
||||
have a red value of 5. Within each square, blue ranges from 0 to 5 left to
|
||||
right, and within each square green ranges from 0 to 5, top to bottom. This
|
||||
scheme takes some getting used to.
|
||||
|
||||
The block of 24 gray colors can also be accessed as gray0 - gray23, in a
|
||||
continuous ramp from black to white.
|
||||
|
||||
.SH MIXING 16- AND 256-COLORS
|
||||
|
||||
If you specify 16-colors, and view on a 256-color terminal, no problem. If you
|
||||
try the reverse, specifying 256-colors and viewing on a 16-color terminal, you
|
||||
will be disappointed, perhaps even appalled.
|
||||
|
||||
There is some limited color mapping - for example, if you were to specify this
|
||||
combination:
|
||||
|
||||
red on gray3
|
||||
|
||||
you are mixing a 16-color and 256-color specification. Task will map red to
|
||||
color1, and proceed. Note that red and color1 are not quite the same.
|
||||
|
||||
Note also that there is no bold or bright attributes when dealing with 256
|
||||
colors, but there is still underline available.
|
||||
|
||||
.SH RULES
|
||||
Task supports colorization rules. These are configuration values that specify
|
||||
a color, and the conditions under which that color is used. By example, let's
|
||||
add a few tasks:
|
||||
|
||||
$ task add project:Home priority:H pay the bills (1)
|
||||
$ task add project:Home clean the rug (2)
|
||||
$ task add project:Garden clean out the garage (3)
|
||||
|
||||
We can add a color rule that uses a blue background for all tasks in the Home
|
||||
project:
|
||||
|
||||
$ task config color.project.Home on blue
|
||||
|
||||
We use quotes around "on blue" because there are two words, but they represent
|
||||
one value in the .taskrc file. Now suppose we which to use a bold yellow text
|
||||
color for all cleaning work:
|
||||
|
||||
$ task config color.keyword.clean bold yellow
|
||||
|
||||
Now what happens to task 2, which belongs to project Home (blue background), and
|
||||
is also a cleaning task (bold yellow foreground)? The colors are combined, and
|
||||
the task is shown as "bold yellow on blue".
|
||||
|
||||
Color rules can be applied by project and description keyword, as shown, and
|
||||
also by priority (or lack of priority), by active status, by being due or
|
||||
overdue, by being tagged, or having a specific tag (perhaps the most useful
|
||||
rule) or by being a recurring task.
|
||||
|
||||
It is possible to create a very colorful mix of rules. With 256-color support,
|
||||
those colors can be made subtle, and complementary, but without care, this can
|
||||
be a visual mess. Beware!
|
||||
|
||||
.SH THEMES
|
||||
Task supports themes. What this really means is that with the ability to
|
||||
include other files into the .taskrc file, different sets of color rules can
|
||||
be included.
|
||||
|
||||
To get a good idea of what a color theme looks like, try adding this entry to
|
||||
your .taskrc file:
|
||||
|
||||
include /usr/local/share/doc/task/themes/dark-256.theme
|
||||
|
||||
Better yet, create your own, and share it.
|
||||
|
||||
.SH "CREDITS & COPYRIGHTS"
|
||||
task was written by P. Beckingham <paul@beckingham.net>.
|
||||
.br
|
||||
Copyright (C) 2006 \- 2010 P. Beckingham
|
||||
|
||||
This man page was originally written by Paul Beckingham.
|
||||
|
||||
task is distributed under the GNU General Public License. See
|
||||
http://www.gnu.org/licenses/gpl-2.0.txt for more information.
|
||||
|
||||
.SH SEE ALSO
|
||||
.BR task(1),
|
||||
.BR taskrc(5),
|
||||
.BR task-faq(5)
|
||||
.BR task-tutorial(5)
|
||||
|
||||
For more information regarding task, the following may be referenced:
|
||||
|
||||
.TP
|
||||
The official site at
|
||||
<http://taskwarrior.org>
|
||||
|
||||
.TP
|
||||
The official code repository at
|
||||
<git://tasktools.org/task.git/>
|
||||
|
||||
.TP
|
||||
You can contact the project by writing an email to
|
||||
<support@taskwarrior.org>
|
||||
|
||||
.SH REPORTING BUGS
|
||||
.TP
|
||||
Bugs in task may be reported to the issue-tracker at
|
||||
<http://taskwarrior.org>
|
||||
175
doc/man/task-faq.5
Normal file
175
doc/man/task-faq.5
Normal file
@@ -0,0 +1,175 @@
|
||||
.TH task-faq 5 2010-02-03 "task 1.9.0" "User Manuals"
|
||||
|
||||
.SH NAME
|
||||
task-faq \- A FAQ for the task(1) command line todo manager.
|
||||
|
||||
.SH DESCRIPTION
|
||||
Task is a command line TODO list manager. It maintains a list of tasks that you
|
||||
want to do, allowing you to add/remove, and otherwise manipulate them. Task
|
||||
has a rich list of commands that allow you to do various things with it.
|
||||
|
||||
.SH WELCOME
|
||||
Welcome to the task FAQ. If you have would like to see a question answered
|
||||
here, please send us a note at <support@taskwarrior.org>.
|
||||
|
||||
.TP
|
||||
.B Q: Where does task store the data?
|
||||
By default, task creates a .taskrc file in your home directory and populates it
|
||||
with defaults. Task also creates a .task directory in your home directory and
|
||||
puts data files there.
|
||||
|
||||
.TP
|
||||
.B Q: Can I edit that data?
|
||||
Of course you can. It is a simple text file, and looks somewhat like the JSON
|
||||
format, and if you are careful not to break the format, there is no reason not
|
||||
to edit it. But task provides a rich command set to do that manipulation for
|
||||
you, so it is probably best to leave those files alone.
|
||||
|
||||
.TP
|
||||
.B Q: How do I restore my .taskrc file to defaults?
|
||||
If you delete (or rename) your .taskrc file, task will offer to create a default
|
||||
one for you. Another way to do this is with the command:
|
||||
|
||||
$ task rc:new-file version
|
||||
|
||||
Task will create 'new-file' if it doesn't already exist. Note that this is a
|
||||
good way to learn about new configuration settings, if your .taskrc file was
|
||||
created by an older version of task.
|
||||
|
||||
.TP
|
||||
.B Q: Do I need to back up my task data?
|
||||
Yes. You should back up your ~/.task directory, and probably your ~/.taskrc
|
||||
file too.
|
||||
|
||||
.TP
|
||||
.B Q: Can I share my tasks between different machines?
|
||||
Yes, you can. Most people have success with a DropBox - a free and secure file
|
||||
synching tool. Simply configure task to store it's data in a dropbox folder, by
|
||||
modifying the:
|
||||
|
||||
data.location=...
|
||||
|
||||
configuration variable. Check out DropBox at http://www.dropbox.com.
|
||||
|
||||
.TP
|
||||
.B Q: The undo.data file gets very large - do I need it?
|
||||
You need it if you want the undo capability. But if it gets large, you can
|
||||
certainly truncate it to save space, just be careful to delete lines from the
|
||||
top of the file, up to and including a separator '---'. The simplest way is to
|
||||
simply delete the undo.data file. Note that it does not slow down task, because
|
||||
task never reads it until you want to undo. Otherwise task only appends to the
|
||||
file.
|
||||
|
||||
.TP
|
||||
.B Q: How do I know whether my terminal support 256 colors?
|
||||
You will need to make sure your TERM environment variable is set to xterm-color,
|
||||
otherwise the easiest way is to just try it! With task 1.9 or later, you simply
|
||||
run
|
||||
|
||||
$ task color
|
||||
|
||||
and a full color palette is displayed. If you see only 8 or 16 colors, perhaps
|
||||
with those colors repeated, then your terminal does not support 256 colors.
|
||||
|
||||
See the task-color(5) man page for more details.
|
||||
|
||||
.TP
|
||||
.B Q: How do I make use of all these colors?
|
||||
See the task-color(5) man page for an in-depth explanation of the task color
|
||||
rules.
|
||||
|
||||
.TP
|
||||
.B Q: How can I make task put the command in the terminal window title?
|
||||
You cannot. But you can make the shell do it, and you can make the shell
|
||||
call the task program. Here is a Bash script that does this:
|
||||
|
||||
#! /bin/bash
|
||||
|
||||
printf "\033]0;task $*\a"
|
||||
/usr/local/bin/task $*
|
||||
|
||||
You just need to run the script, and let the script run task. Here is a Bash
|
||||
function that does the same thing:
|
||||
|
||||
t ()
|
||||
{
|
||||
printf "\033]0;task $*\a"
|
||||
/usr/local/bin/task $*
|
||||
}
|
||||
|
||||
.TP
|
||||
.B Q: Task searches in a case-sensitive fashion - can I change that?
|
||||
You can. Just set the following value in your .taskrc file:
|
||||
|
||||
search.case.sensitive=no
|
||||
|
||||
This will affect searching for keywords:
|
||||
|
||||
$ task list Document
|
||||
|
||||
task will perform a caseless search in the description and any annotations for
|
||||
the keyword 'Document'. It also affects description and annotation
|
||||
substitutions:
|
||||
|
||||
$ task 1 /teh/the/
|
||||
|
||||
The pattern on the left will now be a caseless search term.
|
||||
|
||||
.TP
|
||||
.B Q: Why do the task ID numbers change?
|
||||
Task does this to always show you the smallest numbers it can. The idea is that
|
||||
if your tasks are numbered 1 - 33, for example, those are easy to type in. If
|
||||
instead task kept a rolling sequence number, after a while your tasks might be
|
||||
numbered 481 - 513, which makes it more likely to enter one incorrectly, because
|
||||
there are more digits.
|
||||
|
||||
When you run a report (such as "list"), task assigns the numbers before it
|
||||
displays them. For example, you can do this:
|
||||
|
||||
$ task list
|
||||
$ task do 12
|
||||
$ task add Pay the rent
|
||||
$ task delete 31
|
||||
|
||||
Those id numbers are then good until the next report is run. This is because
|
||||
task performs a garbage-collect operation on the pending tasks file when a
|
||||
report is run, which moves the deleted and completed tasks from the pending.data
|
||||
file to the completed.data file. This keeps the pending tasks file small, and
|
||||
therefore keeps task fast. The completed data file is the one that grows
|
||||
unbounded with use, but that one isn't accessed as much, so it doesn't matter as
|
||||
much. So in all, the ID number resequencing is about efficiency.
|
||||
|
||||
.SH "CREDITS & COPYRIGHTS"
|
||||
task was written by P. Beckingham <paul@beckingham.net>.
|
||||
.br
|
||||
Copyright (C) 2006 \- 2010 P. Beckingham
|
||||
|
||||
This man page was originally written by P. Beckingham.
|
||||
|
||||
task is distributed under the GNU General Public License. See
|
||||
http://www.gnu.org/licenses/gpl-2.0.txt for more information.
|
||||
|
||||
.SH SEE ALSO
|
||||
.BR task(1),
|
||||
.BR taskrc(5),
|
||||
.BR task-tutorial(5)
|
||||
.BR task-color(5)
|
||||
|
||||
For more information regarding task, the following may be referenced:
|
||||
|
||||
.TP
|
||||
The official site at
|
||||
<http://taskwarrior.org>
|
||||
|
||||
.TP
|
||||
The official code repository at
|
||||
<git://tasktools.org/task.git/>
|
||||
|
||||
.TP
|
||||
You can contact the project by writing an email to
|
||||
<support@taskwarrior.org>
|
||||
|
||||
.SH REPORTING BUGS
|
||||
.TP
|
||||
Bugs in task may be reported to the issue-tracker at
|
||||
<http://taskwarrior.org>
|
||||
398
doc/man/task-tutorial.5
Normal file
398
doc/man/task-tutorial.5
Normal file
@@ -0,0 +1,398 @@
|
||||
.TH task-tutorial 5 2010-02-03 "task 1.9.0" "User Manuals"
|
||||
|
||||
.SH NAME
|
||||
task-tutorial \- A tutorial for the task(1) command line todo manager.
|
||||
|
||||
.SH NOTE
|
||||
Please note that this tutorial was written for task 1.7.0. Though it is still
|
||||
accurate on the general usage of task, it might not longer be 100% correct in
|
||||
all details. A new tutorial for task is planned for task 2.0.0.
|
||||
|
||||
.SH DESCRIPTION
|
||||
Task is a command line TODO list manager. It maintains a list of tasks that you
|
||||
want to do, allowing you to add/remove, and otherwise manipulate them. Task
|
||||
has a rich list of commands that allow you to do various things with it.
|
||||
|
||||
.SH 30 second tutorial
|
||||
|
||||
For the excessively lazy. Add two tasks:
|
||||
.br
|
||||
.RS
|
||||
$ task add Read task documents later
|
||||
.br
|
||||
$ task add priority:H Pay bills
|
||||
.RE
|
||||
|
||||
Easy. See that second one has a High priority? Now let's look at those tasks:
|
||||
.br
|
||||
.RS
|
||||
$ task ls
|
||||
.br
|
||||
ID Project Pri Description
|
||||
.br
|
||||
2 H Pay bills
|
||||
.br
|
||||
1 Read task documents later
|
||||
.RE
|
||||
|
||||
They are ordered by priority. Let's mark number 2 as done:
|
||||
.br
|
||||
.RS
|
||||
$ task 2 done
|
||||
.br
|
||||
$ task ls
|
||||
.br
|
||||
ID Project Pri Description
|
||||
.br
|
||||
1 Read task documents later
|
||||
.RE
|
||||
|
||||
Gone. Now let's delete that remaining task, because, well, why bother
|
||||
now we are already using task:
|
||||
.br
|
||||
.RS
|
||||
$ task delete 1
|
||||
.br
|
||||
$ task ls
|
||||
.br
|
||||
No matches
|
||||
.RE
|
||||
|
||||
That's how easy managing your task list can be. But now consider learning what
|
||||
task can really do...
|
||||
|
||||
.SH Simple usage of task
|
||||
Let us begin by adding some tasks:
|
||||
.br
|
||||
.RS
|
||||
$ task add Book plane ticket
|
||||
.br
|
||||
$ task add Rent a tux
|
||||
.br
|
||||
$ task add Reserve a rental car
|
||||
.br
|
||||
$ task add Reserve a hotel room
|
||||
.RE
|
||||
|
||||
You'll notice immediately that task has a very minimalist interface. Let us take
|
||||
a look at those tasks:
|
||||
.br
|
||||
.RS
|
||||
$ task ls
|
||||
.br
|
||||
ID Project Pri Description
|
||||
.br
|
||||
1 Book plane ticket
|
||||
.br
|
||||
2 Rent a tux
|
||||
.br
|
||||
3 Reserve a rental car
|
||||
.br
|
||||
4 Send John a birthday card
|
||||
.RE
|
||||
|
||||
The 'ls' command provides the most minimal list of tasks. Each task has
|
||||
been given an id number, and you can see that there are no projects or
|
||||
priorities assigned. Wait a minute - I own a tux, I don't need to rent
|
||||
one. Let us delete task 2:
|
||||
.br
|
||||
.RS
|
||||
$ task 2 delete
|
||||
.br
|
||||
Permanently delete task? (y/n) y
|
||||
.RE
|
||||
|
||||
Task wants you to confirm deletions. To suppress the confirmation, edit
|
||||
your .taskrc file and change the line:
|
||||
.br
|
||||
.RS
|
||||
confirmation=yes
|
||||
.RE
|
||||
.br
|
||||
to have a value of "no". If the entry is not there, then add it.
|
||||
|
||||
While the use of projects and priorities are not essential, they can be very
|
||||
useful when the list of tasks grows large. Let's assign projects to these
|
||||
tasks:
|
||||
.br
|
||||
.RS
|
||||
$ task 1 project:Wedding
|
||||
.br
|
||||
$ task 3 project:Wedding
|
||||
.br
|
||||
$ task 4 project:Family
|
||||
.br
|
||||
$ task ls
|
||||
.br
|
||||
ID Project Pri Description
|
||||
.br
|
||||
3 Family Send John a birthday card
|
||||
.br
|
||||
2 Wedding Reserve a rental car
|
||||
.br
|
||||
1 Wedding Book plane ticket
|
||||
.RE
|
||||
|
||||
Notice that the id numbers have changed. When tasks get deleted, or have
|
||||
their attributes changed (project, for example), the ids are prone to change.
|
||||
But the id numbers will remain valid until the next 'ls' command is run.
|
||||
You should only use the ids from the most recent 'ls' command. The ids change,
|
||||
because task is always trying to use small numbers so that it is easy for you
|
||||
to enter them correctly. Now that projects are assigned, we can look at just
|
||||
the Wedding project tasks:
|
||||
|
||||
Subprojects are supported. If you have a project "Wedding", you can specify
|
||||
that a task is a subproject "Transport" of "Wedding" by assigning the project
|
||||
"Wedding.Transport". Let's do this:
|
||||
.br
|
||||
.RS
|
||||
$ task 2 project:Wedding.Transport
|
||||
.br
|
||||
$ task ls
|
||||
.br
|
||||
ID Project Pri Description
|
||||
.br
|
||||
3 Family Send John a birthday card
|
||||
.br
|
||||
2 Wedding.Transport Reserve a rental car
|
||||
.br
|
||||
1 Wedding Book plane ticket
|
||||
.RE
|
||||
|
||||
Task matches the leftmost part of the project when searching, so projects may be
|
||||
abbreviated:
|
||||
.br
|
||||
.RS
|
||||
$ task ls project:Wedding.Tra
|
||||
.br
|
||||
ID Project Pri Description
|
||||
.br
|
||||
2 Wedding.Transport Reserve a rental car
|
||||
.RE
|
||||
|
||||
This way of matching projects can be used to see all tasks under the "Wedding"
|
||||
project and all subprojects:
|
||||
.br
|
||||
.RS
|
||||
$ task ls project:Wedding
|
||||
.br
|
||||
ID Project Pri Description
|
||||
.br
|
||||
2 Wedding.Transport Reserve a rental car
|
||||
.br
|
||||
1 Wedding Book plane ticket
|
||||
.RE
|
||||
|
||||
Let's reassign 2 back to the "Wedding" project:
|
||||
.br
|
||||
.RS
|
||||
$ task 2 project:Wedding
|
||||
.RE
|
||||
|
||||
Now that projects are assigned, we can look at just the Wedding project tasks:
|
||||
.br
|
||||
.RS
|
||||
$ task ls project:Wedding
|
||||
.br
|
||||
ID Project Pri Description
|
||||
.br
|
||||
1 Wedding Book plane ticket
|
||||
.br
|
||||
2 Wedding Reserve a rental car
|
||||
.RE
|
||||
|
||||
Any command arguments after the 'ls' are used for filtering the output.
|
||||
We could also have requested:
|
||||
.br
|
||||
.RS
|
||||
$ task ls ticket plane
|
||||
.br
|
||||
ID Project Pri Description
|
||||
.br
|
||||
1 Wedding Book plane ticket
|
||||
.RE
|
||||
|
||||
Now let's prioritize. Priorities can be H, M or L (High, Medium, Low).
|
||||
.br
|
||||
.RS
|
||||
$ task ls
|
||||
.br
|
||||
ID Project Pri Description
|
||||
.br
|
||||
3 Family Send John a birthday card
|
||||
.br
|
||||
2 Wedding Reserve a rental car
|
||||
.br
|
||||
1 Wedding Book plane ticket
|
||||
.br
|
||||
$ task 1 priority:H
|
||||
.br
|
||||
$ task 2 prior:M
|
||||
.br
|
||||
$ task 3 pr:H
|
||||
.br
|
||||
Ambiguous attribute 'pr' - could be either of project, priority
|
||||
.br
|
||||
$ task 3 pri:H
|
||||
.br
|
||||
$ task ls
|
||||
.br
|
||||
ID Project Pri Description
|
||||
.br
|
||||
3 Family H Send John a birthday card
|
||||
.br
|
||||
1 Wedding H Book plane ticket
|
||||
.br
|
||||
2 Wedding M Reserve a rental car
|
||||
.RE
|
||||
|
||||
Notice that task supports the abbreviation of words such as priority and
|
||||
project. Priority can be abbreviated to pri, but not pr, because it is
|
||||
ambiguous. Now that tasks have been prioritized, you can see that the tasks are
|
||||
being sorted by priority, with the highest priority tasks at the top.
|
||||
|
||||
These attributes can all be provided when the task is added, instead of applying
|
||||
them afterwards, as shown. The following command shows how to set all the
|
||||
attributes at once:
|
||||
.br
|
||||
.RS
|
||||
$ task add project:Wedding priority:H Book plane ticket
|
||||
.RE
|
||||
|
||||
The sequence of those arguments is not important, so you could have entered the
|
||||
following command instead:
|
||||
.br
|
||||
.RS
|
||||
$ task project:Wedding add Book plane priority:H ticket
|
||||
.RE
|
||||
|
||||
This is because task knows what attributes look like (name:value), knows what
|
||||
commands it supports (add, ...), and just assumes the rest is part of the
|
||||
description. Incidentally, if you wanted 'priority:H' to be part of your task
|
||||
description, you need to fool task into ignoring it as an attribute. That can
|
||||
be done in two ways:
|
||||
.br
|
||||
.RS
|
||||
$ task add "quoting makes task consider priority:H part of one big argument"
|
||||
$ task add -- the hyphens make task treat everything after it as description
|
||||
.RE
|
||||
|
||||
The 'ls' command provides the least information for each task. The 'list'
|
||||
command provides more:
|
||||
.br
|
||||
.RS
|
||||
$ task list
|
||||
.br
|
||||
ID Project Pri Due Active Age Description
|
||||
.br
|
||||
3 Family H 4 mins Send John a birthday card
|
||||
.br
|
||||
1 Wedding H 5 mins Book plane ticket
|
||||
.br
|
||||
2 Wedding M 5 mins Reserve a rental car
|
||||
.RE
|
||||
|
||||
Notice that a task can have a due date, and can be active. The task lists are
|
||||
sorted by due date, then priority. Let's add due dates:
|
||||
.br
|
||||
.RS
|
||||
$ task 3 due:6/25/2008
|
||||
.br
|
||||
$ task 1 due:7/31/2008
|
||||
.br
|
||||
$ task list
|
||||
.br
|
||||
ID Project Pri Due Active Age Description
|
||||
.br
|
||||
3 Family H 6/25/2008 6 mins Send John a birthday card
|
||||
.br
|
||||
1 Wedding H 7/31/2008 7 mins Book plane ticket
|
||||
.br
|
||||
2 Wedding M 7 mins Reserve a rental car
|
||||
.RE
|
||||
|
||||
Note that due tasks may be colored to highlight the importance. See the
|
||||
task-color(5) man page for full details.
|
||||
|
||||
Tagging tasks is a good way to group them, aside from specifying a project.
|
||||
To add a tag to a task:
|
||||
.br
|
||||
.RS
|
||||
$ task <id> +tag
|
||||
.RE
|
||||
|
||||
The plus sign indicates that this is a tag. Any number of tags may be applied to a
|
||||
task, and then used for searching. Tags are just single words that are labels.
|
||||
.br
|
||||
.RS
|
||||
$ task list
|
||||
.br
|
||||
ID Project Pri Due Active Age Description
|
||||
.br
|
||||
3 Family H 6/25/2008 8 mins Send John a birthday card
|
||||
.br
|
||||
1 Wedding H 7/31/2008 9 mins Book plane ticket
|
||||
.br
|
||||
2 Wedding M 9 mins Reserve a rental car
|
||||
.br
|
||||
$ task 1 +phone
|
||||
.br
|
||||
$ task 2 +phone
|
||||
.br
|
||||
$ task 3 +shopping
|
||||
.br
|
||||
$ task 3 +john
|
||||
.br
|
||||
$ task list +phone
|
||||
.br
|
||||
ID Project Pri Due Active Age Description
|
||||
.br
|
||||
1 Wedding H 7/31/2008 9 mins Book plane ticket
|
||||
.br
|
||||
2 Wedding M 9 mins Reserve a rental car
|
||||
.RE
|
||||
|
||||
To remove a tag from a task, use the minus sign:
|
||||
.br
|
||||
.RS
|
||||
$ task 3 \-john
|
||||
.RE
|
||||
|
||||
.SH Advanced usage of task
|
||||
Advanced examples of the usage of task can be found at the official site at
|
||||
<http://taskwarrior.org>
|
||||
|
||||
.SH "CREDITS & COPYRIGHTS"
|
||||
task was written by P. Beckingham <paul@beckingham.net>.
|
||||
.br
|
||||
Copyright (C) 2006 \- 2010 P. Beckingham
|
||||
|
||||
This man page was originally written by Federico Hernandez.
|
||||
|
||||
task is distributed under the GNU General Public License. See
|
||||
http://www.gnu.org/licenses/gpl-2.0.txt for more information.
|
||||
|
||||
.SH SEE ALSO
|
||||
.BR task(1),
|
||||
.BR taskrc(5),
|
||||
.BR task-faq(5)
|
||||
.BR task-color(5)
|
||||
|
||||
For more information regarding task, the following may be referenced:
|
||||
|
||||
.TP
|
||||
The official site at
|
||||
<http://taskwarrior.org>
|
||||
|
||||
.TP
|
||||
The official code repository at
|
||||
<git://tasktools.org/task.git/>
|
||||
|
||||
.TP
|
||||
You can contact the project by writing an email to
|
||||
<support@taskwarrior.org>
|
||||
|
||||
.SH REPORTING BUGS
|
||||
.TP
|
||||
Bugs in task may be reported to the issue-tracker at
|
||||
<http://taskwarrior.org>
|
||||
499
doc/man/task.1
Normal file
499
doc/man/task.1
Normal file
@@ -0,0 +1,499 @@
|
||||
.TH task 1 2010-02-03 "task 1.9.0" "User Manuals"
|
||||
|
||||
.SH NAME
|
||||
task \- A command line todo manager.
|
||||
|
||||
.SH SYNOPSIS
|
||||
.B task [subcommand] [args]
|
||||
|
||||
.SH DESCRIPTION
|
||||
Task is a command line todo list manager. It maintains a list of tasks that you
|
||||
want to do, allowing you to add/remove, and otherwise manipulate them. Task
|
||||
has a rich list of subcommands that allow you to do various things with it.
|
||||
|
||||
.SH SUBCOMMANDS
|
||||
|
||||
.TP
|
||||
.B add [tags] [attrs] description
|
||||
Adds a new task to the task list.
|
||||
|
||||
.TP
|
||||
.B append [tags] [attrs] description
|
||||
Appends information to an existing task.
|
||||
|
||||
.TP
|
||||
.B prepend [tags] [attrs] description
|
||||
Prepends information to an existing task.
|
||||
|
||||
.TP
|
||||
.B annotate ID description
|
||||
Adds an annotation to an existing task.
|
||||
|
||||
.TP
|
||||
.B ID [tags] [attrs] [description]
|
||||
Modifies the existing task with provided information.
|
||||
|
||||
.TP
|
||||
.B ID /from/to/
|
||||
Performs one substitution on task description and annotation for fixing mistakes.
|
||||
|
||||
.TP
|
||||
.B ID /from/to/g
|
||||
Performs all substitutions on task description and annotation for fixing mistakes.
|
||||
|
||||
.TP
|
||||
.B edit ID
|
||||
Launches an editor to let you modify all aspects of a task directly.
|
||||
Use carefully.
|
||||
|
||||
.TP
|
||||
.B undo
|
||||
Reverts the most recent action.
|
||||
|
||||
.TP
|
||||
.B shell
|
||||
Launches an interactive shell with all the task commands available.
|
||||
|
||||
.TP
|
||||
.B duplicate ID [tags] [attrs] [description]
|
||||
Duplicates the specified task and allows modifications.
|
||||
|
||||
.TP
|
||||
.B delete ID
|
||||
Deletes the specified task from task list.
|
||||
|
||||
.TP
|
||||
.B info ID
|
||||
Shows all data and metadata for the specified task.
|
||||
|
||||
.TP
|
||||
.B start ID
|
||||
Marks the specified task as started.
|
||||
|
||||
.TP
|
||||
.B stop ID
|
||||
Removes the
|
||||
.I start
|
||||
time from the specified task.
|
||||
|
||||
.TP
|
||||
.B done ID [tags] [attrs] [description]
|
||||
Marks the specified task as done.
|
||||
|
||||
.TP
|
||||
.B projects
|
||||
Lists all project names used, and the number of tasks for each.
|
||||
|
||||
.TP
|
||||
.B tags
|
||||
Show a list of all tags used.
|
||||
|
||||
.TP
|
||||
.B summary
|
||||
Shows a report of task status by project.
|
||||
|
||||
.TP
|
||||
.B timesheet [weeks]
|
||||
Shows a weekly report of tasks completed and started.
|
||||
|
||||
.TP
|
||||
.B history
|
||||
Shows a report of task history by month.
|
||||
|
||||
.TP
|
||||
.B ghistory
|
||||
Shows a graphical report of task status by month.
|
||||
|
||||
.TP
|
||||
.B calendar [ y | due [y] | month year [y] | year ]
|
||||
Shows a monthly calendar with due tasks marked.
|
||||
|
||||
.TP
|
||||
.B stats
|
||||
Shows task database statistics.
|
||||
|
||||
.TP
|
||||
.B import \fIfile
|
||||
Imports tasks from a variety of formats.
|
||||
|
||||
.TP
|
||||
.B export \fIfile
|
||||
Exports all tasks as a CSV file.
|
||||
|
||||
.TP
|
||||
.B color [sample]
|
||||
Displays all possible colors, or a sample.
|
||||
|
||||
.TP
|
||||
.B version
|
||||
Shows the task version number
|
||||
|
||||
.TP
|
||||
.B config [name [value | '']]
|
||||
Shows the current settings in the task configuration file. Also supports
|
||||
directly modifying the .taskrc file. This command either modifies
|
||||
the 'name' setting with a new value of 'value', or adds a new entry that
|
||||
is equivalent to 'name=value':
|
||||
|
||||
task config name value
|
||||
|
||||
This command sets a blank value. This has the effect of suppressing any
|
||||
default value:
|
||||
|
||||
task config name ''
|
||||
|
||||
Finally, this command removes any 'name=...' entry from the .taskrc file:
|
||||
|
||||
task config name
|
||||
|
||||
.TP
|
||||
.B help
|
||||
Shows the long usage text.
|
||||
|
||||
.SH REPORT SUBCOMMANDS
|
||||
|
||||
A report is a listing of information from the task database. There are several
|
||||
reports currently predefined in task. The output and sort behavior of these
|
||||
reports can be configured in the configuration file. See also the man page taskrc(5).
|
||||
|
||||
.TP
|
||||
.B active [tags] [attrs] [description]
|
||||
Shows all tasks matching the specified criteria
|
||||
that are started but not completed.
|
||||
|
||||
.TP
|
||||
.B all [tags] [attrs] [description]
|
||||
Shows all tasks matching the specified criteria.
|
||||
|
||||
.TP
|
||||
.B completed [tags] [attrs] [description]
|
||||
Shows all tasks matching the specified criteria
|
||||
that are completed.
|
||||
|
||||
.TP
|
||||
.B minimal [tags] [attrs] [description]
|
||||
Provides a minimal listing of tasks with specified criteria.
|
||||
|
||||
.TP
|
||||
.B ls [tags] [attrs] [description]
|
||||
Provides a short listing of tasks with specified criteria.
|
||||
|
||||
.TP
|
||||
.B list [tags] [attrs] [description]
|
||||
Provides a more detailed listing of tasks with specified criteria.
|
||||
|
||||
.TP
|
||||
.B long [tags] [attrs] [description]
|
||||
Provides the most detailed listing of tasks with specified criteria.
|
||||
|
||||
.TP
|
||||
.B newest [tags] [attrs] [description]
|
||||
Shows the newest tasks with specified criteria.
|
||||
|
||||
.TP
|
||||
.B oldest [tags] [attrs] [description]
|
||||
Shows the oldest tasks with specified criteria
|
||||
|
||||
.TP
|
||||
.B overdue [tags] [attrs] [description]
|
||||
Shows all incomplete tasks matching the specified criteria
|
||||
that are beyond their due date.
|
||||
|
||||
.TP
|
||||
.B recurring [tags] [attrs] [description]
|
||||
Shows all recurring tasks matching the specified criteria.
|
||||
|
||||
.TP
|
||||
.B waiting [tags] [attrs] [description]
|
||||
Shows all waiting tasks matching the specified criteria.
|
||||
|
||||
.TP
|
||||
.B next [tags] [attrs] [description]
|
||||
Shows all tasks with upcoming due dates matching the specified criteria.
|
||||
|
||||
.SH ATTRIBUTES AND METADATA
|
||||
|
||||
.TP
|
||||
.B ID
|
||||
Tasks can be specified uniquely by IDs, which are simply the index of the
|
||||
task in a report. Be careful, as the IDs of tasks may change after a
|
||||
modification to the database. Always run a report to check you have the right
|
||||
ID for a task. IDs can be given to task as a sequences, for example,
|
||||
.br
|
||||
.B
|
||||
task del 1,4-10,19
|
||||
|
||||
.TP
|
||||
.B +tag|-tag
|
||||
Tags are arbitrary words associated with a task. Use + to add a tag and - to
|
||||
remove a tag from a task. A task can have any quantity of tags
|
||||
|
||||
.TP
|
||||
.B project:<project-name>
|
||||
Specifies the project to which a task is related to.
|
||||
|
||||
.TP
|
||||
.B priority:H|M|L|N
|
||||
Specifies High, Medium, Low and No priority for a task.
|
||||
|
||||
.TP
|
||||
.B due:<due-date>
|
||||
Specifies the due-date of a task.
|
||||
|
||||
.TP
|
||||
.B recur:<frequency>
|
||||
Specifies the frequency of a recurrence of a task.
|
||||
|
||||
.TP
|
||||
.B until:<end-date-of-recurrence>
|
||||
Specifies the Recurrence end-date of a task.
|
||||
|
||||
.TP
|
||||
.B fg:<color-spec>
|
||||
Specifies foreground color.
|
||||
|
||||
.TP
|
||||
.B bg:<color-spec>
|
||||
Specifies background color.
|
||||
|
||||
.TP
|
||||
.B limit:<number-of-rows>
|
||||
Specifies the desired number of rows a report should have.
|
||||
|
||||
.TP
|
||||
.B wait:<wait-date>
|
||||
Date until task becomes pending.
|
||||
|
||||
.SH ATTRIBUTE MODIFIERS
|
||||
Attribute modifiers improve filters. Supported modifiers are:
|
||||
|
||||
.RS
|
||||
.B before (synonyms under, below)
|
||||
.br
|
||||
.B after (synonyms over, above)
|
||||
.br
|
||||
.B none
|
||||
.br
|
||||
.B any
|
||||
.br
|
||||
.B is (synonym equals)
|
||||
.br
|
||||
.B isnt (synonym not)
|
||||
.br
|
||||
.B has (synonym contain)
|
||||
.br
|
||||
.B hasnt
|
||||
.br
|
||||
.B startswith (synonym left)
|
||||
.br
|
||||
.B endswith (synonym right)
|
||||
.br
|
||||
.B word
|
||||
.br
|
||||
.B noword
|
||||
.RE
|
||||
|
||||
For example:
|
||||
|
||||
.RS
|
||||
task list due.before:eom priority.not:L
|
||||
.RE
|
||||
|
||||
.SH SPECIFYING DATES AND FREQUENCIES
|
||||
|
||||
.SS DATES
|
||||
Task reads dates from the command line and displays dates in the
|
||||
reports. The expected and desired date format is determined by the
|
||||
configuration variable
|
||||
.I dateformat
|
||||
in the task configuration file.
|
||||
|
||||
.RS
|
||||
.TP
|
||||
Exact specification
|
||||
task ... due:7/14/2008
|
||||
|
||||
.TP
|
||||
Relative wording
|
||||
task ... due:today
|
||||
.br
|
||||
task ... due:yesterday
|
||||
.br
|
||||
task ... due:tomorrow
|
||||
|
||||
.TP
|
||||
Day number with ordinal
|
||||
task ... due:23rd
|
||||
|
||||
.TP
|
||||
End of week (Friday), month and year
|
||||
task ... due:eow
|
||||
.br
|
||||
task ... due:eom
|
||||
.br
|
||||
task ... due:eoy
|
||||
|
||||
.TP
|
||||
Next occurring weekday
|
||||
task ... due:fri
|
||||
.RE
|
||||
|
||||
.SS FREQUENCIES
|
||||
Recurrence periods. Task supports several ways of specifying the
|
||||
.I frequency
|
||||
of recurring tasks.
|
||||
|
||||
.RS
|
||||
.TP
|
||||
daily, day, 1d, 2d, ...
|
||||
Every day or a number of days.
|
||||
|
||||
.TP
|
||||
weekdays
|
||||
Mondays, Tuesdays, Wednesdays, Thursdays, Fridays and skipping weekend days.
|
||||
|
||||
.TP
|
||||
weekly, 1w, 2w, ...
|
||||
Every week or a number of weeks.
|
||||
|
||||
.TP
|
||||
biweekly, fortnight
|
||||
Every two weeks.
|
||||
|
||||
.TP
|
||||
quarterly, 1q, 2q, ...
|
||||
Every three months, a quarter, or a number of quarters.
|
||||
|
||||
.TP
|
||||
semiannual
|
||||
Every six months.
|
||||
|
||||
.TP
|
||||
annual, yearly, 1y, 2y, ...
|
||||
Every year or a number of years.
|
||||
|
||||
.TP
|
||||
biannual, biyearly, 2y
|
||||
Every two years.
|
||||
.RE
|
||||
|
||||
|
||||
.SH COMMAND ABBREVIATION
|
||||
All task commands may be abbreviated as long as a unique prefix is used. E.g.
|
||||
|
||||
.RS
|
||||
$ task li
|
||||
.RE
|
||||
|
||||
is an unambiguous abbreviation for
|
||||
|
||||
.RS
|
||||
$ task list
|
||||
.RE
|
||||
|
||||
but
|
||||
|
||||
.RS
|
||||
$ task l
|
||||
.RE
|
||||
|
||||
could be list, ls or long.
|
||||
|
||||
.SH SPECIFYING DESCRIPTIONS
|
||||
Some task descriptions need to be escaped because of the shell
|
||||
and the special meaning of some characters to the shell. This can be
|
||||
done either by adding quotes to the description or escaping the special
|
||||
character:
|
||||
|
||||
.RS
|
||||
$ task add "quoted ' quote"
|
||||
.br
|
||||
$ task add escaped \\' quote
|
||||
.RE
|
||||
|
||||
The argument \-\- (a double dash) tells task to treat all other args
|
||||
as description:
|
||||
|
||||
.RS
|
||||
$ task add -- project:Home needs scheduling
|
||||
.RE
|
||||
|
||||
.SH CONFIGURATION FILE AND OVERRIDE OPTIONS
|
||||
Task stores its configuration in a file in the user's home directory:
|
||||
~/.taskrc . The default configuration file can be overridden with
|
||||
|
||||
.TP
|
||||
.B task rc:<path-to-alternate-file>
|
||||
Specifies an alternate configuration file.
|
||||
|
||||
.TP
|
||||
.B task rc.<name>:<value> ...
|
||||
Specifies individual configuration file overrides.
|
||||
|
||||
.SH EXAMPLES
|
||||
|
||||
For examples please see the task tutorial man page at
|
||||
|
||||
.RS
|
||||
man task-tutorial
|
||||
.RE
|
||||
|
||||
or the online documentation starting at
|
||||
|
||||
.RS
|
||||
<http://taskwarrior.org/wiki/taskwarrior/Simple>
|
||||
.RE
|
||||
|
||||
.SH FILES
|
||||
|
||||
.TP
|
||||
~/.taskrc User configuration file - see also taskrc(5).
|
||||
|
||||
.TP
|
||||
~/.task The default directory where task stores its data files. The location
|
||||
can be configured in the configuration file.
|
||||
|
||||
.TP
|
||||
~/.task/pending.data The file that contains the tasks that are not yet done.
|
||||
|
||||
.TP
|
||||
~/.task/completed.data The file that contains the completed "done" tasks.
|
||||
|
||||
.TP
|
||||
~/.task/undo.data The file that contains the information to the "undo" command.
|
||||
|
||||
.SH "CREDITS & COPYRIGHTS"
|
||||
task was written by P. Beckingham <paul@beckingham.net>.
|
||||
.br
|
||||
Copyright (C) 2006 \- 2010 P. Beckingham
|
||||
|
||||
This man page was originally written by P.C. Shyamshankar, and has been modified
|
||||
and supplemented by Federico Hernandez.
|
||||
|
||||
task is distributed under the GNU General Public License. See
|
||||
http://www.gnu.org/licenses/gpl-2.0.txt for more information.
|
||||
|
||||
.SH SEE ALSO
|
||||
.BR taskrc(5),
|
||||
.BR task-tutorial(5),
|
||||
.BR task-faq(5)
|
||||
.BR task-color(5)
|
||||
|
||||
For more information regarding task, the following may be referenced:
|
||||
|
||||
.TP
|
||||
The official site at
|
||||
<http://taskwarrior.org>
|
||||
|
||||
.TP
|
||||
The official code repository at
|
||||
<git://tasktools.org/task.git/>
|
||||
|
||||
.TP
|
||||
You can contact the project by writing an email to
|
||||
<support@taskwarrior.org>
|
||||
|
||||
.SH REPORTING BUGS
|
||||
.TP
|
||||
Bugs in task may be reported to the issue-tracker at
|
||||
<http://taskwarrior.org>
|
||||
769
doc/man/taskrc.5
Normal file
769
doc/man/taskrc.5
Normal file
@@ -0,0 +1,769 @@
|
||||
.TH taskrc 5 2010-02-03 "task 1.9.0" "User Manuals"
|
||||
|
||||
.SH NAME
|
||||
taskrc \- Configuration file for the task(1) command
|
||||
|
||||
.SH SYNOPSIS
|
||||
.B $HOME/.taskrc
|
||||
.br
|
||||
.B task rc:<directory-path>/.taskrc
|
||||
|
||||
.SH DESCRIPTION
|
||||
.B task
|
||||
obtains its configuration data from a file called
|
||||
.I .taskrc
|
||||
\&. This file is normally located in the user's home directory:
|
||||
|
||||
.RS
|
||||
$HOME/.taskrc
|
||||
.RE
|
||||
|
||||
The default location can be overridden using the
|
||||
.I rc:
|
||||
attribute when running task:
|
||||
|
||||
.RS
|
||||
$ task rc:<directory-path>/.taskrc
|
||||
.RE
|
||||
|
||||
Individual option can be overridden by using the
|
||||
.I rc.<name>:
|
||||
attribute when running task:
|
||||
|
||||
.RS
|
||||
$ task rc.<name>:<value> ...
|
||||
.RE
|
||||
|
||||
If
|
||||
.B task
|
||||
is run without an existing configuration file it will ask if it should create a
|
||||
default, sample
|
||||
.I .taskrc
|
||||
file in the user's home directory.
|
||||
|
||||
The task configuration file consists of a series of "assignments" in each line.
|
||||
The "assignments" have the syntax:
|
||||
|
||||
.RS
|
||||
<name-of-configuration-variable>=<value-to-be-set>
|
||||
.RE
|
||||
|
||||
where:
|
||||
.RS
|
||||
.TP
|
||||
<name-of-configuration-variable>
|
||||
is one of the variables described below
|
||||
|
||||
.TP
|
||||
<value-to-be-set>
|
||||
is the value the variable is to be set to.
|
||||
.RE
|
||||
|
||||
and set a configuration variable to a certain value. The equal sign ("=") is
|
||||
used to separate the variable name from the value to be set.
|
||||
|
||||
The hash mark, or pound sign ("#") is used as a "comment" character. It can be
|
||||
used to annotate the configuration file. All text after the character to the end
|
||||
of the line is ignored.
|
||||
|
||||
Note that task is flexible about the values used to represent Boolean items.
|
||||
You can use "on", "yes", "y", "1", "true", "t", "+", "enabled". Anything else
|
||||
means "off".
|
||||
|
||||
.SH EDITING
|
||||
You can edit your .taskrc file by hand if you wish, or you can use the 'config'
|
||||
command. To permanently set a value in your .taskrc file, use this command:
|
||||
|
||||
.RS
|
||||
$ task config nag "You have higher priority tasks!"
|
||||
.RE
|
||||
|
||||
To delete an entry, use this command:
|
||||
|
||||
.RS
|
||||
$ task config nag
|
||||
.RE
|
||||
|
||||
Task will then use the default value. To explicitly set a value to blank, and
|
||||
therefore avoid using the default value, use this command:
|
||||
|
||||
.RS
|
||||
$ task config nag ""
|
||||
.RE
|
||||
|
||||
Task will also display all your settings with this command:
|
||||
|
||||
.RS
|
||||
$ task config
|
||||
.RE
|
||||
|
||||
and in addition, will also perform a check of all the values in the file,
|
||||
warning you of anything it finds amiss.
|
||||
|
||||
.SH CONFIGURATION VARIABLES
|
||||
Valid variable names and their default values are:
|
||||
|
||||
.SS FILES
|
||||
|
||||
.TP
|
||||
.B data.location=$HOME/.task
|
||||
This is a path to the directory containing all the task files. By default, it is
|
||||
set up to be ~/.task, for example: /home/paul/.task
|
||||
|
||||
Note that you can use the
|
||||
.B ~
|
||||
shell meta character, which will be properly expanded.
|
||||
|
||||
.TP
|
||||
.B locking=on
|
||||
Determines whether task uses file locking when accessing the pending.data and
|
||||
completed.data files. Defaults to "on". Solaris users who store the task data
|
||||
files on an NFS mount may need to set locking to "off". Note that there is
|
||||
danger in setting this value to "off" - another program (or another instance of
|
||||
task) may write to the task.pending file at the same time.
|
||||
|
||||
.SS TERMINAL
|
||||
.TP
|
||||
.B curses=on
|
||||
Determines whether task uses ncurses to establish the size of the window you are
|
||||
using, for text wrapping.
|
||||
|
||||
.TP
|
||||
.B defaultwidth=80
|
||||
The width of tables used when ncurses support is not available. Defaults to 80.
|
||||
|
||||
.TP
|
||||
.B editor=vi
|
||||
Specifies which text editor you wish to use for when the
|
||||
.B task edit <ID>
|
||||
command is used. Task will first look for this configuration variable. If found,
|
||||
it is used. Otherwise task will look for the $VISUAL or $EDITOR environment
|
||||
variables, before it defaults to using "vi".
|
||||
|
||||
.SS MISCELLANEOUS
|
||||
|
||||
.TP
|
||||
.B locale=en-US
|
||||
The locale is a combination of ISO 639-1 language code and ISO 3166 country
|
||||
code. If not specified, task will assume en-US. If specified, task will locate
|
||||
the correct file of localized strings and proceed. It is an error to specify a
|
||||
locale for which there is no strings file.
|
||||
|
||||
.TP
|
||||
.B confirmation=yes
|
||||
May be "yes" or "no", and determines whether task will ask for confirmation
|
||||
before deleting a task or doing bulk changes. The default value is "yes".
|
||||
|
||||
.TP
|
||||
.B echo.command=yes
|
||||
May be "yes" or "no", and causes task to display the ID and description of any
|
||||
task when you run the start, stop, do, undo or delete commands. The default
|
||||
value is "yes".
|
||||
|
||||
.TP
|
||||
.B annotations=full
|
||||
.TP
|
||||
.B report.X.annotations=full
|
||||
Controls the display of annotations in reports. Defaults to full - all
|
||||
annotations are displayed. Set to "sparse" only the last (newest) annotation
|
||||
is displayed and if there are more than one present for a task a "+" sign is
|
||||
added to the description. Set to "none" the output of annotations is disabled
|
||||
and a "+" sign will be added if there are any annotations present. The default
|
||||
value is "full".
|
||||
|
||||
.TP
|
||||
.B next=2
|
||||
Is a number, defaulting to 2, which is the number of tasks for each project that
|
||||
are shown in the
|
||||
.B task next
|
||||
command.
|
||||
|
||||
.TP
|
||||
.B bulk=2
|
||||
Is a number, defaulting to 2. When more than this number of tasks are modified
|
||||
in a single command, confirmation will be required, unless the
|
||||
.B confirmation
|
||||
variable is "no".
|
||||
|
||||
This is useful for preventing large-scale unintended changes.
|
||||
|
||||
.TP
|
||||
.B nag=You have higher priority tasks.
|
||||
This may be a string of text, or blank. It is used as a prompt when a task is
|
||||
started or completed that is not considered high priority. The "task next"
|
||||
command lists important tasks, and completing one of those does not generate
|
||||
this nagging. Default value is: You have higher priority tasks. It is a gentle
|
||||
reminder that you are contradicting your own priority settings.
|
||||
|
||||
.TP
|
||||
.B complete.all.projects=yes
|
||||
May be yes or no, and determines whether the tab completion scripts consider all
|
||||
the project names you have used, or just the ones used in active tasks. The
|
||||
default value is "no".
|
||||
|
||||
.TP
|
||||
.B complete.all.tags=yes
|
||||
May be yes or no, and determines whether the tab completion scripts consider all
|
||||
the tag names you have used, or just the ones used in active tasks. The default
|
||||
value is "no".
|
||||
|
||||
.TP
|
||||
.B search.case.sensitive=yes
|
||||
May be yes or no, and determines whether keyword lookup and substitutions on the
|
||||
description and annotations are done in a case sensitive way. Defaults to yes.
|
||||
|
||||
.TP
|
||||
.B _forcecolor=no
|
||||
Task shuts off color automatically when the output is not sent directly to a
|
||||
a TTY. For example, this command:
|
||||
|
||||
.RS
|
||||
.RS
|
||||
$ task list > file
|
||||
.RE
|
||||
|
||||
will not use any color. To override this, use:
|
||||
|
||||
.RS
|
||||
$ task rc._forcecolor=yes list > file
|
||||
.RE
|
||||
.RE
|
||||
|
||||
.TP
|
||||
.B blanklines=yes
|
||||
Turning this value off causes task to generate a more vertically compact output.
|
||||
|
||||
.TP
|
||||
.B shell.prompt=task>
|
||||
The task shell command uses this value as a prompt. You can change it to any
|
||||
string you like.
|
||||
|
||||
.TP
|
||||
.B active.indicator=*
|
||||
The character or string to show in the active column. Defaults to *.
|
||||
|
||||
.TP
|
||||
.B tag.indicator=+
|
||||
The character or string to show in the tag_indicator column. Defaults to +.
|
||||
|
||||
.TP
|
||||
.B recurrence.indicator=R
|
||||
The character or string to show in the recurrence_indicator column. Defaults to R.
|
||||
|
||||
.TP
|
||||
.B debug=off
|
||||
Task has a debug mode that causes diagnostic output to be displayed. Typically
|
||||
this is not something anyone would want, but when reporting a bug, debug output
|
||||
can be useful. It can also help explain how the command line is being parsed,
|
||||
but the information is displayed in a developer-friendly, not a user-friendly
|
||||
way.
|
||||
|
||||
.TP
|
||||
.B alias.rm=delete
|
||||
Task supports command aliases. This alias provides an alternate name (rm) for
|
||||
the delete command. You can use aliases to provide alternate names for any of
|
||||
task's commands.
|
||||
|
||||
.SS DATES
|
||||
|
||||
.TP
|
||||
.B dateformat=m/d/Y
|
||||
.TP
|
||||
.B dateformat.report=m/d/Y
|
||||
.TP
|
||||
.B dateformat.holiday=YMD
|
||||
.TP
|
||||
.B report.X.dateformat=m/d/Y
|
||||
This is a string of characters that define how task formats date values. The
|
||||
precedence order for the configuration variable is report.X.dateformat then
|
||||
reportdateformat then dateformat. While report.X.dateformat only formats the
|
||||
due date in reports, reportdateformat formats the due date both in reports
|
||||
and "task info". If both of these are not set then dateformat will be applied
|
||||
to the due date. Entered dates as well as all other displayed dates in reports
|
||||
are formatted according to dateformat.
|
||||
|
||||
The default value is: m/d/Y. The string should contain the characters:
|
||||
|
||||
.RS
|
||||
.RS
|
||||
m minimal-digit month, for example 1 or 12
|
||||
.br
|
||||
d minimal-digit day, for example 1 or 30
|
||||
.br
|
||||
y two-digit year, for example 09
|
||||
.br
|
||||
D two-digit day, for example 01 or 30
|
||||
.br
|
||||
M two-digit month, for example 01 or 12
|
||||
.br
|
||||
Y four-digit year, for example 2009
|
||||
.br
|
||||
a short name of weekday, for example Mon or Wed
|
||||
.br
|
||||
A long name of weekday, for example Monday or Wednesday
|
||||
.br
|
||||
b short name of month, for example Jan or Aug
|
||||
.br
|
||||
B long name of month, for example January or August
|
||||
.br
|
||||
V weeknumber, for example 03 or 37
|
||||
.RE
|
||||
.RE
|
||||
|
||||
.RS
|
||||
The string may also contain other characters to act as spacers, or formatting.
|
||||
Examples for other values of dateformat:
|
||||
.RE
|
||||
|
||||
.RS
|
||||
.RS
|
||||
.br
|
||||
d/m/Y would use for input and output 24/7/2009
|
||||
.br
|
||||
yMD would use for input and output 090724
|
||||
.br
|
||||
M-D-Y would use for input and output 07-24-2009
|
||||
.RE
|
||||
.RE
|
||||
|
||||
.RS
|
||||
Examples for other values of reportdateformat:
|
||||
.RE
|
||||
|
||||
.RS
|
||||
.RS
|
||||
.br
|
||||
a D b Y (V) would do an output as "Fri 24 Jul 2009 (30)"
|
||||
.br
|
||||
A, B D, Y would do an output as "Friday, July 24, 2009"
|
||||
.br
|
||||
vV a Y-M-D would do an output as "v30 Fri 2009-07.24"
|
||||
.RE
|
||||
.RE
|
||||
|
||||
.TP
|
||||
.B weekstart=Sunday
|
||||
Determines the day a week starts. Valid values are Sunday or Monday only. The
|
||||
default value is "Sunday".
|
||||
|
||||
.TP
|
||||
.B displayweeknumber=yes
|
||||
Determines if week numbers are displayed when using the "task calendar" command.
|
||||
The week number is dependent on the day a week starts. The default value is
|
||||
"yes".
|
||||
|
||||
.TP
|
||||
.B due=7
|
||||
This is the number of days into the future that define when a task is
|
||||
considered due, and is colored accordingly. The default value is 7.
|
||||
|
||||
.TP
|
||||
.B calendar.details=sparse
|
||||
If set to full running "task calendar" will display the details of tasks with
|
||||
due dates that fall into the calendar period. The corresponding days will be
|
||||
color-coded in the calendar. If set to sparse only the corresponding days will
|
||||
be color coded and no details will be displayed. The displaying of due dates
|
||||
with details is turned off by setting the variable to none. The default value
|
||||
is "sparse".
|
||||
|
||||
.TP
|
||||
.B calendar.details.report=list
|
||||
The report to run when displaying the details of tasks with due date when
|
||||
running the "task calendar" command. The default value is "list".
|
||||
|
||||
.TP
|
||||
.B calendar.holidays=full
|
||||
If set to full running "task calendar" will display holidays in the calendar by
|
||||
color-coding the corresponding days. A detailed list with the dates and names
|
||||
of the holidays is also shown. If set to sparse only the days are color-coded
|
||||
and no details on the holidays will be displayed. The displaying of holidays is
|
||||
turned off by setting the variable to none. The default value is "none".
|
||||
|
||||
.TP
|
||||
.B Holidays
|
||||
Holidays are entered either directly in the .taskrc file or via an include file
|
||||
that is specified in .taskrc. For each holiday the name and the date is
|
||||
required to be given:
|
||||
|
||||
.RS
|
||||
.RS
|
||||
.br
|
||||
holiday.towel.name=Day of the towel
|
||||
.br
|
||||
holiday.towel.date=20100525
|
||||
.br
|
||||
holiday.sysadmin.name=System Administrator Appreciation Day
|
||||
.br
|
||||
holiday.sysadmin.date=20100730
|
||||
.RE
|
||||
.RE
|
||||
|
||||
.RS
|
||||
Dates are to be entered according to the setting in the dateformat.holiday
|
||||
variable.
|
||||
.RE
|
||||
|
||||
.TP
|
||||
.B monthsperline=3
|
||||
Determines how many months the "task calendar" command renders across the
|
||||
screen. Defaults to however many will fit. If more months than will fit are
|
||||
specified, task will only show as many that will fit.
|
||||
|
||||
.SS COLOR CONTROLS
|
||||
|
||||
.TP
|
||||
.B color=on
|
||||
May be "on" or "off". Determines whether task uses color. When "off", task will
|
||||
use dashes (-----) to underline column headings.
|
||||
|
||||
.TP
|
||||
.B fontunderline=on
|
||||
Determines if font underlines or ASCII dashes should be used to underline
|
||||
headers, even when color is enabled.
|
||||
|
||||
Task has a number of coloration rules. They correspond to a particular
|
||||
attribute of a task, such as it being due, or being active, and specifies the
|
||||
automatic coloring of that task. A list of valid colors, depending on your
|
||||
terminal, can be obtained by running the command:
|
||||
|
||||
.RS
|
||||
.B task color
|
||||
.RE
|
||||
|
||||
.RS
|
||||
The coloration rules and their defaults are:
|
||||
.RE
|
||||
|
||||
.RS
|
||||
.RS
|
||||
.B color.overdue=bold red
|
||||
The color for overdue tasks.
|
||||
.br
|
||||
.B color.due.today=bold magenta
|
||||
The color of tasks due today.
|
||||
.br
|
||||
.B color.due=bold yellow
|
||||
The color of due tasks.
|
||||
.br
|
||||
.B color.pri.H=bold
|
||||
The color of priority:H tasks.
|
||||
.br
|
||||
.B color.pri.M=on yellow
|
||||
The color of priority:M tasks. No default value.
|
||||
.br
|
||||
.B color.pri.L=on green
|
||||
The color of priority:L tasks. No default value.
|
||||
.br
|
||||
.B color.pri.none=white on blue
|
||||
The color of priority: tasks. No default value.
|
||||
.br
|
||||
.B color.active=bold cyan
|
||||
The color of active tasks.
|
||||
.br
|
||||
.B color.tagged=yellow
|
||||
The color of tagged tasks.
|
||||
.br
|
||||
.B color.recurring=on red
|
||||
The color for recurring tasks.
|
||||
.RE
|
||||
.RE
|
||||
|
||||
.RS
|
||||
To disable a coloration rule for which there is a default, set the value to
|
||||
nothing, for example:
|
||||
.RS
|
||||
.B color.tagged=
|
||||
.RE
|
||||
.RE
|
||||
|
||||
.RS
|
||||
See the task-color(5) man pages for color details.
|
||||
.RE
|
||||
|
||||
.RS
|
||||
Certain attributes like tags, projects and keywords can have their own
|
||||
coloration rules.
|
||||
.RE
|
||||
|
||||
.RS
|
||||
.TP
|
||||
.B color.tag.X=yellow
|
||||
Colors any task that has the tag X.
|
||||
|
||||
.TP
|
||||
.B color.project.X=on green
|
||||
Colors any task assigned to project X.
|
||||
|
||||
.TP
|
||||
.B color.keyword.X=on blue
|
||||
Colors any task where the description or any annotation contains X.
|
||||
|
||||
.TP
|
||||
.B color.header=green
|
||||
Colors any of the messages printed prior to the report output.
|
||||
|
||||
.TP
|
||||
.B color.footnote=green
|
||||
Colors any of the messages printed last.
|
||||
|
||||
.TP
|
||||
.B color.calendar.today=black on cyan
|
||||
Color of today in calendar.
|
||||
|
||||
.TP
|
||||
.B color.calendar.due=black on green
|
||||
Color of days with due tasks in calendar.
|
||||
|
||||
.TP
|
||||
.B color.calendar.due.today=black on magenta
|
||||
Color of today with due tasks in calendar.
|
||||
|
||||
.TP
|
||||
.B color.calendar.overdue=black on red
|
||||
Color of days with overdue tasks in calendar.
|
||||
|
||||
.TP
|
||||
.B color.calendar.weekend=bright white on black
|
||||
Color of weekend days in calendar.
|
||||
|
||||
.TP
|
||||
.B color.calendar.holiday=black on bright yellow
|
||||
Color of holidays in calendar.
|
||||
|
||||
.TP
|
||||
.B color.calendar.weeknumber=black on white
|
||||
Color of weeknumbers in calendar.
|
||||
.RE
|
||||
|
||||
.RS
|
||||
It is possible to apply a specific color to every other task in a report,
|
||||
which can make it easier to visually separate tasks. This is especially
|
||||
useful when tasks are displayed over multiple lines due to long descriptions
|
||||
or annotations.
|
||||
.TP
|
||||
.B color.alternate=on rgb253
|
||||
Color of alternate tasks.
|
||||
.RE
|
||||
|
||||
.SS SHADOW FILE
|
||||
|
||||
.TP
|
||||
.B
|
||||
shadow.file=$HOME/.task/shadow.txt
|
||||
If specified, designates a file path that will be automatically written to by
|
||||
task, whenever the task database changes. In other words, it is automatically
|
||||
kept up to date. The shadow.command configuration variable is used to determine
|
||||
which report is written to the shadow file. There is no color used in the
|
||||
shadow file. This feature can be useful in maintaining a current file for use by
|
||||
programs like GeekTool, Conky or Samurize.
|
||||
|
||||
.TP
|
||||
.B
|
||||
shadow.command=list
|
||||
This is the command that is run to maintain the shadow file, determined by the
|
||||
.I shadow.file
|
||||
configuration variable. The format is identical to that of
|
||||
.I default.command
|
||||
\&. Please see the corresponding documentation for that command.
|
||||
|
||||
.TP
|
||||
.B
|
||||
shadow.notify=on
|
||||
When this value is set to "on", task will display a message whenever the shadow
|
||||
file is updated by some task command.
|
||||
|
||||
.SS DEFAULTS
|
||||
|
||||
.TP
|
||||
.B
|
||||
default.project=foo
|
||||
Provides a default project name for the
|
||||
.I task add
|
||||
command, if you don't specify one. The default is blank.
|
||||
|
||||
.TP
|
||||
.B
|
||||
default.priority=M
|
||||
Provides a default priority for the
|
||||
.I task add
|
||||
command, if you don't specify one. The default is blank.
|
||||
|
||||
.TP
|
||||
.B
|
||||
default.command=list
|
||||
Provides a default command that is run every time task is invoked with no
|
||||
arguments. For example, if set to:
|
||||
|
||||
.RS
|
||||
.RS
|
||||
default.command=list project:foo
|
||||
.RE
|
||||
.RE
|
||||
|
||||
.RS
|
||||
then task will run the "list project:foo" command if no command is specified.
|
||||
This means that by merely typing
|
||||
.RE
|
||||
|
||||
.RS
|
||||
.RS
|
||||
$ task
|
||||
.br
|
||||
[task list project:foo]
|
||||
.br
|
||||
\&
|
||||
.br
|
||||
ID Project Pri Description
|
||||
1 foo H Design foo
|
||||
2 foo Build foo
|
||||
.RE
|
||||
.RE
|
||||
|
||||
.SS REPORTS
|
||||
|
||||
The reports can be customized by using the following configuration variables.
|
||||
The output columns, their labels and the sort order can be set using the
|
||||
corresponding variables for each report. Each report name is used as a
|
||||
"command" name. For example
|
||||
|
||||
.TP
|
||||
.B task overdue
|
||||
|
||||
.TP
|
||||
.B report.X.description
|
||||
The description for report X when running the "task help" command.
|
||||
|
||||
.TP
|
||||
.B report.X.columns
|
||||
The columns that will be used when generating the report X. Valid columns are:
|
||||
id, uuid, project, priority, entry, start, due, recur, recur_indicator, age,
|
||||
age_compact, active, tags, tag_indicator, description, description_only,
|
||||
countdown, countdown_compact.
|
||||
The IDs are separated by commas.
|
||||
|
||||
.TP
|
||||
.B report.X.labels
|
||||
The labels for each column that will be used when generating report X. The
|
||||
labels are a comma separated list.
|
||||
|
||||
.TP
|
||||
.B report.X.sort
|
||||
The sort order of the tasks in the generated report X. The sort order is
|
||||
specified by using the column ids post-fixed by a "+" for ascending sort order
|
||||
or a "-" for descending sort order. The sort IDs are separated by commas
|
||||
|
||||
.TP
|
||||
.B report.X.filter
|
||||
This adds a filter to the report X so that only tasks matching the filter
|
||||
criteria are displayed in the generated report.
|
||||
|
||||
.TP
|
||||
.B report.X.dateformat
|
||||
This adds a dateformat to the report X that will be used by the "due date"
|
||||
column. If it is not set then reportdateformat and dateformat will be used in
|
||||
this order. See the
|
||||
.B DATES
|
||||
section for details on the sequence placeholders.
|
||||
|
||||
.TP
|
||||
.B report.X.annotations
|
||||
This adds the possibility to control the output of annotations for a task in a
|
||||
report. See the
|
||||
.B annotations
|
||||
variable for details on the possible values.
|
||||
|
||||
.TP
|
||||
.B report.X.limit
|
||||
An optional value to a report limiting the number of displayed tasks in the
|
||||
generated report.
|
||||
|
||||
.TP
|
||||
Task comes with a number of predefined reports in its default configuration
|
||||
file. These reports are:
|
||||
|
||||
.TP
|
||||
.B long
|
||||
Lists all task, all data, matching the specified criteria.
|
||||
|
||||
.TP
|
||||
.B list
|
||||
Lists all tasks matching the specified criteria.
|
||||
|
||||
.TP
|
||||
.B ls
|
||||
Short listing of all tasks matching the specified criteria.
|
||||
|
||||
.TP
|
||||
.B minimal
|
||||
Minimal listing of all tasks matching the specified criteria.
|
||||
|
||||
.TP
|
||||
.B newest
|
||||
Shows the newest tasks.
|
||||
|
||||
.TP
|
||||
.B oldest
|
||||
Shows the oldest tasks.
|
||||
|
||||
.TP
|
||||
.B overdue
|
||||
Lists overdue tasks matching the specified criteria.
|
||||
|
||||
.TP
|
||||
.B active
|
||||
Lists active tasks matching the specified criteria.
|
||||
|
||||
.TP
|
||||
.B completed
|
||||
Lists completed tasks matching the specified criteria.
|
||||
|
||||
.TP
|
||||
.B recurring
|
||||
Lists recurring tasks matching the specified criteria.
|
||||
|
||||
.TP
|
||||
.B waiting
|
||||
Lists all waiting tasks matching the specified criteria.
|
||||
|
||||
.TP
|
||||
.B all
|
||||
Lists all tasks matching the specified criteria.
|
||||
|
||||
.TP
|
||||
.B next
|
||||
Lists all tasks with upcoming due dates matching the specified criteria.
|
||||
|
||||
.SH "CREDITS & COPYRIGHTS"
|
||||
task was written by P. Beckingham <paul@beckingham.net>.
|
||||
.br
|
||||
Copyright (C) 2006 \- 2010 P. Beckingham
|
||||
|
||||
This man page was originally written by Federico Hernandez.
|
||||
|
||||
task is distributed under the GNU General Public License. See
|
||||
http://www.gnu.org/licenses/gpl-2.0.txt for more information.
|
||||
|
||||
.SH SEE ALSO
|
||||
.BR task(1),
|
||||
.BR task-tutorial(5),
|
||||
.BR task-faq(5)
|
||||
.BR task-color(5)
|
||||
|
||||
For more information regarding task, the following may be referenced:
|
||||
|
||||
.TP
|
||||
The official site at
|
||||
<http://taskwarrior.org>
|
||||
|
||||
.TP
|
||||
The official code repository at
|
||||
<git://tasktools.org/task.git/>
|
||||
|
||||
.TP
|
||||
You can contact the project by writing an email to
|
||||
<support@taskwarrior.org>
|
||||
|
||||
.SH REPORTING BUGS
|
||||
.TP
|
||||
Bugs in task may be reported to the issue-tracker at
|
||||
<http://taskwarrior.org>
|
||||
40
doc/misc/grammar.bnf
Normal file
40
doc/misc/grammar.bnf
Normal file
@@ -0,0 +1,40 @@
|
||||
|
||||
# This is a full BNF grammar for the task command line. It is intended that a
|
||||
# future release of task will incorporate a complete lexer/parser implementing
|
||||
# this grammar, which will allow for more sophisticated command lines, for
|
||||
# example:
|
||||
#
|
||||
# task delete 1 2 4-7
|
||||
# task add pri:H pro:X -- pro pri 1 ///
|
||||
#
|
||||
|
||||
command ::= simple_command
|
||||
| filter_command filter?
|
||||
| id_command
|
||||
| "export" file
|
||||
| <id>
|
||||
| <id> <substitution> ;
|
||||
|
||||
simple_command ::= "version" | "help" | "projects" | "tags" | "next" | "stats"
|
||||
| "color" ;
|
||||
|
||||
filter_command ::= "summary" | "history" | "calendar" | "active" | "overdue"
|
||||
| "oldest" | "newest" | "add" | "list" | "long" | "ls"
|
||||
| "completed" ;
|
||||
|
||||
id_command ::= "delete" | "undelete" | "info" | "start" | "end" | "done"
|
||||
| "undo" ;
|
||||
|
||||
filter ::= filter_part+ ;
|
||||
|
||||
filter_part ::= tag_add | tag_remove | attribute | word ;
|
||||
|
||||
tag_add ::= "+" word ;
|
||||
tag_remove ::= "-" word ;
|
||||
attribute ::= word ":" word ;
|
||||
word ::=
|
||||
file ::=
|
||||
id ::= digit+ ;
|
||||
digit ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" ;
|
||||
substitution ::= "/" word+ "/" word* "/" "g"? ;
|
||||
|
||||
34
doc/misc/script-color.txt
Normal file
34
doc/misc/script-color.txt
Normal file
@@ -0,0 +1,34 @@
|
||||
Hello. This is a demonstration of the
|
||||
task program color capabilities coming
|
||||
in version 1.9.
|
||||
|
||||
task color The color command shows the various
|
||||
supported colors. For this you will
|
||||
need an xterm with 256-color support,
|
||||
or an equivalent.
|
||||
|
||||
This demo uses iTerm running on Snow
|
||||
Leopard.
|
||||
|
||||
task add Prepare 1.9 for release Let's create a few tasks, to illustrate
|
||||
task add Update the various docs the features. Five should be enough.
|
||||
task add Run the regression tests
|
||||
task add Make the packages
|
||||
task add Upload to distributions
|
||||
|
||||
--- NOTES
|
||||
|
||||
16-color mode
|
||||
upgrade
|
||||
blending
|
||||
alternate lines
|
||||
|
||||
--- NOTES
|
||||
|
||||
task ls Okay, let's color any tasks that
|
||||
mention tests a nice medium blue.
|
||||
|
||||
echo 'color.keyword.test=color23' >> ~/.taskrc
|
||||
|
||||
|
||||
|
||||
40
doc/misc/script-hooks-2.txt
Normal file
40
doc/misc/script-hooks-2.txt
Normal file
@@ -0,0 +1,40 @@
|
||||
$ # Q: What is a formatting hook?
|
||||
$ # A: Lua code that modifies task output at run time.
|
||||
$
|
||||
$ cat > hooks.lua
|
||||
|
||||
-- Make ID not show up
|
||||
function id (name, value)
|
||||
return "(shhh - it's a secret)", 0, nil
|
||||
end
|
||||
|
||||
-- Decorate the UUID
|
||||
function uuid (name, value)
|
||||
return '<<<' .. value .. '>>>', 0, nil
|
||||
end
|
||||
|
||||
^D
|
||||
|
||||
$ # Q: What is a command hook?
|
||||
$ # A: Lua code that changes the way commands work.
|
||||
$
|
||||
$ cat >> hooks.lua
|
||||
|
||||
-- Disable tags
|
||||
function notags ()
|
||||
return 1, 'Tags have been disabled'
|
||||
end
|
||||
|
||||
^D
|
||||
|
||||
$
|
||||
$ task config -- hook.format-id ~/demo/hooks.lua:id
|
||||
$ task config -- hook.format-uuid ~/demo/hooks.lua:uuid
|
||||
$ task config -- hook.pre-tag ~/demo/hooks.lua:notags
|
||||
$ task list
|
||||
$ task add Demonstrate formatting hooks
|
||||
$ task 1 info
|
||||
$ task config hooks on
|
||||
$ task 1 info
|
||||
$ task 1 +try_to_tag
|
||||
|
||||
33
doc/misc/script-hooks.txt
Normal file
33
doc/misc/script-hooks.txt
Normal file
@@ -0,0 +1,33 @@
|
||||
$
|
||||
$ # Task now has Lua 5.1.4 built in.
|
||||
$
|
||||
$ task version
|
||||
$ cat > hooks.lua
|
||||
function foo ()
|
||||
print ("Hello from Lua")
|
||||
return 0, nil
|
||||
end
|
||||
^D
|
||||
$
|
||||
$ # Task can call into Lua at many points during execution.
|
||||
$ # This one is called immediately before task quits.
|
||||
$
|
||||
$ task rc.hook.pre-exit=~/hooks.lua:foo version
|
||||
$
|
||||
$ # While task is calling Lua code, the Lua can also call
|
||||
$ # back into a task API, for information.
|
||||
$
|
||||
$ cat > hooks.lua
|
||||
function foo ()
|
||||
print "Lua version is " .. task_lua_version ())
|
||||
print "Task version is " .. task_version ())
|
||||
return 0, nil
|
||||
end
|
||||
^D
|
||||
$
|
||||
$ cat >> .taskrc
|
||||
hook.pre-exit=~/hooks.lua:foo
|
||||
^D
|
||||
$
|
||||
$ task version
|
||||
|
||||
109
doc/misc/script.txt
Normal file
109
doc/misc/script.txt
Normal file
@@ -0,0 +1,109 @@
|
||||
Hello, and welcome to this quick demo of the task program.
|
||||
|
||||
task add do laundry Let's add some tasks
|
||||
I need to do laundry
|
||||
|
||||
task add project:garage order dumpster Oh yeah, I need to order the dumpster
|
||||
|
||||
task add +phone tell mom i loveher Must call Mom (that "phone" there is a tag - they can
|
||||
be useful for searching and categorizing)
|
||||
task add +phone pro:garage schedule
|
||||
goodwill pickup
|
||||
|
||||
task ad +email pro:garage ask Tom if Notice I can abbreviate commands
|
||||
he wants that old bkie
|
||||
|
||||
task ls Let's see what we've got
|
||||
Oh, I spelled bike wrong
|
||||
|
||||
task 5 /bkie/bike/
|
||||
task ls That's better
|
||||
|
||||
task 1 pro:home Let's assign projects
|
||||
task 3 pro:home tell mom I love her
|
||||
task ls pro:garage
|
||||
|
||||
task long pro:garage Let's see all the columns
|
||||
|
||||
task list pro:garage There are different ways to list
|
||||
|
||||
task lis +phone By tag
|
||||
task li pro:garage +phone By project and tag
|
||||
task l mom By word
|
||||
|
||||
task 1 priority:H Priorities can be High, Medium or Low
|
||||
task pri:H 3
|
||||
task 1 pri:M
|
||||
task li The list is sorted by priority.
|
||||
|
||||
task 2 pri:L
|
||||
task li
|
||||
|
||||
task done 3 Suppose task 3 is done
|
||||
task li ...and it's gone
|
||||
|
||||
task 2 +phone +mistake Lets add tags
|
||||
|
||||
# Oops!
|
||||
task 2 -mistake or remove tags
|
||||
|
||||
task tags or look at all the tags
|
||||
|
||||
task info 2 or all the details
|
||||
|
||||
task projects or all the projects
|
||||
|
||||
task 3 fg:bold Let's make it colorful
|
||||
task 4 fg:bold_green
|
||||
task li
|
||||
task 3 fg:bold_underline_white
|
||||
task li
|
||||
|
||||
task 4 bg:on_bright_red fg:bold_yellow
|
||||
task li Oh that's just nasty - let's get rid of that.
|
||||
task 4 bg:
|
||||
task li
|
||||
task 4 fg:
|
||||
task 3 fg:
|
||||
|
||||
task colors There are many combinations to choose from
|
||||
|
||||
(Slashes!!!)
|
||||
task 1 due:6/8/2008 Let's add a due date
|
||||
date
|
||||
|
||||
task li
|
||||
task calendar Notice the due task is in yellow, today is marked cyan
|
||||
|
||||
task 1 due:5/20/2008 This is now an overdue task
|
||||
task li and it shows up red
|
||||
task overdue
|
||||
task cal
|
||||
|
||||
task export file.csv You can export the tasks to a spreadsheet
|
||||
cat file.csv
|
||||
|
||||
task start 1 Started tasks can be used as reminders
|
||||
of what you are supposed to be doing
|
||||
|
||||
task active They show up as active
|
||||
task done 1 Let's clear out a couple
|
||||
task li
|
||||
task done 3
|
||||
task active
|
||||
|
||||
task summary Summary shows progress on all projects
|
||||
|
||||
task history History shows general activity - how many added,
|
||||
completed etc, by month
|
||||
|
||||
task ghistory This report shows a histogram of tasks that were
|
||||
added (in red), completed (in green) and deleted
|
||||
(in yellow), all by month.
|
||||
|
||||
And that's it. There are more commands than this
|
||||
covered in the online documentation, but this should give
|
||||
the basic idea.
|
||||
|
||||
Thank you for watching.
|
||||
|
||||
1
doc/rc/dark-16.theme
Normal file
1
doc/rc/dark-16.theme
Normal file
@@ -0,0 +1 @@
|
||||
# Sample task 1.9 (or later) color theme
|
||||
1
doc/rc/dark-256.theme
Normal file
1
doc/rc/dark-256.theme
Normal file
@@ -0,0 +1 @@
|
||||
# Sample task 1.9 (or later) color theme
|
||||
34
doc/rc/holidays-SE.rc
Normal file
34
doc/rc/holidays-SE.rc
Normal file
@@ -0,0 +1,34 @@
|
||||
holiday.nyårsdagen.name=Nyårsdagen
|
||||
holiday.nyårsdagen.date=20100101
|
||||
holiday.trettondedagjul.name=Trettondedag jul
|
||||
holiday.trettondedagjul.date=20100106
|
||||
holiday.långfredagen.name=Långfredagen
|
||||
holiday.långfredagen.date=20100402
|
||||
holiday.påskdagen.name=Påskdagen
|
||||
holiday.påskdagen.date=20100404
|
||||
holiday.annandagpåsk.name=Annandag påsk
|
||||
holiday.annandagpåsk.date=20100405
|
||||
holiday.valborgmässoafton.name=Valborgmässoafton
|
||||
holiday.valborgmässoafton.date=20100430
|
||||
holiday.förstamaj.name=Första maj
|
||||
holiday.förstamaj.date=20100501
|
||||
holiday.kristihimmelfärdsdag.name=Kristi Himmelsfärdsdag
|
||||
holiday.kristihimmelfärdsdag.date=20100513
|
||||
holiday.pingstdagen.name=Pingstdagen
|
||||
holiday.pingstdagen.date=20100523
|
||||
holiday.nationaldagen.name=Nationaldagen
|
||||
holiday.nationaldagen.date=20100606
|
||||
holiday.midsommarafton.name=Midsommarafton
|
||||
holiday.midsommarafton.date=20100625
|
||||
holiday.midsommardagen.name=Midsommardagen
|
||||
holiday.midsommardagen.date=20100626
|
||||
holiday.allahelgonsdag.name=Alla Helgons Dag
|
||||
holiday.allahelgonsdag.date=20101106
|
||||
holiday.julafton.name=Julafton
|
||||
holiday.julafton.date=20101224
|
||||
holiday.juldagen.name=Juldagen
|
||||
holiday.juldagen.date=20101225
|
||||
holiday.annandagjul.name=Annandag jul
|
||||
holiday.annandagjul.date=20101226
|
||||
holiday.nyårsafton.name=Nyårsafton
|
||||
holiday.nyårsafton.date=20101231
|
||||
28
doc/rc/holidays-US.rc
Normal file
28
doc/rc/holidays-US.rc
Normal file
@@ -0,0 +1,28 @@
|
||||
holiday.newyearsday.name=New Years Day
|
||||
holiday.newyearsday.date=20100101
|
||||
holiday.martinlutherkingday.name=Martin Luther King Day
|
||||
holiday.martinlutherkingday.date=20100118
|
||||
holiday.presidentsday.name=Presidents Day
|
||||
holiday.presidentsday.date=20100215
|
||||
holiday.patriotsday.name=Patriots Day
|
||||
holiday.patriotsday.date=20100419
|
||||
holiday.memorialday.name=Memorial Day
|
||||
holiday.memorialday.date=20100531
|
||||
holiday.independenceday.name=Independence Day
|
||||
holiday.independenceday.date=20100704
|
||||
holiday.independenceday2.name=Independence Day observed
|
||||
holiday.independenceday2.date=20100705
|
||||
holiday.laborday.name=Labor Day
|
||||
holiday.laborday.date=20100906
|
||||
holiday.columbusday.name=Columbus Day
|
||||
holiday.columbusday.date=20101011
|
||||
holiday.veteransdays.name=Veterans Day
|
||||
holiday.veteransdays.date=20101111
|
||||
holiday.thanksgiving.name=Thanksgiving Day
|
||||
holiday.thanksgiving.date=20101125
|
||||
holiday.christmaseve.name=Christmas Eve
|
||||
holiday.christmaseve.date=20101224
|
||||
holiday.christmasday.name=Christmas Day
|
||||
holiday.christmasday.date=20101225
|
||||
holiday.newyearseve.name=New Years Eve
|
||||
holiday.newyearseve.date=20101231
|
||||
1
doc/rc/light-16.theme
Normal file
1
doc/rc/light-16.theme
Normal file
@@ -0,0 +1 @@
|
||||
# Sample task 1.9 (or later) color theme
|
||||
1
doc/rc/light-256.theme
Normal file
1
doc/rc/light-256.theme
Normal file
@@ -0,0 +1 @@
|
||||
# Sample task 1.9 (or later) color theme
|
||||
157
i18n/strings.de-DE
Normal file
157
i18n/strings.de-DE
Normal file
@@ -0,0 +1,157 @@
|
||||
# This is an example strings.en-US file.
|
||||
#
|
||||
# The task program has a built-in set of default strings, which are UTF8 encoded
|
||||
# for the en-US locale. A file such as this is used to override those defaults.
|
||||
# This means that a strings file is merely a delta applied to the built-in
|
||||
# strings, so an empty string file means you get en-US.
|
||||
#
|
||||
# To use another string file, add the following entry to your .taskrc file:
|
||||
#
|
||||
# locale=sv-SE # Swedish string set
|
||||
|
||||
# 1xx task shell
|
||||
100 Unbekannter Fehler #Unknown Error.
|
||||
101 Konnte nicht Datenverzeichnis HOME aus passwd Datei lesen #Could not read home directory from the passwd file.
|
||||
102 (j/n) #(y/n)
|
||||
103 Ungültige ID in Sequenz #Invalid ID in sequence
|
||||
104 Ungültige ID in Bereich #Invalid ID in range
|
||||
105 Invertierter Sequenzbereich hoch-niedrig #Inverted sequence range high-low
|
||||
106 ID Bereich zu gross #ID Range too large
|
||||
107 Keine Sequenz #Not a sequence.
|
||||
108 Task interaktiv nur möglich mit vorhandenem ncurses #Interactive task is only available when built with ncurses support.
|
||||
109 Leerer Eintrag in der Eingabe #Empty record in input
|
||||
110 Unbekanntes Zeichen am Zeilenende #Unrecognized characters at end of line
|
||||
111 Datensatz nicht als Format 4 erkannt #Record not recognized as format 4
|
||||
112 Kann leere Zeichenkette nicht ersetzen #Cannot substitute an empty string
|
||||
113 Nicht erkanntes Zeichen am Ende der Ersetzung #Unrecognized character(s) at end of substitution
|
||||
114 Fehlformulierte Ersetzung #Malformed substitution
|
||||
115 Etiketten dürfen keine Kommas enthalten #Tags are not permitted to contain commas
|
||||
|
||||
# 2xx Commands - must be sequential
|
||||
200 aktiv #active
|
||||
201 hinzufen #add
|
||||
202 beizufügen #append
|
||||
203 anmerkung #annotate
|
||||
204 kalender #calendar
|
||||
205 farben #colors
|
||||
206 fertiggestellt #completed
|
||||
207 löschen #delete
|
||||
208 erledigt #done
|
||||
209 duplizieren #duplicate
|
||||
210 editieren #edit
|
||||
211 export #export
|
||||
212 hilfe #help
|
||||
213 geschichte #history
|
||||
214 ggeschichte #ghistory
|
||||
215 import #import
|
||||
216 info #info
|
||||
|
||||
218 überfällig #overdue
|
||||
219 projekte #projects
|
||||
220 start #start
|
||||
221 statistik #stats
|
||||
222 stop #stop
|
||||
223 zusammenfassung #summary
|
||||
224 etikett #tags
|
||||
225 zeitdatenblatt#timesheet
|
||||
|
||||
227 rücksetzen #undo
|
||||
228 version #version
|
||||
|
||||
# 3xx Attributes - must be sequential
|
||||
300 projekt #project
|
||||
301 priorität #priority
|
||||
302 vordergrund #fg
|
||||
303 hintergrund #bg
|
||||
304 fällig #due
|
||||
305 eintrag #entry
|
||||
306 start #start
|
||||
307 stop #end
|
||||
308 wiederkehrend #recur
|
||||
309 bis #until
|
||||
310 mask #mask
|
||||
311 imask #imask
|
||||
|
||||
# 35x Attribute modifiers - must be sequential
|
||||
350 davor #before
|
||||
351 danach #after
|
||||
352 nict #not
|
||||
353 kein #none
|
||||
354 beliebig #any
|
||||
355 synth #synth
|
||||
356 unter #under
|
||||
357 über #over
|
||||
358 erstes #first
|
||||
359 letztes #last
|
||||
360 dieses #this
|
||||
361 nächste #next
|
||||
362 ist #is
|
||||
363 istnicht #isnt
|
||||
364 hat #has
|
||||
365 hatnicht #hasnt
|
||||
366 beginntmit #startswith
|
||||
367 endetmit #endswith
|
||||
|
||||
# 4xx Columns
|
||||
|
||||
# 5xx Colors
|
||||
500 fett #bold
|
||||
501 unterstrichen #underline
|
||||
502 fett_unterstrichen #bold_underline
|
||||
503 schwarz #black
|
||||
504 rot #red
|
||||
505 grün #green
|
||||
506 gelb #yellow
|
||||
507 blau #blue
|
||||
508 magenta #magenta
|
||||
509 cyan #cyan
|
||||
510 weiss #white
|
||||
511 fett_schwarz #bold_black
|
||||
512 fett_rot #bold_red
|
||||
513 fett_grün #bold_green
|
||||
514 fett_gelb #bold_yellow
|
||||
515 fett_blau #bold_blue
|
||||
516 fett_magenta #bold_magenta
|
||||
517 fett_cyan #bold_cyan
|
||||
518 fett_weiss #bold_white
|
||||
519 unterstrichen_schwarz #underline_black
|
||||
520 unterstrichen_rot #underline_red
|
||||
521 unterstrichen_grün #underline_green
|
||||
522 unterstrichen_gelb #underline_yellow
|
||||
523 unterstrichen_blau #underline_blue
|
||||
524 unterstrichen_magenta #underline_magenta
|
||||
525 unterstrichen_cyan #underline_cyan
|
||||
526 unterstrichen_weiss #underline_white
|
||||
527 fett_unterstrichen_schwarz #bold_underline_black
|
||||
528 fett_unterstrichen_rot #bold_underline_red
|
||||
529 fett_unterstrichen_grün #bold_underline_green
|
||||
530 fett_unterstrichen_gelb #bold_underline_yellow
|
||||
531 fett_unterstrichen_blau #bold_underline_blue
|
||||
532 fett_unterstrichen_magenta #bold_underline_magenta
|
||||
533 fett_unterstrichen_cyan #bold_underline_cyan
|
||||
534 fett_unterstrichen_weiss #bold_underline_white
|
||||
535 auf_schwarz #on_black
|
||||
536 auf_rot #on_red
|
||||
537 auf_grün #on_green
|
||||
538 auf_gelb #on_yellow
|
||||
539 auf_blau #on_blue
|
||||
540 auf_magenta #on_magenta
|
||||
541 auf_cyan #on_cyan
|
||||
542 auf_weiss #on_white
|
||||
543 auf_signal_schwarz #on_bright_black
|
||||
544 auf_signal_rot #on_bright_red
|
||||
545 auf_signal_grün #on_bright_green
|
||||
546 auf_signal_gelb #on_bright_yellow
|
||||
547 auf_signal_blau #on_bright_blue
|
||||
548 auf_signal_magenta #on_bright_magenta
|
||||
549 auf_signal_cyan #on_bright_cyan
|
||||
550 auf_signal_weiss #on_bright_white
|
||||
551 aus #off
|
||||
552 Unbekannte Farbe #Unknown color name
|
||||
|
||||
# 6xx Config
|
||||
|
||||
# 7xx TDB
|
||||
|
||||
# 8xx Reports
|
||||
|
||||
122
i18n/strings.en-US
Normal file
122
i18n/strings.en-US
Normal file
@@ -0,0 +1,122 @@
|
||||
# This is an example strings.en-US file.
|
||||
#
|
||||
# The task program has a built-in set of default strings, which are UTF8 encoded
|
||||
# for the en-US locale. A file such as this is used to override those defaults.
|
||||
# This means that a strings file is merely a delta applied to the built-in
|
||||
# strings, so an empty string file means you get en-US.
|
||||
#
|
||||
# To use another string file, add the following entry to your .taskrc file:
|
||||
#
|
||||
# locale=sv-SE # Swedish string set
|
||||
|
||||
# 1xx task shell
|
||||
100 Unknown Error.
|
||||
101 Could not read home directory from the passwd file.
|
||||
102 (y/n)
|
||||
103 Invalid ID in sequence
|
||||
104 Invalid ID in range
|
||||
105 Inverted sequence range high-low
|
||||
106 ID Range too large
|
||||
107 Not a sequence.
|
||||
108 Interactive task is only available when built with ncurses support.
|
||||
109 Empty record in input
|
||||
110 Unrecognized characters at end of line
|
||||
111 Record not recognized as format 4
|
||||
112 Cannot substitute an empty string
|
||||
113 Unrecognized character(s) at end of substitution
|
||||
114 Malformed substitution
|
||||
115 Tags are not permitted to contain commas
|
||||
116 You must specify a command, or a task ID to modify
|
||||
|
||||
# 2xx Commands - must be sequential
|
||||
200 active
|
||||
201 add
|
||||
202 append
|
||||
203 annotate
|
||||
204 calendar
|
||||
205 colors
|
||||
206 completed
|
||||
207 delete
|
||||
208 done
|
||||
209 duplicate
|
||||
210 edit
|
||||
211 export
|
||||
212 help
|
||||
213 history
|
||||
214 ghistory
|
||||
215 import
|
||||
216 info
|
||||
217 prepend
|
||||
218 overdue
|
||||
219 projects
|
||||
220 start
|
||||
221 stats
|
||||
222 stop
|
||||
223 summary
|
||||
224 tags
|
||||
225 timesheet
|
||||
|
||||
227 undo
|
||||
228 version
|
||||
229 shell
|
||||
|
||||
# 3xx Attributes - must be sequential
|
||||
300 project
|
||||
301 priority
|
||||
302 fg
|
||||
303 bg
|
||||
304 due
|
||||
305 entry
|
||||
306 start
|
||||
307 end
|
||||
308 recur
|
||||
309 until
|
||||
310 mask
|
||||
311 imask
|
||||
|
||||
# 35x Attribute modifiers - must be sequential
|
||||
350 before
|
||||
351 after
|
||||
352 not
|
||||
353 none
|
||||
354 any
|
||||
355 synth
|
||||
356 under
|
||||
357 over
|
||||
358 first
|
||||
359 last
|
||||
360 this
|
||||
361 next
|
||||
362 is
|
||||
363 isnt
|
||||
364 has
|
||||
365 hasnt
|
||||
366 startswith
|
||||
367 endswith
|
||||
|
||||
# 4xx Columns
|
||||
|
||||
# 5xx Colors
|
||||
500 bold
|
||||
501 underline
|
||||
502 on
|
||||
503 bright
|
||||
|
||||
504 black
|
||||
505 red
|
||||
506 green
|
||||
507 yellow
|
||||
508 blue
|
||||
509 magenta
|
||||
510 cyan
|
||||
511 white
|
||||
|
||||
520 off
|
||||
521 Unknown color name
|
||||
|
||||
# 6xx Config
|
||||
|
||||
# 7xx TDB
|
||||
|
||||
# 8xx Reports
|
||||
|
||||
11
i18n/strings.es-ES
Normal file
11
i18n/strings.es-ES
Normal file
@@ -0,0 +1,11 @@
|
||||
# 1xx task shell
|
||||
100 Error desconocido.
|
||||
|
||||
# 2xx Commands
|
||||
# 3xx Attributes
|
||||
# 4xx Columns
|
||||
# 5xx Colors
|
||||
# 6xx Config
|
||||
# 7xx TDB
|
||||
# 8xx Reports
|
||||
|
||||
11
i18n/strings.fr-FR
Normal file
11
i18n/strings.fr-FR
Normal file
@@ -0,0 +1,11 @@
|
||||
# 1xx task shell
|
||||
100 Erreur inconnue.
|
||||
|
||||
# 2xx Commands
|
||||
# 3xx Attributes
|
||||
# 4xx Columns
|
||||
# 5xx Colors
|
||||
# 6xx Config
|
||||
# 7xx TDB
|
||||
# 8xx Reports
|
||||
|
||||
11
i18n/strings.nl-NL
Normal file
11
i18n/strings.nl-NL
Normal file
@@ -0,0 +1,11 @@
|
||||
# 1xx task shell
|
||||
100 Onbekende fout.
|
||||
|
||||
# 2xx Commands
|
||||
# 3xx Attributes
|
||||
# 4xx Columns
|
||||
# 5xx Colors
|
||||
# 6xx Config
|
||||
# 7xx TDB
|
||||
# 8xx Reports
|
||||
|
||||
157
i18n/strings.sv-SE
Normal file
157
i18n/strings.sv-SE
Normal file
@@ -0,0 +1,157 @@
|
||||
# This is an example strings.en-US file.
|
||||
#
|
||||
# The task program has a built-in set of default strings, which are UTF8 encoded
|
||||
# for the en-US locale. A file such as this is used to override those defaults.
|
||||
# This means that a strings file is merely a delta applied to the built-in
|
||||
# strings, so an empty string file means you get en-US.
|
||||
#
|
||||
# To use another string file, add the following entry to your .taskrc file:
|
||||
#
|
||||
# locale=sv-SE # Swedish string set
|
||||
|
||||
# 1xx task shell
|
||||
100 Okänt fel. #Unknown Error.
|
||||
101 Kunde inte läsa hemkatalogen från passwd filen. #Could not read home directory from the passwd file.
|
||||
102 (j/n) #(y/n)
|
||||
103 Ogiltig ID i sekvens #Invalid ID in sequence
|
||||
104 Ogiltig ID i spännvidd #Invalid ID in range
|
||||
105 Inverterad sekvens spännvidd hög-låg #Inverted sequence range high-low
|
||||
106 ID spännvidd för stor #ID Range too large
|
||||
107 Ingen sekvens. #Not a sequence.
|
||||
108 Interaktiv task är bara tillgänglig när den kompilerades med support för ncurses. #Interactive task is only available when built with ncurses support.
|
||||
109 Tom post i ingångsdata #Empty record in input
|
||||
110 Okänt tecknen på slutet av raden. #Unrecognized characters at end of line
|
||||
111 Post inte indentifierad som format 4 #Record not recognized as format 4
|
||||
112 Substitution av tom teckensträng är inte möjligt #Cannot substitute an empty string
|
||||
113 Pkänt tecken vid slutet av substitution #Unrecognized character(s) at end of substitution
|
||||
114 Ogiltig substitution #Malformed substitution
|
||||
115 Taggar får inte innehåller komman #Tags are not permitted to contain commas
|
||||
|
||||
# 2xx Commands - must be sequential
|
||||
200 aktivt #active
|
||||
201 tillägg #add
|
||||
202 bifoga #append
|
||||
203 kommentera #annotate
|
||||
204 kalender #calendar
|
||||
205 färger #colors
|
||||
206 avslutad #completed
|
||||
207 stryk #delete
|
||||
208 färdig #done
|
||||
209 kopiera #duplicate
|
||||
210 redigera #edit
|
||||
211 exportera #export
|
||||
212 hjälp #help
|
||||
213 historia #history
|
||||
214 ghistoria #ghistory
|
||||
215 importera #import
|
||||
216 info #info
|
||||
|
||||
218 försenad #overdue
|
||||
219 projekten #projects
|
||||
220 start #start
|
||||
221 statistik #stats
|
||||
222 stop #stop
|
||||
223 sammanfattning #summary
|
||||
224 taggar #tags
|
||||
225 tidsrapport #timesheet
|
||||
|
||||
227 ångra #undo
|
||||
228 version #version
|
||||
|
||||
# 3xx Attributes - must be sequential
|
||||
300 projekt #project
|
||||
301 prioritet #priority
|
||||
302 förgrund #fg
|
||||
303 bakgrund #bg
|
||||
304 väntad #due
|
||||
305 post #entry
|
||||
306 start #start
|
||||
307 slut #end
|
||||
308 periodirskt #recur
|
||||
309 innan #until
|
||||
310 mask #mask
|
||||
311 imask #imask
|
||||
|
||||
# 35x Attribute modifiers - must be sequential
|
||||
350 före #before
|
||||
351 efter #after
|
||||
352 inte #not
|
||||
353 ingen #none
|
||||
354 några #any
|
||||
355 synth #synth
|
||||
356 under #under
|
||||
357 över #over
|
||||
358 första #first
|
||||
359 sista #last
|
||||
360 detta #this
|
||||
361 nästa #next
|
||||
362 är #is
|
||||
363 ärinte #isnt
|
||||
364 har #has
|
||||
365 harinte #hasnt
|
||||
366 börjarmed #startswith
|
||||
367 slutarmed #endswith
|
||||
|
||||
# 4xx Columns
|
||||
|
||||
# 5xx Colors
|
||||
500 fet #bold
|
||||
501 understrykt #underline
|
||||
502 fet_understrykt #bold_underline
|
||||
503 svart #black
|
||||
504 röd #red
|
||||
505 grön #green
|
||||
506 gul #yellow
|
||||
507 blå #blue
|
||||
508 magenta #magenta
|
||||
509 cyan #cyan
|
||||
510 vit #white
|
||||
511 fet_svart #bold_black
|
||||
512 fet_röd #bold_red
|
||||
513 fet_grön #bold_green
|
||||
514 fet_gul #bold_yellow
|
||||
515 fet_blå #bold_blue
|
||||
516 fet_magenta #bold_magenta
|
||||
517 fet_cyan #bold_cyan
|
||||
518 fet_vit #bold_white
|
||||
519 understrykt_svart #underline_black
|
||||
520 understrykt_röd #underline_red
|
||||
521 understrykt_grön #underline_green
|
||||
522 understrykt_gul #underline_yellow
|
||||
523 understrykt_blå #underline_blue
|
||||
524 understrykt_magenta #underline_magenta
|
||||
525 understrykt_cyan #underline_cyan
|
||||
526 understrykt_vit #underline_white
|
||||
527 fet_understrykt_svart #bold_underline_black
|
||||
528 fet_understrykt_röd #bold_underline_red
|
||||
529 fet_understrykt_grön #bold_underline_green
|
||||
530 fet_understrykt_gul #bold_underline_yellow
|
||||
531 fet_understrykt_blå #bold_underline_blue
|
||||
532 fet_understrykt_magenta #bold_underline_magenta
|
||||
533 fet_understrykt_cyan #bold_underline_cyan
|
||||
534 fet_understrykt_vit #bold_underline_white
|
||||
535 på_svart #on_black
|
||||
536 på_röd #on_red
|
||||
537 på_grön #on_green
|
||||
538 på_gul #on_yellow
|
||||
539 på_blå #on_blue
|
||||
540 på_magenta #on_magenta
|
||||
541 på_cyan #on_cyan
|
||||
542 på_vit #on_white
|
||||
543 på_ljust_svart #on_bright_black
|
||||
544 på_ljust_röd #on_bright_red
|
||||
545 på_ljust_grön #on_bright_green
|
||||
546 på_ljust_gul #on_bright_yellow
|
||||
547 på_ljust_blå #on_bright_blue
|
||||
548 på_ljust_magenta #on_bright_magenta
|
||||
549 på_ljust_cyan #on_bright_cyan
|
||||
550 på_ljust_vit #on_bright_white
|
||||
551 av #off
|
||||
552 Okänt färg namn #Unknown color name
|
||||
|
||||
# 6xx Config
|
||||
|
||||
# 7xx TDB
|
||||
|
||||
# 8xx Reports
|
||||
|
||||
5
i18n/tips.de-DE
Normal file
5
i18n/tips.de-DE
Normal file
@@ -0,0 +1,5 @@
|
||||
%
|
||||
erster Tipp
|
||||
%
|
||||
zweiter Tipp
|
||||
%
|
||||
5
i18n/tips.en-US
Normal file
5
i18n/tips.en-US
Normal file
@@ -0,0 +1,5 @@
|
||||
%
|
||||
first tip
|
||||
%
|
||||
second tip
|
||||
%
|
||||
5
i18n/tips.sv-SE
Normal file
5
i18n/tips.sv-SE
Normal file
@@ -0,0 +1,5 @@
|
||||
%
|
||||
första tips
|
||||
%
|
||||
andra tips
|
||||
%
|
||||
32
package-config/README
Normal file
32
package-config/README
Normal file
@@ -0,0 +1,32 @@
|
||||
The package-config directory contains the configuration files
|
||||
for building release packages for the different operating
|
||||
systems:
|
||||
|
||||
* osx: binary packages for Mac OSX
|
||||
* fedora: rpm packages for Fedora (Linux)
|
||||
* ubuntu: deb packages for Ubuntu and (Linux)
|
||||
* cygwin_ bz2 packages for cygwin (windows)
|
||||
|
||||
Please visit the corresponding operating systems homepage
|
||||
for instructions on how to build a binary package of task
|
||||
out of the released source tarball with these configuration
|
||||
files.
|
||||
|
||||
For Fedora rpm packages you find instructions at
|
||||
http://fedoraproject.org/wiki/PackageMaintainers/CreatingPackageHowTo
|
||||
|
||||
For Ubuntu deb packages you find instructions at
|
||||
https://wiki.ubuntu.com/PackagingGuide/Complete
|
||||
|
||||
For Cygwin bz2 packages you find instructions at
|
||||
http://cygwin.com/setup.html
|
||||
|
||||
You might also ask in the forums on taskwarrior.org if you
|
||||
have further questions.
|
||||
|
||||
This file and the corresponding package build configuration files
|
||||
are released 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.
|
||||
|
||||
Please see the file COPYING in the main directory.
|
||||
10
package-config/cygwin/CYGWIN-PATCHES/setup.hint
Normal file
10
package-config/cygwin/CYGWIN-PATCHES/setup.hint
Normal file
@@ -0,0 +1,10 @@
|
||||
# setup.hint for task 1.8.1-1
|
||||
category: Utils
|
||||
requires: libncurses9 cygwin
|
||||
sdesc: A command-line to do list manager
|
||||
ldesc: "Task is a command-line to do list manager.
|
||||
It has support for GTD functionality and includes
|
||||
the following features: tags, colorful tabular output,
|
||||
reports and graphs, lots of manipulation commands,
|
||||
low-level API, abbreviations for all commands and
|
||||
options, multiuser file locking, recurring tasks."
|
||||
45
package-config/cygwin/CYGWIN-PATCHES/task-1.8.1-1.README
Normal file
45
package-config/cygwin/CYGWIN-PATCHES/task-1.8.1-1.README
Normal file
@@ -0,0 +1,45 @@
|
||||
task 1.8.1-1
|
||||
------------------------------------------
|
||||
|
||||
A command-line to do list manager that can be used
|
||||
with the gtd system.
|
||||
|
||||
Runtime requirements:
|
||||
cygwin-1.5.25 or newer
|
||||
libncurses
|
||||
|
||||
Build requirements:
|
||||
cygwin-1.5.25 or newer
|
||||
gcc-3.4.4-1 or newer
|
||||
libncurses-devel
|
||||
|
||||
Canonical homepage:
|
||||
http://taskwarrior.org
|
||||
|
||||
Canonical download:
|
||||
http://taskwarrior.org/download
|
||||
|
||||
License:
|
||||
GPLv2+
|
||||
|
||||
Language:
|
||||
C++
|
||||
|
||||
------------------------------------
|
||||
|
||||
Build instructions:
|
||||
unpack task-1.8.1-1-src.tar.bz2
|
||||
if you use setup to install this src package,
|
||||
it will be unpacked under /usr/src automatically
|
||||
cd /usr/src/task-1.8.1-1
|
||||
./configure --prefix=/usr
|
||||
make
|
||||
make install
|
||||
|
||||
------------------------------------
|
||||
|
||||
task was packaged for cygwin by
|
||||
Federico Hernandez <ultrafredde@gmail.com> and
|
||||
is licensed under the GPL
|
||||
|
||||
---- task-1.8.1-1 -- 2009-08-20 ----
|
||||
63
package-config/cygwin/task-1.8.1-1.patch
Normal file
63
package-config/cygwin/task-1.8.1-1.patch
Normal file
@@ -0,0 +1,63 @@
|
||||
diff -Nrup task-1.8.1-1/CYGWIN-PATCHES/setup.hint task-1.8.1-1.cygwin/CYGWIN-PATCHES/setup.hint
|
||||
--- task-1.8.1-1/CYGWIN-PATCHES/setup.hint 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ task-1.8.1-1.cygwin/CYGWIN-PATCHES/setup.hint 2009-08-20 15:47:56.304750000 +0200
|
||||
@@ -0,0 +1,10 @@
|
||||
+# setup.hint for task 1.8.1-1
|
||||
+category: Utils
|
||||
+requires: libncurses9 cygwin
|
||||
+sdesc: A command-line to do list manager
|
||||
+ldesc: "Task is a command-line to do list manager.
|
||||
+It has support for GTD functionality and includes
|
||||
+the following features: tags, colorful tabular output,
|
||||
+reports and graphs, lots of manipulation commands,
|
||||
+low-level API, abbreviations for all commands and
|
||||
+options, multiuser file locking, recurring tasks."
|
||||
diff -Nrup task-1.8.1-1/CYGWIN-PATCHES/task-1.8.1-1.README task-1.8.1-1.cygwin/CYGWIN-PATCHES/task-1.8.1-1.README
|
||||
--- task-1.8.1-1/CYGWIN-PATCHES/task-1.8.1-1.README 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ task-1.8.1-1.cygwin/CYGWIN-PATCHES/task-1.8.1-1.README 2009-08-20 15:47:44.320375000 +0200
|
||||
@@ -0,0 +1,45 @@
|
||||
+task 1.8.1-1
|
||||
+------------------------------------------
|
||||
+
|
||||
+A command-line to do list manager that can be used
|
||||
+with the gtd system.
|
||||
+
|
||||
+Runtime requirements:
|
||||
+ cygwin-1.5.25 or newer
|
||||
+ libncurses
|
||||
+
|
||||
+Build requirements:
|
||||
+ cygwin-1.5.25 or newer
|
||||
+ gcc-3.4.4-1 or newer
|
||||
+ libncurses-devel
|
||||
+
|
||||
+Canonical homepage:
|
||||
+ http://taskwarrior.org
|
||||
+
|
||||
+Canonical download:
|
||||
+ http://taskwarrior.org/download
|
||||
+
|
||||
+License:
|
||||
+ GPLv2+
|
||||
+
|
||||
+Language:
|
||||
+ C++
|
||||
+
|
||||
+------------------------------------
|
||||
+
|
||||
+Build instructions:
|
||||
+ unpack task-1.8.1-1-src.tar.bz2
|
||||
+ if you use setup to install this src package,
|
||||
+ it will be unpacked under /usr/src automatically
|
||||
+ cd /usr/src/task-1.8.1-1
|
||||
+ ./configure --prefix=/usr
|
||||
+ make
|
||||
+ make install
|
||||
+
|
||||
+------------------------------------
|
||||
+
|
||||
+task was packaged for cygwin by
|
||||
+Federico Hernandez <ultrafredde@gmail.com> and
|
||||
+is licensed under the GPL
|
||||
+
|
||||
+---- task-1.8.1-1 -- 2009-08-20 ----
|
||||
@@ -0,0 +1,45 @@
|
||||
task 1.8.1-1
|
||||
------------------------------------------
|
||||
|
||||
A command-line to do list manager that can be used
|
||||
with the gtd system.
|
||||
|
||||
Runtime requirements:
|
||||
cygwin-1.5.25 or newer
|
||||
libncurses
|
||||
|
||||
Build requirements:
|
||||
cygwin-1.5.25 or newer
|
||||
gcc-3.4.4-1 or newer
|
||||
libncurses-devel
|
||||
|
||||
Canonical homepage:
|
||||
http://taskwarrior.org
|
||||
|
||||
Canonical download:
|
||||
http://taskwarrior.org/download
|
||||
|
||||
License:
|
||||
GPLv2+
|
||||
|
||||
Language:
|
||||
C++
|
||||
|
||||
------------------------------------
|
||||
|
||||
Build instructions:
|
||||
unpack task-1.8.1-1-src.tar.bz2
|
||||
if you use setup to install this src package,
|
||||
it will be unpacked under /usr/src automatically
|
||||
cd /usr/src/task-1.8.1-1
|
||||
./configure --prefix=/usr
|
||||
make
|
||||
make install
|
||||
|
||||
------------------------------------
|
||||
|
||||
task was packaged for cygwin by
|
||||
Federico Hernandez <ultrafredde@gmail.com> and
|
||||
is licensed under the GPL
|
||||
|
||||
---- task-1.8.1-1 -- 2009-08-20 ----
|
||||
71
package-config/fedora/task.spec
Normal file
71
package-config/fedora/task.spec
Normal file
@@ -0,0 +1,71 @@
|
||||
Name: task
|
||||
Version: 1.8.1
|
||||
Release: 1%{?dist}
|
||||
Summary: A command-line to do list manager
|
||||
|
||||
Group: Applications/Productivity
|
||||
License: GPLv2+
|
||||
URL: http://taskwarrior.org
|
||||
Source0: http://taskwarrior.org/download/%{name}-%{version}.tar.gz
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
||||
|
||||
BuildRequires: ncurses-devel
|
||||
|
||||
%description
|
||||
Task is a command-line to do list manager. It has
|
||||
support for GTD functionality and includes the
|
||||
following features: tags, colorful tabular output,
|
||||
reports and graphs, lots of manipulation commands,
|
||||
low-level API, abbreviations for all commands and
|
||||
options, multiuser file locking, recurring tasks.
|
||||
|
||||
%prep
|
||||
%setup -q
|
||||
|
||||
|
||||
%build
|
||||
%configure
|
||||
make %{?_smp_mflags}
|
||||
|
||||
|
||||
%install
|
||||
rm -rf $RPM_BUILD_ROOT
|
||||
make install DESTDIR=$RPM_BUILD_ROOT
|
||||
mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/bash_completion.d
|
||||
install -m 644 -T scripts/bash/task_completion.sh $RPM_BUILD_ROOT%{_sysconfdir}/bash_completion.d/task
|
||||
|
||||
%clean
|
||||
rm -rf $RPM_BUILD_ROOT
|
||||
|
||||
|
||||
%files
|
||||
%defattr(-,root,root,-)
|
||||
%doc AUTHORS ChangeLog COPYING NEWS README scripts i18n
|
||||
%{_bindir}/task
|
||||
%{_mandir}/man1/task.1.gz
|
||||
%{_mandir}/man5/taskrc.5.gz
|
||||
%{_mandir}/man5/task-tutorial.5.gz
|
||||
%config(noreplace) %{_sysconfdir}/bash_completion.d
|
||||
|
||||
|
||||
%changelog
|
||||
* Thu Aug 20 2009 Federico Hernandez <ultrafredde@gmail.com> - 1.8.1-1
|
||||
Intial RPM for task bugfix release 1.8.1
|
||||
* Tue Jul 21 2009 Federico Hernandez <ultrafredde@gmail.com> - 1.8.0-1
|
||||
Intial RPM for task release 1.8.0
|
||||
* Mon Jul 13 2009 Federico Hernandez <ultrafredde@gmail.com> - 1.8.0.beta3-1
|
||||
Intial RPM for task beta release 1.8.0.beta3
|
||||
* Wed Jul 08 2009 Federico Hernandez <ultrafredde@gmail.com> - 1.8.0.beta2-1
|
||||
Intial RPM for task beta release 1.8.0.beta2
|
||||
* Tue Jul 07 2009 Federico Hernandez <ultrafredde@gmail.com> - 1.8.0.beta1-1
|
||||
Intial RPM for task beta release 1.8.0.beta1
|
||||
* Tue Jun 08 2009 Federico Hernandez <ultrafredde@gmail.com> - 1.7.1-2
|
||||
- Fixed inclusion of manpages.
|
||||
* Tue Jun 08 2009 Federico Hernandez <ultrafredde@gmail.com> - 1.7.1-1
|
||||
- Initial RPM for bugfix release 1.7.1.
|
||||
- Updated references to new project homepage in spec file.
|
||||
* Tue May 19 2009 Federico Hernandez <ultrafredde@gmail.com> - 1.7.0-2
|
||||
- Changed license to GPLv2+ and removed Requires macro.
|
||||
- See https://bugzilla.redhat.com/show_bug.cgi?id=501498
|
||||
* Tue May 19 2009 Federico Hernandez <ultrafredde@gmail.com> - 1.7.0-1
|
||||
- Initial RPM.
|
||||
1
package-config/osx/task.pmdoc/01local-contents.xml
Normal file
1
package-config/osx/task.pmdoc/01local-contents.xml
Normal file
@@ -0,0 +1 @@
|
||||
<pkg-contents spec="1.12"><f n="local" o="root" g="staff" p="16877" pt="/Users/paul/task-1.9.0.git/package-config/osx/local" m="false" t="file"><f n="bin" o="root" g="wheel" p="16877"><f n="task" o="root" g="wheel" p="33261"><mod>mode</mod><mod>owner</mod></f><mod>owner</mod></f><f n="share" o="root" g="wheel" p="16877"><f n="doc" o="root" g="wheel" p="16877"><f n="task" o="root" g="wheel" p="16877"><f n="AUTHORS" o="root" g="wheel" p="33188"><mod>mode</mod><mod>owner</mod></f><f n="ChangeLog" o="root" g="wheel" p="33188"><mod>mode</mod><mod>owner</mod></f><f n="COPYING" o="root" g="wheel" p="33188"><mod>mode</mod><mod>owner</mod></f><f n="NEWS" o="root" g="wheel" p="33188"><mod>mode</mod><mod>owner</mod></f><f n="README" o="root" g="wheel" p="33188"><mod>mode</mod><mod>owner</mod></f><f n="scripts" o="root" g="wheel" p="16877"><f n="bash" o="root" g="wheel" p="16877"><f n="task_completion.sh" o="root" g="wheel" p="33188"><mod>mode</mod><mod>group</mod><mod>owner</mod></f><mod>mode</mod><mod>owner</mod></f><f n="vim" o="root" g="wheel" p="16877"><f n="ftdetect" o="root" g="wheel" p="16877"><f n="task.vim" o="root" g="wheel" p="33188"><mod>mode</mod></f><mod>mode</mod></f><f n="README" o="root" g="wheel" p="33188"><mod>mode</mod></f><f n="syntax" o="root" g="wheel" p="16877"><f n="taskdata.vim" o="root" g="wheel" p="33188"><mod>mode</mod></f><f n="taskedit.vim" o="root" g="wheel" p="33188"><mod>mode</mod></f><f n="taskrc.vim" o="root" g="wheel" p="33188"><mod>mode</mod></f><mod>mode</mod></f><mod>mode</mod></f><f n="zsh" o="root" g="wheel" p="16877"><f n="_task" o="root" g="wheel" p="33188"><mod>mode</mod></f><mod>mode</mod></f><mod>mode</mod><mod>owner</mod></f><mod>mode</mod><mod>owner</mod></f><mod>mode</mod><mod>owner</mod></f><f n="man" o="root" g="wheel" p="16877"><f n="man1" o="root" g="wheel" p="16877"><f n="task.1" o="root" g="wheel" p="33188"><mod>mode</mod></f><mod>mode</mod></f><f n="man5" o="root" g="wheel" p="16877"><f n="task-color.5" o="root" g="wheel" p="33188"><mod>mode</mod></f><f n="task-faq.5" o="root" g="wheel" p="33188"><mod>mode</mod></f><f n="task-tutorial.5" o="root" g="wheel" p="33188"><mod>mode</mod></f><f n="taskrc.5" o="root" g="wheel" p="33188"><mod>mode</mod></f><mod>mode</mod></f><mod>mode</mod></f><mod>mode</mod><mod>owner</mod></f><mod>owner</mod></f></pkg-contents>
|
||||
1
package-config/osx/task.pmdoc/01local.xml
Normal file
1
package-config/osx/task.pmdoc/01local.xml
Normal file
@@ -0,0 +1 @@
|
||||
<pkgref spec="1.12" uuid="3BCF9CAB-ED33-4182-AC52-29B9F8FF9B87"><config><identifier>com.beckingham.task190Beta3.local.pkg</identifier><version>1.0</version><description/><post-install type="none"/><requireAuthorization/><installFrom>/Users/paul/task-1.9.0.git/package-config/osx/local</installFrom><installTo mod="true">/usr/local</installTo><flags><followSymbolicLinks/></flags><packageStore type="internal"/><mod>installTo</mod><mod>installTo.path</mod><mod>parent</mod></config><contents><file-list>01local-contents.xml</file-list><filter>/CVS$</filter><filter>/\.svn$</filter><filter>/\.cvsignore$</filter><filter>/\.cvspass$</filter><filter>/\.DS_Store$</filter></contents></pkgref>
|
||||
1
package-config/osx/task.pmdoc/index.xml
Normal file
1
package-config/osx/task.pmdoc/index.xml
Normal file
@@ -0,0 +1 @@
|
||||
<pkmkdoc spec="1.12"><properties><title>Task 1.9.0 beta3</title><build>/Users/paul/Desktop/task-1.9.0.beta3-sl.pkg</build><organization>com.beckingham</organization><userSees ui="easy"/><min-target os="3"/><domain anywhere="true" system="true"/></properties><distribution><versions min-spec="1.000000"/><scripts></scripts></distribution><description>Task 1.9.0 beta 3 install for Snow Leopard.</description><contents><choice title="local" id="choice36" starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="com.beckingham.task190Beta3.local.pkg"/></choice></contents><resources bg-scale="proportional" bg-align="center"><locale lang="en"><resource mod="true" type="license">/Users/paul/task-1.9.0.git/package-config/osx/COPYING.txt</resource><resource mod="true" type="welcome">/Users/paul/task-1.9.0.git/package-config/osx/README.txt</resource></locale></resources><requirements><requirement id="tosv" operator="ge" value="'10.6.0'"><message>Task requires Mac OSX 10.6.0 (Snow Leopard) or later.</message></requirement></requirements><flags/><item type="file">01local.xml</item><mod>properties.title</mod><mod>properties.customizeOption</mod><mod>description</mod><mod>properties.anywhereDomain</mod><mod>properties.systemDomain</mod></pkmkdoc>
|
||||
30
package-config/osx/update
Executable file
30
package-config/osx/update
Executable file
@@ -0,0 +1,30 @@
|
||||
#!/bin/bash
|
||||
|
||||
mkdir -p local/bin
|
||||
mkdir -p local/share/doc/task/scripts/bash
|
||||
mkdir -p local/share/doc/task/scripts/vim/ftdetect
|
||||
mkdir -p local/share/doc/task/scripts/vim/syntax
|
||||
mkdir -p local/share/doc/task/scripts/zsh
|
||||
mkdir -p local/share/man/man1
|
||||
mkdir -p local/share/man/man5
|
||||
|
||||
cp ../../README README.txt
|
||||
cp ../../COPYING COPYING.txt
|
||||
|
||||
cp ../../src/task local/bin/
|
||||
|
||||
cp ../../AUTHORS local/share/doc/task/
|
||||
cp ../../ChangeLog local/share/doc/task/
|
||||
cp ../../COPYING local/share/doc/task/
|
||||
cp ../../NEWS local/share/doc/task/
|
||||
cp ../../README local/share/doc/task/
|
||||
|
||||
cp ../../scripts/bash/* local/share/doc/task/scripts/bash
|
||||
cp ../../scripts/vim/README local/share/doc/task/scripts/vim
|
||||
cp ../../scripts/vim/ftdetect/* local/share/doc/task/scripts/vim/ftdetect
|
||||
cp ../../scripts/vim/syntax/* local/share/doc/task/scripts/vim/syntax
|
||||
cp ../../scripts/zsh/* local/share/doc/task/scripts/zsh
|
||||
|
||||
cp ../../doc/man/*.1 local/share/man/man1
|
||||
cp ../../doc/man/*.5 local/share/man/man5
|
||||
|
||||
82
package-config/ubuntu/debian/changelog
Normal file
82
package-config/ubuntu/debian/changelog
Normal file
@@ -0,0 +1,82 @@
|
||||
task (1.8.5-1ubuntu2) karmic; urgency=low
|
||||
|
||||
* Fixed wrong ChangeLog file
|
||||
|
||||
-- Federico Hernandez <ultrafredde@gmail.com> Sat, 05 Dec 2009 23:58:36 +0100
|
||||
|
||||
task (1.8.5-1ubuntu1) karmic; urgency=low
|
||||
|
||||
* Initial deb package for task bugfix release 1.8.5
|
||||
|
||||
-- Federico Hernandez <ultrafredde@gmail.com> Sat, 05 Dec 2009 23:56:36 +0100
|
||||
|
||||
task (1.8.4-1ubuntu1) karmic; urgency=low
|
||||
|
||||
* Initial deb package for task bugfix release 1.8.4 on karmic koala
|
||||
|
||||
-- Federico Hernandez <ultrafredde@gmail.com> Tue, 17 Nov 2009 13:12:28 +0100
|
||||
|
||||
task (1.8.3-1ubuntu1) karmic; urgency=low
|
||||
|
||||
* Initial deb package for task bugfix release 1.8.3 on karmic koala
|
||||
|
||||
-- Federico Hernandez <ultrafredde@gmail.com> Sat, 31 Oct 2009 22:45:10 +0100
|
||||
|
||||
task (1.8.3-0ubuntu1) jaunty; urgency=low
|
||||
|
||||
* Initial deb package for task bugfix release 1.8.3
|
||||
|
||||
-- Federico Hernandez <ultrafredde@gmail.com> Wed, 21 Oct 2009 23:22:25 +0200
|
||||
|
||||
task (1.8.2-0ubuntu1) jaunty; urgency=low
|
||||
|
||||
* Initial deb package for task bugfix release 1.8.2
|
||||
|
||||
-- Federico Hernandez <ultrafredde@gmail.com> Mon, 07 Sep 2009 11:35:22 +0200
|
||||
|
||||
task (1.8.1-0ubuntu1) jaunty; urgency=low
|
||||
|
||||
* Initial deb package for task bugfix release 1.8.1
|
||||
|
||||
-- Federico Hernandez <ultrafredde@gmail.com> Thu, 20 Aug 2009 20:26:33 +0200
|
||||
|
||||
task (1.8.0-0ubuntu1) jaunty; urgency=low
|
||||
|
||||
* Initial deb package for task release 1.8.0
|
||||
|
||||
-- Federico Hernandez <ultrafredde@gmail.com> Tue, 21 Jul 2009 15:26:33 +0200
|
||||
|
||||
task (1.8.0-0ubuntu1~beta3) jaunty; urgency=low
|
||||
|
||||
* Initial deb package for task beta release 1.8.0.beta3
|
||||
|
||||
-- Federico Hernandez <ultrafredde@gmail.com> Mon, 13 Jul 2009 15:09:38 +0200
|
||||
|
||||
task (1.8.0-0ubuntu1~beta2) jaunty; urgency=low
|
||||
|
||||
* Initial deb package for task beta release 1.8.0.beta2
|
||||
|
||||
-- Federico Hernandez <ultrafredde@gmail.com> Wed, 08 Jul 2009 15:40:50 +0200
|
||||
|
||||
task (1.8.0-0ubuntu1~beta1) jaunty; urgency=low
|
||||
|
||||
* Initial deb package for task beta release 1.8.0.beta1
|
||||
|
||||
-- Federico Hernandez <ultrafredde@gmail.com> Tue, 07 Jul 2009 01:35:28 +0200
|
||||
|
||||
task (1.7.1-0ubuntu1) jaunty; urgency=low
|
||||
|
||||
* Initial deb package for bugfix release 1.7.1
|
||||
* Updated references to new project homepage in control file.
|
||||
* dpatch not longer neededas upstream version contains fix
|
||||
for taskrc.5 bug
|
||||
|
||||
-- Federico Hernandez <ultrafredde@gmail.com> Tue, 09 Jun 2009 11:49:51 +0200
|
||||
|
||||
task (1.7.0-0ubuntu1) jaunty; urgency=low
|
||||
|
||||
* Initial release (LP: #378847)
|
||||
* Fixed bug in taskrc.5 man page from upstream project
|
||||
which made lintian complain
|
||||
|
||||
-- Federico Hernandez <ultrafredde@gmail.com> Wed, 27 May 2009 23:57:08 +0200
|
||||
1
package-config/ubuntu/debian/compat
Normal file
1
package-config/ubuntu/debian/compat
Normal file
@@ -0,0 +1 @@
|
||||
7
|
||||
19
package-config/ubuntu/debian/control
Normal file
19
package-config/ubuntu/debian/control
Normal file
@@ -0,0 +1,19 @@
|
||||
Source: task
|
||||
Section: utils
|
||||
Priority: optional
|
||||
Maintainer: Federico Hernandez <ultrafredde@gmail.com>
|
||||
XSBC-Original-Maintainer: Federico Hernandez <ultrafredde@gmail.com>
|
||||
Build-Depends: debhelper (>= 7), autotools-dev, libncurses5-dev
|
||||
Standards-Version: 3.8.3
|
||||
Homepage: http://taskwarrior.org
|
||||
|
||||
Package: task
|
||||
Architecture: any
|
||||
Depends: ${shlibs:Depends}
|
||||
Description: A command-line to do list manager
|
||||
Task is a command-line to do list manager. It has
|
||||
support for GTD functionality and includes the
|
||||
following features: tags, colorful tabular output,
|
||||
reports and graphs, lots of manipulation commands,
|
||||
low-level API, abbreviations for all commands and
|
||||
options, multiuser file locking, recurring tasks.
|
||||
60
package-config/ubuntu/debian/copyright
Normal file
60
package-config/ubuntu/debian/copyright
Normal file
@@ -0,0 +1,60 @@
|
||||
This package was debianized by:
|
||||
|
||||
Federico Hernandez <ultrafredde@gmail.com> on Sat, 05 Dec 2009 23:58:36 +0100
|
||||
|
||||
It was downloaded from:
|
||||
|
||||
http://taskwarrior.org
|
||||
|
||||
Upstream Authors:
|
||||
|
||||
Paul Beckingham <paul@beckingham.net>
|
||||
Federico Hernandez
|
||||
David J Patrick
|
||||
John Florian
|
||||
Damian Glenny
|
||||
Andy Lester
|
||||
H. İbrahim Güngör
|
||||
Stefan Dorn
|
||||
Michael Greb
|
||||
Benjamin Tegarden
|
||||
Chris Pride
|
||||
Richard Querin
|
||||
T. Charles Yun
|
||||
P.C. Shyamshankar
|
||||
Johan Friis
|
||||
Steven de Brouwer
|
||||
Pietro Cerutti
|
||||
Cory Donnelly
|
||||
|
||||
Copyright:
|
||||
|
||||
Copyright 2006 - 2010, Paul Beckingham
|
||||
Copyright 2009 - 2010 Federico Hernandez
|
||||
Copyright 2009 - 2010 John Florian
|
||||
Copyright 2009 P.C. Shyamshankar
|
||||
|
||||
License:
|
||||
|
||||
This package 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 package 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 package; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
On Debian systems, the complete text of the GNU General
|
||||
Public License can be found in `/usr/share/common-licenses/GPL-2'.
|
||||
|
||||
The Debian packaging is:
|
||||
|
||||
Copyright (C) 2009 - 2010, Federico Hernandez <ultrafredde@gmail.com>
|
||||
|
||||
and is licensed under the GPL, see above.
|
||||
3
package-config/ubuntu/debian/docs
Normal file
3
package-config/ubuntu/debian/docs
Normal file
@@ -0,0 +1,3 @@
|
||||
AUTHORS
|
||||
NEWS
|
||||
README
|
||||
2
package-config/ubuntu/debian/examples
Normal file
2
package-config/ubuntu/debian/examples
Normal file
@@ -0,0 +1,2 @@
|
||||
scripts
|
||||
i18n
|
||||
47
package-config/ubuntu/debian/rules
Executable file
47
package-config/ubuntu/debian/rules
Executable file
@@ -0,0 +1,47 @@
|
||||
#!/usr/bin/make -f
|
||||
|
||||
config.status: configure
|
||||
dh_testdir
|
||||
./configure $(CROSS) --prefix=/usr --docdir=$(DATADIR)/doc/task
|
||||
|
||||
build: build-stamp
|
||||
|
||||
build-stamp: config.status
|
||||
dh_testdir
|
||||
$(MAKE)
|
||||
touch $@
|
||||
|
||||
clean:
|
||||
dh_testdir
|
||||
dh_testroot
|
||||
[ ! -f Makefile ] || $(MAKE) distclean
|
||||
dh_clean
|
||||
|
||||
install: build
|
||||
dh_testdir
|
||||
dh_testroot
|
||||
dh_prep
|
||||
$(MAKE) DESTDIR=$(CURDIR)/debian/task install
|
||||
|
||||
binary-indep: install
|
||||
|
||||
binary-arch: install
|
||||
dh_testdir
|
||||
dh_testroot
|
||||
dh_installchangelogs
|
||||
dh_installdocs
|
||||
dh_installman
|
||||
dh_installexamples
|
||||
install -D -m644 scripts/bash/task_completion.sh $(CURDIR)/debian/task/etc/bash_completion.d/task
|
||||
rm -rf $(CURDIR)/debian/task/usr/share/doc/task-1.8.5
|
||||
dh_strip
|
||||
dh_compress
|
||||
dh_fixperms
|
||||
dh_installdeb
|
||||
dh_shlibdeps
|
||||
dh_gencontrol
|
||||
dh_md5sums
|
||||
dh_builddeb
|
||||
|
||||
binary: binary-indep binary-arch
|
||||
.PHONY: build clean binary-indep binary-arch binary install
|
||||
3
package-config/ubuntu/debian/watch
Normal file
3
package-config/ubuntu/debian/watch
Normal file
@@ -0,0 +1,3 @@
|
||||
version=3
|
||||
|
||||
http://taskwarrior.org/download/task-(.*)\.tar\.gz
|
||||
105
script.txt
105
script.txt
@@ -1,105 +0,0 @@
|
||||
Hello, and welcome to this quick demo of the task program.
|
||||
|
||||
task add do laundry Let's add some tasks
|
||||
I need to do laundry
|
||||
|
||||
task add project:garage order dumpster Oh yeah, the dumpster
|
||||
|
||||
task add +phone tell mom i loveher Must call Mom (that "phone" there is a tag - they are
|
||||
useful for searching, categorizing)
|
||||
task add +phone pro:garage schedule
|
||||
goodwill pickup
|
||||
|
||||
task ad +email pro:garage ask Tom if Notice I can abbreviating commands
|
||||
he wants that old bkie
|
||||
|
||||
task ls Let's see what we've got
|
||||
I spelled bike wrong
|
||||
|
||||
task 5 /bkie/bike/
|
||||
task ls That's better
|
||||
|
||||
task 1 pro:home Let's assign projects
|
||||
task 3 pro:home tell mom I love her
|
||||
task ls pro:garage
|
||||
|
||||
task long pro:garage Let's see all the columns
|
||||
|
||||
task list pro:garage There are different ways to list
|
||||
|
||||
task lis +phone By tag
|
||||
task li pro:garage +phone By project and tag
|
||||
task l mom By word
|
||||
|
||||
task 1 priority:H Priorities can be High, Medium or Low
|
||||
task pri:H 3
|
||||
task 1 pri:M
|
||||
task li The list is sorted by priority.
|
||||
|
||||
task 2 pri:L
|
||||
task li
|
||||
|
||||
task done 3 Suppose task 3 is done
|
||||
task li ...and it's gone
|
||||
|
||||
task 2 +phone +mistake Lets add tags
|
||||
|
||||
# Oops!
|
||||
task 2 -mistake or remove tags
|
||||
|
||||
task tags or look at all the tags
|
||||
|
||||
task info 2 or all the details
|
||||
|
||||
task projects or all the projects
|
||||
|
||||
task 3 fg:bold Let's make it colorful
|
||||
task 4 fg:bold_green
|
||||
task li
|
||||
task 3 fg:bold_underline_white
|
||||
task li
|
||||
|
||||
task 4 bg:on_bright_red fg:bold_yellow
|
||||
task li Oh that's just nasty - let's get rid of that.
|
||||
task 4 bg:
|
||||
task li
|
||||
task 4 fg:
|
||||
task 3 fg:
|
||||
|
||||
task colors There are many combinations to choose from
|
||||
|
||||
(Slashes!!!)
|
||||
task 1 due:6/8/2008 Let's add a due date
|
||||
date
|
||||
|
||||
task li
|
||||
task calendar Notice the due task is in yellow, today is marked cyan
|
||||
|
||||
task 1 due:5/20/2008 This is now an overdue task
|
||||
task li and it shows up red
|
||||
task overdue
|
||||
task cal
|
||||
|
||||
task export file.csv You can export the tasks to a spreadsheet
|
||||
cat file.csv
|
||||
|
||||
task start 1 Started tasks can be used as reminders
|
||||
of what you are supposed to be doing
|
||||
|
||||
task active They show up as active
|
||||
task done 1 Let's clear out a couple
|
||||
task li
|
||||
task done 3
|
||||
task active
|
||||
|
||||
task summary Summary shows progress on all projects
|
||||
|
||||
task history History shows general activity - how many added,
|
||||
completed etc, by month
|
||||
|
||||
And that's it. There are more commands than this
|
||||
covered in the TUTORIAL file, but this should give
|
||||
the basic idea.
|
||||
|
||||
Thank you for watching.
|
||||
|
||||
127
scripts/bash/task_completion.sh
Normal file
127
scripts/bash/task_completion.sh
Normal file
@@ -0,0 +1,127 @@
|
||||
# bash completion support for task
|
||||
#
|
||||
# Copyright 2009-2010 Federico Hernandez
|
||||
# All rights reserved.
|
||||
#
|
||||
# This script is part of the task project.
|
||||
#
|
||||
# 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.,
|
||||
# 51 Franklin Street, Fifth Floor,
|
||||
# Boston, MA
|
||||
# 02110-1301
|
||||
# USA
|
||||
#
|
||||
# The routines will do completion of:
|
||||
#
|
||||
# *) task subcommands
|
||||
# *) project names
|
||||
# *) tag names
|
||||
#
|
||||
# To use these routines:
|
||||
#
|
||||
# 1) Copy this file to somewhere (e.g. ~/.bash_completion.d/.task_completion.sh).
|
||||
# 2) Added the following line to your .bashrc:
|
||||
# source ~/.bash_completion.d/task_completion.sh
|
||||
#
|
||||
# OR
|
||||
#
|
||||
# 3) Copy the file to /etc/bash_complettion.d
|
||||
# 4) source /etc/bash_completion
|
||||
#
|
||||
# To submit patches/bug reports:
|
||||
#
|
||||
# *) Go to the projects website at
|
||||
#
|
||||
# http://taskwarrior.org
|
||||
#
|
||||
|
||||
_task_get_tags() {
|
||||
task _tags
|
||||
}
|
||||
|
||||
_task_get_config() {
|
||||
task _config
|
||||
}
|
||||
|
||||
_task_offer_projects() {
|
||||
COMPREPLY=( $(compgen -W "$(task _projects)" -- ${cur/*:/}) )
|
||||
}
|
||||
|
||||
_task()
|
||||
{
|
||||
local cur prev opts base
|
||||
|
||||
COMPREPLY=()
|
||||
cur="${COMP_WORDS[COMP_CWORD]}"
|
||||
prev="${COMP_WORDS[COMP_CWORD-1]}"
|
||||
if [ ${#COMP_WORDS[*]} -gt 2 ]
|
||||
then
|
||||
prev2="${COMP_WORDS[COMP_CWORD-2]}"
|
||||
else
|
||||
prev2=""
|
||||
fi
|
||||
# echo -e "\ncur='$cur'"
|
||||
# echo "prev='$prev'"
|
||||
# echo "prev2='$prev2'"
|
||||
|
||||
opts="$(task _commands) $(task _ids)"
|
||||
|
||||
case "${prev}" in
|
||||
:)
|
||||
case "${prev2}" in
|
||||
pro*)
|
||||
_task_offer_projects
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
*)
|
||||
case "${cur}" in
|
||||
pro*:*)
|
||||
_task_offer_projects
|
||||
return 0
|
||||
;;
|
||||
:)
|
||||
case "${prev}" in
|
||||
pro*)
|
||||
_task_offer_projects
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
+*)
|
||||
local tags=$(_task_get_tags | sed 's/^/+/')
|
||||
COMPREPLY=( $(compgen -W "${tags}" -- ${cur}) )
|
||||
return 0
|
||||
;;
|
||||
-*)
|
||||
local tags=$(_task_get_tags | sed 's/^/-/')
|
||||
COMPREPLY=( $(compgen -W "${tags}" -- ${cur}) )
|
||||
return 0
|
||||
;;
|
||||
rc.*)
|
||||
local config=$(_task_get_config | sed -e 's/^/rc\./' -e 's/$/:/')
|
||||
COMPREPLY=( $(compgen -W "${config}" -- ${cur}) )
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
|
||||
COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
|
||||
return 0
|
||||
}
|
||||
complete -o nospace -F _task task
|
||||
59
scripts/vim/README
Normal file
59
scripts/vim/README
Normal file
@@ -0,0 +1,59 @@
|
||||
|
||||
Configure VIM for Syntax Highlighting of Task Data
|
||||
|
||||
|
||||
The task data files (pending.data, completed.data and undo.data),
|
||||
configuration file (.taskrc) as well as edits made via commands like "task 1
|
||||
edit" can be color-highlighted if you happen to use VIM as your preferred text
|
||||
editor. Eventually this will happen automatically in newer versions of VIM,
|
||||
but for now you have to do a little bit of file shuffling.
|
||||
|
||||
|
||||
Prerequisites
|
||||
|
||||
For this to work, you need to first have syntax highlighting enabled when you
|
||||
use VIM. This happens to be the default for most VIM installations, but it is
|
||||
usually quite simple if that doesn't happen to be so in your case. Rather
|
||||
than repeat the excellent VIM documentation here, please see the appropriate
|
||||
VIM documentation itself. Generally this can be made seen by starting
|
||||
vim/gvim and issuing the following command:
|
||||
|
||||
:help syntax
|
||||
|
||||
You may prefer instead to read the help online at:
|
||||
http://vimdoc.sourceforge.net/htmldoc/syntax.html#syntax
|
||||
|
||||
|
||||
Configuring VIM to Understand Task Data
|
||||
|
||||
Once you have VIM's syntax highlighting enabled and working with other file
|
||||
types properly, configuring it for use with task is simple. You simply need
|
||||
to copy some files that came with task into your home directory so that you
|
||||
have:
|
||||
|
||||
~/.vim/ftdetect/task.vim
|
||||
~/.vim/syntax/taskdata.vim
|
||||
~/.vim/syntax/taskedit.vim
|
||||
~/.vim/syntax/taskrc.vim
|
||||
|
||||
The source of these files varies depending on how you installed task. If you
|
||||
installed task via a regular package (rpm or deb) you can find these files in
|
||||
/usr/share/doc/task-VERSION/scripts/vim/. If you built task yourself from the
|
||||
tarball (using the default configure options), these will be in
|
||||
/usr/local/share/doc/task-VERSION/scripts/vim/ instead. So you should be able
|
||||
to do one of the following:
|
||||
|
||||
cp -av /usr/share/doc/task-VERSION/scripts/vim/* ~/.vim/
|
||||
|
||||
or
|
||||
|
||||
cp -av /usr/local/share/doc/task-VERSION/scripts/vim/* ~/.vim/
|
||||
|
||||
You should then be ready to go.
|
||||
---
|
||||
All four above mentioned files are
|
||||
|
||||
Copyright 2009-2010 John Florian
|
||||
|
||||
and are available under the GNU Public License version 2 or later.
|
||||
For the full text of this license, see COPYING.
|
||||
22
scripts/vim/ftdetect/task.vim
Normal file
22
scripts/vim/ftdetect/task.vim
Normal file
@@ -0,0 +1,22 @@
|
||||
" Vim support file to detect Task Warrior data and configuration files and
|
||||
" single task edits
|
||||
"
|
||||
" Maintainer: John Florian <jflorian@doubledog.org>
|
||||
" Updated: Thu Dec 10 18:28:26 EST 2009
|
||||
"
|
||||
" Copyright 2009-2010 John Florian
|
||||
"
|
||||
" This file is available under the GNU Public License version 2 or later.
|
||||
" For the full text of this license, see COPYING.
|
||||
|
||||
|
||||
" Task Warrior data files
|
||||
au BufRead,BufNewFile {pending,completed,undo}.data set filetype=taskdata
|
||||
|
||||
" Task Warrior configuration file
|
||||
au BufRead,BufNewFile .taskrc set filetype=taskrc
|
||||
|
||||
" Task Warrior handling of 'task 42 edit'
|
||||
au BufRead,BufNewFile *.task set filetype=taskedit
|
||||
|
||||
" vim:noexpandtab
|
||||
48
scripts/vim/syntax/taskdata.vim
Normal file
48
scripts/vim/syntax/taskdata.vim
Normal file
@@ -0,0 +1,48 @@
|
||||
" Vim syntax file
|
||||
" Language: task data
|
||||
" Maintainer: John Florian <jflorian@doubledog.org>
|
||||
" Updated: Wed Jul 8 19:46:20 EDT 2009
|
||||
"
|
||||
" Copyright 2009-2010 John Florian
|
||||
"
|
||||
" This file is available under the GNU Public License version 2 or later.
|
||||
" For the full text of this license, see COPYING.
|
||||
|
||||
|
||||
" For version 5.x: Clear all syntax items.
|
||||
" For version 6.x: Quit when a syntax file was already loaded.
|
||||
if version < 600
|
||||
syntax clear
|
||||
elseif exists("b:current_syntax")
|
||||
finish
|
||||
endif
|
||||
|
||||
" Key Names for values.
|
||||
syn keyword taskdataKey description due end entry imask mask parent
|
||||
syn keyword taskdataKey priority project recur start status tags uuid
|
||||
syn match taskdataKey "annotation_\d\+"
|
||||
syn match taskdataUndo "^time.*$"
|
||||
syn match taskdataUndo "^\(old \|new \|---\)"
|
||||
|
||||
" Values associated with key names.
|
||||
"
|
||||
" Strings
|
||||
syn region taskdataString matchgroup=Normal start=+"+ end=+"+
|
||||
\ contains=taskdataEncoded,taskdataUUID,@Spell
|
||||
"
|
||||
" Special Embedded Characters (e.g., ",")
|
||||
syn match taskdataEncoded "&\a\+;" contained
|
||||
" UUIDs
|
||||
syn match taskdataUUID "\x\{8}-\(\x\{4}-\)\{3}\x\{12}" contained
|
||||
|
||||
|
||||
" The default methods for highlighting. Can be overridden later.
|
||||
hi def link taskdataEncoded Function
|
||||
hi def link taskdataKey Statement
|
||||
hi def link taskdataString String
|
||||
hi def link taskdataUUID Special
|
||||
hi def link taskdataUndo Type
|
||||
|
||||
let b:current_syntax = "taskdata"
|
||||
|
||||
" vim:noexpandtab
|
||||
40
scripts/vim/syntax/taskedit.vim
Normal file
40
scripts/vim/syntax/taskedit.vim
Normal file
@@ -0,0 +1,40 @@
|
||||
" Vim syntax file
|
||||
" Language: support for 'task 42 edit'
|
||||
" Maintainer: John Florian <jflorian@doubledog.org>
|
||||
" Updated: Wed Jul 8 19:46:32 EDT 2009
|
||||
"
|
||||
" Copyright 2009-2010 John Florian
|
||||
"
|
||||
" This file is available under the GNU Public License version 2 or later.
|
||||
" For the full text of this license, see COPYING.
|
||||
|
||||
|
||||
" For version 5.x: Clear all syntax items.
|
||||
" For version 6.x: Quit when a syntax file was already loaded.
|
||||
if version < 600
|
||||
syntax clear
|
||||
elseif exists("b:current_syntax")
|
||||
finish
|
||||
endif
|
||||
|
||||
syn match taskeditHeading "^\s*#\s*Name\s\+Editable details\s*$" contained
|
||||
syn match taskeditHeading "^\s*#\s*-\+\s\+-\+\s*$" contained
|
||||
syn match taskeditReadOnly "^\s*#\s*\(UU\)\?ID:.*$" contained
|
||||
syn match taskeditReadOnly "^\s*#\s*Status:.*$" contained
|
||||
syn match taskeditReadOnly "^\s*#\s*i\?Mask:.*$" contained
|
||||
syn match taskeditKey "^ *.\{-}:" nextgroup=taskeditString
|
||||
syn match taskeditComment "^\s*#.*$"
|
||||
\ contains=taskeditReadOnly,taskeditHeading
|
||||
syn match taskeditString ".*$" contained contains=@Spell
|
||||
|
||||
|
||||
" The default methods for highlighting. Can be overridden later.
|
||||
hi def link taskeditComment Comment
|
||||
hi def link taskeditHeading Function
|
||||
hi def link taskeditKey Statement
|
||||
hi def link taskeditReadOnly Special
|
||||
hi def link taskeditString String
|
||||
|
||||
let b:current_syntax = "taskedit"
|
||||
|
||||
" vim:noexpandtab
|
||||
52
scripts/vim/syntax/taskrc.vim
Normal file
52
scripts/vim/syntax/taskrc.vim
Normal file
@@ -0,0 +1,52 @@
|
||||
" Vim syntax file
|
||||
" Language: support for editing task configuration file
|
||||
" Maintainer: John Florian <jflorian@doubledog.org>
|
||||
" Updated: Sat Feb 20 14:14:44 EST 2010
|
||||
"
|
||||
" Copyright 2009-2010 John Florian
|
||||
"
|
||||
" This file is available under the GNU Public License version 2 or later.
|
||||
" For the full text of this license, see COPYING.
|
||||
|
||||
|
||||
" For version 5.x: Clear all syntax items.
|
||||
" For version 6.x: Quit when a syntax file was already loaded.
|
||||
if version < 600
|
||||
syntax clear
|
||||
elseif exists("b:current_syntax")
|
||||
finish
|
||||
endif
|
||||
|
||||
syn match taskrcVal ".\{-}$" contains=taskrcComment
|
||||
syn match taskrcEqual "="
|
||||
syn match taskrcKey "^\s*.\{-}="he=e-1 contains=taskrcEqual
|
||||
|
||||
syn keyword taskrcGoodKey locking curses confirmation next bulk nag weekstart displayweeknumber defaultwidth editor monthsperline annotations _forcecolor blanklines debug hooks fontunderline
|
||||
|
||||
syn match taskrcGoodKey "\(active\|tag\|recurrence\)\.indicator"
|
||||
syn match taskrcGoodKey "alias\.\S\{-}="he=e-1
|
||||
syn match taskrcGoodKey "calendar\.\(legend\|holidays\|details\(\.report\)\?\)"
|
||||
syn match taskrcGoodKey "color\(\.\(alternate\|overdue\|due\(\.today\)\?\|pri\.\([HML]\|none\)\|active\|tagged\|recurring\|header\|footnote\|\(\(tag\|project\|keyword\)\.\S\{-}\)\|debug\|\(calendar\.\(today\|due\(\.today\)\?\|overdue\|weekend\|holiday\|weeknumber\)\)\)\)\?="he=e-1
|
||||
syn match taskrcGoodKey "complete\.all\.\(projects\|tags\)"
|
||||
syn match taskrcGoodKey "data\.location"
|
||||
syn match taskrcGoodKey "dateformat\(\.\(holiday\|report\)\)\?"
|
||||
syn match taskrcGoodKey "default\.\(command\|project\|priority\)"
|
||||
syn match taskrcGoodKey "due="he=e-1
|
||||
syn match taskrcGoodKey "echo\.command"
|
||||
syn match taskrcGoodKey "import\.synonym\.\(bg\|description\|due\|end\|entry\|fg\|id\|priority\|project\|recur\|start\|status\|tags\|uuid\)"
|
||||
syn match taskrcGoodKey "report\.\S\{-}\.\(description\|columns\|labels\|sort\|filter\|dateformat\|annotations\)="he=e-1
|
||||
syn match taskrcGoodKey "search\.case\.sensitive"
|
||||
syn match taskrcGoodKey "shadow\.\(file\|command\|notify\)"
|
||||
syn match taskrcGoodKey "shell\.prompt"
|
||||
|
||||
syn match taskrcComment "#.*$"
|
||||
|
||||
" The default methods for highlighting. Can be overridden later.
|
||||
hi def link taskrcComment Comment
|
||||
hi def link taskrcKey Statement
|
||||
hi def link taskrcVal String
|
||||
hi def link taskrcGoodKey Function
|
||||
|
||||
let b:current_syntax = "taskrc"
|
||||
|
||||
" vim:noexpandtab
|
||||
62
scripts/zsh/_task
Normal file
62
scripts/zsh/_task
Normal file
@@ -0,0 +1,62 @@
|
||||
#compdef task
|
||||
#
|
||||
# This script is currently unmaintained and was released for an earlier version
|
||||
# of task. We welcome any zsh user that wants to contribute to task to take a
|
||||
# look at this script and either confirm its working status or improve it.
|
||||
# Please contact us at support@taskwarrior.org if you have further questions on
|
||||
# how to contribute to task.
|
||||
#
|
||||
# zsh completion for task
|
||||
#
|
||||
# Copyright 2009 P.C. Shyamshankar
|
||||
# All rights reserved.
|
||||
#
|
||||
# This script is part of the task project.
|
||||
#
|
||||
# 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.,
|
||||
# 51 Franklin Street, Fifth Floor,
|
||||
# Boston, MA
|
||||
# 02110-1301
|
||||
# USA
|
||||
#
|
||||
|
||||
typeset -g _task_cmds
|
||||
_task_cmds=($(task _commands))
|
||||
|
||||
_task() {
|
||||
_arguments -s -S \
|
||||
"*::task command:_task_commands"
|
||||
return 0
|
||||
}
|
||||
|
||||
|
||||
(( $+functions[_task_commands] )) ||
|
||||
_task_commands() {
|
||||
local cmd ret=1
|
||||
if (( CURRENT == 1 )); then
|
||||
_describe -t commands 'task command' _task_cmds
|
||||
else
|
||||
local curcontext="${curcontext}"
|
||||
cmd="${_task_cmds[(r)$words[1]:*]%%:*}"
|
||||
if (( $#cmd )); then
|
||||
curcontext="${curcontext%:*:*}:task-${cmd}"
|
||||
_call_function ret _task_${cmd} || _message "No command remaining."
|
||||
else
|
||||
_message "Unknown subcommand ${cmd}"
|
||||
fi
|
||||
return ret
|
||||
fi
|
||||
}
|
||||
@@ -1,405 +0,0 @@
|
||||
Config.o Config.o: Config.cpp /usr/include/c++/4.0.0/iostream \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++config.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/os_defines.h \
|
||||
/usr/include/c++/4.0.0/ostream /usr/include/c++/4.0.0/ios \
|
||||
/usr/include/c++/4.0.0/iosfwd \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++locale.h \
|
||||
/usr/include/c++/4.0.0/clocale /usr/include/locale.h \
|
||||
/usr/include/_locale.h /usr/include/sys/cdefs.h /usr/include/_types.h \
|
||||
/usr/include/sys/_types.h /usr/include/machine/_types.h \
|
||||
/usr/include/i386/_types.h /usr/include/c++/4.0.0/cstring \
|
||||
/usr/include/c++/4.0.0/cstddef \
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stddef.h \
|
||||
/usr/include/string.h /usr/include/c++/4.0.0/cstdio \
|
||||
/usr/include/stdio.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++io.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr-default.h \
|
||||
/usr/include/pthread.h /usr/include/pthread_impl.h /usr/include/sched.h \
|
||||
/usr/include/time.h /usr/include/_structs.h /usr/include/sys/_structs.h \
|
||||
/usr/include/unistd.h /usr/include/sys/unistd.h \
|
||||
/usr/include/sys/select.h /usr/include/sys/appleapiopts.h \
|
||||
/usr/include/sys/_select.h /usr/include/c++/4.0.0/cctype \
|
||||
/usr/include/ctype.h /usr/include/runetype.h \
|
||||
/usr/include/c++/4.0.0/bits/stringfwd.h \
|
||||
/usr/include/c++/4.0.0/bits/postypes.h /usr/include/c++/4.0.0/cwchar \
|
||||
/usr/include/c++/4.0.0/ctime /usr/include/wchar.h \
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdarg.h \
|
||||
/usr/include/_wctype.h \
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdint.h \
|
||||
/usr/include/c++/4.0.0/bits/functexcept.h \
|
||||
/usr/include/c++/4.0.0/exception_defines.h \
|
||||
/usr/include/c++/4.0.0/exception \
|
||||
/usr/include/c++/4.0.0/bits/char_traits.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_algobase.h \
|
||||
/usr/include/c++/4.0.0/climits \
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/limits.h \
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/syslimits.h \
|
||||
/usr/include/limits.h /usr/include/machine/limits.h \
|
||||
/usr/include/i386/limits.h /usr/include/i386/_limits.h \
|
||||
/usr/include/sys/syslimits.h /usr/include/c++/4.0.0/cstdlib \
|
||||
/usr/include/stdlib.h /usr/include/available.h /usr/include/sys/wait.h \
|
||||
/usr/include/sys/signal.h /usr/include/machine/signal.h \
|
||||
/usr/include/i386/signal.h /usr/include/i386/_structs.h \
|
||||
/usr/include/machine/_structs.h /usr/include/mach/i386/_structs.h \
|
||||
/usr/include/sys/resource.h /usr/include/machine/endian.h \
|
||||
/usr/include/i386/endian.h /usr/include/sys/_endian.h \
|
||||
/usr/include/libkern/_OSByteOrder.h \
|
||||
/usr/include/libkern/i386/_OSByteOrder.h /usr/include/alloca.h \
|
||||
/usr/include/machine/types.h /usr/include/i386/types.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_pair.h \
|
||||
/usr/include/c++/4.0.0/bits/cpp_type_traits.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator_base_types.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator_base_funcs.h \
|
||||
/usr/include/c++/4.0.0/bits/concept_check.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator.h \
|
||||
/usr/include/c++/4.0.0/debug/debug.h /usr/include/c++/4.0.0/cassert \
|
||||
/usr/include/assert.h /usr/include/c++/4.0.0/bits/localefwd.h \
|
||||
/usr/include/c++/4.0.0/bits/ios_base.h \
|
||||
/usr/include/c++/4.0.0/bits/atomicity.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/atomic_word.h \
|
||||
/usr/include/c++/4.0.0/bits/locale_classes.h \
|
||||
/usr/include/c++/4.0.0/string /usr/include/c++/4.0.0/memory \
|
||||
/usr/include/c++/4.0.0/bits/allocator.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++allocator.h \
|
||||
/usr/include/c++/4.0.0/ext/new_allocator.h /usr/include/c++/4.0.0/new \
|
||||
/usr/include/c++/4.0.0/bits/stl_construct.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_uninitialized.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_raw_storage_iter.h \
|
||||
/usr/include/c++/4.0.0/limits \
|
||||
/usr/include/c++/4.0.0/bits/stl_function.h \
|
||||
/usr/include/c++/4.0.0/bits/basic_string.h \
|
||||
/usr/include/c++/4.0.0/algorithm /usr/include/c++/4.0.0/bits/stl_algo.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_heap.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_tempbuf.h \
|
||||
/usr/include/c++/4.0.0/bits/basic_string.tcc \
|
||||
/usr/include/c++/4.0.0/streambuf \
|
||||
/usr/include/c++/4.0.0/bits/streambuf.tcc \
|
||||
/usr/include/c++/4.0.0/bits/basic_ios.h \
|
||||
/usr/include/c++/4.0.0/bits/streambuf_iterator.h \
|
||||
/usr/include/c++/4.0.0/bits/locale_facets.h \
|
||||
/usr/include/c++/4.0.0/cwctype /usr/include/wctype.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_base.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_inline.h \
|
||||
/usr/include/c++/4.0.0/bits/codecvt.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/time_members.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/messages_members.h \
|
||||
/usr/include/c++/4.0.0/bits/basic_ios.tcc \
|
||||
/usr/include/c++/4.0.0/bits/ostream.tcc /usr/include/c++/4.0.0/locale \
|
||||
/usr/include/c++/4.0.0/bits/locale_facets.tcc \
|
||||
/usr/include/c++/4.0.0/typeinfo /usr/include/c++/4.0.0/istream \
|
||||
/usr/include/c++/4.0.0/bits/istream.tcc /usr/include/c++/4.0.0/fstream \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/basic_file.h \
|
||||
/usr/include/c++/4.0.0/bits/fstream.tcc /usr/include/c++/4.0.0/sstream \
|
||||
/usr/include/c++/4.0.0/bits/sstream.tcc /usr/include/sys/stat.h task.h \
|
||||
/usr/include/c++/4.0.0/vector /usr/include/c++/4.0.0/bits/stl_vector.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_bvector.h \
|
||||
/usr/include/c++/4.0.0/bits/vector.tcc /usr/include/c++/4.0.0/map \
|
||||
/usr/include/c++/4.0.0/bits/stl_tree.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_map.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_multimap.h /usr/include/sys/types.h \
|
||||
Config.h Table.h color.h Grid.h color.h TDB.h T.h ../auto.h
|
||||
|
||||
/usr/include/c++/4.0.0/iostream:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++config.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/os_defines.h:
|
||||
|
||||
/usr/include/c++/4.0.0/ostream:
|
||||
|
||||
/usr/include/c++/4.0.0/ios:
|
||||
|
||||
/usr/include/c++/4.0.0/iosfwd:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++locale.h:
|
||||
|
||||
/usr/include/c++/4.0.0/clocale:
|
||||
|
||||
/usr/include/locale.h:
|
||||
|
||||
/usr/include/_locale.h:
|
||||
|
||||
/usr/include/sys/cdefs.h:
|
||||
|
||||
/usr/include/_types.h:
|
||||
|
||||
/usr/include/sys/_types.h:
|
||||
|
||||
/usr/include/machine/_types.h:
|
||||
|
||||
/usr/include/i386/_types.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cstring:
|
||||
|
||||
/usr/include/c++/4.0.0/cstddef:
|
||||
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stddef.h:
|
||||
|
||||
/usr/include/string.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cstdio:
|
||||
|
||||
/usr/include/stdio.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++io.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr-default.h:
|
||||
|
||||
/usr/include/pthread.h:
|
||||
|
||||
/usr/include/pthread_impl.h:
|
||||
|
||||
/usr/include/sched.h:
|
||||
|
||||
/usr/include/time.h:
|
||||
|
||||
/usr/include/_structs.h:
|
||||
|
||||
/usr/include/sys/_structs.h:
|
||||
|
||||
/usr/include/unistd.h:
|
||||
|
||||
/usr/include/sys/unistd.h:
|
||||
|
||||
/usr/include/sys/select.h:
|
||||
|
||||
/usr/include/sys/appleapiopts.h:
|
||||
|
||||
/usr/include/sys/_select.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cctype:
|
||||
|
||||
/usr/include/ctype.h:
|
||||
|
||||
/usr/include/runetype.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stringfwd.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/postypes.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cwchar:
|
||||
|
||||
/usr/include/c++/4.0.0/ctime:
|
||||
|
||||
/usr/include/wchar.h:
|
||||
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdarg.h:
|
||||
|
||||
/usr/include/_wctype.h:
|
||||
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdint.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/functexcept.h:
|
||||
|
||||
/usr/include/c++/4.0.0/exception_defines.h:
|
||||
|
||||
/usr/include/c++/4.0.0/exception:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/char_traits.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_algobase.h:
|
||||
|
||||
/usr/include/c++/4.0.0/climits:
|
||||
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/limits.h:
|
||||
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/syslimits.h:
|
||||
|
||||
/usr/include/limits.h:
|
||||
|
||||
/usr/include/machine/limits.h:
|
||||
|
||||
/usr/include/i386/limits.h:
|
||||
|
||||
/usr/include/i386/_limits.h:
|
||||
|
||||
/usr/include/sys/syslimits.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cstdlib:
|
||||
|
||||
/usr/include/stdlib.h:
|
||||
|
||||
/usr/include/available.h:
|
||||
|
||||
/usr/include/sys/wait.h:
|
||||
|
||||
/usr/include/sys/signal.h:
|
||||
|
||||
/usr/include/machine/signal.h:
|
||||
|
||||
/usr/include/i386/signal.h:
|
||||
|
||||
/usr/include/i386/_structs.h:
|
||||
|
||||
/usr/include/machine/_structs.h:
|
||||
|
||||
/usr/include/mach/i386/_structs.h:
|
||||
|
||||
/usr/include/sys/resource.h:
|
||||
|
||||
/usr/include/machine/endian.h:
|
||||
|
||||
/usr/include/i386/endian.h:
|
||||
|
||||
/usr/include/sys/_endian.h:
|
||||
|
||||
/usr/include/libkern/_OSByteOrder.h:
|
||||
|
||||
/usr/include/libkern/i386/_OSByteOrder.h:
|
||||
|
||||
/usr/include/alloca.h:
|
||||
|
||||
/usr/include/machine/types.h:
|
||||
|
||||
/usr/include/i386/types.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_pair.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/cpp_type_traits.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator_base_types.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator_base_funcs.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/concept_check.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator.h:
|
||||
|
||||
/usr/include/c++/4.0.0/debug/debug.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cassert:
|
||||
|
||||
/usr/include/assert.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/localefwd.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/ios_base.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/atomicity.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/atomic_word.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/locale_classes.h:
|
||||
|
||||
/usr/include/c++/4.0.0/string:
|
||||
|
||||
/usr/include/c++/4.0.0/memory:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/allocator.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++allocator.h:
|
||||
|
||||
/usr/include/c++/4.0.0/ext/new_allocator.h:
|
||||
|
||||
/usr/include/c++/4.0.0/new:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_construct.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_uninitialized.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_raw_storage_iter.h:
|
||||
|
||||
/usr/include/c++/4.0.0/limits:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_function.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/basic_string.h:
|
||||
|
||||
/usr/include/c++/4.0.0/algorithm:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_algo.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_heap.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_tempbuf.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/basic_string.tcc:
|
||||
|
||||
/usr/include/c++/4.0.0/streambuf:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/streambuf.tcc:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/basic_ios.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/streambuf_iterator.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/locale_facets.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cwctype:
|
||||
|
||||
/usr/include/wctype.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_base.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_inline.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/codecvt.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/time_members.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/messages_members.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/basic_ios.tcc:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/ostream.tcc:
|
||||
|
||||
/usr/include/c++/4.0.0/locale:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/locale_facets.tcc:
|
||||
|
||||
/usr/include/c++/4.0.0/typeinfo:
|
||||
|
||||
/usr/include/c++/4.0.0/istream:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/istream.tcc:
|
||||
|
||||
/usr/include/c++/4.0.0/fstream:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/basic_file.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/fstream.tcc:
|
||||
|
||||
/usr/include/c++/4.0.0/sstream:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/sstream.tcc:
|
||||
|
||||
/usr/include/sys/stat.h:
|
||||
|
||||
task.h:
|
||||
|
||||
/usr/include/c++/4.0.0/vector:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_vector.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_bvector.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/vector.tcc:
|
||||
|
||||
/usr/include/c++/4.0.0/map:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_tree.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_map.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_multimap.h:
|
||||
|
||||
/usr/include/sys/types.h:
|
||||
|
||||
Config.h:
|
||||
|
||||
Table.h:
|
||||
|
||||
color.h:
|
||||
|
||||
Grid.h:
|
||||
|
||||
color.h:
|
||||
|
||||
TDB.h:
|
||||
|
||||
T.h:
|
||||
|
||||
../auto.h:
|
||||
@@ -1,392 +0,0 @@
|
||||
Date.o Date.o: Date.cpp /usr/include/c++/4.0.0/iostream \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++config.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/os_defines.h \
|
||||
/usr/include/c++/4.0.0/ostream /usr/include/c++/4.0.0/ios \
|
||||
/usr/include/c++/4.0.0/iosfwd \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++locale.h \
|
||||
/usr/include/c++/4.0.0/clocale /usr/include/locale.h \
|
||||
/usr/include/_locale.h /usr/include/sys/cdefs.h /usr/include/_types.h \
|
||||
/usr/include/sys/_types.h /usr/include/machine/_types.h \
|
||||
/usr/include/i386/_types.h /usr/include/c++/4.0.0/cstring \
|
||||
/usr/include/c++/4.0.0/cstddef \
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stddef.h \
|
||||
/usr/include/string.h /usr/include/c++/4.0.0/cstdio \
|
||||
/usr/include/stdio.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++io.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr-default.h \
|
||||
/usr/include/pthread.h /usr/include/pthread_impl.h /usr/include/sched.h \
|
||||
/usr/include/time.h /usr/include/_structs.h /usr/include/sys/_structs.h \
|
||||
/usr/include/unistd.h /usr/include/sys/unistd.h \
|
||||
/usr/include/sys/select.h /usr/include/sys/appleapiopts.h \
|
||||
/usr/include/sys/_select.h /usr/include/c++/4.0.0/cctype \
|
||||
/usr/include/ctype.h /usr/include/runetype.h \
|
||||
/usr/include/c++/4.0.0/bits/stringfwd.h \
|
||||
/usr/include/c++/4.0.0/bits/postypes.h /usr/include/c++/4.0.0/cwchar \
|
||||
/usr/include/c++/4.0.0/ctime /usr/include/wchar.h \
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdarg.h \
|
||||
/usr/include/_wctype.h \
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdint.h \
|
||||
/usr/include/c++/4.0.0/bits/functexcept.h \
|
||||
/usr/include/c++/4.0.0/exception_defines.h \
|
||||
/usr/include/c++/4.0.0/exception \
|
||||
/usr/include/c++/4.0.0/bits/char_traits.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_algobase.h \
|
||||
/usr/include/c++/4.0.0/climits \
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/limits.h \
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/syslimits.h \
|
||||
/usr/include/limits.h /usr/include/machine/limits.h \
|
||||
/usr/include/i386/limits.h /usr/include/i386/_limits.h \
|
||||
/usr/include/sys/syslimits.h /usr/include/c++/4.0.0/cstdlib \
|
||||
/usr/include/stdlib.h /usr/include/available.h /usr/include/sys/wait.h \
|
||||
/usr/include/sys/signal.h /usr/include/machine/signal.h \
|
||||
/usr/include/i386/signal.h /usr/include/i386/_structs.h \
|
||||
/usr/include/machine/_structs.h /usr/include/mach/i386/_structs.h \
|
||||
/usr/include/sys/resource.h /usr/include/machine/endian.h \
|
||||
/usr/include/i386/endian.h /usr/include/sys/_endian.h \
|
||||
/usr/include/libkern/_OSByteOrder.h \
|
||||
/usr/include/libkern/i386/_OSByteOrder.h /usr/include/alloca.h \
|
||||
/usr/include/machine/types.h /usr/include/i386/types.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_pair.h \
|
||||
/usr/include/c++/4.0.0/bits/cpp_type_traits.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator_base_types.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator_base_funcs.h \
|
||||
/usr/include/c++/4.0.0/bits/concept_check.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator.h \
|
||||
/usr/include/c++/4.0.0/debug/debug.h /usr/include/c++/4.0.0/cassert \
|
||||
/usr/include/assert.h /usr/include/c++/4.0.0/bits/localefwd.h \
|
||||
/usr/include/c++/4.0.0/bits/ios_base.h \
|
||||
/usr/include/c++/4.0.0/bits/atomicity.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/atomic_word.h \
|
||||
/usr/include/c++/4.0.0/bits/locale_classes.h \
|
||||
/usr/include/c++/4.0.0/string /usr/include/c++/4.0.0/memory \
|
||||
/usr/include/c++/4.0.0/bits/allocator.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++allocator.h \
|
||||
/usr/include/c++/4.0.0/ext/new_allocator.h /usr/include/c++/4.0.0/new \
|
||||
/usr/include/c++/4.0.0/bits/stl_construct.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_uninitialized.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_raw_storage_iter.h \
|
||||
/usr/include/c++/4.0.0/limits \
|
||||
/usr/include/c++/4.0.0/bits/stl_function.h \
|
||||
/usr/include/c++/4.0.0/bits/basic_string.h \
|
||||
/usr/include/c++/4.0.0/algorithm /usr/include/c++/4.0.0/bits/stl_algo.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_heap.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_tempbuf.h \
|
||||
/usr/include/c++/4.0.0/bits/basic_string.tcc \
|
||||
/usr/include/c++/4.0.0/streambuf \
|
||||
/usr/include/c++/4.0.0/bits/streambuf.tcc \
|
||||
/usr/include/c++/4.0.0/bits/basic_ios.h \
|
||||
/usr/include/c++/4.0.0/bits/streambuf_iterator.h \
|
||||
/usr/include/c++/4.0.0/bits/locale_facets.h \
|
||||
/usr/include/c++/4.0.0/cwctype /usr/include/wctype.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_base.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_inline.h \
|
||||
/usr/include/c++/4.0.0/bits/codecvt.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/time_members.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/messages_members.h \
|
||||
/usr/include/c++/4.0.0/bits/basic_ios.tcc \
|
||||
/usr/include/c++/4.0.0/bits/ostream.tcc /usr/include/c++/4.0.0/locale \
|
||||
/usr/include/c++/4.0.0/bits/locale_facets.tcc \
|
||||
/usr/include/c++/4.0.0/typeinfo /usr/include/c++/4.0.0/istream \
|
||||
/usr/include/c++/4.0.0/bits/istream.tcc task.h \
|
||||
/usr/include/c++/4.0.0/vector /usr/include/c++/4.0.0/bits/stl_vector.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_bvector.h \
|
||||
/usr/include/c++/4.0.0/bits/vector.tcc /usr/include/c++/4.0.0/map \
|
||||
/usr/include/c++/4.0.0/bits/stl_tree.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_map.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_multimap.h /usr/include/sys/types.h \
|
||||
Config.h Table.h color.h Grid.h color.h TDB.h T.h ../auto.h Date.h
|
||||
|
||||
/usr/include/c++/4.0.0/iostream:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++config.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/os_defines.h:
|
||||
|
||||
/usr/include/c++/4.0.0/ostream:
|
||||
|
||||
/usr/include/c++/4.0.0/ios:
|
||||
|
||||
/usr/include/c++/4.0.0/iosfwd:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++locale.h:
|
||||
|
||||
/usr/include/c++/4.0.0/clocale:
|
||||
|
||||
/usr/include/locale.h:
|
||||
|
||||
/usr/include/_locale.h:
|
||||
|
||||
/usr/include/sys/cdefs.h:
|
||||
|
||||
/usr/include/_types.h:
|
||||
|
||||
/usr/include/sys/_types.h:
|
||||
|
||||
/usr/include/machine/_types.h:
|
||||
|
||||
/usr/include/i386/_types.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cstring:
|
||||
|
||||
/usr/include/c++/4.0.0/cstddef:
|
||||
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stddef.h:
|
||||
|
||||
/usr/include/string.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cstdio:
|
||||
|
||||
/usr/include/stdio.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++io.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr-default.h:
|
||||
|
||||
/usr/include/pthread.h:
|
||||
|
||||
/usr/include/pthread_impl.h:
|
||||
|
||||
/usr/include/sched.h:
|
||||
|
||||
/usr/include/time.h:
|
||||
|
||||
/usr/include/_structs.h:
|
||||
|
||||
/usr/include/sys/_structs.h:
|
||||
|
||||
/usr/include/unistd.h:
|
||||
|
||||
/usr/include/sys/unistd.h:
|
||||
|
||||
/usr/include/sys/select.h:
|
||||
|
||||
/usr/include/sys/appleapiopts.h:
|
||||
|
||||
/usr/include/sys/_select.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cctype:
|
||||
|
||||
/usr/include/ctype.h:
|
||||
|
||||
/usr/include/runetype.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stringfwd.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/postypes.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cwchar:
|
||||
|
||||
/usr/include/c++/4.0.0/ctime:
|
||||
|
||||
/usr/include/wchar.h:
|
||||
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdarg.h:
|
||||
|
||||
/usr/include/_wctype.h:
|
||||
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdint.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/functexcept.h:
|
||||
|
||||
/usr/include/c++/4.0.0/exception_defines.h:
|
||||
|
||||
/usr/include/c++/4.0.0/exception:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/char_traits.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_algobase.h:
|
||||
|
||||
/usr/include/c++/4.0.0/climits:
|
||||
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/limits.h:
|
||||
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/syslimits.h:
|
||||
|
||||
/usr/include/limits.h:
|
||||
|
||||
/usr/include/machine/limits.h:
|
||||
|
||||
/usr/include/i386/limits.h:
|
||||
|
||||
/usr/include/i386/_limits.h:
|
||||
|
||||
/usr/include/sys/syslimits.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cstdlib:
|
||||
|
||||
/usr/include/stdlib.h:
|
||||
|
||||
/usr/include/available.h:
|
||||
|
||||
/usr/include/sys/wait.h:
|
||||
|
||||
/usr/include/sys/signal.h:
|
||||
|
||||
/usr/include/machine/signal.h:
|
||||
|
||||
/usr/include/i386/signal.h:
|
||||
|
||||
/usr/include/i386/_structs.h:
|
||||
|
||||
/usr/include/machine/_structs.h:
|
||||
|
||||
/usr/include/mach/i386/_structs.h:
|
||||
|
||||
/usr/include/sys/resource.h:
|
||||
|
||||
/usr/include/machine/endian.h:
|
||||
|
||||
/usr/include/i386/endian.h:
|
||||
|
||||
/usr/include/sys/_endian.h:
|
||||
|
||||
/usr/include/libkern/_OSByteOrder.h:
|
||||
|
||||
/usr/include/libkern/i386/_OSByteOrder.h:
|
||||
|
||||
/usr/include/alloca.h:
|
||||
|
||||
/usr/include/machine/types.h:
|
||||
|
||||
/usr/include/i386/types.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_pair.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/cpp_type_traits.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator_base_types.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator_base_funcs.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/concept_check.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator.h:
|
||||
|
||||
/usr/include/c++/4.0.0/debug/debug.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cassert:
|
||||
|
||||
/usr/include/assert.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/localefwd.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/ios_base.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/atomicity.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/atomic_word.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/locale_classes.h:
|
||||
|
||||
/usr/include/c++/4.0.0/string:
|
||||
|
||||
/usr/include/c++/4.0.0/memory:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/allocator.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++allocator.h:
|
||||
|
||||
/usr/include/c++/4.0.0/ext/new_allocator.h:
|
||||
|
||||
/usr/include/c++/4.0.0/new:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_construct.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_uninitialized.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_raw_storage_iter.h:
|
||||
|
||||
/usr/include/c++/4.0.0/limits:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_function.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/basic_string.h:
|
||||
|
||||
/usr/include/c++/4.0.0/algorithm:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_algo.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_heap.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_tempbuf.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/basic_string.tcc:
|
||||
|
||||
/usr/include/c++/4.0.0/streambuf:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/streambuf.tcc:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/basic_ios.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/streambuf_iterator.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/locale_facets.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cwctype:
|
||||
|
||||
/usr/include/wctype.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_base.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_inline.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/codecvt.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/time_members.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/messages_members.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/basic_ios.tcc:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/ostream.tcc:
|
||||
|
||||
/usr/include/c++/4.0.0/locale:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/locale_facets.tcc:
|
||||
|
||||
/usr/include/c++/4.0.0/typeinfo:
|
||||
|
||||
/usr/include/c++/4.0.0/istream:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/istream.tcc:
|
||||
|
||||
task.h:
|
||||
|
||||
/usr/include/c++/4.0.0/vector:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_vector.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_bvector.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/vector.tcc:
|
||||
|
||||
/usr/include/c++/4.0.0/map:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_tree.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_map.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_multimap.h:
|
||||
|
||||
/usr/include/sys/types.h:
|
||||
|
||||
Config.h:
|
||||
|
||||
Table.h:
|
||||
|
||||
color.h:
|
||||
|
||||
Grid.h:
|
||||
|
||||
color.h:
|
||||
|
||||
TDB.h:
|
||||
|
||||
T.h:
|
||||
|
||||
../auto.h:
|
||||
|
||||
Date.h:
|
||||
390
src/.deps/T.Po
390
src/.deps/T.Po
@@ -1,390 +0,0 @@
|
||||
T.o T.o: T.cpp /usr/include/c++/4.0.0/iostream \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++config.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/os_defines.h \
|
||||
/usr/include/c++/4.0.0/ostream /usr/include/c++/4.0.0/ios \
|
||||
/usr/include/c++/4.0.0/iosfwd \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++locale.h \
|
||||
/usr/include/c++/4.0.0/clocale /usr/include/locale.h \
|
||||
/usr/include/_locale.h /usr/include/sys/cdefs.h /usr/include/_types.h \
|
||||
/usr/include/sys/_types.h /usr/include/machine/_types.h \
|
||||
/usr/include/i386/_types.h /usr/include/c++/4.0.0/cstring \
|
||||
/usr/include/c++/4.0.0/cstddef \
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stddef.h \
|
||||
/usr/include/string.h /usr/include/c++/4.0.0/cstdio \
|
||||
/usr/include/stdio.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++io.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr-default.h \
|
||||
/usr/include/pthread.h /usr/include/pthread_impl.h /usr/include/sched.h \
|
||||
/usr/include/time.h /usr/include/_structs.h /usr/include/sys/_structs.h \
|
||||
/usr/include/unistd.h /usr/include/sys/unistd.h \
|
||||
/usr/include/sys/select.h /usr/include/sys/appleapiopts.h \
|
||||
/usr/include/sys/_select.h /usr/include/c++/4.0.0/cctype \
|
||||
/usr/include/ctype.h /usr/include/runetype.h \
|
||||
/usr/include/c++/4.0.0/bits/stringfwd.h \
|
||||
/usr/include/c++/4.0.0/bits/postypes.h /usr/include/c++/4.0.0/cwchar \
|
||||
/usr/include/c++/4.0.0/ctime /usr/include/wchar.h \
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdarg.h \
|
||||
/usr/include/_wctype.h \
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdint.h \
|
||||
/usr/include/c++/4.0.0/bits/functexcept.h \
|
||||
/usr/include/c++/4.0.0/exception_defines.h \
|
||||
/usr/include/c++/4.0.0/exception \
|
||||
/usr/include/c++/4.0.0/bits/char_traits.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_algobase.h \
|
||||
/usr/include/c++/4.0.0/climits \
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/limits.h \
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/syslimits.h \
|
||||
/usr/include/limits.h /usr/include/machine/limits.h \
|
||||
/usr/include/i386/limits.h /usr/include/i386/_limits.h \
|
||||
/usr/include/sys/syslimits.h /usr/include/c++/4.0.0/cstdlib \
|
||||
/usr/include/stdlib.h /usr/include/available.h /usr/include/sys/wait.h \
|
||||
/usr/include/sys/signal.h /usr/include/machine/signal.h \
|
||||
/usr/include/i386/signal.h /usr/include/i386/_structs.h \
|
||||
/usr/include/machine/_structs.h /usr/include/mach/i386/_structs.h \
|
||||
/usr/include/sys/resource.h /usr/include/machine/endian.h \
|
||||
/usr/include/i386/endian.h /usr/include/sys/_endian.h \
|
||||
/usr/include/libkern/_OSByteOrder.h \
|
||||
/usr/include/libkern/i386/_OSByteOrder.h /usr/include/alloca.h \
|
||||
/usr/include/machine/types.h /usr/include/i386/types.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_pair.h \
|
||||
/usr/include/c++/4.0.0/bits/cpp_type_traits.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator_base_types.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator_base_funcs.h \
|
||||
/usr/include/c++/4.0.0/bits/concept_check.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator.h \
|
||||
/usr/include/c++/4.0.0/debug/debug.h /usr/include/c++/4.0.0/cassert \
|
||||
/usr/include/assert.h /usr/include/c++/4.0.0/bits/localefwd.h \
|
||||
/usr/include/c++/4.0.0/bits/ios_base.h \
|
||||
/usr/include/c++/4.0.0/bits/atomicity.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/atomic_word.h \
|
||||
/usr/include/c++/4.0.0/bits/locale_classes.h \
|
||||
/usr/include/c++/4.0.0/string /usr/include/c++/4.0.0/memory \
|
||||
/usr/include/c++/4.0.0/bits/allocator.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++allocator.h \
|
||||
/usr/include/c++/4.0.0/ext/new_allocator.h /usr/include/c++/4.0.0/new \
|
||||
/usr/include/c++/4.0.0/bits/stl_construct.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_uninitialized.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_raw_storage_iter.h \
|
||||
/usr/include/c++/4.0.0/limits \
|
||||
/usr/include/c++/4.0.0/bits/stl_function.h \
|
||||
/usr/include/c++/4.0.0/bits/basic_string.h \
|
||||
/usr/include/c++/4.0.0/algorithm /usr/include/c++/4.0.0/bits/stl_algo.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_heap.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_tempbuf.h \
|
||||
/usr/include/c++/4.0.0/bits/basic_string.tcc \
|
||||
/usr/include/c++/4.0.0/streambuf \
|
||||
/usr/include/c++/4.0.0/bits/streambuf.tcc \
|
||||
/usr/include/c++/4.0.0/bits/basic_ios.h \
|
||||
/usr/include/c++/4.0.0/bits/streambuf_iterator.h \
|
||||
/usr/include/c++/4.0.0/bits/locale_facets.h \
|
||||
/usr/include/c++/4.0.0/cwctype /usr/include/wctype.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_base.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_inline.h \
|
||||
/usr/include/c++/4.0.0/bits/codecvt.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/time_members.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/messages_members.h \
|
||||
/usr/include/c++/4.0.0/bits/basic_ios.tcc \
|
||||
/usr/include/c++/4.0.0/bits/ostream.tcc /usr/include/c++/4.0.0/locale \
|
||||
/usr/include/c++/4.0.0/bits/locale_facets.tcc \
|
||||
/usr/include/c++/4.0.0/typeinfo /usr/include/c++/4.0.0/istream \
|
||||
/usr/include/c++/4.0.0/bits/istream.tcc task.h \
|
||||
/usr/include/c++/4.0.0/vector /usr/include/c++/4.0.0/bits/stl_vector.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_bvector.h \
|
||||
/usr/include/c++/4.0.0/bits/vector.tcc /usr/include/c++/4.0.0/map \
|
||||
/usr/include/c++/4.0.0/bits/stl_tree.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_map.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_multimap.h /usr/include/sys/types.h \
|
||||
Config.h Table.h color.h Grid.h color.h TDB.h T.h ../auto.h
|
||||
|
||||
/usr/include/c++/4.0.0/iostream:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++config.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/os_defines.h:
|
||||
|
||||
/usr/include/c++/4.0.0/ostream:
|
||||
|
||||
/usr/include/c++/4.0.0/ios:
|
||||
|
||||
/usr/include/c++/4.0.0/iosfwd:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++locale.h:
|
||||
|
||||
/usr/include/c++/4.0.0/clocale:
|
||||
|
||||
/usr/include/locale.h:
|
||||
|
||||
/usr/include/_locale.h:
|
||||
|
||||
/usr/include/sys/cdefs.h:
|
||||
|
||||
/usr/include/_types.h:
|
||||
|
||||
/usr/include/sys/_types.h:
|
||||
|
||||
/usr/include/machine/_types.h:
|
||||
|
||||
/usr/include/i386/_types.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cstring:
|
||||
|
||||
/usr/include/c++/4.0.0/cstddef:
|
||||
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stddef.h:
|
||||
|
||||
/usr/include/string.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cstdio:
|
||||
|
||||
/usr/include/stdio.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++io.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr-default.h:
|
||||
|
||||
/usr/include/pthread.h:
|
||||
|
||||
/usr/include/pthread_impl.h:
|
||||
|
||||
/usr/include/sched.h:
|
||||
|
||||
/usr/include/time.h:
|
||||
|
||||
/usr/include/_structs.h:
|
||||
|
||||
/usr/include/sys/_structs.h:
|
||||
|
||||
/usr/include/unistd.h:
|
||||
|
||||
/usr/include/sys/unistd.h:
|
||||
|
||||
/usr/include/sys/select.h:
|
||||
|
||||
/usr/include/sys/appleapiopts.h:
|
||||
|
||||
/usr/include/sys/_select.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cctype:
|
||||
|
||||
/usr/include/ctype.h:
|
||||
|
||||
/usr/include/runetype.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stringfwd.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/postypes.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cwchar:
|
||||
|
||||
/usr/include/c++/4.0.0/ctime:
|
||||
|
||||
/usr/include/wchar.h:
|
||||
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdarg.h:
|
||||
|
||||
/usr/include/_wctype.h:
|
||||
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdint.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/functexcept.h:
|
||||
|
||||
/usr/include/c++/4.0.0/exception_defines.h:
|
||||
|
||||
/usr/include/c++/4.0.0/exception:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/char_traits.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_algobase.h:
|
||||
|
||||
/usr/include/c++/4.0.0/climits:
|
||||
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/limits.h:
|
||||
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/syslimits.h:
|
||||
|
||||
/usr/include/limits.h:
|
||||
|
||||
/usr/include/machine/limits.h:
|
||||
|
||||
/usr/include/i386/limits.h:
|
||||
|
||||
/usr/include/i386/_limits.h:
|
||||
|
||||
/usr/include/sys/syslimits.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cstdlib:
|
||||
|
||||
/usr/include/stdlib.h:
|
||||
|
||||
/usr/include/available.h:
|
||||
|
||||
/usr/include/sys/wait.h:
|
||||
|
||||
/usr/include/sys/signal.h:
|
||||
|
||||
/usr/include/machine/signal.h:
|
||||
|
||||
/usr/include/i386/signal.h:
|
||||
|
||||
/usr/include/i386/_structs.h:
|
||||
|
||||
/usr/include/machine/_structs.h:
|
||||
|
||||
/usr/include/mach/i386/_structs.h:
|
||||
|
||||
/usr/include/sys/resource.h:
|
||||
|
||||
/usr/include/machine/endian.h:
|
||||
|
||||
/usr/include/i386/endian.h:
|
||||
|
||||
/usr/include/sys/_endian.h:
|
||||
|
||||
/usr/include/libkern/_OSByteOrder.h:
|
||||
|
||||
/usr/include/libkern/i386/_OSByteOrder.h:
|
||||
|
||||
/usr/include/alloca.h:
|
||||
|
||||
/usr/include/machine/types.h:
|
||||
|
||||
/usr/include/i386/types.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_pair.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/cpp_type_traits.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator_base_types.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator_base_funcs.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/concept_check.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator.h:
|
||||
|
||||
/usr/include/c++/4.0.0/debug/debug.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cassert:
|
||||
|
||||
/usr/include/assert.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/localefwd.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/ios_base.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/atomicity.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/atomic_word.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/locale_classes.h:
|
||||
|
||||
/usr/include/c++/4.0.0/string:
|
||||
|
||||
/usr/include/c++/4.0.0/memory:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/allocator.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++allocator.h:
|
||||
|
||||
/usr/include/c++/4.0.0/ext/new_allocator.h:
|
||||
|
||||
/usr/include/c++/4.0.0/new:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_construct.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_uninitialized.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_raw_storage_iter.h:
|
||||
|
||||
/usr/include/c++/4.0.0/limits:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_function.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/basic_string.h:
|
||||
|
||||
/usr/include/c++/4.0.0/algorithm:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_algo.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_heap.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_tempbuf.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/basic_string.tcc:
|
||||
|
||||
/usr/include/c++/4.0.0/streambuf:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/streambuf.tcc:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/basic_ios.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/streambuf_iterator.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/locale_facets.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cwctype:
|
||||
|
||||
/usr/include/wctype.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_base.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_inline.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/codecvt.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/time_members.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/messages_members.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/basic_ios.tcc:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/ostream.tcc:
|
||||
|
||||
/usr/include/c++/4.0.0/locale:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/locale_facets.tcc:
|
||||
|
||||
/usr/include/c++/4.0.0/typeinfo:
|
||||
|
||||
/usr/include/c++/4.0.0/istream:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/istream.tcc:
|
||||
|
||||
task.h:
|
||||
|
||||
/usr/include/c++/4.0.0/vector:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_vector.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_bvector.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/vector.tcc:
|
||||
|
||||
/usr/include/c++/4.0.0/map:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_tree.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_map.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_multimap.h:
|
||||
|
||||
/usr/include/sys/types.h:
|
||||
|
||||
Config.h:
|
||||
|
||||
Table.h:
|
||||
|
||||
color.h:
|
||||
|
||||
Grid.h:
|
||||
|
||||
color.h:
|
||||
|
||||
TDB.h:
|
||||
|
||||
T.h:
|
||||
|
||||
../auto.h:
|
||||
406
src/.deps/TDB.Po
406
src/.deps/TDB.Po
@@ -1,406 +0,0 @@
|
||||
TDB.o TDB.o: TDB.cpp /usr/include/c++/4.0.0/iostream \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++config.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/os_defines.h \
|
||||
/usr/include/c++/4.0.0/ostream /usr/include/c++/4.0.0/ios \
|
||||
/usr/include/c++/4.0.0/iosfwd \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++locale.h \
|
||||
/usr/include/c++/4.0.0/clocale /usr/include/locale.h \
|
||||
/usr/include/_locale.h /usr/include/sys/cdefs.h /usr/include/_types.h \
|
||||
/usr/include/sys/_types.h /usr/include/machine/_types.h \
|
||||
/usr/include/i386/_types.h /usr/include/c++/4.0.0/cstring \
|
||||
/usr/include/c++/4.0.0/cstddef \
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stddef.h \
|
||||
/usr/include/string.h /usr/include/c++/4.0.0/cstdio \
|
||||
/usr/include/stdio.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++io.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr-default.h \
|
||||
/usr/include/pthread.h /usr/include/pthread_impl.h /usr/include/sched.h \
|
||||
/usr/include/time.h /usr/include/_structs.h /usr/include/sys/_structs.h \
|
||||
/usr/include/unistd.h /usr/include/sys/unistd.h \
|
||||
/usr/include/sys/select.h /usr/include/sys/appleapiopts.h \
|
||||
/usr/include/sys/_select.h /usr/include/c++/4.0.0/cctype \
|
||||
/usr/include/ctype.h /usr/include/runetype.h \
|
||||
/usr/include/c++/4.0.0/bits/stringfwd.h \
|
||||
/usr/include/c++/4.0.0/bits/postypes.h /usr/include/c++/4.0.0/cwchar \
|
||||
/usr/include/c++/4.0.0/ctime /usr/include/wchar.h \
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdarg.h \
|
||||
/usr/include/_wctype.h \
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdint.h \
|
||||
/usr/include/c++/4.0.0/bits/functexcept.h \
|
||||
/usr/include/c++/4.0.0/exception_defines.h \
|
||||
/usr/include/c++/4.0.0/exception \
|
||||
/usr/include/c++/4.0.0/bits/char_traits.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_algobase.h \
|
||||
/usr/include/c++/4.0.0/climits \
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/limits.h \
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/syslimits.h \
|
||||
/usr/include/limits.h /usr/include/machine/limits.h \
|
||||
/usr/include/i386/limits.h /usr/include/i386/_limits.h \
|
||||
/usr/include/sys/syslimits.h /usr/include/c++/4.0.0/cstdlib \
|
||||
/usr/include/stdlib.h /usr/include/available.h /usr/include/sys/wait.h \
|
||||
/usr/include/sys/signal.h /usr/include/machine/signal.h \
|
||||
/usr/include/i386/signal.h /usr/include/i386/_structs.h \
|
||||
/usr/include/machine/_structs.h /usr/include/mach/i386/_structs.h \
|
||||
/usr/include/sys/resource.h /usr/include/machine/endian.h \
|
||||
/usr/include/i386/endian.h /usr/include/sys/_endian.h \
|
||||
/usr/include/libkern/_OSByteOrder.h \
|
||||
/usr/include/libkern/i386/_OSByteOrder.h /usr/include/alloca.h \
|
||||
/usr/include/machine/types.h /usr/include/i386/types.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_pair.h \
|
||||
/usr/include/c++/4.0.0/bits/cpp_type_traits.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator_base_types.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator_base_funcs.h \
|
||||
/usr/include/c++/4.0.0/bits/concept_check.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator.h \
|
||||
/usr/include/c++/4.0.0/debug/debug.h /usr/include/c++/4.0.0/cassert \
|
||||
/usr/include/assert.h /usr/include/c++/4.0.0/bits/localefwd.h \
|
||||
/usr/include/c++/4.0.0/bits/ios_base.h \
|
||||
/usr/include/c++/4.0.0/bits/atomicity.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/atomic_word.h \
|
||||
/usr/include/c++/4.0.0/bits/locale_classes.h \
|
||||
/usr/include/c++/4.0.0/string /usr/include/c++/4.0.0/memory \
|
||||
/usr/include/c++/4.0.0/bits/allocator.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++allocator.h \
|
||||
/usr/include/c++/4.0.0/ext/new_allocator.h /usr/include/c++/4.0.0/new \
|
||||
/usr/include/c++/4.0.0/bits/stl_construct.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_uninitialized.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_raw_storage_iter.h \
|
||||
/usr/include/c++/4.0.0/limits \
|
||||
/usr/include/c++/4.0.0/bits/stl_function.h \
|
||||
/usr/include/c++/4.0.0/bits/basic_string.h \
|
||||
/usr/include/c++/4.0.0/algorithm /usr/include/c++/4.0.0/bits/stl_algo.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_heap.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_tempbuf.h \
|
||||
/usr/include/c++/4.0.0/bits/basic_string.tcc \
|
||||
/usr/include/c++/4.0.0/streambuf \
|
||||
/usr/include/c++/4.0.0/bits/streambuf.tcc \
|
||||
/usr/include/c++/4.0.0/bits/basic_ios.h \
|
||||
/usr/include/c++/4.0.0/bits/streambuf_iterator.h \
|
||||
/usr/include/c++/4.0.0/bits/locale_facets.h \
|
||||
/usr/include/c++/4.0.0/cwctype /usr/include/wctype.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_base.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_inline.h \
|
||||
/usr/include/c++/4.0.0/bits/codecvt.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/time_members.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/messages_members.h \
|
||||
/usr/include/c++/4.0.0/bits/basic_ios.tcc \
|
||||
/usr/include/c++/4.0.0/bits/ostream.tcc /usr/include/c++/4.0.0/locale \
|
||||
/usr/include/c++/4.0.0/bits/locale_facets.tcc \
|
||||
/usr/include/c++/4.0.0/typeinfo /usr/include/c++/4.0.0/istream \
|
||||
/usr/include/c++/4.0.0/bits/istream.tcc /usr/include/c++/4.0.0/fstream \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/basic_file.h \
|
||||
/usr/include/c++/4.0.0/bits/fstream.tcc /usr/include/sys/file.h \
|
||||
/usr/include/sys/types.h /usr/include/sys/fcntl.h \
|
||||
/usr/include/sys/queue.h task.h /usr/include/c++/4.0.0/vector \
|
||||
/usr/include/c++/4.0.0/bits/stl_vector.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_bvector.h \
|
||||
/usr/include/c++/4.0.0/bits/vector.tcc /usr/include/c++/4.0.0/map \
|
||||
/usr/include/c++/4.0.0/bits/stl_tree.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_map.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_multimap.h Config.h Table.h color.h \
|
||||
Grid.h color.h TDB.h T.h ../auto.h
|
||||
|
||||
/usr/include/c++/4.0.0/iostream:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++config.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/os_defines.h:
|
||||
|
||||
/usr/include/c++/4.0.0/ostream:
|
||||
|
||||
/usr/include/c++/4.0.0/ios:
|
||||
|
||||
/usr/include/c++/4.0.0/iosfwd:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++locale.h:
|
||||
|
||||
/usr/include/c++/4.0.0/clocale:
|
||||
|
||||
/usr/include/locale.h:
|
||||
|
||||
/usr/include/_locale.h:
|
||||
|
||||
/usr/include/sys/cdefs.h:
|
||||
|
||||
/usr/include/_types.h:
|
||||
|
||||
/usr/include/sys/_types.h:
|
||||
|
||||
/usr/include/machine/_types.h:
|
||||
|
||||
/usr/include/i386/_types.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cstring:
|
||||
|
||||
/usr/include/c++/4.0.0/cstddef:
|
||||
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stddef.h:
|
||||
|
||||
/usr/include/string.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cstdio:
|
||||
|
||||
/usr/include/stdio.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++io.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr-default.h:
|
||||
|
||||
/usr/include/pthread.h:
|
||||
|
||||
/usr/include/pthread_impl.h:
|
||||
|
||||
/usr/include/sched.h:
|
||||
|
||||
/usr/include/time.h:
|
||||
|
||||
/usr/include/_structs.h:
|
||||
|
||||
/usr/include/sys/_structs.h:
|
||||
|
||||
/usr/include/unistd.h:
|
||||
|
||||
/usr/include/sys/unistd.h:
|
||||
|
||||
/usr/include/sys/select.h:
|
||||
|
||||
/usr/include/sys/appleapiopts.h:
|
||||
|
||||
/usr/include/sys/_select.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cctype:
|
||||
|
||||
/usr/include/ctype.h:
|
||||
|
||||
/usr/include/runetype.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stringfwd.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/postypes.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cwchar:
|
||||
|
||||
/usr/include/c++/4.0.0/ctime:
|
||||
|
||||
/usr/include/wchar.h:
|
||||
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdarg.h:
|
||||
|
||||
/usr/include/_wctype.h:
|
||||
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdint.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/functexcept.h:
|
||||
|
||||
/usr/include/c++/4.0.0/exception_defines.h:
|
||||
|
||||
/usr/include/c++/4.0.0/exception:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/char_traits.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_algobase.h:
|
||||
|
||||
/usr/include/c++/4.0.0/climits:
|
||||
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/limits.h:
|
||||
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/syslimits.h:
|
||||
|
||||
/usr/include/limits.h:
|
||||
|
||||
/usr/include/machine/limits.h:
|
||||
|
||||
/usr/include/i386/limits.h:
|
||||
|
||||
/usr/include/i386/_limits.h:
|
||||
|
||||
/usr/include/sys/syslimits.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cstdlib:
|
||||
|
||||
/usr/include/stdlib.h:
|
||||
|
||||
/usr/include/available.h:
|
||||
|
||||
/usr/include/sys/wait.h:
|
||||
|
||||
/usr/include/sys/signal.h:
|
||||
|
||||
/usr/include/machine/signal.h:
|
||||
|
||||
/usr/include/i386/signal.h:
|
||||
|
||||
/usr/include/i386/_structs.h:
|
||||
|
||||
/usr/include/machine/_structs.h:
|
||||
|
||||
/usr/include/mach/i386/_structs.h:
|
||||
|
||||
/usr/include/sys/resource.h:
|
||||
|
||||
/usr/include/machine/endian.h:
|
||||
|
||||
/usr/include/i386/endian.h:
|
||||
|
||||
/usr/include/sys/_endian.h:
|
||||
|
||||
/usr/include/libkern/_OSByteOrder.h:
|
||||
|
||||
/usr/include/libkern/i386/_OSByteOrder.h:
|
||||
|
||||
/usr/include/alloca.h:
|
||||
|
||||
/usr/include/machine/types.h:
|
||||
|
||||
/usr/include/i386/types.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_pair.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/cpp_type_traits.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator_base_types.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator_base_funcs.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/concept_check.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator.h:
|
||||
|
||||
/usr/include/c++/4.0.0/debug/debug.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cassert:
|
||||
|
||||
/usr/include/assert.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/localefwd.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/ios_base.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/atomicity.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/atomic_word.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/locale_classes.h:
|
||||
|
||||
/usr/include/c++/4.0.0/string:
|
||||
|
||||
/usr/include/c++/4.0.0/memory:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/allocator.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++allocator.h:
|
||||
|
||||
/usr/include/c++/4.0.0/ext/new_allocator.h:
|
||||
|
||||
/usr/include/c++/4.0.0/new:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_construct.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_uninitialized.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_raw_storage_iter.h:
|
||||
|
||||
/usr/include/c++/4.0.0/limits:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_function.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/basic_string.h:
|
||||
|
||||
/usr/include/c++/4.0.0/algorithm:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_algo.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_heap.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_tempbuf.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/basic_string.tcc:
|
||||
|
||||
/usr/include/c++/4.0.0/streambuf:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/streambuf.tcc:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/basic_ios.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/streambuf_iterator.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/locale_facets.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cwctype:
|
||||
|
||||
/usr/include/wctype.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_base.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_inline.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/codecvt.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/time_members.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/messages_members.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/basic_ios.tcc:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/ostream.tcc:
|
||||
|
||||
/usr/include/c++/4.0.0/locale:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/locale_facets.tcc:
|
||||
|
||||
/usr/include/c++/4.0.0/typeinfo:
|
||||
|
||||
/usr/include/c++/4.0.0/istream:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/istream.tcc:
|
||||
|
||||
/usr/include/c++/4.0.0/fstream:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/basic_file.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/fstream.tcc:
|
||||
|
||||
/usr/include/sys/file.h:
|
||||
|
||||
/usr/include/sys/types.h:
|
||||
|
||||
/usr/include/sys/fcntl.h:
|
||||
|
||||
/usr/include/sys/queue.h:
|
||||
|
||||
task.h:
|
||||
|
||||
/usr/include/c++/4.0.0/vector:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_vector.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_bvector.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/vector.tcc:
|
||||
|
||||
/usr/include/c++/4.0.0/map:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_tree.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_map.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_multimap.h:
|
||||
|
||||
Config.h:
|
||||
|
||||
Table.h:
|
||||
|
||||
color.h:
|
||||
|
||||
Grid.h:
|
||||
|
||||
color.h:
|
||||
|
||||
TDB.h:
|
||||
|
||||
T.h:
|
||||
|
||||
../auto.h:
|
||||
@@ -1,397 +0,0 @@
|
||||
Table.o Table.o: Table.cpp /usr/include/c++/4.0.0/iostream \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++config.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/os_defines.h \
|
||||
/usr/include/c++/4.0.0/ostream /usr/include/c++/4.0.0/ios \
|
||||
/usr/include/c++/4.0.0/iosfwd \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++locale.h \
|
||||
/usr/include/c++/4.0.0/clocale /usr/include/locale.h \
|
||||
/usr/include/_locale.h /usr/include/sys/cdefs.h /usr/include/_types.h \
|
||||
/usr/include/sys/_types.h /usr/include/machine/_types.h \
|
||||
/usr/include/i386/_types.h /usr/include/c++/4.0.0/cstring \
|
||||
/usr/include/c++/4.0.0/cstddef \
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stddef.h \
|
||||
/usr/include/string.h /usr/include/c++/4.0.0/cstdio \
|
||||
/usr/include/stdio.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++io.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr-default.h \
|
||||
/usr/include/pthread.h /usr/include/pthread_impl.h /usr/include/sched.h \
|
||||
/usr/include/time.h /usr/include/_structs.h /usr/include/sys/_structs.h \
|
||||
/usr/include/unistd.h /usr/include/sys/unistd.h \
|
||||
/usr/include/sys/select.h /usr/include/sys/appleapiopts.h \
|
||||
/usr/include/sys/_select.h /usr/include/c++/4.0.0/cctype \
|
||||
/usr/include/ctype.h /usr/include/runetype.h \
|
||||
/usr/include/c++/4.0.0/bits/stringfwd.h \
|
||||
/usr/include/c++/4.0.0/bits/postypes.h /usr/include/c++/4.0.0/cwchar \
|
||||
/usr/include/c++/4.0.0/ctime /usr/include/wchar.h \
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdarg.h \
|
||||
/usr/include/_wctype.h \
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdint.h \
|
||||
/usr/include/c++/4.0.0/bits/functexcept.h \
|
||||
/usr/include/c++/4.0.0/exception_defines.h \
|
||||
/usr/include/c++/4.0.0/exception \
|
||||
/usr/include/c++/4.0.0/bits/char_traits.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_algobase.h \
|
||||
/usr/include/c++/4.0.0/climits \
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/limits.h \
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/syslimits.h \
|
||||
/usr/include/limits.h /usr/include/machine/limits.h \
|
||||
/usr/include/i386/limits.h /usr/include/i386/_limits.h \
|
||||
/usr/include/sys/syslimits.h /usr/include/c++/4.0.0/cstdlib \
|
||||
/usr/include/stdlib.h /usr/include/available.h /usr/include/sys/wait.h \
|
||||
/usr/include/sys/signal.h /usr/include/machine/signal.h \
|
||||
/usr/include/i386/signal.h /usr/include/i386/_structs.h \
|
||||
/usr/include/machine/_structs.h /usr/include/mach/i386/_structs.h \
|
||||
/usr/include/sys/resource.h /usr/include/machine/endian.h \
|
||||
/usr/include/i386/endian.h /usr/include/sys/_endian.h \
|
||||
/usr/include/libkern/_OSByteOrder.h \
|
||||
/usr/include/libkern/i386/_OSByteOrder.h /usr/include/alloca.h \
|
||||
/usr/include/machine/types.h /usr/include/i386/types.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_pair.h \
|
||||
/usr/include/c++/4.0.0/bits/cpp_type_traits.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator_base_types.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator_base_funcs.h \
|
||||
/usr/include/c++/4.0.0/bits/concept_check.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator.h \
|
||||
/usr/include/c++/4.0.0/debug/debug.h /usr/include/c++/4.0.0/cassert \
|
||||
/usr/include/assert.h /usr/include/c++/4.0.0/bits/localefwd.h \
|
||||
/usr/include/c++/4.0.0/bits/ios_base.h \
|
||||
/usr/include/c++/4.0.0/bits/atomicity.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/atomic_word.h \
|
||||
/usr/include/c++/4.0.0/bits/locale_classes.h \
|
||||
/usr/include/c++/4.0.0/string /usr/include/c++/4.0.0/memory \
|
||||
/usr/include/c++/4.0.0/bits/allocator.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++allocator.h \
|
||||
/usr/include/c++/4.0.0/ext/new_allocator.h /usr/include/c++/4.0.0/new \
|
||||
/usr/include/c++/4.0.0/bits/stl_construct.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_uninitialized.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_raw_storage_iter.h \
|
||||
/usr/include/c++/4.0.0/limits \
|
||||
/usr/include/c++/4.0.0/bits/stl_function.h \
|
||||
/usr/include/c++/4.0.0/bits/basic_string.h \
|
||||
/usr/include/c++/4.0.0/algorithm /usr/include/c++/4.0.0/bits/stl_algo.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_heap.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_tempbuf.h \
|
||||
/usr/include/c++/4.0.0/bits/basic_string.tcc \
|
||||
/usr/include/c++/4.0.0/streambuf \
|
||||
/usr/include/c++/4.0.0/bits/streambuf.tcc \
|
||||
/usr/include/c++/4.0.0/bits/basic_ios.h \
|
||||
/usr/include/c++/4.0.0/bits/streambuf_iterator.h \
|
||||
/usr/include/c++/4.0.0/bits/locale_facets.h \
|
||||
/usr/include/c++/4.0.0/cwctype /usr/include/wctype.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_base.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_inline.h \
|
||||
/usr/include/c++/4.0.0/bits/codecvt.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/time_members.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/messages_members.h \
|
||||
/usr/include/c++/4.0.0/bits/basic_ios.tcc \
|
||||
/usr/include/c++/4.0.0/bits/ostream.tcc /usr/include/c++/4.0.0/locale \
|
||||
/usr/include/c++/4.0.0/bits/locale_facets.tcc \
|
||||
/usr/include/c++/4.0.0/typeinfo /usr/include/c++/4.0.0/istream \
|
||||
/usr/include/c++/4.0.0/bits/istream.tcc Table.h \
|
||||
/usr/include/c++/4.0.0/map /usr/include/c++/4.0.0/bits/stl_tree.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_map.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_multimap.h \
|
||||
/usr/include/c++/4.0.0/vector /usr/include/c++/4.0.0/bits/stl_vector.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_bvector.h \
|
||||
/usr/include/c++/4.0.0/bits/vector.tcc color.h Grid.h Date.h task.h \
|
||||
/usr/include/sys/types.h Config.h Table.h color.h TDB.h T.h T.h \
|
||||
../auto.h
|
||||
|
||||
/usr/include/c++/4.0.0/iostream:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++config.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/os_defines.h:
|
||||
|
||||
/usr/include/c++/4.0.0/ostream:
|
||||
|
||||
/usr/include/c++/4.0.0/ios:
|
||||
|
||||
/usr/include/c++/4.0.0/iosfwd:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++locale.h:
|
||||
|
||||
/usr/include/c++/4.0.0/clocale:
|
||||
|
||||
/usr/include/locale.h:
|
||||
|
||||
/usr/include/_locale.h:
|
||||
|
||||
/usr/include/sys/cdefs.h:
|
||||
|
||||
/usr/include/_types.h:
|
||||
|
||||
/usr/include/sys/_types.h:
|
||||
|
||||
/usr/include/machine/_types.h:
|
||||
|
||||
/usr/include/i386/_types.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cstring:
|
||||
|
||||
/usr/include/c++/4.0.0/cstddef:
|
||||
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stddef.h:
|
||||
|
||||
/usr/include/string.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cstdio:
|
||||
|
||||
/usr/include/stdio.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++io.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr-default.h:
|
||||
|
||||
/usr/include/pthread.h:
|
||||
|
||||
/usr/include/pthread_impl.h:
|
||||
|
||||
/usr/include/sched.h:
|
||||
|
||||
/usr/include/time.h:
|
||||
|
||||
/usr/include/_structs.h:
|
||||
|
||||
/usr/include/sys/_structs.h:
|
||||
|
||||
/usr/include/unistd.h:
|
||||
|
||||
/usr/include/sys/unistd.h:
|
||||
|
||||
/usr/include/sys/select.h:
|
||||
|
||||
/usr/include/sys/appleapiopts.h:
|
||||
|
||||
/usr/include/sys/_select.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cctype:
|
||||
|
||||
/usr/include/ctype.h:
|
||||
|
||||
/usr/include/runetype.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stringfwd.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/postypes.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cwchar:
|
||||
|
||||
/usr/include/c++/4.0.0/ctime:
|
||||
|
||||
/usr/include/wchar.h:
|
||||
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdarg.h:
|
||||
|
||||
/usr/include/_wctype.h:
|
||||
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdint.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/functexcept.h:
|
||||
|
||||
/usr/include/c++/4.0.0/exception_defines.h:
|
||||
|
||||
/usr/include/c++/4.0.0/exception:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/char_traits.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_algobase.h:
|
||||
|
||||
/usr/include/c++/4.0.0/climits:
|
||||
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/limits.h:
|
||||
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/syslimits.h:
|
||||
|
||||
/usr/include/limits.h:
|
||||
|
||||
/usr/include/machine/limits.h:
|
||||
|
||||
/usr/include/i386/limits.h:
|
||||
|
||||
/usr/include/i386/_limits.h:
|
||||
|
||||
/usr/include/sys/syslimits.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cstdlib:
|
||||
|
||||
/usr/include/stdlib.h:
|
||||
|
||||
/usr/include/available.h:
|
||||
|
||||
/usr/include/sys/wait.h:
|
||||
|
||||
/usr/include/sys/signal.h:
|
||||
|
||||
/usr/include/machine/signal.h:
|
||||
|
||||
/usr/include/i386/signal.h:
|
||||
|
||||
/usr/include/i386/_structs.h:
|
||||
|
||||
/usr/include/machine/_structs.h:
|
||||
|
||||
/usr/include/mach/i386/_structs.h:
|
||||
|
||||
/usr/include/sys/resource.h:
|
||||
|
||||
/usr/include/machine/endian.h:
|
||||
|
||||
/usr/include/i386/endian.h:
|
||||
|
||||
/usr/include/sys/_endian.h:
|
||||
|
||||
/usr/include/libkern/_OSByteOrder.h:
|
||||
|
||||
/usr/include/libkern/i386/_OSByteOrder.h:
|
||||
|
||||
/usr/include/alloca.h:
|
||||
|
||||
/usr/include/machine/types.h:
|
||||
|
||||
/usr/include/i386/types.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_pair.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/cpp_type_traits.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator_base_types.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator_base_funcs.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/concept_check.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator.h:
|
||||
|
||||
/usr/include/c++/4.0.0/debug/debug.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cassert:
|
||||
|
||||
/usr/include/assert.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/localefwd.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/ios_base.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/atomicity.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/atomic_word.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/locale_classes.h:
|
||||
|
||||
/usr/include/c++/4.0.0/string:
|
||||
|
||||
/usr/include/c++/4.0.0/memory:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/allocator.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++allocator.h:
|
||||
|
||||
/usr/include/c++/4.0.0/ext/new_allocator.h:
|
||||
|
||||
/usr/include/c++/4.0.0/new:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_construct.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_uninitialized.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_raw_storage_iter.h:
|
||||
|
||||
/usr/include/c++/4.0.0/limits:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_function.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/basic_string.h:
|
||||
|
||||
/usr/include/c++/4.0.0/algorithm:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_algo.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_heap.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_tempbuf.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/basic_string.tcc:
|
||||
|
||||
/usr/include/c++/4.0.0/streambuf:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/streambuf.tcc:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/basic_ios.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/streambuf_iterator.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/locale_facets.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cwctype:
|
||||
|
||||
/usr/include/wctype.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_base.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_inline.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/codecvt.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/time_members.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/messages_members.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/basic_ios.tcc:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/ostream.tcc:
|
||||
|
||||
/usr/include/c++/4.0.0/locale:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/locale_facets.tcc:
|
||||
|
||||
/usr/include/c++/4.0.0/typeinfo:
|
||||
|
||||
/usr/include/c++/4.0.0/istream:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/istream.tcc:
|
||||
|
||||
Table.h:
|
||||
|
||||
/usr/include/c++/4.0.0/map:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_tree.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_map.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_multimap.h:
|
||||
|
||||
/usr/include/c++/4.0.0/vector:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_vector.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_bvector.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/vector.tcc:
|
||||
|
||||
color.h:
|
||||
|
||||
Grid.h:
|
||||
|
||||
Date.h:
|
||||
|
||||
task.h:
|
||||
|
||||
/usr/include/sys/types.h:
|
||||
|
||||
Config.h:
|
||||
|
||||
Table.h:
|
||||
|
||||
color.h:
|
||||
|
||||
TDB.h:
|
||||
|
||||
T.h:
|
||||
|
||||
T.h:
|
||||
|
||||
../auto.h:
|
||||
@@ -1,278 +0,0 @@
|
||||
color.o color.o: color.cpp /usr/include/c++/4.0.0/string \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++config.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/os_defines.h \
|
||||
/usr/include/c++/4.0.0/bits/stringfwd.h \
|
||||
/usr/include/c++/4.0.0/bits/char_traits.h \
|
||||
/usr/include/c++/4.0.0/cstring /usr/include/c++/4.0.0/cstddef \
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stddef.h \
|
||||
/usr/include/string.h /usr/include/_types.h /usr/include/sys/_types.h \
|
||||
/usr/include/sys/cdefs.h /usr/include/machine/_types.h \
|
||||
/usr/include/i386/_types.h /usr/include/c++/4.0.0/bits/stl_algobase.h \
|
||||
/usr/include/c++/4.0.0/climits \
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/limits.h \
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/syslimits.h \
|
||||
/usr/include/limits.h /usr/include/machine/limits.h \
|
||||
/usr/include/i386/limits.h /usr/include/i386/_limits.h \
|
||||
/usr/include/sys/syslimits.h /usr/include/c++/4.0.0/cstdlib \
|
||||
/usr/include/stdlib.h /usr/include/available.h /usr/include/sys/wait.h \
|
||||
/usr/include/sys/signal.h /usr/include/sys/appleapiopts.h \
|
||||
/usr/include/machine/signal.h /usr/include/i386/signal.h \
|
||||
/usr/include/i386/_structs.h /usr/include/sys/_structs.h \
|
||||
/usr/include/machine/_structs.h /usr/include/mach/i386/_structs.h \
|
||||
/usr/include/sys/resource.h /usr/include/machine/endian.h \
|
||||
/usr/include/i386/endian.h /usr/include/sys/_endian.h \
|
||||
/usr/include/libkern/_OSByteOrder.h \
|
||||
/usr/include/libkern/i386/_OSByteOrder.h /usr/include/alloca.h \
|
||||
/usr/include/machine/types.h /usr/include/i386/types.h \
|
||||
/usr/include/c++/4.0.0/iosfwd \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++locale.h \
|
||||
/usr/include/c++/4.0.0/clocale /usr/include/locale.h \
|
||||
/usr/include/_locale.h /usr/include/c++/4.0.0/cstdio \
|
||||
/usr/include/stdio.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++io.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr-default.h \
|
||||
/usr/include/pthread.h /usr/include/pthread_impl.h /usr/include/sched.h \
|
||||
/usr/include/time.h /usr/include/_structs.h /usr/include/unistd.h \
|
||||
/usr/include/sys/unistd.h /usr/include/sys/select.h \
|
||||
/usr/include/sys/_select.h /usr/include/c++/4.0.0/cctype \
|
||||
/usr/include/ctype.h /usr/include/runetype.h \
|
||||
/usr/include/c++/4.0.0/bits/postypes.h /usr/include/c++/4.0.0/cwchar \
|
||||
/usr/include/c++/4.0.0/ctime /usr/include/wchar.h \
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdarg.h \
|
||||
/usr/include/_wctype.h \
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdint.h \
|
||||
/usr/include/c++/4.0.0/bits/functexcept.h \
|
||||
/usr/include/c++/4.0.0/exception_defines.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_pair.h \
|
||||
/usr/include/c++/4.0.0/bits/cpp_type_traits.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator_base_types.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator_base_funcs.h \
|
||||
/usr/include/c++/4.0.0/bits/concept_check.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator.h \
|
||||
/usr/include/c++/4.0.0/debug/debug.h /usr/include/c++/4.0.0/cassert \
|
||||
/usr/include/assert.h /usr/include/c++/4.0.0/memory \
|
||||
/usr/include/c++/4.0.0/bits/allocator.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++allocator.h \
|
||||
/usr/include/c++/4.0.0/ext/new_allocator.h /usr/include/c++/4.0.0/new \
|
||||
/usr/include/c++/4.0.0/exception \
|
||||
/usr/include/c++/4.0.0/bits/stl_construct.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_uninitialized.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_raw_storage_iter.h \
|
||||
/usr/include/c++/4.0.0/limits \
|
||||
/usr/include/c++/4.0.0/bits/stl_function.h \
|
||||
/usr/include/c++/4.0.0/bits/basic_string.h \
|
||||
/usr/include/c++/4.0.0/bits/atomicity.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/atomic_word.h \
|
||||
/usr/include/c++/4.0.0/algorithm /usr/include/c++/4.0.0/bits/stl_algo.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_heap.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_tempbuf.h \
|
||||
/usr/include/c++/4.0.0/bits/basic_string.tcc color.h
|
||||
|
||||
/usr/include/c++/4.0.0/string:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++config.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/os_defines.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stringfwd.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/char_traits.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cstring:
|
||||
|
||||
/usr/include/c++/4.0.0/cstddef:
|
||||
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stddef.h:
|
||||
|
||||
/usr/include/string.h:
|
||||
|
||||
/usr/include/_types.h:
|
||||
|
||||
/usr/include/sys/_types.h:
|
||||
|
||||
/usr/include/sys/cdefs.h:
|
||||
|
||||
/usr/include/machine/_types.h:
|
||||
|
||||
/usr/include/i386/_types.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_algobase.h:
|
||||
|
||||
/usr/include/c++/4.0.0/climits:
|
||||
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/limits.h:
|
||||
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/syslimits.h:
|
||||
|
||||
/usr/include/limits.h:
|
||||
|
||||
/usr/include/machine/limits.h:
|
||||
|
||||
/usr/include/i386/limits.h:
|
||||
|
||||
/usr/include/i386/_limits.h:
|
||||
|
||||
/usr/include/sys/syslimits.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cstdlib:
|
||||
|
||||
/usr/include/stdlib.h:
|
||||
|
||||
/usr/include/available.h:
|
||||
|
||||
/usr/include/sys/wait.h:
|
||||
|
||||
/usr/include/sys/signal.h:
|
||||
|
||||
/usr/include/sys/appleapiopts.h:
|
||||
|
||||
/usr/include/machine/signal.h:
|
||||
|
||||
/usr/include/i386/signal.h:
|
||||
|
||||
/usr/include/i386/_structs.h:
|
||||
|
||||
/usr/include/sys/_structs.h:
|
||||
|
||||
/usr/include/machine/_structs.h:
|
||||
|
||||
/usr/include/mach/i386/_structs.h:
|
||||
|
||||
/usr/include/sys/resource.h:
|
||||
|
||||
/usr/include/machine/endian.h:
|
||||
|
||||
/usr/include/i386/endian.h:
|
||||
|
||||
/usr/include/sys/_endian.h:
|
||||
|
||||
/usr/include/libkern/_OSByteOrder.h:
|
||||
|
||||
/usr/include/libkern/i386/_OSByteOrder.h:
|
||||
|
||||
/usr/include/alloca.h:
|
||||
|
||||
/usr/include/machine/types.h:
|
||||
|
||||
/usr/include/i386/types.h:
|
||||
|
||||
/usr/include/c++/4.0.0/iosfwd:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++locale.h:
|
||||
|
||||
/usr/include/c++/4.0.0/clocale:
|
||||
|
||||
/usr/include/locale.h:
|
||||
|
||||
/usr/include/_locale.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cstdio:
|
||||
|
||||
/usr/include/stdio.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++io.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr-default.h:
|
||||
|
||||
/usr/include/pthread.h:
|
||||
|
||||
/usr/include/pthread_impl.h:
|
||||
|
||||
/usr/include/sched.h:
|
||||
|
||||
/usr/include/time.h:
|
||||
|
||||
/usr/include/_structs.h:
|
||||
|
||||
/usr/include/unistd.h:
|
||||
|
||||
/usr/include/sys/unistd.h:
|
||||
|
||||
/usr/include/sys/select.h:
|
||||
|
||||
/usr/include/sys/_select.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cctype:
|
||||
|
||||
/usr/include/ctype.h:
|
||||
|
||||
/usr/include/runetype.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/postypes.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cwchar:
|
||||
|
||||
/usr/include/c++/4.0.0/ctime:
|
||||
|
||||
/usr/include/wchar.h:
|
||||
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdarg.h:
|
||||
|
||||
/usr/include/_wctype.h:
|
||||
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdint.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/functexcept.h:
|
||||
|
||||
/usr/include/c++/4.0.0/exception_defines.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_pair.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/cpp_type_traits.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator_base_types.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator_base_funcs.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/concept_check.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator.h:
|
||||
|
||||
/usr/include/c++/4.0.0/debug/debug.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cassert:
|
||||
|
||||
/usr/include/assert.h:
|
||||
|
||||
/usr/include/c++/4.0.0/memory:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/allocator.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++allocator.h:
|
||||
|
||||
/usr/include/c++/4.0.0/ext/new_allocator.h:
|
||||
|
||||
/usr/include/c++/4.0.0/new:
|
||||
|
||||
/usr/include/c++/4.0.0/exception:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_construct.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_uninitialized.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_raw_storage_iter.h:
|
||||
|
||||
/usr/include/c++/4.0.0/limits:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_function.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/basic_string.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/atomicity.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/atomic_word.h:
|
||||
|
||||
/usr/include/c++/4.0.0/algorithm:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_algo.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_heap.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_tempbuf.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/basic_string.tcc:
|
||||
|
||||
color.h:
|
||||
@@ -1,393 +0,0 @@
|
||||
parse.o parse.o: parse.cpp /usr/include/c++/4.0.0/iostream \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++config.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/os_defines.h \
|
||||
/usr/include/c++/4.0.0/ostream /usr/include/c++/4.0.0/ios \
|
||||
/usr/include/c++/4.0.0/iosfwd \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++locale.h \
|
||||
/usr/include/c++/4.0.0/clocale /usr/include/locale.h \
|
||||
/usr/include/_locale.h /usr/include/sys/cdefs.h /usr/include/_types.h \
|
||||
/usr/include/sys/_types.h /usr/include/machine/_types.h \
|
||||
/usr/include/i386/_types.h /usr/include/c++/4.0.0/cstring \
|
||||
/usr/include/c++/4.0.0/cstddef \
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stddef.h \
|
||||
/usr/include/string.h /usr/include/c++/4.0.0/cstdio \
|
||||
/usr/include/stdio.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++io.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr-default.h \
|
||||
/usr/include/pthread.h /usr/include/pthread_impl.h /usr/include/sched.h \
|
||||
/usr/include/time.h /usr/include/_structs.h /usr/include/sys/_structs.h \
|
||||
/usr/include/unistd.h /usr/include/sys/unistd.h \
|
||||
/usr/include/sys/select.h /usr/include/sys/appleapiopts.h \
|
||||
/usr/include/sys/_select.h /usr/include/c++/4.0.0/cctype \
|
||||
/usr/include/ctype.h /usr/include/runetype.h \
|
||||
/usr/include/c++/4.0.0/bits/stringfwd.h \
|
||||
/usr/include/c++/4.0.0/bits/postypes.h /usr/include/c++/4.0.0/cwchar \
|
||||
/usr/include/c++/4.0.0/ctime /usr/include/wchar.h \
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdarg.h \
|
||||
/usr/include/_wctype.h \
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdint.h \
|
||||
/usr/include/c++/4.0.0/bits/functexcept.h \
|
||||
/usr/include/c++/4.0.0/exception_defines.h \
|
||||
/usr/include/c++/4.0.0/exception \
|
||||
/usr/include/c++/4.0.0/bits/char_traits.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_algobase.h \
|
||||
/usr/include/c++/4.0.0/climits \
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/limits.h \
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/syslimits.h \
|
||||
/usr/include/limits.h /usr/include/machine/limits.h \
|
||||
/usr/include/i386/limits.h /usr/include/i386/_limits.h \
|
||||
/usr/include/sys/syslimits.h /usr/include/c++/4.0.0/cstdlib \
|
||||
/usr/include/stdlib.h /usr/include/available.h /usr/include/sys/wait.h \
|
||||
/usr/include/sys/signal.h /usr/include/machine/signal.h \
|
||||
/usr/include/i386/signal.h /usr/include/i386/_structs.h \
|
||||
/usr/include/machine/_structs.h /usr/include/mach/i386/_structs.h \
|
||||
/usr/include/sys/resource.h /usr/include/machine/endian.h \
|
||||
/usr/include/i386/endian.h /usr/include/sys/_endian.h \
|
||||
/usr/include/libkern/_OSByteOrder.h \
|
||||
/usr/include/libkern/i386/_OSByteOrder.h /usr/include/alloca.h \
|
||||
/usr/include/machine/types.h /usr/include/i386/types.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_pair.h \
|
||||
/usr/include/c++/4.0.0/bits/cpp_type_traits.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator_base_types.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator_base_funcs.h \
|
||||
/usr/include/c++/4.0.0/bits/concept_check.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator.h \
|
||||
/usr/include/c++/4.0.0/debug/debug.h /usr/include/c++/4.0.0/cassert \
|
||||
/usr/include/assert.h /usr/include/c++/4.0.0/bits/localefwd.h \
|
||||
/usr/include/c++/4.0.0/bits/ios_base.h \
|
||||
/usr/include/c++/4.0.0/bits/atomicity.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/atomic_word.h \
|
||||
/usr/include/c++/4.0.0/bits/locale_classes.h \
|
||||
/usr/include/c++/4.0.0/string /usr/include/c++/4.0.0/memory \
|
||||
/usr/include/c++/4.0.0/bits/allocator.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++allocator.h \
|
||||
/usr/include/c++/4.0.0/ext/new_allocator.h /usr/include/c++/4.0.0/new \
|
||||
/usr/include/c++/4.0.0/bits/stl_construct.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_uninitialized.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_raw_storage_iter.h \
|
||||
/usr/include/c++/4.0.0/limits \
|
||||
/usr/include/c++/4.0.0/bits/stl_function.h \
|
||||
/usr/include/c++/4.0.0/bits/basic_string.h \
|
||||
/usr/include/c++/4.0.0/algorithm /usr/include/c++/4.0.0/bits/stl_algo.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_heap.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_tempbuf.h \
|
||||
/usr/include/c++/4.0.0/bits/basic_string.tcc \
|
||||
/usr/include/c++/4.0.0/streambuf \
|
||||
/usr/include/c++/4.0.0/bits/streambuf.tcc \
|
||||
/usr/include/c++/4.0.0/bits/basic_ios.h \
|
||||
/usr/include/c++/4.0.0/bits/streambuf_iterator.h \
|
||||
/usr/include/c++/4.0.0/bits/locale_facets.h \
|
||||
/usr/include/c++/4.0.0/cwctype /usr/include/wctype.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_base.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_inline.h \
|
||||
/usr/include/c++/4.0.0/bits/codecvt.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/time_members.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/messages_members.h \
|
||||
/usr/include/c++/4.0.0/bits/basic_ios.tcc \
|
||||
/usr/include/c++/4.0.0/bits/ostream.tcc /usr/include/c++/4.0.0/locale \
|
||||
/usr/include/c++/4.0.0/bits/locale_facets.tcc \
|
||||
/usr/include/c++/4.0.0/typeinfo /usr/include/c++/4.0.0/istream \
|
||||
/usr/include/c++/4.0.0/bits/istream.tcc /usr/include/c++/4.0.0/vector \
|
||||
/usr/include/c++/4.0.0/bits/stl_vector.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_bvector.h \
|
||||
/usr/include/c++/4.0.0/bits/vector.tcc /usr/include/c++/4.0.0/map \
|
||||
/usr/include/c++/4.0.0/bits/stl_tree.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_map.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_multimap.h Date.h task.h \
|
||||
/usr/include/sys/types.h Config.h Table.h color.h Grid.h color.h TDB.h \
|
||||
T.h ../auto.h
|
||||
|
||||
/usr/include/c++/4.0.0/iostream:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++config.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/os_defines.h:
|
||||
|
||||
/usr/include/c++/4.0.0/ostream:
|
||||
|
||||
/usr/include/c++/4.0.0/ios:
|
||||
|
||||
/usr/include/c++/4.0.0/iosfwd:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++locale.h:
|
||||
|
||||
/usr/include/c++/4.0.0/clocale:
|
||||
|
||||
/usr/include/locale.h:
|
||||
|
||||
/usr/include/_locale.h:
|
||||
|
||||
/usr/include/sys/cdefs.h:
|
||||
|
||||
/usr/include/_types.h:
|
||||
|
||||
/usr/include/sys/_types.h:
|
||||
|
||||
/usr/include/machine/_types.h:
|
||||
|
||||
/usr/include/i386/_types.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cstring:
|
||||
|
||||
/usr/include/c++/4.0.0/cstddef:
|
||||
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stddef.h:
|
||||
|
||||
/usr/include/string.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cstdio:
|
||||
|
||||
/usr/include/stdio.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++io.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr-default.h:
|
||||
|
||||
/usr/include/pthread.h:
|
||||
|
||||
/usr/include/pthread_impl.h:
|
||||
|
||||
/usr/include/sched.h:
|
||||
|
||||
/usr/include/time.h:
|
||||
|
||||
/usr/include/_structs.h:
|
||||
|
||||
/usr/include/sys/_structs.h:
|
||||
|
||||
/usr/include/unistd.h:
|
||||
|
||||
/usr/include/sys/unistd.h:
|
||||
|
||||
/usr/include/sys/select.h:
|
||||
|
||||
/usr/include/sys/appleapiopts.h:
|
||||
|
||||
/usr/include/sys/_select.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cctype:
|
||||
|
||||
/usr/include/ctype.h:
|
||||
|
||||
/usr/include/runetype.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stringfwd.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/postypes.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cwchar:
|
||||
|
||||
/usr/include/c++/4.0.0/ctime:
|
||||
|
||||
/usr/include/wchar.h:
|
||||
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdarg.h:
|
||||
|
||||
/usr/include/_wctype.h:
|
||||
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdint.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/functexcept.h:
|
||||
|
||||
/usr/include/c++/4.0.0/exception_defines.h:
|
||||
|
||||
/usr/include/c++/4.0.0/exception:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/char_traits.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_algobase.h:
|
||||
|
||||
/usr/include/c++/4.0.0/climits:
|
||||
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/limits.h:
|
||||
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/syslimits.h:
|
||||
|
||||
/usr/include/limits.h:
|
||||
|
||||
/usr/include/machine/limits.h:
|
||||
|
||||
/usr/include/i386/limits.h:
|
||||
|
||||
/usr/include/i386/_limits.h:
|
||||
|
||||
/usr/include/sys/syslimits.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cstdlib:
|
||||
|
||||
/usr/include/stdlib.h:
|
||||
|
||||
/usr/include/available.h:
|
||||
|
||||
/usr/include/sys/wait.h:
|
||||
|
||||
/usr/include/sys/signal.h:
|
||||
|
||||
/usr/include/machine/signal.h:
|
||||
|
||||
/usr/include/i386/signal.h:
|
||||
|
||||
/usr/include/i386/_structs.h:
|
||||
|
||||
/usr/include/machine/_structs.h:
|
||||
|
||||
/usr/include/mach/i386/_structs.h:
|
||||
|
||||
/usr/include/sys/resource.h:
|
||||
|
||||
/usr/include/machine/endian.h:
|
||||
|
||||
/usr/include/i386/endian.h:
|
||||
|
||||
/usr/include/sys/_endian.h:
|
||||
|
||||
/usr/include/libkern/_OSByteOrder.h:
|
||||
|
||||
/usr/include/libkern/i386/_OSByteOrder.h:
|
||||
|
||||
/usr/include/alloca.h:
|
||||
|
||||
/usr/include/machine/types.h:
|
||||
|
||||
/usr/include/i386/types.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_pair.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/cpp_type_traits.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator_base_types.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator_base_funcs.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/concept_check.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator.h:
|
||||
|
||||
/usr/include/c++/4.0.0/debug/debug.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cassert:
|
||||
|
||||
/usr/include/assert.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/localefwd.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/ios_base.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/atomicity.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/atomic_word.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/locale_classes.h:
|
||||
|
||||
/usr/include/c++/4.0.0/string:
|
||||
|
||||
/usr/include/c++/4.0.0/memory:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/allocator.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++allocator.h:
|
||||
|
||||
/usr/include/c++/4.0.0/ext/new_allocator.h:
|
||||
|
||||
/usr/include/c++/4.0.0/new:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_construct.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_uninitialized.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_raw_storage_iter.h:
|
||||
|
||||
/usr/include/c++/4.0.0/limits:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_function.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/basic_string.h:
|
||||
|
||||
/usr/include/c++/4.0.0/algorithm:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_algo.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_heap.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_tempbuf.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/basic_string.tcc:
|
||||
|
||||
/usr/include/c++/4.0.0/streambuf:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/streambuf.tcc:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/basic_ios.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/streambuf_iterator.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/locale_facets.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cwctype:
|
||||
|
||||
/usr/include/wctype.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_base.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_inline.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/codecvt.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/time_members.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/messages_members.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/basic_ios.tcc:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/ostream.tcc:
|
||||
|
||||
/usr/include/c++/4.0.0/locale:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/locale_facets.tcc:
|
||||
|
||||
/usr/include/c++/4.0.0/typeinfo:
|
||||
|
||||
/usr/include/c++/4.0.0/istream:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/istream.tcc:
|
||||
|
||||
/usr/include/c++/4.0.0/vector:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_vector.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_bvector.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/vector.tcc:
|
||||
|
||||
/usr/include/c++/4.0.0/map:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_tree.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_map.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_multimap.h:
|
||||
|
||||
Date.h:
|
||||
|
||||
task.h:
|
||||
|
||||
/usr/include/sys/types.h:
|
||||
|
||||
Config.h:
|
||||
|
||||
Table.h:
|
||||
|
||||
color.h:
|
||||
|
||||
Grid.h:
|
||||
|
||||
color.h:
|
||||
|
||||
TDB.h:
|
||||
|
||||
T.h:
|
||||
|
||||
../auto.h:
|
||||
@@ -1,392 +0,0 @@
|
||||
rules.o rules.o: rules.cpp /usr/include/c++/4.0.0/iostream \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++config.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/os_defines.h \
|
||||
/usr/include/c++/4.0.0/ostream /usr/include/c++/4.0.0/ios \
|
||||
/usr/include/c++/4.0.0/iosfwd \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++locale.h \
|
||||
/usr/include/c++/4.0.0/clocale /usr/include/locale.h \
|
||||
/usr/include/_locale.h /usr/include/sys/cdefs.h /usr/include/_types.h \
|
||||
/usr/include/sys/_types.h /usr/include/machine/_types.h \
|
||||
/usr/include/i386/_types.h /usr/include/c++/4.0.0/cstring \
|
||||
/usr/include/c++/4.0.0/cstddef \
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stddef.h \
|
||||
/usr/include/string.h /usr/include/c++/4.0.0/cstdio \
|
||||
/usr/include/stdio.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++io.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr-default.h \
|
||||
/usr/include/pthread.h /usr/include/pthread_impl.h /usr/include/sched.h \
|
||||
/usr/include/time.h /usr/include/_structs.h /usr/include/sys/_structs.h \
|
||||
/usr/include/unistd.h /usr/include/sys/unistd.h \
|
||||
/usr/include/sys/select.h /usr/include/sys/appleapiopts.h \
|
||||
/usr/include/sys/_select.h /usr/include/c++/4.0.0/cctype \
|
||||
/usr/include/ctype.h /usr/include/runetype.h \
|
||||
/usr/include/c++/4.0.0/bits/stringfwd.h \
|
||||
/usr/include/c++/4.0.0/bits/postypes.h /usr/include/c++/4.0.0/cwchar \
|
||||
/usr/include/c++/4.0.0/ctime /usr/include/wchar.h \
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdarg.h \
|
||||
/usr/include/_wctype.h \
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdint.h \
|
||||
/usr/include/c++/4.0.0/bits/functexcept.h \
|
||||
/usr/include/c++/4.0.0/exception_defines.h \
|
||||
/usr/include/c++/4.0.0/exception \
|
||||
/usr/include/c++/4.0.0/bits/char_traits.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_algobase.h \
|
||||
/usr/include/c++/4.0.0/climits \
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/limits.h \
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/syslimits.h \
|
||||
/usr/include/limits.h /usr/include/machine/limits.h \
|
||||
/usr/include/i386/limits.h /usr/include/i386/_limits.h \
|
||||
/usr/include/sys/syslimits.h /usr/include/c++/4.0.0/cstdlib \
|
||||
/usr/include/stdlib.h /usr/include/available.h /usr/include/sys/wait.h \
|
||||
/usr/include/sys/signal.h /usr/include/machine/signal.h \
|
||||
/usr/include/i386/signal.h /usr/include/i386/_structs.h \
|
||||
/usr/include/machine/_structs.h /usr/include/mach/i386/_structs.h \
|
||||
/usr/include/sys/resource.h /usr/include/machine/endian.h \
|
||||
/usr/include/i386/endian.h /usr/include/sys/_endian.h \
|
||||
/usr/include/libkern/_OSByteOrder.h \
|
||||
/usr/include/libkern/i386/_OSByteOrder.h /usr/include/alloca.h \
|
||||
/usr/include/machine/types.h /usr/include/i386/types.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_pair.h \
|
||||
/usr/include/c++/4.0.0/bits/cpp_type_traits.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator_base_types.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator_base_funcs.h \
|
||||
/usr/include/c++/4.0.0/bits/concept_check.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator.h \
|
||||
/usr/include/c++/4.0.0/debug/debug.h /usr/include/c++/4.0.0/cassert \
|
||||
/usr/include/assert.h /usr/include/c++/4.0.0/bits/localefwd.h \
|
||||
/usr/include/c++/4.0.0/bits/ios_base.h \
|
||||
/usr/include/c++/4.0.0/bits/atomicity.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/atomic_word.h \
|
||||
/usr/include/c++/4.0.0/bits/locale_classes.h \
|
||||
/usr/include/c++/4.0.0/string /usr/include/c++/4.0.0/memory \
|
||||
/usr/include/c++/4.0.0/bits/allocator.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++allocator.h \
|
||||
/usr/include/c++/4.0.0/ext/new_allocator.h /usr/include/c++/4.0.0/new \
|
||||
/usr/include/c++/4.0.0/bits/stl_construct.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_uninitialized.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_raw_storage_iter.h \
|
||||
/usr/include/c++/4.0.0/limits \
|
||||
/usr/include/c++/4.0.0/bits/stl_function.h \
|
||||
/usr/include/c++/4.0.0/bits/basic_string.h \
|
||||
/usr/include/c++/4.0.0/algorithm /usr/include/c++/4.0.0/bits/stl_algo.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_heap.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_tempbuf.h \
|
||||
/usr/include/c++/4.0.0/bits/basic_string.tcc \
|
||||
/usr/include/c++/4.0.0/streambuf \
|
||||
/usr/include/c++/4.0.0/bits/streambuf.tcc \
|
||||
/usr/include/c++/4.0.0/bits/basic_ios.h \
|
||||
/usr/include/c++/4.0.0/bits/streambuf_iterator.h \
|
||||
/usr/include/c++/4.0.0/bits/locale_facets.h \
|
||||
/usr/include/c++/4.0.0/cwctype /usr/include/wctype.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_base.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_inline.h \
|
||||
/usr/include/c++/4.0.0/bits/codecvt.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/time_members.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/messages_members.h \
|
||||
/usr/include/c++/4.0.0/bits/basic_ios.tcc \
|
||||
/usr/include/c++/4.0.0/bits/ostream.tcc /usr/include/c++/4.0.0/locale \
|
||||
/usr/include/c++/4.0.0/bits/locale_facets.tcc \
|
||||
/usr/include/c++/4.0.0/typeinfo /usr/include/c++/4.0.0/istream \
|
||||
/usr/include/c++/4.0.0/bits/istream.tcc Config.h \
|
||||
/usr/include/c++/4.0.0/map /usr/include/c++/4.0.0/bits/stl_tree.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_map.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_multimap.h \
|
||||
/usr/include/c++/4.0.0/vector /usr/include/c++/4.0.0/bits/stl_vector.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_bvector.h \
|
||||
/usr/include/c++/4.0.0/bits/vector.tcc Table.h color.h Grid.h Date.h \
|
||||
T.h task.h /usr/include/sys/types.h color.h TDB.h ../auto.h
|
||||
|
||||
/usr/include/c++/4.0.0/iostream:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++config.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/os_defines.h:
|
||||
|
||||
/usr/include/c++/4.0.0/ostream:
|
||||
|
||||
/usr/include/c++/4.0.0/ios:
|
||||
|
||||
/usr/include/c++/4.0.0/iosfwd:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++locale.h:
|
||||
|
||||
/usr/include/c++/4.0.0/clocale:
|
||||
|
||||
/usr/include/locale.h:
|
||||
|
||||
/usr/include/_locale.h:
|
||||
|
||||
/usr/include/sys/cdefs.h:
|
||||
|
||||
/usr/include/_types.h:
|
||||
|
||||
/usr/include/sys/_types.h:
|
||||
|
||||
/usr/include/machine/_types.h:
|
||||
|
||||
/usr/include/i386/_types.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cstring:
|
||||
|
||||
/usr/include/c++/4.0.0/cstddef:
|
||||
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stddef.h:
|
||||
|
||||
/usr/include/string.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cstdio:
|
||||
|
||||
/usr/include/stdio.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++io.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr-default.h:
|
||||
|
||||
/usr/include/pthread.h:
|
||||
|
||||
/usr/include/pthread_impl.h:
|
||||
|
||||
/usr/include/sched.h:
|
||||
|
||||
/usr/include/time.h:
|
||||
|
||||
/usr/include/_structs.h:
|
||||
|
||||
/usr/include/sys/_structs.h:
|
||||
|
||||
/usr/include/unistd.h:
|
||||
|
||||
/usr/include/sys/unistd.h:
|
||||
|
||||
/usr/include/sys/select.h:
|
||||
|
||||
/usr/include/sys/appleapiopts.h:
|
||||
|
||||
/usr/include/sys/_select.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cctype:
|
||||
|
||||
/usr/include/ctype.h:
|
||||
|
||||
/usr/include/runetype.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stringfwd.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/postypes.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cwchar:
|
||||
|
||||
/usr/include/c++/4.0.0/ctime:
|
||||
|
||||
/usr/include/wchar.h:
|
||||
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdarg.h:
|
||||
|
||||
/usr/include/_wctype.h:
|
||||
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdint.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/functexcept.h:
|
||||
|
||||
/usr/include/c++/4.0.0/exception_defines.h:
|
||||
|
||||
/usr/include/c++/4.0.0/exception:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/char_traits.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_algobase.h:
|
||||
|
||||
/usr/include/c++/4.0.0/climits:
|
||||
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/limits.h:
|
||||
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/syslimits.h:
|
||||
|
||||
/usr/include/limits.h:
|
||||
|
||||
/usr/include/machine/limits.h:
|
||||
|
||||
/usr/include/i386/limits.h:
|
||||
|
||||
/usr/include/i386/_limits.h:
|
||||
|
||||
/usr/include/sys/syslimits.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cstdlib:
|
||||
|
||||
/usr/include/stdlib.h:
|
||||
|
||||
/usr/include/available.h:
|
||||
|
||||
/usr/include/sys/wait.h:
|
||||
|
||||
/usr/include/sys/signal.h:
|
||||
|
||||
/usr/include/machine/signal.h:
|
||||
|
||||
/usr/include/i386/signal.h:
|
||||
|
||||
/usr/include/i386/_structs.h:
|
||||
|
||||
/usr/include/machine/_structs.h:
|
||||
|
||||
/usr/include/mach/i386/_structs.h:
|
||||
|
||||
/usr/include/sys/resource.h:
|
||||
|
||||
/usr/include/machine/endian.h:
|
||||
|
||||
/usr/include/i386/endian.h:
|
||||
|
||||
/usr/include/sys/_endian.h:
|
||||
|
||||
/usr/include/libkern/_OSByteOrder.h:
|
||||
|
||||
/usr/include/libkern/i386/_OSByteOrder.h:
|
||||
|
||||
/usr/include/alloca.h:
|
||||
|
||||
/usr/include/machine/types.h:
|
||||
|
||||
/usr/include/i386/types.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_pair.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/cpp_type_traits.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator_base_types.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator_base_funcs.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/concept_check.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator.h:
|
||||
|
||||
/usr/include/c++/4.0.0/debug/debug.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cassert:
|
||||
|
||||
/usr/include/assert.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/localefwd.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/ios_base.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/atomicity.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/atomic_word.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/locale_classes.h:
|
||||
|
||||
/usr/include/c++/4.0.0/string:
|
||||
|
||||
/usr/include/c++/4.0.0/memory:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/allocator.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++allocator.h:
|
||||
|
||||
/usr/include/c++/4.0.0/ext/new_allocator.h:
|
||||
|
||||
/usr/include/c++/4.0.0/new:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_construct.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_uninitialized.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_raw_storage_iter.h:
|
||||
|
||||
/usr/include/c++/4.0.0/limits:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_function.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/basic_string.h:
|
||||
|
||||
/usr/include/c++/4.0.0/algorithm:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_algo.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_heap.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_tempbuf.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/basic_string.tcc:
|
||||
|
||||
/usr/include/c++/4.0.0/streambuf:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/streambuf.tcc:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/basic_ios.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/streambuf_iterator.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/locale_facets.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cwctype:
|
||||
|
||||
/usr/include/wctype.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_base.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_inline.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/codecvt.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/time_members.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/messages_members.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/basic_ios.tcc:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/ostream.tcc:
|
||||
|
||||
/usr/include/c++/4.0.0/locale:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/locale_facets.tcc:
|
||||
|
||||
/usr/include/c++/4.0.0/typeinfo:
|
||||
|
||||
/usr/include/c++/4.0.0/istream:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/istream.tcc:
|
||||
|
||||
Config.h:
|
||||
|
||||
/usr/include/c++/4.0.0/map:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_tree.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_map.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_multimap.h:
|
||||
|
||||
/usr/include/c++/4.0.0/vector:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_vector.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_bvector.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/vector.tcc:
|
||||
|
||||
Table.h:
|
||||
|
||||
color.h:
|
||||
|
||||
Grid.h:
|
||||
|
||||
Date.h:
|
||||
|
||||
T.h:
|
||||
|
||||
task.h:
|
||||
|
||||
/usr/include/sys/types.h:
|
||||
|
||||
color.h:
|
||||
|
||||
TDB.h:
|
||||
|
||||
../auto.h:
|
||||
@@ -1,417 +0,0 @@
|
||||
task.o task.o: task.cpp /usr/include/c++/4.0.0/iostream \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++config.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/os_defines.h \
|
||||
/usr/include/c++/4.0.0/ostream /usr/include/c++/4.0.0/ios \
|
||||
/usr/include/c++/4.0.0/iosfwd \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++locale.h \
|
||||
/usr/include/c++/4.0.0/clocale /usr/include/locale.h \
|
||||
/usr/include/_locale.h /usr/include/sys/cdefs.h /usr/include/_types.h \
|
||||
/usr/include/sys/_types.h /usr/include/machine/_types.h \
|
||||
/usr/include/i386/_types.h /usr/include/c++/4.0.0/cstring \
|
||||
/usr/include/c++/4.0.0/cstddef \
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stddef.h \
|
||||
/usr/include/string.h /usr/include/c++/4.0.0/cstdio \
|
||||
/usr/include/stdio.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++io.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr-default.h \
|
||||
/usr/include/pthread.h /usr/include/pthread_impl.h /usr/include/sched.h \
|
||||
/usr/include/time.h /usr/include/_structs.h /usr/include/sys/_structs.h \
|
||||
/usr/include/unistd.h /usr/include/sys/unistd.h \
|
||||
/usr/include/sys/select.h /usr/include/sys/appleapiopts.h \
|
||||
/usr/include/sys/_select.h /usr/include/c++/4.0.0/cctype \
|
||||
/usr/include/ctype.h /usr/include/runetype.h \
|
||||
/usr/include/c++/4.0.0/bits/stringfwd.h \
|
||||
/usr/include/c++/4.0.0/bits/postypes.h /usr/include/c++/4.0.0/cwchar \
|
||||
/usr/include/c++/4.0.0/ctime /usr/include/wchar.h \
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdarg.h \
|
||||
/usr/include/_wctype.h \
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdint.h \
|
||||
/usr/include/c++/4.0.0/bits/functexcept.h \
|
||||
/usr/include/c++/4.0.0/exception_defines.h \
|
||||
/usr/include/c++/4.0.0/exception \
|
||||
/usr/include/c++/4.0.0/bits/char_traits.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_algobase.h \
|
||||
/usr/include/c++/4.0.0/climits \
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/limits.h \
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/syslimits.h \
|
||||
/usr/include/limits.h /usr/include/machine/limits.h \
|
||||
/usr/include/i386/limits.h /usr/include/i386/_limits.h \
|
||||
/usr/include/sys/syslimits.h /usr/include/c++/4.0.0/cstdlib \
|
||||
/usr/include/stdlib.h /usr/include/available.h /usr/include/sys/wait.h \
|
||||
/usr/include/sys/signal.h /usr/include/machine/signal.h \
|
||||
/usr/include/i386/signal.h /usr/include/i386/_structs.h \
|
||||
/usr/include/machine/_structs.h /usr/include/mach/i386/_structs.h \
|
||||
/usr/include/sys/resource.h /usr/include/machine/endian.h \
|
||||
/usr/include/i386/endian.h /usr/include/sys/_endian.h \
|
||||
/usr/include/libkern/_OSByteOrder.h \
|
||||
/usr/include/libkern/i386/_OSByteOrder.h /usr/include/alloca.h \
|
||||
/usr/include/machine/types.h /usr/include/i386/types.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_pair.h \
|
||||
/usr/include/c++/4.0.0/bits/cpp_type_traits.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator_base_types.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator_base_funcs.h \
|
||||
/usr/include/c++/4.0.0/bits/concept_check.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator.h \
|
||||
/usr/include/c++/4.0.0/debug/debug.h /usr/include/c++/4.0.0/cassert \
|
||||
/usr/include/assert.h /usr/include/c++/4.0.0/bits/localefwd.h \
|
||||
/usr/include/c++/4.0.0/bits/ios_base.h \
|
||||
/usr/include/c++/4.0.0/bits/atomicity.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/atomic_word.h \
|
||||
/usr/include/c++/4.0.0/bits/locale_classes.h \
|
||||
/usr/include/c++/4.0.0/string /usr/include/c++/4.0.0/memory \
|
||||
/usr/include/c++/4.0.0/bits/allocator.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++allocator.h \
|
||||
/usr/include/c++/4.0.0/ext/new_allocator.h /usr/include/c++/4.0.0/new \
|
||||
/usr/include/c++/4.0.0/bits/stl_construct.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_uninitialized.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_raw_storage_iter.h \
|
||||
/usr/include/c++/4.0.0/limits \
|
||||
/usr/include/c++/4.0.0/bits/stl_function.h \
|
||||
/usr/include/c++/4.0.0/bits/basic_string.h \
|
||||
/usr/include/c++/4.0.0/algorithm /usr/include/c++/4.0.0/bits/stl_algo.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_heap.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_tempbuf.h \
|
||||
/usr/include/c++/4.0.0/bits/basic_string.tcc \
|
||||
/usr/include/c++/4.0.0/streambuf \
|
||||
/usr/include/c++/4.0.0/bits/streambuf.tcc \
|
||||
/usr/include/c++/4.0.0/bits/basic_ios.h \
|
||||
/usr/include/c++/4.0.0/bits/streambuf_iterator.h \
|
||||
/usr/include/c++/4.0.0/bits/locale_facets.h \
|
||||
/usr/include/c++/4.0.0/cwctype /usr/include/wctype.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_base.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_inline.h \
|
||||
/usr/include/c++/4.0.0/bits/codecvt.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/time_members.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/messages_members.h \
|
||||
/usr/include/c++/4.0.0/bits/basic_ios.tcc \
|
||||
/usr/include/c++/4.0.0/bits/ostream.tcc /usr/include/c++/4.0.0/locale \
|
||||
/usr/include/c++/4.0.0/bits/locale_facets.tcc \
|
||||
/usr/include/c++/4.0.0/typeinfo /usr/include/c++/4.0.0/istream \
|
||||
/usr/include/c++/4.0.0/bits/istream.tcc /usr/include/c++/4.0.0/iomanip \
|
||||
/usr/include/c++/4.0.0/functional /usr/include/c++/4.0.0/fstream \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/basic_file.h \
|
||||
/usr/include/c++/4.0.0/bits/fstream.tcc /usr/include/sys/types.h \
|
||||
/usr/include/pwd.h Config.h /usr/include/c++/4.0.0/map \
|
||||
/usr/include/c++/4.0.0/bits/stl_tree.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_map.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_multimap.h \
|
||||
/usr/include/c++/4.0.0/vector /usr/include/c++/4.0.0/bits/stl_vector.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_bvector.h \
|
||||
/usr/include/c++/4.0.0/bits/vector.tcc Date.h Table.h color.h Grid.h \
|
||||
TDB.h T.h task.h color.h ../auto.h /usr/include/ncurses.h \
|
||||
/usr/include/ncurses_dll.h /usr/include/unctrl.h /usr/include/curses.h
|
||||
|
||||
/usr/include/c++/4.0.0/iostream:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++config.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/os_defines.h:
|
||||
|
||||
/usr/include/c++/4.0.0/ostream:
|
||||
|
||||
/usr/include/c++/4.0.0/ios:
|
||||
|
||||
/usr/include/c++/4.0.0/iosfwd:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++locale.h:
|
||||
|
||||
/usr/include/c++/4.0.0/clocale:
|
||||
|
||||
/usr/include/locale.h:
|
||||
|
||||
/usr/include/_locale.h:
|
||||
|
||||
/usr/include/sys/cdefs.h:
|
||||
|
||||
/usr/include/_types.h:
|
||||
|
||||
/usr/include/sys/_types.h:
|
||||
|
||||
/usr/include/machine/_types.h:
|
||||
|
||||
/usr/include/i386/_types.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cstring:
|
||||
|
||||
/usr/include/c++/4.0.0/cstddef:
|
||||
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stddef.h:
|
||||
|
||||
/usr/include/string.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cstdio:
|
||||
|
||||
/usr/include/stdio.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++io.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr-default.h:
|
||||
|
||||
/usr/include/pthread.h:
|
||||
|
||||
/usr/include/pthread_impl.h:
|
||||
|
||||
/usr/include/sched.h:
|
||||
|
||||
/usr/include/time.h:
|
||||
|
||||
/usr/include/_structs.h:
|
||||
|
||||
/usr/include/sys/_structs.h:
|
||||
|
||||
/usr/include/unistd.h:
|
||||
|
||||
/usr/include/sys/unistd.h:
|
||||
|
||||
/usr/include/sys/select.h:
|
||||
|
||||
/usr/include/sys/appleapiopts.h:
|
||||
|
||||
/usr/include/sys/_select.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cctype:
|
||||
|
||||
/usr/include/ctype.h:
|
||||
|
||||
/usr/include/runetype.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stringfwd.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/postypes.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cwchar:
|
||||
|
||||
/usr/include/c++/4.0.0/ctime:
|
||||
|
||||
/usr/include/wchar.h:
|
||||
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdarg.h:
|
||||
|
||||
/usr/include/_wctype.h:
|
||||
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdint.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/functexcept.h:
|
||||
|
||||
/usr/include/c++/4.0.0/exception_defines.h:
|
||||
|
||||
/usr/include/c++/4.0.0/exception:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/char_traits.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_algobase.h:
|
||||
|
||||
/usr/include/c++/4.0.0/climits:
|
||||
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/limits.h:
|
||||
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/syslimits.h:
|
||||
|
||||
/usr/include/limits.h:
|
||||
|
||||
/usr/include/machine/limits.h:
|
||||
|
||||
/usr/include/i386/limits.h:
|
||||
|
||||
/usr/include/i386/_limits.h:
|
||||
|
||||
/usr/include/sys/syslimits.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cstdlib:
|
||||
|
||||
/usr/include/stdlib.h:
|
||||
|
||||
/usr/include/available.h:
|
||||
|
||||
/usr/include/sys/wait.h:
|
||||
|
||||
/usr/include/sys/signal.h:
|
||||
|
||||
/usr/include/machine/signal.h:
|
||||
|
||||
/usr/include/i386/signal.h:
|
||||
|
||||
/usr/include/i386/_structs.h:
|
||||
|
||||
/usr/include/machine/_structs.h:
|
||||
|
||||
/usr/include/mach/i386/_structs.h:
|
||||
|
||||
/usr/include/sys/resource.h:
|
||||
|
||||
/usr/include/machine/endian.h:
|
||||
|
||||
/usr/include/i386/endian.h:
|
||||
|
||||
/usr/include/sys/_endian.h:
|
||||
|
||||
/usr/include/libkern/_OSByteOrder.h:
|
||||
|
||||
/usr/include/libkern/i386/_OSByteOrder.h:
|
||||
|
||||
/usr/include/alloca.h:
|
||||
|
||||
/usr/include/machine/types.h:
|
||||
|
||||
/usr/include/i386/types.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_pair.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/cpp_type_traits.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator_base_types.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator_base_funcs.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/concept_check.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator.h:
|
||||
|
||||
/usr/include/c++/4.0.0/debug/debug.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cassert:
|
||||
|
||||
/usr/include/assert.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/localefwd.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/ios_base.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/atomicity.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/atomic_word.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/locale_classes.h:
|
||||
|
||||
/usr/include/c++/4.0.0/string:
|
||||
|
||||
/usr/include/c++/4.0.0/memory:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/allocator.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++allocator.h:
|
||||
|
||||
/usr/include/c++/4.0.0/ext/new_allocator.h:
|
||||
|
||||
/usr/include/c++/4.0.0/new:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_construct.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_uninitialized.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_raw_storage_iter.h:
|
||||
|
||||
/usr/include/c++/4.0.0/limits:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_function.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/basic_string.h:
|
||||
|
||||
/usr/include/c++/4.0.0/algorithm:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_algo.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_heap.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_tempbuf.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/basic_string.tcc:
|
||||
|
||||
/usr/include/c++/4.0.0/streambuf:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/streambuf.tcc:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/basic_ios.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/streambuf_iterator.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/locale_facets.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cwctype:
|
||||
|
||||
/usr/include/wctype.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_base.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_inline.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/codecvt.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/time_members.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/messages_members.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/basic_ios.tcc:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/ostream.tcc:
|
||||
|
||||
/usr/include/c++/4.0.0/locale:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/locale_facets.tcc:
|
||||
|
||||
/usr/include/c++/4.0.0/typeinfo:
|
||||
|
||||
/usr/include/c++/4.0.0/istream:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/istream.tcc:
|
||||
|
||||
/usr/include/c++/4.0.0/iomanip:
|
||||
|
||||
/usr/include/c++/4.0.0/functional:
|
||||
|
||||
/usr/include/c++/4.0.0/fstream:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/basic_file.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/fstream.tcc:
|
||||
|
||||
/usr/include/sys/types.h:
|
||||
|
||||
/usr/include/pwd.h:
|
||||
|
||||
Config.h:
|
||||
|
||||
/usr/include/c++/4.0.0/map:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_tree.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_map.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_multimap.h:
|
||||
|
||||
/usr/include/c++/4.0.0/vector:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_vector.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_bvector.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/vector.tcc:
|
||||
|
||||
Date.h:
|
||||
|
||||
Table.h:
|
||||
|
||||
color.h:
|
||||
|
||||
Grid.h:
|
||||
|
||||
TDB.h:
|
||||
|
||||
T.h:
|
||||
|
||||
task.h:
|
||||
|
||||
color.h:
|
||||
|
||||
../auto.h:
|
||||
|
||||
/usr/include/ncurses.h:
|
||||
|
||||
/usr/include/ncurses_dll.h:
|
||||
|
||||
/usr/include/unctrl.h:
|
||||
|
||||
/usr/include/curses.h:
|
||||
@@ -1,390 +0,0 @@
|
||||
text.o text.o: text.cpp /usr/include/c++/4.0.0/iostream \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++config.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/os_defines.h \
|
||||
/usr/include/c++/4.0.0/ostream /usr/include/c++/4.0.0/ios \
|
||||
/usr/include/c++/4.0.0/iosfwd \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++locale.h \
|
||||
/usr/include/c++/4.0.0/clocale /usr/include/locale.h \
|
||||
/usr/include/_locale.h /usr/include/sys/cdefs.h /usr/include/_types.h \
|
||||
/usr/include/sys/_types.h /usr/include/machine/_types.h \
|
||||
/usr/include/i386/_types.h /usr/include/c++/4.0.0/cstring \
|
||||
/usr/include/c++/4.0.0/cstddef \
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stddef.h \
|
||||
/usr/include/string.h /usr/include/c++/4.0.0/cstdio \
|
||||
/usr/include/stdio.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++io.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr-default.h \
|
||||
/usr/include/pthread.h /usr/include/pthread_impl.h /usr/include/sched.h \
|
||||
/usr/include/time.h /usr/include/_structs.h /usr/include/sys/_structs.h \
|
||||
/usr/include/unistd.h /usr/include/sys/unistd.h \
|
||||
/usr/include/sys/select.h /usr/include/sys/appleapiopts.h \
|
||||
/usr/include/sys/_select.h /usr/include/c++/4.0.0/cctype \
|
||||
/usr/include/ctype.h /usr/include/runetype.h \
|
||||
/usr/include/c++/4.0.0/bits/stringfwd.h \
|
||||
/usr/include/c++/4.0.0/bits/postypes.h /usr/include/c++/4.0.0/cwchar \
|
||||
/usr/include/c++/4.0.0/ctime /usr/include/wchar.h \
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdarg.h \
|
||||
/usr/include/_wctype.h \
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdint.h \
|
||||
/usr/include/c++/4.0.0/bits/functexcept.h \
|
||||
/usr/include/c++/4.0.0/exception_defines.h \
|
||||
/usr/include/c++/4.0.0/exception \
|
||||
/usr/include/c++/4.0.0/bits/char_traits.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_algobase.h \
|
||||
/usr/include/c++/4.0.0/climits \
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/limits.h \
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/syslimits.h \
|
||||
/usr/include/limits.h /usr/include/machine/limits.h \
|
||||
/usr/include/i386/limits.h /usr/include/i386/_limits.h \
|
||||
/usr/include/sys/syslimits.h /usr/include/c++/4.0.0/cstdlib \
|
||||
/usr/include/stdlib.h /usr/include/available.h /usr/include/sys/wait.h \
|
||||
/usr/include/sys/signal.h /usr/include/machine/signal.h \
|
||||
/usr/include/i386/signal.h /usr/include/i386/_structs.h \
|
||||
/usr/include/machine/_structs.h /usr/include/mach/i386/_structs.h \
|
||||
/usr/include/sys/resource.h /usr/include/machine/endian.h \
|
||||
/usr/include/i386/endian.h /usr/include/sys/_endian.h \
|
||||
/usr/include/libkern/_OSByteOrder.h \
|
||||
/usr/include/libkern/i386/_OSByteOrder.h /usr/include/alloca.h \
|
||||
/usr/include/machine/types.h /usr/include/i386/types.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_pair.h \
|
||||
/usr/include/c++/4.0.0/bits/cpp_type_traits.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator_base_types.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator_base_funcs.h \
|
||||
/usr/include/c++/4.0.0/bits/concept_check.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator.h \
|
||||
/usr/include/c++/4.0.0/debug/debug.h /usr/include/c++/4.0.0/cassert \
|
||||
/usr/include/assert.h /usr/include/c++/4.0.0/bits/localefwd.h \
|
||||
/usr/include/c++/4.0.0/bits/ios_base.h \
|
||||
/usr/include/c++/4.0.0/bits/atomicity.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/atomic_word.h \
|
||||
/usr/include/c++/4.0.0/bits/locale_classes.h \
|
||||
/usr/include/c++/4.0.0/string /usr/include/c++/4.0.0/memory \
|
||||
/usr/include/c++/4.0.0/bits/allocator.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++allocator.h \
|
||||
/usr/include/c++/4.0.0/ext/new_allocator.h /usr/include/c++/4.0.0/new \
|
||||
/usr/include/c++/4.0.0/bits/stl_construct.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_uninitialized.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_raw_storage_iter.h \
|
||||
/usr/include/c++/4.0.0/limits \
|
||||
/usr/include/c++/4.0.0/bits/stl_function.h \
|
||||
/usr/include/c++/4.0.0/bits/basic_string.h \
|
||||
/usr/include/c++/4.0.0/algorithm /usr/include/c++/4.0.0/bits/stl_algo.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_heap.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_tempbuf.h \
|
||||
/usr/include/c++/4.0.0/bits/basic_string.tcc \
|
||||
/usr/include/c++/4.0.0/streambuf \
|
||||
/usr/include/c++/4.0.0/bits/streambuf.tcc \
|
||||
/usr/include/c++/4.0.0/bits/basic_ios.h \
|
||||
/usr/include/c++/4.0.0/bits/streambuf_iterator.h \
|
||||
/usr/include/c++/4.0.0/bits/locale_facets.h \
|
||||
/usr/include/c++/4.0.0/cwctype /usr/include/wctype.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_base.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_inline.h \
|
||||
/usr/include/c++/4.0.0/bits/codecvt.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/time_members.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/messages_members.h \
|
||||
/usr/include/c++/4.0.0/bits/basic_ios.tcc \
|
||||
/usr/include/c++/4.0.0/bits/ostream.tcc /usr/include/c++/4.0.0/locale \
|
||||
/usr/include/c++/4.0.0/bits/locale_facets.tcc \
|
||||
/usr/include/c++/4.0.0/typeinfo /usr/include/c++/4.0.0/istream \
|
||||
/usr/include/c++/4.0.0/bits/istream.tcc /usr/include/c++/4.0.0/vector \
|
||||
/usr/include/c++/4.0.0/bits/stl_vector.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_bvector.h \
|
||||
/usr/include/c++/4.0.0/bits/vector.tcc task.h \
|
||||
/usr/include/c++/4.0.0/map /usr/include/c++/4.0.0/bits/stl_tree.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_map.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_multimap.h /usr/include/sys/types.h \
|
||||
Config.h Table.h color.h Grid.h color.h TDB.h T.h ../auto.h
|
||||
|
||||
/usr/include/c++/4.0.0/iostream:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++config.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/os_defines.h:
|
||||
|
||||
/usr/include/c++/4.0.0/ostream:
|
||||
|
||||
/usr/include/c++/4.0.0/ios:
|
||||
|
||||
/usr/include/c++/4.0.0/iosfwd:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++locale.h:
|
||||
|
||||
/usr/include/c++/4.0.0/clocale:
|
||||
|
||||
/usr/include/locale.h:
|
||||
|
||||
/usr/include/_locale.h:
|
||||
|
||||
/usr/include/sys/cdefs.h:
|
||||
|
||||
/usr/include/_types.h:
|
||||
|
||||
/usr/include/sys/_types.h:
|
||||
|
||||
/usr/include/machine/_types.h:
|
||||
|
||||
/usr/include/i386/_types.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cstring:
|
||||
|
||||
/usr/include/c++/4.0.0/cstddef:
|
||||
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stddef.h:
|
||||
|
||||
/usr/include/string.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cstdio:
|
||||
|
||||
/usr/include/stdio.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++io.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr-default.h:
|
||||
|
||||
/usr/include/pthread.h:
|
||||
|
||||
/usr/include/pthread_impl.h:
|
||||
|
||||
/usr/include/sched.h:
|
||||
|
||||
/usr/include/time.h:
|
||||
|
||||
/usr/include/_structs.h:
|
||||
|
||||
/usr/include/sys/_structs.h:
|
||||
|
||||
/usr/include/unistd.h:
|
||||
|
||||
/usr/include/sys/unistd.h:
|
||||
|
||||
/usr/include/sys/select.h:
|
||||
|
||||
/usr/include/sys/appleapiopts.h:
|
||||
|
||||
/usr/include/sys/_select.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cctype:
|
||||
|
||||
/usr/include/ctype.h:
|
||||
|
||||
/usr/include/runetype.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stringfwd.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/postypes.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cwchar:
|
||||
|
||||
/usr/include/c++/4.0.0/ctime:
|
||||
|
||||
/usr/include/wchar.h:
|
||||
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdarg.h:
|
||||
|
||||
/usr/include/_wctype.h:
|
||||
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdint.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/functexcept.h:
|
||||
|
||||
/usr/include/c++/4.0.0/exception_defines.h:
|
||||
|
||||
/usr/include/c++/4.0.0/exception:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/char_traits.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_algobase.h:
|
||||
|
||||
/usr/include/c++/4.0.0/climits:
|
||||
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/limits.h:
|
||||
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/syslimits.h:
|
||||
|
||||
/usr/include/limits.h:
|
||||
|
||||
/usr/include/machine/limits.h:
|
||||
|
||||
/usr/include/i386/limits.h:
|
||||
|
||||
/usr/include/i386/_limits.h:
|
||||
|
||||
/usr/include/sys/syslimits.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cstdlib:
|
||||
|
||||
/usr/include/stdlib.h:
|
||||
|
||||
/usr/include/available.h:
|
||||
|
||||
/usr/include/sys/wait.h:
|
||||
|
||||
/usr/include/sys/signal.h:
|
||||
|
||||
/usr/include/machine/signal.h:
|
||||
|
||||
/usr/include/i386/signal.h:
|
||||
|
||||
/usr/include/i386/_structs.h:
|
||||
|
||||
/usr/include/machine/_structs.h:
|
||||
|
||||
/usr/include/mach/i386/_structs.h:
|
||||
|
||||
/usr/include/sys/resource.h:
|
||||
|
||||
/usr/include/machine/endian.h:
|
||||
|
||||
/usr/include/i386/endian.h:
|
||||
|
||||
/usr/include/sys/_endian.h:
|
||||
|
||||
/usr/include/libkern/_OSByteOrder.h:
|
||||
|
||||
/usr/include/libkern/i386/_OSByteOrder.h:
|
||||
|
||||
/usr/include/alloca.h:
|
||||
|
||||
/usr/include/machine/types.h:
|
||||
|
||||
/usr/include/i386/types.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_pair.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/cpp_type_traits.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator_base_types.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator_base_funcs.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/concept_check.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator.h:
|
||||
|
||||
/usr/include/c++/4.0.0/debug/debug.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cassert:
|
||||
|
||||
/usr/include/assert.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/localefwd.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/ios_base.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/atomicity.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/atomic_word.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/locale_classes.h:
|
||||
|
||||
/usr/include/c++/4.0.0/string:
|
||||
|
||||
/usr/include/c++/4.0.0/memory:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/allocator.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++allocator.h:
|
||||
|
||||
/usr/include/c++/4.0.0/ext/new_allocator.h:
|
||||
|
||||
/usr/include/c++/4.0.0/new:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_construct.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_uninitialized.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_raw_storage_iter.h:
|
||||
|
||||
/usr/include/c++/4.0.0/limits:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_function.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/basic_string.h:
|
||||
|
||||
/usr/include/c++/4.0.0/algorithm:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_algo.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_heap.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_tempbuf.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/basic_string.tcc:
|
||||
|
||||
/usr/include/c++/4.0.0/streambuf:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/streambuf.tcc:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/basic_ios.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/streambuf_iterator.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/locale_facets.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cwctype:
|
||||
|
||||
/usr/include/wctype.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_base.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_inline.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/codecvt.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/time_members.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/messages_members.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/basic_ios.tcc:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/ostream.tcc:
|
||||
|
||||
/usr/include/c++/4.0.0/locale:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/locale_facets.tcc:
|
||||
|
||||
/usr/include/c++/4.0.0/typeinfo:
|
||||
|
||||
/usr/include/c++/4.0.0/istream:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/istream.tcc:
|
||||
|
||||
/usr/include/c++/4.0.0/vector:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_vector.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_bvector.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/vector.tcc:
|
||||
|
||||
task.h:
|
||||
|
||||
/usr/include/c++/4.0.0/map:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_tree.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_map.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_multimap.h:
|
||||
|
||||
/usr/include/sys/types.h:
|
||||
|
||||
Config.h:
|
||||
|
||||
Table.h:
|
||||
|
||||
color.h:
|
||||
|
||||
Grid.h:
|
||||
|
||||
color.h:
|
||||
|
||||
TDB.h:
|
||||
|
||||
T.h:
|
||||
|
||||
../auto.h:
|
||||
@@ -1,395 +0,0 @@
|
||||
util.o util.o: util.cpp /usr/include/c++/4.0.0/iostream \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++config.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/os_defines.h \
|
||||
/usr/include/c++/4.0.0/ostream /usr/include/c++/4.0.0/ios \
|
||||
/usr/include/c++/4.0.0/iosfwd \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++locale.h \
|
||||
/usr/include/c++/4.0.0/clocale /usr/include/locale.h \
|
||||
/usr/include/_locale.h /usr/include/sys/cdefs.h /usr/include/_types.h \
|
||||
/usr/include/sys/_types.h /usr/include/machine/_types.h \
|
||||
/usr/include/i386/_types.h /usr/include/c++/4.0.0/cstring \
|
||||
/usr/include/c++/4.0.0/cstddef \
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stddef.h \
|
||||
/usr/include/string.h /usr/include/c++/4.0.0/cstdio \
|
||||
/usr/include/stdio.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++io.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr-default.h \
|
||||
/usr/include/pthread.h /usr/include/pthread_impl.h /usr/include/sched.h \
|
||||
/usr/include/time.h /usr/include/_structs.h /usr/include/sys/_structs.h \
|
||||
/usr/include/unistd.h /usr/include/sys/unistd.h \
|
||||
/usr/include/sys/select.h /usr/include/sys/appleapiopts.h \
|
||||
/usr/include/sys/_select.h /usr/include/c++/4.0.0/cctype \
|
||||
/usr/include/ctype.h /usr/include/runetype.h \
|
||||
/usr/include/c++/4.0.0/bits/stringfwd.h \
|
||||
/usr/include/c++/4.0.0/bits/postypes.h /usr/include/c++/4.0.0/cwchar \
|
||||
/usr/include/c++/4.0.0/ctime /usr/include/wchar.h \
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdarg.h \
|
||||
/usr/include/_wctype.h \
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdint.h \
|
||||
/usr/include/c++/4.0.0/bits/functexcept.h \
|
||||
/usr/include/c++/4.0.0/exception_defines.h \
|
||||
/usr/include/c++/4.0.0/exception \
|
||||
/usr/include/c++/4.0.0/bits/char_traits.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_algobase.h \
|
||||
/usr/include/c++/4.0.0/climits \
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/limits.h \
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/syslimits.h \
|
||||
/usr/include/limits.h /usr/include/machine/limits.h \
|
||||
/usr/include/i386/limits.h /usr/include/i386/_limits.h \
|
||||
/usr/include/sys/syslimits.h /usr/include/c++/4.0.0/cstdlib \
|
||||
/usr/include/stdlib.h /usr/include/available.h /usr/include/sys/wait.h \
|
||||
/usr/include/sys/signal.h /usr/include/machine/signal.h \
|
||||
/usr/include/i386/signal.h /usr/include/i386/_structs.h \
|
||||
/usr/include/machine/_structs.h /usr/include/mach/i386/_structs.h \
|
||||
/usr/include/sys/resource.h /usr/include/machine/endian.h \
|
||||
/usr/include/i386/endian.h /usr/include/sys/_endian.h \
|
||||
/usr/include/libkern/_OSByteOrder.h \
|
||||
/usr/include/libkern/i386/_OSByteOrder.h /usr/include/alloca.h \
|
||||
/usr/include/machine/types.h /usr/include/i386/types.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_pair.h \
|
||||
/usr/include/c++/4.0.0/bits/cpp_type_traits.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator_base_types.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator_base_funcs.h \
|
||||
/usr/include/c++/4.0.0/bits/concept_check.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator.h \
|
||||
/usr/include/c++/4.0.0/debug/debug.h /usr/include/c++/4.0.0/cassert \
|
||||
/usr/include/assert.h /usr/include/c++/4.0.0/bits/localefwd.h \
|
||||
/usr/include/c++/4.0.0/bits/ios_base.h \
|
||||
/usr/include/c++/4.0.0/bits/atomicity.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/atomic_word.h \
|
||||
/usr/include/c++/4.0.0/bits/locale_classes.h \
|
||||
/usr/include/c++/4.0.0/string /usr/include/c++/4.0.0/memory \
|
||||
/usr/include/c++/4.0.0/bits/allocator.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++allocator.h \
|
||||
/usr/include/c++/4.0.0/ext/new_allocator.h /usr/include/c++/4.0.0/new \
|
||||
/usr/include/c++/4.0.0/bits/stl_construct.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_uninitialized.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_raw_storage_iter.h \
|
||||
/usr/include/c++/4.0.0/limits \
|
||||
/usr/include/c++/4.0.0/bits/stl_function.h \
|
||||
/usr/include/c++/4.0.0/bits/basic_string.h \
|
||||
/usr/include/c++/4.0.0/algorithm /usr/include/c++/4.0.0/bits/stl_algo.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_heap.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_tempbuf.h \
|
||||
/usr/include/c++/4.0.0/bits/basic_string.tcc \
|
||||
/usr/include/c++/4.0.0/streambuf \
|
||||
/usr/include/c++/4.0.0/bits/streambuf.tcc \
|
||||
/usr/include/c++/4.0.0/bits/basic_ios.h \
|
||||
/usr/include/c++/4.0.0/bits/streambuf_iterator.h \
|
||||
/usr/include/c++/4.0.0/bits/locale_facets.h \
|
||||
/usr/include/c++/4.0.0/cwctype /usr/include/wctype.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_base.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_inline.h \
|
||||
/usr/include/c++/4.0.0/bits/codecvt.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/time_members.h \
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/messages_members.h \
|
||||
/usr/include/c++/4.0.0/bits/basic_ios.tcc \
|
||||
/usr/include/c++/4.0.0/bits/ostream.tcc /usr/include/c++/4.0.0/locale \
|
||||
/usr/include/c++/4.0.0/bits/locale_facets.tcc \
|
||||
/usr/include/c++/4.0.0/typeinfo /usr/include/c++/4.0.0/istream \
|
||||
/usr/include/c++/4.0.0/bits/istream.tcc /usr/include/c++/4.0.0/vector \
|
||||
/usr/include/c++/4.0.0/bits/stl_vector.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_bvector.h \
|
||||
/usr/include/c++/4.0.0/bits/vector.tcc /usr/include/sys/types.h \
|
||||
/usr/include/sys/time.h Table.h /usr/include/c++/4.0.0/map \
|
||||
/usr/include/c++/4.0.0/bits/stl_tree.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_map.h \
|
||||
/usr/include/c++/4.0.0/bits/stl_multimap.h color.h Grid.h task.h \
|
||||
Config.h color.h TDB.h T.h ../auto.h /usr/include/uuid/uuid.h
|
||||
|
||||
/usr/include/c++/4.0.0/iostream:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++config.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/os_defines.h:
|
||||
|
||||
/usr/include/c++/4.0.0/ostream:
|
||||
|
||||
/usr/include/c++/4.0.0/ios:
|
||||
|
||||
/usr/include/c++/4.0.0/iosfwd:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++locale.h:
|
||||
|
||||
/usr/include/c++/4.0.0/clocale:
|
||||
|
||||
/usr/include/locale.h:
|
||||
|
||||
/usr/include/_locale.h:
|
||||
|
||||
/usr/include/sys/cdefs.h:
|
||||
|
||||
/usr/include/_types.h:
|
||||
|
||||
/usr/include/sys/_types.h:
|
||||
|
||||
/usr/include/machine/_types.h:
|
||||
|
||||
/usr/include/i386/_types.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cstring:
|
||||
|
||||
/usr/include/c++/4.0.0/cstddef:
|
||||
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stddef.h:
|
||||
|
||||
/usr/include/string.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cstdio:
|
||||
|
||||
/usr/include/stdio.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++io.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/gthr-default.h:
|
||||
|
||||
/usr/include/pthread.h:
|
||||
|
||||
/usr/include/pthread_impl.h:
|
||||
|
||||
/usr/include/sched.h:
|
||||
|
||||
/usr/include/time.h:
|
||||
|
||||
/usr/include/_structs.h:
|
||||
|
||||
/usr/include/sys/_structs.h:
|
||||
|
||||
/usr/include/unistd.h:
|
||||
|
||||
/usr/include/sys/unistd.h:
|
||||
|
||||
/usr/include/sys/select.h:
|
||||
|
||||
/usr/include/sys/appleapiopts.h:
|
||||
|
||||
/usr/include/sys/_select.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cctype:
|
||||
|
||||
/usr/include/ctype.h:
|
||||
|
||||
/usr/include/runetype.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stringfwd.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/postypes.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cwchar:
|
||||
|
||||
/usr/include/c++/4.0.0/ctime:
|
||||
|
||||
/usr/include/wchar.h:
|
||||
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdarg.h:
|
||||
|
||||
/usr/include/_wctype.h:
|
||||
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdint.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/functexcept.h:
|
||||
|
||||
/usr/include/c++/4.0.0/exception_defines.h:
|
||||
|
||||
/usr/include/c++/4.0.0/exception:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/char_traits.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_algobase.h:
|
||||
|
||||
/usr/include/c++/4.0.0/climits:
|
||||
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/limits.h:
|
||||
|
||||
/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/syslimits.h:
|
||||
|
||||
/usr/include/limits.h:
|
||||
|
||||
/usr/include/machine/limits.h:
|
||||
|
||||
/usr/include/i386/limits.h:
|
||||
|
||||
/usr/include/i386/_limits.h:
|
||||
|
||||
/usr/include/sys/syslimits.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cstdlib:
|
||||
|
||||
/usr/include/stdlib.h:
|
||||
|
||||
/usr/include/available.h:
|
||||
|
||||
/usr/include/sys/wait.h:
|
||||
|
||||
/usr/include/sys/signal.h:
|
||||
|
||||
/usr/include/machine/signal.h:
|
||||
|
||||
/usr/include/i386/signal.h:
|
||||
|
||||
/usr/include/i386/_structs.h:
|
||||
|
||||
/usr/include/machine/_structs.h:
|
||||
|
||||
/usr/include/mach/i386/_structs.h:
|
||||
|
||||
/usr/include/sys/resource.h:
|
||||
|
||||
/usr/include/machine/endian.h:
|
||||
|
||||
/usr/include/i386/endian.h:
|
||||
|
||||
/usr/include/sys/_endian.h:
|
||||
|
||||
/usr/include/libkern/_OSByteOrder.h:
|
||||
|
||||
/usr/include/libkern/i386/_OSByteOrder.h:
|
||||
|
||||
/usr/include/alloca.h:
|
||||
|
||||
/usr/include/machine/types.h:
|
||||
|
||||
/usr/include/i386/types.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_pair.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/cpp_type_traits.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator_base_types.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator_base_funcs.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/concept_check.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_iterator.h:
|
||||
|
||||
/usr/include/c++/4.0.0/debug/debug.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cassert:
|
||||
|
||||
/usr/include/assert.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/localefwd.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/ios_base.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/atomicity.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/atomic_word.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/locale_classes.h:
|
||||
|
||||
/usr/include/c++/4.0.0/string:
|
||||
|
||||
/usr/include/c++/4.0.0/memory:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/allocator.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/c++allocator.h:
|
||||
|
||||
/usr/include/c++/4.0.0/ext/new_allocator.h:
|
||||
|
||||
/usr/include/c++/4.0.0/new:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_construct.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_uninitialized.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_raw_storage_iter.h:
|
||||
|
||||
/usr/include/c++/4.0.0/limits:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_function.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/basic_string.h:
|
||||
|
||||
/usr/include/c++/4.0.0/algorithm:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_algo.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_heap.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_tempbuf.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/basic_string.tcc:
|
||||
|
||||
/usr/include/c++/4.0.0/streambuf:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/streambuf.tcc:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/basic_ios.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/streambuf_iterator.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/locale_facets.h:
|
||||
|
||||
/usr/include/c++/4.0.0/cwctype:
|
||||
|
||||
/usr/include/wctype.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_base.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/ctype_inline.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/codecvt.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/time_members.h:
|
||||
|
||||
/usr/include/c++/4.0.0/i686-apple-darwin9/bits/messages_members.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/basic_ios.tcc:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/ostream.tcc:
|
||||
|
||||
/usr/include/c++/4.0.0/locale:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/locale_facets.tcc:
|
||||
|
||||
/usr/include/c++/4.0.0/typeinfo:
|
||||
|
||||
/usr/include/c++/4.0.0/istream:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/istream.tcc:
|
||||
|
||||
/usr/include/c++/4.0.0/vector:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_vector.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_bvector.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/vector.tcc:
|
||||
|
||||
/usr/include/sys/types.h:
|
||||
|
||||
/usr/include/sys/time.h:
|
||||
|
||||
Table.h:
|
||||
|
||||
/usr/include/c++/4.0.0/map:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_tree.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_map.h:
|
||||
|
||||
/usr/include/c++/4.0.0/bits/stl_multimap.h:
|
||||
|
||||
color.h:
|
||||
|
||||
Grid.h:
|
||||
|
||||
task.h:
|
||||
|
||||
Config.h:
|
||||
|
||||
color.h:
|
||||
|
||||
TDB.h:
|
||||
|
||||
T.h:
|
||||
|
||||
../auto.h:
|
||||
|
||||
/usr/include/uuid/uuid.h:
|
||||
2
src/.gitignore
vendored
2
src/.gitignore
vendored
@@ -1,2 +1,2 @@
|
||||
Makefile
|
||||
*.o
|
||||
Makefile.in
|
||||
|
||||
715
src/API.cpp
Normal file
715
src/API.cpp
Normal file
@@ -0,0 +1,715 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Task Lua API
|
||||
//
|
||||
// Copyright 2006 - 2010, Paul Beckingham.
|
||||
// All rights reserved.
|
||||
//
|
||||
// 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.,
|
||||
// 51 Franklin Street, Fifth Floor,
|
||||
// Boston, MA
|
||||
// 02110-1301
|
||||
// USA
|
||||
//
|
||||
// -------------
|
||||
//
|
||||
// Copyright © 1994–2008 Lua.org, PUC-Rio.
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to deal
|
||||
// in the Software without restriction, including without limitation the rights
|
||||
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
// copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
// SOFTWARE.
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include <iostream> // TODO Remove
|
||||
#include <algorithm>
|
||||
#include "Context.h"
|
||||
#include "API.h"
|
||||
|
||||
extern Context context;
|
||||
Task* the_task = NULL;
|
||||
|
||||
#ifdef HAVE_LIBLUA
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Returns a string representing the task version number, such as '1.9.0'.
|
||||
static int api_task_version (lua_State* L)
|
||||
{
|
||||
lua_pushstring (L, PACKAGE_VERSION);
|
||||
return 1;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Returns a string representing the Lua version number, such as '5.1.4'.
|
||||
// Lua 5.2.0 has a 'lua_version' call, but 5.1.4 is the target.
|
||||
static int api_task_lua_version (lua_State* L)
|
||||
{
|
||||
// Convert "Lua 5.1.4" -> "5.1.4"
|
||||
std::string ver = LUA_RELEASE;
|
||||
lua_pushstring (L, ver.substr (4, std::string::npos).c_str ());
|
||||
return 1;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Returns the type of OS that task is running on.
|
||||
static int api_task_os (lua_State* L)
|
||||
{
|
||||
#if defined (DARWIN)
|
||||
lua_pushstring (L, "darwin");
|
||||
#elif defined (SOLARIS)
|
||||
lua_pushstring (L, "solaris");
|
||||
#elif defined (CYGWIN)
|
||||
lua_pushstring (L, "cygwin");
|
||||
#elif defined (OPENBSD)
|
||||
lua_pushstring (L, "openbsd");
|
||||
#elif defined (HAIKU)
|
||||
lua_pushstring (L, "haiku");
|
||||
#elif defined (FREEBSD)
|
||||
lua_pushstring (L, "freebsd");
|
||||
#elif defined (LINUX)
|
||||
lua_pushstring (L, "linux");
|
||||
#else
|
||||
lua_pushstring (L, "unknown");
|
||||
#endif
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
static int api_task_feature (lua_State* L)
|
||||
{
|
||||
std::string name = luaL_checkstring (L, 1);
|
||||
bool value = false;
|
||||
|
||||
if (name == "readline")
|
||||
{
|
||||
#ifdef HAVE_READLINE
|
||||
value = true;
|
||||
#endif
|
||||
}
|
||||
|
||||
else if (name == "ncurses")
|
||||
{
|
||||
#ifdef HAVE_NCURSES
|
||||
value = true;
|
||||
#endif
|
||||
}
|
||||
|
||||
else if (name == "lua")
|
||||
value = true;
|
||||
|
||||
lua_pushboolean (L, value ? 1 : 0);
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
static int api_task_aliases ()
|
||||
{
|
||||
return {};
|
||||
}
|
||||
*/
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Returns values from .taskrc, by name.
|
||||
static int api_task_get_config (lua_State* L)
|
||||
{
|
||||
std::string name = luaL_checkstring (L, 1);
|
||||
lua_pushstring (L, context.config.get (name).c_str ());
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
-- Temporarily sets .taskrc values, by name.
|
||||
static int api_task_set_config (name, value)
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
-- Returns an internationalized string, by string ID, from the appropriate
|
||||
-- locale-based strings file.
|
||||
static int api_task_i18n_string (id)
|
||||
{
|
||||
return "le foo"
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
-- Returns a list of tips, from the appropriate locale-based tips file.
|
||||
static int api_task_i18n_tips ()
|
||||
{
|
||||
return {}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
-- Returns the name of the current command.
|
||||
static int api_task_get_command ()
|
||||
{
|
||||
return "list"
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
-- Returns a list of string messages generated so far.
|
||||
static int api_task_get_header_messages ()
|
||||
{
|
||||
return {}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
static int api_task_get_footnote_messages ()
|
||||
{
|
||||
return {}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
static int api_task_get_debug_messages ()
|
||||
{
|
||||
return {}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
-- Records additional messages, for subsequent display.
|
||||
static int api_task_header_message (text)
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
static int api_task_footnote_message (text)
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
static int api_task_debug_message (text)
|
||||
{
|
||||
}
|
||||
*/
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Causes the shell or interactive mode task to exit. Ordinarily this does not
|
||||
// occur.
|
||||
static int api_task_exit (lua_State* L)
|
||||
{
|
||||
// TODO Is this the correct exception? How does the shell handle this?
|
||||
throw std::string ("Exiting.");
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
-- Shuts off the hook system for any subsequent hook calls for this command.
|
||||
static int api_task_inhibit_further_hooks ()
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
-- Returns a table that contains a complete copy of the task.
|
||||
static int api_task_get (lua_State* L)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
-- Creates a new task from the data specified in the table t.
|
||||
static int api_task_add (t)
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
-- Modifies the task described in the table t.
|
||||
static int api_task_modify (t)
|
||||
{
|
||||
}
|
||||
*/
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// -- 'id' is the task id passed to the hook function. Date attributes are
|
||||
// -- returned as a numeric epoch offset. Tags and annotations are returned
|
||||
// -- as tables. A nil value indicates a missing value.
|
||||
static int api_task_get_uuid (lua_State* L)
|
||||
{
|
||||
if (the_task != NULL)
|
||||
lua_pushstring (L, the_task->get ("uuid").c_str ());
|
||||
else
|
||||
lua_pushnil (L);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
static int api_task_get_description (lua_State* L)
|
||||
{
|
||||
if (the_task != NULL)
|
||||
lua_pushstring (L, the_task->get ("description").c_str ());
|
||||
else
|
||||
lua_pushnil (L);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
static int api_task_get_annotations (id)
|
||||
{
|
||||
return task.annotations
|
||||
}
|
||||
*/
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
static int api_task_get_project (lua_State* L)
|
||||
{
|
||||
if (the_task != NULL)
|
||||
lua_pushstring (L, the_task->get ("project").c_str ());
|
||||
else
|
||||
lua_pushnil (L);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
static int api_task_get_priority (lua_State* L)
|
||||
{
|
||||
if (the_task != NULL)
|
||||
lua_pushstring (L, the_task->get ("priority").c_str ());
|
||||
else
|
||||
lua_pushnil (L);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
static int api_task_get_tags (id)
|
||||
{
|
||||
return task.tags
|
||||
}
|
||||
*/
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
static int api_task_get_status (lua_State* L)
|
||||
{
|
||||
if (the_task != NULL)
|
||||
lua_pushstring (L, Task::statusToText (the_task->getStatus ()).c_str ());
|
||||
else
|
||||
lua_pushnil (L);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
static int api_task_get_due (id)
|
||||
{
|
||||
return task.due_date
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
static int api_task_get_entry (id)
|
||||
{
|
||||
return task.entry_date
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
static int api_task_get_start (id)
|
||||
{
|
||||
return task.start_date
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
static int api_task_get_end (id)
|
||||
{
|
||||
return task.end_date
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
static int api_task_get_recur (id)
|
||||
{
|
||||
return task.recur
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
static int api_task_get_until (id)
|
||||
{
|
||||
return task.until_date
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
static int api_task_get_wait (id)
|
||||
{
|
||||
return task.wait_date
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
-- 'id' is the task id passed to the hook function. Date attributes are
|
||||
-- expected as numeric epoch offsets. Tags and annotations are expected
|
||||
-- as tables. A nil value indicates a missing value.
|
||||
static int api_task_set_description (id, value)
|
||||
{
|
||||
task.description = value
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
static int api_task_set_annotations (id, value)
|
||||
{
|
||||
task.annotations = value
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
static int api_task_set_project (id, value)
|
||||
{
|
||||
task.project = value
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
static int api_task_set_priority (id, value)
|
||||
{
|
||||
task.priority = value
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
static int api_task_set_tags (id, value)
|
||||
{
|
||||
task.tags = value
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
static int api_task_set_status (id, value)
|
||||
{
|
||||
task.status = value
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
static int api_task_set_due (id, value)
|
||||
{
|
||||
task.due_date = value
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
static int api_task_set_start (id, value)
|
||||
{
|
||||
task.start_date = value
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
static int api_task_set_recur (id, value)
|
||||
{
|
||||
task.recur = value
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
static int api_task_set_until (id, value)
|
||||
{
|
||||
task.until_date = value
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
static int api_task_set_wait (id, value)
|
||||
{
|
||||
task.wait_date = value
|
||||
}
|
||||
*/
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
API::API ()
|
||||
: L (NULL)
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
API::~API ()
|
||||
{
|
||||
if (L)
|
||||
{
|
||||
lua_close (L);
|
||||
L = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void API::initialize ()
|
||||
{
|
||||
// Initialize Lua.
|
||||
L = lua_open ();
|
||||
luaL_openlibs (L); // TODO Error handling
|
||||
|
||||
// Register all the API functions in Lua global space.
|
||||
lua_pushcfunction (L, api_task_version); lua_setglobal (L, "task_version");
|
||||
lua_pushcfunction (L, api_task_lua_version); lua_setglobal (L, "task_lua_version");
|
||||
lua_pushcfunction (L, api_task_os); lua_setglobal (L, "task_os");
|
||||
lua_pushcfunction (L, api_task_feature); lua_setglobal (L, "task_feature");
|
||||
/*
|
||||
lua_pushcfunction (L, api_task_aliases); lua_setglobal (L, "task_aliases");
|
||||
*/
|
||||
lua_pushcfunction (L, api_task_get_config); lua_setglobal (L, "task_get_config");
|
||||
/*
|
||||
lua_pushcfunction (L, api_task_set_config); lua_setglobal (L, "task_set_config");
|
||||
lua_pushcfunction (L, api_task_i18n_string); lua_setglobal (L, "task_i18n_string");
|
||||
lua_pushcfunction (L, api_task_i18n_tips); lua_setglobal (L, "task_i18n_tips");
|
||||
lua_pushcfunction (L, api_task_get_command); lua_setglobal (L, "task_get_command");
|
||||
lua_pushcfunction (L, api_task_get_header_messages); lua_setglobal (L, "task_get_header_messages");
|
||||
lua_pushcfunction (L, api_task_get_footnote_messages); lua_setglobal (L, "task_get_footnote_messages");
|
||||
lua_pushcfunction (L, api_task_get_debug_messages); lua_setglobal (L, "task_get_debug_messages");
|
||||
lua_pushcfunction (L, api_task_header_message); lua_setglobal (L, "task_header_message");
|
||||
lua_pushcfunction (L, api_task_footnote_message); lua_setglobal (L, "task_footnote_message");
|
||||
lua_pushcfunction (L, api_task_debug_message); lua_setglobal (L, "task_debug_message");
|
||||
*/
|
||||
lua_pushcfunction (L, api_task_exit); lua_setglobal (L, "task_exit");
|
||||
/*
|
||||
lua_pushcfunction (L, api_task_inhibit_further_hooks); lua_setglobal (L, "task_inhibit_further_hooks");
|
||||
lua_pushcfunction (L, api_task_get); lua_setglobal (L, "task_get");
|
||||
lua_pushcfunction (L, api_task_add); lua_setglobal (L, "task_add");
|
||||
lua_pushcfunction (L, api_task_modify); lua_setglobal (L, "task_modify");
|
||||
*/
|
||||
lua_pushcfunction (L, api_task_get_uuid); lua_setglobal (L, "task_get_uuid");
|
||||
lua_pushcfunction (L, api_task_get_description); lua_setglobal (L, "task_get_description");
|
||||
/*
|
||||
lua_pushcfunction (L, api_task_get_annotations); lua_setglobal (L, "task_get_annotations");
|
||||
*/
|
||||
lua_pushcfunction (L, api_task_get_project); lua_setglobal (L, "task_get_project");
|
||||
lua_pushcfunction (L, api_task_get_priority); lua_setglobal (L, "task_get_priority");
|
||||
/*
|
||||
lua_pushcfunction (L, api_task_get_tags); lua_setglobal (L, "task_get_tags");
|
||||
*/
|
||||
lua_pushcfunction (L, api_task_get_status); lua_setglobal (L, "task_get_status");
|
||||
/*
|
||||
lua_pushcfunction (L, api_task_get_due); lua_setglobal (L, "task_get_due");
|
||||
lua_pushcfunction (L, api_task_get_entry); lua_setglobal (L, "task_get_entry");
|
||||
lua_pushcfunction (L, api_task_get_start); lua_setglobal (L, "task_get_start");
|
||||
lua_pushcfunction (L, api_task_get_end); lua_setglobal (L, "task_get_end");
|
||||
lua_pushcfunction (L, api_task_get_recur); lua_setglobal (L, "task_get_recur");
|
||||
lua_pushcfunction (L, api_task_get_until); lua_setglobal (L, "task_get_until");
|
||||
lua_pushcfunction (L, api_task_get_wait); lua_setglobal (L, "task_get_wait");
|
||||
lua_pushcfunction (L, api_task_set_description); lua_setglobal (L, "task_set_description");
|
||||
lua_pushcfunction (L, api_task_set_annotations); lua_setglobal (L, "task_set_annotations");
|
||||
lua_pushcfunction (L, api_task_set_project); lua_setglobal (L, "task_set_project");
|
||||
lua_pushcfunction (L, api_task_set_priority); lua_setglobal (L, "task_set_priority");
|
||||
lua_pushcfunction (L, api_task_set_tags); lua_setglobal (L, "task_set_tags");
|
||||
lua_pushcfunction (L, api_task_set_status); lua_setglobal (L, "task_set_status");
|
||||
lua_pushcfunction (L, api_task_set_due); lua_setglobal (L, "task_set_due");
|
||||
lua_pushcfunction (L, api_task_set_start); lua_setglobal (L, "task_set_start");
|
||||
lua_pushcfunction (L, api_task_set_recur); lua_setglobal (L, "task_set_recur");
|
||||
lua_pushcfunction (L, api_task_set_until); lua_setglobal (L, "task_set_until");
|
||||
lua_pushcfunction (L, api_task_set_wait); lua_setglobal (L, "task_set_wait");
|
||||
*/
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
bool API::callProgramHook (
|
||||
const std::string& file,
|
||||
const std::string& function)
|
||||
{
|
||||
loadFile (file);
|
||||
|
||||
// Get function.
|
||||
lua_getglobal (L, function.c_str ());
|
||||
if (!lua_isfunction (L, -1))
|
||||
{
|
||||
lua_pop (L, 1);
|
||||
throw std::string ("The Lua function '") + function + "' was not found.";
|
||||
}
|
||||
|
||||
// Make call.
|
||||
if (lua_pcall (L, 0, 2, 0) != 0)
|
||||
throw std::string ("Error calling '") + function + "' - " + lua_tostring (L, -1);
|
||||
|
||||
// Call successful - get return values.
|
||||
if (!lua_isnumber (L, -2))
|
||||
throw std::string ("Error: '") + function + "' did not return a success indicator";
|
||||
|
||||
if (!lua_isstring (L, -1) && !lua_isnil (L, -1))
|
||||
throw std::string ("Error: '") + function + "' did not return a message or nil";
|
||||
|
||||
int rc = lua_tointeger (L, -2);
|
||||
const char* message = lua_tostring (L, -1);
|
||||
|
||||
if (rc == 0)
|
||||
{
|
||||
if (message)
|
||||
context.footnote (std::string ("Warning: ") + message);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (message)
|
||||
throw std::string (message);
|
||||
}
|
||||
|
||||
lua_pop (L, 1);
|
||||
return rc == 0 ? true : false;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// TODO No intention of implementing this before task 2.0. Why? Because we
|
||||
// need to implement a Lua iterator, in C++, to iterate over a std::vector.
|
||||
bool API::callListHook (
|
||||
const std::string& file,
|
||||
const std::string& function,
|
||||
std::vector <Task>& all)
|
||||
{
|
||||
loadFile (file);
|
||||
|
||||
// TODO Get function.
|
||||
// TODO Prepare args.
|
||||
// TODO Make call.
|
||||
// TODO Get exit status.
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
bool API::callTaskHook (
|
||||
const std::string& file,
|
||||
const std::string& function,
|
||||
Task& task)
|
||||
{
|
||||
loadFile (file);
|
||||
|
||||
// Save the task for reference via the API.
|
||||
current = task;
|
||||
|
||||
// Get function.
|
||||
lua_getglobal (L, function.c_str ());
|
||||
if (!lua_isfunction (L, -1))
|
||||
{
|
||||
lua_pop (L, 1);
|
||||
throw std::string ("The Lua function '") + function + "' was not found.";
|
||||
}
|
||||
|
||||
// Prepare args.
|
||||
lua_pushnumber (L, current.id);
|
||||
|
||||
// Expose the task.
|
||||
the_task = ¤t;
|
||||
|
||||
// Make call.
|
||||
if (lua_pcall (L, 1, 2, 0) != 0)
|
||||
throw std::string ("Error calling '") + function + "' - " + lua_tostring (L, -1);
|
||||
|
||||
// Hide the task.
|
||||
the_task = NULL;
|
||||
|
||||
// Call successful - get return values.
|
||||
if (!lua_isnumber (L, -2))
|
||||
throw std::string ("Error: '") + function + "' did not return a success indicator";
|
||||
|
||||
if (!lua_isstring (L, -1) && !lua_isnil (L, -1))
|
||||
throw std::string ("Error: '") + function + "' did not return a message or nil";
|
||||
|
||||
int rc = lua_tointeger (L, -2);
|
||||
const char* message = lua_tostring (L, -1);
|
||||
|
||||
if (rc == 0)
|
||||
{
|
||||
if (message)
|
||||
context.footnote (std::string ("Warning: ") + message);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (message)
|
||||
throw std::string (message);
|
||||
}
|
||||
|
||||
lua_pop (L, 1);
|
||||
return rc == 0 ? true : false;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
bool API::callFieldHook (
|
||||
const std::string& file,
|
||||
const std::string& function,
|
||||
const std::string& name,
|
||||
std::string& value)
|
||||
{
|
||||
loadFile (file);
|
||||
|
||||
// Get function.
|
||||
lua_getglobal (L, function.c_str ());
|
||||
if (!lua_isfunction (L, -1))
|
||||
{
|
||||
lua_pop (L, 1);
|
||||
throw std::string ("The Lua function '") + function + "' was not found.";
|
||||
}
|
||||
|
||||
// Prepare args.
|
||||
lua_pushstring (L, name.c_str ());
|
||||
lua_pushstring (L, value.c_str ());
|
||||
|
||||
// Make call.
|
||||
if (lua_pcall (L, 2, 3, 0) != 0)
|
||||
throw std::string ("Error calling '") + function + "' - " + lua_tostring (L, -1);
|
||||
|
||||
// Call successful - get return values.
|
||||
if (!lua_isstring (L, -3))
|
||||
throw std::string ("Error: '") + function + "' did not return a modified value";
|
||||
|
||||
if (!lua_isnumber (L, -2))
|
||||
throw std::string ("Error: '") + function + "' did not return a success indicator";
|
||||
|
||||
if (!lua_isstring (L, -1) && !lua_isnil (L, -1))
|
||||
throw std::string ("Error: '") + function + "' did not return a message or nil";
|
||||
|
||||
const char* new_value = lua_tostring (L, -3);
|
||||
int rc = lua_tointeger (L, -2);
|
||||
const char* message = lua_tostring (L, -1);
|
||||
|
||||
if (rc == 0)
|
||||
{
|
||||
// Overwrite with the modified value.
|
||||
value = new_value;
|
||||
|
||||
if (message)
|
||||
context.footnote (std::string ("Warning: ") + message);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (message)
|
||||
throw std::string (message);
|
||||
}
|
||||
|
||||
lua_pop (L, 1);
|
||||
return rc == 0 ? true : false;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void API::loadFile (const std::string& file)
|
||||
{
|
||||
// If the file is not loaded.
|
||||
if (std::find (loaded.begin (), loaded.end (), file) == loaded.end ())
|
||||
{
|
||||
// Load the file, if possible.
|
||||
if (luaL_loadfile (L, file.c_str ()) || lua_pcall (L, 0, 0, 0))
|
||||
throw std::string ("Error: ") + std::string (lua_tostring (L, -1));
|
||||
|
||||
// Mark this as loaded, so as to not bother again.
|
||||
loaded.push_back (file);
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#endif
|
||||
|
||||
74
src/API.h
Normal file
74
src/API.h
Normal file
@@ -0,0 +1,74 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// task - a command line task list manager.
|
||||
//
|
||||
// Copyright 2006 - 2010, Paul Beckingham.
|
||||
// All rights reserved.
|
||||
//
|
||||
// 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.,
|
||||
// 51 Franklin Street, Fifth Floor,
|
||||
// Boston, MA
|
||||
// 02110-1301
|
||||
// USA
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
#ifndef INCLUDED_API
|
||||
#define INCLUDED_API
|
||||
|
||||
#include "auto.h"
|
||||
#ifdef HAVE_LIBLUA
|
||||
|
||||
#include <vector>
|
||||
#include <string>
|
||||
#include "Task.h"
|
||||
|
||||
extern "C"
|
||||
{
|
||||
#include "lua.h"
|
||||
#include "lualib.h"
|
||||
#include "lauxlib.h"
|
||||
}
|
||||
|
||||
class API
|
||||
{
|
||||
public:
|
||||
API ();
|
||||
API (const API&);
|
||||
API& operator= (const API&);
|
||||
~API ();
|
||||
|
||||
void initialize ();
|
||||
bool callProgramHook (const std::string&, const std::string&);
|
||||
bool callListHook (const std::string&, const std::string&, std::vector <Task>&);
|
||||
bool callTaskHook (const std::string&, const std::string&, Task&);
|
||||
bool callFieldHook (const std::string&, const std::string&, const std::string&, std::string&);
|
||||
|
||||
private:
|
||||
void loadFile (const std::string&);
|
||||
|
||||
public:
|
||||
lua_State* L;
|
||||
std::vector <std::string> loaded;
|
||||
|
||||
// Context for the API.
|
||||
// std::vector <Task> all;
|
||||
Task current;
|
||||
// std::string& name;
|
||||
// std::string& value;
|
||||
};
|
||||
|
||||
#endif
|
||||
#endif
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
817
src/Att.cpp
Normal file
817
src/Att.cpp
Normal file
@@ -0,0 +1,817 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// task - a command line task list manager.
|
||||
//
|
||||
// Copyright 2006 - 2010, Paul Beckingham.
|
||||
// All rights reserved.
|
||||
//
|
||||
// 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.,
|
||||
// 51 Franklin Street, Fifth Floor,
|
||||
// Boston, MA
|
||||
// 02110-1301
|
||||
// USA
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include <sstream>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "text.h"
|
||||
#include "Color.h"
|
||||
#include "util.h"
|
||||
#include "Date.h"
|
||||
#include "Duration.h"
|
||||
#include "Context.h"
|
||||
#include "Att.h"
|
||||
|
||||
extern Context context;
|
||||
|
||||
static const char* internalNames[] =
|
||||
{
|
||||
"entry",
|
||||
"start",
|
||||
"end",
|
||||
"parent",
|
||||
"uuid",
|
||||
"mask",
|
||||
"imask",
|
||||
"limit",
|
||||
"status",
|
||||
"description",
|
||||
};
|
||||
|
||||
static const char* modifiableNames[] =
|
||||
{
|
||||
"project",
|
||||
"priority",
|
||||
"fg",
|
||||
"bg",
|
||||
"due",
|
||||
"recur",
|
||||
"until",
|
||||
"wait",
|
||||
};
|
||||
|
||||
// Synonyms on the same line.
|
||||
static const char* modifierNames[] =
|
||||
{
|
||||
"before", "under", "below",
|
||||
"after", "over", "above",
|
||||
"none",
|
||||
"any",
|
||||
"is", "equals",
|
||||
"isnt", "not",
|
||||
"has", "contains",
|
||||
"hasnt",
|
||||
"startswith", "left",
|
||||
"endswith", "right",
|
||||
"word",
|
||||
"noword"
|
||||
};
|
||||
|
||||
#define NUM_INTERNAL_NAMES (sizeof (internalNames) / sizeof (internalNames[0]))
|
||||
#define NUM_MODIFIABLE_NAMES (sizeof (modifiableNames) / sizeof (modifiableNames[0]))
|
||||
#define NUM_MODIFIER_NAMES (sizeof (modifierNames) / sizeof (modifierNames[0]))
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Att::Att ()
|
||||
: mName ("")
|
||||
, mValue ("")
|
||||
, mMod ("")
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Att::Att (const std::string& name, const std::string& mod, const std::string& value)
|
||||
{
|
||||
mName = name;
|
||||
mValue = value;
|
||||
mMod = mod;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Att::Att (const std::string& name, const std::string& mod, int value)
|
||||
{
|
||||
mName = name;
|
||||
|
||||
std::stringstream s;
|
||||
s << value;
|
||||
mValue = s.str ();
|
||||
|
||||
mMod = mod;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Att::Att (const std::string& name, const std::string& value)
|
||||
{
|
||||
mName = name;
|
||||
mValue = value;
|
||||
mMod = "";
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Att::Att (const std::string& name, int value)
|
||||
{
|
||||
mName = name;
|
||||
|
||||
std::stringstream s;
|
||||
s << value;
|
||||
mValue = s.str ();
|
||||
|
||||
mMod = "";
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Att::Att (const Att& other)
|
||||
{
|
||||
mName = other.mName;
|
||||
mValue = other.mValue;
|
||||
mMod = other.mMod;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Att& Att::operator= (const Att& other)
|
||||
{
|
||||
if (this != &other)
|
||||
{
|
||||
mName = other.mName;
|
||||
mValue = other.mValue;
|
||||
mMod = other.mMod;
|
||||
}
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Att::~Att ()
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// For parsing.
|
||||
bool Att::valid (const std::string& input) const
|
||||
{
|
||||
Nibbler n (input);
|
||||
std::string ignored;
|
||||
if (n.getUntilOneOf (".:", ignored))
|
||||
{
|
||||
if (ignored.length () == 0)
|
||||
return false;
|
||||
|
||||
while (n.skip ('.'))
|
||||
if (!n.getUntilOneOf (".:", ignored))
|
||||
return false;
|
||||
|
||||
if (n.skip (':') &&
|
||||
(n.getQuoted ('"', ignored) ||
|
||||
n.getUntil (' ', ignored) ||
|
||||
n.getUntilEOS (ignored) ||
|
||||
n.depleted ()))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
bool Att::validInternalName (const std::string& name)
|
||||
{
|
||||
for (unsigned int i = 0; i < NUM_INTERNAL_NAMES; ++i)
|
||||
if (name == internalNames[i])
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
bool Att::validModifiableName (const std::string& name)
|
||||
{
|
||||
for (unsigned int i = 0; i < NUM_MODIFIABLE_NAMES; ++i)
|
||||
if (name == modifiableNames[i])
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
bool Att::validNameValue (
|
||||
const std::string& name,
|
||||
const std::string& mod,
|
||||
const std::string& value)
|
||||
{
|
||||
std::string writableName = name;
|
||||
std::string writableMod = mod;
|
||||
std::string writableValue = value;
|
||||
return Att::validNameValue (writableName, writableMod, writableValue);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
bool Att::validNameValue (
|
||||
std::string& name,
|
||||
std::string& mod,
|
||||
std::string& value)
|
||||
{
|
||||
// First, guess at the full attribute name.
|
||||
std::vector <std::string> candidates;
|
||||
for (unsigned i = 0; i < NUM_INTERNAL_NAMES; ++i)
|
||||
candidates.push_back (internalNames[i]);
|
||||
|
||||
for (unsigned i = 0; i < NUM_MODIFIABLE_NAMES; ++i)
|
||||
candidates.push_back (modifiableNames[i]);
|
||||
|
||||
std::vector <std::string> matches;
|
||||
autoComplete (name, candidates, matches);
|
||||
|
||||
if (matches.size () == 0)
|
||||
return false;
|
||||
|
||||
else if (matches.size () != 1)
|
||||
{
|
||||
std::string error = "Ambiguous attribute '" + name + "' - could be either of "; // TODO i18n
|
||||
|
||||
std::string combined;
|
||||
join (combined, ", ", matches);
|
||||
|
||||
throw error + combined;
|
||||
}
|
||||
|
||||
name = matches[0];
|
||||
|
||||
// Second, guess at the modifier name.
|
||||
if (mod != "")
|
||||
{
|
||||
candidates.clear ();
|
||||
for (unsigned i = 0; i < NUM_MODIFIER_NAMES; ++i)
|
||||
candidates.push_back (modifierNames[i]);
|
||||
|
||||
matches.clear ();
|
||||
autoComplete (mod, candidates, matches);
|
||||
|
||||
if (matches.size () == 0)
|
||||
throw std::string ("Unrecognized modifier '") + mod + "'";
|
||||
|
||||
else if (matches.size () != 1)
|
||||
{
|
||||
std::string error = "Ambiguous modifier '" + mod + "' - could be either of "; // TODO i18n
|
||||
|
||||
std::string combined;
|
||||
join (combined, ", ", matches);
|
||||
error += combined;
|
||||
|
||||
throw error + combined;
|
||||
}
|
||||
|
||||
mod = matches[0];
|
||||
}
|
||||
|
||||
// Some attributes are intended to be private, unless the command is read-
|
||||
// only, in which cased these are perfectly valid elements of a filter.
|
||||
if (context.cmd.isWriteCommand () &&
|
||||
!validModifiableName (name))
|
||||
throw std::string ("\"") +
|
||||
name +
|
||||
"\" is not an attribute you may modify directly.";
|
||||
|
||||
// Thirdly, make sure the value has the expected form or values.
|
||||
if (name == "project")
|
||||
{
|
||||
if (!noSpaces (value))
|
||||
throw std::string ("The '") + name + "' attribute may not contain spaces.";
|
||||
}
|
||||
|
||||
else if (name == "priority")
|
||||
{
|
||||
if (value != "")
|
||||
{
|
||||
value = upperCase (value);
|
||||
if (value != "H" &&
|
||||
value != "M" &&
|
||||
value != "L")
|
||||
throw std::string ("\"") +
|
||||
value +
|
||||
"\" is not a valid priority. Use H, M, L or leave blank.";
|
||||
}
|
||||
}
|
||||
|
||||
else if (name == "description")
|
||||
{
|
||||
if (context.cmd.isWriteCommand ())
|
||||
{
|
||||
if (value == "")
|
||||
throw std::string ("The '") + name + "' attribute must not be blank.";
|
||||
|
||||
if (!noVerticalSpace (value))
|
||||
throw std::string ("The '") + name + "' attribute must not contain vertical white space.";
|
||||
}
|
||||
}
|
||||
|
||||
else if (name == "fg" || name == "bg")
|
||||
{
|
||||
// TODO Determine whether color abbreviations are supported, and if so,
|
||||
// modify 'value' here accordingly.
|
||||
}
|
||||
|
||||
else if (name == "due" ||
|
||||
name == "until" ||
|
||||
name == "wait")
|
||||
{
|
||||
// Validate and convert to epoch.
|
||||
if (value != "")
|
||||
value = Date (value, context.config.get ("dateformat")).toEpochString ();
|
||||
}
|
||||
|
||||
else if (name == "recur")
|
||||
{
|
||||
// Just validate, don't convert to days.
|
||||
Duration d;
|
||||
if (value != "")
|
||||
d.parse (value);
|
||||
}
|
||||
|
||||
else if (name == "limit")
|
||||
{
|
||||
if (value == "" || !digitsOnly (value))
|
||||
throw std::string ("The '") + name + "' attribute must be an integer.";
|
||||
}
|
||||
|
||||
else if (name == "status")
|
||||
{
|
||||
value = lowerCase (value);
|
||||
|
||||
std::vector <std::string> matches;
|
||||
std::vector <std::string> candidates;
|
||||
candidates.push_back ("pending");
|
||||
candidates.push_back ("completed");
|
||||
candidates.push_back ("deleted");
|
||||
candidates.push_back ("recurring");
|
||||
candidates.push_back ("waiting");
|
||||
autoComplete (value, candidates, matches);
|
||||
|
||||
if (matches.size () == 1)
|
||||
value = matches[0];
|
||||
else
|
||||
throw std::string ("\"") +
|
||||
value +
|
||||
"\" is not a valid status. Use 'pending', 'completed', 'deleted', 'recurring' or 'waiting'.";
|
||||
}
|
||||
|
||||
else if (! validInternalName (name) &&
|
||||
! validModifiableName (name))
|
||||
throw std::string ("'") + name + "' is not a recognized attribute.";
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// TODO Deprecated - remove.
|
||||
bool Att::validMod (const std::string& mod)
|
||||
{
|
||||
for (unsigned int i = 0; i < NUM_MODIFIER_NAMES; ++i)
|
||||
if (modifierNames[i] == mod)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// The type of an attribute is useful for modifier evaluation.
|
||||
std::string Att::type (const std::string& name) const
|
||||
{
|
||||
if (name == "due" ||
|
||||
name == "until" ||
|
||||
name == "start" ||
|
||||
name == "entry" ||
|
||||
name == "end" ||
|
||||
name == "wait")
|
||||
return "date";
|
||||
|
||||
else if (name == "recur")
|
||||
return "duration";
|
||||
|
||||
else if (name == "limit")
|
||||
return "number";
|
||||
|
||||
else
|
||||
return "text";
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// The type of an attribute is useful for modifier evaluation.
|
||||
std::string Att::modType (const std::string& name) const
|
||||
{
|
||||
if (name == "hasnt" ||
|
||||
name == "isnt" ||
|
||||
name == "not" || // TODO Verify this.
|
||||
name == "noword")
|
||||
return "negative";
|
||||
|
||||
return "positive";
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// start --> name --> . --> mod --> : --> " --> value --> " --> end
|
||||
// | ^
|
||||
// |_____________________|
|
||||
//
|
||||
void Att::parse (const std::string& input)
|
||||
{
|
||||
Nibbler n (input);
|
||||
parse (n);
|
||||
}
|
||||
|
||||
void Att::parse (Nibbler& n)
|
||||
{
|
||||
// Ensure a clean object first.
|
||||
mName = "";
|
||||
mValue = "";
|
||||
mMod = "";
|
||||
|
||||
if (n.getUntilOneOf (".:", mName))
|
||||
{
|
||||
if (mName.length () == 0)
|
||||
throw std::string ("Missing attribute name"); // TODO i18n
|
||||
|
||||
if (n.skip ('.'))
|
||||
{
|
||||
std::string mod;
|
||||
if (n.getUntil (":", mod))
|
||||
{
|
||||
if (validMod (mod))
|
||||
mMod = mod;
|
||||
else
|
||||
throw std::string ("The name '") + mod + "' is not a valid modifier"; // TODO i18n
|
||||
}
|
||||
else
|
||||
throw std::string ("Missing . or : after modifier"); // TODO i18n
|
||||
}
|
||||
|
||||
if (n.skip (':'))
|
||||
{
|
||||
// Both quoted and unquoted Att's are accepted.
|
||||
// Consider removing this for a stricter parse.
|
||||
if (n.getQuoted ('"', mValue) ||
|
||||
n.getUntil (' ', mValue))
|
||||
{
|
||||
decode (mValue);
|
||||
}
|
||||
}
|
||||
else
|
||||
throw std::string ("Missing : after attribute name"); // TODO i18n
|
||||
}
|
||||
else
|
||||
throw std::string ("Missing : after attribute name"); // TODO i18n
|
||||
|
||||
/* TODO This might be too slow to include. Test this assumption.
|
||||
validNameValue (mName, mMod, mValue);
|
||||
*/
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// "this" is the attribute that has modifiers. "other" is the attribute from a
|
||||
// Record that does not have modifiers, but may have a value.
|
||||
bool Att::match (const Att& other) const
|
||||
{
|
||||
// All matches are assumed to pass, any short-circuit on non-match.
|
||||
bool case_sensitive = context.config.getBoolean ("search.case.sensitive");
|
||||
|
||||
// If there are no mods, just perform a straight compare on value.
|
||||
if (mMod == "")
|
||||
{
|
||||
if (!compare (mValue, other.mValue, (bool) case_sensitive))
|
||||
return false;
|
||||
}
|
||||
|
||||
// has = contains as a substring.
|
||||
else if (mMod == "has" || mMod == "contains") // TODO i18n
|
||||
{
|
||||
if (find (other.mValue, mValue, (bool) case_sensitive) == std::string::npos)
|
||||
return false;
|
||||
}
|
||||
|
||||
// is = equal. Nop.
|
||||
else if (mMod == "is" || mMod == "equals") // TODO i18n
|
||||
{
|
||||
if (!compare (mValue, other.mValue, (bool) case_sensitive))
|
||||
return false;
|
||||
}
|
||||
|
||||
// isnt = not equal.
|
||||
else if (mMod == "isnt" || mMod == "not") // TODO i18n
|
||||
{
|
||||
if (compare (mValue, other.mValue, (bool) case_sensitive))
|
||||
return false;
|
||||
}
|
||||
|
||||
// any = any value, but not empty value.
|
||||
else if (mMod == "any") // TODO i18n
|
||||
{
|
||||
if (other.mValue == "")
|
||||
return false;
|
||||
}
|
||||
|
||||
// none = must have empty value.
|
||||
else if (mMod == "none") // TODO i18n
|
||||
{
|
||||
if (other.mValue != "")
|
||||
return false;
|
||||
}
|
||||
|
||||
// startswith = first characters must match.
|
||||
else if (mMod == "startswith" || mMod == "left") // TODO i18n
|
||||
{
|
||||
if (other.mValue.length () < mValue.length ())
|
||||
return false;
|
||||
|
||||
if (!compare (mValue, other.mValue.substr (0, mValue.length ())))
|
||||
return false;
|
||||
}
|
||||
|
||||
// endswith = last characters must match.
|
||||
else if (mMod == "endswith" || mMod == "right") // TODO i18n
|
||||
{
|
||||
if (other.mValue.length () < mValue.length ())
|
||||
return false;
|
||||
|
||||
if (!compare (mValue, other.mValue.substr (
|
||||
other.mValue.length () - mValue.length (),
|
||||
std::string::npos), (bool) case_sensitive))
|
||||
return false;
|
||||
}
|
||||
|
||||
// hasnt = does not contain as a substring.
|
||||
else if (mMod == "hasnt") // TODO i18n
|
||||
{
|
||||
if (find (other.mValue, mValue, (bool) case_sensitive) != std::string::npos)
|
||||
return false;
|
||||
}
|
||||
|
||||
// before = under = below = <
|
||||
else if (mMod == "before" || mMod == "under" || mMod == "below")
|
||||
{
|
||||
std::string which = type (mName);
|
||||
if (which == "duration")
|
||||
{
|
||||
Duration literal (mValue);
|
||||
Duration variable ((time_t)atoi (other.mValue.c_str ()));
|
||||
if (!(variable < literal))
|
||||
return false;
|
||||
}
|
||||
else if (which == "date")
|
||||
{
|
||||
Date literal (mValue.c_str (), context.config.get ("dateformat"));
|
||||
Date variable ((time_t)atoi (other.mValue.c_str ()));
|
||||
if (other.mValue == "" || ! (variable < literal))
|
||||
return false;
|
||||
}
|
||||
else if (which == "number")
|
||||
{
|
||||
if (atoi (mValue.c_str ()) >= atoi (other.mValue.c_str ()))
|
||||
return false;
|
||||
}
|
||||
else if (which == "text")
|
||||
{
|
||||
if (mValue <= other.mValue)
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// after = over = above = >
|
||||
else if (mMod == "after" || mMod == "over" || mMod == "above")
|
||||
{
|
||||
std::string which = type (mName);
|
||||
if (which == "duration")
|
||||
{
|
||||
Duration literal (mValue);
|
||||
Duration variable ((time_t)atoi (other.mValue.c_str ()));
|
||||
if (! (variable > literal))
|
||||
return false;
|
||||
}
|
||||
else if (which == "date")
|
||||
{
|
||||
Date literal (mValue.c_str (), context.config.get ("dateformat"));
|
||||
Date variable ((time_t)atoi (other.mValue.c_str ()));
|
||||
if (! (variable > literal))
|
||||
return false;
|
||||
}
|
||||
else if (which == "number")
|
||||
{
|
||||
if (atoi (mValue.c_str ()) <= atoi (other.mValue.c_str ()))
|
||||
return false;
|
||||
}
|
||||
else if (which == "text")
|
||||
{
|
||||
if (mValue >= other.mValue)
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// word = contains as a substring, with word boundaries.
|
||||
else if (mMod == "word") // TODO i18n
|
||||
{
|
||||
// Fail if the substring is not found.
|
||||
std::string::size_type sub = find (other.mValue, mValue, (bool) case_sensitive);
|
||||
if (sub == std::string::npos)
|
||||
return false;
|
||||
|
||||
// Also fail if there is no word boundary at beginning and end.
|
||||
if (!isWordStart (other.mValue, sub))
|
||||
return false;
|
||||
|
||||
if (!isWordEnd (other.mValue, sub + mValue.length () - 1))
|
||||
return false;
|
||||
}
|
||||
|
||||
// noword = does not contain as a substring, with word boundaries.
|
||||
else if (mMod == "noword") // TODO i18n
|
||||
{
|
||||
// Fail if the substring is not found.
|
||||
std::string::size_type sub = find (other.mValue, mValue);
|
||||
if (sub != std::string::npos &&
|
||||
isWordStart (other.mValue, sub) &&
|
||||
isWordEnd (other.mValue, sub + mValue.length () - 1))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// name : " value "
|
||||
std::string Att::composeF4 () const
|
||||
{
|
||||
std::string output = "";
|
||||
|
||||
if (mName != "" && mValue != "")
|
||||
{
|
||||
std::string value = mValue;
|
||||
encode (value);
|
||||
enquote (value);
|
||||
|
||||
output += mName + ":" + value;
|
||||
}
|
||||
|
||||
return output;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void Att::mod (const std::string& input)
|
||||
{
|
||||
if (input != "" && !validMod (input))
|
||||
throw std::string ("The name '") + input + "' is not a valid modifier"; // TODO i18n
|
||||
|
||||
mMod = input;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
std::string Att::mod () const
|
||||
{
|
||||
return mMod;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
std::string Att::name () const
|
||||
{
|
||||
return mName;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void Att::name (const std::string& name)
|
||||
{
|
||||
mName = name;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
std::string Att::value () const
|
||||
{
|
||||
return mValue;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void Att::value (const std::string& value)
|
||||
{
|
||||
mValue = value;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
int Att::value_int () const
|
||||
{
|
||||
return atoi (mValue.c_str ());
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void Att::value_int (int value)
|
||||
{
|
||||
std::stringstream s;
|
||||
s << value;
|
||||
mValue = s.str ();
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Add quotes.
|
||||
void Att::enquote (std::string& value) const
|
||||
{
|
||||
value = '"' + value + '"';
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Remove quotes. Instead of being picky, just remove them all. There should
|
||||
// be none within the value, and this will correct for one possible corruption
|
||||
// that hand-editing the pending.data file could cause.
|
||||
void Att::dequote (std::string& value) const
|
||||
{
|
||||
std::string::size_type quote;
|
||||
while ((quote = value.find ('"')) != std::string::npos)
|
||||
value.replace (quote, 1, "");
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Encode values prior to serialization.
|
||||
// \t -> &tab;
|
||||
// ' -> &squot;
|
||||
// " -> &dquot;
|
||||
// , -> ,
|
||||
// [ -> &open;
|
||||
// ] -> &close;
|
||||
// : -> :
|
||||
void Att::encode (std::string& value) const
|
||||
{
|
||||
std::string::size_type i;
|
||||
|
||||
while ((i = value.find ('\t')) != std::string::npos)
|
||||
value.replace (i, 1, "&tab;"); // no i18n
|
||||
|
||||
while ((i = value.find ('\'')) != std::string::npos)
|
||||
value.replace (i, 1, "&squot;"); // no i18n
|
||||
|
||||
while ((i = value.find ('"')) != std::string::npos)
|
||||
value.replace (i, 1, "&dquot;"); // no i18n
|
||||
|
||||
while ((i = value.find (',')) != std::string::npos)
|
||||
value.replace (i, 1, ","); // no i18n
|
||||
|
||||
while ((i = value.find ('[')) != std::string::npos)
|
||||
value.replace (i, 1, "&open;"); // no i18n
|
||||
|
||||
while ((i = value.find (']')) != std::string::npos)
|
||||
value.replace (i, 1, "&close;"); // no i18n
|
||||
|
||||
while ((i = value.find (':')) != std::string::npos)
|
||||
value.replace (i, 1, ":"); // no i18n
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Decode values after parse.
|
||||
// \t <- &tab;
|
||||
// " <- " or &dquot;
|
||||
// ' <- &squot;
|
||||
// , <- ,
|
||||
// [ <- &open;
|
||||
// ] <- &close;
|
||||
// : <- :
|
||||
void Att::decode (std::string& value) const
|
||||
{
|
||||
std::string::size_type i;
|
||||
|
||||
while ((i = value.find ("&tab;")) != std::string::npos) // no i18n
|
||||
value.replace (i, 5, "\t");
|
||||
|
||||
while ((i = value.find ("&dquot;")) != std::string::npos) // no i18n
|
||||
value.replace (i, 7, "\"");
|
||||
|
||||
while ((i = value.find ("&squot;")) != std::string::npos) // no i18n
|
||||
value.replace (i, 7, "'");
|
||||
|
||||
while ((i = value.find (""")) != std::string::npos) // no i18n
|
||||
value.replace (i, 6, "\"");
|
||||
|
||||
while ((i = value.find (",")) != std::string::npos) // no i18n
|
||||
value.replace (i, 7, ",");
|
||||
|
||||
while ((i = value.find ("&open;")) != std::string::npos) // no i18n
|
||||
value.replace (i, 6, "[");
|
||||
|
||||
while ((i = value.find ("&close;")) != std::string::npos) // no i18n
|
||||
value.replace (i, 7, "]");
|
||||
|
||||
while ((i = value.find (":")) != std::string::npos) // no i18n
|
||||
value.replace (i, 7, ":");
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
85
src/Att.h
Normal file
85
src/Att.h
Normal file
@@ -0,0 +1,85 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// task - a command line task list manager.
|
||||
//
|
||||
// Copyright 2006 - 2010, Paul Beckingham.
|
||||
// All rights reserved.
|
||||
//
|
||||
// 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.,
|
||||
// 51 Franklin Street, Fifth Floor,
|
||||
// Boston, MA
|
||||
// 02110-1301
|
||||
// USA
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
#ifndef INCLUDED_ATT
|
||||
#define INCLUDED_ATT
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include "Nibbler.h"
|
||||
|
||||
class Att
|
||||
{
|
||||
public:
|
||||
Att ();
|
||||
Att (const std::string&, const std::string&, const std::string&);
|
||||
Att (const std::string&, const std::string&, int);
|
||||
Att (const std::string&, const std::string&);
|
||||
Att (const std::string&, int);
|
||||
Att (const Att&);
|
||||
Att& operator= (const Att&);
|
||||
~Att ();
|
||||
|
||||
bool valid (const std::string&) const;
|
||||
static bool validInternalName (const std::string&);
|
||||
static bool validModifiableName (const std::string&);
|
||||
static bool validNameValue (const std::string&, const std::string&, const std::string&);
|
||||
static bool validNameValue (std::string&, std::string&, std::string&);
|
||||
static bool validMod (const std::string&);
|
||||
std::string type (const std::string&) const;
|
||||
std::string modType (const std::string&) const;
|
||||
void parse (const std::string&);
|
||||
void parse (Nibbler&);
|
||||
bool match (const Att&) const;
|
||||
|
||||
std::string composeF4 () const;
|
||||
|
||||
void mod (const std::string&);
|
||||
std::string mod () const;
|
||||
|
||||
std::string name () const;
|
||||
void name (const std::string&);
|
||||
|
||||
std::string value () const;
|
||||
void value (const std::string&);
|
||||
|
||||
int value_int () const;
|
||||
void value_int (int);
|
||||
|
||||
private:
|
||||
void enquote (std::string&) const;
|
||||
void dequote (std::string&) const;
|
||||
void encode (std::string&) const;
|
||||
void decode (std::string&) const;
|
||||
|
||||
private:
|
||||
std::string mName;
|
||||
std::string mValue;
|
||||
std::string mMod;
|
||||
};
|
||||
|
||||
#endif
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
240
src/Cmd.cpp
Normal file
240
src/Cmd.cpp
Normal file
@@ -0,0 +1,240 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// task - a command line task list manager.
|
||||
//
|
||||
// Copyright 2006 - 2010, Paul Beckingham.
|
||||
// All rights reserved.
|
||||
//
|
||||
// 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.,
|
||||
// 51 Franklin Street, Fifth Floor,
|
||||
// Boston, MA
|
||||
// 02110-1301
|
||||
// USA
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include <algorithm>
|
||||
#include "Cmd.h"
|
||||
#include "Context.h"
|
||||
#include "util.h"
|
||||
#include "text.h"
|
||||
#include "i18n.h"
|
||||
#include "main.h"
|
||||
|
||||
extern Context context;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Cmd::Cmd ()
|
||||
: command ("")
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Cmd::Cmd (const std::string& input)
|
||||
{
|
||||
parse (input);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Cmd::~Cmd ()
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Determines whether the string represents a unique command name or custom
|
||||
// report name.
|
||||
bool Cmd::valid (const std::string& input)
|
||||
{
|
||||
load ();
|
||||
|
||||
std::vector <std::string> matches;
|
||||
autoComplete (lowerCase (context.canonicalize (input)), commands, matches);
|
||||
return matches.size () == 1 ? true : false;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Determines whether the string represents a valid custom report name.
|
||||
bool Cmd::validCustom (const std::string& input)
|
||||
{
|
||||
load ();
|
||||
|
||||
std::vector <std::string> matches;
|
||||
autoComplete (lowerCase (context.canonicalize (input)), customReports, matches);
|
||||
return matches.size () == 1 ? true : false;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void Cmd::parse (const std::string& input)
|
||||
{
|
||||
load ();
|
||||
|
||||
std::string candidate = lowerCase (context.canonicalize (input));
|
||||
|
||||
std::vector <std::string> matches;
|
||||
autoComplete (candidate, commands, matches);
|
||||
if (1 == matches.size ())
|
||||
command = matches[0];
|
||||
|
||||
else if (0 == matches.size ())
|
||||
command = "";
|
||||
|
||||
else
|
||||
{
|
||||
std::string error = "Ambiguous command '" + candidate + "' - could be either of "; // TODO i18n
|
||||
|
||||
std::string combined;
|
||||
join (combined, ", ", matches);
|
||||
throw error + combined;
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void Cmd::load ()
|
||||
{
|
||||
if (commands.size () == 0)
|
||||
{
|
||||
commands.push_back ("_projects");
|
||||
commands.push_back ("_tags");
|
||||
commands.push_back ("_commands");
|
||||
commands.push_back ("_ids");
|
||||
commands.push_back ("_config");
|
||||
commands.push_back ("_version");
|
||||
commands.push_back (context.stringtable.get (CMD_ADD, "add"));
|
||||
commands.push_back (context.stringtable.get (CMD_APPEND, "append"));
|
||||
commands.push_back (context.stringtable.get (CMD_ANNOTATE, "annotate"));
|
||||
commands.push_back (context.stringtable.get (CMD_CALENDAR, "calendar"));
|
||||
commands.push_back (context.stringtable.get (CMD_COLORS, "colors"));
|
||||
commands.push_back (context.stringtable.get (CMD_CONFIG, "config"));
|
||||
commands.push_back (context.stringtable.get (CMD_DELETE, "delete"));
|
||||
commands.push_back (context.stringtable.get (CMD_DONE, "done"));
|
||||
commands.push_back (context.stringtable.get (CMD_DUPLICATE, "duplicate"));
|
||||
commands.push_back (context.stringtable.get (CMD_EDIT, "edit"));
|
||||
commands.push_back (context.stringtable.get (CMD_EXPORT, "export"));
|
||||
commands.push_back (context.stringtable.get (CMD_HELP, "help"));
|
||||
commands.push_back (context.stringtable.get (CMD_HISTORY, "history"));
|
||||
commands.push_back (context.stringtable.get (CMD_GHISTORY, "ghistory"));
|
||||
commands.push_back (context.stringtable.get (CMD_IMPORT, "import"));
|
||||
commands.push_back (context.stringtable.get (CMD_INFO, "info"));
|
||||
commands.push_back (context.stringtable.get (CMD_PREPEND, "prepend"));
|
||||
commands.push_back (context.stringtable.get (CMD_PROJECTS, "projects"));
|
||||
#ifdef FEATURE_SHELL
|
||||
commands.push_back (context.stringtable.get (CMD_SHELL, "shell"));
|
||||
#endif
|
||||
commands.push_back (context.stringtable.get (CMD_START, "start"));
|
||||
commands.push_back (context.stringtable.get (CMD_STATS, "stats"));
|
||||
commands.push_back (context.stringtable.get (CMD_STOP, "stop"));
|
||||
commands.push_back (context.stringtable.get (CMD_SUMMARY, "summary"));
|
||||
commands.push_back (context.stringtable.get (CMD_TAGS, "tags"));
|
||||
commands.push_back (context.stringtable.get (CMD_TIMESHEET, "timesheet"));
|
||||
commands.push_back (context.stringtable.get (CMD_UNDO, "undo"));
|
||||
commands.push_back (context.stringtable.get (CMD_VERSION, "version"));
|
||||
|
||||
// Now load the custom reports.
|
||||
std::vector <std::string> all;
|
||||
context.config.all (all);
|
||||
|
||||
foreach (i, all)
|
||||
{
|
||||
if (i->substr (0, 7) == "report.")
|
||||
{
|
||||
std::string report = i->substr (7);
|
||||
std::string::size_type columns = report.find (".columns");
|
||||
if (columns != std::string::npos)
|
||||
{
|
||||
report = report.substr (0, columns);
|
||||
|
||||
// Make sure a custom report does not clash with a built-in
|
||||
// command.
|
||||
if (std::find (commands.begin (), commands.end (), report) != commands.end ())
|
||||
throw std::string ("Custom report '") + report +
|
||||
"' conflicts with built-in task command.";
|
||||
|
||||
// A custom report is also a command.
|
||||
customReports.push_back (report);
|
||||
commands.push_back (report);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void Cmd::allCustomReports (std::vector <std::string>& all) const
|
||||
{
|
||||
all = customReports;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void Cmd::allCommands (std::vector <std::string>& all) const
|
||||
{
|
||||
all.clear ();
|
||||
foreach (command, commands)
|
||||
if (command->substr (0, 1) != "_")
|
||||
all.push_back (*command);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Commands that do not directly modify the data files.
|
||||
bool Cmd::isReadOnlyCommand ()
|
||||
{
|
||||
if (command == "_projects" ||
|
||||
command == "_tags" ||
|
||||
command == "_commands" ||
|
||||
command == "_ids" ||
|
||||
command == "_config" ||
|
||||
command == "_version" ||
|
||||
command == context.stringtable.get (CMD_CALENDAR, "calendar") ||
|
||||
command == context.stringtable.get (CMD_COLORS, "colors") ||
|
||||
command == context.stringtable.get (CMD_CONFIG, "config") ||
|
||||
command == context.stringtable.get (CMD_EXPORT, "export") ||
|
||||
command == context.stringtable.get (CMD_HELP, "help") ||
|
||||
command == context.stringtable.get (CMD_HISTORY, "history") ||
|
||||
command == context.stringtable.get (CMD_GHISTORY, "ghistory") ||
|
||||
command == context.stringtable.get (CMD_INFO, "info") ||
|
||||
command == context.stringtable.get (CMD_PROJECTS, "projects") ||
|
||||
command == context.stringtable.get (CMD_SHELL, "shell") ||
|
||||
command == context.stringtable.get (CMD_STATS, "stats") ||
|
||||
command == context.stringtable.get (CMD_SUMMARY, "summary") ||
|
||||
command == context.stringtable.get (CMD_TAGS, "tags") ||
|
||||
command == context.stringtable.get (CMD_TIMESHEET, "timesheet") ||
|
||||
command == context.stringtable.get (CMD_VERSION, "version") ||
|
||||
validCustom (command))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Commands that directly modify the data files.
|
||||
bool Cmd::isWriteCommand ()
|
||||
{
|
||||
if (command == context.stringtable.get (CMD_ADD, "add") ||
|
||||
command == context.stringtable.get (CMD_APPEND, "append") ||
|
||||
command == context.stringtable.get (CMD_ANNOTATE, "annotate") ||
|
||||
command == context.stringtable.get (CMD_DELETE, "delete") ||
|
||||
command == context.stringtable.get (CMD_DONE, "done") ||
|
||||
command == context.stringtable.get (CMD_DUPLICATE, "duplicate") ||
|
||||
command == context.stringtable.get (CMD_EDIT, "edit") ||
|
||||
command == context.stringtable.get (CMD_IMPORT, "import") ||
|
||||
command == context.stringtable.get (CMD_PREPEND, "prepend") ||
|
||||
command == context.stringtable.get (CMD_START, "start") ||
|
||||
command == context.stringtable.get (CMD_STOP, "stop") ||
|
||||
command == context.stringtable.get (CMD_UNDO, "undo"))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
64
src/Cmd.h
Normal file
64
src/Cmd.h
Normal file
@@ -0,0 +1,64 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// task - a command line task list manager.
|
||||
//
|
||||
// Copyright 2006 - 2010, Paul Beckingham.
|
||||
// All rights reserved.
|
||||
//
|
||||
// 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.,
|
||||
// 51 Franklin Street, Fifth Floor,
|
||||
// Boston, MA
|
||||
// 02110-1301
|
||||
// USA
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
#ifndef INCLUDED_CMD
|
||||
#define INCLUDED_CMD
|
||||
|
||||
#include <vector>
|
||||
#include <string>
|
||||
|
||||
class Cmd
|
||||
{
|
||||
public:
|
||||
Cmd (); // Default constructor
|
||||
Cmd (const std::string&); // Default constructor
|
||||
~Cmd (); // Destructor
|
||||
|
||||
Cmd (const Cmd&);
|
||||
Cmd& operator= (const Cmd&);
|
||||
|
||||
bool valid (const std::string&);
|
||||
bool validCustom (const std::string&);
|
||||
void parse (const std::string&);
|
||||
void allCustomReports (std::vector <std::string>&) const;
|
||||
void allCommands (std::vector <std::string>&) const;
|
||||
|
||||
bool isReadOnlyCommand ();
|
||||
bool isWriteCommand ();
|
||||
|
||||
public:
|
||||
std::string command;
|
||||
|
||||
private:
|
||||
void load ();
|
||||
|
||||
private:
|
||||
std::vector <std::string> commands;
|
||||
std::vector <std::string> customReports;
|
||||
};
|
||||
|
||||
#endif
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
557
src/Color.cpp
Normal file
557
src/Color.cpp
Normal file
@@ -0,0 +1,557 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// task - a command line task list manager.
|
||||
//
|
||||
// Copyright 2006 - 2010, Paul Beckingham.
|
||||
// All rights reserved.
|
||||
//
|
||||
// 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.,
|
||||
// 51 Franklin Street, Fifth Floor,
|
||||
// Boston, MA
|
||||
// 02110-1301
|
||||
// USA
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
#include <iostream>
|
||||
#include <iomanip>
|
||||
#include <sstream>
|
||||
#include <vector>
|
||||
#include <algorithm>
|
||||
#include "Color.h"
|
||||
#include "text.h"
|
||||
#include "i18n.h"
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
static struct
|
||||
{
|
||||
Color::color_id id;
|
||||
int string_id;
|
||||
std::string english_name;
|
||||
int index; // offset red=3 (therefore fg=33, bg=43)
|
||||
} allColors[] =
|
||||
{
|
||||
// Color.h enum i18n.h English Index
|
||||
{ Color::nocolor, 0, "none", 0},
|
||||
{ Color::black, CCOLOR_BLACK, "black", 1}, // fg 29+0 bg 39+0
|
||||
{ Color::red, CCOLOR_RED, "red", 2},
|
||||
{ Color::green, CCOLOR_GREEN, "green", 3},
|
||||
{ Color::yellow, CCOLOR_YELLOW, "yellow", 4},
|
||||
{ Color::blue, CCOLOR_BLUE, "blue", 5},
|
||||
{ Color::magenta, CCOLOR_MAGENTA, "magenta", 6},
|
||||
{ Color::cyan, CCOLOR_CYAN, "cyan", 7},
|
||||
{ Color::white, CCOLOR_WHITE, "white", 8},
|
||||
|
||||
};
|
||||
|
||||
#define NUM_COLORS (sizeof (allColors) / sizeof (allColors[0]))
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Color::Color ()
|
||||
: value (0)
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Color::Color (const Color& other)
|
||||
{
|
||||
value = other.value;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Color::Color (unsigned int c)
|
||||
: value (0)
|
||||
{
|
||||
if (!(c & _COLOR_HASFG)) value &= ~_COLOR_FG;
|
||||
if (!(c & _COLOR_HASBG)) value &= ~_COLOR_BG;
|
||||
|
||||
value = c & (_COLOR_256 | _COLOR_HASBG | _COLOR_HASFG |_COLOR_UNDERLINE |
|
||||
_COLOR_BOLD | _COLOR_BRIGHT | _COLOR_BG | _COLOR_FG);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Supports the following constructs:
|
||||
// [bright] [color] [on color] [bright] [underline]
|
||||
//
|
||||
// Where [color] is one of:
|
||||
// black
|
||||
// red
|
||||
// ...
|
||||
// grayN 0 <= N <= 23 fg 38;5;232 + N bg 48;5;232 + N
|
||||
// greyN 0 <= N <= 23 fg 38;5;232 + N bg 48;5;232 + N
|
||||
// colorN 0 <= N <= 255 fg 38;5;N bg 48;5;N
|
||||
// rgbRGB 0 <= R,G,B <= 5 fg 38;5;16 + R*36 + G*6 + B bg 48;5;16 + R*36 + G*6 + B
|
||||
Color::Color (const std::string& spec)
|
||||
: value (0)
|
||||
{
|
||||
// By converting underscores to spaces, we inherently support the old "on_red"
|
||||
// style of specifying background colors. We consider underscores to be
|
||||
// deprecated.
|
||||
std::string modifiable_spec = spec;
|
||||
std::replace (modifiable_spec.begin (), modifiable_spec.end (), '_', ' ');
|
||||
|
||||
// Split spec into words.
|
||||
std::vector <std::string> words;
|
||||
split (words, modifiable_spec, ' ');
|
||||
|
||||
// Construct the color as two separate colors, then blend them later. This
|
||||
// make it possible to declare a color such as "color1 on black", and have
|
||||
// the upgrade work properly.
|
||||
unsigned int fg_value = 0;
|
||||
unsigned int bg_value = 0;
|
||||
|
||||
bool bg = false;
|
||||
int index;
|
||||
std::string word;
|
||||
std::vector <std::string>::iterator it;
|
||||
for (it = words.begin (); it != words.end (); ++it)
|
||||
{
|
||||
word = lowerCase (trim (*it));
|
||||
|
||||
if (word == "bold") fg_value |= _COLOR_BOLD;
|
||||
else if (word == "bright") bg_value |= _COLOR_BRIGHT;
|
||||
else if (word == "underline") fg_value |= _COLOR_UNDERLINE;
|
||||
else if (word == "on") bg = true;
|
||||
|
||||
// X where X is one of black, red, blue ...
|
||||
else if ((index = find (word)) != -1)
|
||||
{
|
||||
if (bg)
|
||||
{
|
||||
bg_value |= _COLOR_HASBG;
|
||||
bg_value |= index << 8;
|
||||
}
|
||||
else
|
||||
{
|
||||
fg_value |= _COLOR_HASFG;
|
||||
fg_value |= index;
|
||||
}
|
||||
}
|
||||
|
||||
// greyN/grayN, where 0 <= N <= 23.
|
||||
else if (word.substr (0, 4) == "grey" ||
|
||||
word.substr (0, 4) == "gray")
|
||||
{
|
||||
index = atoi (word.substr (4).c_str ());
|
||||
if (index < 0 || index > 23)
|
||||
throw std::string ("The color '") + *it + "' is not recognized.";
|
||||
|
||||
if (bg)
|
||||
{
|
||||
bg_value |= _COLOR_HASBG;
|
||||
bg_value |= (index + 232) << 8;
|
||||
bg_value |= _COLOR_256;
|
||||
}
|
||||
else
|
||||
{
|
||||
fg_value |= _COLOR_HASFG;
|
||||
fg_value |= index + 232;
|
||||
fg_value |= _COLOR_256;
|
||||
}
|
||||
}
|
||||
|
||||
// rgbRGB, where 0 <= R,G,B <= 5.
|
||||
else if (word.substr (0, 3) == "rgb")
|
||||
{
|
||||
index = atoi (word.substr (3).c_str ());
|
||||
if (word.length () != 6 ||
|
||||
index < 0 || index > 555)
|
||||
throw std::string ("The color '") + *it + "' is not recognized.";
|
||||
|
||||
int r = atoi (word.substr (3, 1).c_str ());
|
||||
int g = atoi (word.substr (4, 1).c_str ());
|
||||
int b = atoi (word.substr (5, 1).c_str ());
|
||||
if (r < 0 || r > 5 ||
|
||||
g < 0 || g > 5 ||
|
||||
b < 0 || b > 5)
|
||||
throw std::string ("The color '") + *it + "' is not recognized.";
|
||||
|
||||
index = 16 + r*36 + g*6 + b;
|
||||
|
||||
if (bg)
|
||||
{
|
||||
bg_value |= _COLOR_HASBG;
|
||||
bg_value |= index << 8;
|
||||
bg_value |= _COLOR_256;
|
||||
}
|
||||
else
|
||||
{
|
||||
fg_value |= _COLOR_HASFG;
|
||||
fg_value |= index;
|
||||
fg_value |= _COLOR_256;
|
||||
}
|
||||
}
|
||||
|
||||
// colorN, where 0 <= N <= 255.
|
||||
else if (word.substr (0, 5) == "color")
|
||||
{
|
||||
index = atoi (word.substr (5).c_str ());
|
||||
if (index < 0 || index > 255)
|
||||
throw std::string ("The color '") + *it + "' is not recognized.";
|
||||
|
||||
upgrade ();
|
||||
|
||||
if (bg)
|
||||
{
|
||||
bg_value |= _COLOR_HASBG;
|
||||
bg_value |= index << 8;
|
||||
bg_value |= _COLOR_256;
|
||||
}
|
||||
else
|
||||
{
|
||||
fg_value |= _COLOR_HASFG;
|
||||
fg_value |= index;
|
||||
fg_value |= _COLOR_256;
|
||||
}
|
||||
}
|
||||
else if (word != "")
|
||||
throw std::string ("The color '") + *it + "' is not recognized.";
|
||||
}
|
||||
|
||||
// Now combine the fg and bg into a single color.
|
||||
value = fg_value;
|
||||
blend (Color (bg_value));
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Color::Color (color_id fg)
|
||||
: value (0)
|
||||
{
|
||||
if (fg != Color::nocolor)
|
||||
{
|
||||
value |= _COLOR_HASFG;
|
||||
value |= fg;
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Color::Color (color_id fg, color_id bg)
|
||||
: value (0)
|
||||
{
|
||||
if (bg != Color::nocolor)
|
||||
{
|
||||
value |= _COLOR_HASBG;
|
||||
value |= (bg << 8);
|
||||
}
|
||||
|
||||
if (fg != Color::nocolor)
|
||||
{
|
||||
value |= _COLOR_HASFG;
|
||||
value |= fg;
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Color::Color (color_id fg, color_id bg, bool underline, bool bold, bool bright)
|
||||
: value (0)
|
||||
{
|
||||
value |= ((underline ? 1 : 0) << 18)
|
||||
| ((bold ? 1 : 0) << 17)
|
||||
| ((bright ? 1 : 0) << 16);
|
||||
|
||||
if (bg != Color::nocolor)
|
||||
{
|
||||
value |= _COLOR_HASBG;
|
||||
value |= (bg << 8);
|
||||
}
|
||||
|
||||
if (fg != Color::nocolor)
|
||||
{
|
||||
value |= _COLOR_HASFG;
|
||||
value |= fg;
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Color::~Color ()
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Color& Color::operator= (const Color& other)
|
||||
{
|
||||
if (this != &other)
|
||||
value = other.value;
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Color::operator std::string () const
|
||||
{
|
||||
std::string description;
|
||||
if (value & _COLOR_BOLD) description += "bold";
|
||||
|
||||
if (value & _COLOR_UNDERLINE)
|
||||
description += std::string (description.length () ? " " : "") + "underline";
|
||||
|
||||
if (value & _COLOR_HASFG)
|
||||
description += std::string (description.length () ? " " : "") + fg ();
|
||||
|
||||
if (value & _COLOR_HASBG)
|
||||
{
|
||||
description += std::string (description.length () ? " " : "") + "on";
|
||||
|
||||
if (value & _COLOR_BRIGHT)
|
||||
description += std::string (description.length () ? " " : "") + "bright";
|
||||
|
||||
description += " " + bg ();
|
||||
}
|
||||
|
||||
return description;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Color::operator int () const
|
||||
{
|
||||
return (int) value;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// If 'other' has styles that are compatible, merge them into this. Colors in
|
||||
// other take precedence.
|
||||
void Color::blend (const Color& other)
|
||||
{
|
||||
Color c (other);
|
||||
value |= (c.value & _COLOR_UNDERLINE); // Always inherit underline.
|
||||
|
||||
// 16 <-- 16.
|
||||
if (!(value & _COLOR_256) &&
|
||||
!(c.value & _COLOR_256))
|
||||
{
|
||||
value |= (c.value & _COLOR_BOLD); // Inherit bold.
|
||||
value |= (c.value & _COLOR_BRIGHT); // Inherit bright.
|
||||
|
||||
if (c.value & _COLOR_HASFG)
|
||||
{
|
||||
value |= _COLOR_HASFG; // There is now a color.
|
||||
value &= ~_COLOR_FG; // Remove previous color.
|
||||
value |= (c.value & _COLOR_FG); // Apply other color.
|
||||
}
|
||||
|
||||
if (c.value & _COLOR_HASBG)
|
||||
{
|
||||
value |= _COLOR_HASBG; // There is now a color.
|
||||
value &= ~_COLOR_BG; // Remove previous color.
|
||||
value |= (c.value & _COLOR_BG); // Apply other color.
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// Upgrade either color, if necessary.
|
||||
if (!(value & _COLOR_256)) upgrade ();
|
||||
if (!(c.value & _COLOR_256)) c.upgrade ();
|
||||
|
||||
// 256 <-- 256.
|
||||
if (c.value & _COLOR_HASFG)
|
||||
{
|
||||
value |= _COLOR_HASFG; // There is now a color.
|
||||
value &= ~_COLOR_FG; // Remove previous color.
|
||||
value |= (c.value & _COLOR_FG); // Apply other color.
|
||||
}
|
||||
|
||||
if (c.value & _COLOR_HASBG)
|
||||
{
|
||||
value |= _COLOR_HASBG; // There is now a color.
|
||||
value &= ~_COLOR_BG; // Remove previous color.
|
||||
value |= (c.value & _COLOR_BG); // Apply other color.
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void Color::upgrade ()
|
||||
{
|
||||
if (!(value & _COLOR_256))
|
||||
{
|
||||
if (value & _COLOR_HASFG)
|
||||
{
|
||||
bool bold = value & _COLOR_BOLD;
|
||||
unsigned int fg = value & _COLOR_FG;
|
||||
value &= ~_COLOR_FG;
|
||||
value &= ~_COLOR_BOLD;
|
||||
value |= (bold ? fg + 7 : fg - 1);
|
||||
}
|
||||
|
||||
if (value & _COLOR_HASBG)
|
||||
{
|
||||
bool bright = value & _COLOR_BRIGHT;
|
||||
unsigned int bg = (value & _COLOR_BG) >> 8;
|
||||
value &= ~_COLOR_BG;
|
||||
value &= ~_COLOR_BRIGHT;
|
||||
value |= (bright ? bg + 7 : bg - 1) << 8;
|
||||
}
|
||||
|
||||
value |= _COLOR_256;
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Sample color codes:
|
||||
// red \033[31m
|
||||
// bold red \033[91m
|
||||
// underline red \033[4;31m
|
||||
// bold underline red \033[1;4;31m
|
||||
//
|
||||
// on red \033[41m
|
||||
// on bright red \033[101m
|
||||
//
|
||||
// 256 fg \033[38;5;Nm
|
||||
// 256 bg \033[48;5;Nm
|
||||
std::string Color::colorize (const std::string& input)
|
||||
{
|
||||
if (value == 0)
|
||||
return input;
|
||||
|
||||
int count = 0;
|
||||
std::stringstream result;
|
||||
|
||||
// 256 color
|
||||
if (value & _COLOR_256)
|
||||
{
|
||||
bool needTerminator = false;
|
||||
|
||||
if (value & _COLOR_UNDERLINE)
|
||||
{
|
||||
result << "\033[4m";
|
||||
needTerminator = true;
|
||||
}
|
||||
|
||||
if (value & _COLOR_HASFG)
|
||||
{
|
||||
result << "\033[38;5;" << (value & _COLOR_FG) << "m";
|
||||
needTerminator = true;
|
||||
}
|
||||
|
||||
if (value & _COLOR_HASBG)
|
||||
{
|
||||
result << "\033[48;5;" << ((value & _COLOR_BG) >> 8) << "m";
|
||||
needTerminator = true;
|
||||
}
|
||||
|
||||
result << input;
|
||||
if (needTerminator)
|
||||
result << "\033[0m";
|
||||
|
||||
return result.str ();
|
||||
}
|
||||
|
||||
// 16 color
|
||||
if (value != 0)
|
||||
{
|
||||
result << "\033[";
|
||||
|
||||
if (value & _COLOR_BOLD)
|
||||
{
|
||||
if (count++) result << ";";
|
||||
result << "1";
|
||||
}
|
||||
|
||||
if (value & _COLOR_UNDERLINE)
|
||||
{
|
||||
if (count++) result << ";";
|
||||
result << "4";
|
||||
}
|
||||
|
||||
if (value & _COLOR_HASFG)
|
||||
{
|
||||
if (count++) result << ";";
|
||||
result << (29 + (value & _COLOR_FG));
|
||||
}
|
||||
|
||||
if (value & _COLOR_HASBG)
|
||||
{
|
||||
if (count++) result << ";";
|
||||
result << ((value & _COLOR_BRIGHT ? 99 : 39) + ((value & _COLOR_BG) >> 8));
|
||||
}
|
||||
|
||||
result << "m" << input << "\033[0m";
|
||||
return result.str ();
|
||||
}
|
||||
|
||||
return input;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
std::string Color::colorize (const std::string& input, const std::string& spec)
|
||||
{
|
||||
Color c (spec);
|
||||
return c.colorize (input);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
bool Color::nontrivial ()
|
||||
{
|
||||
return value != 0 ? true : false;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
int Color::find (const std::string& input)
|
||||
{
|
||||
for (unsigned int i = 0; i < NUM_COLORS; ++i)
|
||||
if (allColors[i].english_name == input)
|
||||
return (int) i;
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
std::string Color::fg () const
|
||||
{
|
||||
int index = value & _COLOR_FG;
|
||||
|
||||
if (value & _COLOR_256)
|
||||
{
|
||||
if (value & _COLOR_HASFG)
|
||||
{
|
||||
std::stringstream s;
|
||||
s << "color" << (value & _COLOR_FG);
|
||||
return s.str ();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for (unsigned int i = 0; i < NUM_COLORS; ++i)
|
||||
if (allColors[i].index == index)
|
||||
return allColors[i].english_name;
|
||||
}
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
std::string Color::bg () const
|
||||
{
|
||||
int index = (value & _COLOR_BG) >> 8;
|
||||
|
||||
if (value & _COLOR_256)
|
||||
{
|
||||
if (value & _COLOR_HASBG)
|
||||
{
|
||||
std::stringstream s;
|
||||
s << "color" << ((value & _COLOR_BG) >> 8);
|
||||
return s.str ();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for (unsigned int i = 0; i < NUM_COLORS; ++i)
|
||||
if (allColors[i].index == index)
|
||||
return allColors[i].english_name;
|
||||
}
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
78
src/Color.h
Normal file
78
src/Color.h
Normal file
@@ -0,0 +1,78 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// task - a command line task list manager.
|
||||
//
|
||||
// Copyright 2006 - 2010, Paul Beckingham.
|
||||
// All rights reserved.
|
||||
//
|
||||
// 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.,
|
||||
// 51 Franklin Street, Fifth Floor,
|
||||
// Boston, MA
|
||||
// 02110-1301
|
||||
// USA
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
#ifndef INCLUDED_COLOR
|
||||
#define INCLUDED_COLOR
|
||||
|
||||
#include <string>
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
#define _COLOR_256 0x00200000 // 256-color mode.
|
||||
#define _COLOR_HASBG 0x00100000 // Has background color (all values taken).
|
||||
#define _COLOR_HASFG 0x00080000 // Has foreground color (all values taken).
|
||||
#define _COLOR_UNDERLINE 0x00040000 // General underline attribute.
|
||||
#define _COLOR_BOLD 0x00020000 // 16-color bold attribute.
|
||||
#define _COLOR_BRIGHT 0x00010000 // 16-color bright background attribute.
|
||||
#define _COLOR_BG 0x0000FF00 // 8-bit background color index.
|
||||
#define _COLOR_FG 0x000000FF // 8-bit foreground color index.
|
||||
|
||||
class Color
|
||||
{
|
||||
public:
|
||||
enum color_id {nocolor = 0, black, red, green, yellow, blue, magenta, cyan, white};
|
||||
|
||||
Color ();
|
||||
Color (const Color&);
|
||||
Color (unsigned int); // 256 | UNDERLINE | BOLD | BRIGHT | (BG << 8) | FG
|
||||
Color (const std::string&); // "red on bright black"
|
||||
Color (color_id); // fg.
|
||||
Color (color_id, color_id); // fg, bg.
|
||||
Color (color_id, color_id, bool, bool, bool); // fg, bg, underline, bold, bright
|
||||
~Color ();
|
||||
Color& operator= (const Color&);
|
||||
operator std::string () const;
|
||||
operator int () const;
|
||||
|
||||
void upgrade ();
|
||||
void blend (const Color&);
|
||||
|
||||
std::string colorize (const std::string&);
|
||||
static std::string colorize (const std::string&, const std::string&);
|
||||
|
||||
bool nontrivial ();
|
||||
|
||||
private:
|
||||
int find (const std::string&);
|
||||
std::string fg () const;
|
||||
std::string bg () const;
|
||||
|
||||
private:
|
||||
unsigned int value;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
585
src/Config.cpp
585
src/Config.cpp
@@ -1,7 +1,7 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// task - a command line task list manager.
|
||||
//
|
||||
// Copyright 2006 - 2008, Paul Beckingham.
|
||||
// Copyright 2006 - 2010, Paul Beckingham.
|
||||
// All rights reserved.
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify it under
|
||||
@@ -27,12 +27,271 @@
|
||||
#include <iostream>
|
||||
#include <fstream>
|
||||
#include <sstream>
|
||||
#include <algorithm>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <unistd.h>
|
||||
#include <stdlib.h>
|
||||
#include "task.h"
|
||||
#include <pwd.h>
|
||||
#include "Directory.h"
|
||||
#include "File.h"
|
||||
#include "Config.h"
|
||||
#include "text.h"
|
||||
#include "util.h"
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// This string is used in two ways:
|
||||
// 1) It is used to create a new .taskrc file, by copying it directly to disk.
|
||||
// 2) It is parsed and used as default values for all Config.get calls.
|
||||
std::string Config::defaults =
|
||||
"# Task program configuration file.\n"
|
||||
"# For more documentation, see http://taskwarrior.org or try 'man task', 'man task-faq',\n"
|
||||
"# 'man task-tutorial', 'man task-color' or 'man taskrc'\n"
|
||||
"\n"
|
||||
"# Here is an example of entries that use the default, override and blank values\n"
|
||||
"# variable=foo -- By specifying a value, this overrides the default\n"
|
||||
"# variable= -- By specifying no value, this means no default\n"
|
||||
"# #variable=foo -- By commenting out the line, this uses the default\n"
|
||||
"\n"
|
||||
"# Files\n"
|
||||
"data.location=~/.task\n"
|
||||
"locking=on # Use file-level locking\n"
|
||||
"\n"
|
||||
"# Terminal\n"
|
||||
"curses=on # Use ncurses library to determine terminal width\n"
|
||||
"defaultwidth=80 # Without ncurses, assumed width\n"
|
||||
"#editor=vi # Preferred text editor\n"
|
||||
"\n"
|
||||
"# Miscellaneous\n"
|
||||
"confirmation=yes # Confirmation on delete, big changes\n"
|
||||
"echo.command=yes # Details on command just run\n"
|
||||
"annotations=full # Level of verbosity for annotations: full, sparse or none\n"
|
||||
"next=2 # How many tasks per project in next report\n"
|
||||
"bulk=2 # > 2 tasks considered 'a lot', for confirmation\n"
|
||||
"nag=You have higher priority tasks. # Nag message to keep you honest\n" // TODO
|
||||
"search.case.sensitive=yes # Setting to no allows case insensitive searches\n"
|
||||
"active.indicator=* # What to show as an active task indicator\n"
|
||||
"tag.indicator=+ # What to show as a tag indicator\n"
|
||||
"recurrence.indicator=R # What to show as a task recurrence indicator\n"
|
||||
"\n"
|
||||
"# Dates\n"
|
||||
"dateformat=m/d/Y # Preferred input and display date format\n"
|
||||
"dateformat.holiday=YMD # Preferred input date format for holidays\n"
|
||||
"dateformat.report=m/d/Y # Preferred display date format for repors\n"
|
||||
"weekstart=Sunday # Sunday or Monday only\n"
|
||||
"displayweeknumber=yes # Show week numbers on calendar\n"
|
||||
"due=7 # Task is considered due in 7 days\n"
|
||||
"\n"
|
||||
"# Calendar controls\n"
|
||||
"calendar.legend=yes # Display the legend on calendar\n"
|
||||
"calendar.details=sparse # Calendar shows information for tasks w/due dates: full, sparse or none\n"
|
||||
"calendar.details.report=list # Report to use when showing task information in cal\n"
|
||||
"calendar.holidays=none # Show public holidays on calendar:full, sparse or none\n"
|
||||
"#monthsperline=3 # Number of calendar months on a line\n"
|
||||
"\n"
|
||||
"# Color controls.\n"
|
||||
"color=on # Enable color\n"
|
||||
"#color.header=bold green # Color of header messages\n"
|
||||
"#color.footnote=bold green # Color of footnote messages\n"
|
||||
"color.calendar.today=black on cyan # Color of today in calendar\n"
|
||||
"color.calendar.due=black on green # Color of days with due tasks in calendar\n"
|
||||
"color.calendar.due.today=black on magenta # Color of today with due tasks in calendar\n"
|
||||
"color.calendar.overdue=black on red # Color of days with overdue tasks in calendar\n"
|
||||
"color.calendar.weekend=bright white on black # Color of weekend days in calendar\n"
|
||||
"color.calendar.holiday=black on bright yellow # Color of public holidays in calendar\n"
|
||||
"color.calendar.weeknumber=black on white # Color of the weeknumbers in calendar\n"
|
||||
"#color.debug=magenta # Color of diagnostic output\n"
|
||||
"\n"
|
||||
"# The following rules are presented in their order of precedence.\n"
|
||||
"# The higher the color rule is up this list, the higher precedence\n"
|
||||
"# it has in determining the color for the task. Precedence is shown\n"
|
||||
"# in brackets [1]\n"
|
||||
"#color.recurring=on red # [1] Color of recur.any: tasks\n"
|
||||
"color.overdue=bold red # [2] Color of overdue tasks\n"
|
||||
"color.due.today=bold magenta # [3] Color of tasks due today\n"
|
||||
"color.due=bold yellow # [4] Color of due tasks\n"
|
||||
"#color.keyword.car=on blue # [5] Color of description.contains:car tasks\n"
|
||||
"#color.project.garden=on green # [6] Color of project:garden tasks\n"
|
||||
"#color.tag.bug=yellow # [7] Color of +bug tasks\n"
|
||||
"color.active=bold cyan # [8] Color of active tasks\n"
|
||||
"#color.pri.none=white on blue # [9] Color of priority: tasks\n"
|
||||
"color.pri.H=bold # [9] Color of priority:H tasks\n"
|
||||
"#color.pri.M=on yellow # [9] Color of priority:M tasks\n"
|
||||
"#color.pri.L=on green # [9] Color of priority:L tasks\n"
|
||||
"color.tagged=yellow # [10] Color of tagged tasks\n"
|
||||
"#color.alternate=on rgb253 # [11] Alternate color for line coloring\n"
|
||||
"\n"
|
||||
"# Shadow file support\n"
|
||||
"#shadow.file=/tmp/shadow.txt # Location of shadow file\n"
|
||||
"#shadow.command=list # Task command for shadow file\n"
|
||||
"#shadow.notify=on # Footnote when updated\n"
|
||||
"\n"
|
||||
"#default.project=foo # Default project for 'add' command\n"
|
||||
"#default.priority=M # Default priority for 'add' command\n"
|
||||
"default.command=list # When no arguments are specified\n"
|
||||
"\n"
|
||||
"_forcecolor=no # Forces color to be on, even for non TTY output\n"
|
||||
"blanklines=true # Use more whitespace in output\n"
|
||||
"complete.all.projects=no # Include old project names in 'projects' command\n" // TODO
|
||||
"complete.all.tags=no # Include old tag names in 'tags' command\n" // TODO
|
||||
"debug=no # Display diagnostics\n"
|
||||
"hooks=off # Hook system master switch\n"
|
||||
"fontunderline=yes # Uses underlines rather than -------\n"
|
||||
"shell.prompt=task> # Prompt used by the shell command\n" // TODO
|
||||
"\n"
|
||||
"# Import heuristics - alternate names for fields (comma-separated list of names)\n"
|
||||
"#import.synonym.bg=?\n"
|
||||
"#import.synonym.description=?\n"
|
||||
"#import.synonym.due=?\n"
|
||||
"#import.synonym.end=?\n"
|
||||
"#import.synonym.entry=?\n"
|
||||
"#import.synonym.fg=?\n"
|
||||
"#import.synonym.id=?\n"
|
||||
"#import.synonym.priority=?\n"
|
||||
"#import.synonym.project=?\n"
|
||||
"#import.synonym.recur=?\n"
|
||||
"#import.synonym.start=?\n"
|
||||
"#import.synonym.status=?\n"
|
||||
"#import.synonym.tags=?\n"
|
||||
"#import.synonym.uuid=?\n"
|
||||
"\n"
|
||||
"# Aliases - alternate names for commands\n"
|
||||
"alias.rm=delete # Alias for the delete command\n"
|
||||
"\n"
|
||||
"# Fields: id,uuid,project,priority,priority_long,entry,entry_time,\n" // TODO
|
||||
"# start,entry_time,due,recur,recurrence_indicator,age,\n" // TODO
|
||||
"# age_compact,active,tags,tag_indicator,description,\n" // TODO
|
||||
"# description_only,end,end_time,countdown,countdown_compact\n" // TODO
|
||||
"# Description: This report is ...\n"
|
||||
"# Sort: due+,priority-,project+\n"
|
||||
"# Filter: pro:x pri:H +bug limit:10\n"
|
||||
"# Dateformat: due date format in reports\n"
|
||||
"\n"
|
||||
"# task long\n"
|
||||
"report.long.description=Lists all task, all data, matching the specified criteria\n"
|
||||
"report.long.columns=id,project,priority,entry,start,due,recur,countdown,age,tags,description\n"
|
||||
"report.long.labels=ID,Project,Pri,Added,Started,Due,Recur,Countdown,Age,Tags,Description\n"
|
||||
"report.long.sort=due+,priority-,project+\n"
|
||||
"report.long.filter=status:pending\n"
|
||||
"#report.long.dateformat=m/d/Y\n"
|
||||
"#report.long.annotations=full\n"
|
||||
"\n"
|
||||
"# task list\n"
|
||||
"report.list.description=Lists all tasks matching the specified criteria\n"
|
||||
"report.list.columns=id,project,priority,due,active,age,description\n"
|
||||
"report.list.labels=ID,Project,Pri,Due,Active,Age,Description\n"
|
||||
"report.list.sort=due+,priority-,project+\n"
|
||||
"report.list.filter=status:pending\n"
|
||||
"#report.list.dateformat=m/d/Y\n"
|
||||
"#report.list.annotations=full\n"
|
||||
"\n"
|
||||
"# task ls\n"
|
||||
"report.ls.description=Minimal listing of all tasks matching the specified criteria\n"
|
||||
"report.ls.columns=id,project,priority,description\n"
|
||||
"report.ls.labels=ID,Project,Pri,Description\n"
|
||||
"report.ls.sort=priority-,project+\n"
|
||||
"report.ls.filter=status:pending\n"
|
||||
"#report.ls.dateformat=m/d/Y\n"
|
||||
"#report.ls.annotations=full\n"
|
||||
"\n"
|
||||
"# task minimal\n"
|
||||
"report.minimal.description=A really minimal listing\n"
|
||||
"report.minimal.columns=id,project,description\n"
|
||||
"report.minimal.labels=ID,Project,Description\n"
|
||||
"report.minimal.sort=project+,description+\n"
|
||||
"report.minimal.filter=status:pending\n"
|
||||
"#report.minimal.dateformat=m/d/Y\n"
|
||||
"#report.minimal.annotations=full\n"
|
||||
"\n"
|
||||
"# task newest\n"
|
||||
"report.newest.description=Shows the newest tasks\n"
|
||||
"report.newest.columns=id,project,priority,due,active,age,description\n"
|
||||
"report.newest.labels=ID,Project,Pri,Due,Active,Age,Description\n"
|
||||
"report.newest.sort=id-\n"
|
||||
"report.newest.filter=status:pending limit:10\n"
|
||||
"#report.newest.dateformat=m/d/Y\n"
|
||||
"#report.newest.annotations=full\n"
|
||||
"\n"
|
||||
"# task oldest\n"
|
||||
"report.oldest.description=Shows the oldest tasks\n"
|
||||
"report.oldest.columns=id,project,priority,due,active,age,description\n"
|
||||
"report.oldest.labels=ID,Project,Pri,Due,Active,Age,Description\n"
|
||||
"report.oldest.sort=id+\n"
|
||||
"report.oldest.filter=status:pending limit:10\n"
|
||||
"#report.oldest.dateformat=m/d/Y\n"
|
||||
"#report.oldest.annotations=full\n"
|
||||
"\n"
|
||||
"# task overdue\n"
|
||||
"report.overdue.description=Lists overdue tasks matching the specified criteria\n"
|
||||
"report.overdue.columns=id,project,priority,due,active,age,description\n"
|
||||
"report.overdue.labels=ID,Project,Pri,Due,Active,Age,Description\n"
|
||||
"report.overdue.sort=due+,priority-,project+\n"
|
||||
"report.overdue.filter=status:pending due.before:today\n"
|
||||
"#report.overdue.dateformat=m/d/Y\n"
|
||||
"#report.overdue.annotations=full\n"
|
||||
"\n"
|
||||
"# task active\n"
|
||||
"report.active.description=Lists active tasks matching the specified criteria\n"
|
||||
"report.active.columns=id,project,priority,due,active,age,description\n"
|
||||
"report.active.labels=ID,Project,Pri,Due,Active,Age,Description\n"
|
||||
"report.active.sort=due+,priority-,project+\n"
|
||||
"report.active.filter=status:pending start.any:\n"
|
||||
"#report.active.dateformat=m/d/Y\n"
|
||||
"#report.active.annotations=full\n"
|
||||
"\n"
|
||||
"# task completed\n"
|
||||
"report.completed.description=Lists completed tasks matching the specified criteria\n"
|
||||
"report.completed.columns=end,project,priority,age,description\n"
|
||||
"report.completed.labels=Complete,Project,Pri,Age,Description\n"
|
||||
"report.completed.sort=end+,priority-,project+\n"
|
||||
"report.completed.filter=status:completed\n"
|
||||
"#report.completed.dateformat=m/d/Y\n"
|
||||
"#report.completed.annotations=full\n"
|
||||
"\n"
|
||||
"# task recurring\n"
|
||||
"report.recurring.description=Lists recurring tasks matching the specified criteria\n"
|
||||
"report.recurring.columns=id,project,priority,due,recur,active,age,description\n"
|
||||
"report.recurring.labels=ID,Project,Pri,Due,Recur,Active,Age,Description\n"
|
||||
"report.recurring.sort=due+,priority-,project+\n"
|
||||
"report.recurring.filter=status:pending parent.any:\n"
|
||||
"#report.recurring.dateformat=m/d/Y\n"
|
||||
"#report.recurring.annotations=full\n"
|
||||
"\n"
|
||||
"# task waiting\n"
|
||||
"report.waiting.description=Lists all waiting tasks matching the specified criteria\n"
|
||||
"report.waiting.columns=id,project,priority,wait,age,description\n"
|
||||
"report.waiting.labels=ID,Project,Pri,Wait,Age,Description\n"
|
||||
"report.waiting.sort=wait+,priority-,project+\n"
|
||||
"report.waiting.filter=status:waiting\n"
|
||||
"#report.waiting.dateformat=m/d/Y\n"
|
||||
"#report.waiting.annotations=full\n"
|
||||
"\n"
|
||||
"# task all\n"
|
||||
"report.all.description=Lists all tasks matching the specified criteria\n"
|
||||
"report.all.columns=id,project,priority,due,active,age,description\n"
|
||||
"report.all.labels=ID,Project,Pri,Due,Active,Age,Description\n"
|
||||
"report.all.sort=due+,priority-,project+\n"
|
||||
"#report.all.dateformat=m/d/Y\n"
|
||||
"#report.all.annotations=full\n"
|
||||
"\n"
|
||||
"# task next\n"
|
||||
"report.next.description=Lists the most urgent tasks\n"
|
||||
"report.next.columns=id,project,priority,due,active,age,description\n"
|
||||
"report.next.labels=ID,Project,Pri,Due,Active,Age,Description\n"
|
||||
"report.next.sort=due+,priority-,project+\n"
|
||||
"report.next.filter=status:pending\n"
|
||||
"#report.next.dateformat=m/d/Y\n"
|
||||
"#report.next.annotations=full\n"
|
||||
"\n";
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// DO NOT CALL Config::setDefaults.
|
||||
//
|
||||
// This is a default constructor, and as such is only used to:
|
||||
// a) initialize a default Context constructor
|
||||
// b) run unit tests
|
||||
//
|
||||
// In all real use cases, Config::load is called.
|
||||
Config::Config ()
|
||||
{
|
||||
}
|
||||
@@ -40,188 +299,175 @@ Config::Config ()
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Config::Config (const std::string& file)
|
||||
{
|
||||
setDefaults ();
|
||||
load (file);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Read the Configuration filee and populate the *this map. The file format
|
||||
// is simply lines with name=value pairs. Whitespace between name, = and value
|
||||
// is not tolerated, but blank lines and comments starting with # are allowed.
|
||||
bool Config::load (const std::string& file)
|
||||
// Read the Configuration file and populate the *this map. The file format is
|
||||
// simply lines with name=value pairs. Whitespace between name, = and value is
|
||||
// not tolerated, but blank lines and comments starting with # are allowed.
|
||||
//
|
||||
// Nested files are now supported, with the following construct:
|
||||
// include /absolute/path/to/file
|
||||
//
|
||||
void Config::load (const std::string& file, int nest /* = 1 */)
|
||||
{
|
||||
std::ifstream in;
|
||||
in.open (file.c_str (), std::ifstream::in);
|
||||
if (in.good ())
|
||||
if (nest > 10)
|
||||
throw std::string ("Configuration file nested to more than 10 levels deep"
|
||||
" - this has to be a mistake.");
|
||||
|
||||
// First time in, load the default values.
|
||||
if (nest == 1)
|
||||
{
|
||||
std::string line;
|
||||
while (getline (in, line))
|
||||
setDefaults ();
|
||||
original_file = File (file);
|
||||
}
|
||||
|
||||
// Read the file, then parse the contents.
|
||||
std::string contents;
|
||||
if (File::read (file, contents) && contents.length ())
|
||||
parse (contents, nest);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void Config::parse (const std::string& input, int nest /* = 1 */)
|
||||
{
|
||||
// Shortcut case for default constructor.
|
||||
if (input.length () == 0)
|
||||
return;
|
||||
|
||||
// Split the input into lines.
|
||||
std::vector <std::string> lines;
|
||||
split (lines, input, "\n");
|
||||
|
||||
// Parse each line.
|
||||
std::vector <std::string>::iterator it;
|
||||
for (it = lines.begin (); it != lines.end (); ++it)
|
||||
{
|
||||
std::string line = *it;
|
||||
|
||||
// Remove comments.
|
||||
std::string::size_type pound = line.find ("#"); // no i18n
|
||||
if (pound != std::string::npos)
|
||||
line = line.substr (0, pound);
|
||||
|
||||
line = trim (line, " \t"); // no i18n
|
||||
|
||||
// Skip empty lines.
|
||||
if (line.length () > 0)
|
||||
{
|
||||
// Remove comments.
|
||||
size_type pound = line.find ("#");
|
||||
if (pound != std::string::npos)
|
||||
line = line.substr (0, pound);
|
||||
|
||||
line = trim (line, " \t");
|
||||
|
||||
// Skip empty lines.
|
||||
if (line.length () > 0)
|
||||
std::string::size_type equal = line.find ("="); // no i18n
|
||||
if (equal != std::string::npos)
|
||||
{
|
||||
size_type equal = line.find ("=");
|
||||
if (equal != std::string::npos)
|
||||
std::string key = trim (line.substr (0, equal), " \t"); // no i18n
|
||||
std::string value = trim (line.substr (equal+1, line.length () - equal), " \t"); // no i18n
|
||||
|
||||
(*this)[key] = value;
|
||||
}
|
||||
else
|
||||
{
|
||||
std::string::size_type include = line.find ("include"); // no i18n.
|
||||
if (include != std::string::npos)
|
||||
{
|
||||
std::string key = trim (line.substr (0, equal), " \t");
|
||||
std::string value = trim (line.substr (equal+1, line.length () - equal), " \t");
|
||||
(*this)[key] = value;
|
||||
Path included (trim (line.substr (include + 7), " \t"));
|
||||
if (included.is_absolute ())
|
||||
{
|
||||
if (included.readable ())
|
||||
this->load (included, nest + 1);
|
||||
else
|
||||
throw std::string ("Could not read include file '") + included.data + "'";
|
||||
}
|
||||
else
|
||||
throw std::string ("Can only include files with absolute paths, not '") + included.data + "'";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
in.close ();
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void Config::createDefault (const std::string& file)
|
||||
{
|
||||
if (confirm (
|
||||
"A configuration file could not be found in "
|
||||
+ file
|
||||
+ "\n\n"
|
||||
+ "Would you like a sample .taskrc created, so task can proceed?"))
|
||||
{
|
||||
// Determine a path to the task directory.
|
||||
std::string taskDir = "";
|
||||
for (int i = file.length () - 1; i >= 0; --i)
|
||||
{
|
||||
if (file[i] == '/')
|
||||
{
|
||||
taskDir = file.substr (0, i) + "/.task";
|
||||
if (-1 == access (taskDir.c_str (), F_OK))
|
||||
mkdir (taskDir.c_str (), S_IRWXU);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (taskDir != "")
|
||||
{
|
||||
// Create a sample .taskrc file.
|
||||
FILE* out;
|
||||
if ((out = fopen (file.c_str (), "w")))
|
||||
{
|
||||
fprintf (out, "data.location=%s\n", taskDir.c_str ());
|
||||
fprintf (out, "command.logging=off\n");
|
||||
fprintf (out, "confirmation=yes\n");
|
||||
fprintf (out, "#nag=Note: try to stick to high priority tasks. See \"task next\".\n");
|
||||
fprintf (out, "next=2\n");
|
||||
fprintf (out, "curses=on\n");
|
||||
fprintf (out, "color=on\n");
|
||||
|
||||
fprintf (out, "color.overdue=bold_red\n");
|
||||
fprintf (out, "#color.due=on_bright_yellow\n");
|
||||
fprintf (out, "#color.pri.H=on_red\n");
|
||||
fprintf (out, "#color.pri.M=on_yellow\n");
|
||||
fprintf (out, "#color.pri.L=on_green\n");
|
||||
fprintf (out, "color.active=bold_cyan\n");
|
||||
fprintf (out, "color.tagged=yellow\n");
|
||||
fprintf (out, "#color.tag.bug=yellow\n");
|
||||
fprintf (out, "#color.project.home=on_green\n");
|
||||
fprintf (out, "#color.keyword.car=on_blue\n");
|
||||
|
||||
fclose (out);
|
||||
|
||||
// Now set the live values.
|
||||
set ("data.location", taskDir);
|
||||
set ("command.logging", "off");
|
||||
set ("confirmation", "yes");
|
||||
set ("next", 2);
|
||||
set ("curses", "on");
|
||||
set ("color", "on");
|
||||
set ("color.overdue", "red");
|
||||
set ("color.active", "cyan");
|
||||
set ("color.tagged", "yellow");
|
||||
|
||||
std::cout << "Done." << std::endl;
|
||||
else
|
||||
throw std::string ("Malformed entry '") + line + "'";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Return the configuration value given the specified key.
|
||||
const std::string& Config::get (const char* key)
|
||||
void Config::createDefaultRC (const std::string& rc, const std::string& data)
|
||||
{
|
||||
return this->get (std::string (key));
|
||||
// Override data.location in the defaults.
|
||||
std::string::size_type loc = defaults.find ("data.location=~/.task");
|
||||
// loc+0^ +14^ +21^
|
||||
|
||||
std::string contents = defaults.substr (0, loc + 14) +
|
||||
data +
|
||||
defaults.substr (loc + 21, std::string::npos);
|
||||
|
||||
// Write out the new file.
|
||||
if (! File::write (rc, contents))
|
||||
throw std::string ("Could not write to '") + rc + "'";
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Return the configuration value given the specified key. If a default_value
|
||||
// is present, it will be the returned value in the event of a missing key.
|
||||
const std::string& Config::get (
|
||||
const char* key,
|
||||
const char* default_value)
|
||||
void Config::createDefaultData (const std::string& data)
|
||||
{
|
||||
return this->get (std::string (key), std::string (default_value));
|
||||
Directory d (data);
|
||||
if (! d.exists ())
|
||||
d.create ();
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void Config::setDefaults ()
|
||||
{
|
||||
parse (defaults);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void Config::clear ()
|
||||
{
|
||||
std::map <std::string, std::string>::clear ();
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Return the configuration value given the specified key.
|
||||
const std::string& Config::get (const std::string& key)
|
||||
const std::string Config::get (const std::string& key)
|
||||
{
|
||||
return (*this)[key];
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Return the configuration value given the specified key. If a default_value
|
||||
// is present, it will be the returned value in the event of a missing key.
|
||||
const std::string& Config::get (
|
||||
const std::string& key,
|
||||
const std::string& default_value)
|
||||
const int Config::getInteger (const std::string& key)
|
||||
{
|
||||
if ((*this).find (key) != (*this).end ())
|
||||
return (*this)[key];
|
||||
return atoi ((*this)[key].c_str ());
|
||||
|
||||
return default_value;
|
||||
return 0;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
bool Config::get (const std::string& key, bool default_value)
|
||||
const double Config::getReal (const std::string& key)
|
||||
{
|
||||
if ((*this).find (key) != (*this).end ())
|
||||
return atof ((*this)[key].c_str ());
|
||||
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
const bool Config::getBoolean (const std::string& key)
|
||||
{
|
||||
if ((*this).find (key) != (*this).end ())
|
||||
{
|
||||
std::string value = lowerCase ((*this)[key]);
|
||||
|
||||
if (value == "t" ||
|
||||
value == "true" ||
|
||||
value == "1" ||
|
||||
value == "yes" ||
|
||||
value == "on")
|
||||
if (value == "t" || // TODO i18n
|
||||
value == "true" || // TODO i18n
|
||||
value == "1" || // no i18n
|
||||
value == "+" || // no i18n
|
||||
value == "y" || // TODO i18n
|
||||
value == "yes" || // TODO i18n
|
||||
value == "on" || // TODO i18n
|
||||
value == "enable" || // TODO i18n
|
||||
value == "enabled") // TODO i18n
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
return default_value;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
int Config::get (const std::string& key, const int default_value)
|
||||
{
|
||||
if ((*this).find (key) != (*this).end ())
|
||||
return ::atoi ((*this)[key].c_str ());
|
||||
|
||||
return default_value;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
double Config::get (const std::string& key, const double default_value)
|
||||
{
|
||||
if ((*this).find (key) != (*this).end ())
|
||||
return ::atof ((*this)[key].c_str ());
|
||||
|
||||
return default_value;
|
||||
return false;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -246,29 +492,6 @@ void Config::set (const std::string& key, const std::string& value)
|
||||
(*this)[key] = value;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// The vector form of Config::get assumes the single value is comma-separated,
|
||||
// and splits accordingly.
|
||||
void Config::get (
|
||||
const std::string& key,
|
||||
std::vector <std::string>& values)
|
||||
{
|
||||
values.clear ();
|
||||
split (values, (*this)[key], ',');
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// The vector form of Config::set joins the values together with commas, and
|
||||
// stores the single value.
|
||||
void Config::set (
|
||||
const std::string& key,
|
||||
const std::vector <std::string>& values)
|
||||
{
|
||||
std::string conjoined;
|
||||
join (conjoined, ",", values);
|
||||
(*this)[key] = conjoined;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Provide a vector of all configuration keys.
|
||||
void Config::all (std::vector<std::string>& items)
|
||||
@@ -278,3 +501,37 @@ void Config::all (std::vector<std::string>& items)
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
std::string Config::checkForDeprecatedColor ()
|
||||
{
|
||||
int count = 0;
|
||||
std::vector <std::string> deprecated;
|
||||
foreach (i, *this)
|
||||
{
|
||||
if (i->first.find ("color.") != std::string::npos)
|
||||
{
|
||||
std::string value = get (i->first);
|
||||
if (value.find ("_") != std::string::npos)
|
||||
{
|
||||
++count;
|
||||
deprecated.push_back (i->first);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
std::stringstream out;
|
||||
if (count)
|
||||
{
|
||||
out << "Your .taskrc file contains color settings that use deprecated "
|
||||
<< "underscores. Please check:"
|
||||
<< std::endl;
|
||||
|
||||
foreach (i, deprecated)
|
||||
out << " " << *i << "=" << get (*i) << std::endl;
|
||||
|
||||
out << std::endl;
|
||||
}
|
||||
|
||||
return out.str ();
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
37
src/Config.h
37
src/Config.h
@@ -1,7 +1,7 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// task - a command line task list manager.
|
||||
//
|
||||
// Copyright 2006 - 2008, Paul Beckingham.
|
||||
// Copyright 2006 - 2010, Paul Beckingham.
|
||||
// All rights reserved.
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify it under
|
||||
@@ -30,6 +30,7 @@
|
||||
#include <map>
|
||||
#include <vector>
|
||||
#include <string>
|
||||
#include "File.h"
|
||||
|
||||
class Config : public std::map <std::string, std::string>
|
||||
{
|
||||
@@ -37,22 +38,34 @@ public:
|
||||
Config ();
|
||||
Config (const std::string&);
|
||||
|
||||
bool load (const std::string&);
|
||||
void createDefault (const std::string&);
|
||||
Config (const Config&);
|
||||
Config& operator= (const Config&);
|
||||
|
||||
void load (const std::string&, int nest = 1);
|
||||
void parse (const std::string&, int nest = 1);
|
||||
|
||||
void createDefaultRC (const std::string&, const std::string&);
|
||||
void createDefaultData (const std::string&);
|
||||
void setDefaults ();
|
||||
void clear ();
|
||||
|
||||
const std::string get (const std::string&);
|
||||
const int getInteger (const std::string&);
|
||||
const double getReal (const std::string&);
|
||||
const bool getBoolean (const std::string&);
|
||||
|
||||
const std::string& get (const char*);
|
||||
const std::string& get (const char*, const char*);
|
||||
const std::string& get (const std::string&);
|
||||
const std::string& get (const std::string&, const std::string&);
|
||||
bool get (const std::string&, bool);
|
||||
int get (const std::string&, const int);
|
||||
double get (const std::string&, const double);
|
||||
void get (const std::string&, std::vector <std::string>&);
|
||||
void set (const std::string&, const int);
|
||||
void set (const std::string&, const double);
|
||||
void set (const std::string&, const std::string&);
|
||||
void set (const std::string&, const std::vector <std::string>&);
|
||||
void all (std::vector <std::string>&);
|
||||
|
||||
std::string checkForDeprecatedColor ();
|
||||
|
||||
public:
|
||||
File original_file;
|
||||
|
||||
private:
|
||||
static std::string defaults;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
871
src/Context.cpp
Normal file
871
src/Context.cpp
Normal file
@@ -0,0 +1,871 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// task - a command line task list manager.
|
||||
//
|
||||
// Copyright 2006 - 2010, Paul Beckingham.
|
||||
// All rights reserved.
|
||||
//
|
||||
// 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.,
|
||||
// 51 Franklin Street, Fifth Floor,
|
||||
// Boston, MA
|
||||
// 02110-1301
|
||||
// USA
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include <iostream>
|
||||
#include <fstream>
|
||||
#include <pwd.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include "Context.h"
|
||||
#include "Directory.h"
|
||||
#include "File.h"
|
||||
#include "Timer.h"
|
||||
#include "text.h"
|
||||
#include "util.h"
|
||||
#include "main.h"
|
||||
#include "i18n.h"
|
||||
#include "../auto.h"
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Context::Context ()
|
||||
: config ()
|
||||
, filter ()
|
||||
, keymap ()
|
||||
, sequence ()
|
||||
, subst ()
|
||||
, task ()
|
||||
, tdb ()
|
||||
, stringtable ()
|
||||
, program ("")
|
||||
, file_override ("")
|
||||
, var_overrides ("")
|
||||
, cmd ()
|
||||
, inShadow (false)
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Context::~Context ()
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void Context::initialize (int argc, char** argv)
|
||||
{
|
||||
// Capture the args.
|
||||
for (int i = 0; i < argc; ++i)
|
||||
{
|
||||
if (i == 0)
|
||||
{
|
||||
program = argv[i];
|
||||
std::string::size_type cal = program.find ("/cal");
|
||||
if (program == "cal" ||
|
||||
(cal != std::string::npos && program.length () == cal + 4))
|
||||
args.push_back ("calendar");
|
||||
}
|
||||
else
|
||||
args.push_back (argv[i]);
|
||||
}
|
||||
|
||||
initialize ();
|
||||
|
||||
// Hook system init, plus post-start event occurring at the first possible
|
||||
// moment after hook initialization.
|
||||
hooks.initialize ();
|
||||
hooks.trigger ("post-start");
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void Context::initialize ()
|
||||
{
|
||||
Timer t ("Context::initialize");
|
||||
|
||||
// Load the configuration file from the home directory. If the file cannot
|
||||
// be found, offer to create a sample one.
|
||||
loadCorrectConfigFile ();
|
||||
loadAliases ();
|
||||
|
||||
// When redirecting output to a file, do not use color, curses.
|
||||
if (!isatty (fileno (stdout)))
|
||||
{
|
||||
config.set ("curses", "off");
|
||||
|
||||
if (! config.getBoolean ("_forcecolor"))
|
||||
config.set ("color", "off");
|
||||
}
|
||||
|
||||
if (config.getBoolean ("color"))
|
||||
initializeColorRules ();
|
||||
|
||||
// Load appropriate stringtable as soon after the config file as possible, to
|
||||
// allow all subsequent messages to be localizable.
|
||||
Directory location (config.get ("data.location"));
|
||||
std::string locale = config.get ("locale");
|
||||
|
||||
// If there is a locale variant (en-US.<variant>), then strip it.
|
||||
std::string::size_type period = locale.find ('.');
|
||||
if (period != std::string::npos)
|
||||
locale = locale.substr (0, period);
|
||||
|
||||
if (locale != "")
|
||||
stringtable.load (location.data + "/strings." + locale);
|
||||
|
||||
// TODO Handle "--version, -v" right here?
|
||||
|
||||
// init TDB.
|
||||
tdb.clear ();
|
||||
std::vector <std::string> all;
|
||||
split (all, location, ',');
|
||||
foreach (path, all)
|
||||
tdb.location (*path);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
int Context::run ()
|
||||
{
|
||||
int rc;
|
||||
std::string output;
|
||||
try
|
||||
{
|
||||
parse (); // Parse command line.
|
||||
rc = dispatch (output); // Dispatch to command handlers.
|
||||
}
|
||||
|
||||
catch (const std::string& error)
|
||||
{
|
||||
footnote (error);
|
||||
rc = 2;
|
||||
}
|
||||
|
||||
catch (...)
|
||||
{
|
||||
footnote (stringtable.get (100, "Unknown error."));
|
||||
rc = 3;
|
||||
}
|
||||
|
||||
// Dump all debug messages.
|
||||
hooks.trigger ("pre-debug");
|
||||
if (config.getBoolean ("debug"))
|
||||
foreach (d, debugMessages)
|
||||
if (config.getBoolean ("color") || config.getBoolean ("_forcecolor"))
|
||||
std::cout << colorizeDebug (*d) << std::endl;
|
||||
else
|
||||
std::cout << *d << std::endl;
|
||||
hooks.trigger ("post-debug");
|
||||
|
||||
// Dump all headers.
|
||||
hooks.trigger ("pre-header");
|
||||
foreach (h, headers)
|
||||
if (config.getBoolean ("color") || config.getBoolean ("_forcecolor"))
|
||||
std::cout << colorizeHeader (*h) << std::endl;
|
||||
else
|
||||
std::cout << *h << std::endl;
|
||||
hooks.trigger ("post-header");
|
||||
|
||||
// Dump the report output.
|
||||
hooks.trigger ("pre-output");
|
||||
std::cout << output;
|
||||
hooks.trigger ("post-output");
|
||||
|
||||
// Dump all footnotes.
|
||||
hooks.trigger ("pre-footnote");
|
||||
foreach (f, footnotes)
|
||||
if (config.getBoolean ("color") || config.getBoolean ("_forcecolor"))
|
||||
std::cout << colorizeFootnote (*f) << std::endl;
|
||||
else
|
||||
std::cout << *f << std::endl;
|
||||
hooks.trigger ("post-footnote");
|
||||
|
||||
hooks.trigger ("pre-exit");
|
||||
return rc;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
int Context::dispatch (std::string &out)
|
||||
{
|
||||
int rc = 0;
|
||||
|
||||
Timer t ("Context::dispatch");
|
||||
|
||||
hooks.trigger ("pre-dispatch");
|
||||
|
||||
// TODO Just look at this thing. It cries out for a dispatch table.
|
||||
if (cmd.command == "projects") { rc = handleProjects (out); }
|
||||
else if (cmd.command == "tags") { rc = handleTags (out); }
|
||||
else if (cmd.command == "colors") { rc = handleColor (out); }
|
||||
else if (cmd.command == "version") { rc = handleVersion (out); }
|
||||
else if (cmd.command == "config") { rc = handleConfig (out); }
|
||||
else if (cmd.command == "help") { rc = longUsage (out); }
|
||||
else if (cmd.command == "stats") { rc = handleReportStats (out); }
|
||||
else if (cmd.command == "info") { rc = handleInfo (out); }
|
||||
else if (cmd.command == "history") { rc = handleReportHistory (out); }
|
||||
else if (cmd.command == "ghistory") { rc = handleReportGHistory (out); }
|
||||
else if (cmd.command == "summary") { rc = handleReportSummary (out); }
|
||||
else if (cmd.command == "calendar") { rc = handleReportCalendar (out); }
|
||||
else if (cmd.command == "timesheet") { rc = handleReportTimesheet (out); }
|
||||
else if (cmd.command == "add") { rc = handleAdd (out); }
|
||||
else if (cmd.command == "append") { rc = handleAppend (out); }
|
||||
else if (cmd.command == "prepend") { rc = handlePrepend (out); }
|
||||
else if (cmd.command == "annotate") { rc = handleAnnotate (out); }
|
||||
else if (cmd.command == "done") { rc = handleDone (out); }
|
||||
else if (cmd.command == "delete") { rc = handleDelete (out); }
|
||||
else if (cmd.command == "start") { rc = handleStart (out); }
|
||||
else if (cmd.command == "stop") { rc = handleStop (out); }
|
||||
else if (cmd.command == "export") { rc = handleExport (out); }
|
||||
else if (cmd.command == "import") { rc = handleImport (out); }
|
||||
else if (cmd.command == "duplicate") { rc = handleDuplicate (out); }
|
||||
else if (cmd.command == "edit") { rc = handleEdit (out); }
|
||||
#ifdef FEATURE_SHELL
|
||||
else if (cmd.command == "shell") { handleShell ( ); }
|
||||
#endif
|
||||
else if (cmd.command == "undo") { handleUndo ( ); }
|
||||
else if (cmd.command == "_projects") { rc = handleCompletionProjects (out); }
|
||||
else if (cmd.command == "_tags") { rc = handleCompletionTags (out); }
|
||||
else if (cmd.command == "_commands") { rc = handleCompletionCommands (out); }
|
||||
else if (cmd.command == "_ids") { rc = handleCompletionIDs (out); }
|
||||
else if (cmd.command == "_config") { rc = handleCompletionConfig (out); }
|
||||
else if (cmd.command == "_version") { rc = handleCompletionVersion (out); }
|
||||
else if (cmd.command == "" &&
|
||||
sequence.size ()) { rc = handleModify (out); }
|
||||
|
||||
// Command that display IDs and therefore need TDB::gc first.
|
||||
else if (cmd.command == "next") { if (!inShadow) tdb.gc (); rc = handleReportNext (out); }
|
||||
else if (cmd.validCustom (cmd.command)) { if (!inShadow) tdb.gc (); rc = handleCustomReport (cmd.command, out); }
|
||||
|
||||
// If the command is not recognized, display usage.
|
||||
else { hooks.trigger ("pre-usage-command");
|
||||
rc = shortUsage (out);
|
||||
hooks.trigger ("post-usage-command"); }
|
||||
|
||||
// Only update the shadow file if such an update was not suppressed (shadow),
|
||||
if (cmd.isWriteCommand () && !inShadow)
|
||||
shadow ();
|
||||
|
||||
hooks.trigger ("post-dispatch");
|
||||
return rc;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void Context::shadow ()
|
||||
{
|
||||
// Determine if shadow file is enabled.
|
||||
File shadowFile (config.get ("shadow.file"));
|
||||
if (shadowFile.data != "")
|
||||
{
|
||||
inShadow = true; // Prevents recursion in case shadow command writes.
|
||||
|
||||
// TODO Reinstate these checks.
|
||||
/*
|
||||
// Check for silly shadow file settings.
|
||||
if (shadowFile == dataLocation + "/pending.data")
|
||||
throw std::string ("Configuration variable 'shadow.file' is set to "
|
||||
"overwrite your pending tasks. Please change it.");
|
||||
|
||||
if (shadowFile == dataLocation + "/completed.data")
|
||||
throw std::string ("Configuration variable 'shadow.file' is set to "
|
||||
"overwrite your completed tasks. Please change it.");
|
||||
*/
|
||||
|
||||
std::string oldCurses = config.get ("curses");
|
||||
std::string oldColor = config.get ("color");
|
||||
|
||||
clear ();
|
||||
|
||||
// Run report. Use shadow.command, using default.command as a fallback
|
||||
// with "list" as a default.
|
||||
std::string command = config.get ("shadow.command");
|
||||
if (command == "")
|
||||
command = config.get ("default.command");
|
||||
|
||||
split (args, command, ' ');
|
||||
|
||||
initialize ();
|
||||
config.set ("curses", "off");
|
||||
config.set ("color", "off");
|
||||
|
||||
parse ();
|
||||
std::string result;
|
||||
(void)dispatch (result);
|
||||
std::ofstream out (shadowFile.data.c_str ());
|
||||
if (out.good ())
|
||||
{
|
||||
out << result;
|
||||
out.close ();
|
||||
}
|
||||
else
|
||||
throw std::string ("Could not write file '") + shadowFile.data + "'";
|
||||
|
||||
config.set ("curses", oldCurses);
|
||||
config.set ("color", oldColor);
|
||||
|
||||
// Optionally display a notification that the shadow file was updated.
|
||||
if (config.getBoolean ("shadow.notify"))
|
||||
footnote (std::string ("[Shadow file '") + shadowFile.data + "' updated]");
|
||||
|
||||
inShadow = false;
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Only allows aliases 10 deep.
|
||||
std::string Context::canonicalize (const std::string& input) const
|
||||
{
|
||||
std::string canonical = input;
|
||||
|
||||
// First try to autocomplete the alias.
|
||||
std::vector <std::string> options;
|
||||
std::vector <std::string> matches;
|
||||
foreach (name, aliases)
|
||||
options.push_back (name->first);
|
||||
|
||||
autoComplete (input, options, matches);
|
||||
if (matches.size () == 1)
|
||||
{
|
||||
canonical = matches[0];
|
||||
|
||||
// Follow the chain.
|
||||
int i = 10; // Safety valve.
|
||||
std::map <std::string, std::string>::const_iterator found;
|
||||
while ((found = aliases.find (canonical)) != aliases.end () && i-- > 0)
|
||||
canonical = found->second;
|
||||
|
||||
if (i < 1)
|
||||
return input;
|
||||
}
|
||||
|
||||
return canonical;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void Context::disallowModification () const
|
||||
{
|
||||
if (task.size () ||
|
||||
subst.mFrom != "" ||
|
||||
tagAdditions.size () ||
|
||||
tagRemovals.size ())
|
||||
throw std::string ("The '")
|
||||
+ cmd.command
|
||||
+ "' command does not allow further modification of a task.";
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void Context::loadCorrectConfigFile ()
|
||||
{
|
||||
// Set up default locations.
|
||||
struct passwd* pw = getpwuid (getuid ());
|
||||
if (!pw)
|
||||
throw std::string (
|
||||
stringtable.get (
|
||||
SHELL_READ_PASSWD,
|
||||
"Could not read home directory from the passwd file."));
|
||||
|
||||
std::string home = pw->pw_dir;
|
||||
File rc (home + "/.taskrc");
|
||||
Directory data (home + "./task");
|
||||
|
||||
// Is there an file_override for rc:?
|
||||
foreach (arg, args)
|
||||
{
|
||||
if (*arg == "--")
|
||||
break;
|
||||
else if (arg->substr (0, 3) == "rc:")
|
||||
{
|
||||
file_override = *arg;
|
||||
rc = File (arg->substr (3));
|
||||
|
||||
home = rc;
|
||||
std::string::size_type last_slash = rc.data.rfind ("/");
|
||||
if (last_slash != std::string::npos)
|
||||
home = rc.data.substr (0, last_slash);
|
||||
else
|
||||
home = ".";
|
||||
|
||||
args.erase (arg);
|
||||
header ("Using alternate .taskrc file " + rc.data); // TODO i18n
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Load rc file.
|
||||
config.clear (); // Dump current values.
|
||||
config.load (rc); // Load new file.
|
||||
|
||||
if (config.get ("data.location") != "")
|
||||
data = Directory (config.get ("data.location"));
|
||||
|
||||
// Are there any var_overrides for data.location?
|
||||
foreach (arg, args)
|
||||
{
|
||||
if (*arg == "--")
|
||||
break;
|
||||
else if (arg->substr (0, 17) == "rc.data.location:" ||
|
||||
arg->substr (0, 17) == "rc.data.location=")
|
||||
{
|
||||
data = Directory (arg->substr (17));
|
||||
header ("Using alternate data.location " + data.data); // TODO i18n
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Do we need to create a default rc?
|
||||
if (! rc.exists ())
|
||||
{
|
||||
if (confirm ("A configuration file could not be found in " // TODO i18n
|
||||
+ home
|
||||
+ "\n\n"
|
||||
+ "Would you like a sample "
|
||||
+ rc.data
|
||||
+ " created, so task can proceed?"))
|
||||
{
|
||||
config.createDefaultRC (rc, data);
|
||||
}
|
||||
else
|
||||
throw std::string ("Cannot proceed without rc file.");
|
||||
}
|
||||
|
||||
// Create data location, if necessary.
|
||||
config.createDefaultData (data);
|
||||
|
||||
// TODO find out why this was done twice - see tw #355
|
||||
// Load rc file.
|
||||
//config.clear (); // Dump current values.
|
||||
//config.setDefaults (); // Add in the custom reports.
|
||||
//config.load (rc); // Load new file.
|
||||
|
||||
// Apply overrides of type: "rc.name:value", or "rc.name=value".
|
||||
std::vector <std::string> filtered;
|
||||
bool foundTerminator = false;
|
||||
foreach (arg, args)
|
||||
{
|
||||
if (*arg == "--")
|
||||
{
|
||||
foundTerminator = true;
|
||||
filtered.push_back (*arg);
|
||||
}
|
||||
else if (!foundTerminator &&
|
||||
arg->substr (0, 3) == "rc.")
|
||||
{
|
||||
std::string name;
|
||||
std::string value;
|
||||
Nibbler n (*arg);
|
||||
if (n.getUntil ('.', name) &&
|
||||
n.skip ('.') &&
|
||||
n.getUntilOneOf (":=", name) &&
|
||||
n.skipN (1) &&
|
||||
n.getUntilEOS (value))
|
||||
{
|
||||
config.set (name, value);
|
||||
var_overrides += " " + *arg;
|
||||
footnote (std::string ("Configuration override ") + // TODO i18n
|
||||
arg->substr (3));
|
||||
}
|
||||
}
|
||||
else
|
||||
filtered.push_back (*arg);
|
||||
}
|
||||
|
||||
args = filtered;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void Context::loadAliases ()
|
||||
{
|
||||
aliases.clear ();
|
||||
|
||||
std::vector <std::string> vars;
|
||||
config.all (vars);
|
||||
foreach (var, vars)
|
||||
{
|
||||
if (var->substr (0, 6) == "alias.")
|
||||
{
|
||||
std::string alias = var->substr (6);
|
||||
std::string canonical = config.get (*var);
|
||||
|
||||
aliases[alias] = canonical;
|
||||
debug (std::string ("Alias ") + alias + " -> " + canonical);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void Context::parse ()
|
||||
{
|
||||
parse (args, cmd, task, sequence, subst, filter);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void Context::parse (
|
||||
std::vector <std::string>& parseArgs,
|
||||
Cmd& parseCmd,
|
||||
Task& parseTask,
|
||||
Sequence& parseSequence,
|
||||
Subst& parseSubst,
|
||||
Filter& parseFilter)
|
||||
{
|
||||
Timer t ("Context::parse");
|
||||
|
||||
Att attribute;
|
||||
tagAdditions.clear ();
|
||||
tagRemovals.clear ();
|
||||
std::string descCandidate = "";
|
||||
bool terminated = false;
|
||||
bool foundSequence = false;
|
||||
bool foundSomethingAfterSequence = false;
|
||||
|
||||
foreach (arg, parseArgs)
|
||||
{
|
||||
if (!terminated)
|
||||
{
|
||||
// The '--' argument shuts off all parsing - everything is an argument.
|
||||
if (*arg == "--")
|
||||
{
|
||||
debug ("parse terminator '" + *arg + "'");
|
||||
terminated = true;
|
||||
}
|
||||
|
||||
// Sequence
|
||||
// Note: "add" doesn't require an ID
|
||||
else if (parseCmd.command != "add" &&
|
||||
! foundSomethingAfterSequence &&
|
||||
parseSequence.valid (*arg))
|
||||
{
|
||||
debug ("parse sequence '" + *arg + "'");
|
||||
parseSequence.parse (*arg);
|
||||
foundSequence = true;
|
||||
}
|
||||
|
||||
// Tags to include begin with '+'.
|
||||
else if (arg->length () > 1 &&
|
||||
(*arg)[0] == '+' &&
|
||||
noSpaces (*arg))
|
||||
{
|
||||
debug ("parse tag addition '" + *arg + "'");
|
||||
if (foundSequence)
|
||||
foundSomethingAfterSequence = true;
|
||||
|
||||
if (arg->find (',') != std::string::npos)
|
||||
throw stringtable.get (TAGS_NO_COMMA,
|
||||
"Tags are not permitted to contain commas.");
|
||||
|
||||
tagAdditions.push_back (arg->substr (1));
|
||||
parseTask.addTag (arg->substr (1));
|
||||
}
|
||||
|
||||
// Tags to remove begin with '-'.
|
||||
else if (arg->length () > 1 &&
|
||||
(*arg)[0] == '-' &&
|
||||
noSpaces (*arg))
|
||||
{
|
||||
debug ("parse tag removal '" + *arg + "'");
|
||||
if (foundSequence)
|
||||
foundSomethingAfterSequence = true;
|
||||
|
||||
if (arg->find (',') != std::string::npos)
|
||||
throw stringtable.get (TAGS_NO_COMMA,
|
||||
"Tags are not permitted to contain commas.");
|
||||
|
||||
tagRemovals.push_back (arg->substr (1));
|
||||
}
|
||||
|
||||
// Atributes - name[.mod]:[value]
|
||||
else if (attribute.valid (*arg))
|
||||
{
|
||||
debug ("parse attribute '" + *arg + "'");
|
||||
if (foundSequence)
|
||||
foundSomethingAfterSequence = true;
|
||||
|
||||
attribute.parse (*arg);
|
||||
|
||||
// There has to be a better way. And it starts with a fresh coffee.
|
||||
std::string name = attribute.name ();
|
||||
std::string mod = attribute.mod ();
|
||||
std::string value = attribute.value ();
|
||||
if (attribute.validNameValue (name, mod, value))
|
||||
{
|
||||
attribute.name (name);
|
||||
attribute.mod (mod);
|
||||
attribute.value (value);
|
||||
|
||||
// Preserve modifier in the key, to allow multiple modifiers on the
|
||||
// same attribute. Bug #252.
|
||||
if (name != "" && mod != "")
|
||||
parseTask[name + "." + mod] = attribute;
|
||||
else
|
||||
parseTask[name] = attribute;
|
||||
|
||||
autoFilter (attribute, parseFilter);
|
||||
}
|
||||
|
||||
// *arg has the appearance of an attribute (foo:bar), but isn't
|
||||
// recognized, so downgrade it to part of the description.
|
||||
else
|
||||
{
|
||||
if (foundSequence)
|
||||
foundSomethingAfterSequence = true;
|
||||
|
||||
if (descCandidate.length ())
|
||||
descCandidate += " ";
|
||||
descCandidate += *arg;
|
||||
}
|
||||
}
|
||||
|
||||
// Substitution of description and/or annotation text.
|
||||
else if (parseSubst.valid (*arg))
|
||||
{
|
||||
if (foundSequence)
|
||||
foundSomethingAfterSequence = true;
|
||||
|
||||
debug ("parse subst '" + *arg + "'");
|
||||
parseSubst.parse (*arg);
|
||||
}
|
||||
|
||||
// It might be a command if one has not already been found.
|
||||
else if (parseCmd.command == "" &&
|
||||
parseCmd.valid (*arg))
|
||||
{
|
||||
debug ("parse cmd '" + *arg + "'");
|
||||
parseCmd.parse (*arg);
|
||||
|
||||
if (foundSequence)
|
||||
foundSomethingAfterSequence = true;
|
||||
}
|
||||
|
||||
// Anything else is just considered description.
|
||||
else
|
||||
{
|
||||
if (foundSequence)
|
||||
foundSomethingAfterSequence = true;
|
||||
|
||||
if (descCandidate.length ())
|
||||
descCandidate += " ";
|
||||
descCandidate += *arg;
|
||||
}
|
||||
}
|
||||
|
||||
// Command is terminated, therefore everything subsequently is a description.
|
||||
else
|
||||
{
|
||||
debug ("parse post-termination description '" + *arg + "'");
|
||||
if (foundSequence)
|
||||
foundSomethingAfterSequence = true;
|
||||
|
||||
if (descCandidate.length ())
|
||||
descCandidate += " ";
|
||||
descCandidate += *arg;
|
||||
}
|
||||
}
|
||||
|
||||
if (descCandidate != "" && noVerticalSpace (descCandidate))
|
||||
{
|
||||
debug ("parse description '" + descCandidate + "'");
|
||||
parseTask.set ("description", descCandidate);
|
||||
|
||||
// Now convert the description to a filter on each word, if necessary.
|
||||
if (parseCmd.isReadOnlyCommand ())
|
||||
{
|
||||
std::vector <std::string> words;
|
||||
split (words, descCandidate, ' ');
|
||||
std::vector <std::string>::iterator it;
|
||||
for (it = words.begin (); it != words.end (); ++it)
|
||||
{
|
||||
Att a ("description", "contains", *it);
|
||||
autoFilter (a, parseFilter);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// At this point, either a sequence or a command should have been found.
|
||||
if (parseSequence.size () == 0 && parseCmd.command == "")
|
||||
parseCmd.parse (descCandidate);
|
||||
|
||||
// Read-only command (reports, status, info ...) use filters. Write commands
|
||||
// (add, done ...) do not. The filter was constructed iteratively above, but
|
||||
// tags were omitted, so they are added now.
|
||||
if (parseCmd.isReadOnlyCommand ())
|
||||
autoFilter (parseFilter);
|
||||
|
||||
// If no command was specified, and there were no command line arguments
|
||||
// then invoke the default command.
|
||||
if (parseCmd.command == "" && parseArgs.size () == 0)
|
||||
{
|
||||
// Apply overrides, if any.
|
||||
std::string defaultCommand = config.get ("default.command");
|
||||
if (defaultCommand != "")
|
||||
{
|
||||
// Add on the overrides.
|
||||
defaultCommand += " " + file_override + " " + var_overrides;
|
||||
|
||||
// Stuff the command line.
|
||||
args.clear ();
|
||||
split (args, defaultCommand, ' ');
|
||||
header ("[task " + trim (defaultCommand) + "]");
|
||||
|
||||
// Reinitialize the context and recurse.
|
||||
file_override = "";
|
||||
var_overrides = "";
|
||||
footnotes.clear ();
|
||||
initialize ();
|
||||
parse (args, cmd, task, sequence, subst, filter);
|
||||
}
|
||||
else
|
||||
throw stringtable.get (
|
||||
CMD_MISSING,
|
||||
"You must specify a command, or a task ID to modify");
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Note: The reason some of these are commented out is because the ::clear
|
||||
// method is not really "clear" but "clear_some". Some members do not need to
|
||||
// be initialized. That makes this method something of a misnomer. So be it.
|
||||
void Context::clear ()
|
||||
{
|
||||
// Config config;
|
||||
filter.clear ();
|
||||
// Keymap keymap;
|
||||
sequence.clear ();
|
||||
subst.clear ();
|
||||
// task.clear ();
|
||||
task = Task ();
|
||||
tdb.clear ();
|
||||
// stringtable.clear ();
|
||||
program = "";
|
||||
args.clear ();
|
||||
file_override = "";
|
||||
var_overrides = "";
|
||||
cmd.command = "";
|
||||
tagAdditions.clear ();
|
||||
tagRemovals.clear ();
|
||||
|
||||
clearMessages ();
|
||||
inShadow = false;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Add all the attributes in the task to the filter. All except uuid.
|
||||
void Context::autoFilter (Att& a, Filter& f)
|
||||
{
|
||||
// Words are found in the description using the .has modifier.
|
||||
if (a.name () == "description" && a.mod () == "")
|
||||
{
|
||||
std::vector <std::string> words;
|
||||
split (words, a.value (), ' ');
|
||||
foreach (word, words)
|
||||
{
|
||||
f.push_back (Att ("description", "has", *word));
|
||||
debug ("auto filter: " + a.name () + ".has:" + *word);
|
||||
}
|
||||
}
|
||||
|
||||
// Projects are matched left-most.
|
||||
else if (a.name () == "project" && a.mod () == "")
|
||||
{
|
||||
if (a.value () != "")
|
||||
{
|
||||
f.push_back (Att ("project", "startswith", a.value ()));
|
||||
debug ("auto filter: " + a.name () + ".startswith:" + a.value ());
|
||||
}
|
||||
else
|
||||
{
|
||||
f.push_back (Att ("project", "is", a.value ()));
|
||||
debug ("auto filter: " + a.name () + ".is:" + a.value ());
|
||||
}
|
||||
}
|
||||
|
||||
// The limit attribute does not participate in filtering, and needs to be
|
||||
// specifically handled in handleCustomReport.
|
||||
else if (a.name () == "limit")
|
||||
{
|
||||
}
|
||||
|
||||
// Every task has a unique uuid by default, and it shouldn't be included,
|
||||
// because it is guaranteed to not match.
|
||||
else if (a.name () == "uuid")
|
||||
{
|
||||
}
|
||||
|
||||
// The mechanism for filtering on tags is +/-<tag>.
|
||||
// Do not handle here - see below.
|
||||
else if (a.name () == "tags")
|
||||
{
|
||||
}
|
||||
|
||||
// Generic attribute matching.
|
||||
else
|
||||
{
|
||||
f.push_back (a);
|
||||
debug ("auto filter: " +
|
||||
a.name () +
|
||||
(a.mod () != "" ?
|
||||
("." + a.mod () + ":") :
|
||||
":") +
|
||||
a.value ());
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Add all the tags in the task to the filter.
|
||||
void Context::autoFilter (Filter& f)
|
||||
{
|
||||
// This is now a correct implementation of a filter on the presence or absence
|
||||
// of a tag. The prior code provided the illusion of leftmost partial tag
|
||||
// matches, but was really using the 'contains' and 'nocontains' attribute
|
||||
// modifiers. See bug #293.
|
||||
|
||||
// Include tagAdditions.
|
||||
foreach (tag, tagAdditions)
|
||||
{
|
||||
f.push_back (Att ("tags", "word", *tag));
|
||||
debug ("auto filter: +" + *tag);
|
||||
}
|
||||
|
||||
// Include tagRemovals.
|
||||
foreach (tag, tagRemovals)
|
||||
{
|
||||
f.push_back (Att ("tags", "noword", *tag));
|
||||
debug ("auto filter: -" + *tag);
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void Context::header (const std::string& input)
|
||||
{
|
||||
headers.push_back (input);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void Context::footnote (const std::string& input)
|
||||
{
|
||||
footnotes.push_back (input);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void Context::debug (const std::string& input)
|
||||
{
|
||||
debugMessages.push_back (input);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void Context::clearMessages ()
|
||||
{
|
||||
headers.clear ();
|
||||
footnotes.clear ();
|
||||
debugMessages.clear ();
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
104
src/Context.h
Normal file
104
src/Context.h
Normal file
@@ -0,0 +1,104 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// task - a command line task list manager.
|
||||
//
|
||||
// Copyright 2006 - 2010, Paul Beckingham.
|
||||
// All rights reserved.
|
||||
//
|
||||
// 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.,
|
||||
// 51 Franklin Street, Fifth Floor,
|
||||
// Boston, MA
|
||||
// 02110-1301
|
||||
// USA
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
#ifndef INCLUDED_CONTEXT
|
||||
#define INCLUDED_CONTEXT
|
||||
|
||||
#include "Filter.h"
|
||||
#include "Keymap.h"
|
||||
#include "Config.h"
|
||||
#include "Sequence.h"
|
||||
#include "Subst.h"
|
||||
#include "Cmd.h"
|
||||
#include "Task.h"
|
||||
#include "TDB.h"
|
||||
#include "StringTable.h"
|
||||
#include "Hooks.h"
|
||||
|
||||
class Context
|
||||
{
|
||||
public:
|
||||
Context (); // Default constructor
|
||||
~Context (); // Destructor
|
||||
|
||||
Context (const Context&);
|
||||
Context& operator= (const Context&);
|
||||
|
||||
void initialize (int, char**); // all startup
|
||||
void initialize (); // for reinitializing
|
||||
int run (); // task classic
|
||||
int interactive (); // task interactive (not implemented)
|
||||
int dispatch (std::string&); // command handler dispatch
|
||||
void shadow (); // shadow file update
|
||||
|
||||
int getWidth (); // determine terminal width
|
||||
|
||||
void header (const std::string&); // Header message sink
|
||||
void footnote (const std::string&); // Footnote message sink
|
||||
void debug (const std::string&); // Debug message sink
|
||||
void clearMessages ();
|
||||
|
||||
void parse ();
|
||||
void parse (std::vector <std::string>&, Cmd&, Task&, Sequence&, Subst&, Filter&);
|
||||
void clear ();
|
||||
|
||||
std::string canonicalize (const std::string&) const;
|
||||
void disallowModification () const;
|
||||
|
||||
private:
|
||||
void loadCorrectConfigFile ();
|
||||
void loadAliases ();
|
||||
void autoFilter (Att&, Filter&);
|
||||
void autoFilter (Filter&);
|
||||
|
||||
public:
|
||||
Config config;
|
||||
Filter filter;
|
||||
Keymap keymap;
|
||||
Sequence sequence;
|
||||
Subst subst;
|
||||
Task task;
|
||||
TDB tdb;
|
||||
StringTable stringtable;
|
||||
std::string program;
|
||||
std::vector <std::string> args;
|
||||
std::string file_override;
|
||||
std::string var_overrides;
|
||||
Cmd cmd;
|
||||
std::map <std::string, std::string> aliases;
|
||||
std::vector <std::string> tagAdditions;
|
||||
std::vector <std::string> tagRemovals;
|
||||
Hooks hooks;
|
||||
|
||||
private:
|
||||
std::vector <std::string> headers;
|
||||
std::vector <std::string> footnotes;
|
||||
std::vector <std::string> debugMessages;
|
||||
bool inShadow;
|
||||
};
|
||||
|
||||
#endif
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
589
src/Date.cpp
589
src/Date.cpp
@@ -1,7 +1,7 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// task - a command line task list manager.
|
||||
//
|
||||
// Copyright 2006 - 2008, Paul Beckingham.
|
||||
// Copyright 2006 - 2010, Paul Beckingham, Federico Hernandez.
|
||||
// All rights reserved.
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify it under
|
||||
@@ -25,11 +25,17 @@
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
#include <iostream>
|
||||
#include <sstream>
|
||||
#include <time.h>
|
||||
#include <assert.h>
|
||||
#include <stdlib.h>
|
||||
#include "task.h"
|
||||
#include <ctype.h>
|
||||
#include "Date.h"
|
||||
#include "text.h"
|
||||
#include "util.h"
|
||||
#include "Context.h"
|
||||
|
||||
extern Context context;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Defaults to "now".
|
||||
@@ -57,29 +63,208 @@ Date::Date (const int m, const int d, const int y)
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Date::Date (const std::string& mdy)
|
||||
Date::Date (const std::string& mdy, const std::string& format /* = "m/d/Y" */)
|
||||
{
|
||||
size_t firstSlash = mdy.find ("/");
|
||||
size_t secondSlash = mdy.find ("/", firstSlash + 1);
|
||||
if (firstSlash != std::string::npos &&
|
||||
secondSlash != std::string::npos)
|
||||
int month = 0;
|
||||
int day = 0;
|
||||
int year = 0;
|
||||
|
||||
// Perhaps it is an epoch date, in string form?
|
||||
if (isEpoch (mdy))
|
||||
return;
|
||||
|
||||
// Before parsing according to "format", perhaps this is a relative date?
|
||||
if (isRelativeDate (mdy))
|
||||
return;
|
||||
|
||||
unsigned int i = 0; // Index into mdy.
|
||||
|
||||
for (unsigned int f = 0; f < format.length (); ++f)
|
||||
{
|
||||
int m = ::atoi (mdy.substr (0, firstSlash ).c_str ());
|
||||
int d = ::atoi (mdy.substr (firstSlash + 1, secondSlash - firstSlash).c_str ());
|
||||
int y = ::atoi (mdy.substr (secondSlash + 1, std::string::npos ).c_str ());
|
||||
if (!valid (m, d, y))
|
||||
throw std::string ("\"") + mdy + "\" is not a valid date.";
|
||||
switch (format[f])
|
||||
{
|
||||
// Single or double digit.
|
||||
case 'm':
|
||||
if (i >= mdy.length () ||
|
||||
! isdigit (mdy[i]))
|
||||
{
|
||||
throw std::string ("\"") + mdy + "\" is not a valid date (m).";
|
||||
}
|
||||
|
||||
// Duplicate Date::Date (const int, const int, const int);
|
||||
struct tm t = {0};
|
||||
t.tm_mday = d;
|
||||
t.tm_mon = m - 1;
|
||||
t.tm_year = y - 1900;
|
||||
if (i + 1 < mdy.length () &&
|
||||
(mdy[i + 0] == '0' || mdy[i + 0] == '1') &&
|
||||
isdigit (mdy[i + 1]))
|
||||
{
|
||||
month = atoi (mdy.substr (i, 2).c_str ());
|
||||
i += 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
month = atoi (mdy.substr (i, 1).c_str ());
|
||||
++i;
|
||||
}
|
||||
break;
|
||||
|
||||
mT = mktime (&t);
|
||||
case 'd':
|
||||
if (i >= mdy.length () ||
|
||||
! isdigit (mdy[i]))
|
||||
{
|
||||
throw std::string ("\"") + mdy + "\" is not a valid date (d).";
|
||||
}
|
||||
|
||||
if (i + 1 < mdy.length () &&
|
||||
(mdy[i + 0] == '0' || mdy[i + 0] == '1' || mdy[i + 0] == '2' || mdy[i + 0] == '3') &&
|
||||
isdigit (mdy[i + 1]))
|
||||
{
|
||||
day = atoi (mdy.substr (i, 2).c_str ());
|
||||
i += 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
day = atoi (mdy.substr (i, 1).c_str ());
|
||||
++i;
|
||||
}
|
||||
break;
|
||||
|
||||
// Double digit.
|
||||
case 'y':
|
||||
if (i + 1 >= mdy.length () ||
|
||||
! isdigit (mdy[i + 0]) ||
|
||||
! isdigit (mdy[i + 1]))
|
||||
{
|
||||
throw std::string ("\"") + mdy + "\" is not a valid date (y).";
|
||||
}
|
||||
|
||||
year = atoi (mdy.substr (i, 2).c_str ()) + 2000;
|
||||
i += 2;
|
||||
break;
|
||||
|
||||
case 'M':
|
||||
if (i + 1 >= mdy.length () ||
|
||||
! isdigit (mdy[i + 0]) ||
|
||||
! isdigit (mdy[i + 1]))
|
||||
{
|
||||
throw std::string ("\"") + mdy + "\" is not a valid date (M).";
|
||||
}
|
||||
|
||||
month = atoi (mdy.substr (i, 2).c_str ());
|
||||
i += 2;
|
||||
break;
|
||||
|
||||
case 'D':
|
||||
if (i + 1 >= mdy.length () ||
|
||||
! isdigit (mdy[i + 0]) ||
|
||||
! isdigit (mdy[i + 1]))
|
||||
{
|
||||
throw std::string ("\"") + mdy + "\" is not a valid date (D).";
|
||||
}
|
||||
|
||||
day = atoi (mdy.substr (i, 2).c_str ());
|
||||
i += 2;
|
||||
break;
|
||||
|
||||
case 'V':
|
||||
if (i + 1 >= mdy.length () ||
|
||||
! isdigit (mdy[i + 0]) ||
|
||||
! isdigit (mdy[i + 1]))
|
||||
{
|
||||
throw std::string ("\"") + mdy + "\" is not a valid date (V).";
|
||||
}
|
||||
|
||||
i += 2;
|
||||
break;
|
||||
|
||||
// Quadruple digit.
|
||||
case 'Y':
|
||||
if (i + 3 >= mdy.length () ||
|
||||
! isdigit (mdy[i + 0]) ||
|
||||
! isdigit (mdy[i + 1]) ||
|
||||
! isdigit (mdy[i + 2]) ||
|
||||
! isdigit (mdy[i + 3]))
|
||||
{
|
||||
throw std::string ("\"") + mdy + "\" is not a valid date (Y).";
|
||||
}
|
||||
|
||||
year = atoi (mdy.substr (i, 4).c_str ());
|
||||
i += 4;
|
||||
break;
|
||||
|
||||
// Short names with 3 characters
|
||||
case 'a':
|
||||
if (i + 2 >= mdy.length () ||
|
||||
isdigit (mdy[i + 0]) ||
|
||||
isdigit (mdy[i + 1]) ||
|
||||
isdigit (mdy[i + 2]))
|
||||
{
|
||||
throw std::string ("\"") + mdy + "\" is not a valid date (a).";
|
||||
}
|
||||
|
||||
i += 3;
|
||||
break;
|
||||
|
||||
case 'b':
|
||||
if (i + 2 >= mdy.length () ||
|
||||
isdigit (mdy[i + 0]) ||
|
||||
isdigit (mdy[i + 1]) ||
|
||||
isdigit (mdy[i + 2]))
|
||||
{
|
||||
throw std::string ("\"") + mdy + "\" is not a valid date (b).";
|
||||
}
|
||||
|
||||
month = Date::monthOfYear (mdy.substr (i, 3).c_str());
|
||||
i += 3;
|
||||
break;
|
||||
|
||||
// Long names
|
||||
case 'A':
|
||||
if (i + 2 >= mdy.length () ||
|
||||
isdigit (mdy[i + 0]) ||
|
||||
isdigit (mdy[i + 1]) ||
|
||||
isdigit (mdy[i + 2]))
|
||||
{
|
||||
throw std::string ("\"") + mdy + "\" is not a valid date (A).";
|
||||
}
|
||||
|
||||
i += Date::dayName( Date::dayOfWeek (mdy.substr (i, 3).c_str()) ).size();
|
||||
break;
|
||||
|
||||
case 'B':
|
||||
if (i + 2 >= mdy.length () ||
|
||||
isdigit (mdy[i + 0]) ||
|
||||
isdigit (mdy[i + 1]) ||
|
||||
isdigit (mdy[i + 2]))
|
||||
{
|
||||
throw std::string ("\"") + mdy + "\" is not a valid date (B).";
|
||||
}
|
||||
|
||||
month = Date::monthOfYear (mdy.substr (i, 3).c_str());
|
||||
i += Date::monthName(month).size();
|
||||
break;
|
||||
|
||||
default:
|
||||
if (i >= mdy.length () ||
|
||||
mdy[i] != format[f])
|
||||
{
|
||||
throw std::string ("\"") + mdy + "\" is not a valid date (DEFAULT).";
|
||||
}
|
||||
++i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
throw std::string ("\"") + mdy + "\" is not a valid date.";
|
||||
|
||||
if (i < mdy.length ())
|
||||
throw std::string ("\"") + mdy + "\" is not a valid date in " + format + " format.";
|
||||
|
||||
if (!valid (month, day, year))
|
||||
throw std::string ("\"") + mdy + "\" is not a valid date (VALID).";
|
||||
|
||||
// Duplicate Date::Date (const int, const int, const int);
|
||||
struct tm t = {0};
|
||||
t.tm_mday = day;
|
||||
t.tm_mon = month - 1;
|
||||
t.tm_year = year - 1900;
|
||||
|
||||
mT = mktime (&t);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -99,6 +284,14 @@ time_t Date::toEpoch ()
|
||||
return mT;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
std::string Date::toEpochString ()
|
||||
{
|
||||
std::stringstream epoch;
|
||||
epoch << mT;
|
||||
return epoch.str ();
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void Date::toEpoch (time_t& epoch)
|
||||
{
|
||||
@@ -116,20 +309,66 @@ void Date::toMDY (int& m, int& d, int& y)
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void Date::toString (std::string& output)
|
||||
const std::string Date::toString (const std::string& format /*= "m/d/Y" */) const
|
||||
{
|
||||
output = toString ();
|
||||
// Making this local copy seems to fix a bug. Remove the local copy and you'll
|
||||
// see segmentation faults and all kinds of gibberish.
|
||||
std::string localFormat = format;
|
||||
|
||||
char buffer[12];
|
||||
std::string formatted;
|
||||
for (unsigned int i = 0; i < localFormat.length (); ++i)
|
||||
{
|
||||
char c = localFormat[i];
|
||||
switch (c)
|
||||
{
|
||||
case 'm': sprintf (buffer, "%d", this->month ()); break;
|
||||
case 'M': sprintf (buffer, "%02d", this->month ()); break;
|
||||
case 'd': sprintf (buffer, "%d", this->day ()); break;
|
||||
case 'D': sprintf (buffer, "%02d", this->day ()); break;
|
||||
case 'y': sprintf (buffer, "%02d", this->year () % 100); break;
|
||||
case 'Y': sprintf (buffer, "%d", this->year ()); break;
|
||||
case 'a': sprintf (buffer, "%.3s", Date::dayName (dayOfWeek ()).c_str ()); break;
|
||||
case 'A': sprintf (buffer, "%s", Date::dayName (dayOfWeek ()).c_str ()); break;
|
||||
case 'b': sprintf (buffer, "%.3s", Date::monthName (month ()).c_str ()); break;
|
||||
case 'B': sprintf (buffer, "%.9s", Date::monthName (month ()).c_str ()); break;
|
||||
case 'V': sprintf (buffer, "%02d", Date::weekOfYear (Date::dayOfWeek (context.config.get ("weekstart")))); break;
|
||||
default: sprintf (buffer, "%c", c); break;
|
||||
}
|
||||
|
||||
formatted += buffer;
|
||||
}
|
||||
|
||||
return formatted;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
std::string Date::toString (void)
|
||||
const std::string Date::toStringWithTime (const std::string& format /*= "m/d/Y" */) const
|
||||
{
|
||||
int m, d, y;
|
||||
toMDY (m, d, y);
|
||||
// Format as above.
|
||||
std::string formatted = toString (format);
|
||||
|
||||
char formatted [11];
|
||||
sprintf (formatted, "%d/%d/%d", m, d, y);
|
||||
return std::string (formatted);
|
||||
char buffer[12];
|
||||
sprintf (buffer, " %d:%02d:%02d", hour (), minute (), second ());
|
||||
formatted += buffer;
|
||||
|
||||
return formatted;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
bool Date::valid (const std::string& input, const std::string& format)
|
||||
{
|
||||
try
|
||||
{
|
||||
Date test (input, format);
|
||||
}
|
||||
|
||||
catch (...)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -156,9 +395,11 @@ bool Date::leapYear (int year)
|
||||
{
|
||||
bool ly = false;
|
||||
|
||||
if (!(year % 4)) ly = true;
|
||||
else if (!(year % 400)) ly = true;
|
||||
else if (!(year % 100)) ly = false;
|
||||
// (year % 4 == 0) && (year % 100 !=0) OR
|
||||
// (year % 400 == 0)
|
||||
// are leapyears
|
||||
|
||||
if (((!(year % 4)) && (year % 100)) || (!(year % 400))) ly = true;
|
||||
|
||||
return ly;
|
||||
}
|
||||
@@ -196,7 +437,7 @@ std::string Date::monthName (int month)
|
||||
|
||||
assert (month > 0);
|
||||
assert (month <= 12);
|
||||
return months[month -1];
|
||||
return months[month - 1];
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -233,6 +474,28 @@ std::string Date::dayName (int dow)
|
||||
return days[dow];
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
int Date::weekOfYear (int weekStart) const
|
||||
{
|
||||
struct tm* t = localtime (&mT);
|
||||
char weekStr[3];
|
||||
|
||||
if (weekStart == 0)
|
||||
strftime(weekStr, sizeof(weekStr), "%U", t);
|
||||
else if (weekStart == 1)
|
||||
strftime(weekStr, sizeof(weekStr), "%V", t);
|
||||
else
|
||||
throw std::string ("The 'weekstart' configuration variable may "
|
||||
"only contain 'Sunday' or 'Monday'.");
|
||||
|
||||
int weekNumber = atoi (weekStr);
|
||||
|
||||
if (weekStart == 0)
|
||||
weekNumber += 1;
|
||||
|
||||
return weekNumber;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
int Date::dayOfWeek () const
|
||||
{
|
||||
@@ -240,6 +503,43 @@ int Date::dayOfWeek () const
|
||||
return t->tm_wday;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
int Date::dayOfWeek (const std::string& input)
|
||||
{
|
||||
std::string in = lowerCase (input);
|
||||
|
||||
if (in == "sunday" || in == "sun") return 0;
|
||||
if (in == "monday" || in == "mon") return 1;
|
||||
if (in == "tuesday" || in == "tue") return 2;
|
||||
if (in == "wednesday" || in == "wed") return 3;
|
||||
if (in == "thursday" || in == "thu") return 4;
|
||||
if (in == "friday" || in == "fri") return 5;
|
||||
if (in == "saturday" || in == "sat") return 6;
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
int Date::monthOfYear (const std::string& input)
|
||||
{
|
||||
std::string in = lowerCase (input);
|
||||
|
||||
if (in == "january" || in == "jan") return 1;
|
||||
if (in == "february" || in == "feb") return 2;
|
||||
if (in == "march" || in == "mar") return 3;
|
||||
if (in == "april" || in == "apr") return 4;
|
||||
if (in == "may" || in == "may") return 5;
|
||||
if (in == "june" || in == "jun") return 6;
|
||||
if (in == "july" || in == "jul") return 7;
|
||||
if (in == "august" || in == "aug") return 8;
|
||||
if (in == "september" || in == "sep") return 9;
|
||||
if (in == "october" || in == "oct") return 10;
|
||||
if (in == "november" || in == "nov") return 11;
|
||||
if (in == "december" || in == "dec") return 12;
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
int Date::month () const
|
||||
{
|
||||
@@ -261,6 +561,27 @@ int Date::year () const
|
||||
return t->tm_year + 1900;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
int Date::hour () const
|
||||
{
|
||||
struct tm* t = localtime (&mT);
|
||||
return t->tm_hour;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
int Date::minute () const
|
||||
{
|
||||
struct tm* t = localtime (&mT);
|
||||
return t->tm_min;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
int Date::second () const
|
||||
{
|
||||
struct tm* t = localtime (&mT);
|
||||
return t->tm_sec;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
bool Date::operator== (const Date& rhs)
|
||||
{
|
||||
@@ -297,6 +618,36 @@ bool Date::operator>= (const Date& rhs)
|
||||
return mT >= rhs.mT;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
bool Date::sameDay (const Date& rhs)
|
||||
{
|
||||
if (this->year () == rhs.year () &&
|
||||
this->month () == rhs.month () &&
|
||||
this->day () == rhs.day ())
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
bool Date::sameMonth (const Date& rhs)
|
||||
{
|
||||
if (this->year () == rhs.year () &&
|
||||
this->month () == rhs.month ())
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
bool Date::sameYear (const Date& rhs)
|
||||
{
|
||||
if (this->year () == rhs.year ())
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Date Date::operator+ (const int delta)
|
||||
{
|
||||
@@ -324,3 +675,177 @@ time_t Date::operator- (const Date& rhs)
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
bool Date::isEpoch (const std::string& input)
|
||||
{
|
||||
if (digitsOnly (input) &&
|
||||
input.length () > 8)
|
||||
{
|
||||
mT = (time_t) atoi (input.c_str ());
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// If the input string looks like a relative date, determine that date, set mT
|
||||
// and return true.
|
||||
//
|
||||
// What is a relative date? All of the following should be recognizable, and
|
||||
// converted to an absolute date:
|
||||
// wednesday
|
||||
// fri
|
||||
// 23rd
|
||||
// today
|
||||
// tomorrow
|
||||
// yesterday
|
||||
// eow (end of week)
|
||||
// eom (end of month)
|
||||
// eoy (end of year)
|
||||
bool Date::isRelativeDate (const std::string& input)
|
||||
{
|
||||
std::string in (lowerCase (input));
|
||||
Date today;
|
||||
|
||||
std::vector <std::string> supported;
|
||||
supported.push_back ("monday");
|
||||
supported.push_back ("tuesday");
|
||||
supported.push_back ("wednesday");
|
||||
supported.push_back ("thursday");
|
||||
supported.push_back ("friday");
|
||||
supported.push_back ("saturday");
|
||||
supported.push_back ("sunday");
|
||||
supported.push_back ("today");
|
||||
supported.push_back ("tomorrow");
|
||||
supported.push_back ("yesterday");
|
||||
supported.push_back ("eow");
|
||||
supported.push_back ("eom");
|
||||
supported.push_back ("eoy");
|
||||
|
||||
std::vector <std::string> matches;
|
||||
if (autoComplete (in, supported, matches) == 1)
|
||||
{
|
||||
std::string found = matches[0];
|
||||
|
||||
// If day name.
|
||||
int dow;
|
||||
if ((dow = Date::dayOfWeek (found)) != -1 ||
|
||||
found == "eow")
|
||||
{
|
||||
if (found == "eow")
|
||||
dow = 5;
|
||||
|
||||
if (today.dayOfWeek () >= dow)
|
||||
today += (dow - today.dayOfWeek () + 7) * 86400;
|
||||
else
|
||||
today += (dow - today.dayOfWeek ()) * 86400;
|
||||
|
||||
int m, d, y;
|
||||
today.toMDY (m, d, y);
|
||||
Date then (m, d, y);
|
||||
|
||||
mT = then.mT;
|
||||
return true;
|
||||
}
|
||||
else if (found == "today")
|
||||
{
|
||||
Date then (today.month (),
|
||||
today.day (),
|
||||
today.year ());
|
||||
mT = then.mT;
|
||||
return true;
|
||||
}
|
||||
else if (found == "tomorrow")
|
||||
{
|
||||
Date then (today.month (),
|
||||
today.day (),
|
||||
today.year ());
|
||||
mT = then.mT + 86400;
|
||||
return true;
|
||||
}
|
||||
else if (found == "yesterday")
|
||||
{
|
||||
Date then (today.month (),
|
||||
today.day (),
|
||||
today.year ());
|
||||
mT = then.mT - 86400;
|
||||
return true;
|
||||
}
|
||||
else if (found == "eom")
|
||||
{
|
||||
Date then (today.month (),
|
||||
daysInMonth (today.month (), today.year ()),
|
||||
today.year ());
|
||||
mT = then.mT;
|
||||
return true;
|
||||
}
|
||||
else if (found == "eoy")
|
||||
{
|
||||
Date then (12, 31, today.year ());
|
||||
mT = then.mT;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
// Support "21st" to indicate the next date that is the 21st day.
|
||||
else if (input.length () <= 4 &&
|
||||
isdigit (input[0]))
|
||||
{
|
||||
int number;
|
||||
std::string ordinal;
|
||||
|
||||
if (isdigit (input[1]))
|
||||
{
|
||||
number = atoi (input.substr (0, 2).c_str ());
|
||||
ordinal = lowerCase (input.substr (2));
|
||||
}
|
||||
else
|
||||
{
|
||||
number = atoi (input.substr (0, 2).c_str ());
|
||||
ordinal = lowerCase (input.substr (1));
|
||||
}
|
||||
|
||||
// Sanity check.
|
||||
if (number <= 31)
|
||||
{
|
||||
if (ordinal == "st" ||
|
||||
ordinal == "nd" ||
|
||||
ordinal == "rd" ||
|
||||
ordinal == "th")
|
||||
{
|
||||
int m = today.month ();
|
||||
int d = today.day ();
|
||||
int y = today.year ();
|
||||
|
||||
// If it is this month.
|
||||
if (d < number &&
|
||||
number <= Date::daysInMonth (m, y))
|
||||
{
|
||||
Date then (m, number, y);
|
||||
mT = then.mT;
|
||||
return true;
|
||||
}
|
||||
|
||||
do
|
||||
{
|
||||
m++;
|
||||
|
||||
if (m > 12)
|
||||
{
|
||||
m = 1;
|
||||
y++;
|
||||
}
|
||||
}
|
||||
while (number > Date::daysInMonth (m, y));
|
||||
|
||||
Date then (m, number, y);
|
||||
mT = then.mT;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
27
src/Date.h
27
src/Date.h
@@ -1,7 +1,7 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// task - a command line task list manager.
|
||||
//
|
||||
// Copyright 2006 - 2008, Paul Beckingham.
|
||||
// Copyright 2006 - 2010, Paul Beckingham, Federico Hernandez.
|
||||
// All rights reserved.
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify it under
|
||||
@@ -27,6 +27,7 @@
|
||||
#ifndef INCLUDED_DATE
|
||||
#define INCLUDED_DATE
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string>
|
||||
|
||||
class Date;
|
||||
@@ -37,15 +38,17 @@ public:
|
||||
Date ();
|
||||
Date (time_t);
|
||||
Date (const int, const int, const int);
|
||||
Date (const std::string&);
|
||||
Date (const std::string&, const std::string& format = "m/d/Y");
|
||||
Date (const Date&);
|
||||
virtual ~Date ();
|
||||
|
||||
void toEpoch (time_t&);
|
||||
time_t toEpoch ();
|
||||
std::string toEpochString ();
|
||||
void toMDY (int&, int&, int&);
|
||||
void toString (std::string&);
|
||||
std::string toString (void);
|
||||
const std::string toString (const std::string& format = "m/d/Y") const;
|
||||
const std::string toStringWithTime (const std::string& format = "m/d/Y") const;
|
||||
static bool valid (const std::string&, const std::string& format = "m/d/Y");
|
||||
static bool valid (const int, const int, const int);
|
||||
|
||||
static bool leapYear (int);
|
||||
@@ -53,11 +56,18 @@ public:
|
||||
static std::string monthName (int);
|
||||
static void dayName (int, std::string&);
|
||||
static std::string dayName (int);
|
||||
int dayOfWeek () const;
|
||||
static int weekOfYear (const std::string&);
|
||||
static int dayOfWeek (const std::string&);
|
||||
static int monthOfYear (const std::string&);
|
||||
|
||||
int month () const;
|
||||
int day () const;
|
||||
int year () const;
|
||||
int weekOfYear (int) const;
|
||||
int dayOfWeek () const;
|
||||
int hour () const;
|
||||
int minute () const;
|
||||
int second () const;
|
||||
|
||||
bool operator== (const Date&);
|
||||
bool operator!= (const Date&);
|
||||
@@ -65,6 +75,9 @@ public:
|
||||
bool operator> (const Date&);
|
||||
bool operator<= (const Date&);
|
||||
bool operator>= (const Date&);
|
||||
bool sameDay (const Date&);
|
||||
bool sameMonth (const Date&);
|
||||
bool sameYear (const Date&);
|
||||
|
||||
Date operator+ (const int);
|
||||
Date& operator+= (const int);
|
||||
@@ -72,6 +85,10 @@ public:
|
||||
|
||||
time_t operator- (const Date&);
|
||||
|
||||
private:
|
||||
bool isEpoch (const std::string&);
|
||||
bool isRelativeDate (const std::string&);
|
||||
|
||||
protected:
|
||||
time_t mT;
|
||||
};
|
||||
|
||||
144
src/Directory.cpp
Normal file
144
src/Directory.cpp
Normal file
@@ -0,0 +1,144 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// task - a command line task list manager.
|
||||
//
|
||||
// Copyright 2006 - 2009, Paul Beckingham.
|
||||
// All rights reserved.
|
||||
//
|
||||
// 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.,
|
||||
// 51 Franklin Street, Fifth Floor,
|
||||
// Boston, MA
|
||||
// 02110-1301
|
||||
// USA
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include <unistd.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/types.h>
|
||||
#include <dirent.h>
|
||||
#include <string.h>
|
||||
#include "Directory.h"
|
||||
#include "../auto.h"
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Directory::Directory ()
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Directory::Directory (const Directory& other)
|
||||
: File::File (other)
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Directory::Directory (const File& other)
|
||||
: File::File (other)
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Directory::Directory (const Path& other)
|
||||
: File::File (other)
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Directory::Directory (const std::string& in)
|
||||
: File::File (in)
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Directory::~Directory ()
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Directory& Directory::operator= (const Directory& other)
|
||||
{
|
||||
if (this != &other)
|
||||
{
|
||||
File::operator= (other);
|
||||
}
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
bool Directory::create ()
|
||||
{
|
||||
return mkdir (data.c_str (), 0755) == 0 ? true : false;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
bool Directory::remove ()
|
||||
{
|
||||
return rmdir (data.c_str ()) == 0 ? true : false;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
std::vector <std::string> Directory::list ()
|
||||
{
|
||||
std::vector <std::string> files;
|
||||
list (data, files, false);
|
||||
return files;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
std::vector <std::string> Directory::listRecursive ()
|
||||
{
|
||||
std::vector <std::string> files;
|
||||
list (data, files, true);
|
||||
return files;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void Directory::list (
|
||||
const std::string& base,
|
||||
std::vector <std::string>& results,
|
||||
bool recursive)
|
||||
{
|
||||
DIR* dp = opendir (base.c_str ());
|
||||
if (dp != NULL)
|
||||
{
|
||||
struct dirent* de;
|
||||
while ((de = readdir (dp)) != NULL)
|
||||
{
|
||||
if (!strcmp (de->d_name, ".") ||
|
||||
!strcmp (de->d_name, ".."))
|
||||
continue;
|
||||
|
||||
#if defined (SOLARIS) || defined (HAIKU)
|
||||
struct stat s;
|
||||
stat (de->d_name, &s);
|
||||
if (recursive && s.st_mode & S_IFDIR)
|
||||
list (base + "/" + de->d_name, results, recursive);
|
||||
else
|
||||
results.push_back (base + "/" + de->d_name);
|
||||
#else
|
||||
if (recursive && de->d_type == DT_DIR)
|
||||
list (base + "/" + de->d_name, results, recursive);
|
||||
else
|
||||
results.push_back (base + "/" + de->d_name);
|
||||
#endif
|
||||
}
|
||||
|
||||
closedir (dp);
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
55
src/Directory.h
Normal file
55
src/Directory.h
Normal file
@@ -0,0 +1,55 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// task - a command line task list manager.
|
||||
//
|
||||
// Copyright 2006 - 2009, Paul Beckingham.
|
||||
// All rights reserved.
|
||||
//
|
||||
// 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.,
|
||||
// 51 Franklin Street, Fifth Floor,
|
||||
// Boston, MA
|
||||
// 02110-1301
|
||||
// USA
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
#ifndef INCLUDED_DIRECTORY
|
||||
#define INCLUDED_DIRECTORY
|
||||
|
||||
#include "File.h"
|
||||
|
||||
class Directory : public File
|
||||
{
|
||||
public:
|
||||
Directory ();
|
||||
Directory (const Directory&);
|
||||
Directory (const File&);
|
||||
Directory (const Path&);
|
||||
Directory (const std::string&);
|
||||
virtual ~Directory ();
|
||||
|
||||
Directory& operator= (const Directory&);
|
||||
|
||||
virtual bool create ();
|
||||
virtual bool remove ();
|
||||
|
||||
std::vector <std::string> list ();
|
||||
std::vector <std::string> listRecursive ();
|
||||
|
||||
private:
|
||||
void list (const std::string&, std::vector <std::string>&, bool);
|
||||
};
|
||||
|
||||
#endif
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
199
src/Duration.cpp
Normal file
199
src/Duration.cpp
Normal file
@@ -0,0 +1,199 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// task - a command line task list manager.
|
||||
//
|
||||
// Copyright 2006 - 2010, Paul Beckingham.
|
||||
// All rights reserved.
|
||||
//
|
||||
// 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.,
|
||||
// 51 Franklin Street, Fifth Floor,
|
||||
// Boston, MA
|
||||
// 02110-1301
|
||||
// USA
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include <sstream>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <stdlib.h>
|
||||
#include "text.h"
|
||||
#include "util.h"
|
||||
#include "Duration.h"
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Duration::Duration ()
|
||||
: mDays (0)
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Duration::Duration (time_t input)
|
||||
{
|
||||
mDays = input;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Duration::Duration (const std::string& input)
|
||||
{
|
||||
parse (input);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Duration::operator time_t ()
|
||||
{
|
||||
return mDays;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Duration::operator std::string ()
|
||||
{
|
||||
std::stringstream s;
|
||||
s << mDays;
|
||||
return s.str ();
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
bool Duration::operator< (const Duration& other)
|
||||
{
|
||||
return mDays < other.mDays;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
bool Duration::operator> (const Duration& other)
|
||||
{
|
||||
return mDays > other.mDays;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Duration::~Duration ()
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
bool Duration::valid (const std::string& input) const
|
||||
{
|
||||
std::string lower_input = lowerCase (input);
|
||||
|
||||
std::vector <std::string> supported;
|
||||
supported.push_back ("daily"); // TODO i18n
|
||||
supported.push_back ("day"); // TODO i18n
|
||||
supported.push_back ("weekly"); // TODO i18n
|
||||
supported.push_back ("weekdays"); // TODO i18n
|
||||
supported.push_back ("sennight"); // TODO i18n
|
||||
supported.push_back ("biweekly"); // TODO i18n
|
||||
supported.push_back ("fortnight"); // TODO i18n
|
||||
supported.push_back ("monthly"); // TODO i18n
|
||||
supported.push_back ("bimonthly"); // TODO i18n
|
||||
supported.push_back ("quarterly"); // TODO i18n
|
||||
supported.push_back ("biannual"); // TODO i18n
|
||||
supported.push_back ("biyearly"); // TODO i18n
|
||||
supported.push_back ("annual"); // TODO i18n
|
||||
supported.push_back ("semiannual"); // TODO i18n
|
||||
supported.push_back ("yearly"); // TODO i18n
|
||||
|
||||
std::vector <std::string> matches;
|
||||
if (autoComplete (lower_input, supported, matches) == 1)
|
||||
return true;
|
||||
|
||||
// Support \d+ d|w|m|q|y
|
||||
// Verify all digits followed by d, w, m, q, or y.
|
||||
unsigned int length = lower_input.length ();
|
||||
for (unsigned int i = 0; i < length; ++i)
|
||||
{
|
||||
if (! isdigit (lower_input[i]) &&
|
||||
i == length - 1)
|
||||
{
|
||||
std::string type = lower_input.substr (length - 1);
|
||||
if (type == "d" || // TODO i18n
|
||||
type == "w" || // TODO i18n
|
||||
type == "m" || // TODO i18n
|
||||
type == "q" || // TODO i18n
|
||||
type == "y") // TODO i18n
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void Duration::parse (const std::string& input)
|
||||
{
|
||||
std::string lower_input = lowerCase (input);
|
||||
|
||||
std::vector <std::string> supported;
|
||||
supported.push_back ("daily"); // TODO i18n
|
||||
supported.push_back ("day"); // TODO i18n
|
||||
supported.push_back ("weekly"); // TODO i18n
|
||||
supported.push_back ("weekdays"); // TODO i18n
|
||||
supported.push_back ("sennight"); // TODO i18n
|
||||
supported.push_back ("biweekly"); // TODO i18n
|
||||
supported.push_back ("fortnight"); // TODO i18n
|
||||
supported.push_back ("monthly"); // TODO i18n
|
||||
supported.push_back ("bimonthly"); // TODO i18n
|
||||
supported.push_back ("quarterly"); // TODO i18n
|
||||
supported.push_back ("biannual"); // TODO i18n
|
||||
supported.push_back ("biyearly"); // TODO i18n
|
||||
supported.push_back ("annual"); // TODO i18n
|
||||
supported.push_back ("semiannual"); // TODO i18n
|
||||
supported.push_back ("yearly"); // TODO i18n
|
||||
|
||||
std::vector <std::string> matches;
|
||||
if (autoComplete (lower_input, supported, matches) == 1)
|
||||
{
|
||||
std::string found = matches[0];
|
||||
|
||||
if (found == "daily" || found == "day") mDays = 1; // TODO i18n
|
||||
else if (found == "weekdays") mDays = 1; // TODO i18n
|
||||
else if (found == "weekly" || found == "sennight") mDays = 7; // TODO i18n
|
||||
else if (found == "biweekly" || found == "fortnight") mDays = 14; // TODO i18n
|
||||
else if (found == "monthly") mDays = 30; // TODO i18n
|
||||
else if (found == "bimonthly") mDays = 61; // TODO i18n
|
||||
else if (found == "quarterly") mDays = 91; // TODO i18n
|
||||
else if (found == "semiannual") mDays = 183; // TODO i18n
|
||||
else if (found == "yearly" || found == "annual") mDays = 365; // TODO i18n
|
||||
else if (found == "biannual" || found == "biyearly") mDays = 730; // TODO i18n
|
||||
}
|
||||
|
||||
// Support \d+ d|w|m|q|y
|
||||
else
|
||||
{
|
||||
// Verify all digits followed by d, w, m, q, or y.
|
||||
unsigned int length = lower_input.length ();
|
||||
for (unsigned int i = 0; i < length; ++i)
|
||||
{
|
||||
if (! isdigit (lower_input[i]) &&
|
||||
i == length - 1)
|
||||
{
|
||||
int number = atoi (lower_input.substr (0, i).c_str ());
|
||||
|
||||
switch (lower_input[length - 1])
|
||||
{
|
||||
case 'd': mDays = number * 1; break; // TODO i18n
|
||||
case 'w': mDays = number * 7; break; // TODO i18n
|
||||
case 'm': mDays = number * 30; break; // TODO i18n
|
||||
case 'q': mDays = number * 91; break; // TODO i18n
|
||||
case 'y': mDays = number * 365; break; // TODO i18n
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (mDays == 0)
|
||||
throw std::string ("The duration '") + input + "' was not recognized."; // TODO i18n
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
54
src/Duration.h
Normal file
54
src/Duration.h
Normal file
@@ -0,0 +1,54 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// task - a command line task list manager.
|
||||
//
|
||||
// Copyright 2006 - 2010, Paul Beckingham.
|
||||
// All rights reserved.
|
||||
//
|
||||
// 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.,
|
||||
// 51 Franklin Street, Fifth Floor,
|
||||
// Boston, MA
|
||||
// 02110-1301
|
||||
// USA
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
#ifndef INCLUDED_DURATION
|
||||
#define INCLUDED_DURATION
|
||||
|
||||
#include <string>
|
||||
#include <time.h>
|
||||
|
||||
class Duration
|
||||
{
|
||||
public:
|
||||
Duration (); // Default constructor
|
||||
Duration (time_t); // Default constructor
|
||||
Duration (const std::string&); // Parse
|
||||
bool operator< (const Duration&);
|
||||
bool operator> (const Duration&);
|
||||
~Duration (); // Destructor
|
||||
|
||||
operator time_t ();
|
||||
operator std::string ();
|
||||
|
||||
bool valid (const std::string&) const;
|
||||
void parse (const std::string&);
|
||||
|
||||
private:
|
||||
time_t mDays;
|
||||
};
|
||||
|
||||
#endif
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
286
src/File.cpp
Normal file
286
src/File.cpp
Normal file
@@ -0,0 +1,286 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// task - a command line task list manager.
|
||||
//
|
||||
// Copyright 2006 - 2009, Paul Beckingham.
|
||||
// All rights reserved.
|
||||
//
|
||||
// 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.,
|
||||
// 51 Franklin Street, Fifth Floor,
|
||||
// Boston, MA
|
||||
// 02110-1301
|
||||
// USA
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include <fstream>
|
||||
#include <sys/types.h>
|
||||
#include <pwd.h>
|
||||
#include <unistd.h>
|
||||
#include "File.h"
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
File::File ()
|
||||
: Path::Path ()
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
File::File (const Path& other)
|
||||
: Path::Path (other)
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
File::File (const File& other)
|
||||
: Path::Path (other)
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
File::File (const std::string& in)
|
||||
: Path::Path (in)
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
File::~File ()
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
File& File::operator= (const File& other)
|
||||
{
|
||||
if (this != &other)
|
||||
{
|
||||
Path::operator= (other);
|
||||
}
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
bool File::create ()
|
||||
{
|
||||
std::ofstream out (data.c_str ());
|
||||
if (out.good ())
|
||||
{
|
||||
out.close ();
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
bool File::remove ()
|
||||
{
|
||||
return unlink (data.c_str ()) == 0 ? true : false;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// S_IFMT 0170000 type of file
|
||||
// S_IFIFO 0010000 named pipe (fifo)
|
||||
// S_IFCHR 0020000 character special
|
||||
// S_IFDIR 0040000 directory
|
||||
// S_IFBLK 0060000 block special
|
||||
// S_IFREG 0100000 regular
|
||||
// S_IFLNK 0120000 symbolic link
|
||||
// S_IFSOCK 0140000 socket
|
||||
// S_IFWHT 0160000 whiteout
|
||||
// S_ISUID 0004000 set user id on execution
|
||||
// S_ISGID 0002000 set group id on execution
|
||||
// S_ISVTX 0001000 save swapped text even after use
|
||||
// S_IRUSR 0000400 read permission, owner
|
||||
// S_IWUSR 0000200 write permission, owner
|
||||
// S_IXUSR 0000100 execute/search permission, owner
|
||||
mode_t File::mode ()
|
||||
{
|
||||
struct stat s;
|
||||
if (!stat (data.c_str (), &s))
|
||||
return s.st_mode;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
size_t File::size () const
|
||||
{
|
||||
struct stat s;
|
||||
if (!stat (data.c_str (), &s))
|
||||
return s.st_size;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
bool File::create (const std::string& name)
|
||||
{
|
||||
std::ofstream out (expand (name).c_str ());
|
||||
if (out.good ())
|
||||
{
|
||||
out.close ();
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
std::string File::read (const std::string& name)
|
||||
{
|
||||
std::string contents = "";
|
||||
|
||||
std::ifstream in (name.c_str ());
|
||||
if (in.good ())
|
||||
{
|
||||
std::string line;
|
||||
while (getline (in, line))
|
||||
contents += line + "\n";
|
||||
|
||||
in.close ();
|
||||
}
|
||||
|
||||
return contents;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
bool File::read (const std::string& name, std::string& contents)
|
||||
{
|
||||
contents = "";
|
||||
|
||||
std::ifstream in (name.c_str ());
|
||||
if (in.good ())
|
||||
{
|
||||
std::string line;
|
||||
while (getline (in, line))
|
||||
contents += line + "\n";
|
||||
|
||||
in.close ();
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
bool File::read (const std::string& name, std::vector <std::string>& contents)
|
||||
{
|
||||
contents.clear ();
|
||||
|
||||
std::ifstream in (name.c_str ());
|
||||
if (in.good ())
|
||||
{
|
||||
std::string line;
|
||||
while (getline (in, line))
|
||||
contents.push_back (line);
|
||||
|
||||
in.close ();
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
bool File::write (const std::string& name, const std::string& contents)
|
||||
{
|
||||
std::ofstream out (expand (name).c_str (),
|
||||
std::ios_base::out | std::ios_base::trunc);
|
||||
if (out.good ())
|
||||
{
|
||||
out << contents;
|
||||
out.close ();
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
bool File::write (
|
||||
const std::string& name,
|
||||
const std::vector <std::string>& lines,
|
||||
bool addNewlines /* = true */)
|
||||
{
|
||||
std::ofstream out (expand (name).c_str (),
|
||||
std::ios_base::out | std::ios_base::trunc);
|
||||
if (out.good ())
|
||||
{
|
||||
std::vector <std::string>::const_iterator it;
|
||||
for (it = lines.begin (); it != lines.end (); ++it)
|
||||
{
|
||||
out << *it;
|
||||
|
||||
if (addNewlines)
|
||||
out << "\n";
|
||||
}
|
||||
|
||||
out.close ();
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
bool File::append (const std::string& name, const std::string& contents)
|
||||
{
|
||||
std::ofstream out (expand (name).c_str (),
|
||||
std::ios_base::out | std::ios_base::app);
|
||||
if (out.good ())
|
||||
{
|
||||
out << contents;
|
||||
out.close ();
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
bool File::append (
|
||||
const std::string& name,
|
||||
const std::vector <std::string>& lines,
|
||||
bool addNewlines /* = true */)
|
||||
{
|
||||
std::ofstream out (expand (name).c_str (),
|
||||
std::ios_base::out | std::ios_base::app);
|
||||
if (out.good ())
|
||||
{
|
||||
std::vector <std::string>::const_iterator it;
|
||||
for (it = lines.begin (); it != lines.end (); ++it)
|
||||
{
|
||||
out << *it;
|
||||
|
||||
if (addNewlines)
|
||||
out << "\n";
|
||||
}
|
||||
|
||||
out.close ();
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
bool File::remove (const std::string& name)
|
||||
{
|
||||
return unlink (expand (name).c_str ()) == 0 ? true : false;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
81
src/File.h
Normal file
81
src/File.h
Normal file
@@ -0,0 +1,81 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// task - a command line task list manager.
|
||||
//
|
||||
// Copyright 2006 - 2009, Paul Beckingham.
|
||||
// All rights reserved.
|
||||
//
|
||||
// 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.,
|
||||
// 51 Franklin Street, Fifth Floor,
|
||||
// Boston, MA
|
||||
// 02110-1301
|
||||
// USA
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
#ifndef INCLUDED_FILE
|
||||
#define INCLUDED_FILE
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <sys/stat.h>
|
||||
#include "Path.h"
|
||||
|
||||
class File : public Path
|
||||
{
|
||||
public:
|
||||
File ();
|
||||
File (const Path&);
|
||||
File (const File&);
|
||||
File (const std::string&);
|
||||
virtual ~File ();
|
||||
|
||||
File& operator= (const File&);
|
||||
|
||||
virtual bool create ();
|
||||
virtual bool remove ();
|
||||
|
||||
// bool open ();
|
||||
// bool openAndLock ();
|
||||
// void close ();
|
||||
|
||||
// bool lock ();
|
||||
// bool lockNoWait ();
|
||||
// void unlock ();
|
||||
|
||||
// void read (std::string&);
|
||||
// void read (std::vector <std::string>&);
|
||||
|
||||
// void write (const std::string&);
|
||||
// void write (const std::vector <std::string>&);
|
||||
|
||||
virtual mode_t mode ();
|
||||
virtual size_t size () const;
|
||||
|
||||
static bool create (const std::string&);
|
||||
static std::string read (const std::string&);
|
||||
static bool read (const std::string&, std::string&);
|
||||
static bool read (const std::string&, std::vector <std::string>&);
|
||||
static bool write (const std::string&, const std::string&);
|
||||
static bool write (const std::string&, const std::vector <std::string>&, bool addNewlines = true);
|
||||
static bool append (const std::string&, const std::string&);
|
||||
static bool append (const std::string&, const std::vector <std::string>&, bool addNewlines = true);
|
||||
static bool remove (const std::string&);
|
||||
|
||||
private:
|
||||
// int handle;
|
||||
};
|
||||
|
||||
#endif
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
155
src/Filter.cpp
Normal file
155
src/Filter.cpp
Normal file
@@ -0,0 +1,155 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// task - a command line task list manager.
|
||||
//
|
||||
// Copyright 2006 - 2010, Paul Beckingham.
|
||||
// All rights reserved.
|
||||
//
|
||||
// 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.,
|
||||
// 51 Franklin Street, Fifth Floor,
|
||||
// Boston, MA
|
||||
// 02110-1301
|
||||
// USA
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include <sstream>
|
||||
#include "Filter.h"
|
||||
#include "util.h"
|
||||
#include "main.h"
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// For every Att in the filter, lookup the equivalent in Record, and perform a
|
||||
// match. Aren't filters easy now that everything is an attribute?
|
||||
bool Filter::pass (const Record& record) const
|
||||
{
|
||||
Record::const_iterator r;
|
||||
|
||||
// First do description/annotation matches.
|
||||
foreach (att, (*this))
|
||||
{
|
||||
// Descriptions have special handling such that they are linked to
|
||||
// annotations, and filtering on description implies identical filtering
|
||||
// on annotations.
|
||||
//
|
||||
// For positive modifiers (has, is ...) either the description or the
|
||||
// annotation filter must succeed.
|
||||
//
|
||||
// For negative modifiers (hasnt, isnt ...) both the description and the
|
||||
// annotation filter must succeed.
|
||||
if (att->name () == "description")
|
||||
{
|
||||
bool pass = true;
|
||||
int annotation_pass_count = 0;
|
||||
int annotation_fail_count = 0;
|
||||
|
||||
if ((r = record.find (att->name ())) != record.end ())
|
||||
{
|
||||
pass = att->match (r->second);
|
||||
|
||||
foreach (ra, record)
|
||||
{
|
||||
if (ra->first.length () > 11 &&
|
||||
ra->first.substr (0, 11) == "annotation_")
|
||||
{
|
||||
if (att->match (ra->second))
|
||||
++annotation_pass_count;
|
||||
else
|
||||
++annotation_fail_count;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Missing attribute implies failure.
|
||||
else if (! att->match (Att ()))
|
||||
return false;
|
||||
|
||||
// This innocuous little if-else took significantly more thinking and
|
||||
// debugging than anything else in task. Only change this code if you
|
||||
// are willing to invest a week understanding and testing it.
|
||||
if (att->modType (att->mod ()) == "positive")
|
||||
{
|
||||
if (! (pass || annotation_pass_count))
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (! (pass && annotation_fail_count == 0))
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// Annotations are skipped, because they are handled above.
|
||||
else if (att->name ().length () > 11 &&
|
||||
att->name ().substr (0, 11) == "annotation_")
|
||||
{
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
// An individual attribute match failure is enough to fail the filter.
|
||||
if ((r = record.find (att->name ())) != record.end ())
|
||||
{
|
||||
if (! att->match (r->second))
|
||||
return false;
|
||||
}
|
||||
else if (! att->match (Att ()))
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void Filter::applySequence (std::vector<Task>& all, Sequence& sequence)
|
||||
{
|
||||
std::vector <Task> filtered;
|
||||
foreach (task, all)
|
||||
foreach (i, sequence)
|
||||
if (task->id == *i)
|
||||
filtered.push_back (*task);
|
||||
|
||||
if (sequence.size () != filtered.size ())
|
||||
{
|
||||
std::vector <int> filteredSequence;
|
||||
foreach (task, filtered)
|
||||
filteredSequence.push_back (task->id);
|
||||
|
||||
std::vector <int> left;
|
||||
std::vector <int> right;
|
||||
listDiff (filteredSequence, (std::vector <int>&)sequence, left, right);
|
||||
if (left.size ())
|
||||
throw std::string ("Sequence filtering error - please report this error to support@taskwarrior.org");
|
||||
|
||||
if (right.size ())
|
||||
{
|
||||
std::stringstream out;
|
||||
out << "Task";
|
||||
|
||||
if (right.size () > 1) out << "s";
|
||||
|
||||
foreach (r, right)
|
||||
out << " " << *r;
|
||||
|
||||
out << " not found";
|
||||
throw out.str ();
|
||||
}
|
||||
}
|
||||
|
||||
all = filtered;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
43
src/Filter.h
Normal file
43
src/Filter.h
Normal file
@@ -0,0 +1,43 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// task - a command line task list manager.
|
||||
//
|
||||
// Copyright 2006 - 2010, Paul Beckingham.
|
||||
// All rights reserved.
|
||||
//
|
||||
// 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.,
|
||||
// 51 Franklin Street, Fifth Floor,
|
||||
// Boston, MA
|
||||
// 02110-1301
|
||||
// USA
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
#ifndef INCLUDED_FILTER
|
||||
#define INCLUDED_FILTER
|
||||
|
||||
#include <vector>
|
||||
#include "Att.h"
|
||||
#include "Task.h"
|
||||
#include "Record.h"
|
||||
|
||||
class Filter : public std::vector <Att>
|
||||
{
|
||||
public:
|
||||
bool pass (const Record&) const;
|
||||
void applySequence (std::vector<Task>&, Sequence&);
|
||||
};
|
||||
|
||||
#endif
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
13
src/Grid.cpp
13
src/Grid.cpp
@@ -1,7 +1,7 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// task - a command line task list manager.
|
||||
//
|
||||
// Copyright 2006 - 2008, Paul Beckingham.
|
||||
// Copyright 2006 - 2010, Paul Beckingham.
|
||||
// All rights reserved.
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify it under
|
||||
@@ -60,6 +60,7 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include <iostream>
|
||||
#include <stdlib.h>
|
||||
#include <Grid.h>
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -305,7 +306,7 @@ Grid::Cell::operator char () const
|
||||
{
|
||||
switch (mType)
|
||||
{
|
||||
case CELL_BOOL: return mBool ? 'Y' : 'N';
|
||||
case CELL_BOOL: return mBool ? 'Y' : 'N'; // TODO i18n
|
||||
case CELL_CHAR: return mChar;
|
||||
case CELL_INT: return (char) mInt;
|
||||
case CELL_FLOAT: return (char) (int) mFloat;
|
||||
@@ -325,7 +326,7 @@ Grid::Cell::operator int () const
|
||||
case CELL_INT: return mInt;
|
||||
case CELL_FLOAT: return (int) mFloat;
|
||||
case CELL_DOUBLE: return (int) mDouble;
|
||||
case CELL_STRING: return mString.length ();
|
||||
case CELL_STRING: return atoi (mString.c_str ());
|
||||
}
|
||||
|
||||
return 0;
|
||||
@@ -340,7 +341,7 @@ Grid::Cell::operator float () const
|
||||
case CELL_INT: return (float) mInt;
|
||||
case CELL_FLOAT: return mFloat;
|
||||
case CELL_DOUBLE: return (float) mDouble;
|
||||
case CELL_STRING: return (float) mString.length ();
|
||||
case CELL_STRING: return (float) atof (mString.c_str ());
|
||||
}
|
||||
|
||||
return 0.0;
|
||||
@@ -355,7 +356,7 @@ Grid::Cell::operator double () const
|
||||
case CELL_INT: return (double) mInt;
|
||||
case CELL_FLOAT: return (double) mFloat;
|
||||
case CELL_DOUBLE: return mDouble;
|
||||
case CELL_STRING: return (double) mString.length ();
|
||||
case CELL_STRING: return (double) atof (mString.c_str ());
|
||||
}
|
||||
|
||||
return 0.0;
|
||||
@@ -367,7 +368,7 @@ Grid::Cell::operator std::string () const
|
||||
|
||||
switch (mType)
|
||||
{
|
||||
case CELL_BOOL: return mBool ? "true" : "false";
|
||||
case CELL_BOOL: return mBool ? "true" : "false"; // TODO i18n
|
||||
case CELL_CHAR: sprintf (s, "%c", mChar);
|
||||
return std::string (s);
|
||||
case CELL_INT: sprintf (s, "%d", mInt);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// task - a command line task list manager.
|
||||
//
|
||||
// Copyright 2006 - 2008, Paul Beckingham.
|
||||
// Copyright 2006 - 2010, Paul Beckingham.
|
||||
// All rights reserved.
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify it under
|
||||
@@ -27,6 +27,7 @@
|
||||
#ifndef INCLUDED_GRID
|
||||
#define INCLUDED_GRID
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
@@ -44,6 +45,9 @@ public:
|
||||
Cell (const double);
|
||||
Cell (const std::string&);
|
||||
|
||||
Cell (const Cell&);
|
||||
Cell& operator= (const Cell&);
|
||||
|
||||
operator bool () const;
|
||||
operator char () const;
|
||||
operator int () const;
|
||||
@@ -71,6 +75,9 @@ public:
|
||||
Grid ();
|
||||
~Grid ();
|
||||
|
||||
Grid (const Grid&);
|
||||
Grid& operator= (const Grid&);
|
||||
|
||||
void add (const unsigned int, const unsigned int, const bool);
|
||||
void add (const unsigned int, const unsigned int, const char);
|
||||
void add (const unsigned int, const unsigned int, const int);
|
||||
|
||||
381
src/Hooks.cpp
Normal file
381
src/Hooks.cpp
Normal file
@@ -0,0 +1,381 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// task - a command line task list manager.
|
||||
//
|
||||
// Copyright 2006 - 2010, Paul Beckingham.
|
||||
// All rights reserved.
|
||||
//
|
||||
// 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.,
|
||||
// 51 Franklin Street, Fifth Floor,
|
||||
// Boston, MA
|
||||
// 02110-1301
|
||||
// USA
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include <iostream>
|
||||
#include "Context.h"
|
||||
#include "Hooks.h"
|
||||
#include "Timer.h"
|
||||
|
||||
extern Context context;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Hook::Hook ()
|
||||
: event ("")
|
||||
, file ("")
|
||||
, function ("")
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Hook::Hook (const std::string& e, const std::string& f, const std::string& fn)
|
||||
: event (e)
|
||||
, file (f)
|
||||
, function (fn)
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Hook::Hook (const Hook& other)
|
||||
{
|
||||
event = other.event;
|
||||
file = other.file;
|
||||
function = other.function;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Hook& Hook::operator= (const Hook& other)
|
||||
{
|
||||
if (this != &other)
|
||||
{
|
||||
event = other.event;
|
||||
file = other.file;
|
||||
function = other.function;
|
||||
}
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Hooks::Hooks ()
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Hooks::~Hooks ()
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Enumerate all hooks, and tell API about the script files it must load in
|
||||
// order to call them. Note that API will perform a deferred read, which means
|
||||
// that if it isn't called, a script will not be loaded.
|
||||
void Hooks::initialize ()
|
||||
{
|
||||
#ifdef HAVE_LIBLUA
|
||||
api.initialize ();
|
||||
#endif
|
||||
|
||||
// Allow a master switch to turn the whole thing off.
|
||||
bool big_red_switch = context.config.getBoolean ("hooks");
|
||||
if (big_red_switch)
|
||||
{
|
||||
std::vector <std::string> vars;
|
||||
context.config.all (vars);
|
||||
|
||||
std::vector <std::string>::iterator it;
|
||||
for (it = vars.begin (); it != vars.end (); ++it)
|
||||
{
|
||||
std::string type;
|
||||
std::string name;
|
||||
std::string value;
|
||||
|
||||
// "<type>.<name>"
|
||||
Nibbler n (*it);
|
||||
if (n.getUntil ('.', type) &&
|
||||
type == "hook" &&
|
||||
n.skip ('.') &&
|
||||
n.getUntilEOS (name))
|
||||
{
|
||||
std::string value = context.config.get (*it);
|
||||
Nibbler n (value);
|
||||
|
||||
// <path>:<function> [, ...]
|
||||
while (!n.depleted ())
|
||||
{
|
||||
std::string file;
|
||||
std::string function;
|
||||
if (n.getUntil (':', file) &&
|
||||
n.skip (':') &&
|
||||
n.getUntil (',', function))
|
||||
{
|
||||
context.debug (std::string ("Event '") + name + "' hooked by " + file + ", function " + function);
|
||||
Hook h (name, Path::expand (file), function);
|
||||
all.push_back (h);
|
||||
|
||||
(void) n.skip (',');
|
||||
}
|
||||
else
|
||||
throw std::string ("Malformed hook definition '") + *it + "'";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
context.debug ("Hooks::initialize - hook system shut off");
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Program hooks.
|
||||
bool Hooks::trigger (const std::string& event)
|
||||
{
|
||||
#ifdef HAVE_LIBLUA
|
||||
std::vector <Hook>::iterator it;
|
||||
for (it = all.begin (); it != all.end (); ++it)
|
||||
{
|
||||
if (it->event == event)
|
||||
{
|
||||
Timer timer (std::string ("Hooks::trigger ") + event);
|
||||
|
||||
if (validProgramEvent (event))
|
||||
{
|
||||
context.debug (std::string ("Event ") + event + " triggered");
|
||||
if (! api.callProgramHook (it->file, it->function))
|
||||
return false;
|
||||
}
|
||||
else
|
||||
throw std::string ("Unrecognized hook event '") + event + "'";
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// List hooks.
|
||||
bool Hooks::trigger (const std::string& event, std::vector <Task>& tasks)
|
||||
{
|
||||
#ifdef HAVE_LIBLUA
|
||||
std::vector <Hook>::iterator it;
|
||||
for (it = all.begin (); it != all.end (); ++it)
|
||||
{
|
||||
if (it->event == event)
|
||||
{
|
||||
Timer timer (std::string ("Hooks::trigger ") + event);
|
||||
|
||||
if (validListEvent (event))
|
||||
{
|
||||
context.debug (std::string ("Event ") + event + " triggered");
|
||||
if (! api.callListHook (it->file, it->function, tasks))
|
||||
return false;
|
||||
}
|
||||
else
|
||||
throw std::string ("Unrecognized hook event '") + event + "'";
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Task hooks.
|
||||
bool Hooks::trigger (const std::string& event, Task& task)
|
||||
{
|
||||
#ifdef HAVE_LIBLUA
|
||||
std::vector <Hook>::iterator it;
|
||||
for (it = all.begin (); it != all.end (); ++it)
|
||||
{
|
||||
if (it->event == event)
|
||||
{
|
||||
Timer timer (std::string ("Hooks::trigger ") + event);
|
||||
|
||||
if (validTaskEvent (event))
|
||||
{
|
||||
context.debug (std::string ("Event ") + event + " triggered");
|
||||
if (! api.callTaskHook (it->file, it->function, task))
|
||||
return false;
|
||||
}
|
||||
else
|
||||
throw std::string ("Unrecognized hook event '") + event + "'";
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Field hooks.
|
||||
bool Hooks::trigger (
|
||||
const std::string& event,
|
||||
const std::string& name,
|
||||
std::string& value)
|
||||
{
|
||||
#ifdef HAVE_LIBLUA
|
||||
std::vector <Hook>::iterator it;
|
||||
for (it = all.begin (); it != all.end (); ++it)
|
||||
{
|
||||
if (it->event == event)
|
||||
{
|
||||
Timer timer (std::string ("Hooks::trigger ") + event);
|
||||
|
||||
if (validFieldEvent (event))
|
||||
{
|
||||
context.debug (std::string ("Event ") + event + " triggered");
|
||||
if (! api.callFieldHook (it->file, it->function, name, value))
|
||||
return false;
|
||||
}
|
||||
else
|
||||
throw std::string ("Unrecognized hook event '") + event + "'";
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
bool Hooks::validProgramEvent (const std::string& event)
|
||||
{
|
||||
if (event == "post-start" ||
|
||||
event == "pre-fatal-error" ||
|
||||
event == "pre-exit" ||
|
||||
event == "pre-command-line" || event == "post-command-line" ||
|
||||
event == "pre-command-line-override" || event == "post-command-line-override" ||
|
||||
event == "pre-config-create" || event == "post-config-create" ||
|
||||
event == "pre-config-read" || event == "post-config-read" ||
|
||||
event == "pre-config-value-read" || event == "post-config-value-read" ||
|
||||
event == "pre-config-value-write" || event == "post-config-value-write" ||
|
||||
event == "pre-file-lock" || event == "post-file-lock" ||
|
||||
event == "pre-file-unlock" || event == "post-file-unlock" ||
|
||||
event == "pre-file-read" || event == "post-file-read" ||
|
||||
event == "pre-file-write" || event == "post-file-write" ||
|
||||
event == "pre-output" || event == "post-output" ||
|
||||
event == "pre-debug" || event == "post-debug" ||
|
||||
event == "pre-header" || event == "post-header" ||
|
||||
event == "pre-footnote" || event == "post-footnote" ||
|
||||
event == "pre-dispatch" || event == "post-dispatch" ||
|
||||
event == "pre-gc" || event == "post-gc" ||
|
||||
event == "pre-archive" || event == "post-archive" ||
|
||||
event == "pre-purge" || event == "post-purge" ||
|
||||
event == "pre-recurrence" || event == "post-recurrence" ||
|
||||
event == "pre-interactive" || event == "post-interactive" ||
|
||||
event == "pre-undo" || event == "post-undo" ||
|
||||
event == "pre-confirm" || event == "post-confirm" ||
|
||||
event == "pre-shell-prompt" || event == "post-shell-prompt" ||
|
||||
event == "pre-add-command" || event == "post-add-command" ||
|
||||
event == "pre-annotate-command" || event == "post-annotate-command" ||
|
||||
event == "pre-append-command" || event == "post-append-command" ||
|
||||
event == "pre-calendar-command" || event == "post-calendar-command" ||
|
||||
event == "pre-color-command" || event == "post-color-command" ||
|
||||
event == "pre-config-command" || event == "post-config-command" ||
|
||||
event == "pre-custom-report-command" || event == "post-custom-report-command" ||
|
||||
event == "pre-default-command" || event == "post-default-command" ||
|
||||
event == "pre-delete-command" || event == "post-delete-command" ||
|
||||
event == "pre-done-command" || event == "post-done-command" ||
|
||||
event == "pre-duplicate-command" || event == "post-duplicate-command" ||
|
||||
event == "pre-edit-command" || event == "post-edit-command" ||
|
||||
event == "pre-export-command" || event == "post-export-command" ||
|
||||
event == "pre-ghistory-command" || event == "post-ghistory-command" ||
|
||||
event == "pre-history-command" || event == "post-history-command" ||
|
||||
event == "pre-import-command" || event == "post-import-command" ||
|
||||
event == "pre-info-command" || event == "post-info-command" ||
|
||||
event == "pre-prepend-command" || event == "post-prepend-command" ||
|
||||
event == "pre-projects-command" || event == "post-projects-command" ||
|
||||
event == "pre-shell-command" || event == "post-shell-command" ||
|
||||
event == "pre-start-command" || event == "post-start-command" ||
|
||||
event == "pre-stats-command" || event == "post-stats-command" ||
|
||||
event == "pre-stop-command" || event == "post-stop-command" ||
|
||||
event == "pre-summary-command" || event == "post-summary-command" ||
|
||||
event == "pre-tags-command" || event == "post-tags-command" ||
|
||||
event == "pre-timesheet-command" || event == "post-timesheet-command" ||
|
||||
event == "pre-undo-command" || event == "post-undo-command" ||
|
||||
event == "pre-usage-command" || event == "post-usage-command" ||
|
||||
event == "pre-version-command" || event == "post-version-command")
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool Hooks::validListEvent (const std::string& event)
|
||||
{
|
||||
if (event == "pre-filter" || event == "post-filter")
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool Hooks::validTaskEvent (const std::string& event)
|
||||
{
|
||||
if (event == "pre-display" ||
|
||||
event == "pre-modification" || event == "post-modification" ||
|
||||
event == "pre-delete" || event == "post-delete" ||
|
||||
event == "pre-add" || event == "post-add" ||
|
||||
event == "pre-undo" || event == "post-undo" ||
|
||||
event == "pre-wait" || event == "post-wait" ||
|
||||
event == "pre-unwait" || event == "post-unwait" ||
|
||||
event == "pre-completed" || event == "post-completed" ||
|
||||
event == "pre-priority-change" || event == "post-priority-change" ||
|
||||
event == "pre-project-change" || event == "post-project-change" ||
|
||||
event == "pre-substitution" || event == "post-substitution" ||
|
||||
event == "pre-annotation" || event == "post-annotation" ||
|
||||
event == "pre-tag" || event == "post-tag" ||
|
||||
event == "pre-detag" || event == "post-detag" ||
|
||||
event == "pre-colorization" || event == "post-colorization")
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool Hooks::validFieldEvent (const std::string& event)
|
||||
{
|
||||
if (
|
||||
event == "format-number" ||
|
||||
event == "format-date" ||
|
||||
event == "format-duration" ||
|
||||
event == "format-text" ||
|
||||
event == "format-id" ||
|
||||
event == "format-uuid" ||
|
||||
event == "format-project" ||
|
||||
event == "format-priority" ||
|
||||
event == "format-priority_long" ||
|
||||
event == "format-entry" ||
|
||||
event == "format-entry_time" ||
|
||||
event == "format-start" ||
|
||||
event == "format-start_time" ||
|
||||
event == "format-end" ||
|
||||
event == "format-end_time" ||
|
||||
event == "format-due" ||
|
||||
event == "format-countdown" ||
|
||||
event == "format-countdown_compact" ||
|
||||
event == "format-age" ||
|
||||
event == "format-age_compact" ||
|
||||
event == "format-active" ||
|
||||
event == "format-tags" ||
|
||||
event == "format-recur" ||
|
||||
event == "format-recurrence_indicator" ||
|
||||
event == "format-tag_indicator" ||
|
||||
event == "format-description_only" ||
|
||||
event == "format-description" ||
|
||||
event == "format-wait")
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
80
src/Hooks.h
Normal file
80
src/Hooks.h
Normal file
@@ -0,0 +1,80 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// task - a command line task list manager.
|
||||
//
|
||||
// Copyright 2006 - 2010, Paul Beckingham.
|
||||
// All rights reserved.
|
||||
//
|
||||
// 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.,
|
||||
// 51 Franklin Street, Fifth Floor,
|
||||
// Boston, MA
|
||||
// 02110-1301
|
||||
// USA
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
#ifndef INCLUDED_HOOKS
|
||||
#define INCLUDED_HOOKS
|
||||
|
||||
#include <vector>
|
||||
#include <string>
|
||||
#include "API.h"
|
||||
#include "auto.h"
|
||||
|
||||
// Hook class representing a single hook, which is just a three-way map.
|
||||
class Hook
|
||||
{
|
||||
public:
|
||||
Hook ();
|
||||
Hook (const std::string&, const std::string&, const std::string&);
|
||||
Hook (const Hook&);
|
||||
Hook& operator= (const Hook&);
|
||||
|
||||
public:
|
||||
std::string event;
|
||||
std::string file;
|
||||
std::string function;
|
||||
};
|
||||
|
||||
// Hooks class for managing the loading and calling of hook functions.
|
||||
class Hooks
|
||||
{
|
||||
public:
|
||||
Hooks (); // Default constructor
|
||||
~Hooks (); // Destructor
|
||||
Hooks (const Hooks&); // Deliberately unimplemented
|
||||
Hooks& operator= (const Hooks&); // Deliberately unimplemented
|
||||
|
||||
void initialize ();
|
||||
|
||||
bool trigger (const std::string&); // Program
|
||||
bool trigger (const std::string&, std::vector <Task>&); // List
|
||||
bool trigger (const std::string&, Task&); // Task
|
||||
bool trigger (const std::string&, const std::string&, std::string&); // Field
|
||||
|
||||
private:
|
||||
bool validProgramEvent (const std::string&);
|
||||
bool validListEvent (const std::string&);
|
||||
bool validTaskEvent (const std::string&);
|
||||
bool validFieldEvent (const std::string&);
|
||||
|
||||
private:
|
||||
#ifdef HAVE_LIBLUA
|
||||
API api;
|
||||
#endif
|
||||
std::vector <Hook> all; // All current hooks.
|
||||
};
|
||||
|
||||
#endif
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user