Compare commits

...

132 Commits

Author SHA1 Message Date
Paul Beckingham
8639e92606 - Updated release date for 1.4.3. 2008-11-11 08:53:59 -05:00
Paul Beckingham
6e1dbfb16e - Now handles the configuration variable recognition of the
new custom report variables.
2008-11-10 09:53:49 -05:00
Paul Beckingham
748300631a - Now parses the command line and can distinguish regular commands, as well as
custom reports.
2008-11-09 22:46:12 -05:00
Paul Beckingham
6d5309527c - Enabled "configure --enable-debug" to suppress optimization, therefore
allowing debugging without the debugger showing the unoptimized source
  while stepping through optimized code.
2008-11-09 01:42:30 -05:00
Paul Beckingham
aafcba436e - Clarified old statements in ChangeLog.
- Removed now obsolete ideas.txt file.
2008-11-09 00:17:45 -05:00
Paul Beckingham
28ceeac796 - Beginnings of the "task list pri:!H" inverse filtering capability.
Doesn't work, and is commented out for now.  Need a better approach
  because of the priority attribute validation of "!H" failing, and the
  Unix shell interpreting "!", thus requiring an escape, which makes the
  command ("task list pri:\!H") ugly.
2008-11-08 23:48:19 -05:00
Paul Beckingham
ecdfb31553 - "task version" command now reports unrecognized configuration variables,
which may be spelling mistakes or deprecated variables.
2008-11-08 23:32:29 -05:00
Paul Beckingham
8d920f9dc4 - Updated documentation to reflect removal of the "showage" configuration variable. 2008-11-08 22:45:27 -05:00
Paul Beckingham
5f85550664 - Removed support for the "showage" configuration variable. 2008-11-08 22:43:40 -05:00
Paul Beckingham
ee961daef6 Merge branch 'master' into 1.5.0
Conflicts:
	ChangeLog
	NEWS
	configure.ac
	html/task.html
	src/task.cpp
	src/task.h
2008-11-02 22:29:38 -05:00
Paul Beckingham
ce42ae9622 Merge branch '1.4.3' of git@github.com:pbeckingham/task into 1.4.3
Conflicts:
	ChangeLog
	html/task.html
	src/task.cpp
2008-11-02 21:50:55 -05:00
Paul Beckingham
47ffc0babc - Deleted old test file. 2008-11-02 21:43:10 -05:00
Paul Beckingham
612a183776 - Major documentation update
- New filter page
- New shadow file page
2008-11-02 21:23:34 -05:00
Paul Beckingham
396d85cd53 - Removed "usage" command. 2008-11-01 16:48:28 -04:00
Paul Beckingham
038f432752 - ChangeLog update 2008-11-01 16:38:55 -04:00
Paul Beckingham
ef886dff53 Merge branch '1.4.3' 2008-11-01 16:32:08 -04:00
Paul Beckingham
2cae1df42f - Merged 1.4.3 to master 2008-11-01 16:31:30 -04:00
Paul Beckingham
82c0fea708 - Remove debugging code. 2008-11-01 16:14:15 -04:00
Paul Beckingham
d6b30466c1 - "task ghistory" now displays a differently aligned graph, allowing
easier comparison by month of tasks added versus completed and deleted.
2008-11-01 15:44:25 -04:00
Paul Beckingham
b0e18de1b6 - Fixed bug where the onChangeCallback was being called twice for "task list" after "task do xx". 2008-10-25 02:09:31 -04:00
Paul Beckingham
b7e889339d - Added support for shadow.notify to indicate when the shadow file is updated
- Fixed description validation bug that allowed \n, \r and \f in a description, then rendered the pending.data file unparseable
2008-10-25 02:03:21 -04:00
Paul Beckingham
2a5736b876 - TDB::gc now only calls overwritePending when something changed.
- Removed TDB::gc calls from report.cpp.
- Made TDB::gc calls from task.cpp whenever necessary.
- Disabled TDB::gc calls when running a report for the sake of the shadow file.
- Shadow file overwrite now implemented using ostream, instead of cout.rdbuf trickery, for the well-being of cygwin.
2008-10-24 23:15:52 -04:00
Paul Beckingham
b176591261 - Converted reports/command to return strings 2008-10-23 00:44:21 -04:00
Paul Beckingham
c44baf913d Merge branch '1.5.0' of git@github.com:pbeckingham/task into 1.5.0
Conflicts:
	html/task.html
	src/task.cpp
2008-10-19 11:50:14 -04:00
Paul Beckingham
0987171280 - Added support for "task stop <id>" command, that removes the start time from a task.
- Updated documentation accordingly.
2008-10-19 11:47:03 -04:00
Paul Beckingham
47c02965e9 Merge branch '1.4.3' into 1.5.0
Conflicts:
	NEWS
	TUTORIAL
	configure.ac
	html/advanced.html
	html/task.html
	html/versions.html
	src/task.cpp
2008-10-18 18:19:47 -04:00
Paul Beckingham
ce561a6c43 - Instrumented version for shadow file testing. 2008-10-15 10:16:46 -04:00
Paul Beckingham
b4b389c27e - Added checks to ensure that a shadow.file value doesn't collide with either the pending.data or completed.data files. 2008-10-09 21:24:12 -04:00
Paul Beckingham
437c85da39 Merge branch '1.4.3' into 1.5.0
Conflicts:
	NEWS
	TUTORIAL
	configure.ac
	html/advanced.html
	html/task.html
	html/versions.html
	src/task.cpp
2008-10-09 21:03:29 -04:00
Paul Beckingham
62115ea988 - Removed version number from HTML titles.
- New filter.html doc.
- New shadow.html doc.
2008-10-09 18:43:13 -04:00
Paul Beckingham
3ed1269753 - Added support for plain text shadow files. 2008-10-09 18:24:35 -04:00
Paul Beckingham
a5ec1e4b27 - Added support for shadow file, shadow file command
- Added support for TDB::onChange callback
2008-10-09 17:19:57 -04:00
Paul Beckingham
a815492111 - New links page referring to task links on the web. 2008-09-26 22:30:42 -04:00
Paul Beckingham
f3aa88cf83 Merge branch 'master' into 1.5.0 2008-09-26 22:27:03 -04:00
Paul Beckingham
f26a9c67be - Built 1.4.2 and packaged it as a Mac OS X Leopard Intel binary
- Modified incorrect Debian packages in versions.html
- Added Debian and Mac packages to task.html
2008-09-26 22:25:38 -04:00
Paul Beckingham
d837a25be7 - Removed support for the "command.logging" configuration variable and
the "task usage" command.
2008-09-20 20:46:20 -04:00
Paul Beckingham
78fae5195b - Converted 1.4.2 references to 1.5.0. 2008-09-20 20:24:58 -04:00
Paul Beckingham
e7304e86ce - Forgot to bump version number in page title. 2008-09-19 13:38:44 -04:00
Paul Beckingham
d7b95cb2e1 - Removed Mac binary package references. 2008-09-18 21:37:00 -04:00
Paul Beckingham
45ed7dcdaa - Updated release date. 2008-09-18 21:03:07 -04:00
Paul Beckingham
d809b6dae7 - Added most recent change to ChangeLog. 2008-09-13 23:40:09 -04:00
Paul Beckingham
a1cc4e5774 - Task supports modifying the existing description of a task, with the
following syntax: task <id> "new description ...".
2008-09-13 23:33:53 -04:00
Paul Beckingham
21c33f7030 - Improved "version" command. 2008-09-13 13:07:57 -04:00
Paul Beckingham
2e32457032 Merge branch '1.4.2' 2008-09-12 16:47:47 -04:00
Paul Beckingham
e4ed873d60 Merge branch 'master' of git@github.com:pbeckingham/task 2008-09-12 16:47:01 -04:00
Paul Beckingham
e35dcd0e42 - Minor doc edit. 2008-09-12 16:46:22 -04:00
Paul Beckingham
ec15dc9342 - Added "#include <string.h>" to task.cpp to ensure clean build under GCC 4.3 2008-09-12 16:22:51 -04:00
Paul Beckingham
fb87039d8c - 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.
2008-09-12 16:07:50 -04:00
Paul Beckingham
e9a71b7db9 - Fixed bug where relative dates in filters (task list due:eom,
task list due:tomorrow, task list due:23rd ...) are now properly supported.
2008-09-12 15:25:38 -04:00
Paul Beckingham
df215f228d - Task supports improved word-wrapping to the terminal width. 2008-09-12 12:48:53 -04:00
Paul Beckingham
4f8f044644 - 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).
2008-09-12 12:14:26 -04:00
Paul Beckingham
4380c7c712 - Task now allows mixed case attributes names (pri:, PRI:, Pri: ...) and
commands (add, ADD, Ad ...) (thanks to Vincent Fleuranceau)
2008-09-12 11:40:46 -04:00
Paul Beckingham
4abc722eff - Task now uses dashes (-----) to underline column headings when color is
disabled (thanks for Vincent Fleuranceau).
2008-09-12 11:27:25 -04:00
Paul Beckingham
11225eb599 - Applied patch from Andy Lester to correct Table sorting to use the entire
string instead of just the initial characters.
2008-09-12 10:28:14 -04:00
Paul Beckingham
e16bd057d8 Merge branch 'master' into 1.4.2 2008-08-26 09:58:42 -04:00
Paul Beckingham
29a152edb0 - Migrated 1.5.0 changes thus far into 1.4.2. 2008-08-26 09:57:46 -04:00
Paul Beckingham
e99e6832f2 - Added Debian package for 1.4.1 to docs. 2008-07-23 22:41:25 -04:00
Paul Beckingham
ff4e8dbef1 Merge branch 'master' of git@github.com:pbeckingham/task 2008-07-20 22:26:38 -04:00
Paul Beckingham
d265ac6c2d - Implemented "task undo" to counteract "task do". 2008-07-19 22:12:01 -04:00
Paul Beckingham
dc1760769f - Bumped version number to 1.5.0 2008-07-19 14:56:36 -04:00
Paul Beckingham
c6eb09cd63 - SK reports that task builds fine under Feisty Fawn 2008-07-19 14:48:46 -04:00
Paul Beckingham
e080c3168c - Package Manager file. 2008-07-18 01:56:17 -04:00
Paul Beckingham
ea06565007 - Final 1.4.1 touches. 2008-07-18 01:53:54 -04:00
Paul Beckingham
4ae189f77d - Removed TUTORIAL references in README 2008-07-17 00:37:15 -04:00
Paul Beckingham
ebf4f3cb12 - Updated ChangeLog, task.html
- Removed contents of TUTORIAL file
2008-07-16 23:51:43 -04:00
Paul Beckingham
4d1cdf0270 - For "task calendar", the month names are now centered over the month. 2008-07-16 23:42:02 -04:00
Paul Beckingham
ceffdca8a2 Merge branches '1.4.1' and '1.4.1' of imac.local:task 2008-07-13 18:06:34 -04:00
Paul Beckingham
bb7f48496a - Bumberd version number to 1.4.1 2008-07-13 13:25:35 -04:00
Paul Beckingham
da7cda3c82 Merge branch 'master' into 1.4.1 2008-07-13 10:55:38 -04:00
Paul Beckingham
31a5816fb4 - Added link to task_1.4.0-1_i386.deb from Richard Querin. 2008-07-13 10:54:42 -04:00
Paul Beckingham
a443257aaa - Fixed bug whereby descriptions could not be altered. 2008-07-11 15:19:59 -04:00
Paul Beckingham
60b7d15a1d - Fixed bug on Ubuntu whereby it wants std::string::size_type rather than unsigned int. 2008-07-11 02:05:02 -04:00
Paul Beckingham
2b646b3fa0 - Documentation update for 1.4.0 2008-07-11 01:28:35 -04:00
Paul Beckingham
86f5294436 - Fixed bug where dateformat=m/d/Y was not parsing "07/08/2008", which is technically "M/D/Y", but, come on, let's be nice.
- Altered (deprecated) TUTORIAL introductory disclaimer.
2008-07-10 01:46:08 -04:00
Paul Beckingham
fe03f91744 - Documentation reorganization - not yet complete 2008-07-10 01:23:05 -04:00
Paul Beckingham
9fcd5b1801 - Allows colons in the description, provided they are not preceded by a valid attribute name. 2008-07-10 00:16:35 -04:00
Paul Beckingham
2380c8b33a - Added new, stubbed, T::validate method for full T validation, one day. 2008-07-09 23:57:31 -04:00
Paul Beckingham
849cb65b0e - Added URL to usage, version. 2008-07-09 23:26:33 -04:00
Paul Beckingham
84d0dce20c - Updated docs with latest change. 2008-07-09 23:00:49 -04:00
Paul Beckingham
2150642f9d - Properly expands ~ characters in data.location 2008-07-09 22:56:39 -04:00
Paul Beckingham
ec8da0baaa - Updated docs, announced deprecation of TUTORIAL. 2008-07-09 03:39:29 -04:00
Paul Beckingham
cf27fa027b Merge branch 'recurrence' into 1.4.0 2008-07-09 03:29:14 -04:00
Paul Beckingham
01314c753b - Added duration.t 2008-07-09 03:28:53 -04:00
Paul Beckingham
6f7b9b7d42 - Recurring tasks! 2008-07-09 03:26:44 -04:00
Paul Beckingham
46ded4c026 Merge branch 'master' into recurrence
Conflicts:

	src/task.cpp
2008-07-08 01:48:41 -04:00
Paul Beckingham
95752390de Merge branch 'master' of git@github.com:pbeckingham/task 2008-07-08 01:46:47 -04:00
Paul Beckingham
ba342eeeb6 - Recurring faintly working without (the very necessary) mask attribute 2008-07-08 01:40:07 -04:00
Paul Beckingham
0e611eda19 - Disabled undelete for deleted recurring tasks, because it is too difficult to know what to restore. 2008-07-06 17:02:10 -04:00
Paul Beckingham
17152d8a46 - Renamed checkRecurring -> handleRecurrence 2008-07-06 03:04:54 -04:00
Paul Beckingham
947e65c1e2 - Inserted recurring task checks at appropriate points. 2008-07-06 02:47:29 -04:00
Paul Beckingham
b1aaab0a8e - "task stats" now supports recurring tasks. 2008-07-06 02:03:39 -04:00
Paul Beckingham
1712ad2cde - "task delete" now properly supports recurring tasks. 2008-07-06 02:01:51 -04:00
Paul Beckingham
79f6ef075e - Supports ::isatty call to shut off color, ncurses when stdout is not to a tty 2008-07-06 01:48:48 -04:00
Paul Beckingham
97b120de67 - Doc snapshot 2008-07-06 01:05:28 -04:00
Paul Beckingham
2181041c8c - Filtering now on all reports. 2008-07-06 01:04:27 -04:00
Paul Beckingham
e85d36cea0 - Fixed bug whereby adding a new task with "task add asdfsd pri:" resulted in gibberish values in the priority field. 2008-07-05 16:49:41 -04:00
Paul Beckingham
188b9f36f2 - Doc snapshot 2008-07-05 02:13:45 -04:00
Paul Beckingham
6c7ad2b398 - Added error checking for "recur" without "due"
- Added error checking for "until" without "recur"
- Added status setting for "task add" regarding T::recurring
2008-07-05 02:02:10 -04:00
Paul Beckingham
72c7afe1a1 - Fixed relative day tests. 2008-07-05 01:22:22 -04:00
Paul Beckingham
ef7ff55535 - Supports durations like weekly, semiannual, daily ... 2008-07-04 19:57:21 -04:00
Paul Beckingham
0d3a93ea20 - Added support for ordinal relative dates, like "23rd". 2008-07-04 18:06:44 -04:00
Paul Beckingham
42d164863a - Removed transient .deps files. 2008-07-04 17:25:36 -04:00
Paul Beckingham
06d595d944 - Date class now supports relative dates for construction (tomorrow, friday, eoy ...)
- Added unit tests for Date enhancements
- Added unit tests for duration recognition
- Task parsing now supports due: using relative dates
- Task parsing now supports recur: and until: attributes
- Task parsing now support private attributes base: and range:
2008-07-04 17:18:01 -04:00
Paul Beckingham
2d66324cb2 - Added " ago" to the info report task age. 2008-06-29 15:05:46 -04:00
Paul Beckingham
00b7a5f1b4 - Zero values no longer generate a 1-char bar in "task ghistory" 2008-06-27 18:05:02 -04:00
Paul Beckingham
d199bada33 - Removed configure. 2008-06-27 00:32:56 -04:00
Paul Beckingham
647cbab3f4 - T object support status "r" 2008-06-27 00:24:39 -04:00
Paul Beckingham
6066cc3bab - Implemented "task ghistory" command to draw a bar chart. 2008-06-27 00:15:06 -04:00
Paul Beckingham
5c91a0d963 Merge branch 'master' of git@github.com:pbeckingham/task into 1.4.0
Conflicts:

	ideas.txt
2008-06-26 23:13:49 -04:00
Paul Beckingham
1ef7b0c43a - Now allows rc:<file> override of ~/.taskrc file. 2008-06-25 01:29:42 -04:00
Paul Beckingham
be6136c1e9 - Improved the ideas details 2008-06-24 02:02:02 -04:00
Paul Beckingham
5d158d752d - Fixed bug whereby table headers were underlined when color is turned off. 2008-06-24 01:37:18 -04:00
Paul Beckingham
2d21558a5a Merge branch 'master' into 1.4.0 2008-06-24 01:23:30 -04:00
Paul Beckingham
0034534803 - Properly skips all escape sequences if no fg and bg colors are specified. 2008-06-24 01:21:40 -04:00
Paul Beckingham
3f21a0fe4d - Updated ideas with recurrence design 2008-06-22 01:33:17 -04:00
Paul Beckingham
cc9235033f - Added averages to the "task history" report. 2008-06-22 01:04:33 -04:00
Paul Beckingham
f61c849816 - Updated grammar to include new undelete command. 2008-06-22 00:37:20 -04:00
Paul Beckingham
195b5a5e0a - Implemented "task undelete" for non-GCed deleted tasks. 2008-06-22 00:32:59 -04:00
Paul Beckingham
bcae2d2b93 - Bumped version to 1.4.0 2008-06-22 00:25:16 -04:00
Paul Beckingham
3a6de7d940 - Corrected Cygwin ncurses documentation
- Added galvanizd to the AUTHOS file for recognition of above tip
2008-06-22 00:14:26 -04:00
Paul Beckingham
994f98b57a - Added new 1.3.1 .deb files from Richard Querin. 2008-06-21 23:28:19 -04:00
Paul Beckingham
44ca388b52 - Updated for 1.3.1 release. 2008-06-21 17:15:14 -04:00
Paul Beckingham
06a85c24ad - Fixed bug so that task now recreates (with permission) any missing ~/.taskrc, and recreates any missing ~/.task 2008-06-21 17:12:04 -04:00
Paul Beckingham
ceaba87ba3 - Fixed bug causing seg faults for Ubuntu users. 2008-06-21 16:38:01 -04:00
Paul Beckingham
61acf6239c - Relocated all html into it's own directory. 2008-06-21 15:33:31 -04:00
Paul Beckingham
8dc8cdeea7 - Updated docs 2008-06-21 15:28:36 -04:00
Paul Beckingham
10ef3013e3 - Rearranged top of main page. 2008-06-21 14:59:01 -04:00
Paul Beckingham
3899f5352f - Added version number in just the right place. 2008-06-21 14:43:20 -04:00
Paul Beckingham
64fbf88f48 - Updated to include 1.3.1 information.
- Modified task.css
2008-06-21 13:41:56 -04:00
Paul Beckingham
2e0964aeb8 Merge branch 'master' into 1.3.1
Conflicts:

	task.html
2008-06-21 13:35:12 -04:00
Paul Beckingham
35d878de96 - Broken out CSS file
- Broken out troubleshooting guide
- Broken out versions info
2008-06-21 12:49:30 -04:00
Paul Beckingham
d771586080 - Converted version to 1.3.1
- Added links in task.html to Richard Querin's blog
- Added link to movie
2008-06-19 23:31:36 -04:00
76 changed files with 8981 additions and 9488 deletions

2
.gitignore vendored
View File

@@ -6,7 +6,7 @@ config.h.in
config.status
src/.deps
src/Makefile
src/task
*/task
stamp-h1
Makefile
configure

View File

@@ -3,6 +3,8 @@ Principal Author:
Contributing Authors:
Damian Glenny
Andy Lester
H. İbrahim Güngör
With thanks to:
Eugene Kramer
@@ -11,4 +13,9 @@ With thanks to:
Bruce Israel
Thomas Engel
Nishiishii
galvanizd
Stas Antons
Vincent Fleuranceau
T. Charles Yun
ArchiMark

102
ChangeLog
View File

@@ -1,22 +1,90 @@
Version numbers are of the form:
x.y.z
------ current release ---------------------------
where the x represents a major version number, or architecture. The y
represents a feature release, and the z represents a patch.
1.5.0 (?)
+ 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.
------ plans -------------------------------------
------ old releases ------------------------------
- Configurable columns in reports
- Dependencies
1.4.3 (11/1/2008)
+ 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.0 (?)
+ Bug: "showage" configuration variable should apply to all reprts, not
just the ones based on "list"
1.4.2 (9/18/2008)
+ "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)
+ 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)
+ 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)
+ New configuration variable, "defaultwidth" that determines the width
of tables when ncurses support is not available
------ reality -----------------------------------
+ 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)
+ "task calendar" now displays multiple months per line, adjustable by the
@@ -121,7 +189,7 @@ represents a feature release, and the z represents a patch.
+ 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.
@@ -132,7 +200,7 @@ represents a feature release, and the z represents a patch.
+ "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.
@@ -160,10 +228,12 @@ represents a feature release, and the z represents a patch.
+ File locking
+ retain deleted tasks
+ "task info ID" report showing all metadata
+ File format v2
+ 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"

View File

@@ -1,9 +1,11 @@
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.
task.{cpp,h} Implements main, high level processing.
command.cpp Implements all non-report task commands.
report.cpp Implements all task reports.
parse.cpp Parses the command line.
TDB.{cpp,h} The task database, performs all file I/O
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

View File

@@ -1,3 +1,3 @@
SUBDIRS = src
EXTRA_DIST = TUTORIAL DEVELOPERS
EXTRA_DIST = DEVELOPERS

3
NEWS
View File

@@ -1,4 +1,4 @@
Welcome to Task 1.4.0.
Welcome to Task 1.5.0.
Task has been built and tested on the following configurations:
@@ -7,6 +7,7 @@ Task has been built and tested on the following configurations:
- Fedora Core 8
- Fedora Core 9
- Ubuntu 8 Hardy Heron
- Ubuntu 9 Feisty Fawn
- Solaris 10
- Cygwin 1.5.25-14

27
README
View File

@@ -3,20 +3,20 @@ Thank you for taking a look at task. Task is a GTD utility featuring:
- Robust C++ implementation
- Tags
- Colorful, tabular output
- Reports
- Reports, graphs
- Lots of commands
- Low-level API
- Abbreviations for all commands, options
- Multi-user file locking
- Clean architecture allowing quick addition of new features
- Recurring tasks
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 scope-limited to GTD functionality only.
You may want to jump straight to the TUTORIAL file, or perhaps watch the old
task movie on YouTube:
You may want to watch the old task movie on YouTube:
http://www.youtube.com/watch?v=l68LCl6BYvs
@@ -24,18 +24,21 @@ or the new improved one:
http://www.youtube.com/watch?v=D2Kn4DMOVSw
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.
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 online tutorial file are the quickest way for you to make that
decision. The online tutorial can be found at:
http://www.beckingham.net/task.html
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.
Task has many 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:
@@ -43,6 +46,6 @@ All feedback is welcome, in addition to any bug reports or patches to:
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.
I have found that task makes me more productive and organized.
I hope task can do the same for you.

768
TUTORIAL
View File

@@ -1,768 +0,0 @@
Task program tutorial, for version 1.4.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.4.0.tar.gz
% gunzip task-1.4.0.tar.gz
% tar xf task-1.4.0.tar
% cd task-1.4.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.
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:
% task 2 project:Wedding.Transport
% task ls
ID Project Pri Description
3 Family Send John a birthday card
2 Wedding.Transport Reserve a rental car
1 Wedding Book plane ticket
Task matches the leftmost part of the project when searching, so projects
may be abbreviated:
% task ls project:Wedding.Tra
ID Project Pri Description
2 Wedding.Transport Reserve a rental car
This way of matching projects can be used to see all tasks under the
"Wedding" project and all subprojects:
% task ls project:Wedding
ID Project Pri Description
2 Wedding.Transport Reserve a rental car
1 Wedding Book plane ticket
Let's reassign 2 back to the "Wedding" project:
% task 2 project:Wedding
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 oldest
-------------
Lists the oldest tasks. Shows 10 tasks by default, but can be set via the
"oldest" configuration variable.
% task newest
-------------
Lists the newest tasks. Shows 10 tasks by default, but can be set via the
"newest" configuration variable.
% 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:
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
Valid background colors are:
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
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.
blanklines May be "on" or "off". Prevents the display of
unnecessary blank lines so that task makes better use
screen real estate on small-screened devices.
dateformat This is a string of characters that define how task
formats dates. The default value is:
m/d/Y
which means dates look like:
6/7/2008
The string should contain the characters:
m minimal-digit month 1, 12
d minimal-digit day 1, 30
y two-digit year 08
M two-digit month 01, 12
D two-digit day 01, 30
Y four-digit year 2008
The string may also contain other characters to act as
spacers, or formatting. Other values could include
(but are not limited to):
d/m/Y 7/6/2008
YMD 20080607
m-d-y 6-7-08
showage May be "yes" or "no". Determines whether the "Age"
column appears on the "list" and "next" reports.
monthsperline Determines how many months the "task calendar" command
renders across the screen. Defaults to 1.
oldest Determines how many tasks are shown on the "oldest"
report. Defaults to 10.
newest Determines how many tasks are shown on the "newest"
report. Defaults to 10.
defaultwidth The width of tables used when ncurses support is not
available. Defaults to 80.
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

View File

@@ -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

281
binary/COPYING.txt Normal file
View 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

51
binary/README.txt Normal file
View File

@@ -0,0 +1,51 @@
Thank you for taking a look at task. Task is a GTD utility featuring:
- Robust C++ implementation
- Tags
- Colorful, tabular output
- Reports, graphs
- Lots of commands
- Low-level API
- Abbreviations for all commands, options
- Multi-user file locking
- Clean architecture allowing quick addition of new features
- Recurring tasks
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 scope-limited to GTD functionality only.
You may want to watch the old task movie on YouTube:
http://www.youtube.com/watch?v=l68LCl6BYvs
or the new improved one:
http://www.youtube.com/watch?v=D2Kn4DMOVSw
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 online tutorial file are the quickest way for you to make that
decision. The online tutorial can be found at:
http://www.beckingham.net/task.html
Task is based on ideas presented in the todo.sh script, found on:
http://todotxt.org
Task has many 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.

View File

@@ -2,7 +2,30 @@
# Process this file with autoconf to produce a configure script.
AC_PREREQ(2.61)
AC_INIT(task, 1.4.0, bugs@beckingham.net)
AC_INIT(task, 1.5.0, bugs@beckingham.net)
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="yes"
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 "x$enable_debug" = "xyes"; then
CFLAGS="$CFLAGS -Wall -pedantic -ggdb3 -DDEBUG"
CXXFLAGS="$CFLAGS -Wall -pedantic -ggdb3 -DDEBUG"
AC_MSG_RESULT(yes)
else
CFLAGS="$CFLAGS -O3"
CXXFLAGS="$CFLAGS -O3"
AC_MSG_RESULT(no)
fi
AM_INIT_AUTOMAKE
AC_CONFIG_SRCDIR([src/task.cpp])
AC_CONFIG_HEADER([auto.h])
@@ -12,6 +35,8 @@ 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)
@@ -19,7 +44,7 @@ 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

View File

@@ -22,6 +22,7 @@ command:
| EXPORT <file>
| COLOR
| DELETE <id>
| UNDELETE <id>
| INFO <id>
| START <id>
| DONE <id>

131
html/30second.html Normal file
View File

@@ -0,0 +1,131 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>30-Second Tutorial</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="task.css" type="text/css" />
</head>
<body>
<div id="container">
<table>
<tr>
<td>
<div id="toolbar">
<a href="task.html">Home</a>
<a href="setup.html">Setup</a>
<a href="30second.html">30-second Tutorial</a>
<a href="simple.html">Simple</a>
<a href="advanced.html">Advanced</a>
<a href="shell.html">Shell</a>
<a href="config.html">Configuration</a>
<a href="color.html">Colors</a>
<a href="usage.html">Usage</a>
<a href="recur.html">Recurrence</a>
<a href="date.html">Date Handling</a>
<a href="troubleshooting.html">Troubleshooting</a>
<a href="versions.html">Old Versions</a>
<a href="links.html">Task on the Web</a>
</div>
<div id="content">
<br />
<br />
<br />
<h2 class="title"><a name="simple">30-second Tutorial</a></h2>
<div class="content">
<p>
For the excessively lazy.
Add two tasks:
</p>
<pre><code>% task add Read task documents later
% task add priority:H Pay bills</code></pre>
<p>
Easy. See that second one has a High priority? Now let's look at those tasks:
</p>
<pre><code>% task ls
ID Project Pri Description
2 H Pay bills
1 Read task documents later</code></pre>
<p>
They are ordered by priority. Let's mark number 2 as done:
</p>
<pre><code>% task 2 done
% task ls
ID Project Pri Description
1 Read task documents later</code></pre>
<p>
Gone. Now let's delete that remaining task, because, well,
why bother now we are already using task:
</p>
<pre><code>% task delete 1
% task ls
No matches</code></pre>
<p>
Easy. But now consider checking out what task can really do...
</p>
</div>
<br />
<br />
<div class="content">
<p>
Copyright 2006-2008, P. Beckingham. All rights reserved.
</p>
</div>
</div>
</td>
<td align="right" valign="top" width="200px">
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<script type="text/javascript"><!--
google_ad_client = "pub-9709799404235424";
/* Task Main */
google_ad_slot = "8660617875";
google_ad_width = 120;
google_ad_height = 600;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</td>
</tr>
</table>
</div>
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
var pageTracker = _gat._getTracker("UA-4737637-1");
pageTracker._initData();
pageTracker._trackPageview();
</script>
</body>
</html>

449
html/advanced.html Normal file
View File

@@ -0,0 +1,449 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Advanced Usage</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="task.css" type="text/css" />
</head>
<body>
<div id="container">
<table>
<tr>
<td>
<div id="toolbar">
<a href="task.html">Home</a>
<a href="setup.html">Setup</a>
<a href="30second.html">30-second Tutorial</a>
<a href="simple.html">Simple</a>
<a href="advanced.html">Advanced</a>
<a href="shell.html">Shell</a>
<a href="config.html">Configuration</a>
<a href="color.html">Colors</a>
<a href="usage.html">Usage</a>
<a href="recur.html">Recurrence</a>
<a href="date.html">Date Handling</a>
<a href="troubleshooting.html">Troubleshooting</a>
<a href="versions.html">Old Versions</a>
<a href="links.html">Task on the Web</a>
</div>
<div id="content">
<br />
<br />
<br />
<h2 class="title"><a name="advanced">Advanced Usage</a></h2>
<div class="content">
<p>
Here are the other commands, in some detail.
</p>
<strong>% task</strong>
<p>
With no arguments, this command will generate a help message that
lists all these commands.
</p>
<p>
However, if the following configuration variable is specified:
</p>
<pre><code>default.command=list pri:H</code></pre>
<p>
Then this command will be run whenever task is run without arguments.
This means that your most common task command can be run simply
with the command:
</p>
<pre><code>% task
[task list project:foo]
ID Project Pri Description
1 foo H Design the thing
2 foo Build the thing</code></pre>
<strong>% task projects</strong>
<p>
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:
</p>
<pre><code>% task projects
Project Tasks
Errands 1
Birthdays 3
Car 2</code></pre>
<strong>% task summary</strong>
<p>
This report lists all the projects and a summary of their task
status.
</p>
<pre><code>% 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</code></pre>
<p>
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.
</p>
<strong>% task delete &lt;id&gt;</strong>
<p>
There are two ways of getting rid of tasks - mark them as done, or
delete them.
</p>
<strong>% task undelete &lt;id&gt;</strong>
<p>
If a task was inadvertently deleted, it may be undeleted, provided that no
reports have been run since the deletion. Ideally, the undelete command is
run immediately after the erroneous delete command.
</p>
<p>
If a report is run (such as "task list"), then task performs a garbage
collection that removes deleted tasks, and the task cannot be undeleted.
</p>
<strong>% task done &lt;id&gt;</strong>
<p>
This is how a task is marked as done.
</p>
<strong>% task list ...</strong>
<p>
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.
</p>
<strong>% task long ...</strong>
<p>
The long report will show the entry date and start date of a task,
in addition to the columns that the "task list" shows.
</p>
<strong>% task start &lt;id&gt;</strong>
<p>
This marks a task as started (and therefore active), which is shown
in the "list" report:
</p>
<pre><code>% 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
...</code></pre>
<strong>% task active</strong>
<p>
Shows all active tasks, that is, the tasks for which the
"task start ..." command was run, as shown above.
</p>
<strong>% task stop &lt;id&gt;</strong>
<p>
Marks a task as inactive, by removing the start time.
</p>
<strong>% task overdue</strong>
<p>
Simply lists all the task that have a due date that is past, in
"list" format.
</p>
<strong>% task history</strong>
<p>
This report shows you an overview of how many tasks were added,
completed and deleted, by month. It looks like this:
</p>
<pre><code>% task history
Year Month Added Completed Deleted Net
2008 March 21 16 0 5
April 13 11 1 1
May 8 14 3 -9</code></pre>
<p>
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.
</p>
<strong>% task calendar</strong>
<p>
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.
</p>
<pre><code>% 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</code></pre>
<strong>% task next</strong>
<p>
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.
</p>
<p>
If you wish to show a different number of tasks per project, modify
the entry in .taskrc:
</p>
<pre><code>next=2</code></pre>
<p>
To be your preferred number.
</p>
<strong>% task &lt;id&gt; ...</strong>
<p>
When a task id is specified, everything applies to just that task.
Suppose we needed to correct a task:
</p>
<pre><code>% 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
...</code></pre>
<strong>% task oldest</strong>
<p>
Lists the oldest tasks. Shows 10 tasks by default, but can be
set via the "oldest" configuration variable.
</p>
<strong>% task newest</strong>
<p>
Lists the newest tasks. Shows 10 tasks by default, but can be
set via the "newest" configuration variable.
</p>
<strong>% task /from/to/</strong>
<p>
If a task has been entered with a typo, it can be easily corrected
by this command. For example:
</p>
<pre><code>% 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
...</code></pre>
<p>
This command makes single corrections to a task description.
</p>
<strong>% task tags</strong>
<p>
This command will generate a list of all the tags that are currently
in use by task.
</p>
<strong>% task info &lt;id&gt;</strong>
<p>
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.
</p>
<strong>% task stats</strong>
<p>
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.
</p>
<strong>% task completed</strong>
<p>
This generates a list of all tasks that have been completed, sorted
by their completion date.
</p>
<strong>% task export &lt;file name&gt;</strong>
<p>
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.
</p>
<strong>% task colors</strong>
<p>
This command displays all the colors that task supports.
</p>
<strong>% task version</strong>
<p>
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.
</p>
<strong>% task rc:&lt;file&gt; ...</strong>
<p>
By specifying rc:<file>, it is possible to force task to use an alternate
.taskrc file. By default, task looks in your home directory, so these two
commands are essentially identical:
</p>
<pre><code>% task list
% task rc:~/.taskrc list</code></pre>
<p>
What this override allows, is the possibility of keeping your task lists
completely separate, say for work and home. This can be accomplished with
the following commands (valid for bash):
</p>
<pre><code>% alias htask="task rc:/home/me/.taskrc_home"
% alias wtask="task rc:/home/me/.taskrc_work"
% htask list
...
% wtask list
...</code></pre>
<strong>% task &lt;id&gt; "new description"</strong>
<p>
Not strictly a command, the replacement of the description can
be achieved by quoting the entire description. The quotes are
necessary in case one of the description words looks like a task
command.
</p>
<strong>% task &lt;id&gt; fg:... bg:...</strong>
<p>
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:
</p>
<pre><code> 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</code></pre>
<p>
Note that these are not just colors, but combinations of colors and
attributes. Valid background colors are:
</p>
<pre><code>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</code></pre>
<p>
Note also that this capability does depend on whether your terminal
program can display these colors.
</p>
</div>
<br />
<br />
<div class="content">
<p>
Copyright 2006-2008, P. Beckingham. All rights reserved.
</p>
</div>
</div>
</td>
<td align="right" valign="top" width="200px">
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<script type="text/javascript"><!--
google_ad_client = "pub-9709799404235424";
/* Task Main */
google_ad_slot = "8660617875";
google_ad_width = 120;
google_ad_height = 600;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</td>
</tr>
</table>
</div>
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
var pageTracker = _gat._getTracker("UA-4737637-1");
pageTracker._initData();
pageTracker._trackPageview();
</script>
</body>
</html>

128
html/color.html Normal file
View File

@@ -0,0 +1,128 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Color Usage</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="task.css" type="text/css" />
</head>
<body>
<div id="container">
<table>
<tr>
<td>
<div id="toolbar">
<a href="task.html">Home</a>
<a href="setup.html">Setup</a>
<a href="30second.html">30-second Tutorial</a>
<a href="simple.html">Simple</a>
<a href="advanced.html">Advanced</a>
<a href="shell.html">Shell</a>
<a href="config.html">Configuration</a>
<a href="color.html">Colors</a>
<a href="usage.html">Usage</a>
<a href="recur.html">Recurrence</a>
<a href="date.html">Date Handling</a>
<a href="troubleshooting.html">Troubleshooting</a>
<a href="versions.html">Old Versions</a>
<a href="links.html">Task on the Web</a>
</div>
<div id="content">
<br />
<br />
<br />
<h2 class="title"><a name="color">Colors</a></h2>
<div class="content">
<p>
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:
</p>
<pre><code> 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</code></pre>
<p>
and the following are valid background colors:
</p>
<pre><code>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</code></pre>
<p>
Depending on your terminal color choices, task can display all
the colors it supports with the command:
</p>
<img src="images/color.png" />
</div>
<br />
<br />
<div class="content">
<p>
Copyright 2006-2008, P. Beckingham. All rights reserved.
</p>
</div>
</div>
</td>
<td align="right" valign="top" width="200px">
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<script type="text/javascript"><!--
google_ad_client = "pub-9709799404235424";
/* Task Main */
google_ad_slot = "8660617875";
google_ad_width = 120;
google_ad_height = 600;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</td>
</tr>
</table>
</div>
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
var pageTracker = _gat._getTracker("UA-4737637-1");
pageTracker._initData();
pageTracker._trackPageview();
</script>
</body>
</html>

383
html/config.html Normal file
View File

@@ -0,0 +1,383 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Task Configuration</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="task.css" type="text/css" />
</head>
<body>
<div id="container">
<table>
<tr>
<td>
<div id="toolbar">
<a href="task.html">Home</a>
<a href="setup.html">Setup</a>
<a href="30second.html">30-second Tutorial</a>
<a href="simple.html">Simple</a>
<a href="advanced.html">Advanced</a>
<a href="shell.html">Shell</a>
<a href="config.html">Configuration</a>
<a href="color.html">Colors</a>
<a href="usage.html">Usage</a>
<a href="recur.html">Recurrence</a>
<a href="date.html">Date Handling</a>
<a href="troubleshooting.html">Troubleshooting</a>
<a href="versions.html">Old Versions</a>
<a href="links.html">Task on the Web</a>
</div>
<div id="content">
<br />
<br />
<br />
<h2 class="title"><a name="config">Configuring Task</a></h2>
<div class="content">
<p>
Task recognizes several entries in the .taskrc file for
configuration purposes. Valid entries are of the form:
</p>
<pre><code>name=value</code></pre>
<p>
Valid examples are:
</p>
<dt>data.location</dt>
<dd>
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
</dd>
<dt>confirmation</dt>
<dd>
May be "yes" or "no", and determines whether task will ask for
confirmation before deleting a task.
</dd>
<dt>nag</dt>
<dd>
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:
<strong>Note: try to stick to high priority tasks. See "task next".</strong>
</dd>
<dt>next</dt>
<dd>
Is a number, defaulting to 2, which is the number of tasks for
each project that are shown in the "task next" command.
</dd>
<dt>curses</dt>
<dd>
Determines whether task uses ncurses to establish the size of
the window you are using, for text wrapping.
</dd>
<dt>blanklines</dt>
<dd>
May be "on" or "off". Prevents the display of unnecessary blank
lines so that task makes better use screen real estate on small-
screened devices.
</dd>
<dt>dateformat</dt>
<dd>
<p>
This is a string of characters that define how task formats dates.
The default value is:
</p>
<pre><code>m/d/Y</code></pre>
<p>
which means dates look like:
</p>
<pre><code>6/7/2008</code></pre>
<p>
The string should contain the characters:
<table>
<tr>
<th class="table_h">Character</th>
<th class="table_h">Meaning</th>
<th class="table_h">Example</th>
</tr>
<tr>
<td class="table_d">m</td>
<td class="table_d">minimal-digit month</td>
<td class="table_d">1, 12</td>
</tr>
<tr>
<td class="table_d">d</td>
<td class="table_d">minimal-digit day</td>
<td class="table_d">1, 30</td>
</tr>
<tr>
<td class="table_d">y</td>
<td class="table_d">two-digit year</td>
<td class="table_d">08</td>
</tr>
<tr>
<td class="table_d">M</td>
<td class="table_d">two-digit month</td>
<td class="table_d">01, 12</td>
</tr>
<tr>
<td class="table_d">D</td>
<td class="table_d">two-digit day</td>
<td class="table_d">01, 30</td>
</tr>
<tr>
<td class="table_d">Y</td>
<td class="table_d">four-digit year</td>
<td class="table_d">2008</td>
</tr>
</table>
</p>
<p>
The string may also contain other characters to act as spacers,
or formatting. Other values could include (but are not limited to):
</p>
<p>
<table>
<tr>
<th class="table_h">dateformat</td>
<th class="table_h">How it looks</th>
</tr>
<tr>
<td class="table_d">d/m/Y</td>
<td class="table_d">7/6/2008</td>
</tr>
<tr>
<td class="table_d">YMD</td>
<td class="table_d">20080607</td>
</tr>
<tr>
<td class="table_d">m-d-y</td>
<td class="table_d">6-7-08</td>
</tr>
</table>
</p>
</dd>
<dt>monthsperline</dt>
<dd>
Determines how many months the "task calendar" command
renders across the screen. Defaults to 1.
</dd>
<dt>oldest</dt>
<dd>
Determines how many tasks the "task oldest" command displays.
Defaults to 10.
</dd>
<dt>newest</dt>
<dd>
Determines how many tasks the "task newest" command displays.
Defaults to 10.
</dd>
<dt>defaultwidth</dt>
<dd>
The width of tables used when ncurses support is not available.
Defaults to 80.
</dd>
<dt>color</dt>
<dd>
May be "on" or "off". Determines whether task uses color.
When "off", task will use dashes (-----) to underline column
headings.
</dd>
<dt>
color.overdue<br />
color.due<br />
color.pri.H<br />
color.pri.M<br />
color.pri.L<br />
color.pri.none<br />
color.active<br />
color.tagged
</dt>
<dd>
These are the 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. The value may
be one optional foreground color (see below) and one optional
background color. For example, the value may be:
<br />
<strong>bold_red on_bright_yellow</strong>
</dd>
<dt>color.tag.X</dt>
<dd>
Colors any task that has the tag X.
</dd>
<dt>color.project.X</dt>
<dd>
Colors any task assigned to project X.
</dd>
<dt>color.keyword.X</dt>
<dd>
Colors any task where the description contains X.
</dd>
<dt>default.project</dt>
<dd>
Provides a default project name for the "task add ..." command.
</dd>
<dt>default.priority</dt>
<dd>
Provides a default priority for the "task add ..." command.
</dd>
<dt>default.command</dt>
<dd>
<p>
Provides a default command that is run every time task is
invoked with no arguments. For example, if set to:
</p>
<pre><code>default.command=list project:foo</code></pre>
<p>
Then task will run the "list project:foo" command if no
command is specified. This means that by merely typing:
</p>
<pre><code>% task
[task list project:foo]
ID Project Pri Description
1 foo H Design the thing
2 foo Build the thing</code></pre>
<p>
Note that the value of this variable is simply the command
line that you would ordinarily type, but without the
preceding "task" program name.
</p>
</dd>
<dt>shadow.file</dt>
<dd>
<p>
If specified, designates a file path that will be autoamtically
written to by task, whenever the task database changes. In other
words, it is automatically kept up to date.
</p>
<p>
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.
</p>
<p>
This feature can be useful in maintaining a current file for
use by the "Samurize" program.
</p>
</dd>
<dt>shadow.command</dt>
<dd>
<p>
This is the command that is run to maintain the shadow file,
determined by the shadow.file configuration variable. The
format is identical to that of default.command - please see
the documentation for default.command.
</p>
<p>
If this command is not specified, task will use the default.command
value instead. If that is not specified, the command "list" is used.
</p>
</dd>
<dt>shadow.notify</dt>
<dd>
When this value is set to "on", task will display a message
whenever the shadow file is updated by some task command.
</dd>
<p>
Note that the command:
</p>
<pre><code>task version</code></pre>
<p>
will display the configuration variables found in the .taskrc file,
and will warn you of any variables that are not recognized.
</p>
</div>
<br />
<br />
<div class="content">
<p>
Copyright 2006-2008, P. Beckingham. All rights reserved.
</p>
</div>
</div>
</td>
<td align="right" valign="top" width="200px">
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<script type="text/javascript"><!--
google_ad_client = "pub-9709799404235424";
/* Task Main */
google_ad_slot = "8660617875";
google_ad_width = 120;
google_ad_height = 600;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</td>
</tr>
</table>
</div>
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
var pageTracker = _gat._getTracker("UA-4737637-1");
pageTracker._initData();
pageTracker._trackPageview();
</script>
</body>
</html>

161
html/date.html Normal file
View File

@@ -0,0 +1,161 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Date Handling</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="task.css" type="text/css" />
</head>
<body>
<div id="container">
<table>
<tr>
<td>
<div id="toolbar">
<a href="task.html">Home</a>
<a href="setup.html">Setup</a>
<a href="30second.html">30-second Tutorial</a>
<a href="simple.html">Simple</a>
<a href="advanced.html">Advanced</a>
<a href="shell.html">Shell</a>
<a href="config.html">Configuration</a>
<a href="color.html">Colors</a>
<a href="usage.html">Usage</a>
<a href="recur.html">Recurrence</a>
<a href="date.html">Date Handling</a>
<a href="troubleshooting.html">Troubleshooting</a>
<a href="versions.html">Old Versions</a>
<a href="links.html">Task on the Web</a>
</div>
<div id="content">
<br />
<br />
<br />
<h2 class="title">Date Handling</h2>
<div class="content">
<p>
Task reads dates from the command line, and displays dates in the reports.
</p>
<p>
In order to do this in a flexible way, task obeys a configuration variable that
determines the expected and desired date format. See the
<a href="config.html">Configuring Task</a> page for details.
</p>
<p>
In addition to exactly specifying the date, such as:
</p>
<pre><code>% task ... due:7/10/2008</code></pre>
<p>
task supports a flexible variety of alternatives. For example:
</p>
<pre><code>% task ... due:today</code></pre>
<p>
Similarly:
</p>
<pre><code>% task ... due:yesterday
% task ... due:tomorrow</code></pre>
<p>
Here are some other forms that are accepted. The day number, followed by an
ordinal:
</p>
<pre><code>% task ... due:23rd</code></pre>
<p>
End of month:
</p>
<pre><code>% task ... due:eom</code></pre>
<p>
End of year:
</p>
<pre><code>% task ... due:eoy</code></pre>
<p>
End of week (Friday):
</p>
<pre><code>% task ... due:eow</code></pre>
<p>
Next Friday:
</p>
<pre><code>% task ... due:Friday</code></pre>
<p>
Note that next Friday means seven days from now if today is Friday, otherwise
it means the next occurring Friday. Most of these forms may be specified using
abbreviations, provided they are unique. For example:
</p>
<pre><code>% task ... due:fri</code></pre>
</div>
<br />
<br />
<div class="content">
<p>
Copyright 2006-2008, P. Beckingham. All rights reserved.
</p>
</div>
</div>
</td>
<td align="right" valign="top" width="200px">
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<script type="text/javascript"><!--
google_ad_client = "pub-9709799404235424";
/* Task Main */
google_ad_slot = "8660617875";
google_ad_width = 120;
google_ad_height = 600;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</td>
</tr>
</table>
</div>
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
var pageTracker = _gat._getTracker("UA-4737637-1");
pageTracker._initData();
pageTracker._trackPageview();
</script>
</body>
</html>

133
html/filter.html Normal file
View File

@@ -0,0 +1,133 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Task Filters</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="task.css" type="text/css" />
</head>
<body>
<div id="container">
<table>
<tr>
<td>
<div id="toolbar">
<a href="task.html">Home</a>
<a href="setup.html">Setup</a>
<a href="30second.html">30-second Tutorial</a>
<a href="simple.html">Simple</a>
<a href="advanced.html">Advanced</a>
<a href="shell.html">Shell</a>
<a href="config.html">Configuration</a>
<a href="color.html">Colors</a>
<a href="usage.html">Usage</a>
<a href="recur.html">Recurrence</a>
<a href="date.html">Date Handling</a>
<a href="troubleshooting.html">Troubleshooting</a>
<a href="versions.html">Old Versions</a>
<a href="links.html">Task on the Web</a>
</div>
<div id="content">
<br />
<br />
<br />
<h2 class="title">Task Filters</h2>
<div class="content">
<p>
A task filter is a means of reducing a task report to a
subset that may consist of all tasks that have a specific
project, priority, tag, or part of the description.
</p>
<p>
A task filter consists of additional command line options,
that are specified in the same way as when a task is added.
</p>
<p>
All task reports can make use of filters.
</p>
<p>
For example, the report:
</p>
<code><pre>% task list</pre></code>
<p>
Lists all tasks.
</p>
<code><pre>% task list the</pre></code>
<p>
Lists only tasks with "the" in the task description.
</p>
<code><pre>% task list project:Home priority:H</pre></code>
<p>
Lists only tasks with both the "Home" project and "H" priority.
</p>
<code><pre>% task list +shopping</pre></code>
<p>
Lists only tasks with the "shopping" tag.
</p>
</div>
<br />
<br />
<div class="content">
<p>
Copyright 2006-2008, P. Beckingham. All rights reserved.
</p>
</div>
</div>
</td>
<td align="right" valign="top" width="200px">
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<script type="text/javascript"><!--
google_ad_client = "pub-9709799404235424";
/* Task Main */
google_ad_slot = "8660617875";
google_ad_width = 120;
google_ad_height = 600;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</td>
</tr>
</table>
</div>
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
var pageTracker = _gat._getTracker("UA-4737637-1");
pageTracker._initData();
pageTracker._trackPageview();
</script>
</body>
</html>

BIN
html/images/color.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

188
html/links.html Normal file
View File

@@ -0,0 +1,188 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Task on the Web</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="task.css" type="text/css" />
</head>
<body>
<div id="container">
<table>
<tr>
<td>
<div id="toolbar">
<a href="task.html">Home</a>
<a href="setup.html">Setup</a>
<a href="30second.html">30-second Tutorial</a>
<a href="simple.html">Simple</a>
<a href="advanced.html">Advanced</a>
<a href="shell.html">Shell</a>
<a href="config.html">Configuration</a>
<a href="color.html">Colors</a>
<a href="usage.html">Usage</a>
<a href="recur.html">Recurrence</a>
<a href="date.html">Date Handling</a>
<a href="troubleshooting.html">Troubleshooting</a>
<a href="versions.html">Old Versions</a>
<a href="links.html">Task on the Web</a>
</div>
<div id="content">
<br />
<br />
<br />
<h1 class="title">Task on the Web</h1>
<p>
Task links from around the web...
</p>
<dt>
November 2008, <a href="http://github.com/pbeckingham/task/tree/master/">Task repository on GitHub</a>
</dt>
<dd>
For developers: the task git repository on github.com is now public.
</dd>
<br>
<dt>
October 2008, <a href="http://blog.rfquerin.org/2008/10/07/using-task-and-dropbox-to-manage-your-to-do-list/">Using Task and Dropbox to manage your To-Do list</a>
</dt>
<dd>
by Richard Querin. Richard discusses the ease of setting up task to
use DropBox to share todo lists between work and home.
</dd>
<br>
<dt>
September 2008, <a href="http://stasantons.blogspot.com/2008/09/task-program-visually-simple.html">Task visualization</a>
</dt>
<dd>
by Stas Antons. Stas - a colleague of mine - presents a visualization
of the simplicity of task.
</dd>
<br>
<dt>
June 2008, <a href="http://blog.rfquerin.org/2008/06/17/building-debian-packages-for-task/">Building Debian Packages For Task</a>
</dt>
<dd>
by Richard Querin. Richard has been providing Debian packages for the
various task releases, and discusses how he got up to speed.
</dd>
<br>
<dt>
June 2008, <a href="http://blog.rfquerin.org/2008/06/06/task-101-an-attempt-at-a-cygwin-build-how-to/">Task 1.0.1 - an attempt at a Cygwin Build How-To</a>
</dt>
<dd>
by Richard Querin. Richard shows us how to build task using Cygwin, after
a cry for help on the todo.txt mailing list.
</dd>
<br>
<dt>
June 2008, <a href="http://www.youtube.com/watch?v=D2Kn4DMOVSw">The second task movie</a>
</dt>
<dd>
This YouTube movie was made to illustrate some of the features of the task
program, back when task 1.0.0 was released. While task has grown
significantly since then, the commands shown are still valid. It will
soon be time for a new movie!
<p>
This movie has a voice-over that explains what is going on.
<p>
For a higher-quality version, download the whole
<a href="http://www.beckingham.net/todo2.mov">movie file (10MB)</a>.
</dd>
<br>
<dt>
December 2006, <a href="http://www.youtube.com/watch?v=l68LCl6BYvs">The first task movie</a>
</dt>
<dd>
This original YouTube task movie was made to illustrate the features of the
then-unreleased task program. The idea was to get some feedback and see
whether anyone was interested in a new implementation of todo.sh, that added
features that are not easily possible with a shell implementation.
<p>
This movie has no voice-over, and you may notice that it exactly duplicates
the commands used in the original todo.sh movie (below). That is, until it
deviates because of new task commands.
</dd>
<br>
<dt>
June 2006, <a href="http://www.youtube.com/watch?v=daJ1Hs_y738">The original todo.sh movie</a>
</dt>
<dd>
by Gina Trapani. This is the original YouTube todo.sh movie, made to
illustrate the power and simplicity of the original todo.sh program.
</dd>
<br>
<dt>
June 2006, <a href="http://todotxt.com/">Todo.sh, the inspiration for task</a>
</dt>
<dd>
by Gina Trapani. The website that introduced me to the power and
simplicity of the original todo.sh program. Contains useful links
and resources - take a look!
</dd>
<br />
<br />
<div class="content">
<p>
Copyright 2006-2008, P. Beckingham. All rights reserved.
</p>
</div>
</div>
</td>
<td align="right" valign="top" width="200px">
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<script type="text/javascript"><!--
google_ad_client = "pub-9709799404235424";
/* Task Main */
google_ad_slot = "8660617875";
google_ad_width = 120;
google_ad_height = 600;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</td>
</tr>
</table>
</div>
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
var pageTracker = _gat._getTracker("UA-4737637-1");
pageTracker._initData();
pageTracker._trackPageview();
</script>
</body>
</html>

206
html/recur.html Normal file
View File

@@ -0,0 +1,206 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Recurring Tasks</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="task.css" type="text/css" />
</head>
<body>
<div id="container">
<table>
<tr>
<td>
<div id="toolbar">
<a href="task.html">Home</a>
<a href="setup.html">Setup</a>
<a href="30second.html">30-second Tutorial</a>
<a href="simple.html">Simple</a>
<a href="advanced.html">Advanced</a>
<a href="shell.html">Shell</a>
<a href="config.html">Configuration</a>
<a href="color.html">Colors</a>
<a href="usage.html">Usage</a>
<a href="recur.html">Recurrence</a>
<a href="date.html">Date Handling</a>
<a href="troubleshooting.html">Troubleshooting</a>
<a href="versions.html">Old Versions</a>
<a href="links.html">Task on the Web</a>
</div>
<div id="content">
<br />
<br />
<br />
<h2 class="title">Recurring Tasks</h2>
<div class="content">
<p>
Task supports recurring tasks, which is a task that keeps falling due, on a
regular schedule. An example of this may be "pay rent". Here is how
recurring tasks work in task:
</p>
<p>
Ordinarily, a task is a single item that is entered in the pending state, and
remains so until it is either completed or deleted. This is an example of a
single instance task.
</p>
<p>
A recurring task is different. When a recurring task is entered, it remains
hidden from view, but acts as a root task for a task instances that are
generated on a regular basis. Consider the example:
</p>
<pre><code>% task Pay rent due:7/1/2008 recur:monthly</code></pre>
<p>
If today's date is 7/10, for example, then that due date is in the past, and
you might expect there to be an already overdue task for 7/1/2008, and another
due on 8/1/2008. This means that from that root, task has created two
instances with different due dates.
</p>
<pre><code>% task list
ID Project Pri Due Active Age Description
1 7/1/2008 1 min Pay rent
2 8/1/2008 1 min Pay rent
2 tasks</code></pre>
<p>
Task creates any overdue tasks, then creates one additional due task. These
new task instances are then completed or deleted as you normally would.
</p>
<p>
In the example above, a new task instance is created every month, and this will
repeat indefinitely. Task also supports an end date. Suppose you are taking
every Friday off work for the summer. You'll need to submit your TPS report on
Thursdays instead:
</p>
<pre><code>% task TPS report due:thursday recur:weekly until:8/31/2008</code></pre>
<p>
This create a weekly recurring task that expires on 8/31/2008. What this means
is that after all those task instances have been created, then completed or
deleted, the root task will expire and disappear. Task will tell you what it
is doing when this happens.
</p>
<h4>Deletion</h4>
<p>
When a recurring task is deleted, you will be asked if you would also like to
delete all recurring task instances:
</p>
<pre><code>% task del 1
Permanently delete task? (y/n) y
This is a recurring task. Do you want to delete all pending
recurrences of this same task? (y/n) y</code></pre>
<h4>Recurrence Periods</h4>
<p>
In the above examples, the recurrence period was specified as "monthly" and
"weekly". Task supports several ways of specifying this:
</p>
<table>
<tr>
<th class="table_h">Period</th>
<th class="table_h">Meaning</th>
</tr>
<tr>
<td class="table_d">daily, day, 1d, 2d ...</td>
<td class="table_d">Every day, or a number of days</td>
</tr>
<tr>
<td class="table_d">weekly, 1w, 2w ...</td>
<td class="table_d">Every week, or a number of weeks</td>
</tr>
<tr>
<td class="table_d">biweekly, fortnight</td>
<td class="table_d">Every two weeks</td>
</tr>
<tr>
<td class="table_d">monthly, 1m, 2m ...</td>
<td class="table_d">Every month, or a number of months</td>
</tr>
<tr>
<td class="table_d">bimonthly</td>
<td class="table_d">Every two months</td>
</tr>
<tr>
<td class="table_d">quarterly, 1q, 2q ...</td>
<td class="table_d">Every three months, a quarter, or a number of quarters</td>
</tr>
<tr>
<td class="table_d">semiannual</td>
<td class="table_d">Every six months</td>
</tr>
<tr>
<td class="table_d">annual, yearly, 1y, 2y ...</td>
<td class="table_d">Every year, or a number of years</td>
</tr>
<tr>
<td class="table_d">biannual, biyearly, 2y</td>
<td class="table_d">Every two-years</td>
</tr>
</table>
</div>
<br />
<br />
<div class="content">
<p>
Copyright 2006-2008, P. Beckingham. All rights reserved.
</p>
</div>
</div>
</td>
<td align="right" valign="top" width="200px">
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<script type="text/javascript"><!--
google_ad_client = "pub-9709799404235424";
/* Task Main */
google_ad_slot = "8660617875";
google_ad_width = 120;
google_ad_height = 600;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</td>
</tr>
</table>
</div>
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
var pageTracker = _gat._getTracker("UA-4737637-1");
pageTracker._initData();
pageTracker._trackPageview();
</script>
</body>
</html>

141
html/setup.html Normal file
View File

@@ -0,0 +1,141 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Task Setup</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="task.css" type="text/css" />
</head>
<body>
<div id="container">
<table>
<tr>
<td>
<div id="toolbar">
<a href="task.html">Home</a>
<a href="setup.html">Setup</a>
<a href="30second.html">30-second Tutorial</a>
<a href="simple.html">Simple</a>
<a href="advanced.html">Advanced</a>
<a href="shell.html">Shell</a>
<a href="config.html">Configuration</a>
<a href="color.html">Colors</a>
<a href="usage.html">Usage</a>
<a href="recur.html">Recurrence</a>
<a href="date.html">Date Handling</a>
<a href="troubleshooting.html">Troubleshooting</a>
<a href="versions.html">Old Versions</a>
<a href="links.html">Task on the Web</a>
</div>
<div id="content">
<br />
<br />
<br />
<h2 class="title"><a name="setup">Quick Setup</a></h2>
<div class="content">
<p>
Build the task program according to the directions in the INSTALL
file. This transcript illustrates a typical installation:
</p>
<pre><code>% ls
task-1.4.1.tar.gz
% gunzip task-1.4.1.tar.gz
% tar xf task-1.4.1.tar
% cd task-1.4.1
% ./configure
...
% make
...
% make install # (may require sudo, depending on --prefix)</code></pre>
<p>
(For those of you using <a href="http://www.cygwin.com">Cygwin</a>,
you need to make sure you have the "gcc" and "make" packages
available, which are found in the "devel" category. For more
task features, also make sure you have "libncurses-devel" and
"lincurse8".)
</p>
<p>
You need to make sure that the installed task program is in your
PATH environment variable.
</p>
<p>
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.
</p>
<p>
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.
</p>
<pre><code>% 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]</code></pre>
</div>
<br />
<br />
<div class="content">
<p>
Copyright 2006-2008, P. Beckingham. All rights reserved.
</p>
</div>
</div>
</td>
<td align="right" valign="top" width="200px">
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<script type="text/javascript"><!--
google_ad_client = "pub-9709799404235424";
/* Task Main */
google_ad_slot = "8660617875";
google_ad_width = 120;
google_ad_height = 600;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</td>
</tr>
</table>
</div>
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
var pageTracker = _gat._getTracker("UA-4737637-1");
pageTracker._initData();
pageTracker._trackPageview();
</script>
</body>
</html>

126
html/shadow.html Normal file
View File

@@ -0,0 +1,126 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Task Shadow Files</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="task.css" type="text/css" />
</head>
<body>
<div id="container">
<table>
<tr>
<td>
<div id="toolbar">
<a href="task.html">Home</a>
<a href="setup.html">Setup</a>
<a href="30second.html">30-second Tutorial</a>
<a href="simple.html">Simple</a>
<a href="advanced.html">Advanced</a>
<a href="shell.html">Shell</a>
<a href="config.html">Configuration</a>
<a href="color.html">Colors</a>
<a href="usage.html">Usage</a>
<a href="recur.html">Recurrence</a>
<a href="date.html">Date Handling</a>
<a href="troubleshooting.html">Troubleshooting</a>
<a href="versions.html">Old Versions</a>
<a href="links.html">Task on the Web</a>
</div>
<div id="content">
<br />
<br />
<br />
<h2 class="title">Task Shadow Files</h2>
<div class="content">
<p>
A shadow file is a text file containing a copy of a task
report. It is automatically maintained by task whenever
something changes in the task database.
</p>
<p>
This means there is always a current version of the task
report kept in a text file. Products such as
<a href="www.samurize.com">Samurize</a>,
<a href="http://www.mulle-kybernetik.com/software/MkConsole/">MkConsole</a>,
or
<a href="http://projects.tynsoe.org/en/geektool/">GeekTool</a>
can display this file on the computer desktop, so that it
is readily visible.
</p>
<p>
To use a shadow file, edit your .taskrc configuration file,
and add two entries as shown:
</p>
<pre><code>shadow.file=/path/to/file
shadow.command=list pri:H</code></pre>
<p>
In this example the shadow file contains a report equivalent
to running "task list pri:H".
</p>
<p>
You can use any task command that generates a report, and of
course, you can specify any file name, provided the directory
it resides in already exists.
</p>
</div>
<br />
<br />
<div class="content">
<p>
Copyright 2006-2008, P. Beckingham. All rights reserved.
</p>
</div>
</div>
</td>
<td align="right" valign="top" width="200px">
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<script type="text/javascript"><!--
google_ad_client = "pub-9709799404235424";
/* Task Main */
google_ad_slot = "8660617875";
google_ad_width = 120;
google_ad_height = 600;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</td>
</tr>
</table>
</div>
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
var pageTracker = _gat._getTracker("UA-4737637-1");
pageTracker._initData();
pageTracker._trackPageview();
</script>
</body>
</html>

131
html/shell.html Normal file
View File

@@ -0,0 +1,131 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Interacting with the Shell</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="task.css" type="text/css" />
</head>
<body>
<div id="container">
<table>
<tr>
<td>
<div id="toolbar">
<a href="task.html">Home</a>
<a href="setup.html">Setup</a>
<a href="30second.html">30-second Tutorial</a>
<a href="simple.html">Simple</a>
<a href="advanced.html">Advanced</a>
<a href="shell.html">Shell</a>
<a href="config.html">Configuration</a>
<a href="color.html">Colors</a>
<a href="usage.html">Usage</a>
<a href="recur.html">Recurrence</a>
<a href="date.html">Date Handling</a>
<a href="troubleshooting.html">Troubleshooting</a>
<a href="versions.html">Old Versions</a>
<a href="links.html">Task on the Web</a>
</div>
<div id="content">
<br />
<br />
<br />
<h2 class="title"><a name="shell">Interacting with the Shell</a></h2>
<div class="content">
<p>
Certain characters are interpreted by the shell. For example, the
"&amp;". If you wish to include the &amp; in a task description,
you need to escape it, so the shell doesn't interpret it. For
example:
</p>
<pre><code>% task add Buy bread &amp; milk</code></pre>
<p>
This command is an error because of the &amp;. The shell will
consider this to be two commands:
</p>
<pre><code>% task add Buy bread &amp;
% milk</code></pre>
<p>
The shell treats the &amp; 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 &amp;
character:
</p>
<pre><code>% task add Buy bread \&amp; milk</code></pre>
<p>
Another is to quote the entire description, with either ' or "
characters:
</p>
<pre><code>% task add "Buy bread &amp; milk"</code></pre>
<p>
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.
</p>
</div>
<br />
<br />
<div class="content">
<p>
Copyright 2006-2008, P. Beckingham. All rights reserved.
</p>
</div>
</div>
</td>
<td align="right" valign="top" width="200px">
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<script type="text/javascript"><!--
google_ad_client = "pub-9709799404235424";
/* Task Main */
google_ad_slot = "8660617875";
google_ad_width = 120;
google_ad_height = 600;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</td>
</tr>
</table>
</div>
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
var pageTracker = _gat._getTracker("UA-4737637-1");
pageTracker._initData();
pageTracker._trackPageview();
</script>
</body>
</html>

356
html/simple.html Normal file
View File

@@ -0,0 +1,356 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Simple Usage</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="task.css" type="text/css" />
</head>
<body>
<div id="container">
<table>
<tr>
<td>
<div id="toolbar">
<a href="task.html">Home</a>
<a href="setup.html">Setup</a>
<a href="30second.html">30-second Tutorial</a>
<a href="simple.html">Simple</a>
<a href="advanced.html">Advanced</a>
<a href="shell.html">Shell</a>
<a href="config.html">Configuration</a>
<a href="color.html">Colors</a>
<a href="usage.html">Usage</a>
<a href="recur.html">Recurrence</a>
<a href="date.html">Date Handling</a>
<a href="troubleshooting.html">Troubleshooting</a>
<a href="versions.html">Old Versions</a>
<a href="links.html">Task on the Web</a>
</div>
<div id="content">
<br />
<br />
<br />
<h2 class="title"><a name="simple">Simple Usage</a></h2>
<div class="content">
<p>
Let us begin by adding some tasks:
</p>
<pre><code>% task add Book plane ticket
% task add Rent a tux
% task add Reserve a rental car
% task add Reserve a hotel room</code></pre>
<p>
That's it. You'll notice immediately that task has a very
minimalist interface. Let us take a look at those tasks:
</p>
<pre><code>% 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</code></pre>
<p>
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:
</p>
<pre><code>% task 2 delete
Permanently delete task? (y/n) y</code></pre>
<p>
Task wants you to confirm deletions. To remove the confirmation,
edit your .taskrc file and change the line:
</p>
<pre><code>confirmation=yes</code></pre>
<p>
to have a value of "no".
</p>
<p>
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:
</p>
<pre><code>% 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</code></pre>
<p>
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:
</p>
<p>
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:
</p>
<pre><code>% task 2 project:Wedding.Transport
% task ls
ID Project Pri Description
3 Family Send John a birthday card
2 Wedding.Transport Reserve a rental car
1 Wedding Book plane ticket</code></pre>
<p>
Task matches the leftmost part of the project when searching, so
projects may be abbreviated:
</p>
<pre><code>% task ls project:Wedding.Tra
ID Project Pri Description
2 Wedding.Transport Reserve a rental car</code></pre>
<p>
This way of matching projects can be used to see all tasks under
the "Wedding" project and all subprojects:
</p>
<pre><code>% task ls project:Wedding
ID Project Pri Description
2 Wedding.Transport Reserve a rental car
1 Wedding Book plane ticket</code></pre>
<p>
Let's reassign 2 back to the "Wedding" project:
</p>
<pre><code>% task 2 project:Wedding</code></pre>
<p>
Now that projects are assigned, we can look at just the
Wedding project tasks:
</p>
<pre><code>% task ls project:Wedding
ID Project Pri Description
1 Wedding Book plane ticket
2 Wedding Reserve a rental car</code></pre>
<p>
Any command arguments after the 'ls' are used for filtering the
output. We could also have requested:
</p>
<pre><code>% task ls ticket plane
ID Project Pri Description
1 Wedding Book plane ticket</code></pre>
<p>
Now let's prioritize. Priorities can be H, M or L (High, Medium,
Low).
</p>
<pre><code>% 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</code></pre>
<p>
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.
</p>
<p>
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:
</p>
<pre><code>% task add project:Wedding priority:H Book plane ticket<code></pre>
<p>
The 'ls' command provides the least information for each task. The
'list' command provides more:
</p>
<pre><code>% 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</code></pre>
<p>
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:
</p>
<pre><code>% 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</code></pre>
<p>
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:
</p>
<pre><code>color.due=red
color.due=on_blue
color.due=red on_blue
color.due=bold_red on_blue</code></pre>
<p>
Where color is one of the following:
</p>
<pre><code>black
blue
red
green
cyan
magenta
yellow
white</code></pre>
<p>
All colors are specified in this way. Take a look in .taskrc for
all the other color rules that you control.
</p>
<p>
Tagging tasks is a good way to group them, aside from specifying a
project. To add a tag to a task:
</p>
<pre><code>% task &lt;id&gt; +tag<code></pre>
<p>
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.
</p>
<pre><code>% 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</code></pre>
<p>
To remove a tag from a task, use the minus sign:
</p>
<pre><code>% task 3 -john</code></pre>
</div>
<br />
<br />
<div class="content">
<p>
Copyright 2006-2008, P. Beckingham. All rights reserved.
</p>
</div>
</div>
</td>
<td align="right" valign="top" width="200px">
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<script type="text/javascript"><!--
google_ad_client = "pub-9709799404235424";
/* Task Main */
google_ad_slot = "8660617875";
google_ad_width = 120;
google_ad_height = 600;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</td>
</tr>
</table>
</div>
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
var pageTracker = _gat._getTracker("UA-4737637-1");
pageTracker._initData();
pageTracker._trackPageview();
</script>
</body>
</html>

126
html/task.css Normal file
View File

@@ -0,0 +1,126 @@
body {
text-align: center;
margin: 0; padding: 1em;
}
#container {
width: 740px;
text-align: left;
margin: 0 auto; padding: 0;
}
#header {
height: 60px;
margin: 0 0 15px; padding: 0;
}
#page {}
#content {
width: 500px;
}
#header a:link,
#header a:visited {
color:#000;
text-decoration: none;
}
#header h1 {
font: bold 400% georgia, serif;
letter-spacing: -1px;
margin: 0;
float: left;
}
#header h2 {
font: normal 12px verdana, arial, sans-serif;
margin: 2.5em 0 0 0.8em;
float: left;
}
#content {}
#content h1,
#content h2,
#content h3,
#content h4,
#content h5 {
font-family: "lucidamac bold", "lucida grande", arial, sans-serif;
letter-spacing: -1px;
}
#content h1 {
font-size: 24px;
}
#content h2 {
font-size: 22px;
border-bottom: 1px dotted #000;
}
#content h3 {
font-size: 20px;
border-bottom: 1px dotted #bbb;
}
#content h4 {
font-size: 18px;
border-bottom: 1px dotted #bbb;
}
#content h5 {
font-size: 18px;
background: #ffd;
border-bottom: 1px dotted #bbb;
}
#content p {
line-height: 15px;
}
#content ul,
#content ol {
}
#content code {
font: normal 12px "bitstream vera sans mono", monaco "lucida console", "courier new", courier, serif;
}
#content pre {
color: #63FF00;
background: #000;
overflow: auto;
font: normal 12px "bitstream vera sans mono", monaco "lucida console", "courier new", courier, serif;
margin: 0.9em 0; padding: 8px;
}
dt {
font: bold 14px "lucida grande", verdana, arial, helvetica, sans-serif;
}
dd {
}
body {
font: normal 12px "lucida grande", verdana, arial, helvetica, sans-serif;
}
.small {
font: normal 10px verdana, arial, sans-serif;
}
.table_h {
background-color: #e0e0e0;
}
.table_d {
background-color: #f7f7f7;
}
input,
textarea { font: normal 12px "bitstream vera sans", verdana, sans-serif; }
abbr { border: none; }
cite { font-style: normal; }
a img { border: none; padding: 0; margin: 0; }

194
html/task.html Normal file
View File

@@ -0,0 +1,194 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Latest Release</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="task.css" type="text/css" />
</head>
<body>
<div id="container">
<table>
<tr>
<td>
<div id="toolbar">
<a href="task.html">Home</a>
<a href="setup.html">Setup</a>
<a href="30second.html">30-second Tutorial</a>
<a href="simple.html">Simple</a>
<a href="advanced.html">Advanced</a>
<a href="shell.html">Shell</a>
<a href="config.html">Configuration</a>
<a href="color.html">Colors</a>
<a href="usage.html">Usage</a>
<a href="recur.html">Recurrence</a>
<a href="date.html">Date Handling</a>
<a href="troubleshooting.html">Troubleshooting</a>
<a href="versions.html">Old Versions</a>
<a href="links.html">Task on the Web</a>
</div>
<div id="content">
<br />
<br />
<br />
<h1 class="title">Task</h1>
<p>
Task is an open source, command-line, TODO list manager.
</p>
<p>
Here you will find information on how to acquire, build, configure,
use and become proficient with the task program.
</p>
<ul>
<li><a href="setup.html">Quick Setup</a>
<li><a href="30second.html">30-second Tutorial</a>
<li><a href="simple.html">Simple Usage</a>
<li><a href="advanced.html">Advanced Usage</a>
<li><a href="shell.html">Interacting with the Shell</a>
<li><a href="config.html">Configuring Task</a>
<li><a href="color.html">Color</a>
<li><a href="usage.html">Task Command Usage</a>
<li><a href="recur.html">Recurring Tasks</a>
<li><a href="date.html">Date Handling</a>
<li><a href="troubleshooting.html">Troubleshooting</a>
<li><a href="versions.html">Old Versions</a>
<li><a href="filter.html">Filters</a>
<li><a href="shadow.html">Shadow Files</a>
</ul>
<p>
More documents are being written, and will be added here.
</p>
<p>
Alternatively, watch the
<a href="http://www.youtube.com/watch?v=D2Kn4DMOVSw">task movie</a>
which illustrates many of task's features.
</p>
<br />
<h2 class="title">Get the Latest Release</h2>
<div class="content">
<table>
<tr>
<td>Source:</td>
<td><a href="http://www.beckingham.net/task-1.5.0.tar.gz">task-1.5.0.tar.gz</a></td>
</tr>
<!--
<tr>
<td>Mac OS X 10.5 (Leopard) Intel-only:</td>
<td><a href="http://www.beckingham.net/task-1.5.0.pkg">task-1.5.0.pkg</a></td>
</tr>
<tr>
<td>
Debian package:
(Thanks to <a href="http://blog.rfquerin.org">Richard Querin</a>):
</td>
<td><a href="http://www.beckingham.net/task_1.5.0-1_i386.deb">task_1.5.0-1_i386.deb</a></td>
</tr>
-->
</table>
<h4>New in version 1.5.0 (?)</h4>
<ul>
<li>Removed deprecated TUTORIAL file.
<li>Removed support for the "showage" configuration variable.
<li>"task stop" can remove the start time from a started task.
<li>"task ghistory" now displays a differently aligned graph, allowing
easier comparison by month of tasks added versus completed and deleted.
<li>"task version" command now reports unrecognized configuration variables,
which may be spelling mistakes or deprecated variables.
<li>"configure --enable-debug" now supported to suppress compiler optimization
to allow debugging.
</ul>
<p>
(Find out <a href="versions.html">what was new in prior versions</a>)
</p>
<h2>Troubleshooting</h2>
<p>
Task has been built from source and tested in the following environments:
</p>
<ul>
<li>OS X 10.4 Tiger
<li>OS X 10.5 Leopard
<li>Fedora Core 8
<li>Fedora Core 9
<li>Ubuntu 7 Feisty Fawn
<li>Ubuntu 8 Hardy Heron
<li>Solaris 10
<li>Cygwin 1.5.25-14
</ul>
<p>
If you have difficulties building task, have found a bug, have a
suggestion for improvement, or a feature request, please send mail to
<a href="mailto:task@beckingham.net">task@beckingham.net</a>.
</p>
<p>
Take a look at the <a href="troubleshooting.html">troubleshooting guide</a>
for tips and workarounds to problems.
</p>
</div>
<br />
<br />
<div class="content">
<p>
Copyright 2006-2008, P. Beckingham. All rights reserved.
</p>
</div>
</div>
</td>
<td align="right" valign="top" width="200px">
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<script type="text/javascript"><!--
google_ad_client = "pub-9709799404235424";
/* Task Main */
google_ad_slot = "8660617875";
google_ad_width = 120;
google_ad_height = 600;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</td>
</tr>
</table>
</div>
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
var pageTracker = _gat._getTracker("UA-4737637-1");
pageTracker._initData();
pageTracker._trackPageview();
</script>
</body>
</html>

138
html/troubleshooting.html Normal file
View File

@@ -0,0 +1,138 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Task Troubleshooting Guide</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="task.css" type="text/css" />
</head>
<body>
<div id="container">
<table>
<tr>
<td>
<div id="toolbar">
<a href="task.html">Home</a>
<a href="setup.html">Setup</a>
<a href="30second.html">30-second Tutorial</a>
<a href="simple.html">Simple</a>
<a href="advanced.html">Advanced</a>
<a href="shell.html">Shell</a>
<a href="config.html">Configuration</a>
<a href="color.html">Colors</a>
<a href="usage.html">Usage</a>
<a href="recur.html">Recurrence</a>
<a href="date.html">Date Handling</a>
<a href="troubleshooting.html">Troubleshooting</a>
<a href="versions.html">Old Versions</a>
<a href="links.html">Task on the Web</a>
</div>
<div id="content">
<br />
<br />
<br />
<h1 class="title">Task Troubleshooting Guide</h1>
<p>
Here you will find tips and suggestions for making task behave
properly, and bug workarounds.
</p>
<br />
<h2 class="title">Segmentation Fault for certain commands</h2>
<div class="content">
<p>
Upgrading task to version 1.1.0, 1.2.0 and 1.3.0 can cause
segmentation faults. This is mostly occurring for Ubuntu users,
although there is no reason for it to be limited to Ubuntu.
</p>
<p>
Task 1.3.1 fixes this bug, but there is a workaround for users
of earlier versions. Add the following line to your ~/.taskrc
file:
</p>
<code><pre>dateformat=m/d/Y</pre></code>
<p class="small">
The "dateformat" setting is supported in task 1.1.0 and later.
</p>
</div>
<br />
<h2 class="title">How do I build task under Cygwin?</h2>
<div class="content">
<p>
Task is built the same way everywhere. But under Cygwin, you'll
need to make sure you have the following packages available
first:
<ul>
<li>gcc
<li>make
<li>libncurses-devel
<li>libncurses8
</ul>
The gcc and make packages allow you to compile the code, and
are therefore required, but the ncurses packages are optional.
Ncurses will allow task to determine the width of the window, and
therefore use the whole width and wrap text accordingly, for a
more aesthetically pleasing display.
</p>
</div>
<br />
<br />
<div class="content">
<p>
Copyright 2006-2008, P. Beckingham. All rights reserved.
</p>
</div>
</div>
</td>
<td align="right" valign="top" width="200px">
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<script type="text/javascript"><!--
google_ad_client = "pub-9709799404235424";
/* Task Main */
google_ad_slot = "8660617875";
google_ad_width = 120;
google_ad_height = 600;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</td>
</tr>
</table>
</div>
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
var pageTracker = _gat._getTracker("UA-4737637-1");
pageTracker._initData();
pageTracker._trackPageview();
</script>
</body>
</html>

144
html/usage.html Normal file
View File

@@ -0,0 +1,144 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Task Usage</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="task.css" type="text/css" />
</head>
<body>
<div id="container">
<table>
<tr>
<td>
<div id="toolbar">
<a href="task.html">Home</a>
<a href="setup.html">Setup</a>
<a href="30second.html">30-second Tutorial</a>
<a href="simple.html">Simple</a>
<a href="advanced.html">Advanced</a>
<a href="shell.html">Shell</a>
<a href="config.html">Configuration</a>
<a href="color.html">Colors</a>
<a href="usage.html">Usage</a>
<a href="recur.html">Recurrence</a>
<a href="date.html">Date Handling</a>
<a href="troubleshooting.html">Troubleshooting</a>
<a href="versions.html">Old Versions</a>
<a href="links.html">Task on the Web</a>
</div>
<div id="content">
<br />
<br />
<br />
<h2 class="title"><a name="usage">Command Usage<a></h2>
<div class="content">
<pre><code>task add [tags] [attrs] desc...
task list [tags] [attrs] desc...
task long [tags] [attrs] desc...
task ls [tags] [attrs] desc...
task completed [tags] [attrs] desc...
task ID [tags] [attrs] ["desc..."]
task ID /from/to/
task delete ID
task undelete ID
task info ID
task start ID
task stop ID
task done ID
task undo ID
task projects
task tags
task summary
task history
task ghistory
task next
task calendar
task active
task overdue
task oldest
task newest
task stats
task export
task color
task version
ID is the numeric identifier displayed by the 'task list' command
Tags are arbitrary words, any quantity:
+tag The + means add the tag
-tag The - means remove the tag
Attributes are:
project: Project name
priority: Priority
due: Due date
fg: Foreground color
bg: Background color
Any command or attribute name may be abbreviated if still unique:
task list project:Home
task li pro:Home
Some task descriptions need to be escaped because of the shell:
task add "quoted ' quote"
task add escaped \' quote
Many characters have special meaning to the shell, including:
$ ! ' " ( ) ; \ ` * ? { } [ ] < > | &amp; % # ~</code></pre>
<div>
<br />
<br />
<div class="content">
<p>
Copyright 2006-2008, P. Beckingham. All rights reserved.
</p>
</div>
</div>
</td>
<td align="right" valign="top" width="200px">
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<script type="text/javascript"><!--
google_ad_client = "pub-9709799404235424";
/* Task Main */
google_ad_slot = "8660617875";
google_ad_width = 120;
google_ad_height = 600;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</td>
</tr>
</table>
</div>
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
var pageTracker = _gat._getTracker("UA-4737637-1");
pageTracker._initData();
pageTracker._trackPageview();
</script>
</body>
</html>

300
html/versions.html Normal file
View File

@@ -0,0 +1,300 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Task Prior Versions</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="task.css" type="text/css" />
</head>
<body>
<div id="container">
<table>
<tr>
<td>
<div id="toolbar">
<a href="task.html">Home</a>
<a href="setup.html">Setup</a>
<a href="30second.html">30-second Tutorial</a>
<a href="simple.html">Simple</a>
<a href="advanced.html">Advanced</a>
<a href="shell.html">Shell</a>
<a href="config.html">Configuration</a>
<a href="color.html">Colors</a>
<a href="usage.html">Usage</a>
<a href="recur.html">Recurrence</a>
<a href="date.html">Date Handling</a>
<a href="troubleshooting.html">Troubleshooting</a>
<a href="versions.html">Old Versions</a>
<a href="links.html">Task on the Web</a>
</div>
<div id="content">
<br />
<br />
<br />
<h1 class="title">Task Prior Versions</h1>
<br />
<div class="content">
<p>
<h4>New in version 1.4.3 (11/1/2008)</h4>
<a href="http://www.beckingham.net/task-1.4.3.tar.gz">task-1.4.3.tar.gz</a>
<br />
Mac OS X 10.5 (Leopard) Intel-only:
<a href="http://www.beckingham.net/task-1.4.3.pkg">task-1.4.3.pkg</a>
<br />
Debian package: <a href="http://www.beckingham.net/task_1.4.3-1_i386.deb">task_1.4.3-1_i386.deb</a>
(Thanks to <a href="http://blog.rfquerin.org">Richard Querin</a>)
</p>
<ul>
<li>Fixed misleading task count at bottom of "info" report.
<li>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".
<li>Task now displays a message whenever a shadow file is updated, if the
"shadow.notify" configuration variable is set "on".
<li>Fixed bug whereby adding a task with a \n, \r or \f did not fail properly.
<li>Removed "task usage" command.
<li>Added documentation for Shadow files.
<li>Added documentation for task filters.
</ul>
</p>
<p>
<h4>New in version 1.4.2 (9/18/2008)</h4>
<a href="http://www.beckingham.net/task-1.4.2.tar.gz">task-1.4.2.tar.gz</a>
<br />
Mac OS X 10.5 (Leopard) Intel-only:
<a href="http://www.beckingham.net/task-1.4.2.pkg">task-1.4.2.pkg</a>
<br />
Debian package: <a href="http://www.beckingham.net/task_1.4.2-1_i386.deb">task_1.4.2-1_i386.deb</a>
(Thanks to <a href="http://blog.rfquerin.org">Richard Querin</a>)
</p>
<ul>
<li>"task undo" can now retract a "task done" command, provided no
reports have been run.
<li>Task now correctly sorts on entire strings, instead of just the
first character (thanks to Andy Lester).
<li>Task now uses dashes (-----) to underline column headings when
color is disabled (thanks to Vincent Fleuranceau).
<li>Task now allows mixed case attribute names (pri:, PRI:, Pri: ...)
and commands (add, ADD, Add ...) (thanks to Vincent Fleuranceau).
<li>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).
<li>Task supports improved word-wrapping to the terminal width.
<li>Task now supports "default.command" configuration variable (for example
it could contain "list due:tomorrow") which is the command that is run
whenever task is invoked with no arguments.
<li>Task supports modifying the existing description of a task, with the
following syntax: task &lt;id&gt; "new description ...".
<li>Fixed bug so that relative dates in filters (task list due:eom,
task list due:tomorrow, task list due:23rd ...) are now properly
supported.
<li>Fixed bug so that source now properly includes &lt;string.h&gt; in
order to build clean using gcc 4.3 (thanks to H. İbrahim Güngör)
</ul>
<p>
<h4>New in version 1.4.1 (7/18/2008)</h4>
<a href="http://www.beckingham.net/task-1.4.1.tar.gz">task-1.4.1.tar.gz</a>
<br />
Mac OS X 10.5 (Leopard) Intel-only:
<a href="http://www.beckingham.net/task-1.4.1.pkg">task-1.4.1.pkg</a>
<br />
Debian package: <a href="http://www.beckingham.net/task_1.4.1-1_i386.deb">task_1.4.1-1_i386.deb</a>
(Thanks to <a href="http://blog.rfquerin.org">Richard Querin</a>)
</p>
<ul>
<li>Fixed bug: Descriptions could not be altered with "task 123 New description"
<li>Tweak: For "task calendar" month names are now centered over the month
<li>Removed TUTORIAL file contents in favor of online version
<li>New Mac Intel-only Leopard (10.5) binary package
</ul>
<p>
<h4>New in version 1.4.0 (7/10/2008)</h4>
Source: <a href="http://www.beckingham.net/task-1.4.0.tar.gz">task-1.4.0.tar.gz</a>
<br />
Debian package: <a href="http://www.beckingham.net/task_1.4.0-1_i386.deb">task_1.4.0-1_i386.deb</a>
(Thanks to <a href="http://blog.rfquerin.org">Richard Querin</a>)
</p>
<ul>
<li>Added new <a href="recur.html">recurring tasks</a> feature
<li>Added "task undelete" feature to restore a (very) recently deleted
task
<li>Added averages to the "task history" report
<li>Added bar chart history report "task ghistory"
<li>Added support for rc:&lt;file&gt; to allow override of the default
~/.taskrc file
<li>Added support for relative due: dates, such as "tomorrow", "friday",
"23rd", "eom"
<li>Added support for task filtering on all reports
<li>Automatically shuts off color, ncurses when output is not to a tty
<li>Added support for the ~ character in .taskrc data.location, for flexibility
<li>Allows colons on the description, provided what is to the left of the colon
is not a standard attribute name
<li>Fixed bug where Esc[0m sequences were being emitted for no good reason
<li>Fixed bug where table headers are underlined when color is turned off
<li>Fixed bug where adding a blank priority resulted in an assigned garbage value
<li>Fixed bug parsing date "07/08/2008" when using dateformat "m/d/Y"
</ul>
<p>
<h4>New in version 1.3.1</h4>
Source: <a href="http://www.beckingham.net/task-1.3.1.tar.gz">task-1.3.1.tar.gz</a>
<br />
Debian package: <a href="http://www.beckingham.net/task_1.3.1-1_i386.deb">task_1.3.1-1_i386.deb</a>
(Thanks to <a href="http://blog.rfquerin.org">Richard Querin</a>)
</p>
<ul>
<li>New configuration variable "defaultwidth" determines the width
of windows in the absense of ncurses support
<li>Fixed bug where "showage" configuration variable was not being
oberved by the "task long" report
<li>Fixed bug causing segmentation faults (mostly for Ubuntu users)
when various commands are run
<li>Fixed bug so that task now will recreate a missing ~/.taskrc file,
OR a missing ~/.task directory
</ul>
<p>
<h4>New in version 1.3.0</h4>
Source: <a href="http://www.beckingham.net/task-1.3.0.tar.gz">task-1.3.0.tar.gz</a>
<br />
Debian package: <a href="http://www.beckingham.net/task_1.3.0-0_i386.deb">task_1.3.0-0_i386.deb</a>
(Thanks to <a href="http://blog.rfquerin.org">Richard Querin</a>)
</p>
<ul>
<li>"task calendar" now displays multiple months per line, adjustable
by the "monthsperline" configuration variable. Feature added by
Damian Glenny
<li>Displays shorter message when a command is entered incorrectly,
and the full usage for "task help"
<li>"task export" can now filter tasks like the reports
<li>"task oldest" shows the oldest tasks
<li>"task newest" shows the newest tasks
<li>Fixed bug where task generates a segmentation fault for several
commands, when no "dateformat" configuration variable was present
<li>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
<li>Fixed bug whereby "1 wks" was being improperly pluralized
</ul>
<p>
<h4>New in version 1.2.0</h4>
Source: <a href="http://www.beckingham.net/task-1.2.0.tar.gz">task-1.2.0.tar.gz</a>
<br />
Debian package: <a href="http://www.beckingham.net/task_1.2.0-1_i386.deb">task_1.2.0-1_i386.deb</a>
(Thanks to <a href="http://blog.rfquerin.org">Richard Querin</a>)
</p>
<ul>
<li>Subprojects supported - please see documentation below, or TUTORIAL
file
<li>"dateformat" configuration variable now properly used to parse as
well as render dates
<li>"task list x" now performs a caseless comparison between "x" and
the task description
<li>"showage" configuration variable determines whether the "Age" column
should appear on the "task list" and "task next" reports
<li>Improvements to the TUTORIAL file and this page
</ul>
<p>
<h4>New in version 1.1.0</h4>
Source: <a href="http://www.beckingham.net/task-1.1.0.tar.gz">task-1.1.0.tar.gz</a>
<br />
Debian package: <a href="http://www.beckingham.net/task_1.1.0-1_i386.deb">task_1.1.0-1_i386.deb</a>
(Thanks to <a href="http://blog.rfquerin.org">Richard Querin</a>)
</p>
<ul>
<li>"blanklines" configuration variable to stop displaying unnecessary
white space and thus work better on small-screen devices
<li>"dateformat" configuration now determines how dates are formatted
<li>Better formatting of "task tags" output
<li>This home page set up, with TUTORIAL
<li>Added tags to the "task long" report
</ul>
<p>
<h4>New in version 1.0.1</h4>
Source: <a href="http://www.beckingham.net/task-1.0.1.tar.gz">task-1.0.1.tar.gz</a>
</p>
<ul>
<li>Fixed bug where the UUID generator not properly terminating strings
<li>Fixed bug where srandom/srand not called prior to custom UUID generation
</ul>
<p>
<h4>Version 1.0.0</h4>
Source: <a href="http://www.beckingham.net/task-1.0.0.tar.gz">task-1.0.0.tar.gz</a>
</p>
<p>
Task 1.0.0 was the first publicly available version of task.
</p>
</div>
<br />
<br />
<div class="content">
<p>
Copyright 2006-2008, P. Beckingham. All rights reserved.
</p>
</div>
</div>
</td>
<td align="right" valign="top" width="200px">
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<script type="text/javascript"><!--
google_ad_client = "pub-9709799404235424";
/* Task Main */
google_ad_slot = "8660617875";
google_ad_width = 120;
google_ad_height = 600;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</td>
</tr>
</table>
</div>
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
var pageTracker = _gat._getTracker("UA-4737637-1");
pageTracker._initData();
pageTracker._trackPageview();
</script>
</body>
</html>

View File

@@ -1,17 +0,0 @@
Real Parsing
define grammar for command line
implement flex/bison parser
User-Defined Reports
report.xxx=id,project(2+),priority(1-),description
change all list-based reports to user-defined
Generalized Report Writer
provide column list, sort order, filter
Test Suite
allow .taskrc override
debug=on to cause all cout to be csv
regression tests for every bug, command, feature

View File

@@ -98,7 +98,7 @@ task history History shows general activity - how
completed etc, by month
And that's it. There are more commands than this
covered in the TUTORIAL file, but this should give
covered in the online documentation, but this should give
the basic idea.
Thank you for watching.

View File

@@ -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:

View File

@@ -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:

View File

@@ -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:

View File

@@ -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:

View File

@@ -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:

View File

@@ -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:

View File

@@ -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:

View File

@@ -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:

View File

@@ -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:

View File

@@ -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:

View File

@@ -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:

1
src/.gitignore vendored
View File

@@ -1,2 +1 @@
./Makefile
*.o

View File

@@ -27,8 +27,11 @@
#include <iostream>
#include <fstream>
#include <sstream>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <stdlib.h>
#include <pwd.h>
#include "task.h"
#include "Config.h"
@@ -84,40 +87,34 @@ bool Config::load (const std::string& file)
}
////////////////////////////////////////////////////////////////////////////////
void Config::createDefault (const std::string& file)
void Config::createDefault (const std::string& home)
{
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;
}
}
// Strip trailing slash off home directory, if necessary.
std::string terminatedHome = home;
if (home[home.length () - 1] == '/')
terminatedHome = home.substr (0, home.length () - 1);
if (taskDir != "")
// Determine default names of init file and task directory.
std::string rcFile = terminatedHome + "/.taskrc";
std::string dataDir = terminatedHome + "/.task";;
// If rcFile is not found, offer to create one.
if (-1 == access (rcFile.c_str (), F_OK))
{
if (confirm (
"A configuration file could not be found in "
+ rcFile
+ "\n\n"
+ "Would you like a sample .taskrc created, so task can proceed?"))
{
// Create a sample .taskrc file.
FILE* out;
if ((out = fopen (file.c_str (), "w")))
if ((out = fopen (rcFile.c_str (), "w")))
{
fprintf (out, "data.location=%s\n", taskDir.c_str ());
fprintf (out, "command.logging=off\n");
fprintf (out, "data.location=%s\n", dataDir.c_str ());
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, "dateformat=m/d/Y\n");
fprintf (out, "showage=yes\n");
fprintf (out, "monthsperline=1\n");
fprintf (out, "curses=on\n");
fprintf (out, "color=on\n");
@@ -132,32 +129,27 @@ void Config::createDefault (const std::string& file)
fprintf (out, "#color.tag.bug=yellow\n");
fprintf (out, "#color.project.home=on_green\n");
fprintf (out, "#color.keyword.car=on_blue\n");
fprintf (out, "#shadow.file=%s/shadow.txt\n", dataDir.c_str ());
fprintf (out, "#shadow.command=list\n");
fprintf (out, "#shadow.notify=on\n");
fprintf (out, "#default.command=list\n");
fclose (out);
// Now set the live values.
set ("data.location", taskDir);
set ("command.logging", "off");
set ("confirmation", "yes");
set ("next", 1);
set ("dateformat", "m/d/Y");
set ("showage", "yes");
set ("monthsperline", 3);
set ("curses", "on");
set ("color", "on");
set ("color.overdue", "red");
set ("color.active", "cyan");
set ("color.tagged", "yellow");
std::cout << "Done." << std::endl;
}
}
}
this->load (rcFile);
if (-1 == access (dataDir.c_str (), F_OK))
mkdir (dataDir.c_str (), S_IRWXU);
}
////////////////////////////////////////////////////////////////////////////////
// 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));
}
@@ -165,7 +157,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)
{
@@ -174,7 +166,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];
}
@@ -182,7 +174,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)
{

View File

@@ -40,10 +40,10 @@ public:
bool load (const std::string&);
void createDefault (const std::string&);
const std::string& get (const char*);
const std::string& get (const char*, const char*);
const std::string& get (const std::string&);
const std::string& get (const std::string&, const std::string&);
const std::string get (const char*);
const std::string get (const char*, const char*);
const std::string get (const std::string&);
const std::string get (const std::string&, const std::string&);
bool get (const std::string&, bool);
int get (const std::string&, const int);
double get (const std::string&, const double);

View File

@@ -63,6 +63,10 @@ Date::Date (const std::string& mdy, const std::string& format /* = "m/d/Y" */)
int day = 0;
int year = 0;
// 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)
@@ -78,8 +82,8 @@ Date::Date (const std::string& mdy, const std::string& format /* = "m/d/Y" */)
}
if (i + 1 < mdy.length () &&
mdy[i + 0] == '1' &&
(mdy[i + 1] == '0' || mdy[i + 1] == '1' || mdy[i + 1] == '2'))
(mdy[i + 0] == '0' || mdy[i + 0] == '1') &&
::isdigit (mdy[i + 1]))
{
month = ::atoi (mdy.substr (i, 2).c_str ());
i += 2;
@@ -98,8 +102,8 @@ Date::Date (const std::string& mdy, const std::string& format /* = "m/d/Y" */)
throw std::string ("\"") + mdy + "\" is not a valid date.";
}
if (i + 1 < mdy.length () &&
(mdy[i + 0] == '1' || mdy[i + 0] == '2' || mdy[i + 0] == '3') &&
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 ());
@@ -184,7 +188,7 @@ Date::Date (const std::string& mdy, const std::string& format /* = "m/d/Y" */)
t.tm_mon = month - 1;
t.tm_year = year - 1900;
mT = mktime (&t);
mT = mktime (&t);
}
////////////////////////////////////////////////////////////////////////////////
@@ -313,7 +317,7 @@ std::string Date::monthName (int month)
assert (month > 0);
assert (month <= 12);
return months[month -1];
return months[month - 1];
}
////////////////////////////////////////////////////////////////////////////////
@@ -357,6 +361,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
{
@@ -414,6 +434,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)
{
@@ -441,3 +491,164 @@ time_t Date::operator- (const Date& rhs)
}
////////////////////////////////////////////////////////////////////////////////
// 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;
}
////////////////////////////////////////////////////////////////////////////////

View File

@@ -52,11 +52,12 @@ public:
static std::string monthName (int);
static void dayName (int, std::string&);
static std::string dayName (int);
int dayOfWeek () const;
static int dayOfWeek (const std::string&);
int month () const;
int day () const;
int year () const;
int dayOfWeek () const;
bool operator== (const Date&);
bool operator!= (const Date&);
@@ -64,6 +65,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);
@@ -71,6 +75,9 @@ public:
time_t operator- (const Date&);
private:
bool isRelativeDate (const std::string&);
protected:
time_t mT;
};

View File

@@ -1,3 +1,2 @@
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 = Config.cpp Date.cpp T.cpp TDB.cpp Table.cpp Grid.cpp color.cpp parse.cpp task.cpp command.cpp report.cpp util.cpp text.cpp rules.cpp Config.h Date.h T.h TDB.h Table.h Grid.h color.h task.h

View File

@@ -45,8 +45,8 @@ 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)
parse.$(OBJEXT) task.$(OBJEXT) command.$(OBJEXT) \
report.$(OBJEXT) util.$(OBJEXT) text.$(OBJEXT) rules.$(OBJEXT)
task_OBJECTS = $(am_task_OBJECTS)
task_LDADD = $(LDADD)
DEFAULT_INCLUDES = -I. -I$(top_builddir)@am__isrc@
@@ -154,8 +154,7 @@ 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
task_SOURCES = Config.cpp Date.cpp T.cpp TDB.cpp Table.cpp Grid.cpp color.cpp parse.cpp task.cpp command.cpp report.cpp util.cpp text.cpp rules.cpp Config.h Date.h T.h TDB.h Table.h Grid.h color.h task.h
all: all-am
.SUFFIXES:
@@ -229,7 +228,9 @@ distclean-compile:
@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)/command.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parse.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/report.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@

View File

@@ -247,7 +247,7 @@ void T::setSubstitution (const std::string& from, const std::string& to)
// uuid status [tags] [attributes] description
//
// uuid \x{8}-\x{4}-\x{4}-\x{4}-\x{12}
// status - O X
// status - + X r
// tags \w+ \s ...
// attributes \w+:\w+ \s ...
// description .+
@@ -261,6 +261,7 @@ const std::string T::compose () const
if (mStatus == pending) line += "- [";
else if (mStatus == completed) line += "+ [";
else if (mStatus == deleted) line += "X [";
else if (mStatus == recurring) line += "r [";
// Tags
for (size_t i = 0; i < mTags.size (); ++i)
@@ -303,6 +304,7 @@ const std::string T::composeCSV ()
if (mStatus == pending) line += "'pending',";
else if (mStatus == completed) line += "'completed',";
else if (mStatus == deleted) line += "'deleted',";
else if (mStatus == recurring) line += "'recurring',";
// Tags
line += "'";
@@ -422,7 +424,8 @@ void T::parse (const std::string& line)
mStatus = line[37] == '+' ? completed
: line[37] == 'X' ? deleted
: pending;
: line[37] == 'r' ? recurring
: pending;
size_t openTagBracket = line.find ("[");
size_t closeTagBracket = line.find ("]", openTagBracket);
@@ -447,7 +450,7 @@ void T::parse (const std::string& line)
{
std::vector <std::string> pair;
split (pair, pairs[i], ':');
if (pair[1] != "")
if (pair.size () == 2)
mAttributes[pair[0]] = pair[1];
}
@@ -499,7 +502,7 @@ int T::determineVersion (const std::string& line)
line[18] == '-' &&
line[23] == '-' &&
line[36] == ' ' &&
(line[37] == '-' || line[37] == '+' || line[37] == 'X'))
(line[37] == '-' || line[37] == '+' || line[37] == 'X' || line[37] == 'r'))
return 2;
// Version 3?
@@ -518,3 +521,11 @@ int T::determineVersion (const std::string& line)
}
////////////////////////////////////////////////////////////////////////////////
// TODO Expand this method into a full-blown task validation check.
bool T::validate () const
{
// TODO Verify until > due
return true;
}
////////////////////////////////////////////////////////////////////////////////

View File

@@ -32,12 +32,12 @@
#include <map>
// Length of longest line.
#define T_LINE_MAX 8192
#define T_LINE_MAX 32768
class T
{
public:
enum status {pending, completed, deleted};
enum status {pending, completed, deleted, recurring};
T (); // Default constructor
T (const std::string&); // Initialize by parsing storage format
@@ -80,6 +80,7 @@ public:
const std::string compose () const;
const std::string composeCSV ();
void parse (const std::string&);
bool validate () const;
private:
int determineVersion (const std::string&);

View File

@@ -37,7 +37,7 @@
TDB::TDB ()
: mPendingFile ("")
, mCompletedFile ("")
, mLogFile ("")
, mId (1)
{
}
@@ -49,11 +49,10 @@ TDB::~TDB ()
////////////////////////////////////////////////////////////////////////////////
void TDB::dataDirectory (const std::string& directory)
{
if (! access (directory.c_str (), F_OK))
if (! access (expandPath (directory).c_str (), F_OK))
{
mPendingFile = directory + "/pending.data";
mCompletedFile = directory + "/completed.data";
mLogFile = directory + "/command.log";
}
else
{
@@ -67,7 +66,7 @@ void TDB::dataDirectory (const std::string& directory)
////////////////////////////////////////////////////////////////////////////////
// Combine allPendingT with allCompletedT.
// Note: this method is O(N1) + O(N2), where N2 is not bounded.
bool TDB::allT (std::vector <T>& all) const
bool TDB::allT (std::vector <T>& all)
{
all.clear ();
@@ -95,20 +94,20 @@ bool TDB::allT (std::vector <T>& all) const
////////////////////////////////////////////////////////////////////////////////
// Only accesses to the pending file result in Tasks that have assigned ids.
bool TDB::pendingT (std::vector <T>& all) const
bool TDB::pendingT (std::vector <T>& all)
{
all.clear ();
std::vector <std::string> lines;
if (readLockedFile (mPendingFile, lines))
{
int id = 1;
mId = 1;
std::vector <std::string>::iterator it;
for (it = lines.begin (); it != lines.end (); ++it)
{
T t (*it);
t.setId (id++);
t.setId (mId++);
if (t.getStatus () == T::pending)
all.push_back (t);
}
@@ -121,20 +120,20 @@ bool TDB::pendingT (std::vector <T>& all) const
////////////////////////////////////////////////////////////////////////////////
// Only accesses to the pending file result in Tasks that have assigned ids.
bool TDB::allPendingT (std::vector <T>& all) const
bool TDB::allPendingT (std::vector <T>& all)
{
all.clear ();
std::vector <std::string> lines;
if (readLockedFile (mPendingFile, lines))
{
int id = 1;
mId = 1;
std::vector <std::string>::iterator it;
for (it = lines.begin (); it != lines.end (); ++it)
{
T t (*it);
t.setId (id++);
t.setId (mId++);
all.push_back (t);
}
@@ -188,7 +187,7 @@ bool TDB::allCompletedT (std::vector <T>& all) const
}
////////////////////////////////////////////////////////////////////////////////
bool TDB::deleteT (const T& t) const
bool TDB::deleteT (const T& t)
{
T task (t);
@@ -212,7 +211,7 @@ bool TDB::deleteT (const T& t) const
}
////////////////////////////////////////////////////////////////////////////////
bool TDB::completeT (const T& t) const
bool TDB::completeT (const T& t)
{
T task (t);
@@ -236,10 +235,9 @@ bool TDB::completeT (const T& t) const
}
////////////////////////////////////////////////////////////////////////////////
bool TDB::addT (const T& t) const
bool TDB::addT (const T& t)
{
T task (t);
std::vector <std::string> tags;
task.getTags (tags);
@@ -254,14 +252,17 @@ bool TDB::addT (const T& t) const
}
}
if (task.getStatus () == T::pending)
if (task.getStatus () == T::pending ||
task.getStatus () == T::recurring)
{
return writePending (task);
}
return writeCompleted (task);
}
////////////////////////////////////////////////////////////////////////////////
bool TDB::modifyT (const T& t) const
bool TDB::modifyT (const T& t)
{
T modified (t);
@@ -285,58 +286,6 @@ bool TDB::modifyT (const T& t) const
return overwritePending (pending);
}
////////////////////////////////////////////////////////////////////////////////
bool TDB::logRead (std::vector <std::string>& entries) const
{
entries.clear ();
return readLockedFile (mLogFile, entries);
}
////////////////////////////////////////////////////////////////////////////////
bool TDB::logCommand (int argc, char** argv) const
{
// Get time info.
time_t now;
time (&now);
struct tm* t = localtime (&now);
// Generate timestamp.
char timestamp[20];
sprintf (timestamp, "%04d-%02d-%02d %02d:%02d:%02d",
t->tm_year + 1900,
t->tm_mon + 1,
t->tm_mday,
t->tm_hour,
t->tm_min,
t->tm_sec);
std::string command = timestamp;
command += " \"";
for (int i = 0; i < argc; ++i)
command += std::string (i ? " " : "") + argv[i];
command += "\"\n";
if (! access (mLogFile.c_str (), F_OK | W_OK))
{
FILE* out;
if ((out = fopen (mLogFile.c_str (), "a")))
{
#ifdef HAVE_FLOCK
int retry = 0;
while (flock (fileno (out), LOCK_EX) && ++retry <= 3)
delay (0.25);
#endif
fputs (command.c_str (), out);
fclose (out);
return true;
}
}
return false;
}
////////////////////////////////////////////////////////////////////////////////
bool TDB::lock (FILE* file) const
{
@@ -348,7 +297,7 @@ bool TDB::lock (FILE* file) const
}
////////////////////////////////////////////////////////////////////////////////
bool TDB::overwritePending (std::vector <T>& all) const
bool TDB::overwritePending (std::vector <T>& all)
{
// Write a single task to the pending file
FILE* out;
@@ -365,6 +314,7 @@ bool TDB::overwritePending (std::vector <T>& all) const
fputs (it->compose ().c_str (), out);
fclose (out);
dbChanged ();
return true;
}
@@ -372,7 +322,7 @@ bool TDB::overwritePending (std::vector <T>& all) const
}
////////////////////////////////////////////////////////////////////////////////
bool TDB::writePending (const T& t) const
bool TDB::writePending (const T& t)
{
// Write a single task to the pending file
FILE* out;
@@ -387,6 +337,7 @@ bool TDB::writePending (const T& t) const
fputs (t.compose ().c_str (), out);
fclose (out);
dbChanged ();
return true;
}
@@ -394,7 +345,7 @@ bool TDB::writePending (const T& t) const
}
////////////////////////////////////////////////////////////////////////////////
bool TDB::writeCompleted (const T& t) const
bool TDB::writeCompleted (const T& t)
{
// Write a single task to the pending file
FILE* out;
@@ -409,6 +360,8 @@ bool TDB::writeCompleted (const T& t) const
fputs (t.compose ().c_str (), out);
fclose (out);
// Note: No call to dbChanged here because this call never occurs by itself.
// It is always accompanied by an overwritePending call.
return true;
}
@@ -453,7 +406,7 @@ bool TDB::readLockedFile (
}
////////////////////////////////////////////////////////////////////////////////
int TDB::gc () const
int TDB::gc ()
{
int count = 0;
@@ -468,7 +421,8 @@ int TDB::gc () const
for (it = all.begin (); it != all.end (); ++it)
{
// Some tasks stay in the pending file.
if (it->getStatus () == T::pending)
if (it->getStatus () == T::pending ||
it->getStatus () == T::recurring)
pending.push_back (*it);
// Others are transferred to the completed file.
@@ -479,10 +433,35 @@ int TDB::gc () const
}
}
// Dump all clean tasks into pending.
overwritePending (pending);
// Dump all clean tasks into pending. But don't bother unless at least one
// task was transferred.
if (count)
overwritePending (pending);
return count;
}
////////////////////////////////////////////////////////////////////////////////
int TDB::nextId ()
{
return mId++;
}
////////////////////////////////////////////////////////////////////////////////
void TDB::onChange (void (*callback)())
{
if (callback)
mOnChange.push_back (callback);
}
////////////////////////////////////////////////////////////////////////////////
// Iterate over callbacks.
void TDB::dbChanged ()
{
foreach (i, mOnChange)
if (*i)
(**i) ();
}
////////////////////////////////////////////////////////////////////////////////

View File

@@ -38,30 +38,34 @@ public:
~TDB ();
void dataDirectory (const std::string&);
bool allT (std::vector <T>&) const;
bool pendingT (std::vector <T>&) const;
bool allPendingT (std::vector <T>&) const;
bool allT (std::vector <T>&);
bool pendingT (std::vector <T>&);
bool allPendingT (std::vector <T>&);
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 deleteT (const T&);
bool completeT (const T&);
bool addT (const T&);
bool modifyT (const T&);
bool logRead (std::vector <std::string>&) const;
bool logCommand (int, char**) const;
int gc () const;
int gc ();
int nextId ();
void onChange (void (*)());
private:
bool lock (FILE*) const;
bool overwritePending (std::vector <T>&) const;
bool writePending (const T&) const;
bool writeCompleted (const T&) const;
bool overwritePending (std::vector <T>&);
bool writePending (const T&);
bool writeCompleted (const T&);
bool readLockedFile (const std::string&, std::vector <std::string>&) const;
void dbChanged ();
private:
std::string mPendingFile;
std::string mCompletedFile;
std::string mLogFile;
int mId;
std::vector <void (*)()> mOnChange;
};
#endif

View File

@@ -54,6 +54,7 @@
Table::Table ()
: mRows (0)
, mIntraPadding (1)
, mDashedUnderline (false)
, mTablePadding (0)
, mTableWidth (0)
, mSuppressWS (false)
@@ -103,6 +104,12 @@ void Table::setTableWidth (int width)
mTableWidth = width;
}
////////////////////////////////////////////////////////////////////////////////
void Table::setTableDashedUnderline ()
{
mDashedUnderline = true;
}
////////////////////////////////////////////////////////////////////////////////
int Table::addColumn (const std::string& col)
{
@@ -582,7 +589,57 @@ const std::string Table::formatHeader (
fg, bg,
Text::colorize (
decoration, Text::nocolor,
pad + preJust+ data + postJust + pad) + intraPad);
pad + preJust + data + postJust + pad) + intraPad);
}
////////////////////////////////////////////////////////////////////////////////
// data One Data to be rendered
// width 8 Max data width for column/specified width
// padding 1 Extra padding around data
// intraPadding 0 Extra padding between columns only
// justification right Alignment withing padding
//
// Returns:
// "------- "
// ------- data
// ^ ^ padding
// ^ intraPadding
// ^^^^^^^^ width
// ^ ^ fg/bg
//
const std::string Table::formatHeaderDashedUnderline (
int col,
int width,
int padding)
{
assert (width > 0);
Text::color fg = getHeaderFg (col);
Text::color bg = getHeaderBg (col);
Text::color decoration = getHeaderUnderline (col);
std::string data = "";
for (int i = 0; i < width; ++i)
data += '-';
std::string pad = "";
std::string intraPad = "";
std::string attrOn = "";
std::string attrOff = "";
for (int i = 0; i < padding; ++i)
pad += " ";
// Place the value within the available space - justify.
if (col < (signed) mColumns.size () - 1)
for (int i = 0; i < getIntraPadding (); ++i)
intraPad += " ";
return Text::colorize (
fg, bg,
Text::colorize (
decoration, Text::nocolor,
pad + data + pad) + intraPad);
}
////////////////////////////////////////////////////////////////////////////////
@@ -758,12 +815,12 @@ void Table::sort (std::vector <int>& order)
break;
case ascendingCharacter:
if ((char)*left > (char)*right)
if ((std::string)*left > (std::string)*right)
SWAP
break;
case descendingCharacter:
if ((char)*left < (char)*right)
if ((std::string)*left < (std::string)*right)
SWAP
break;
@@ -861,13 +918,24 @@ const std::string Table::render ()
// Print column headers in column order.
std::string output;
std::string underline;
for (size_t col = 0; col < mColumns.size (); ++col)
{
output += formatHeader (
col,
mCalculatedWidth[col],
mColumnPadding[col]);
if (mDashedUnderline)
underline += formatHeaderDashedUnderline (
col,
mCalculatedWidth[col],
mColumnPadding[col]);
}
output += "\n";
if (underline.length ())
output += underline + "\n";
// Determine row order, according to sort options.
std::vector <int> order;

View File

@@ -51,6 +51,7 @@ public:
void setTablePadding (int);
void setTableIntraPadding (int);
void setTableWidth (int);
void setTableDashedUnderline ();
int addColumn (const std::string&);
void setColumnColor (int, Text::color, Text::color);
@@ -98,6 +99,7 @@ private:
just getJustification (const int, const int);
just getHeaderJustification (const int);
const std::string formatHeader (const int, const int, const int);
const std::string formatHeaderDashedUnderline (const int, const int, const int);
void formatCell (const int, const int, const int, const int, std::vector <std::string>&, std::string&);
void optimize (std::string&);
void sort (std::vector <int>&);
@@ -110,6 +112,7 @@ private:
std::map <std::string, std::string> mFg;
std::map <std::string, std::string> mBg;
std::map <std::string, std::string> mUnderline;
bool mDashedUnderline;
// Padding...
int mTablePadding;

View File

@@ -242,7 +242,11 @@ std::string decode (color c)
////////////////////////////////////////////////////////////////////////////////
std::string colorize (color fg, color bg, const std::string& input)
{
return decode (fg) + decode (bg) + input + decode (off);
if (input.length ())
if (fg != nocolor || bg != nocolor)
return decode (fg) + decode (bg) + input + decode (off);
return input;
}
////////////////////////////////////////////////////////////////////////////////

783
src/command.cpp Normal file
View File

@@ -0,0 +1,783 @@
////////////////////////////////////////////////////////////////////////////////
// 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 <iomanip>
#include <sstream>
#include <fstream>
#include <sys/types.h>
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <pwd.h>
#include <time.h>
#include "Config.h"
#include "Date.h"
#include "Table.h"
#include "color.h"
#include "TDB.h"
#include "T.h"
#include "task.h"
#ifdef HAVE_LIBNCURSES
#include <ncurses.h>
#endif
////////////////////////////////////////////////////////////////////////////////
void handleAdd (TDB& tdb, T& task, Config& conf)
{
char entryTime[16];
sprintf (entryTime, "%u", (unsigned int) time (NULL));
task.setAttribute ("entry", entryTime);
std::map <std::string, std::string> atts;
task.getAttributes (atts);
foreach (i, atts)
if (i->second == "")
task.removeAttribute (i->first);
// Recurring tasks get a special status.
if (task.getAttribute ("due") != "" &&
task.getAttribute ("recur") != "")
{
task.setStatus (T::recurring);
task.setAttribute ("mask", "");
}
// Override with default.project, if not specified.
if (task.getAttribute ("project") == "")
task.setAttribute ("project", conf.get ("default.project", ""));
// Override with default.priority, if not specified.
if (task.getAttribute ("priority") == "")
{
std::string defaultPriority = conf.get ("default.priority", "");
if (validPriority (defaultPriority))
task.setAttribute ("priority", defaultPriority);
}
// Disallow blank descriptions.
if (task.getDescription () == "")
throw std::string ("Cannot add a task that is blank, or contains <CR> or <LF> characters.");
if (!tdb.addT (task))
throw std::string ("Could not create new task.");
}
////////////////////////////////////////////////////////////////////////////////
std::string handleProjects (TDB& tdb, T& task, Config& conf)
{
std::stringstream out;
// Get all the tasks, including deleted ones.
std::vector <T> tasks;
tdb.pendingT (tasks);
// Scan all the tasks for their project name, building a map using project
// names as keys.
std::map <std::string, int> unique;
for (unsigned int i = 0; i < tasks.size (); ++i)
{
T task (tasks[i]);
unique[task.getAttribute ("project")] += 1;
}
if (unique.size ())
{
// Render a list of project names from the map.
Table table;
table.addColumn ("Project");
table.addColumn ("Tasks");
if (conf.get ("color", true))
{
table.setColumnUnderline (0);
table.setColumnUnderline (1);
}
table.setColumnJustification (1, Table::right);
table.setDateFormat (conf.get ("dateformat", "m/d/Y"));
foreach (i, unique)
{
int row = table.addRow ();
table.addCell (row, 0, i->first);
table.addCell (row, 1, i->second);
}
out << optionalBlankLine (conf)
<< table.render ()
<< optionalBlankLine (conf)
<< unique.size ()
<< (unique.size () == 1 ? " project" : " projects")
<< std::endl;
}
else
out << "No projects."
<< std::endl;
return out.str ();
}
////////////////////////////////////////////////////////////////////////////////
std::string handleTags (TDB& tdb, T& task, Config& conf)
{
std::stringstream out;
// Get all the tasks.
std::vector <T> tasks;
tdb.pendingT (tasks);
// Scan all the tasks for their project name, building a map using project
// names as keys.
std::map <std::string, std::string> unique;
for (unsigned int i = 0; i < tasks.size (); ++i)
{
T task (tasks[i]);
std::vector <std::string> tags;
task.getTags (tags);
for (unsigned int t = 0; t < tags.size (); ++t)
unique[tags[t]] = "";
}
// Render a list of tag names from the map.
std::cout << optionalBlankLine (conf);
foreach (i, unique)
std::cout << i->first << std::endl;
if (unique.size ())
out << optionalBlankLine (conf)
<< unique.size ()
<< (unique.size () == 1 ? " tag" : " tags")
<< std::endl;
else
out << "No tags."
<< std::endl;
return out.str ();
}
////////////////////////////////////////////////////////////////////////////////
// If a task is deleted, but is still in the pending file, then it may be
// undeleted simply by changing it's status.
std::string handleUndelete (TDB& tdb, T& task, Config& conf)
{
std::stringstream out;
std::vector <T> all;
tdb.allPendingT (all);
int id = task.getId ();
std::vector <T>::iterator it;
for (it = all.begin (); it != all.end (); ++it)
{
if (it->getId () == id)
{
if (it->getStatus () == T::deleted)
{
if (it->getAttribute ("recur") != "")
{
out << "Task does not support 'undelete' for recurring tasks." << std::endl;
return out.str ();
}
T restored (*it);
restored.setStatus (T::pending);
restored.removeAttribute ("end");
tdb.modifyT (restored);
out << "Task " << id << " successfully undeleted." << std::endl;
return out.str ();
}
else
{
out << "Task " << id << " is not deleted - therefore cannot undelete." << std::endl;
return out.str ();
}
}
}
out << "Task " << id
<< " not found - tasks can only be reliably undeleted if the undelete" << std::endl
<< "command is run immediately after the errant delete command." << std::endl;
return out.str ();
}
////////////////////////////////////////////////////////////////////////////////
// If a task is done, but is still in the pending file, then it may be undone
// simply by changing it's status.
std::string handleUndo (TDB& tdb, T& task, Config& conf)
{
std::stringstream out;
std::vector <T> all;
tdb.allPendingT (all);
int id = task.getId ();
std::vector <T>::iterator it;
for (it = all.begin (); it != all.end (); ++it)
{
if (it->getId () == id)
{
if (it->getStatus () == T::completed)
{
if (it->getAttribute ("recur") != "")
return std::string ("Task does not support 'undo' for recurring tasks.\n");
T restored (*it);
restored.setStatus (T::pending);
restored.removeAttribute ("end");
tdb.modifyT (restored);
out << "Task " << id << " successfully undone." << std::endl;
return out.str ();
}
else
{
out << "Task " << id << " is not done - therefore cannot be undone." << std::endl;
return out.str ();
}
}
}
out << "Task " << id
<< " not found - tasks can only be reliably undone if the undo" << std::endl
<< "command is run immediately after the errant done command." << std::endl;
return out.str ();
}
////////////////////////////////////////////////////////////////////////////////
std::string handleVersion (Config& conf)
{
std::stringstream out;
// Determine window size, and set table accordingly.
int width = conf.get ("defaultwidth", 80);
#ifdef HAVE_LIBNCURSES
if (conf.get ("curses", true))
{
WINDOW* w = initscr ();
width = w->_maxx + 1;
endwin ();
}
#endif
// Create a table for the disclaimer.
Table disclaimer;
disclaimer.setTableWidth (width);
disclaimer.addColumn (" ");
disclaimer.setColumnWidth (0, Table::flexible);
disclaimer.setColumnJustification (0, Table::left);
disclaimer.addCell (disclaimer.addRow (), 0,
"Task comes with ABSOLUTELY NO WARRANTY; for details read the COPYING file "
"included. This is free software, and you are welcome to redistribute it "
"under certain conditions; again, see the COPYING file for details.");
// Create a table for the URL.
Table link;
link.setTableWidth (width);
link.addColumn (" ");
link.setColumnWidth (0, Table::flexible);
link.setColumnJustification (0, Table::left);
link.addCell (link.addRow (), 0,
"See http://www.beckingham.net/task.html for the latest releases and a full tutorial.");
// Create a table for output.
Table table;
table.setTableWidth (width);
table.setDateFormat (conf.get ("dateformat", "m/d/Y"));
table.addColumn ("Config variable");
table.addColumn ("Value");
if (conf.get ("color", true))
{
table.setColumnUnderline (0);
table.setColumnUnderline (1);
}
else
table.setTableDashedUnderline ();
table.setColumnWidth (0, Table::minimum);
table.setColumnWidth (1, Table::flexible);
table.setColumnJustification (0, Table::left);
table.setColumnJustification (1, Table::left);
table.sortOn (0, Table::ascendingCharacter);
std::vector <std::string> all;
conf.all (all);
foreach (i, all)
{
std::string value = conf.get (*i);
if (value != "")
{
int row = table.addRow ();
table.addCell (row, 0, *i);
table.addCell (row, 1, value);
}
}
out << "Copyright (C) 2006 - 2008, P. Beckingham."
<< std::endl
<< (conf.get ("color", true) ? Text::colorize (Text::bold, Text::nocolor, PACKAGE) : PACKAGE)
<< " "
<< (conf.get ("color", true) ? Text::colorize (Text::bold, Text::nocolor, VERSION) : VERSION)
<< std::endl
<< disclaimer.render ()
<< std::endl
<< table.render ()
<< link.render ()
<< std::endl;
// Complain about configuration variables that are not recognized.
// These are the regular configuration variables.
std::string recognized =
"blanklines color color.active color.due color.overdue color.pri.H "
"color.pri.L color.pri.M color.pri.none color.tagged confirmation curses "
"data.location dateformat default.command default.priority defaultwidth due "
"monthsperline nag newest next oldest project shadow.command shadow.file "
"shadow.notify";
std::vector <std::string> unrecognized;
foreach (i, all)
{
if (recognized.find (*i) == std::string::npos)
{
// These are special configuration variables, because their name is
// dynamic.
if (i->find ("color.keyword.") == std::string::npos &&
i->find ("color.project.") == std::string::npos &&
i->find ("color.tag.") == std::string::npos &&
i->find ("report.") == std::string::npos)
{
unrecognized.push_back (*i);
}
}
}
if (unrecognized.size ())
{
out << "Your .taskrc file contains these unrecognized variables:"
<< std::endl;
foreach (i, unrecognized)
out << " " << *i << std::endl;
out << std::endl;
}
// Verify installation. This is mentioned in the documentation as the way to
// ensure everything is properly installed.
if (all.size () == 0)
out << "Configuration error: .taskrc contains no entries"
<< std::endl;
else
{
if (conf.get ("data.location") == "")
out << "Configuration error: data.location not specified in .taskrc "
"file."
<< std::endl;
if (access (expandPath (conf.get ("data.location")).c_str (), X_OK))
out << "Configuration error: data.location contains a directory name"
" that doesn't exist, or is unreadable."
<< std::endl;
}
return out.str ();
}
////////////////////////////////////////////////////////////////////////////////
std::string handleDelete (TDB& tdb, T& task, Config& conf)
{
if (conf.get ("confirmation") != "yes" || confirm ("Permanently delete task?"))
{
std::vector <T> all;
tdb.allPendingT (all);
foreach (t, all)
{
if (t->getId () == task.getId ())
{
// Check for the more complex case of a recurring task. If this is a
// recurring task, get confirmation to delete them all.
std::string parent = t->getAttribute ("parent");
if (parent != "")
{
if (confirm ("This is a recurring task. Do you want to delete all pending recurrences of this same task?"))
{
// Scan all pending tasks for siblings of this task, and the parent
// itself, and delete them.
foreach (sibling, all)
if (sibling->getAttribute ("parent") == parent ||
sibling->getUUID () == parent)
tdb.deleteT (*sibling);
return std::string ("");
}
else
{
// Update mask in parent.
t->setStatus (T::deleted);
updateRecurrenceMask (tdb, all, *t);
tdb.deleteT (*t);
return std::string ("");
}
}
else
tdb.deleteT (*t);
break; // No point continuing the loop.
}
}
}
else
return std::string ("Task not deleted.\n");
return std::string ("");
}
////////////////////////////////////////////////////////////////////////////////
std::string handleStart (TDB& tdb, T& task, Config& conf)
{
std::vector <T> all;
tdb.pendingT (all);
std::vector <T>::iterator it;
for (it = all.begin (); it != all.end (); ++it)
{
if (it->getId () == task.getId ())
{
T original (*it);
if (original.getAttribute ("start") == "")
{
char startTime[16];
sprintf (startTime, "%u", (unsigned int) time (NULL));
original.setAttribute ("start", startTime);
original.setId (task.getId ());
tdb.modifyT (original);
nag (tdb, task, conf);
return std::string ("");
}
else
{
std::stringstream out;
out << "Task " << task.getId () << " already started." << std::endl;
return out.str ();
}
}
}
throw std::string ("Task not found.");
return std::string (""); // To satisfy gcc.
}
////////////////////////////////////////////////////////////////////////////////
std::string handleStop (TDB& tdb, T& task, Config& conf)
{
std::vector <T> all;
tdb.pendingT (all);
std::vector <T>::iterator it;
for (it = all.begin (); it != all.end (); ++it)
{
if (it->getId () == task.getId ())
{
T original (*it);
if (original.getAttribute ("start") != "")
{
original.removeAttribute ("start");
original.setId (task.getId ());
tdb.modifyT (original);
nag (tdb, task, conf);
return std::string ("");
}
else
{
std::stringstream out;
out << "Task " << task.getId () << " not started." << std::endl;
return out.str ();
}
}
}
throw std::string ("Task not found.");
return std::string (""); // To satisfy gcc.
}
////////////////////////////////////////////////////////////////////////////////
void handleDone (TDB& tdb, T& task, Config& conf)
{
if (!tdb.completeT (task))
throw std::string ("Could not mark task as completed.");
// Now update mask in parent.
std::vector <T> all;
tdb.allPendingT (all);
foreach (t, all)
{
if (t->getId () == task.getId ())
{
t->setStatus (T::completed);
updateRecurrenceMask (tdb, all, *t);
break;
}
}
nag (tdb, task, conf);
}
////////////////////////////////////////////////////////////////////////////////
void handleExport (TDB& tdb, T& task, Config& conf)
{
// Use the description as a file name, then clobber the description so the
// file name isn't used for filtering.
std::string file = trim (task.getDescription ());
task.setDescription ("");
if (file.length () > 0)
{
std::ofstream out (file.c_str ());
if (out.good ())
{
out << "'id',"
<< "'uuid',"
<< "'status',"
<< "'tags',"
<< "'entry',"
<< "'start',"
<< "'due',"
<< "'end',"
<< "'project',"
<< "'priority',"
<< "'fg',"
<< "'bg',"
<< "'description'"
<< "\n";
std::vector <T> all;
tdb.allT (all);
filter (all, task);
foreach (t, all)
{
out << t->composeCSV ().c_str ();
}
out.close ();
}
else
throw std::string ("Could not write to export file.");
}
else
throw std::string ("You must specify a file to write to.");
}
////////////////////////////////////////////////////////////////////////////////
void handleModify (TDB& tdb, T& task, Config& conf)
{
std::vector <T> all;
tdb.pendingT (all);
std::vector <T>::iterator it;
for (it = all.begin (); it != all.end (); ++it)
{
if (it->getId () == task.getId ())
{
T original (*it);
// A non-zero value forces a file write.
int changes = 0;
// Apply a new description, if any.
if (task.getDescription () != "")
{
original.setDescription (task.getDescription ());
++changes;
}
// Apply or remove tags, if any.
std::vector <std::string> tags;
task.getTags (tags);
for (unsigned int i = 0; i < tags.size (); ++i)
{
if (tags[i][0] == '+')
original.addTag (tags[i].substr (1, std::string::npos));
else
original.addTag (tags[i]);
++changes;
}
task.getRemoveTags (tags);
for (unsigned int i = 0; i < tags.size (); ++i)
{
if (tags[i][0] == '-')
original.removeTag (tags[i].substr (1, std::string::npos));
else
original.removeTag (tags[i]);
++changes;
}
// Apply or remove attributes, if any.
std::map <std::string, std::string> attributes;
task.getAttributes (attributes);
foreach (i, attributes)
{
if (i->second == "")
original.removeAttribute (i->first);
else
original.setAttribute (i->first, i->second);
++changes;
}
std::string from;
std::string to;
task.getSubstitution (from, to);
if (from != "")
{
std::string description = original.getDescription ();
size_t pattern = description.find (from);
if (pattern != std::string::npos)
{
description = description.substr (0, pattern) +
to +
description.substr (pattern + from.length (), std::string::npos);
original.setDescription (description);
++changes;
}
}
if (changes)
{
original.setId (task.getId ());
tdb.modifyT (original);
}
return;
}
}
throw std::string ("Task not found.");
}
////////////////////////////////////////////////////////////////////////////////
std::string handleColor (Config& conf)
{
std::stringstream out;
if (conf.get ("color", true))
{
out << optionalBlankLine (conf) << "Foreground" << std::endl
<< " "
<< Text::colorize (Text::bold, Text::nocolor, "bold") << " "
<< Text::colorize (Text::underline, Text::nocolor, "underline") << " "
<< Text::colorize (Text::bold_underline, Text::nocolor, "bold_underline") << std::endl
<< " " << Text::colorize (Text::black, Text::nocolor, "black") << " "
<< Text::colorize (Text::bold_black, Text::nocolor, "bold_black") << " "
<< Text::colorize (Text::underline_black, Text::nocolor, "underline_black") << " "
<< Text::colorize (Text::bold_underline_black, Text::nocolor, "bold_underline_black") << std::endl
<< " " << Text::colorize (Text::red, Text::nocolor, "red") << " "
<< Text::colorize (Text::bold_red, Text::nocolor, "bold_red") << " "
<< Text::colorize (Text::underline_red, Text::nocolor, "underline_red") << " "
<< Text::colorize (Text::bold_underline_red, Text::nocolor, "bold_underline_red") << std::endl
<< " " << Text::colorize (Text::green, Text::nocolor, "green") << " "
<< Text::colorize (Text::bold_green, Text::nocolor, "bold_green") << " "
<< Text::colorize (Text::underline_green, Text::nocolor, "underline_green") << " "
<< Text::colorize (Text::bold_underline_green, Text::nocolor, "bold_underline_green") << std::endl
<< " " << Text::colorize (Text::yellow, Text::nocolor, "yellow") << " "
<< Text::colorize (Text::bold_yellow, Text::nocolor, "bold_yellow") << " "
<< Text::colorize (Text::underline_yellow, Text::nocolor, "underline_yellow") << " "
<< Text::colorize (Text::bold_underline_yellow, Text::nocolor, "bold_underline_yellow") << std::endl
<< " " << Text::colorize (Text::blue, Text::nocolor, "blue") << " "
<< Text::colorize (Text::bold_blue, Text::nocolor, "bold_blue") << " "
<< Text::colorize (Text::underline_blue, Text::nocolor, "underline_blue") << " "
<< Text::colorize (Text::bold_underline_blue, Text::nocolor, "bold_underline_blue") << std::endl
<< " " << Text::colorize (Text::magenta, Text::nocolor, "magenta") << " "
<< Text::colorize (Text::bold_magenta, Text::nocolor, "bold_magenta") << " "
<< Text::colorize (Text::underline_magenta, Text::nocolor, "underline_magenta") << " "
<< Text::colorize (Text::bold_underline_magenta, Text::nocolor, "bold_underline_magenta") << std::endl
<< " " << Text::colorize (Text::cyan, Text::nocolor, "cyan") << " "
<< Text::colorize (Text::bold_cyan, Text::nocolor, "bold_cyan") << " "
<< Text::colorize (Text::underline_cyan, Text::nocolor, "underline_cyan") << " "
<< Text::colorize (Text::bold_underline_cyan, Text::nocolor, "bold_underline_cyan") << std::endl
<< " " << Text::colorize (Text::white, Text::nocolor, "white") << " "
<< Text::colorize (Text::bold_white, Text::nocolor, "bold_white") << " "
<< Text::colorize (Text::underline_white, Text::nocolor, "underline_white") << " "
<< Text::colorize (Text::bold_underline_white, Text::nocolor, "bold_underline_white") << std::endl
<< std::endl << "Background" << std::endl
<< " " << Text::colorize (Text::nocolor, Text::on_black, "on_black") << " "
<< Text::colorize (Text::nocolor, Text::on_bright_black, "on_bright_black") << std::endl
<< " " << Text::colorize (Text::nocolor, Text::on_red, "on_red") << " "
<< Text::colorize (Text::nocolor, Text::on_bright_red, "on_bright_red") << std::endl
<< " " << Text::colorize (Text::nocolor, Text::on_green, "on_green") << " "
<< Text::colorize (Text::nocolor, Text::on_bright_green, "on_bright_green") << std::endl
<< " " << Text::colorize (Text::nocolor, Text::on_yellow, "on_yellow") << " "
<< Text::colorize (Text::nocolor, Text::on_bright_yellow, "on_bright_yellow") << std::endl
<< " " << Text::colorize (Text::nocolor, Text::on_blue, "on_blue") << " "
<< Text::colorize (Text::nocolor, Text::on_bright_blue, "on_bright_blue") << std::endl
<< " " << Text::colorize (Text::nocolor, Text::on_magenta, "on_magenta") << " "
<< Text::colorize (Text::nocolor, Text::on_bright_magenta, "on_bright_magenta") << std::endl
<< " " << Text::colorize (Text::nocolor, Text::on_cyan, "on_cyan") << " "
<< Text::colorize (Text::nocolor, Text::on_bright_cyan, "on_bright_cyan") << std::endl
<< " " << Text::colorize (Text::nocolor, Text::on_white, "on_white") << " "
<< Text::colorize (Text::nocolor, Text::on_bright_white, "on_bright_white") << std::endl
<< optionalBlankLine (conf);
}
else
{
out << "Color is currently turned off in your .taskrc file." << std::endl;
}
return out.str ();
}
////////////////////////////////////////////////////////////////////////////////

View File

@@ -35,6 +35,8 @@
#include "T.h"
////////////////////////////////////////////////////////////////////////////////
// NOTE: These are static arrays only because there is no initializer list for
// std::vector.
static const char* colors[] =
{
"bold",
@@ -107,6 +109,10 @@ static const char* attributes[] =
"entry",
"start",
"end",
"recur",
"until",
"mask",
"imask",
"",
};
@@ -122,6 +128,7 @@ static const char* commands[] =
"export",
"help",
"history",
"ghistory",
"info",
"list",
"long",
@@ -133,13 +140,18 @@ static const char* commands[] =
"projects",
"start",
"stats",
"stop",
"summary",
"tags",
"usage",
"undelete",
"undo",
"version",
"",
};
static std::vector <std::string> customReports;
////////////////////////////////////////////////////////////////////////////////
void guess (const std::string& type, const char** list, std::string& candidate)
{
std::vector <std::string> options;
@@ -152,7 +164,38 @@ void guess (const std::string& type, const char** list, std::string& candidate)
candidate = matches[0];
else if (0 == matches.size ())
throw std::string ("Unrecognized ") + type + " '" + candidate + "'";
// throw std::string ("Unrecognized ") + type + " '" + candidate + "'";
candidate = "";
else
{
std::string error = "Ambiguous ";
error += type;
error += " '";
error += candidate;
error += "' - could be either of ";
for (size_t i = 0; i < matches.size (); ++i)
{
if (i)
error += ", ";
error += matches[i];
}
throw error;
}
}
////////////////////////////////////////////////////////////////////////////////
void guess (const std::string& type, std::vector<std::string>& options, std::string& candidate)
{
std::vector <std::string> matches;
autoComplete (candidate, options, matches);
if (1 == matches.size ())
candidate = matches[0];
else if (0 == matches.size ())
// throw std::string ("Unrecognized ") + type + " '" + candidate + "'";
candidate = "";
else
{
@@ -182,7 +225,11 @@ static bool isCommand (const std::string& candidate)
std::vector <std::string> matches;
autoComplete (candidate, options, matches);
if (0 == matches.size ())
return false;
{
autoComplete (candidate, customReports, matches);
if (0 == matches.size ())
return false;
}
return true;
}
@@ -200,7 +247,7 @@ bool validDate (std::string& date, Config& conf)
}
////////////////////////////////////////////////////////////////////////////////
static bool validPriority (std::string& input)
bool validPriority (const std::string& input)
{
if (input != "H" &&
input != "M" &&
@@ -214,32 +261,43 @@ static bool validPriority (std::string& input)
}
////////////////////////////////////////////////////////////////////////////////
static bool validAttribute (std::string& name, std::string& value, Config& conf)
static bool validAttribute (
std::string& name,
std::string& value,
Config& conf)
{
guess ("attribute", attributes, name);
if ((name == "fg" || name == "bg") && value != "")
guess ("color", colors, value);
else if (name == "due" && value != "")
validDate (value, conf);
else if (name == "priority")
if (name != "")
{
for (std::string::iterator i = value.begin (); i != value.end (); ++i)
*i = ::toupper (*i);
if ((name == "fg" || name == "bg") && value != "")
guess ("color", colors, value);
return validPriority (value);
else if (name == "due" && value != "")
validDate (value, conf);
else if (name == "until" && value != "")
validDate (value, conf);
else if (name == "priority")
{
value = upperCase (value);
return validPriority (value);
}
// Some attributes are intended to be private.
else if (name == "entry" ||
name == "start" ||
name == "end" ||
name == "mask" ||
name == "imask")
throw std::string ("\"") +
name +
"\" is not an attribute you may modify directly.";
return true;
}
else if (name == "entry" ||
name == "start" ||
name == "end")
throw std::string ("\"") +
name +
"\" is not an attribute you may modify directly.";
return true;
return false;
}
////////////////////////////////////////////////////////////////////////////////
@@ -253,7 +311,7 @@ static bool validId (const std::string& input)
}
////////////////////////////////////////////////////////////////////////////////
static bool validTag (std::string& input)
static bool validTag (const std::string& input)
{
if ((input[0] == '-' || input[0] == '+') &&
input.length () > 1)
@@ -265,16 +323,28 @@ static bool validTag (std::string& input)
////////////////////////////////////////////////////////////////////////////////
static bool validDescription (const std::string& input)
{
if (input.length () > 0)
return true;
if (input.length () == 0) return false;
if (input.find ("\r") != std::string::npos) return false;
if (input.find ("\f") != std::string::npos) return false;
if (input.find ("\n") != std::string::npos) return false;
return false;
return true;
}
////////////////////////////////////////////////////////////////////////////////
static bool validCommand (std::string& input)
{
guess ("command", commands, input);
std::string copy = input;
guess ("command", commands, copy);
if (copy == "")
{
copy = input;
guess ("command", customReports, copy);
if (copy == "")
return false;
}
input = copy;
return true;
}
@@ -309,6 +379,12 @@ static bool validSubstitution (
return false;
}
////////////////////////////////////////////////////////////////////////////////
bool validDuration (std::string& input)
{
return (convertDuration (input) != 0) ? true : false;
}
////////////////////////////////////////////////////////////////////////////////
// Token Distinguishing characteristic
// ------- -----------------------------
@@ -331,59 +407,112 @@ void parse (
for (size_t i = 0; i < args.size (); ++i)
{
std::string arg (args[i]);
size_t colon; // Pointer to colon in argument.
std::string from;
std::string to;
// An id is the first argument found that contains all digits.
if (command != "add" && // "add" doesn't require an ID
task.getId () == 0 &&
validId (arg))
task.setId (::atoi (arg.c_str ()));
// Tags begin with + or - and contain arbitrary text.
else if (validTag (arg))
// Ignore any argument that is "rc:...", because that is the command line
// specified rc file.
if (arg.substr (0, 3) != "rc:")
{
if (arg[0] == '+')
task.addTag (arg.substr (1, std::string::npos));
else if (arg[0] == '-')
task.addRemoveTag (arg.substr (1, std::string::npos));
}
size_t colon; // Pointer to colon in argument.
std::string from;
std::string to;
// Attributes contain a constant string followed by a colon, followed by a
// value.
else if ((colon = arg.find (":")) != std::string::npos)
{
std::string name = arg.substr (0, colon);
std::string value = arg.substr (colon + 1, std::string::npos);
// An id is the first argument found that contains all digits.
if (lowerCase (command) != "add" && // "add" doesn't require an ID
task.getId () == 0 &&
validId (arg))
task.setId (::atoi (arg.c_str ()));
if (validAttribute (name, value, conf))
task.setAttribute (name, value);
}
// Tags begin with + or - and contain arbitrary text.
else if (validTag (arg))
{
if (arg[0] == '+')
task.addTag (arg.substr (1, std::string::npos));
else if (arg[0] == '-')
task.addRemoveTag (arg.substr (1, std::string::npos));
}
// Substitution of description text.
else if (validSubstitution (arg, from, to))
{
task.setSubstitution (from, to);
}
// Attributes contain a constant string followed by a colon, followed by a
// value.
else if ((colon = arg.find (":")) != std::string::npos)
{
std::string name = lowerCase (arg.substr (0, colon));
std::string value = arg.substr (colon + 1, std::string::npos);
// Command.
else if (command == "")
{
if (!isCommand (arg))
if (validAttribute (name, value, conf))
{
if (name != "recur" || validDuration (value))
task.setAttribute (name, value);
}
// If it is not a valid attribute, then allow the argument as part of
// the description.
else
descCandidate += arg;
}
// Substitution of description text.
else if (validSubstitution (arg, from, to))
{
task.setSubstitution (from, to);
}
// Command.
else if (command == "")
{
std::string l = lowerCase (arg);
if (isCommand (l) && validCommand (l))
command = l;
else
descCandidate += arg;
}
// Anything else is just considered description.
else
descCandidate += std::string (arg) + " ";
else if (validCommand (arg))
command = arg;
}
// Anything else is just considered description.
else
descCandidate += std::string (arg) + " ";
}
if (task.getAttribute ("recur") != "" &&
task.getAttribute ("due") == "")
throw std::string ("You cannot specify a recurring task without a due date.");
if (task.getAttribute ("until") != "" &&
task.getAttribute ("recur") == "")
throw std::string ("You cannot specify an until date for a non-recurring task.");
if (validDescription (descCandidate))
task.setDescription (descCandidate);
}
////////////////////////////////////////////////////////////////////////////////
void loadCustomReports (Config& conf)
{
std::vector <std::string> all;
conf.all (all);
foreach (i, all)
{
if (i->substr (0, 7) == "report.")
{
std::string report = i->substr (7, std::string::npos);
unsigned int columns = report.find (".columns");
if (columns != std::string::npos)
{
report = report.substr (0, columns);
customReports.push_back (report);
}
}
}
}
////////////////////////////////////////////////////////////////////////////////
bool isCustomReport (const std::string& report)
{
foreach (i, customReports)
if (*i == report)
return true;
return false;
}
////////////////////////////////////////////////////////////////////////////////

2694
src/report.cpp Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -83,7 +83,7 @@ void initializeColorRules (Config& conf)
void autoColorize (T& task, Text::color& fg, Text::color& bg)
{
// Note: fg, bg already contain colors specifically assigned via command.
// TODO These rules form a hierarchy - the last rule is king.
// Note: These rules form a hierarchy - the last rule is king.
// Colorization of the tagged.
if (gsFg["color.tagged"] != Text::nocolor ||

File diff suppressed because it is too large Load Diff

View File

@@ -31,6 +31,7 @@
#include <sys/types.h>
#include "Config.h"
#include "Table.h"
#include "Date.h"
#include "color.h"
#include "TDB.h"
#include "T.h"
@@ -54,36 +55,57 @@ for (typeof (c) *foreach_p = & (c); \
// parse.cpp
void parse (std::vector <std::string>&, std::string&, T&, Config&);
bool validPriority (const std::string&);
bool validDate (std::string&, Config&);
void loadCustomReports (Config&);
bool isCustomReport (const std::string&);
// task.cpp
void handleAdd (const TDB&, T&, Config&);
void handleProjects (const TDB&, T&, Config&);
void handleTags (const TDB&, T&, Config&);
void handleList (const TDB&, T&, Config&);
void handleInfo (const TDB&, T&, Config&);
void handleLongList (const TDB&, T&, Config&);
void handleSmallList (const TDB&, T&, Config&);
void handleCompleted (const TDB&, T&, Config&);
void handleReportSummary (const TDB&, T&, Config&);
void handleReportNext (const TDB&, T&, Config&);
void handleReportHistory (const TDB&, T&, Config&);
void handleReportUsage (const TDB&, T&, Config&);
void handleReportCalendar (const TDB&, T&, Config&);
void handleReportActive (const TDB&, T&, Config&);
void handleReportOverdue (const TDB&, T&, Config&);
void handleReportStats (const TDB&, T&, Config&);
void handleReportOldest (const TDB&, T&, Config&);
void handleReportNewest (const TDB&, T&, Config&);
void handleVersion (Config&);
void handleExport (const TDB&, T&, Config&);
void handleDelete (const TDB&, T&, Config&);
void handleStart (const TDB&, T&, Config&);
void handleDone (const TDB&, T&, Config&);
void handleModify (const TDB&, T&, Config&);
void handleColor (Config&);
void gatherNextTasks (const TDB&, T&, Config&, std::vector <T>&, std::vector <int>&);
void nag (const TDB&, T&, Config&);
void nag (TDB&, T&, Config&);
int getDueState (const std::string&);
void handleRecurrence (TDB&, std::vector <T>&);
bool generateDueDates (T&, std::vector <Date>&);
Date getNextRecurrence (Date&, std::string&);
void updateRecurrenceMask (TDB&, std::vector <T>&, T&);
void onChangeCallback ();
std::string runTaskCommand (int, char**, TDB&, Config&, bool gc = true);
std::string runTaskCommand (std::vector <std::string>&, TDB&, Config&, bool gc = false);
// command.cpp
void handleAdd (TDB&, T&, Config&);
void handleExport (TDB&, T&, Config&);
void handleDone (TDB&, T&, Config&);
void handleModify (TDB&, T&, Config&);
std::string handleProjects (TDB&, T&, Config&);
std::string handleTags (TDB&, T&, Config&);
std::string handleUndelete (TDB&, T&, Config&);
std::string handleVersion (Config&);
std::string handleDelete (TDB&, T&, Config&);
std::string handleStart (TDB&, T&, Config&);
std::string handleStop (TDB&, T&, Config&);
std::string handleUndo (TDB&, T&, Config&);
std::string handleColor (Config&);
// report.cpp
void filter (std::vector<T>&, T&);
std::string handleList (TDB&, T&, Config&);
std::string handleInfo (TDB&, T&, Config&);
std::string handleLongList (TDB&, T&, Config&);
std::string handleSmallList (TDB&, T&, Config&);
std::string handleCompleted (TDB&, T&, Config&);
std::string handleReportSummary (TDB&, T&, Config&);
std::string handleReportNext (TDB&, T&, Config&);
std::string handleReportHistory (TDB&, T&, Config&);
std::string handleReportGHistory (TDB&, T&, Config&);
std::string handleReportCalendar (TDB&, T&, Config&);
std::string handleReportActive (TDB&, T&, Config&);
std::string handleReportOverdue (TDB&, T&, Config&);
std::string handleReportStats (TDB&, T&, Config&);
std::string handleReportOldest (TDB&, T&, Config&);
std::string handleReportNewest (TDB&, T&, Config&);
std::string handleCustomReport (TDB&, T&, Config&, const std::string&);
// util.cpp
bool confirm (const std::string&);
@@ -98,12 +120,15 @@ void split (std::vector<std::string>&, const std::string&, const std::string&);
void join (std::string&, const std::string&, const std::vector<std::string>&);
std::string commify (const std::string&);
std::string lowerCase (const std::string&);
std::string upperCase (const std::string&);
void delay (float);
int autoComplete (const std::string&, const std::vector<std::string>&, std::vector<std::string>&);
void formatTimeDeltaDays (std::string&, time_t);
std::string formatSeconds (time_t);
const std::string uuid ();
const char* optionalBlankLine (Config&);
int convertDuration (std::string&);
std::string expandPath (const std::string&);
// rules.cpp
void initializeColorRules (Config&);

View File

@@ -1,6 +1,7 @@
t.t
tdb.t
date.t
duration.t
pending.data
completed.data

View File

@@ -1,4 +1,4 @@
PROJECT = t.t tdb.t date.t
PROJECT = t.t tdb.t date.t duration.t
CFLAGS = -I. -I.. -Wall -pedantic -ggdb3 -fno-rtti
LFLAGS = -L/usr/local/lib
OBJECTS = ../TDB.o ../T.o ../parse.o ../text.o ../Date.o ../util.o ../Config.o
@@ -26,3 +26,6 @@ tdb.t: tdb.t.o $(OBJECTS) test.o
date.t: date.t.o $(OBJECTS) test.o
g++ date.t.o $(OBJECTS) test.o $(LFLAGS) -o date.t
duration.t: duration.t.o $(OBJECTS) test.o
g++ duration.t.o $(OBJECTS) test.o $(LFLAGS) -o duration.t

View File

@@ -9,104 +9,217 @@
////////////////////////////////////////////////////////////////////////////////
int main (int argc, char** argv)
{
plan (63);
plan (100);
Date now;
Date yesterday;
yesterday -= 1;
try
{
Date now;
Date yesterday;
yesterday -= 1;
ok (yesterday <= now, "yesterday <= now");
ok (yesterday < now, "yesterday < now");
notok (yesterday == now, "!(yesterday == now)");
ok (yesterday != now, "yesterday != now");
ok (now >= yesterday, "now >= yesterday");
ok (now > yesterday, "now > yesterday");
ok (yesterday <= now, "yesterday <= now");
ok (yesterday < now, "yesterday < now");
notok (yesterday == now, "!(yesterday == now)");
ok (yesterday != now, "yesterday != now");
ok (now >= yesterday, "now >= yesterday");
ok (now > yesterday, "now > yesterday");
ok (Date::valid (2, 29, 2008), "valid: 2/29/2008");
notok (Date::valid (2, 29, 2007), "invalid: 2/29/2007");
// Loose comparisons.
Date left ("7/4/2008");
Date comp1 ("7/4/2008");
ok (left.sameDay (comp1), "7/4/2008 is on the same day as 7/4/2008");
ok (left.sameMonth (comp1), "7/4/2008 is in the same month as 7/4/2008");
ok (left.sameYear (comp1), "7/4/2008 is in the same year as 7/4/2008");
ok (Date::leapYear (2008), "2008 is a leap year");
notok (Date::leapYear (2007), "2007 is not a leap year");
ok (Date::leapYear (2000), "2000 is a leap year");
ok (Date::leapYear (1900), "1900 is a leap year");
Date comp2 ("7/5/2008");
notok (left.sameDay (comp2), "7/4/2008 is not on the same day as 7/5/2008");
ok (left.sameMonth (comp2), "7/4/2008 is in the same month as 7/5/2008");
ok (left.sameYear (comp2), "7/4/2008 is in the same year as 7/5/2008");
is (Date::daysInMonth (2, 2008), 29, "29 days in February 2008");
is (Date::daysInMonth (2, 2007), 28, "28 days in February 2007");
Date comp3 ("8/4/2008");
notok (left.sameDay (comp3), "7/4/2008 is not on the same day as 8/4/2008");
notok (left.sameMonth (comp3), "7/4/2008 is not in the same month as 8/4/2008");
ok (left.sameYear (comp3), "7/4/2008 is in the same year as 8/4/2008");
is (Date::monthName (1), "January", "1 = January");
is (Date::monthName (2), "February", "2 = February");
is (Date::monthName (3), "March", "3 = March");
is (Date::monthName (4), "April", "4 = April");
is (Date::monthName (5), "May", "5 = May");
is (Date::monthName (6), "June", "6 = June");
is (Date::monthName (7), "July", "7 = July");
is (Date::monthName (8), "August", "8 = August");
is (Date::monthName (9), "September", "9 = September");
is (Date::monthName (10), "October", "10 = October");
is (Date::monthName (11), "November", "11 = November");
is (Date::monthName (12), "December", "12 = December");
Date comp4 ("7/4/2009");
notok (left.sameDay (comp4), "7/4/2008 is not on the same day as 7/4/2009");
notok (left.sameMonth (comp4), "7/4/2008 is not in the same month as 7/4/2009");
notok (left.sameYear (comp4), "7/4/2008 is not in the same year as 7/4/2009");
is (Date::dayName (0), "Sunday", "0 == Sunday");
is (Date::dayName (1), "Monday", "1 == Monday");
is (Date::dayName (2), "Tuesday", "2 == Tuesday");
is (Date::dayName (3), "Wednesday", "3 == Wednesday");
is (Date::dayName (4), "Thursday", "4 == Thursday");
is (Date::dayName (5), "Friday", "5 == Friday");
is (Date::dayName (6), "Saturday", "6 == Saturday");
// Validity.
ok (Date::valid (2, 29, 2008), "valid: 2/29/2008");
notok (Date::valid (2, 29, 2007), "invalid: 2/29/2007");
Date happyNewYear (1, 1, 2008);
is (happyNewYear.dayOfWeek (), 2, "1/1/2008 == Tuesday");
is (happyNewYear.month (), 1, "1/1/2008 == January");
is (happyNewYear.day (), 1, "1/1/2008 == 1");
is (happyNewYear.year (), 2008, "1/1/2008 == 2008");
// Leap year.
ok (Date::leapYear (2008), "2008 is a leap year");
notok (Date::leapYear (2007), "2007 is not a leap year");
ok (Date::leapYear (2000), "2000 is a leap year");
ok (Date::leapYear (1900), "1900 is a leap year");
is (now - yesterday, 1, "today - yesterday == 1");
// Days in month.
is (Date::daysInMonth (2, 2008), 29, "29 days in February 2008");
is (Date::daysInMonth (2, 2007), 28, "28 days in February 2007");
is (happyNewYear.toString (), "1/1/2008", "toString 1/1/2008");
// Names.
is (Date::monthName (1), "January", "1 = January");
is (Date::monthName (2), "February", "2 = February");
is (Date::monthName (3), "March", "3 = March");
is (Date::monthName (4), "April", "4 = April");
is (Date::monthName (5), "May", "5 = May");
is (Date::monthName (6), "June", "6 = June");
is (Date::monthName (7), "July", "7 = July");
is (Date::monthName (8), "August", "8 = August");
is (Date::monthName (9), "September", "9 = September");
is (Date::monthName (10), "October", "10 = October");
is (Date::monthName (11), "November", "11 = November");
is (Date::monthName (12), "December", "12 = December");
int m, d, y;
happyNewYear.toMDY (m, d, y);
is (m, 1, "1/1/2008 == January");
is (d, 1, "1/1/2008 == 1");
is (y, 2008, "1/1/2008 == 2008");
is (Date::dayName (0), "Sunday", "0 == Sunday");
is (Date::dayName (1), "Monday", "1 == Monday");
is (Date::dayName (2), "Tuesday", "2 == Tuesday");
is (Date::dayName (3), "Wednesday", "3 == Wednesday");
is (Date::dayName (4), "Thursday", "4 == Thursday");
is (Date::dayName (5), "Friday", "5 == Friday");
is (Date::dayName (6), "Saturday", "6 == Saturday");
Date epoch (9, 8, 2001);
ok ((int)epoch.toEpoch () < 1000000000, "9/8/2001 < 1,000,000,000");
epoch += 86400;
ok ((int)epoch.toEpoch () > 1000000000, "9/9/2001 > 1,000,000,000");
is (Date::dayOfWeek ("SUNDAY"), 0, "SUNDAY == 0");
is (Date::dayOfWeek ("sunday"), 0, "sunday == 0");
is (Date::dayOfWeek ("Sunday"), 0, "Sunday == 0");
is (Date::dayOfWeek ("Monday"), 1, "Monday == 1");
is (Date::dayOfWeek ("Tuesday"), 2, "Tuesday == 2");
is (Date::dayOfWeek ("Wednesday"), 3, "Wednesday == 3");
is (Date::dayOfWeek ("Thursday"), 4, "Thursday == 4");
is (Date::dayOfWeek ("Friday"), 5, "Friday == 5");
is (Date::dayOfWeek ("Saturday"), 6, "Saturday == 6");
Date fromEpoch (epoch.toEpoch ());
is (fromEpoch.toString (), epoch.toString (), "ctor (time_t)");
Date happyNewYear (1, 1, 2008);
is (happyNewYear.dayOfWeek (), 2, "1/1/2008 == Tuesday");
is (happyNewYear.month (), 1, "1/1/2008 == January");
is (happyNewYear.day (), 1, "1/1/2008 == 1");
is (happyNewYear.year (), 2008, "1/1/2008 == 2008");
Date fromString1 ("1/1/2008");
is (fromString1.month (), 1, "ctor (std::string) -> m");
is (fromString1.day (), 1, "ctor (std::string) -> d");
is (fromString1.year (), 2008, "ctor (std::string) -> y");
is (now - yesterday, 1, "today - yesterday == 1");
Date fromString2 ("1/1/2008", "m/d/Y");
is (fromString2.month (), 1, "ctor (std::string) -> m");
is (fromString2.day (), 1, "ctor (std::string) -> d");
is (fromString2.year (), 2008, "ctor (std::string) -> y");
is (happyNewYear.toString (), "1/1/2008", "toString 1/1/2008");
Date fromString3 ("20080101", "YMD");
is (fromString3.month (), 1, "ctor (std::string) -> m");
is (fromString3.day (), 1, "ctor (std::string) -> d");
is (fromString3.year (), 2008, "ctor (std::string) -> y");
int m, d, y;
happyNewYear.toMDY (m, d, y);
is (m, 1, "1/1/2008 == January");
is (d, 1, "1/1/2008 == 1");
is (y, 2008, "1/1/2008 == 2008");
Date fromString4 ("12/31/2007");
is (fromString4.month (), 12, "ctor (std::string) -> m");
is (fromString4.day (), 31, "ctor (std::string) -> d");
is (fromString4.year (), 2007, "ctor (std::string) -> y");
Date epoch (9, 8, 2001);
ok ((int)epoch.toEpoch () < 1000000000, "9/8/2001 < 1,000,000,000");
epoch += 86400;
ok ((int)epoch.toEpoch () > 1000000000, "9/9/2001 > 1,000,000,000");
Date fromString5 ("12/31/2007", "m/d/Y");
is (fromString5.month (), 12, "ctor (std::string) -> m");
is (fromString5.day (), 31, "ctor (std::string) -> d");
is (fromString5.year (), 2007, "ctor (std::string) -> y");
Date fromEpoch (epoch.toEpoch ());
is (fromEpoch.toString (), epoch.toString (), "ctor (time_t)");
// Date parsing.
Date fromString1 ("1/1/2008");
is (fromString1.month (), 1, "ctor (std::string) -> m");
is (fromString1.day (), 1, "ctor (std::string) -> d");
is (fromString1.year (), 2008, "ctor (std::string) -> y");
Date fromString2 ("1/1/2008", "m/d/Y");
is (fromString2.month (), 1, "ctor (std::string) -> m");
is (fromString2.day (), 1, "ctor (std::string) -> d");
is (fromString2.year (), 2008, "ctor (std::string) -> y");
Date fromString3 ("20080101", "YMD");
is (fromString3.month (), 1, "ctor (std::string) -> m");
is (fromString3.day (), 1, "ctor (std::string) -> d");
is (fromString3.year (), 2008, "ctor (std::string) -> y");
Date fromString4 ("12/31/2007");
is (fromString4.month (), 12, "ctor (std::string) -> m");
is (fromString4.day (), 31, "ctor (std::string) -> d");
is (fromString4.year (), 2007, "ctor (std::string) -> y");
Date fromString5 ("12/31/2007", "m/d/Y");
is (fromString5.month (), 12, "ctor (std::string) -> m");
is (fromString5.day (), 31, "ctor (std::string) -> d");
is (fromString5.year (), 2007, "ctor (std::string) -> y");
Date fromString6 ("20071231", "YMD");
is (fromString6.month (), 12, "ctor (std::string) -> m");
is (fromString6.day (), 31, "ctor (std::string) -> d");
is (fromString6.year (), 2007, "ctor (std::string) -> y");
Date fromString7 ("01/01/2008", "m/d/Y");
is (fromString7.month (), 1, "ctor (std::string) -> m");
is (fromString7.day (), 1, "ctor (std::string) -> d");
is (fromString7.year (), 2008, "ctor (std::string) -> y");
// Relative dates.
Date r1 ("today");
ok (r1.sameDay (now), "today = now");
Date r2 ("tomorrow");
ok (r2.sameDay (now + 86400), "tomorrow = now + 1d");
Date r3 ("yesterday");
ok (r3.sameDay (now - 86400), "yesterday = now - 1d");
Date r4 ("sunday");
if (now.dayOfWeek () >= 0)
ok (r4.sameDay (now + (0 - now.dayOfWeek () + 7) * 86400), "next sunday");
else
ok (r4.sameDay (now + (0 - now.dayOfWeek ()) * 86400), "next sunday");;
Date r5 ("monday");
if (now.dayOfWeek () >= 1)
ok (r5.sameDay (now + (1 - now.dayOfWeek () + 7) * 86400), "next monday");
else
ok (r5.sameDay (now + (1 - now.dayOfWeek ()) * 86400), "next monday");;
Date r6 ("tuesday");
if (now.dayOfWeek () >= 2)
ok (r6.sameDay (now + (2 - now.dayOfWeek () + 7) * 86400), "next tuesday");
else
ok (r6.sameDay (now + (2 - now.dayOfWeek ()) * 86400), "next tuesday");;
Date r7 ("wednesday");
if (now.dayOfWeek () >= 3)
ok (r7.sameDay (now + (3 - now.dayOfWeek () + 7) * 86400), "next wednesday");
else
ok (r7.sameDay (now + (3 - now.dayOfWeek ()) * 86400), "next wednesday");;
Date r8 ("thursday");
if (now.dayOfWeek () >= 4)
ok (r8.sameDay (now + (4 - now.dayOfWeek () + 7) * 86400), "next thursday");
else
ok (r8.sameDay (now + (4 - now.dayOfWeek ()) * 86400), "next thursday");;
Date r9 ("friday");
if (now.dayOfWeek () >= 5)
ok (r9.sameDay (now + (5 - now.dayOfWeek () + 7) * 86400), "next friday");
else
ok (r9.sameDay (now + (5 - now.dayOfWeek ()) * 86400), "next friday");;
Date r10 ("saturday");
if (now.dayOfWeek () >= 6)
ok (r10.sameDay (now + (6 - now.dayOfWeek () + 7) * 86400), "next saturday");
else
ok (r10.sameDay (now + (6 - now.dayOfWeek ()) * 86400), "next saturday");;
Date r11 ("eow");
ok (r11 < now + (8 * 86400), "eow < 7 days away");
Date r12 ("eom");
ok (r12.sameMonth (now), "eom in same month as now");
Date r13 ("eoy");
ok (r13.sameYear (now), "eoy in same year as now");
}
catch (std::string& e)
{
fail ("Exception thrown.");
diag (e);
}
Date fromString6 ("20071231", "YMD");
is (fromString6.month (), 12, "ctor (std::string) -> m");
is (fromString6.day (), 31, "ctor (std::string) -> d");
is (fromString6.year (), 2007, "ctor (std::string) -> y");
return 0;
}

44
src/tests/duration.t.cpp Normal file
View File

@@ -0,0 +1,44 @@
////////////////////////////////////////////////////////////////////////////////
// Copyright 2005 - 2008, Paul Beckingham. All rights reserved.
//
////////////////////////////////////////////////////////////////////////////////
#include <iostream>
#include <Date.h>
#include <test.h>
#include <../task.h>
////////////////////////////////////////////////////////////////////////////////
// daily, day, Nd
// weekly, Nw, sennight, biweekly, fortnight
// monthly, bimonthly, Nm, semimonthly
// 1st 2nd 3rd 4th .. 31st
// quarterly, Nq
// biannual, biyearly, annual, semiannual, yearly, Ny
int main (int argc, char** argv)
{
plan (17);
std::string d;
d = "daily"; is (convertDuration (d), 1, "duration daily = 1");
d = "day"; is (convertDuration (d), 1, "duration day = 1");
d = "0d"; is (convertDuration (d), 0, "duration 0d = 0");
d = "1d"; is (convertDuration (d), 1, "duration 1d = 1");
d = "7d"; is (convertDuration (d), 7, "duration 7d = 7");
d = "10d"; is (convertDuration (d), 10, "duration 10d = 10");
d = "100d"; is (convertDuration (d), 100, "duration 100d = 100");
d = "weekly"; is (convertDuration (d), 7, "duration weekly = 7");
d = "sennight"; is (convertDuration (d), 7, "duration sennight = 7");
d = "biweekly"; is (convertDuration (d), 14, "duration biweekly = 14");
d = "fortnight"; is (convertDuration (d), 14, "duration fortnight = 14");
d = "week"; is (convertDuration (d), 7, "duration week = 7");
d = "0w"; is (convertDuration (d), 0, "duration 0w = 0");
d = "1w"; is (convertDuration (d), 7, "duration 1w = 7");
d = "7w"; is (convertDuration (d), 49, "duration 7w = 49");
d = "10w"; is (convertDuration (d), 70, "duration 10w = 70");
d = "100w"; is (convertDuration (d), 700, "duration 100w = 700");
return 0;
}
////////////////////////////////////////////////////////////////////////////////

15
src/tests/in Executable file
View File

@@ -0,0 +1,15 @@
./task add monday due:monday
./task add tuesday due:tuesday
./task add wednesday due:wednesday
./task add thursday due:thursday
./task add friday due:friday
./task add saturday due:saturday
./task add sunday due:sunday
./task add yesterday due:yesterday
./task add today due:today
./task add tomorrow due:tomorrow
./task add eow due:eow
./task add eom due:eom
./task add eoy due:eoy
./task add 21st due:21st

View File

@@ -31,7 +31,7 @@
////////////////////////////////////////////////////////////////////////////////
int main (int argc, char** argv)
{
plan (4);
plan (5);
T t;
std::string s = t.compose ();
@@ -48,6 +48,11 @@ int main (int argc, char** argv)
is (s[37], 'X', "T::setStatus (deleted)");
diag (s);
t.setStatus (T::recurring);
s = t.compose ();
is (s[37], 'r', "T::setStatus (recurring)");
diag (s);
// Round trip test.
std::string sample = "00000000-0000-0000-0000-000000000000 - [] [] Sample";
T t2;

View File

@@ -285,6 +285,17 @@ std::string lowerCase (const std::string& input)
return output;
}
////////////////////////////////////////////////////////////////////////////////
std::string upperCase (const std::string& input)
{
std::string output = input;
for (int i = 0; i < (int) input.length (); ++i)
if (::isupper (input[i]))
output[i] = ::toupper (input[i]);
return output;
}
////////////////////////////////////////////////////////////////////////////////
const char* optionalBlankLine (Config& conf)
{

View File

@@ -32,6 +32,8 @@
#include <unistd.h>
#include <stdio.h>
#include <string.h>
#include <pwd.h>
#include "Date.h"
#include "Table.h"
#include "task.h"
#include "../auto.h"
@@ -236,3 +238,96 @@ const std::string uuid ()
#endif
////////////////////////////////////////////////////////////////////////////////
// Recognize the following constructs, and return the number of days represented
int convertDuration (std::string& input)
{
input = lowerCase (input);
Date today;
std::vector <std::string> supported;
supported.push_back ("daily");
supported.push_back ("day");
supported.push_back ("weekly");
supported.push_back ("sennight");
supported.push_back ("biweekly");
supported.push_back ("fortnight");
supported.push_back ("monthly");
supported.push_back ("bimonthly");
supported.push_back ("quarterly");
supported.push_back ("biannual");
supported.push_back ("biyearly");
supported.push_back ("annual");
supported.push_back ("semiannual");
supported.push_back ("yearly");
std::vector <std::string> matches;
if (autoComplete (input, supported, matches) == 1)
{
std::string found = matches[0];
if (found == "daily" || found == "day") return 1;
else if (found == "weekly" || found == "sennight") return 7;
else if (found == "biweekly" || found == "fortnight") return 14;
else if (found == "monthly") return 30;
else if (found == "bimonthly") return 61;
else if (found == "quarterly") return 91;
else if (found == "semiannual") return 183;
else if (found == "yearly" || found == "annual") return 365;
else if (found == "biannual" || found == "biyearly") return 730;
}
// Support \d+ d|w|m|q|y
else
{
// Verify all digits followed by d, w, m, q, or y.
unsigned int length = input.length ();
for (unsigned int i = 0; i < length; ++i)
{
if (! isdigit (input[i]) &&
i == length - 1)
{
int number = ::atoi (input.substr (0, i).c_str ());
switch (input[length - 1])
{
case 'd': return number * 1; break;
case 'w': return number * 7; break;
case 'm': return number * 30; break;
case 'q': return number * 91; break;
case 'y': return number * 365; break;
}
}
}
}
return 0; // Error.
}
////////////////////////////////////////////////////////////////////////////////
std::string expandPath (const std::string& in)
{
std::string copy = in;
std::string::size_type tilde;
if ((tilde = copy.find ("~/")) != std::string::npos)
{
struct passwd* pw = getpwuid (getuid ());
copy.replace (tilde, 1, pw->pw_dir);
}
else if ((tilde = copy.find ("~")) != std::string::npos)
{
std::string::size_type slash;
if ((slash = copy.find ("/", tilde)) != std::string::npos)
{
std::string name = copy.substr (tilde + 1, slash - tilde - 1);
struct passwd* pw = getpwnam (name.c_str ());
if (pw)
copy.replace (tilde, slash - tilde, pw->pw_dir);
}
}
return copy;
}
////////////////////////////////////////////////////////////////////////////////

1317
task.html

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1 @@
<pkg-contents spec="1.12"><f n="task" o="root" g="wheel" p="33261" pt="/Users/paul/task.git/binary/task" m="true" t="file"><mod>owner</mod><mod>group</mod></f></pkg-contents>

1
task.pmdoc/01task.xml Normal file
View File

@@ -0,0 +1 @@
<pkgref spec="1.12" uuid="C71026FD-E252-42CD-89C3-2F6F087AAF17"><config><identifier>com.beckingham.task142.task.pkg</identifier><version/><description></description><post-install type="none"/><requireAuthorization/><installFrom>/Users/paul/task.git/binary/task</installFrom><installTo mod="true" relocatable="true">/usr/local/bin</installTo><flags><followSymbolicLinks/></flags><packageStore type="internal"></packageStore><mod>parent</mod><mod>locationType</mod><mod>relocatable</mod><mod>version</mod><mod>installTo.path</mod><mod>installTo</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
task.pmdoc/index.xml Normal file
View File

@@ -0,0 +1 @@
<pkmkdoc spec="1.12"><properties><title>Task 1.4.2</title><build>/Users/paul/Documents/task-1.4.2.pkg</build><organization>com.beckingham</organization><userSees ui="easy"/><min-target os="3"/><domain anywhere="true" system="true"/></properties><distribution><versions min-spec="1.000000"/><scripts></scripts></distribution><contents><choice title="task" id="choice0" starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="com.beckingham.task142.task.pkg"/><choice-reqs><requirement id="tosv" operator="ge" value="'10.5.0'" selected="no" enabled="no" hidden="unchanged" startSelected="unchanged" startEnabled="unchanged" startHidden="unchanged"/></choice-reqs></choice></contents><resources bg-scale="none" bg-align="topleft"><locale lang="en"><resource mod="true" type="license">/Users/paul/task.git/binary/COPYING.txt</resource><resource mod="true" type="readme">/Users/paul/task.git/binary/README.txt</resource></locale></resources><flags/><item type="file">01task.xml</item><mod>properties.title</mod><mod>properties.anywhereDomain</mod><mod>properties.systemDomain</mod></pkmkdoc>