Compare commits
928 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bcdcbeeea0 | ||
|
|
469cafa053 | ||
|
|
fdb359c180 | ||
|
|
b3d40b2554 | ||
|
|
fba076a0d0 | ||
|
|
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 | ||
|
|
d216d40121 | ||
|
|
08f4ead97e | ||
|
|
f3de5c0711 |
9
.gitignore
vendored
9
.gitignore
vendored
@@ -1,4 +1,3 @@
|
||||
Makefile.in
|
||||
aclocal.m4
|
||||
autom4te.cache
|
||||
auto.h*
|
||||
@@ -6,8 +5,14 @@ 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
|
||||
|
||||
43
AUTHORS
43
AUTHORS
@@ -1,6 +1,41 @@
|
||||
Principal Author
|
||||
Paul Beckingham, paul@beckingham.net
|
||||
|
||||
Contributing Authors
|
||||
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)
|
||||
|
||||
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
|
||||
|
||||
Thanks to the following, who submitted detailed bug reports and excellent suggestions:
|
||||
Eugene Kramer
|
||||
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
|
||||
|
||||
503
ChangeLog
503
ChangeLog
@@ -1,36 +1,394 @@
|
||||
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.8.3 (10/21/2009)
|
||||
+ Added support for Haiku R1/alpha1
|
||||
|
||||
0.9.9 (5/27/2008)
|
||||
------ old releases ------------------------------
|
||||
|
||||
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 +399,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 +438,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
|
||||
|
||||
19
Makefile.am
19
Makefile.am
@@ -1,3 +1,20 @@
|
||||
SUBDIRS = src
|
||||
EXTRA_DIST = TUTORIAL DEVELOPERS
|
||||
|
||||
dist_man_MANS = doc/man/task.1 doc/man/taskrc.5 doc/man/task-tutorial.5
|
||||
|
||||
docdir = $(datadir)/doc/${PACKAGE}-${VERSION}
|
||||
doc_DATA = AUTHORS ChangeLog COPYING NEWS README
|
||||
|
||||
EXTRA_DIST = INSTALL
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
52
NEWS
52
NEWS
@@ -1,30 +1,46 @@
|
||||
Welcome to Task 1.0.0.
|
||||
|
||||
New Features in task 1.8
|
||||
|
||||
- Attribute modifiers, for precise queries
|
||||
- Improved calendar feature
|
||||
- Full undo capability
|
||||
- All reports now customizable
|
||||
- Command aliases can now be created
|
||||
- In addition to being a standard part of Fedora 10 and 11 (yum install task),
|
||||
task is now also a standard part of Cygwin 1.5
|
||||
- There are new demo movies on taskwarrior.org
|
||||
- Shell-friendly exit codes
|
||||
|
||||
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 11 Leonidas and 10 Cambridge
|
||||
- Ubuntu 9.04 Jaunty Jackalope and 8.10 Intrepid Ibex
|
||||
- Slackware 12.2
|
||||
- Arch Linux
|
||||
- Gentoo Linux
|
||||
- Solaris 10 and 8
|
||||
- OpenBSD 4.5
|
||||
- FreeBSD
|
||||
- Cygwin 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.
|
||||
|
||||
---
|
||||
|
||||
52
README
52
README
@@ -1,48 +1,24 @@
|
||||
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 the site:
|
||||
|
||||
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
|
||||
|
||||
or the new improved one:
|
||||
Your contributions are especially welcome. Whether it comes in the form of
|
||||
code patches, ideas, discussion, bug reports or just encouragement, your input
|
||||
is needed.
|
||||
|
||||
http://www.youtube.com/watch?v=D2Kn4DMOVSw
|
||||
Please send your support questions and code patches to:
|
||||
|
||||
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.
|
||||
support@taskwarrior.org
|
||||
|
||||
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.
|
||||
|
||||
---
|
||||
|
||||
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
|
||||
|
||||
43
configure.ac
43
configure.ac
@@ -2,9 +2,38 @@
|
||||
# Process this file with autoconf to produce a configure script.
|
||||
|
||||
AC_PREREQ(2.61)
|
||||
AC_INIT(task, 1.0.0, bugs@beckingham.net)
|
||||
AC_INIT(task, 1.8.3, support@taskwarrior.org)
|
||||
|
||||
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)
|
||||
# Yes, shell scripts can be used
|
||||
if test "$enable_debug" = "yes"; then
|
||||
CXXFLAGS="$CFLAGS -Wall -pedantic -ggdb3 -DDEBUG"
|
||||
AC_MSG_RESULT(yes)
|
||||
else
|
||||
CXXFLAGS="$CFLAGS -Wall -pedantic -O3"
|
||||
AC_MSG_RESULT(no)
|
||||
fi
|
||||
|
||||
# Check for OS.
|
||||
OS=`uname|sed -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
|
||||
if test "$OS" = "sunos"; then
|
||||
AC_MSG_NOTICE([OS Solaris detected])
|
||||
AC_DEFINE([SOLARIS], [], [Compiling on Solaris])
|
||||
else
|
||||
AC_MSG_NOTICE([OS Non-Solaris detected])
|
||||
AC_DEFINE([LINUX], [], [Compiling on Non-Solaris])
|
||||
fi
|
||||
|
||||
AM_INIT_AUTOMAKE
|
||||
AC_CONFIG_SRCDIR([src/task.cpp])
|
||||
AC_CONFIG_SRCDIR([src/main.cpp])
|
||||
AC_CONFIG_HEADER([auto.h])
|
||||
|
||||
# Checks for programs.
|
||||
@@ -12,14 +41,15 @@ AC_PROG_CXX
|
||||
AC_PROG_CC
|
||||
AC_LANG(C++)
|
||||
|
||||
AC_SUBST(CFLAGS)
|
||||
|
||||
# Checks for libraries.
|
||||
AC_CHECK_LIB(ncurses,initscr)
|
||||
AC_CHECK_LIB(ncurses,endwin)
|
||||
|
||||
# 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
|
||||
@@ -33,8 +63,11 @@ AC_STRUCT_TM
|
||||
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(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])])
|
||||
|
||||
AC_CONFIG_FILES([Makefile src/Makefile])
|
||||
AC_OUTPUT
|
||||
|
||||
|
||||
394
doc/man/task-tutorial.5
Normal file
394
doc/man/task-tutorial.5
Normal file
@@ -0,0 +1,394 @@
|
||||
.TH task-tutorial 5 2009-10-21 "task 1.8.3" "User Manuals"
|
||||
|
||||
.SH NAME
|
||||
task-tutorial \- A tutorial 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 subcommands 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
|
||||
|
||||
Easy. But now consider checking out 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
|
||||
|
||||
That's it. 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 remove the confirmation, edit
|
||||
your .taskrc file and change the line:
|
||||
.br
|
||||
.RS
|
||||
confirmation=yes
|
||||
.RE
|
||||
.br
|
||||
to have a value of "no".
|
||||
|
||||
While the use of projects and priorities are not essential to benefiting
|
||||
from task, they can be very useful when the list of tasks grows large.
|
||||
Let's assign a project 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,
|
||||
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 '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
|
||||
|
||||
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:
|
||||
.br
|
||||
.RS
|
||||
color.due=red
|
||||
.br
|
||||
color.due=on_blue
|
||||
.br
|
||||
color.due=red on_blue
|
||||
.br
|
||||
color.due=bold_red on_blue
|
||||
.RE
|
||||
|
||||
Where color is one of the following:
|
||||
|
||||
.br
|
||||
.RS
|
||||
black, blue, red, green, cyan, magenta, yellow or white
|
||||
.RE
|
||||
|
||||
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:
|
||||
.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 \- 2009 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)
|
||||
|
||||
For more information regarding task, the following may be referenced:
|
||||
|
||||
.TP
|
||||
The official site at
|
||||
<http://taskwarrior.org>
|
||||
|
||||
.TP
|
||||
The official code repository at
|
||||
<http://github.com/pbeckingham/task/>
|
||||
|
||||
.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>
|
||||
469
doc/man/task.1
Normal file
469
doc/man/task.1
Normal file
@@ -0,0 +1,469 @@
|
||||
.TH task 1 2009-10-21 "task 1.8.3" "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 more 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
|
||||
Displays all possible colors.
|
||||
|
||||
.TP
|
||||
.B version
|
||||
Shows the task version number and current settings in the task configuration
|
||||
file.
|
||||
|
||||
.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 ls [tags] [attrs] [description]
|
||||
Provides a minimal 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)
|
||||
.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 \- 2009 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)
|
||||
|
||||
For more information regarding task, the following may be referenced:
|
||||
|
||||
.TP
|
||||
The official site at
|
||||
<http://taskwarrior.org>
|
||||
|
||||
.TP
|
||||
The official code repository at
|
||||
<http://github.com/pbeckingham/task/>
|
||||
|
||||
.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>
|
||||
493
doc/man/taskrc.5
Normal file
493
doc/man/taskrc.5
Normal file
@@ -0,0 +1,493 @@
|
||||
.TH taskrc 5 2009-10-21 "task 1.8.3" "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.
|
||||
|
||||
.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
|
||||
|
||||
.TP
|
||||
.B locking=on
|
||||
Determines whether task uses file locking when accessing the pending.data and completed.data files.
|
||||
Default to "on". Solaris users who store the task data files on an NFS mount may need to set locking
|
||||
to "off". Note that setting this value to "off" is dangerous. It means that another program may write
|
||||
to the task.pending file when task is attempting to do the same.
|
||||
|
||||
.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.
|
||||
|
||||
.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 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".
|
||||
|
||||
.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 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.
|
||||
|
||||
.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.
|
||||
|
||||
.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.
|
||||
|
||||
.SS DATES
|
||||
|
||||
.TP
|
||||
.B dateformat=m/d/Y
|
||||
This is a string of characters that define how task formats dates. The default value is: m/d/Y.
|
||||
The string should contain the characters
|
||||
|
||||
.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
|
||||
.RE
|
||||
|
||||
The string may also contain other characters to act as spacers, or formatting. Examples for other
|
||||
variable values:
|
||||
|
||||
.RS
|
||||
.br
|
||||
d/m/Y would output 24/7/2009
|
||||
.br
|
||||
YMD would output 20090724
|
||||
.br
|
||||
m-d-y would output 07-24-09
|
||||
.RE
|
||||
|
||||
.TP
|
||||
.B weekstart=Sunday
|
||||
Determines the day a week starts. Valid values are Sunday or Monday only.
|
||||
|
||||
.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.
|
||||
|
||||
.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. Defaults to 7.
|
||||
|
||||
.TP
|
||||
.B monthsperline=2
|
||||
Determines how many months the "task calendar" command renders across the screen.
|
||||
Defaults to however many will fit. If more months that 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.
|
||||
|
||||
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 color, 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=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.
|
||||
.br
|
||||
.B color.pri.L=on_green
|
||||
The color of priority:L tasks.
|
||||
.br
|
||||
.B color.pri.none=white on_blue
|
||||
The color of priority: tasks.
|
||||
.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
|
||||
The value for the coloration rules may be one optional foreground color and one optional
|
||||
color. For example, the value may be
|
||||
.RE
|
||||
|
||||
.RS
|
||||
.RS
|
||||
bold_red on_bright_yellow
|
||||
.RE
|
||||
.RE
|
||||
|
||||
.RS
|
||||
Certain attributes like tags, projects and keywords can also 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 contains X.
|
||||
|
||||
.TP
|
||||
.B color.header=green
|
||||
Colors any of the messages printed prior to the report output.
|
||||
|
||||
.TP
|
||||
.B color.message=green
|
||||
Colors any of the messages printed after the report output.
|
||||
|
||||
.TP
|
||||
.B color.footnote=green
|
||||
Colors any of the messages printed last.
|
||||
.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.
|
||||
|
||||
.TP
|
||||
.B
|
||||
default.priority=M
|
||||
Provides a default priority for the
|
||||
.I task add
|
||||
command.
|
||||
|
||||
.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_ind, age, age_compact,
|
||||
active, tags, description, description_only. 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.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
|
||||
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 \- 2009 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)
|
||||
|
||||
For more information regarding task, the following may be referenced:
|
||||
|
||||
.TP
|
||||
The official site at
|
||||
<http://taskwarrior.org>
|
||||
|
||||
.TP
|
||||
The official code repository at
|
||||
<http://github.com/pbeckingham/task/>
|
||||
|
||||
.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"? ;
|
||||
|
||||
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.
|
||||
|
||||
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
|
||||
|
||||
159
i18n/strings.en-US
Normal file
159
i18n/strings.en-US
Normal file
@@ -0,0 +1,159 @@
|
||||
# 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
|
||||
|
||||
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 bold_underline
|
||||
503 black
|
||||
504 red
|
||||
505 green
|
||||
506 yellow
|
||||
507 blue
|
||||
508 magenta
|
||||
509 cyan
|
||||
510 white
|
||||
511 bold_black
|
||||
512 bold_red
|
||||
513 bold_green
|
||||
514 bold_yellow
|
||||
515 bold_blue
|
||||
516 bold_magenta
|
||||
517 bold_cyan
|
||||
518 bold_white
|
||||
519 underline_black
|
||||
520 underline_red
|
||||
521 underline_green
|
||||
522 underline_yellow
|
||||
523 underline_blue
|
||||
524 underline_magenta
|
||||
525 underline_cyan
|
||||
526 underline_white
|
||||
527 bold_underline_black
|
||||
528 bold_underline_red
|
||||
529 bold_underline_green
|
||||
530 bold_underline_yellow
|
||||
531 bold_underline_blue
|
||||
532 bold_underline_magenta
|
||||
533 bold_underline_cyan
|
||||
534 bold_underline_white
|
||||
535 on_black
|
||||
536 on_red
|
||||
537 on_green
|
||||
538 on_yellow
|
||||
539 on_blue
|
||||
540 on_magenta
|
||||
541 on_cyan
|
||||
542 on_white
|
||||
543 on_bright_black
|
||||
544 on_bright_red
|
||||
545 on_bright_green
|
||||
546 on_bright_yellow
|
||||
547 on_bright_blue
|
||||
548 on_bright_magenta
|
||||
549 on_bright_cyan
|
||||
550 on_bright_white
|
||||
551 off
|
||||
552 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.
|
||||
281
package-config/osx/binary/COPYING.txt
Normal file
281
package-config/osx/binary/COPYING.txt
Normal file
@@ -0,0 +1,281 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Library General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
24
package-config/osx/binary/README.txt
Normal file
24
package-config/osx/binary/README.txt
Normal file
@@ -0,0 +1,24 @@
|
||||
|
||||
Thank you for taking a look at task!
|
||||
|
||||
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 the site:
|
||||
|
||||
http://taskwarrior.org
|
||||
|
||||
At the site you'll find a wiki, discussion forums, downloads, news and more.
|
||||
|
||||
|
||||
Your contributions are especially welcome. Whether it comes in the form of
|
||||
code patches, ideas, discussion, bug reports or just encouragement, your input
|
||||
is needed.
|
||||
|
||||
Please send your support questions and code patches to:
|
||||
|
||||
support@taskwarrior.org
|
||||
|
||||
Consider joining taskwarrior.org and participating in the future of task.
|
||||
|
||||
---
|
||||
1
package-config/osx/task.pmdoc/01task-contents.xml
Normal file
1
package-config/osx/task.pmdoc/01task-contents.xml
Normal file
@@ -0,0 +1 @@
|
||||
<pkg-contents spec="1.12"><f n="task" o="root" g="wheel" p="33261" pt="/Users/paul/task.git/package-config/osx/binary/task" m="false" t="file"><mod>group</mod><mod>owner</mod></f></pkg-contents>
|
||||
1
package-config/osx/task.pmdoc/01task.xml
Normal file
1
package-config/osx/task.pmdoc/01task.xml
Normal file
@@ -0,0 +1 @@
|
||||
<pkgref spec="1.12" uuid="C71026FD-E252-42CD-89C3-2F6F087AAF17"><config><identifier>com.beckingham.task182.task.pkg</identifier><version>1.8.2</version><description></description><post-install type="none"/><requireAuthorization/><installFrom mod="true">/Users/paul/task.git/package-config/osx/binary/task</installFrom><installTo mod="true" relocatable="true">/usr/local/bin</installTo><flags><followSymbolicLinks/></flags><packageStore type="internal"></packageStore><mod>installTo</mod><mod>locationType</mod><mod>relocatable</mod><mod>identifier</mod><mod>parent</mod><mod>version</mod><mod>installTo.path</mod></config><contents><file-list>01task-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.8.2</title><build>/Users/paul/Desktop/task-1.8.2.pkg</build><organization>com.beckingham</organization><userSees ui="both"/><min-target os="3"/><domain anywhere="true" system="true"/></properties><distribution><versions min-spec="1.000000"/><scripts></scripts></distribution><contents><choice title="task" id="choice0" starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="com.beckingham.task182.task.pkg"/><choice-reqs><requirement id="tosv" operator="ge" value="'10.6.0'" selected="no" enabled="no" hidden="unchanged" startSelected="unchanged" startEnabled="unchanged" startHidden="unchanged"/></choice-reqs></choice></contents><resources bg-scale="proportional" bg-align="center"><locale lang="en"><resource mod="true" type="license">/Users/paul/task.git/package-config/osx/binary/COPYING.txt</resource><resource mod="true" type="readme">/Users/paul/task.git/package-config/osx/binary/README.txt</resource></locale></resources><flags/><item type="file">01task.xml</item><mod>properties.title</mod><mod>properties.customizeOption</mod><mod>properties.anywhereDomain</mod><mod>properties.systemDomain</mod></pkmkdoc>
|
||||
46
package-config/ubuntu/debian/changelog
Normal file
46
package-config/ubuntu/debian/changelog
Normal file
@@ -0,0 +1,46 @@
|
||||
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.0.1
|
||||
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.
|
||||
59
package-config/ubuntu/debian/copyright
Normal file
59
package-config/ubuntu/debian/copyright
Normal file
@@ -0,0 +1,59 @@
|
||||
This package was debianized by:
|
||||
|
||||
Federico Hernandez <ultrafredde@gmail.com> on Thu, 20 Aug 2009 20:26:33 +0200
|
||||
|
||||
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
|
||||
|
||||
Copyright:
|
||||
|
||||
Copyright 2006 - 2009, Paul Beckingham
|
||||
Copyright 2009 Federico Hernandez
|
||||
Copyright 2009 P.C. Shyamshankar
|
||||
Copyright 2009 John Florian
|
||||
|
||||
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, 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.1
|
||||
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 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
|
||||
57
scripts/vim/README
Normal file
57
scripts/vim/README
Normal file
@@ -0,0 +1,57 @@
|
||||
|
||||
Configure VIM for Syntax Highlighting of Task Data
|
||||
|
||||
|
||||
The task data files (pending.data, completed.data and undo.data) 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
|
||||
|
||||
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 three above mentioned files are
|
||||
|
||||
Copyright 2009 John Florian
|
||||
|
||||
and are available under the GNU Public License version 2 or later.
|
||||
For the full text of this license, see COPYING.
|
||||
18
scripts/vim/ftdetect/task.vim
Normal file
18
scripts/vim/ftdetect/task.vim
Normal file
@@ -0,0 +1,18 @@
|
||||
" Vim support file to detect task data files and single task edits
|
||||
"
|
||||
" Maintainer: John Florian <jflorian@doubledog.org>
|
||||
" Updated: Wed Jul 8 19:45:55 EDT 2009
|
||||
"
|
||||
" Copyright 2009 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 the raw data files
|
||||
au BufRead,BufNewFile {pending,completed,undo}.data set filetype=taskdata
|
||||
|
||||
" for '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 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 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
|
||||
58
scripts/zsh/_task
Normal file
58
scripts/zsh/_task
Normal file
@@ -0,0 +1,58 @@
|
||||
#compdef 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 rubbish-command | sed -n -e 's/^\s\+task \(\w\+\) .*/\1/p' | grep -v ID))
|
||||
|
||||
# As of task 1.7.0,
|
||||
# _task_cmds=(add append annotate completed edit duplicate delete undelete info start stop done undo projects tags summary timesheet history ghistory next calendar active overdue stats import export color version help list long ls newest oldest)
|
||||
|
||||
_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
|
||||
|
||||
782
src/Att.cpp
Normal file
782
src/Att.cpp
Normal file
@@ -0,0 +1,782 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// 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 <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",
|
||||
};
|
||||
|
||||
#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")
|
||||
{
|
||||
if (value != "")
|
||||
Text::guessColor (value);
|
||||
}
|
||||
|
||||
else if (name == "due" ||
|
||||
name == "until" ||
|
||||
name == "wait")
|
||||
{
|
||||
// Validate and convert to epoch.
|
||||
if (value != "")
|
||||
value = Date (value, context.config.get ("dateformat", "m/d/Y")).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 Obsolete
|
||||
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")
|
||||
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.
|
||||
|
||||
// If there are no mods, just perform a straight compare on value.
|
||||
if (mMod == "")
|
||||
{
|
||||
if (mValue != other.mValue)
|
||||
return false;
|
||||
}
|
||||
|
||||
// has = contains as a substring.
|
||||
else if (mMod == "has" || mMod == "contains") // TODO i18n
|
||||
{
|
||||
if (other.mValue.find (mValue) == std::string::npos)
|
||||
return false;
|
||||
}
|
||||
|
||||
// is = equal. Nop.
|
||||
else if (mMod == "is" || mMod == "equals") // TODO i18n
|
||||
{
|
||||
if (mValue != other.mValue)
|
||||
return false;
|
||||
}
|
||||
|
||||
// isnt = not equal.
|
||||
else if (mMod == "isnt" || mMod == "not") // TODO i18n
|
||||
{
|
||||
if (mValue == other.mValue)
|
||||
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 (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 (mValue != other.mValue.substr (
|
||||
other.mValue.length () - mValue.length (),
|
||||
std::string::npos))
|
||||
return false;
|
||||
}
|
||||
|
||||
// hasnt = does not contain as a substring.
|
||||
else if (mMod == "hasnt") // TODO i18n
|
||||
{
|
||||
if (other.mValue.find (mValue) != 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", "m/d/Y"));
|
||||
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", "m/d/Y"));
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
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;
|
||||
// " -> "
|
||||
// , -> ,
|
||||
// [ -> &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 - 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_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
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
234
src/Cmd.cpp
Normal file
234
src/Cmd.cpp
Normal file
@@ -0,0 +1,234 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// 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 <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 (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_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_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::npos);
|
||||
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 == context.stringtable.get (CMD_CALENDAR, "calendar") ||
|
||||
command == context.stringtable.get (CMD_COLORS, "colors") ||
|
||||
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_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 - 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_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
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
355
src/Config.cpp
355
src/Config.cpp
@@ -1,7 +1,7 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// task - a command line task list manager.
|
||||
//
|
||||
// Copyright 2006 - 2008, Paul Beckingham.
|
||||
// Copyright 2006 - 2009, Paul Beckingham.
|
||||
// All rights reserved.
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify it under
|
||||
@@ -27,14 +27,25 @@
|
||||
#include <iostream>
|
||||
#include <fstream>
|
||||
#include <sstream>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <unistd.h>
|
||||
#include <stdlib.h>
|
||||
#include "task.h"
|
||||
#include <pwd.h>
|
||||
#include "Config.h"
|
||||
#include "text.h"
|
||||
#include "util.h"
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// These are default (but overridable) reports. These entries are necessary
|
||||
// because these three reports were converted from hard-coded reports to custom
|
||||
// reports, and therefore need these config file entries. However, users are
|
||||
// already used to seeing these five reports, but do not have these entries.
|
||||
// The choice was a) make users edit their .taskrc files, b) write a .taskrc
|
||||
// upgrade program to make the change, or c) this.
|
||||
Config::Config ()
|
||||
{
|
||||
setDefaults ();
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -44,9 +55,9 @@ Config::Config (const std::string& 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.
|
||||
// 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.
|
||||
bool Config::load (const std::string& file)
|
||||
{
|
||||
std::ifstream in;
|
||||
@@ -57,20 +68,20 @@ bool Config::load (const std::string& file)
|
||||
while (getline (in, line))
|
||||
{
|
||||
// Remove comments.
|
||||
size_type pound = line.find ("#");
|
||||
std::string::size_type pound = line.find ("#"); // no i18n
|
||||
if (pound != std::string::npos)
|
||||
line = line.substr (0, pound);
|
||||
|
||||
line = trim (line, " \t");
|
||||
line = trim (line, " \t"); // no i18n
|
||||
|
||||
// Skip empty lines.
|
||||
if (line.length () > 0)
|
||||
{
|
||||
size_type equal = line.find ("=");
|
||||
std::string::size_type equal = line.find ("="); // no i18n
|
||||
if (equal != std::string::npos)
|
||||
{
|
||||
std::string key = trim (line.substr (0, equal), " \t");
|
||||
std::string value = trim (line.substr (equal+1, line.length () - equal), " \t");
|
||||
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;
|
||||
}
|
||||
}
|
||||
@@ -84,74 +95,239 @@ bool Config::load (const std::string& file)
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void Config::createDefault (const std::string& file)
|
||||
void Config::createDefaultRC (const std::string& rc, const std::string& data)
|
||||
{
|
||||
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;
|
||||
}
|
||||
}
|
||||
// Create a sample .taskrc file.
|
||||
std::stringstream contents;
|
||||
contents << "# Task program configuration file.\n"
|
||||
<< "# For more documentation, see http://taskwarrior.org\n"
|
||||
<< "\n"
|
||||
<< "# Files\n"
|
||||
<< "data.location=" << data << "\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"
|
||||
<< "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"
|
||||
<< "\n"
|
||||
<< "# Dates\n"
|
||||
<< "dateformat=m/d/Y # Preferred input and display date format\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"
|
||||
<< "#monthsperline=2 # Number of calendar months on a line\n"
|
||||
<< "\n"
|
||||
<< "# Color controls.\n"
|
||||
<< "color=on # Use color\n"
|
||||
<< "color.overdue=bold_red # Color of overdue tasks\n"
|
||||
<< "color.due=bold_yellow # Color of due tasks\n"
|
||||
<< "color.pri.H=bold # Color of priority:H tasks\n"
|
||||
<< "#color.pri.M=on_yellow # Color of priority:M tasks\n"
|
||||
<< "#color.pri.L=on_green # Color of priority:L tasks\n"
|
||||
<< "#color.pri.none=white on_blue # Color of priority: tasks\n"
|
||||
<< "color.active=bold_cyan # Color of active tasks\n"
|
||||
<< "color.tagged=yellow # Color of tagged tasks\n"
|
||||
<< "#color.tag.bug=yellow # Color of +bug tasks\n"
|
||||
<< "#color.project.garden=on_green # Color of project:garden tasks\n"
|
||||
<< "#color.keyword.car=on_blue # Color of description.contains:car tasks\n"
|
||||
<< "#color.recurring=on_red # Color of recur.any: tasks\n"
|
||||
<< "#color.header=bold_green # Color of header messages\n"
|
||||
<< "#color.footnote=bold_green # Color of footnote messages\n"
|
||||
<< "\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 # Unless otherwise specified\n"
|
||||
<< "#default.priority=M # Unless otherwise specified\n"
|
||||
<< "default.command=list # Unless otherwise specified\n"
|
||||
<< "\n"
|
||||
<< "# Fields: id,uuid,project,priority,entry,start,due,recur,recur_ind,age,\n"
|
||||
<< "# age_compact,active,tags,description,description_only\n"
|
||||
<< "# Description: This report is ...\n"
|
||||
<< "# Sort: due+,priority-,project+\n"
|
||||
<< "# Filter: pro:x pri:H +bug limit:10\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,age,tags,description\n"
|
||||
<< "report.long.labels=ID,Project,Pri,Added,Started,Due,Recur,Age,Tags,Description\n"
|
||||
<< "report.long.sort=due+,priority-,project+\n"
|
||||
<< "report.long.filter=status:pending\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"
|
||||
<< "\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"
|
||||
<< "\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"
|
||||
<< "\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"
|
||||
<< "\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"
|
||||
<< "\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"
|
||||
<< "\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"
|
||||
<< "\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"
|
||||
<< "\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"
|
||||
<< "\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"
|
||||
<< "\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"
|
||||
<< "\n";
|
||||
|
||||
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");
|
||||
spit (rc, contents.str ());
|
||||
}
|
||||
|
||||
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");
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void Config::createDefaultData (const std::string& data)
|
||||
{
|
||||
if (access (data.c_str (), F_OK))
|
||||
mkdir (data.c_str (), S_IRWXU);
|
||||
}
|
||||
|
||||
fclose (out);
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void Config::setDefaults ()
|
||||
{
|
||||
set ("report.long.description", "Lists all task, all data, matching the specified criteria"); // TODO i18n
|
||||
set ("report.long.columns", "id,project,priority,entry,start,due,recur,age,tags,description"); // TODO i18n
|
||||
set ("report.long.labels", "ID,Project,Pri,Added,Started,Due,Recur,Age,Tags,Description"); // TODO i18n
|
||||
set ("report.long.sort", "due+,priority-,project+"); // TODO i18n
|
||||
set ("report.long.filter", "status:pending"); // TODO i18n
|
||||
|
||||
// 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");
|
||||
set ("report.list.description", "Lists all tasks matching the specified criteria"); // TODO i18n
|
||||
set ("report.list.columns", "id,project,priority,due,active,age,description"); // TODO i18n
|
||||
set ("report.list.labels", "ID,Project,Pri,Due,Active,Age,Description"); // TODO i18n
|
||||
set ("report.list.sort", "due+,priority-,project+"); // TODO i18n
|
||||
set ("report.list.filter", "status:pending"); // TODO i18n
|
||||
|
||||
std::cout << "Done." << std::endl;
|
||||
}
|
||||
}
|
||||
}
|
||||
set ("report.ls.description", "Minimal listing of all tasks matching the specified criteria"); // TODO i18n
|
||||
set ("report.ls.columns", "id,project,priority,description"); // TODO i18n
|
||||
set ("report.ls.labels", "ID,Project,Pri,Description"); // TODO i18n
|
||||
set ("report.ls.sort", "priority-,project+"); // TODO i18n
|
||||
set ("report.ls.filter", "status:pending"); // TODO i18n
|
||||
|
||||
set ("report.newest.description", "Shows the newest tasks"); // TODO i18n
|
||||
set ("report.newest.columns", "id,project,priority,due,active,age,description"); // TODO i18n
|
||||
set ("report.newest.labels", "ID,Project,Pri,Due,Active,Age,Description"); // TODO i18n
|
||||
set ("report.newest.sort", "id-"); // TODO i18n
|
||||
set ("report.newest.filter", "status:pending limit:10"); // TODO i18n
|
||||
|
||||
set ("report.oldest.description", "Shows the oldest tasks"); // TODO i18n
|
||||
set ("report.oldest.columns", "id,project,priority,due,active,age,description"); // TODO i18n
|
||||
set ("report.oldest.labels", "ID,Project,Pri,Due,Active,Age,Description"); // TODO i18n
|
||||
set ("report.oldest.sort", "id+"); // TODO i18n
|
||||
set ("report.oldest.filter", "status:pending limit:10"); // TODO i18n
|
||||
|
||||
set ("report.overdue.description", "Lists overdue tasks matching the specified criteria"); // TODO i18n
|
||||
set ("report.overdue.columns", "id,project,priority,due,active,age,description"); // TODO i18n
|
||||
set ("report.overdue.labels", "ID,Project,Pri,Due,Active,Age,Description"); // TODO i18n
|
||||
set ("report.overdue.sort", "due+,priority-,project+"); // TODO i18n
|
||||
set ("report.overdue.filter", "status:pending due.before:today"); // TODO i18n
|
||||
|
||||
set ("report.active.description", "Lists active tasks matching the specified criteria"); // TODO i18n
|
||||
set ("report.active.columns", "id,project,priority,due,active,age,description"); // TODO i18n
|
||||
set ("report.active.labels", "ID,Project,Pri,Due,Active,Age,Description"); // TODO i18n
|
||||
set ("report.active.sort", "due+,priority-,project+"); // TODO i18n
|
||||
set ("report.active.filter", "status:pending start.any:"); // TODO i18n
|
||||
|
||||
set ("report.completed.description", "Lists completed tasks matching the specified criteria"); // TODO i18n
|
||||
set ("report.completed.columns", "end,project,priority,age,description"); // TODO i18n
|
||||
set ("report.completed.labels", "Complete,Project,Pri,Age,Description"); // TODO i18n
|
||||
set ("report.completed.sort", "end+,priority-,project+"); // TODO i18n
|
||||
set ("report.completed.filter", "status:completed"); // TODO i18n
|
||||
|
||||
set ("report.recurring.description", "Lists recurring tasks matching the specified criteria"); // TODO i18n
|
||||
set ("report.recurring.columns", "id,project,priority,due,recur,active,age,description"); // TODO i18n
|
||||
set ("report.recurring.labels", "ID,Project,Pri,Due,Recur,Active,Age,Description"); // TODO i18n
|
||||
set ("report.recurring.sort", "due+,priority-,project+"); // TODO i18n
|
||||
set ("report.recurring.filter", "status:pending parent.any:"); // TODO i18n
|
||||
|
||||
set ("report.waiting.description", "Lists all waiting tasks matching the specified criteria"); // TODO i18n
|
||||
set ("report.waiting.columns", "id,project,priority,wait,age,description"); // TODO i18n
|
||||
set ("report.waiting.labels", "ID,Project,Pri,Wait,Age,Description"); // TODO i18n
|
||||
set ("report.waiting.sort", "wait+,priority-,project+"); // TODO i18n
|
||||
set ("report.waiting.filter", "status:waiting"); // TODO i18n
|
||||
|
||||
set ("report.all.description", "Lists all tasks matching the specified criteria"); // TODO i18n
|
||||
set ("report.all.columns", "id,project,priority,due,active,age,description"); // TODO i18n
|
||||
set ("report.all.labels", "ID,Project,Pri,Due,Active,Age,Description"); // TODO i18n
|
||||
set ("report.all.sort", "due+,priority-,project+"); // TODO i18n
|
||||
|
||||
set ("report.next.description", "Lists the most urgent tasks"); // TODO i18n
|
||||
set ("report.next.columns", "id,project,priority,due,active,age,description"); // TODO i18n
|
||||
set ("report.next.labels", "ID,Project,Pri,Due,Active,Age,Description"); // TODO i18n
|
||||
set ("report.next.sort", "due+,priority-,project+"); // TODO i18n
|
||||
set ("report.next.filter", "status:pending"); // TODO i18n
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Return the configuration value given the specified key.
|
||||
const std::string& Config::get (const char* key)
|
||||
const std::string Config::get (const char* key)
|
||||
{
|
||||
return this->get (std::string (key));
|
||||
}
|
||||
@@ -159,7 +335,7 @@ const std::string& Config::get (const char* 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 Config::get (
|
||||
const char* key,
|
||||
const char* default_value)
|
||||
{
|
||||
@@ -168,7 +344,7 @@ const std::string& Config::get (
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// 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];
|
||||
}
|
||||
@@ -176,7 +352,7 @@ const std::string& Config::get (const std::string& 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 Config::get (
|
||||
const std::string& key,
|
||||
const std::string& default_value)
|
||||
{
|
||||
@@ -187,17 +363,19 @@ const std::string& Config::get (
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
bool Config::get (const std::string& key, bool default_value)
|
||||
bool Config::get (const std::string& key, const bool default_value)
|
||||
{
|
||||
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 == "yes" || // TODO i18n
|
||||
value == "on" || // TODO i18n
|
||||
value == "enable" || // TODO i18n
|
||||
value == "enabled") // TODO i18n
|
||||
return true;
|
||||
|
||||
return false;
|
||||
@@ -246,29 +424,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)
|
||||
|
||||
23
src/Config.h
23
src/Config.h
@@ -1,7 +1,7 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// task - a command line task list manager.
|
||||
//
|
||||
// Copyright 2006 - 2008, Paul Beckingham.
|
||||
// Copyright 2006 - 2009, Paul Beckingham.
|
||||
// All rights reserved.
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify it under
|
||||
@@ -37,21 +37,24 @@ public:
|
||||
Config ();
|
||||
Config (const std::string&);
|
||||
|
||||
bool load (const std::string&);
|
||||
void createDefault (const std::string&);
|
||||
Config (const Config&);
|
||||
Config& operator= (const Config&);
|
||||
|
||||
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);
|
||||
bool load (const std::string&);
|
||||
void createDefaultRC (const std::string&, const std::string&);
|
||||
void createDefaultData (const std::string&);
|
||||
void setDefaults ();
|
||||
|
||||
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&, const 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>&);
|
||||
};
|
||||
|
||||
|
||||
806
src/Context.cpp
Normal file
806
src/Context.cpp
Normal file
@@ -0,0 +1,806 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// 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 <iostream>
|
||||
#include <fstream>
|
||||
#include <pwd.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include "Context.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 ("")
|
||||
, 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 ();
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
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.get (std::string ("_forcecolor"), false))
|
||||
config.set ("color", "off");
|
||||
}
|
||||
|
||||
if (config.get ("color", true))
|
||||
initializeColorRules ();
|
||||
|
||||
// Load appropriate stringtable as soon after the config file as possible, to
|
||||
// allow all subsequent messages to be localizable.
|
||||
std::string location = expandPath (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 + "/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 (expandPath (*path));
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
int Context::run ()
|
||||
{
|
||||
int rc;
|
||||
Timer t ("Context::run");
|
||||
|
||||
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.
|
||||
if (config.get (std::string ("debug"), false))
|
||||
foreach (d, debugMessages)
|
||||
if (config.get ("color", true) || config.get (std::string ("_forcecolor"), false))
|
||||
std::cout << colorizeDebug (*d) << std::endl;
|
||||
else
|
||||
std::cout << *d << std::endl;
|
||||
|
||||
// Dump all headers.
|
||||
foreach (h, headers)
|
||||
if (config.get ("color", true) || config.get (std::string ("_forcecolor"), false))
|
||||
std::cout << colorizeHeader (*h) << std::endl;
|
||||
else
|
||||
std::cout << *h << std::endl;
|
||||
|
||||
// Dump the report output.
|
||||
std::cout << output;
|
||||
|
||||
// Dump all footnotes.
|
||||
foreach (f, footnotes)
|
||||
if (config.get ("color", true) || config.get (std::string ("_forcecolor"), false))
|
||||
std::cout << colorizeFootnote (*f) << std::endl;
|
||||
else
|
||||
std::cout << *f << std::endl;
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
int Context::dispatch (std::string &out)
|
||||
{
|
||||
int rc = 0;
|
||||
Timer t ("Context::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 == "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 == "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 == "" &&
|
||||
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 { rc = shortUsage (out); }
|
||||
|
||||
// Only update the shadow file if such an update was not suppressed (shadow),
|
||||
if (cmd.isWriteCommand () && !inShadow)
|
||||
shadow ();
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void Context::shadow ()
|
||||
{
|
||||
// Determine if shadow file is enabled.
|
||||
std::string shadowFile = expandPath (config.get ("shadow.file"));
|
||||
if (shadowFile != "")
|
||||
{
|
||||
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",
|
||||
config.get ("default.command", "list"));
|
||||
split (args, command, ' ');
|
||||
|
||||
initialize ();
|
||||
config.set ("curses", "off");
|
||||
config.set ("color", "off");
|
||||
|
||||
parse ();
|
||||
std::string result;
|
||||
(void)dispatch (result);
|
||||
std::ofstream out (shadowFile.c_str ());
|
||||
if (out.good ())
|
||||
{
|
||||
out << result;
|
||||
out.close ();
|
||||
}
|
||||
else
|
||||
throw std::string ("Could not write file '") + shadowFile + "'";
|
||||
|
||||
config.set ("curses", oldCurses);
|
||||
config.set ("color", oldColor);
|
||||
|
||||
// Optionally display a notification that the shadow file was updated.
|
||||
if (config.get (std::string ("shadow.notify"), false))
|
||||
footnote (std::string ("[Shadow file '") + shadowFile + "' 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;
|
||||
std::string rc = home + "/.taskrc";
|
||||
std::string data = home + "/.task";
|
||||
|
||||
// Is there an override for rc?
|
||||
foreach (arg, args)
|
||||
{
|
||||
if (*arg == "--")
|
||||
break;
|
||||
else if (arg->substr (0, 3) == "rc:")
|
||||
{
|
||||
rc = arg->substr (3, std::string::npos);
|
||||
|
||||
home = rc;
|
||||
std::string::size_type last_slash = rc.rfind ("/");
|
||||
if (last_slash != std::string::npos)
|
||||
home = rc.substr (0, last_slash);
|
||||
else
|
||||
home = ".";
|
||||
|
||||
args.erase (arg);
|
||||
header ("Using alternate .taskrc file " + rc); // TODO i18n
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Load rc file.
|
||||
config.clear (); // Dump current values.
|
||||
config.setDefaults (); // Add in the custom reports.
|
||||
config.load (rc); // Load new file.
|
||||
|
||||
if (config.get ("data.location") != "")
|
||||
data = config.get ("data.location");
|
||||
|
||||
// Is there an override for data?
|
||||
foreach (arg, args)
|
||||
{
|
||||
if (*arg == "--")
|
||||
break;
|
||||
else if (arg->substr (0, 17) == "rc.data.location:")
|
||||
{
|
||||
data = arg->substr (17, std::string::npos);
|
||||
header ("Using alternate data.location " + data); // TODO i18n
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Do we need to create a default rc?
|
||||
if (access (rc.c_str (), F_OK))
|
||||
{
|
||||
if (confirm ("A configuration file could not be found in " // TODO i18n
|
||||
+ home
|
||||
+ "\n\n"
|
||||
+ "Would you like a sample "
|
||||
+ rc
|
||||
+ " 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);
|
||||
|
||||
// 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"
|
||||
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.getUntil (':', name) &&
|
||||
n.skip (':') &&
|
||||
n.getUntilEOS (value))
|
||||
{
|
||||
config.set (name, value);
|
||||
overrides += " " + *arg;
|
||||
footnote (std::string ("Configuration override ") + // TODO i18n
|
||||
arg->substr (3, std::string::npos));
|
||||
}
|
||||
}
|
||||
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::npos);
|
||||
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, std::string::npos));
|
||||
parseTask.addTag (arg->substr (1, std::string::npos));
|
||||
}
|
||||
|
||||
// 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, std::string::npos));
|
||||
}
|
||||
|
||||
// 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;
|
||||
}
|
||||
|
||||
// *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);
|
||||
}
|
||||
|
||||
// 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.
|
||||
if (parseCmd.isReadOnlyCommand ())
|
||||
autoFilter (parseTask, 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") + overrides;
|
||||
if (defaultCommand != "")
|
||||
{
|
||||
// Stuff the command line.
|
||||
args.clear ();
|
||||
split (args, defaultCommand, ' ');
|
||||
header ("[task " + defaultCommand + "]");
|
||||
|
||||
// Reinitialize the context and recurse.
|
||||
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");
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void Context::clear ()
|
||||
{
|
||||
// Config config;
|
||||
filter.clear ();
|
||||
// Keymap keymap;
|
||||
sequence.clear ();
|
||||
subst.clear ();
|
||||
// task.clear ();
|
||||
task = Task ();
|
||||
tdb.clear ();
|
||||
// stringtable.clear ();
|
||||
program = "";
|
||||
args.clear ();
|
||||
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 (Task& t, Filter& f)
|
||||
{
|
||||
foreach (att, t)
|
||||
{
|
||||
// Words are found in the description using the .has modifier.
|
||||
if (att->second.name () == "description" && att->second.mod () == "")
|
||||
{
|
||||
std::vector <std::string> words;
|
||||
split (words, att->second.value (), ' ');
|
||||
foreach (word, words)
|
||||
{
|
||||
f.push_back (Att ("description", "has", *word));
|
||||
debug ("auto filter: " + att->second.name () + ".has:" + *word);
|
||||
}
|
||||
}
|
||||
|
||||
// Projects are matched left-most.
|
||||
else if (att->second.name () == "project" && att->second.mod () == "")
|
||||
{
|
||||
if (att->second.value () != "")
|
||||
{
|
||||
f.push_back (Att ("project", "startswith", att->second.value ()));
|
||||
debug ("auto filter: " + att->second.name () + ".startswith:" + att->second.value ());
|
||||
}
|
||||
else
|
||||
{
|
||||
f.push_back (Att ("project", "is", att->second.value ()));
|
||||
debug ("auto filter: " + att->second.name () + ".is:" + att->second.value ());
|
||||
}
|
||||
}
|
||||
|
||||
// The limit attribute does not participate in filtering, and needs to be
|
||||
// specifically handled in handleCustomReport.
|
||||
else if (att->second.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 (att->second.name () == "uuid")
|
||||
{
|
||||
}
|
||||
|
||||
// The mechanism for filtering on tags is +/-<tag>.
|
||||
else if (att->second.name () == "tags")
|
||||
{
|
||||
}
|
||||
|
||||
// Generic attribute matching.
|
||||
else
|
||||
{
|
||||
f.push_back (att->second);
|
||||
debug ("auto filter: " +
|
||||
att->second.name () +
|
||||
(att->second.mod () != "" ?
|
||||
("." + att->second.mod () + ":") :
|
||||
":") +
|
||||
att->second.value ());
|
||||
}
|
||||
}
|
||||
|
||||
// Include tagAdditions.
|
||||
foreach (tag, tagAdditions)
|
||||
{
|
||||
f.push_back (Att ("tags", "has", *tag));
|
||||
debug ("auto filter: +" + *tag);
|
||||
}
|
||||
|
||||
// Include tagRemovals.
|
||||
foreach (tag, tagRemovals)
|
||||
{
|
||||
f.push_back (Att ("tags", "hasnt", *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 ();
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
100
src/Context.h
Normal file
100
src/Context.h
Normal file
@@ -0,0 +1,100 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// 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_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"
|
||||
|
||||
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 (Task&, 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 overrides;
|
||||
Cmd cmd;
|
||||
std::map <std::string, std::string> aliases;
|
||||
std::vector <std::string> tagAdditions;
|
||||
std::vector <std::string> tagRemovals;
|
||||
|
||||
private:
|
||||
std::vector <std::string> headers;
|
||||
std::vector <std::string> footnotes;
|
||||
std::vector <std::string> debugMessages;
|
||||
bool inShadow;
|
||||
};
|
||||
|
||||
#endif
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
461
src/Date.cpp
461
src/Date.cpp
@@ -1,7 +1,7 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// task - a command line task list manager.
|
||||
//
|
||||
// Copyright 2006 - 2008, Paul Beckingham.
|
||||
// Copyright 2006 - 2009, Paul Beckingham.
|
||||
// All rights reserved.
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify it under
|
||||
@@ -25,11 +25,14 @@
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
#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"
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Defaults to "now".
|
||||
@@ -57,29 +60,145 @@ 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.";
|
||||
}
|
||||
|
||||
// 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.";
|
||||
}
|
||||
|
||||
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.";
|
||||
}
|
||||
|
||||
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.";
|
||||
}
|
||||
|
||||
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.";
|
||||
}
|
||||
|
||||
day = ::atoi (mdy.substr (i, 2).c_str ());
|
||||
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.";
|
||||
}
|
||||
|
||||
year = ::atoi (mdy.substr (i, 4).c_str ());
|
||||
i += 4;
|
||||
break;
|
||||
|
||||
default:
|
||||
if (i >= mdy.length () ||
|
||||
mdy[i] != format[f])
|
||||
{
|
||||
throw std::string ("\"") + mdy + "\" is not a valid date.";
|
||||
}
|
||||
++i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
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.";
|
||||
|
||||
// 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 +218,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 +243,48 @@ 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;
|
||||
default: sprintf (buffer, "%c", c); break;
|
||||
}
|
||||
|
||||
formatted += buffer;
|
||||
}
|
||||
|
||||
return formatted;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
std::string Date::toString (void)
|
||||
bool Date::valid (const std::string& input, const std::string& format)
|
||||
{
|
||||
int m, d, y;
|
||||
toMDY (m, d, y);
|
||||
try
|
||||
{
|
||||
Date test (input, format);
|
||||
}
|
||||
|
||||
char formatted [11];
|
||||
sprintf (formatted, "%d/%d/%d", m, d, y);
|
||||
return std::string (formatted);
|
||||
catch (...)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -156,9 +311,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 +353,7 @@ std::string Date::monthName (int month)
|
||||
|
||||
assert (month > 0);
|
||||
assert (month <= 12);
|
||||
return months[month -1];
|
||||
return months[month - 1];
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -233,6 +390,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 +419,22 @@ int Date::dayOfWeek () const
|
||||
return t->tm_wday;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
int Date::dayOfWeek (const std::string& input)
|
||||
{
|
||||
std::string in = lowerCase (input);
|
||||
|
||||
if (in == "sunday") return 0;
|
||||
if (in == "monday") return 1;
|
||||
if (in == "tuesday") return 2;
|
||||
if (in == "wednesday") return 3;
|
||||
if (in == "thursday") return 4;
|
||||
if (in == "friday") return 5;
|
||||
if (in == "saturday") return 6;
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
int Date::month () const
|
||||
{
|
||||
@@ -297,6 +492,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 +549,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, std::string::npos));
|
||||
}
|
||||
else
|
||||
{
|
||||
number = ::atoi (input.substr (0, 2).c_str ());
|
||||
ordinal = lowerCase (input.substr (1, std::string::npos));
|
||||
}
|
||||
|
||||
// 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;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
22
src/Date.h
22
src/Date.h
@@ -1,7 +1,7 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// task - a command line task list manager.
|
||||
//
|
||||
// Copyright 2006 - 2008, Paul Beckingham.
|
||||
// Copyright 2006 - 2009, 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_DATE
|
||||
#define INCLUDED_DATE
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string>
|
||||
|
||||
class Date;
|
||||
@@ -37,15 +38,16 @@ 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;
|
||||
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 +55,14 @@ 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&);
|
||||
|
||||
int month () const;
|
||||
int day () const;
|
||||
int year () const;
|
||||
int weekOfYear (int) const;
|
||||
int dayOfWeek () const;
|
||||
|
||||
bool operator== (const Date&);
|
||||
bool operator!= (const Date&);
|
||||
@@ -65,6 +70,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 +80,10 @@ public:
|
||||
|
||||
time_t operator- (const Date&);
|
||||
|
||||
private:
|
||||
bool isEpoch (const std::string&);
|
||||
bool isRelativeDate (const std::string&);
|
||||
|
||||
protected:
|
||||
time_t mT;
|
||||
};
|
||||
|
||||
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 - 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 <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, std::string::npos);
|
||||
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 - 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_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
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
148
src/Filter.cpp
Normal file
148
src/Filter.cpp
Normal file
@@ -0,0 +1,148 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// 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 <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, and that both filter matches must succeed for the filter
|
||||
// to succeed overall.
|
||||
if (att->name () == "description")
|
||||
{
|
||||
bool description_result = true;
|
||||
int annotation_pass_count = 0;
|
||||
int annotation_fail_count = 0;
|
||||
|
||||
if ((r = record.find (att->name ())) != record.end ())
|
||||
{
|
||||
description_result = 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
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 (! (description_result || annotation_pass_count > 0))
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!description_result || 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");
|
||||
|
||||
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 - 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_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 - 2009, 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 - 2009, 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);
|
||||
|
||||
66
src/Keymap.cpp
Normal file
66
src/Keymap.cpp
Normal file
@@ -0,0 +1,66 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// 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 <string>
|
||||
#include "Keymap.h"
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Keymap::Keymap ()
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Keymap::Keymap (const Keymap& other)
|
||||
{
|
||||
throw std::string ("unimplemented Keymap::Keymap");
|
||||
// mOne = other.mOne;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Keymap& Keymap::operator= (const Keymap& other)
|
||||
{
|
||||
throw std::string ("unimplemented Keymap::operator=");
|
||||
if (this != &other)
|
||||
{
|
||||
// mOne = other.mOne;
|
||||
}
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Keymap::~Keymap ()
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void Keymap::load (const std::string& file)
|
||||
{
|
||||
throw std::string ("unimplemented Keymap::load");
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
51
src/Keymap.h
Normal file
51
src/Keymap.h
Normal file
@@ -0,0 +1,51 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// 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_KEYMAP
|
||||
#define INCLUDED_KEYMAP
|
||||
|
||||
#include <string>
|
||||
|
||||
class Keymap
|
||||
{
|
||||
public:
|
||||
Keymap (); // Default constructor
|
||||
Keymap (const Keymap&); // Copy constructor
|
||||
Keymap& operator= (const Keymap&); // Assignment operator
|
||||
~Keymap (); // Destructor
|
||||
|
||||
void load (const std::string&); // Load the map file
|
||||
/*
|
||||
real (); // Convert soft to real
|
||||
soft (); // Convert real to soft
|
||||
*/
|
||||
|
||||
private:
|
||||
// TODO Structure for mapping strings to keys.
|
||||
};
|
||||
|
||||
#endif
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
73
src/Location.cpp
Normal file
73
src/Location.cpp
Normal file
@@ -0,0 +1,73 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// 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 "Location.h"
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Location::Location ()
|
||||
: path ("")
|
||||
, pending (NULL)
|
||||
, completed (NULL)
|
||||
, undo (NULL)
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Location::Location (const std::string& p)
|
||||
: path (p)
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Location::Location (const Location& other)
|
||||
{
|
||||
path = other.path;
|
||||
pending = other.pending;
|
||||
completed = other.completed;
|
||||
undo = other.undo;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Location& Location::operator= (const Location& other)
|
||||
{
|
||||
if (this != &other)
|
||||
{
|
||||
path = other.path;
|
||||
pending = other.pending;
|
||||
completed = other.completed;
|
||||
undo = other.undo;
|
||||
}
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Location::~Location ()
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
50
src/Location.h
Normal file
50
src/Location.h
Normal file
@@ -0,0 +1,50 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// 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_LOCATION
|
||||
#define INCLUDED_LOCATION
|
||||
|
||||
#include <string>
|
||||
#include <stdio.h>
|
||||
|
||||
class Location
|
||||
{
|
||||
public:
|
||||
Location (); // Default constructor
|
||||
Location (const std::string&); // Default constructor
|
||||
Location (const Location&); // Copy constructor
|
||||
Location& operator= (const Location&); // Assignment operator
|
||||
~Location (); // Destructor
|
||||
|
||||
public:
|
||||
std::string path;
|
||||
FILE* pending;
|
||||
FILE* completed;
|
||||
FILE* undo;
|
||||
};
|
||||
|
||||
#endif
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -1,3 +1,11 @@
|
||||
bin_PROGRAMS = task
|
||||
task_SOURCES = Config.cpp Date.cpp T.cpp TDB.cpp Table.cpp Grid.cpp color.cpp parse.cpp task.cpp util.cpp text.cpp rules.cpp Config.h Date.h T.h TDB.h Table.h Grid.h color.h task.h
|
||||
AM_CPPFLAGS = -Wall -pedantic -ggdb3 -fno-rtti
|
||||
task_SOURCES = Att.cpp Cmd.cpp Config.cpp Context.cpp Date.cpp Duration.cpp \
|
||||
Filter.cpp Grid.cpp Keymap.cpp Location.cpp Nibbler.cpp \
|
||||
Record.cpp Sequence.cpp StringTable.cpp Subst.cpp Task.cpp \
|
||||
TDB.cpp Table.cpp Timer.cpp Permission.cpp color.cpp edit.cpp \
|
||||
command.cpp import.cpp interactive.cpp recur.cpp report.cpp \
|
||||
custom.cpp rules.cpp main.cpp text.cpp util.cpp \
|
||||
Att.h Cmd.h Config.h Context.h Date.h Duration.h Filter.h \
|
||||
Grid.h Keymap.h Location.h Nibbler.h Record.h Sequence.h \
|
||||
StringTable.h Subst.h Task.h TDB.h Table.h Timer.h \
|
||||
Permission.h color.h i18n.h main.h text.h util.h
|
||||
|
||||
431
src/Makefile.in
431
src/Makefile.in
@@ -1,431 +0,0 @@
|
||||
# Makefile.in generated by automake 1.10 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
VPATH = @srcdir@
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
bin_PROGRAMS = task$(EXEEXT)
|
||||
subdir = src
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/auto.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
am__installdirs = "$(DESTDIR)$(bindir)"
|
||||
binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
|
||||
PROGRAMS = $(bin_PROGRAMS)
|
||||
am_task_OBJECTS = Config.$(OBJEXT) Date.$(OBJEXT) T.$(OBJEXT) \
|
||||
TDB.$(OBJEXT) Table.$(OBJEXT) Grid.$(OBJEXT) color.$(OBJEXT) \
|
||||
parse.$(OBJEXT) task.$(OBJEXT) util.$(OBJEXT) text.$(OBJEXT) \
|
||||
rules.$(OBJEXT)
|
||||
task_OBJECTS = $(am_task_OBJECTS)
|
||||
task_LDADD = $(LDADD)
|
||||
DEFAULT_INCLUDES = -I. -I$(top_builddir)@am__isrc@
|
||||
depcomp = $(SHELL) $(top_srcdir)/depcomp
|
||||
am__depfiles_maybe = depfiles
|
||||
CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
|
||||
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
|
||||
CXXLD = $(CXX)
|
||||
CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
|
||||
-o $@
|
||||
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
CCLD = $(CC)
|
||||
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||
SOURCES = $(task_SOURCES)
|
||||
DIST_SOURCES = $(task_SOURCES)
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMTAR = @AMTAR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CXX = @CXX@
|
||||
CXXCPP = @CXXCPP@
|
||||
CXXDEPMODE = @CXXDEPMODE@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
GREP = @GREP@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MKDIR_P = @MKDIR_P@
|
||||
OBJEXT = @OBJEXT@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
VERSION = @VERSION@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_CXX = @ac_ct_CXX@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build_alias = @build_alias@
|
||||
builddir = @builddir@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host_alias = @host_alias@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
srcdir = @srcdir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
task_SOURCES = Config.cpp Date.cpp T.cpp TDB.cpp Table.cpp Grid.cpp color.cpp parse.cpp task.cpp util.cpp text.cpp rules.cpp Config.h Date.h T.h TDB.h Table.h Grid.h color.h task.h
|
||||
AM_CPPFLAGS = -Wall -pedantic -ggdb3 -fno-rtti
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .cpp .o .obj
|
||||
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
|
||||
&& exit 0; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \
|
||||
cd $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu src/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
install-binPROGRAMS: $(bin_PROGRAMS)
|
||||
@$(NORMAL_INSTALL)
|
||||
test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
|
||||
@list='$(bin_PROGRAMS)'; for p in $$list; do \
|
||||
p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
|
||||
if test -f $$p \
|
||||
; then \
|
||||
f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
|
||||
echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
|
||||
$(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
|
||||
else :; fi; \
|
||||
done
|
||||
|
||||
uninstall-binPROGRAMS:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(bin_PROGRAMS)'; for p in $$list; do \
|
||||
f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
|
||||
echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
|
||||
rm -f "$(DESTDIR)$(bindir)/$$f"; \
|
||||
done
|
||||
|
||||
clean-binPROGRAMS:
|
||||
-test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
|
||||
task$(EXEEXT): $(task_OBJECTS) $(task_DEPENDENCIES)
|
||||
@rm -f task$(EXEEXT)
|
||||
$(CXXLINK) $(task_OBJECTS) $(task_LDADD) $(LIBS)
|
||||
|
||||
mostlyclean-compile:
|
||||
-rm -f *.$(OBJEXT)
|
||||
|
||||
distclean-compile:
|
||||
-rm -f *.tab.c
|
||||
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Config.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Date.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Grid.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/T.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TDB.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Table.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/color.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parse.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rules.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/task.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/text.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/util.Po@am__quote@
|
||||
|
||||
.cpp.o:
|
||||
@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
||||
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $<
|
||||
|
||||
.cpp.obj:
|
||||
@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
|
||||
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
mkid -fID $$unique
|
||||
tags: TAGS
|
||||
|
||||
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$tags $$unique; \
|
||||
fi
|
||||
ctags: CTAGS
|
||||
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$tags $$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& cd $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) $$here
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
dist_files=`for file in $$list; do echo $$file; done | \
|
||||
sed -e "s|^$$srcdirstrip/||;t" \
|
||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||
case $$dist_files in \
|
||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||
sort -u` ;; \
|
||||
esac; \
|
||||
for file in $$dist_files; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
||||
fi; \
|
||||
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
||||
else \
|
||||
test -f $(distdir)/$$file \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
all-am: Makefile $(PROGRAMS)
|
||||
installdirs:
|
||||
for dir in "$(DESTDIR)$(bindir)"; do \
|
||||
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
|
||||
done
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
uninstall: uninstall-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-binPROGRAMS clean-generic mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-compile distclean-generic \
|
||||
distclean-tags
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-am
|
||||
|
||||
info: info-am
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-dvi: install-dvi-am
|
||||
|
||||
install-exec-am: install-binPROGRAMS
|
||||
|
||||
install-html: install-html-am
|
||||
|
||||
install-info: install-info-am
|
||||
|
||||
install-man:
|
||||
|
||||
install-pdf: install-pdf-am
|
||||
|
||||
install-ps: install-ps-am
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-compile mostlyclean-generic
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am: uninstall-binPROGRAMS
|
||||
|
||||
.MAKE: install-am install-strip
|
||||
|
||||
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
|
||||
clean-generic ctags distclean distclean-compile \
|
||||
distclean-generic distclean-tags distdir dvi dvi-am html \
|
||||
html-am info info-am install install-am install-binPROGRAMS \
|
||||
install-data install-data-am install-dvi install-dvi-am \
|
||||
install-exec install-exec-am install-html install-html-am \
|
||||
install-info install-info-am install-man install-pdf \
|
||||
install-pdf-am install-ps install-ps-am install-strip \
|
||||
installcheck installcheck-am installdirs maintainer-clean \
|
||||
maintainer-clean-generic mostlyclean mostlyclean-compile \
|
||||
mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
|
||||
uninstall-am uninstall-binPROGRAMS
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
||||
304
src/Nibbler.cpp
Normal file
304
src/Nibbler.cpp
Normal file
@@ -0,0 +1,304 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// 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 <stdlib.h>
|
||||
#include <ctype.h>
|
||||
#include "Nibbler.h"
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Nibbler::Nibbler ()
|
||||
: mInput ("")
|
||||
, mCursor (0)
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Nibbler::Nibbler (const char* input)
|
||||
: mInput (input)
|
||||
, mCursor (0)
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Nibbler::Nibbler (const std::string& input)
|
||||
: mInput (input)
|
||||
, mCursor (0)
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Nibbler::Nibbler (const Nibbler& other)
|
||||
{
|
||||
mInput = other.mInput;
|
||||
mCursor = other.mCursor;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Nibbler& Nibbler::operator= (const Nibbler& other)
|
||||
{
|
||||
if (this != &other)
|
||||
{
|
||||
mInput = other.mInput;
|
||||
mCursor = other.mCursor;
|
||||
}
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Nibbler::~Nibbler ()
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Extract up until the next c, or EOS.
|
||||
bool Nibbler::getUntil (char c, std::string& result)
|
||||
{
|
||||
if (mCursor < mInput.length ())
|
||||
{
|
||||
std::string::size_type i = mInput.find (c, mCursor);
|
||||
if (i != std::string::npos)
|
||||
{
|
||||
result = mInput.substr (mCursor, i - mCursor);
|
||||
mCursor = i;
|
||||
}
|
||||
else
|
||||
{
|
||||
result = mInput.substr (mCursor, std::string::npos);
|
||||
mCursor = mInput.length ();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
bool Nibbler::getUntil (const std::string& terminator, std::string& result)
|
||||
{
|
||||
if (mCursor < mInput.length ())
|
||||
{
|
||||
std::string::size_type i = mInput.find (terminator, mCursor);
|
||||
if (i != std::string::npos)
|
||||
{
|
||||
result = mInput.substr (mCursor, i - mCursor);
|
||||
mCursor = i;
|
||||
}
|
||||
else
|
||||
{
|
||||
result = mInput.substr (mCursor, std::string::npos);
|
||||
mCursor = mInput.length ();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
bool Nibbler::getUntilOneOf (const std::string& chars, std::string& result)
|
||||
{
|
||||
if (mCursor < mInput.length ())
|
||||
{
|
||||
std::string::size_type i = mInput.find_first_of (chars, mCursor);
|
||||
if (i != std::string::npos)
|
||||
{
|
||||
result = mInput.substr (mCursor, i - mCursor);
|
||||
mCursor = i;
|
||||
}
|
||||
else
|
||||
{
|
||||
result = mInput.substr (mCursor, std::string::npos);
|
||||
mCursor = mInput.length ();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
bool Nibbler::skipN (const int quantity /* = 1 */)
|
||||
{
|
||||
if (mCursor >= mInput.length ())
|
||||
return false;
|
||||
|
||||
if (mCursor <= mInput.length () - quantity)
|
||||
{
|
||||
mCursor += quantity;
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
bool Nibbler::skip (char c)
|
||||
{
|
||||
if (mCursor < mInput.length () &&
|
||||
mInput[mCursor] == c)
|
||||
{
|
||||
++mCursor;
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
bool Nibbler::skipAll (char c)
|
||||
{
|
||||
std::string::size_type i = mCursor;
|
||||
while (i < mInput.length () && mInput[i] == c)
|
||||
++i;
|
||||
|
||||
if (i != mCursor)
|
||||
{
|
||||
mCursor = i;
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
bool Nibbler::skipAllOneOf (const std::string& chars)
|
||||
{
|
||||
if (mCursor < mInput.length ())
|
||||
{
|
||||
std::string::size_type i = mInput.find_first_not_of (chars, mCursor);
|
||||
if (i == mCursor)
|
||||
return false;
|
||||
|
||||
if (i == std::string::npos)
|
||||
mCursor = mInput.length (); // Yes, off the end.
|
||||
else
|
||||
mCursor = i;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
bool Nibbler::getQuoted (char c, std::string& result)
|
||||
{
|
||||
std::string::size_type start = mCursor;
|
||||
if (start < mInput.length () && mInput[start] == c)
|
||||
{
|
||||
++start;
|
||||
if (start < mInput.length ())
|
||||
{
|
||||
std::string::size_type end = mInput.find (c, start);
|
||||
if (end != std::string::npos)
|
||||
{
|
||||
result = mInput.substr (start, end - start);
|
||||
mCursor = end + 1;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
bool Nibbler::getInt (int& result)
|
||||
{
|
||||
std::string::size_type i = mCursor;
|
||||
|
||||
if (i < mInput.length ())
|
||||
{
|
||||
if (mInput[i] == '-')
|
||||
++i;
|
||||
else if (mInput[i] == '+')
|
||||
++i;
|
||||
}
|
||||
|
||||
while (i < mInput.length () && isdigit (mInput[i]))
|
||||
++i;
|
||||
|
||||
if (i > mCursor)
|
||||
{
|
||||
result = ::atoi (mInput.substr (mCursor, i - mCursor).c_str ());
|
||||
mCursor = i;
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
bool Nibbler::getUnsignedInt (int& result)
|
||||
{
|
||||
std::string::size_type i = mCursor;
|
||||
while (i < mInput.length () && isdigit (mInput[i]))
|
||||
++i;
|
||||
|
||||
if (i > mCursor)
|
||||
{
|
||||
result = ::atoi (mInput.substr (mCursor, i - mCursor).c_str ());
|
||||
mCursor = i;
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
bool Nibbler::getUntilEOL (std::string& result)
|
||||
{
|
||||
return getUntil ('\n', result);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
bool Nibbler::getUntilEOS (std::string& result)
|
||||
{
|
||||
if (mCursor < mInput.length ())
|
||||
{
|
||||
result = mInput.substr (mCursor, std::string::npos);
|
||||
mCursor = mInput.length ();
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
bool Nibbler::depleted ()
|
||||
{
|
||||
if (mCursor >= mInput.length ())
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
62
src/Nibbler.h
Normal file
62
src/Nibbler.h
Normal file
@@ -0,0 +1,62 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// 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_NIBBLER
|
||||
#define INCLUDED_NIBBLER
|
||||
|
||||
#include <string>
|
||||
|
||||
class Nibbler
|
||||
{
|
||||
public:
|
||||
Nibbler (); // Default constructor
|
||||
Nibbler (const char*); // Constructor
|
||||
Nibbler (const std::string&); // Constructor
|
||||
Nibbler (const Nibbler&); // Copy constructor
|
||||
Nibbler& operator= (const Nibbler&); // Assignment operator
|
||||
~Nibbler (); // Destructor
|
||||
|
||||
bool getUntil (char, std::string&);
|
||||
bool getUntil (const std::string&, std::string&);
|
||||
bool getUntilOneOf (const std::string&, std::string&);
|
||||
bool skipN (const int quantity = 1);
|
||||
bool skip (char);
|
||||
bool skipAll (char);
|
||||
bool skipAllOneOf (const std::string&);
|
||||
bool getQuoted (char, std::string&);
|
||||
bool getInt (int&);
|
||||
bool getUnsignedInt (int&i);
|
||||
bool getUntilEOL (std::string&);
|
||||
bool getUntilEOS (std::string&);
|
||||
bool depleted ();
|
||||
|
||||
private:
|
||||
std::string mInput;
|
||||
std::string::size_type mCursor;
|
||||
};
|
||||
|
||||
#endif
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
74
src/Permission.cpp
Normal file
74
src/Permission.cpp
Normal file
@@ -0,0 +1,74 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// 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 <iostream>
|
||||
#include "Permission.h"
|
||||
#include "Context.h"
|
||||
#include "util.h"
|
||||
#include "i18n.h"
|
||||
|
||||
extern Context context;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Permission::Permission ()
|
||||
: needConfirmation (false)
|
||||
, allConfirmed (false)
|
||||
{
|
||||
// Turning confirmations off is the same as entering "all".
|
||||
if (context.config.get ("confirmation", true) == false)
|
||||
allConfirmed = true;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
bool Permission::confirmed (const Task& task, const std::string& question)
|
||||
{
|
||||
if (!needConfirmation)
|
||||
return true;
|
||||
|
||||
if (allConfirmed)
|
||||
return true;
|
||||
|
||||
std::cout << std::endl
|
||||
<< "Task "
|
||||
<< task.id
|
||||
<< " \""
|
||||
<< task.get ("description")
|
||||
<< "\""
|
||||
<< std::endl;
|
||||
|
||||
int answer = confirm3 (question);
|
||||
if (answer == 2)
|
||||
allConfirmed = true;
|
||||
|
||||
if (answer > 0)
|
||||
return true;
|
||||
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
50
src/Permission.h
Normal file
50
src/Permission.h
Normal file
@@ -0,0 +1,50 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// 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_PERMISSION
|
||||
#define INCLUDED_PERMISSION
|
||||
|
||||
#include <string>
|
||||
#include "Task.h"
|
||||
|
||||
class Permission
|
||||
{
|
||||
public:
|
||||
Permission ();
|
||||
Permission (const Permission&);
|
||||
Permission& operator= (const Permission&);
|
||||
|
||||
void bigChange () { needConfirmation = true; }
|
||||
void bigSequence () { needConfirmation = true; }
|
||||
bool confirmed (const Task&, const std::string&);
|
||||
|
||||
private:
|
||||
bool needConfirmation;
|
||||
bool allConfirmed;
|
||||
};
|
||||
|
||||
#endif
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
183
src/Record.cpp
Normal file
183
src/Record.cpp
Normal file
@@ -0,0 +1,183 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// 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 <iostream>
|
||||
#include <sstream>
|
||||
#include <stdlib.h>
|
||||
#include "util.h"
|
||||
#include "Nibbler.h"
|
||||
#include "Context.h"
|
||||
#include "i18n.h"
|
||||
#include "Record.h"
|
||||
|
||||
extern Context context;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Record::Record ()
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Record::Record (const std::string& input)
|
||||
{
|
||||
parse (input);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Record::~Record ()
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// The format is:
|
||||
//
|
||||
// [ Att::composeF4 ... ] \n
|
||||
//
|
||||
std::string Record::composeF4 () const
|
||||
{
|
||||
std::string ff4 = "[";
|
||||
|
||||
bool first = true;
|
||||
std::map <std::string, Att>::const_iterator it;
|
||||
for (it = this->begin (); it != this->end (); ++it)
|
||||
{
|
||||
if (it->second.value () != "")
|
||||
{
|
||||
ff4 += (first ? "" : " ") + it->second.composeF4 ();
|
||||
first = false;
|
||||
}
|
||||
}
|
||||
|
||||
ff4 += "]\n";
|
||||
return ff4;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// start --> [ --> Att --> ] --> end
|
||||
// ^ |
|
||||
// +-------+
|
||||
//
|
||||
void Record::parse (const std::string& input)
|
||||
{
|
||||
clear ();
|
||||
|
||||
Nibbler n (input);
|
||||
std::string line;
|
||||
if (n.skip ('[') &&
|
||||
n.getUntil (']', line) &&
|
||||
n.skip (']') &&
|
||||
n.depleted ())
|
||||
{
|
||||
if (line.length () == 0)
|
||||
throw context.stringtable.get (RECORD_EMPTY,
|
||||
"Empty record in input");
|
||||
|
||||
Nibbler nl (line);
|
||||
Att a;
|
||||
while (!nl.depleted ())
|
||||
{
|
||||
a.parse (nl);
|
||||
(*this)[a.name ()] = a;
|
||||
nl.skip (' ');
|
||||
}
|
||||
|
||||
std::string remainder;
|
||||
nl.getUntilEOS (remainder);
|
||||
if (remainder.length ())
|
||||
throw context.stringtable.get (RECORD_EXTRA,
|
||||
"Unrecognized characters at end of line");
|
||||
}
|
||||
else
|
||||
throw context.stringtable.get (RECORD_NOT_FF4,
|
||||
"Record not recognized as format 4");
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
bool Record::has (const std::string& name) const
|
||||
{
|
||||
Record::const_iterator i = this->find (name);
|
||||
if (i != this->end ())
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
std::vector <Att> Record::all ()
|
||||
{
|
||||
std::vector <Att> all;
|
||||
foreach (a, (*this))
|
||||
all.push_back (a->second);
|
||||
|
||||
return all;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
const std::string Record::get (const std::string& name) const
|
||||
{
|
||||
Record::const_iterator i = this->find (name);
|
||||
if (i != this->end ())
|
||||
return i->second.value ();
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
int Record::get_int (const std::string& name) const
|
||||
{
|
||||
Record::const_iterator i = this->find (name);
|
||||
if (i != this->end ())
|
||||
return ::atoi (i->second.value ().c_str ());
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void Record::set (const std::string& name, const std::string& value)
|
||||
{
|
||||
(*this)[name] = Att (name, value);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void Record::set (const std::string& name, int value)
|
||||
{
|
||||
std::stringstream svalue;
|
||||
svalue << value;
|
||||
|
||||
(*this)[name] = Att (name, svalue.str ());
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void Record::remove (const std::string& name)
|
||||
{
|
||||
Record::iterator it;
|
||||
if ((it = this->find (name)) != this->end ())
|
||||
this->erase (it);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
56
src/Record.h
Normal file
56
src/Record.h
Normal file
@@ -0,0 +1,56 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// 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_RECORD
|
||||
#define INCLUDED_RECORD
|
||||
|
||||
#include <vector>
|
||||
#include <map>
|
||||
#include <string>
|
||||
#include "Att.h"
|
||||
|
||||
class Record : public std::map <std::string, Att>
|
||||
{
|
||||
public:
|
||||
Record (); // Default constructor
|
||||
Record (const std::string&); // Copy constructor
|
||||
virtual ~Record (); // Destructor
|
||||
|
||||
std::string composeF4 () const;
|
||||
std::string composeCSV () const;
|
||||
void parse (const std::string&);
|
||||
|
||||
bool has (const std::string&) const;
|
||||
std::vector <Att> all ();
|
||||
const std::string get (const std::string&) const;
|
||||
int get_int (const std::string&) const;
|
||||
void set (const std::string&, const std::string&);
|
||||
void set (const std::string&, int);
|
||||
void remove (const std::string&);
|
||||
};
|
||||
|
||||
#endif
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
162
src/Sequence.cpp
Normal file
162
src/Sequence.cpp
Normal file
@@ -0,0 +1,162 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// 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 <map>
|
||||
#include <string>
|
||||
#include <algorithm>
|
||||
#include <ctype.h>
|
||||
#include "util.h"
|
||||
#include "text.h"
|
||||
#include "i18n.h"
|
||||
#include "Context.h"
|
||||
#include "Sequence.h"
|
||||
|
||||
extern Context context;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Sequence::Sequence ()
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Sequence::Sequence (const std::string& input)
|
||||
{
|
||||
parse (input);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Sequence::~Sequence ()
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
bool Sequence::valid (const std::string& input) const
|
||||
{
|
||||
std::vector <std::string> ranges;
|
||||
split (ranges, input, ',');
|
||||
|
||||
std::vector <std::string>::iterator it;
|
||||
for (it = ranges.begin (); it != ranges.end (); ++it)
|
||||
{
|
||||
std::vector <std::string> range;
|
||||
split (range, *it, '-');
|
||||
|
||||
if (range.size () < 1 ||
|
||||
range.size () > 2)
|
||||
return false;
|
||||
|
||||
if (range.size () <= 2 && !validId (range[0]))
|
||||
return false;
|
||||
|
||||
if (range.size () == 2 && !validId (range[1]))
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void Sequence::parse (const std::string& input)
|
||||
{
|
||||
std::vector <std::string> ranges;
|
||||
split (ranges, input, ',');
|
||||
|
||||
std::vector <std::string>::iterator it;
|
||||
for (it = ranges.begin (); it != ranges.end (); ++it)
|
||||
{
|
||||
std::vector <std::string> range;
|
||||
split (range, *it, '-');
|
||||
|
||||
switch (range.size ())
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
if (! validId (range[0]))
|
||||
throw context.stringtable.get (SEQUENCE_BAD_SEQ, "Invalid ID in sequence");
|
||||
|
||||
int id = ::atoi (range[0].c_str ());
|
||||
this->push_back (id);
|
||||
}
|
||||
break;
|
||||
|
||||
case 2:
|
||||
{
|
||||
if (! validId (range[0]) ||
|
||||
! validId (range[1]))
|
||||
throw context.stringtable.get (SEQUENCE_BAD_SEQ, "Invalid ID in range");
|
||||
|
||||
int low = ::atoi (range[0].c_str ());
|
||||
int high = ::atoi (range[1].c_str ());
|
||||
if (low > high)
|
||||
throw context.stringtable.get (SEQUENCE_INVERTED, "Inverted sequence range high-low");
|
||||
|
||||
if (high - low >= SEQUENCE_MAX)
|
||||
throw context.stringtable.get (SEQUENCE_RANGE_MAX, "ID Range too large");
|
||||
|
||||
for (int i = low; i <= high; ++i)
|
||||
this->push_back (i);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
throw context.stringtable.get (SEQUENCE_NOT_A_SEQUENCE, "Not a sequence.");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void Sequence::combine (const Sequence& other)
|
||||
{
|
||||
// Create a map using the sequence elements as keys. This will create a
|
||||
// unique list, with no duplicates.
|
||||
std::map <int, int> both;
|
||||
foreach (i, *this) both[*i] = 0;
|
||||
foreach (i, other) both[*i] = 0;
|
||||
|
||||
// Now make a sequence out of the keys of the map.
|
||||
this->clear ();
|
||||
foreach (i, both)
|
||||
this->push_back (i->first);
|
||||
|
||||
std::sort (this->begin (), this->end ());
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
bool Sequence::validId (const std::string& input) const
|
||||
{
|
||||
if (input.length () == 0)
|
||||
return false;
|
||||
|
||||
for (size_t i = 0; i < input.length (); ++i)
|
||||
if (!isdigit (input[i]))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
51
src/Sequence.h
Normal file
51
src/Sequence.h
Normal file
@@ -0,0 +1,51 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// 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_SEQUENCE
|
||||
#define INCLUDED_SEQUENCE
|
||||
|
||||
#include <vector>
|
||||
#include <string>
|
||||
|
||||
#define SEQUENCE_MAX 1000
|
||||
|
||||
class Sequence : public std::vector <int>
|
||||
{
|
||||
public:
|
||||
Sequence (); // Default constructor
|
||||
Sequence (const std::string&); // Parse
|
||||
~Sequence (); // Destructor
|
||||
|
||||
bool valid (const std::string&) const;
|
||||
void parse (const std::string&);
|
||||
void combine (const Sequence&);
|
||||
|
||||
private:
|
||||
bool validId (const std::string&) const;
|
||||
};
|
||||
|
||||
#endif
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
98
src/StringTable.cpp
Normal file
98
src/StringTable.cpp
Normal file
@@ -0,0 +1,98 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// 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 <sstream>
|
||||
#include <text.h>
|
||||
#include <util.h>
|
||||
#include <stdlib.h>
|
||||
#include "StringTable.h"
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
StringTable::StringTable ()
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
StringTable::~StringTable ()
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// UTF-8 encoding
|
||||
//
|
||||
// 123 This is the string
|
||||
// 124 This is another string
|
||||
// ...
|
||||
void StringTable::load (const std::string& file)
|
||||
{
|
||||
this->clear (); // Allows dynamic reload.
|
||||
|
||||
std::ifstream in;
|
||||
in.open (file.c_str (), std::ifstream::in);
|
||||
if (in.good ())
|
||||
{
|
||||
std::string line;
|
||||
while (getline (in, line))
|
||||
{
|
||||
// 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)
|
||||
{
|
||||
std::string::size_type equal = line.find (" "); // no i18n
|
||||
if (equal != std::string::npos)
|
||||
{
|
||||
int key = ::atoi (trim (line.substr (0, equal), " \t").c_str ()); // no i18n
|
||||
std::string value = trim (line.substr (equal+1, line.length () - equal), " \t"); // no i18n
|
||||
(*this)[key] = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
in.close ();
|
||||
}
|
||||
else
|
||||
throw std::string ("Could not read string file '") + file + "'"; // TODO i18n
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
std::string StringTable::get (int id, const std::string& alternate)
|
||||
{
|
||||
// Return the right string.
|
||||
if (this->find (id) != this->end ())
|
||||
return (*this)[id];
|
||||
|
||||
return alternate;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
47
src/StringTable.h
Normal file
47
src/StringTable.h
Normal file
@@ -0,0 +1,47 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// 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_STRINGTABLE
|
||||
#define INCLUDED_STRINGTABLE
|
||||
|
||||
#include <map>
|
||||
#include <string>
|
||||
|
||||
class StringTable : public std::map <int, std::string>
|
||||
{
|
||||
public:
|
||||
StringTable (); // Default constructor
|
||||
~StringTable (); // Destructor
|
||||
|
||||
StringTable (const StringTable&);
|
||||
StringTable& operator= (const StringTable&);
|
||||
|
||||
void load (const std::string&);
|
||||
std::string get (int, const std::string&);
|
||||
};
|
||||
|
||||
#endif
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
178
src/Subst.cpp
Normal file
178
src/Subst.cpp
Normal file
@@ -0,0 +1,178 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// 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 "Subst.h"
|
||||
#include "Nibbler.h"
|
||||
#include "Context.h"
|
||||
#include "i18n.h"
|
||||
|
||||
extern Context context;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Subst::Subst ()
|
||||
: mFrom ("")
|
||||
, mTo ("")
|
||||
, mGlobal (false)
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Subst::Subst (const std::string& input)
|
||||
{
|
||||
parse (input);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Subst::Subst (const Subst& other)
|
||||
{
|
||||
mFrom = other.mFrom;
|
||||
mTo = other.mTo;
|
||||
mGlobal = other.mGlobal;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Subst& Subst::operator= (const Subst& other)
|
||||
{
|
||||
if (this != &other)
|
||||
{
|
||||
mFrom = other.mFrom;
|
||||
mTo = other.mTo;
|
||||
mGlobal = other.mGlobal;
|
||||
}
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Subst::~Subst ()
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
bool Subst::valid (const std::string& input) const
|
||||
{
|
||||
std::string ignored;
|
||||
Nibbler n (input);
|
||||
if (n.skip ('/') &&
|
||||
n.getUntil ('/', ignored) &&
|
||||
n.skip ('/') &&
|
||||
n.getUntil ('/', ignored) &&
|
||||
n.skip ('/'))
|
||||
{
|
||||
n.skip ('g');
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void Subst::parse (const std::string& input)
|
||||
{
|
||||
Nibbler n (input);
|
||||
if (n.skip ('/') &&
|
||||
n.getUntil ('/', mFrom) &&
|
||||
n.skip ('/') &&
|
||||
n.getUntil ('/', mTo) &&
|
||||
n.skip ('/'))
|
||||
{
|
||||
mGlobal = n.skip ('g');
|
||||
|
||||
if (mFrom == "")
|
||||
throw context.stringtable.get (SUBST_EMPTY,
|
||||
"Cannot substitute an empty string");
|
||||
|
||||
if (!n.depleted ())
|
||||
throw context.stringtable.get (SUBST_BAD_CHARS,
|
||||
"Unrecognized character(s) at end of substitution");
|
||||
}
|
||||
else
|
||||
throw context.stringtable.get (SUBST_MALFORMED,
|
||||
"Malformed substitution");
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void Subst::apply (
|
||||
std::string& description,
|
||||
std::vector <Att>& annotations) const
|
||||
{
|
||||
std::string::size_type pattern;
|
||||
|
||||
if (mFrom != "")
|
||||
{
|
||||
if (mGlobal)
|
||||
{
|
||||
// Perform all subs on description.
|
||||
while ((pattern = description.find (mFrom)) != std::string::npos)
|
||||
description.replace (pattern, mFrom.length (), mTo);
|
||||
|
||||
// Perform all subs on annotations.
|
||||
std::vector <Att>::iterator i;
|
||||
for (i = annotations.begin (); i != annotations.end (); ++i)
|
||||
{
|
||||
std::string description = i->value ();
|
||||
while ((pattern = description.find (mFrom)) != std::string::npos)
|
||||
{
|
||||
description.replace (pattern, mFrom.length (), mTo);
|
||||
i->value (description);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Perform first description substitution.
|
||||
if ((pattern = description.find (mFrom)) != std::string::npos)
|
||||
description.replace (pattern, mFrom.length (), mTo);
|
||||
|
||||
// Failing that, perform the first annotation substitution.
|
||||
else
|
||||
{
|
||||
std::vector <Att>::iterator i;
|
||||
for (i = annotations.begin (); i != annotations.end (); ++i)
|
||||
{
|
||||
std::string description = i->value ();
|
||||
if ((pattern = description.find (mFrom)) != std::string::npos)
|
||||
{
|
||||
description.replace (pattern, mFrom.length (), mTo);
|
||||
i->value (description);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void Subst::clear ()
|
||||
{
|
||||
mFrom = "";
|
||||
mTo = "";
|
||||
mGlobal = false;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
54
src/Subst.h
Normal file
54
src/Subst.h
Normal file
@@ -0,0 +1,54 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// 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_SUBST
|
||||
#define INCLUDED_SUBST
|
||||
|
||||
#include <string>
|
||||
#include "Att.h"
|
||||
|
||||
class Subst
|
||||
{
|
||||
public:
|
||||
Subst (); // Default constructor
|
||||
Subst (const std::string&); // Default constructor
|
||||
Subst (const Subst&); // Copy constructor
|
||||
Subst& operator= (const Subst&); // Assignment operator
|
||||
~Subst (); // Destructor
|
||||
|
||||
bool valid (const std::string&) const;
|
||||
void parse (const std::string&);
|
||||
void apply (std::string&, std::vector <Att>&) const;
|
||||
void clear ();
|
||||
|
||||
public:
|
||||
std::string mFrom;
|
||||
std::string mTo;
|
||||
bool mGlobal;
|
||||
};
|
||||
|
||||
#endif
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
532
src/T.cpp
532
src/T.cpp
@@ -1,532 +0,0 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// task - a command line task list manager.
|
||||
//
|
||||
// Copyright 2006 - 2008, 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 <algorithm>
|
||||
#include "task.h"
|
||||
#include "T.h"
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Default
|
||||
T::T ()
|
||||
{
|
||||
mUUID = uuid ();
|
||||
mStatus = pending;
|
||||
mId = 0;
|
||||
mTags.clear ();
|
||||
mAttributes.clear ();
|
||||
mDescription = "";
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Initialize by parsing storage format
|
||||
T::T (const std::string& line)
|
||||
{
|
||||
parse (line);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
T::T (const T& other)
|
||||
{
|
||||
mStatus = other.mStatus;
|
||||
mUUID = other.mUUID;
|
||||
mId = other.mId;
|
||||
mDescription = other.mDescription;
|
||||
mTags = other.mTags;
|
||||
mRemoveTags = other.mRemoveTags;
|
||||
mAttributes = other.mAttributes;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
T& T::operator= (const T& other)
|
||||
{
|
||||
if (this != &other)
|
||||
{
|
||||
mStatus = other.mStatus;
|
||||
mUUID = other.mUUID;
|
||||
mId = other.mId;
|
||||
mDescription = other.mDescription;
|
||||
mTags = other.mTags;
|
||||
mRemoveTags = other.mRemoveTags;
|
||||
mAttributes = other.mAttributes;
|
||||
}
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
T::~T ()
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
bool T::hasTag (const std::string& tag) const
|
||||
{
|
||||
std::vector <std::string>::const_iterator it = find (mTags.begin (), mTags.end (), tag);
|
||||
if (it != mTags.end ())
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// SPECIAL METHOD - DO NOT REMOVE
|
||||
void T::getRemoveTags (std::vector<std::string>& all)
|
||||
{
|
||||
all = mRemoveTags;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// SPECIAL METHOD - DO NOT REMOVE
|
||||
void T::addRemoveTag (const std::string& tag)
|
||||
{
|
||||
if (tag.find (' ') != std::string::npos)
|
||||
throw std::string ("T::addRemoveTag - tags may not contain spaces");
|
||||
|
||||
mRemoveTags.push_back (tag);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void T::getTags (std::vector<std::string>& all) const
|
||||
{
|
||||
all = mTags;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void T::addTag (const std::string& tag)
|
||||
{
|
||||
if (tag.find (' ') != std::string::npos)
|
||||
throw std::string ("T::addTag - tags may not contain spaces");
|
||||
|
||||
if (tag[0] == '+')
|
||||
{
|
||||
if (! hasTag (tag.substr (1, std::string::npos)))
|
||||
mTags.push_back (tag.substr (1, std::string::npos));
|
||||
}
|
||||
else
|
||||
{
|
||||
if (! hasTag (tag))
|
||||
mTags.push_back (tag);
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void T::addTags (const std::vector <std::string>& tags)
|
||||
{
|
||||
for (size_t i = 0; i < tags.size (); ++i)
|
||||
{
|
||||
if (tags[i].find (' ') != std::string::npos)
|
||||
throw std::string ("T::addTags - tags may not contain spaces");
|
||||
|
||||
if (tags[i][0] == '+')
|
||||
{
|
||||
if (! hasTag (tags[i].substr (1, std::string::npos)))
|
||||
mTags.push_back (tags[i].substr (1, std::string::npos));
|
||||
}
|
||||
else
|
||||
{
|
||||
if (! hasTag (tags[i]))
|
||||
mTags.push_back (tags[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void T::removeTag (const std::string& tag)
|
||||
{
|
||||
std::vector <std::string> copy;
|
||||
for (size_t i = 0; i < mTags.size (); ++i)
|
||||
if (mTags[i] != tag)
|
||||
copy.push_back (mTags[i]);
|
||||
|
||||
mTags = copy;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void T::removeTags ()
|
||||
{
|
||||
mTags.clear ();
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void T::getAttributes (std::map<std::string, std::string>& all)
|
||||
{
|
||||
all = mAttributes;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
const std::string T::getAttribute (const std::string& name)
|
||||
{
|
||||
if (mAttributes.find (name) != mAttributes.end ())
|
||||
return mAttributes[name];
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void T::setAttribute (const std::string& name, const std::string& value)
|
||||
{
|
||||
if (name.find (' ') != std::string::npos)
|
||||
throw std::string ("An attribute name may not contain spaces");
|
||||
|
||||
if (value.find (' ') != std::string::npos)
|
||||
throw std::string ("An attribute value may not contain spaces");
|
||||
|
||||
mAttributes[name] = value;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void T::setAttributes (const std::map <std::string, std::string>& attributes)
|
||||
{
|
||||
foreach (i, attributes)
|
||||
{
|
||||
if (i->first.find (' ') != std::string::npos)
|
||||
throw std::string ("An attribute name may not contain spaces");
|
||||
|
||||
if (i->second.find (' ') != std::string::npos)
|
||||
throw std::string ("An attribute value may not contain spaces");
|
||||
|
||||
mAttributes[i->first] = i->second;
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void T::removeAttributes ()
|
||||
{
|
||||
mAttributes.clear ();
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void T::removeAttribute (const std::string& name)
|
||||
{
|
||||
std::map <std::string, std::string> copy = mAttributes;
|
||||
mAttributes.clear ();
|
||||
foreach (i, copy)
|
||||
if (i->first != name)
|
||||
mAttributes[i->first] = i->second;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void T::getSubstitution (std::string& from, std::string& to) const
|
||||
{
|
||||
from = mFrom;
|
||||
to = mTo;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void T::setSubstitution (const std::string& from, const std::string& to)
|
||||
{
|
||||
mFrom = from;
|
||||
mTo = to;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// uuid status [tags] [attributes] description
|
||||
//
|
||||
// uuid \x{8}-\x{4}-\x{4}-\x{4}-\x{12}
|
||||
// status - O X
|
||||
// tags \w+ \s ...
|
||||
// attributes \w+:\w+ \s ...
|
||||
// description .+
|
||||
//
|
||||
const std::string T::compose () const
|
||||
{
|
||||
// UUID
|
||||
std::string line = mUUID + ' ';
|
||||
|
||||
// Status
|
||||
if (mStatus == pending) line += "- [";
|
||||
else if (mStatus == completed) line += "+ [";
|
||||
else if (mStatus == deleted) line += "X [";
|
||||
|
||||
// Tags
|
||||
for (size_t i = 0; i < mTags.size (); ++i)
|
||||
{
|
||||
line += (i > 0 ? " " : "");
|
||||
line += mTags[i];
|
||||
}
|
||||
|
||||
line += "] [";
|
||||
|
||||
// Attributes
|
||||
int count = 0;
|
||||
foreach (i, mAttributes)
|
||||
{
|
||||
std::string converted = i->second;
|
||||
|
||||
// Date attributes may need conversion to epoch.
|
||||
if (i->first == "due" ||
|
||||
i->first == "start" ||
|
||||
i->first == "entry" ||
|
||||
i->first == "end")
|
||||
{
|
||||
if (i->second.find ("/") != std::string::npos)
|
||||
validDate (converted);
|
||||
}
|
||||
|
||||
line += (count > 0 ? " " : "");
|
||||
line += i->first + ":" + converted;
|
||||
|
||||
++count;
|
||||
}
|
||||
|
||||
line += "] ";
|
||||
|
||||
// Description
|
||||
line += mDescription;
|
||||
line += "\n";
|
||||
|
||||
if (line.length () > T_LINE_MAX)
|
||||
throw std::string ("Line too long");
|
||||
|
||||
return line;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
const std::string T::composeCSV ()
|
||||
{
|
||||
// UUID
|
||||
std::string line = "'" + mUUID + "',";
|
||||
|
||||
// Status
|
||||
if (mStatus == pending) line += "'pending',";
|
||||
else if (mStatus == completed) line += "'completed',";
|
||||
else if (mStatus == deleted) line += "'deleted',";
|
||||
|
||||
// Tags
|
||||
line += "'";
|
||||
for (size_t i = 0; i < mTags.size (); ++i)
|
||||
{
|
||||
line += (i > 0 ? " " : "");
|
||||
line += mTags[i];
|
||||
}
|
||||
|
||||
line += "',";
|
||||
std::string value = mAttributes["entry"];
|
||||
line += value + ",";
|
||||
|
||||
value = mAttributes["start"];
|
||||
if (value != "")
|
||||
line += value;
|
||||
line += ",";
|
||||
|
||||
value = mAttributes["due"];
|
||||
if (value != "")
|
||||
line += value;
|
||||
line += ",";
|
||||
|
||||
value = mAttributes["end"];
|
||||
if (value != "")
|
||||
line += value;
|
||||
line += ",";
|
||||
|
||||
value = mAttributes["project"];
|
||||
if (value != "")
|
||||
line += "'" + value + "'";
|
||||
line += ",";
|
||||
|
||||
value = mAttributes["priority"];
|
||||
if (value != "")
|
||||
line += "'" + value + "'";
|
||||
line += ",";
|
||||
|
||||
value = mAttributes["fg"];
|
||||
if (value != "")
|
||||
line += "'" + value + "'";
|
||||
line += ",";
|
||||
|
||||
value = mAttributes["bg"];
|
||||
if (value != "")
|
||||
line += "'" + value + "'";
|
||||
line += ",";
|
||||
|
||||
line += "'" + mDescription + "'\n";
|
||||
|
||||
return line;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Read all file formats, write only the latest.
|
||||
void T::parse (const std::string& line)
|
||||
{
|
||||
switch (determineVersion (line))
|
||||
{
|
||||
// File format version 1, from 2006.11.27 - 2007.12.31
|
||||
case 1:
|
||||
{
|
||||
// Generate a UUID for forward support.
|
||||
mUUID = uuid ();
|
||||
|
||||
if (line.length () > 6) // ^\[\]\s\[\]\n
|
||||
{
|
||||
if (line[0] == 'X')
|
||||
setStatus (deleted);
|
||||
|
||||
size_t openTagBracket = line.find ("[");
|
||||
size_t closeTagBracket = line.find ("]", openTagBracket);
|
||||
if (openTagBracket != std::string::npos &&
|
||||
closeTagBracket != std::string::npos)
|
||||
{
|
||||
size_t openAttrBracket = line.find ("[", closeTagBracket);
|
||||
size_t closeAttrBracket = line.find ("]", openAttrBracket);
|
||||
if (openAttrBracket != std::string::npos &&
|
||||
closeAttrBracket != std::string::npos)
|
||||
{
|
||||
std::string tags = line.substr (
|
||||
openTagBracket + 1, closeTagBracket - openTagBracket - 1);
|
||||
std::vector <std::string> rawTags;
|
||||
split (mTags, tags, ' ');
|
||||
|
||||
std::string attributes = line.substr (
|
||||
openAttrBracket + 1, closeAttrBracket - openAttrBracket - 1);
|
||||
std::vector <std::string> pairs;
|
||||
split (pairs, attributes, ' ');
|
||||
for (size_t i = 0; i < pairs.size (); ++i)
|
||||
{
|
||||
std::vector <std::string> pair;
|
||||
split (pair, pairs[i], ':');
|
||||
if (pair[1] != "")
|
||||
mAttributes[pair[0]] = pair[1];
|
||||
}
|
||||
|
||||
mDescription = line.substr (closeAttrBracket + 2, std::string::npos);
|
||||
}
|
||||
else
|
||||
throw std::string ("Missing attribute brackets");
|
||||
}
|
||||
else
|
||||
throw std::string ("Missing tag brackets");
|
||||
}
|
||||
else
|
||||
throw std::string ("Line too short");
|
||||
}
|
||||
break;
|
||||
|
||||
// File format version 2, from 2008.1.1
|
||||
case 2:
|
||||
{
|
||||
if (line.length () > 46) // ^.{36} . \[\] \[\] \n
|
||||
{
|
||||
mUUID = line.substr (0, 36);
|
||||
|
||||
mStatus = line[37] == '+' ? completed
|
||||
: line[37] == 'X' ? deleted
|
||||
: pending;
|
||||
|
||||
size_t openTagBracket = line.find ("[");
|
||||
size_t closeTagBracket = line.find ("]", openTagBracket);
|
||||
if (openTagBracket != std::string::npos &&
|
||||
closeTagBracket != std::string::npos)
|
||||
{
|
||||
size_t openAttrBracket = line.find ("[", closeTagBracket);
|
||||
size_t closeAttrBracket = line.find ("]", openAttrBracket);
|
||||
if (openAttrBracket != std::string::npos &&
|
||||
closeAttrBracket != std::string::npos)
|
||||
{
|
||||
std::string tags = line.substr (
|
||||
openTagBracket + 1, closeTagBracket - openTagBracket - 1);
|
||||
std::vector <std::string> rawTags;
|
||||
split (mTags, tags, ' ');
|
||||
|
||||
std::string attributes = line.substr (
|
||||
openAttrBracket + 1, closeAttrBracket - openAttrBracket - 1);
|
||||
std::vector <std::string> pairs;
|
||||
split (pairs, attributes, ' ');
|
||||
for (size_t i = 0; i < pairs.size (); ++i)
|
||||
{
|
||||
std::vector <std::string> pair;
|
||||
split (pair, pairs[i], ':');
|
||||
if (pair[1] != "")
|
||||
mAttributes[pair[0]] = pair[1];
|
||||
}
|
||||
|
||||
mDescription = line.substr (closeAttrBracket + 2, std::string::npos);
|
||||
}
|
||||
else
|
||||
throw std::string ("Missing attribute brackets");
|
||||
}
|
||||
else
|
||||
throw std::string ("Missing tag brackets");
|
||||
}
|
||||
else
|
||||
throw std::string ("Line too short");
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
throw std::string ();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// If this code is inaccurate, data corruption ensues.
|
||||
int T::determineVersion (const std::string& line)
|
||||
{
|
||||
// Version 1 looks like:
|
||||
//
|
||||
// [tags] [attributes] description\n
|
||||
// X [tags] [attributes] description\n
|
||||
//
|
||||
// Scan for the first character being either the bracket or X.
|
||||
if (line[0] == '[' ||
|
||||
line[0] == 'X')
|
||||
return 1;
|
||||
|
||||
// Version 2 looks like:
|
||||
//
|
||||
// uuid status [tags] [attributes] description\n
|
||||
//
|
||||
// Where uuid looks like:
|
||||
//
|
||||
// 27755d92-c5e9-4c21-bd8e-c3dd9e6d3cf7
|
||||
//
|
||||
// Scan for the hyphens in the uuid, the following space, and a valid status
|
||||
// character.
|
||||
if (line[8] == '-' &&
|
||||
line[13] == '-' &&
|
||||
line[18] == '-' &&
|
||||
line[23] == '-' &&
|
||||
line[36] == ' ' &&
|
||||
(line[37] == '-' || line[37] == '+' || line[37] == 'X'))
|
||||
return 2;
|
||||
|
||||
// Version 3?
|
||||
//
|
||||
// Fortunately, with the hindsight that will come with version 3, the
|
||||
// identifying characteristics of 1 and 2 may be modified such that if 3 has
|
||||
// a UUID followed by a status, then there is still a way to differentiate
|
||||
// between 2 and 3.
|
||||
//
|
||||
// The danger is that a version 2 binary reads and misinterprets a version 3
|
||||
// file. This is why it is a good idea to rely on an explicit version
|
||||
// declaration rather than chance positioning.
|
||||
|
||||
// Zero means 'no idea'.
|
||||
return 0;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
101
src/T.h
101
src/T.h
@@ -1,101 +0,0 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// task - a command line task list manager.
|
||||
//
|
||||
// Copyright 2006 - 2008, 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_T
|
||||
#define INCLUDED_T
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <map>
|
||||
|
||||
// Length of longest line.
|
||||
#define T_LINE_MAX 8192
|
||||
|
||||
class T
|
||||
{
|
||||
public:
|
||||
enum status {pending, completed, deleted};
|
||||
|
||||
T (); // Default constructor
|
||||
T (const std::string&); // Initialize by parsing storage format
|
||||
T (const T&); // Copy constructor
|
||||
T& operator= (const T&); // Assignment operator
|
||||
~T (); // Destructor
|
||||
|
||||
std::string getUUID () const { return mUUID; }
|
||||
void setUUID (const std::string& uuid) { mUUID = uuid; }
|
||||
|
||||
int getId () const { return mId; }
|
||||
void setId (int id) { mId = id; }
|
||||
|
||||
status getStatus () const { return mStatus; }
|
||||
void setStatus (status s) { mStatus = s; }
|
||||
|
||||
const std::string getDescription () const { return mDescription; }
|
||||
void setDescription (const std::string& description) { mDescription = description; }
|
||||
|
||||
void getSubstitution (std::string&, std::string&) const;
|
||||
void setSubstitution (const std::string&, const std::string&);
|
||||
|
||||
bool hasTag (const std::string&) const;
|
||||
|
||||
void getRemoveTags (std::vector<std::string>&); // SPECIAL
|
||||
void addRemoveTag (const std::string&); // SPECIAL
|
||||
|
||||
void getTags (std::vector<std::string>&) const;
|
||||
void addTag (const std::string&);
|
||||
void addTags (const std::vector <std::string>&);
|
||||
void removeTag (const std::string&);
|
||||
void removeTags ();
|
||||
void getAttributes (std::map<std::string, std::string>&);
|
||||
const std::string getAttribute (const std::string&);
|
||||
void setAttribute (const std::string&, const std::string&);
|
||||
void setAttributes (const std::map <std::string, std::string>&);
|
||||
void removeAttribute (const std::string&);
|
||||
void removeAttributes ();
|
||||
|
||||
const std::string compose () const;
|
||||
const std::string composeCSV ();
|
||||
void parse (const std::string&);
|
||||
|
||||
private:
|
||||
int determineVersion (const std::string&);
|
||||
|
||||
private:
|
||||
status mStatus;
|
||||
std::string mUUID;
|
||||
int mId;
|
||||
std::string mDescription;
|
||||
std::vector<std::string> mTags;
|
||||
std::vector<std::string> mRemoveTags;
|
||||
std::map<std::string, std::string> mAttributes;
|
||||
|
||||
std::string mFrom;
|
||||
std::string mTo;
|
||||
};
|
||||
|
||||
#endif
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
1110
src/TDB.cpp
1110
src/TDB.cpp
File diff suppressed because it is too large
Load Diff
68
src/TDB.h
68
src/TDB.h
@@ -1,7 +1,7 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// task - a command line task list manager.
|
||||
//
|
||||
// Copyright 2006 - 2008, Paul Beckingham.
|
||||
// Copyright 2006 - 2009, Paul Beckingham.
|
||||
// All rights reserved.
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify it under
|
||||
@@ -27,41 +27,59 @@
|
||||
#ifndef INCLUDED_TDB
|
||||
#define INCLUDED_TDB
|
||||
|
||||
#include <map>
|
||||
#include <vector>
|
||||
#include <string>
|
||||
#include "T.h"
|
||||
#include "Location.h"
|
||||
#include "Filter.h"
|
||||
#include "Task.h"
|
||||
|
||||
// Length of longest line.
|
||||
#define T_LINE_MAX 32768
|
||||
|
||||
class TDB
|
||||
{
|
||||
public:
|
||||
TDB ();
|
||||
~TDB ();
|
||||
TDB (); // Default constructor
|
||||
~TDB (); // Destructor
|
||||
|
||||
void dataDirectory (const std::string&);
|
||||
bool allT (std::vector <T>&) const;
|
||||
bool pendingT (std::vector <T>&) const;
|
||||
bool allPendingT (std::vector <T>&) const;
|
||||
bool completedT (std::vector <T>&) const;
|
||||
bool allCompletedT (std::vector <T>&) const;
|
||||
bool deleteT (const T&) const;
|
||||
bool completeT (const T&) const;
|
||||
bool addT (const T&) const;
|
||||
bool modifyT (const T&) const;
|
||||
bool logRead (std::vector <std::string>&) const;
|
||||
bool logCommand (int, char**) const;
|
||||
int gc () const;
|
||||
TDB (const TDB&);
|
||||
TDB& operator= (const TDB&);
|
||||
|
||||
void clear ();
|
||||
void location (const std::string&);
|
||||
|
||||
void lock (bool lockFile = true);
|
||||
void unlock ();
|
||||
|
||||
int load (std::vector <Task>&, Filter&);
|
||||
int loadPending (std::vector <Task>&, Filter&);
|
||||
int loadCompleted (std::vector <Task>&, Filter&);
|
||||
|
||||
void add (const Task&); // Single task add to pending
|
||||
void update (const Task&); // Single task update to pending
|
||||
int commit (); // Write out all tasks
|
||||
int gc (); // Clean up pending
|
||||
int nextId ();
|
||||
void undo ();
|
||||
|
||||
private:
|
||||
bool lock (FILE*) const;
|
||||
bool overwritePending (std::vector <T>&) const;
|
||||
bool writePending (const T&) const;
|
||||
bool writeCompleted (const T&) const;
|
||||
bool readLockedFile (const std::string&, std::vector <std::string>&) const;
|
||||
FILE* openAndLock (const std::string&);
|
||||
void writeUndo (const Task&, FILE*);
|
||||
void writeUndo (const Task&, const Task&, FILE*);
|
||||
|
||||
private:
|
||||
std::string mPendingFile;
|
||||
std::string mCompletedFile;
|
||||
std::string mLogFile;
|
||||
std::vector <Location> mLocations;
|
||||
bool mLock;
|
||||
bool mAllOpenAndLocked;
|
||||
int mId;
|
||||
|
||||
std::vector <Task> mPending; // Contents of pending.data
|
||||
|
||||
std::vector <Task> mNew; // Uncommitted new tasks
|
||||
std::vector <Task> mModified; // Uncommitted modified tasks
|
||||
|
||||
// TODO Need cache of raw file contents to preserve comments.
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user