Compare commits

..

134 Commits

Author SHA1 Message Date
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
Paul Beckingham
6673e408a2 - Now uses "defaultwidth" configuration variable for when ncurses support is not available
- Added the new movie to the task.html page
2008-06-19 22:41:09 -04:00
Paul Beckingham
422ad576ea - Added latest bug fix details. 2008-06-19 21:23:15 -04:00
Paul Beckingham
c1a1d13aab - Updated version 1.3.0 to 1.4.0
- Applied "showage" configuration variable to long list
2008-06-19 21:21:21 -04:00
Paul Beckingham
42189ce998 - Added some idea details 2008-06-19 21:01:14 -04:00
Paul Beckingham
43287d7fc9 - Corrected AUTHORS file
- Added new commands to task.html
2008-06-18 01:08:34 -04:00
Paul Beckingham
06f6aaaded - Minor doc updates before 1.3.0 is cut. 2008-06-18 00:45:12 -04:00
Paul Beckingham
0c17986303 - Added "task oldest" command
- Added "task newest" command
2008-06-18 00:41:33 -04:00
Paul Beckingham
feb9959907 - Added new bug fixes to task.html 2008-06-18 00:08:53 -04:00
Paul Beckingham
7409e23ce0 - Displays shorter message when a command is entered incorrectly, and the full usage for "task help". 2008-06-18 00:05:51 -04:00
Paul Beckingham
4572c97c9d - Fixed bug whereby "1 wks" was being improperly pluralized 2008-06-17 23:56:39 -04:00
Paul Beckingham
9bca303113 - Factored out filtering code. 2008-06-17 23:40:37 -04:00
Paul Beckingham
7fb3ab0c3d - Marked bug as fixed. 2008-06-17 23:05:41 -04:00
Paul Beckingham
56037fe3bc - Added latest bug fix. 2008-06-17 23:03:50 -04:00
Paul Beckingham
a2f8ce41cf - Began full command line parser BNF grammar. 2008-06-17 22:54:04 -04:00
Paul Beckingham
598bd3b4ef - Fixed crash bug in Date::toString
- New ideas file.
2008-06-17 22:23:31 -04:00
Paul Beckingham
315a7d69fb - Updated ChangeLog
- Removed AdSense HTML fragment
- Created new ideas.txt file to illustrate usage of proposed features
2008-06-17 22:10:07 -04:00
Paul Beckingham
64fff6c2ff - Added Google Analytics. 2008-06-17 22:03:38 -04:00
Paul Beckingham
969ecd7b5d Merge branch 'master' into 1.3.0 2008-06-17 18:48:23 -04:00
Paul Beckingham
cede865693 - Partial fix to bug - snapshot. 2008-06-17 18:28:24 -04:00
Paul Beckingham
d68395bc51 - 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 2008-06-17 17:52:12 -04:00
Paul Beckingham
7ec523d5ea - Removed unused std::vector forms of get/set
- Added more defaults to Config::createDefault
2008-06-16 23:37:32 -04:00
Paul Beckingham
08fc906d5f - Updated various documents. 2008-06-16 23:26:22 -04:00
Paul Beckingham
f3e995ef92 Merge branch 'damian' into 1.3.0 2008-06-16 22:26:20 -04:00
Paul Beckingham
a4304c97af - Corrected the "30 days in August" bug.
- Removed odd styling from task.html CSS.
2008-06-16 22:24:49 -04:00
Paul Beckingham
d1ef0d17d5 - Integrated Damian Glenny's changes 2008-06-15 18:38:01 -04:00
Paul Beckingham
c54cb4d6c8 - Bumped version to 1.3.0 2008-06-14 13:55:35 -04:00
Paul Beckingham
c393d47cdf - Corrected bogus .gitignore entry that blocked src/tests/Makefile. 2008-06-13 01:51:51 -04:00
Paul Beckingham
3525b6db2c - Added Bruce Israel for his suggestion of subprojects. 2008-06-13 01:25:38 -04:00
Paul Beckingham
d50efe5e27 - Updated versions 2008-06-13 01:18:53 -04:00
Paul Beckingham
2c0a1ddb3a - Added new feature for 1.2.0 2008-06-13 01:15:49 -04:00
Paul Beckingham
d7ac37783c - Updated documentation to include subproject discussions.
- Added Richard Querin to the AUTHORS file for his contribution of ideas and a .deb package.
2008-06-13 01:02:17 -04:00
Paul Beckingham
03bb50c4ea - Corrected copyright display. 2008-06-13 00:19:54 -04:00
Paul Beckingham
1535010ac9 - "Age" column is now optional for the "list" and "next" reports. 2008-06-13 00:18:28 -04:00
Paul Beckingham
8d90035bbc - Now properly parses dates according to specified date format. 2008-06-12 23:58:58 -04:00
Paul Beckingham
fd7bb9daa9 - Support subprojects. 2008-06-11 02:19:00 -04:00
Paul Beckingham
88b12bc66a - Added caseless keyword comparison to the autocolorization rules. 2008-06-11 01:47:11 -04:00
Paul Beckingham
a8ac82ca22 - Added "What's new in 1.2.0" section. 2008-06-11 01:45:07 -04:00
Paul Beckingham
438f3cb134 - Added caseless comparison when searching keywords in the description. 2008-06-11 01:40:01 -04:00
Paul Beckingham
131693f617 - Fixed bug whereby the "dateformat" configuration variable was being used to display dates, but not parse them. 2008-06-11 01:14:22 -04:00
Paul Beckingham
07d1f63e31 - Bumped version to 1.2.0 2008-06-10 22:59:43 -04:00
Paul Beckingham
73286e8662 - Cleaned up visible copyright.
- Added a "what's new" list to task.html
2008-06-07 23:29:32 -04:00
Paul Beckingham
95c3f78c68 - Added tags to the "long" report. 2008-06-07 23:13:07 -04:00
Paul Beckingham
90df505982 - Added Google AdSense to the task.html page. 2008-06-07 22:53:18 -04:00
Paul Beckingham
e8b7114ce8 - Added the ability to control date formats via the 'dateformat' configuration variable. 2008-06-07 17:09:09 -04:00
Paul Beckingham
714d9c5544 - Included new changes 2008-06-07 13:28:27 -04:00
Paul Beckingham
f2ba9f796b - Bumped version to 1.1.0 2008-06-07 13:23:59 -04:00
Paul Beckingham
e025ecc3d4 - Configurable extra white space via "blanklines" configuration variable. 2008-06-07 13:23:39 -04:00
Paul Beckingham
ccd2b9fc44 - Added Cygwin to the platform list.
- Added missing items to the TUTORIAL file.
- Converted TUTORIAL to HTML, in task.html.
2008-06-06 01:38:37 -04:00
Paul Beckingham
6cb902c499 - Home page update. 2008-06-05 21:08:37 -04:00
Paul Beckingham
d216d40121 - Now points to 1.0.1 2008-06-04 21:22:45 -04:00
Paul Beckingham
08f4ead97e - Fixed bug whereby the UUID generated by the custom generator was not terminated.
- Fixed bug whereby random numbers were used by the custom UUID generator, but srandom/srand was not called first.
2008-06-04 21:00:23 -04:00
Paul Beckingham
f3de5c0711 - Added bare-bones task.html to point to the latest version. 2008-06-04 19:26:35 -04:00
Paul Beckingham
89d4dd74da - Corrected platform list. 2008-06-03 23:23:22 -04:00
Paul Beckingham
9ff83281c5 - Updated ChangeLog. 2008-06-03 23:17:11 -04:00
Paul Beckingham
787b3b4a51 - Added YouTube reference to new movie.
- Corrected coloration in "task calendar" command.
2008-06-03 23:16:40 -04:00
Paul Beckingham
74e77e4dc5 - Added legend to "task calendar" output 2008-06-03 09:09:52 -04:00
Paul Beckingham
f73c64801c - Added three new colorization rules - color.tag.x, color.project.x, color.keyword.x.
- Updated default .taskrc file.
- Updated docs accordingly.
2008-06-03 09:00:51 -04:00
Paul Beckingham
039c3119ff - problem on Solaris 10 fixed, docs updated 2008-06-02 10:54:54 -04:00
Paul Beckingham
fb9f5e2ab3 - Editorial 2008-06-01 22:20:24 -04:00
Paul Beckingham
3077c50774 - "calendar" command now uses oldest and newest due dates for limits. 2008-06-01 15:44:26 -04:00
Paul Beckingham
0ec24aaef5 - Added spoken parts, improved commands. 2008-06-01 13:44:02 -04:00
Paul Beckingham
1a580b1967 - Removed unnecessary TODO items from the source code. 2008-05-30 22:10:06 -04:00
Paul Beckingham
fd8f63dec6 - Removed debugging, obsolete code. 2008-05-30 22:07:06 -04:00
Paul Beckingham
7c9554e8c5 - Modified AUTHORS file.
- Added announcement.txt file for the mailing list.
2008-05-30 22:00:19 -04:00
Paul Beckingham
f57e22124f - Added text to README file. 2008-05-30 21:41:06 -04:00
Paul Beckingham
9aec4efefa - Added proper copyright, licensing details to all source.
- Eliminated redundant stlmacros.h heaer file.
2008-05-30 21:35:49 -04:00
Paul Beckingham
8a0b8e0328 - Updated all documents. 2008-05-30 21:22:22 -04:00
Paul Beckingham
1aa9051885 - Fixed bug whereby a % character could not be used in a description. Problem was use of fprintf, which when changed to fputs, fixed the problem. 2008-05-30 20:59:28 -04:00
Paul Beckingham
654eb260c7 - Recorded new "task calendar" behavior. 2008-05-30 20:24:53 -04:00
Paul Beckingham
b061ef6191 - "task calendar" now lists all months that contain pending due tasks. 2008-05-30 20:22:38 -04:00
Paul Beckingham
86a9f0f6d5 - Release candidate 1
- Fixed bug where stats were gibberish whne there were no tasks, ie a new user.
2008-05-29 10:33:56 -04:00
Paul Beckingham
0bf87ed311 - Fixed bug where "task version" asserted on mobile device. 2008-05-28 10:53:24 -04:00
Paul Beckingham
abc9aa08ec - Fixed bug where "task projects" rendered an empty table instead of saying "no projects". 2008-05-27 21:03:27 -04:00
73 changed files with 8764 additions and 7366 deletions

17
AUTHORS
View File

@@ -1,7 +1,18 @@
Principal Author
Principal Author:
Paul Beckingham, paul@beckingham.net
Contributing Authors
Contributing Authors:
Damian Glenny
Testers
With thanks to:
Eugene Kramer
Srijith K
Richard Querin
Bruce Israel
Thomas Engel
Nishiishii
galvanizd
H. İbrahim Güngör
Stas Antons
Andy Lester

59
COPYING
View File

@@ -278,63 +278,4 @@ PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
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
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.

102
ChangeLog
View File

@@ -1,20 +1,95 @@
1.1.0 (?)
- Command line specification of .taskrc file
Version numbers are of the form:
1.0.0 (?)
- New movie made, uploaded
- Bug: assertion fails on mobile for t v
- Bug: configure.ac does not properly determine ncurses availability
- Bug: when run without arguments, task dumps core on Solaris 10
- Bug: Cannot seem to use the percent character in a task description
- Bug: New installation "task stats" reports newest task 12/31/1969
- Bug: New installation task projects displays header but no data - should short-circuit
X.Y.Z
where the X represents a major version number, or architecture. The Y
represents a feature release, and the Z represents a patch.
------ current release ---------------------------
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"
------ old releases ------------------------------
1.3.1 (6/21/2008)
+ New configuration variable, "defaultwidth" that determines the width
of tables when ncurses support is not available
+ Bug: "showage" configuration variable should apply to all reports, not
just the ones based on "list"
+ Bug: Fixed segmentation faults on Ubuntu when the "dateformat"
configuration variables was missing. This was a code bug, and should
have affected more platforms
+ Bug: Task now will recreate a missing ~/.taskrc file, OR a missing
~/.task directory
1.3.0 (6/18/2008)
+ "task calendar" now displays multiple months per line, adjustable by the
"monthsperline" configuration variable. Feature added by Damian Glenny
+ "task export" can now filter tasks like the reports
+ Factored out code to filter tasks
+ Displays shorter message when a command is entered incorrectly, and the
full usage for "task help"
+ "task oldest" shows the oldest tasks
+ "task newest" shows the newest tasks
+ Bug: Segmentation fault when no "dateformat" configuration variable
specified
+ Bug: Fixed bug whereby if you have more than one task with a due date, 7
days gets added to the entry date of task 2..n
+ Bug: Fixed bug whereby "1 wks" was being improperly pluralized
1.2.0 (6/13/2008)
+ Bug: "dateformat" configuration variable used to display dates, but
not parse them
+ "task list x" now performs a caseless comparison between "x" and the
description
+ Task sub projects supported
+ "showage" confguration determines whether "Age" column appears on the
"list" and "next" reports
+ Improved TUTORIAL
1.1.0 (6/7/2008)
+ "blanklines" configuration to stop displaying unnecessary white
space and thus work better on small-screen devices
+ "dateformat" configuration now determines how dates are formatted
+ Better formatting of "task tags" output
+ http://www.beckingham.net/task.html home page set up
+ Added tags to the "task long" report
1.0.1 (6/4/2008)
+ Bug: UUID generator not properly terminating string.
+ Bug: srandom/srand not called prior to UUID generation.
1.0.0 (6/3/2008)
+ New movie made, uploaded
+ Bug: assertion fails on mobile for t v
+ Bug: configure.ac does not properly determine ncurses availability
+ Bug: Cannot seem to use the percent character in a task description
+ Bug: New installation "task stats" reports newest task 12/31/1969
+ Bug: New installation task projects displays header but no data - should short-circuit
+ Bug: incorrect color specification in sample .taskrc file
------ reality -----------------------------------
+ Bug: when run without arguments, task dumps core on Solaris 10
+ "task calendar" now reports all months with due pending tasks
+ Added rules for colorization by tag, project and keyword
+ Added legend to "task calendar"
0.9.9 (5/27/2008)
+ Autoconf/autmake behaving properly.
+ Autoconf/automake behaving properly.
+ Clean build on OS X 10.5.
+ Clean build on Ubuntu 8.0.
+ Clean build on Fedora Core 8.
@@ -105,6 +180,7 @@
+ File locking
+ retain deleted tasks
+ "task info ID" report showing all metadata
+ File format v2
[Development hiatus while planning for T, TDB API, new features and the future
of the project. Seeded to two testers for feedback, suggestions.]

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
@@ -16,5 +18,5 @@ included.
color.cpp Color support functions.
rules.cpp Auto-colorization rules.
Don't forget, please send patches to task@beckingham.net
Don't forget, please send bugs, patches to task@beckingham.net

15
NEWS
View File

@@ -1,23 +1,22 @@
Welcome to Task 1.0.0.
Welcome to Task 1.4.0.
Task has been built and tested on the following configurations:
- OS X 10.4 Tiger
- OS X 10.5 Leopard
- Fedora Core 8
- Fedora Core 9
- Ubuntu 8
Known Issues:
- problems running on Solaris 10
- Ubuntu 8 Hardy Heron
- Solaris 10
- Cygwin 1.5.25-14
While Task has undergone testing, bugs are sure to remain. If you encounter a
bug, please contact me at bugs@beckingham.net. Here is what you could do, in
bug, please contact me at task@beckingham.net. Here is what you could do, in
order of increasing effort (to you) and usefulness (to me):
- Do nothing. Bug probably won't get fixed.
- Send an email to bugs@beckingham.net, explaining what you saw. The bug
- Send an email to task@beckingham.net, explaining what you saw. The bug
will be addressed, and a new release will be made. You will be a hero.
- Send an email, and a reproducible test case in the form of the few commands

17
README
View File

@@ -3,11 +3,13 @@ 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.
@@ -21,18 +23,24 @@ task movie on YouTube:
or the new improved one:
http:/www.youtube.com/watch?v=????????????
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.
Please note that the TUTORIAL file included is deprecated, and will be removed
at the next major release of task. It is superceded by an HTML tutorial that
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
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.
@@ -42,3 +50,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.

284
TUTORIAL
View File

@@ -1,6 +1,20 @@
Task program tutorial, for version 1.0.0
Task program tutorial, for version 1.4.0
----------------------------------------
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
This TUTORIAL file is deprecated, and does not contain all the new features in
release 1.4.0. It will not be included in future releases of task, and will be
superceded by a richer and more extensive online version that can be found at:
http://www.beckingham.net/task.html
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
This guide shows how to quickly set up the task program, and become proficient
with it.
@@ -21,15 +35,15 @@ Build the task program according to the directions in the INSTALL file. This
transcript illustrates a typical installation:
% ls
task-1.0.0.tar.gz
% gunzip task-1.0.0.tar.gz
% tar xf task-1.0.0.tar
% cd task-1.0.0
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
% make install # (may require sudo, depending on --prefix)
You need to make sure that the installed task program is in your PATH
environment variable.
@@ -67,7 +81,7 @@ interface. Let us take a look at those tasks:
% task ls
ID Project Pri Description
ID Project Pri Description
1 Book plane ticket
2 Rent a tux
3 Reserve a rental car
@@ -97,7 +111,7 @@ a project to these tasks:
% task 4 project:Family
% task ls
ID Project Pri Description
ID Project Pri Description
3 Family Send John a birthday card
2 Wedding Reserve a rental car
1 Wedding Book plane ticket
@@ -107,12 +121,46 @@ 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:
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
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
@@ -121,14 +169,14 @@ could also have requested:
% task ls ticket plane
ID Project Pri Description
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
ID Project Pri Description
3 Family Send John a birthday card
2 Wedding Reserve a rental car
1 Wedding Book plane ticket
@@ -140,7 +188,7 @@ Now let's prioritize. Priorities can be H, M or L (High, Medium, Low).
% task 3 pri:H
% task ls
ID Project Pri Description
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
@@ -161,7 +209,7 @@ command provides more:
% task list
ID Project Pri Due Active Age Description
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
@@ -173,7 +221,7 @@ sorted by due date, then priority. Let's add due dates:
% task 1 due:7/31/2008
% task list
ID Project Pri Due Active Age Description
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
@@ -212,7 +260,7 @@ labels.
% task list
ID Project Pri Due Active Age Description
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
@@ -224,7 +272,7 @@ labels.
% task list +phone
ID Project Pri Due Active Age Description
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
@@ -266,7 +314,7 @@ with no arguments will generate a help message that lists all these commands.
% task summary
Project Remaining Avg age Complete 0% 100%
Project Remaining Avg age Complete 0% 100%
Errands 1 3 days 50% XXXXXXXXXXXXXXXX
Birthdays 3 7 mths 0%
Car 2 2 wks 25% XXXXXXXXX
@@ -285,6 +333,18 @@ with no arguments will generate a help message that lists all these commands.
% task undelete <id>
--------------------
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.
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.
% task done <id>
----------------
@@ -316,14 +376,14 @@ with no arguments will generate a help message that lists all these commands.
% task list
ID Project Pri Due Active Age Description
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
ID Project Pri Due Active Age Description
12 Errand L * 3 days Remember to deposit check
...
@@ -345,18 +405,36 @@ with no arguments will generate a help message that lists all these commands.
% 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
% task history
Year Month Added Completed Deleted Net
2008 March 21 16 0 5
April 13 11 1 1
May 8 14 3 -9
Year Month Added Completed Deleted Net
2008 March 21 16 0 5
April 13 11 1 1
May 8 14 3 -9
Average 14 13 1 -1
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
@@ -364,6 +442,23 @@ with no arguments will generate a help message that lists all these commands.
% task ghistory
--------------
This report shows you an overview of how many tasks were added, completed and
deleted, by month, as does "task history", but as a bar chart. It looks like this:
% task history
Year Month Added/Completed/Deleted
2008 March +++++++++++++++++++++XXXXXXXXXXXXXXXX
April +++++++++++++XXXXXXXXXXX-
May ++++++++XXXXXXXXXXXXXX---
With color enabled, the bars contain the size of each bar.
% task calendar
---------------
@@ -409,14 +504,14 @@ with no arguments will generate a help message that lists all these commands.
% task ls
ID Project Pri Description
ID Project Pri Description
12 Errand L Remember to deposit chekc
...
% task 12 Remember to deposit bonus check
% task ls
ID Project Pri Description
ID Project Pri Description
12 Errand L Remember to deposit bonus check
...
@@ -430,14 +525,14 @@ with no arguments will generate a help message that lists all these commands.
% task ls
ID Project Pri Description
ID Project Pri Description
12 Errand L Remember to deposit chekc
...
% task 12 /chekc/check/
% task ls
ID Project Pri Description
ID Project Pri Description
12 Errand L Remember to deposit check
...
@@ -514,6 +609,65 @@ with no arguments will generate a help message that lists all these commands.
% 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.
% task rc:<file> ...
--------------------
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:
% task list
% task rc:~/.taskrc list
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):
% alias htask="task rc:/home/me/.taskrc_home"
% alias wtask="task rc:/home/me/.taskrc_work"
% htask list
...
% wtask list
...
Interacting with the Shell
--------------------------
@@ -547,24 +701,6 @@ Interacting with the Shell
% task <id> fg:... bg:...
-------------------------
Not strictly a command, the setting of the fg and bg (foreground and
background) attributes determines the colors used to represent the task.
Valid foreground colors are:
Valid background colors are:
Note that these are not just colors, but combinations of colors and
attributes.
Note also that this capability does depend on whether your terminal program
can display these colors.
Configuring Task
----------------
@@ -602,6 +738,51 @@ Configuring Task
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.
@@ -614,9 +795,14 @@ Configuring Task
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

36
announcement.txt Normal file
View File

@@ -0,0 +1,36 @@
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

View File

@@ -2,7 +2,7 @@
# Process this file with autoconf to produce a configure script.
AC_PREREQ(2.61)
AC_INIT(task, 0.9.9, bugs@beckingham.net)
AC_INIT(task, 1.4.0, bugs@beckingham.net)
AM_INIT_AUTOMAKE
AC_CONFIG_SRCDIR([src/task.cpp])
AC_CONFIG_HEADER([auto.h])
@@ -35,6 +35,8 @@ AC_FUNC_SELECT_ARGTYPES
AC_CHECK_FUNCS([select])
AC_CHECK_FUNC(flock, [AC_DEFINE([HAVE_FLOCK], [1], [Found flock])])
AC_CHECK_FUNC(uuid_unparse_lower, [AC_DEFINE([HAVE_UUID], [1], [Found uuid_unparse_lower])])
AC_CHECK_FUNC(random, [AC_DEFINE([HAVE_RANDOM], [1], [Found random])])
AC_CHECK_FUNC(srandom, [AC_DEFINE([HAVE_SRANDOM], [1], [Found srandom])])
AC_CONFIG_FILES([Makefile src/Makefile])
AC_OUTPUT

69
grammar.txt Normal file
View File

@@ -0,0 +1,69 @@
This is a full BNF grammar for the task command line. It is intended that a
future release of task will incorporate a complete lexer/parser implementing
this grammar.
command:
VERSION
| HELP
| PROJECTS
| TAGS
| SUMMARY
| HISTORY
| NEXT
| CALENDAR
| ACTIVE
| OVERDUE
| STATS
| USAGE
| OLDEST
| NEWEST
| EXPORT <file>
| COLOR
| DELETE <id>
| UNDELETE <id>
| INFO <id>
| START <id>
| DONE <id>
| ADD [<tags>] [<attrs>] [<desc>]
| LIST [<tags>] [<attrs>] [<desc>]
| LONG [<tags>] [<attrs>] [<desc>]
| LS [<tags>] [<attrs>] [<desc>]
| COMPLETED [<tags>] [<attrs>] [<desc>]
| <id> [<tags>] [<attrs>] [<desc>]
| <id> <substitution>
id:
\d+
| \d{8}-\d{4}-\d{4}-\d{12}
tags:
+<tag>
| -<tag>
tag:
\w+
attrs:
<attr>
| <attr> <attrs>
attr:
<name>:<value>
name:
\w+
value:
.+
substitution:
/ <pattern> / <pattern> /
pattern:
.+
file:
?

130
html/30second.html Normal file
View File

@@ -0,0 +1,130 @@
<!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 1.4.0</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>
</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>

14
html/README Normal file
View File

@@ -0,0 +1,14 @@
Documentation Restructuring
high level pages
download
previous verisons
tutorial
recurrence
priorities
subprojects
tags
need page banner
need task link off beckinghma.net

429
html/advanced.html Normal file
View File

@@ -0,0 +1,429 @@
<!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 1.4.0</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>
</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>
<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 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 usage</strong>
<p>
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.
</p>
<p>
This command is for the purpose of seeing whether command are
actually used.
</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; 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>

127
html/color.html Normal file
View File

@@ -0,0 +1,127 @@
<!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 1.4.0</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>
</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>

303
html/config.html Normal file
View File

@@ -0,0 +1,303 @@
<!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 1.4.0</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>
</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>command.logging</dt>
<dd>
May be "on" or "off", defaulting to "off". This determines
whether task records commands. This is not generally useful,
except while developing 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>showage<dt>
<dd>
May be "yes" or "no". Determines whether the "Age"
column appears on the "list" and "next" reports.
<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.
</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>
</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>

160
html/date.html Normal file
View File

@@ -0,0 +1,160 @@
<!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 1.4.0</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>
</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>

BIN
html/images/color.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

205
html/recur.html Normal file
View File

@@ -0,0 +1,205 @@
<!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 1.4.0</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>
</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>

140
html/setup.html Normal file
View File

@@ -0,0 +1,140 @@
<!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 1.4.0</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>
</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.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)</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>

130
html/shell.html Normal file
View File

@@ -0,0 +1,130 @@
<!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 1.4.0</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>
</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>

355
html/simple.html Normal file
View File

@@ -0,0 +1,355 @@
<!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 1.4.0</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>
</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; }

183
html/task.html Normal file
View File

@@ -0,0 +1,183 @@
<!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 1.4.0</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>
</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>Filters (coming soon)
</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 Source Release
<a href="http://www.beckingham.net/task-1.4.0.tar.gz">task-1.4.0.tar.gz</a>
</h2>
<div class="content">
<h4>New in version 1.4.0 (7/10/2008)</h4>
<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>
(Find out <a href="versions.html">what was new in prior versions</a>)
</p>
<h2>Troubleshooting</h2>
<p>
Task has been built 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 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>

163
html/troubleshooting.html Normal file
View File

@@ -0,0 +1,163 @@
<!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>
</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 to get rid of the "Age" column</h2>
<div class="content">
<p>
The "Age" column that shows up on several reports is proving
to be unpopular. In task 1.2.0 and later, here is how to
remove it from the reports - make sure you have the line:
</p>
<code><pre>showage=no</pre></code>
<p>
in your ~/.taskrc file.
Note that the "task long" report does not obey this setting
in versions prior to 1.3.1.
</p>
<p class="small">
The "showage" setting is supported in task 1.2.0 or later.
<br />
The "task long" report supports this setting in versions 1.3.1
or 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>

142
html/usage.html Normal file
View File

@@ -0,0 +1,142 @@
<!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 1.4.0</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>
</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 done 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 usage
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>

190
html/versions.html Normal file
View File

@@ -0,0 +1,190 @@
<!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>
</div>
<div id="content">
<br />
<br />
<br />
<h1 class="title">Task Prior Versions</h1>
<br />
<div class="content">
<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>

70
ideas.txt Normal file
View File

@@ -0,0 +1,70 @@
Real Parsing
define grammar for command line
implement flex/bison parser
new grammar includes:
- task delete <ID> [<ID> ...]
- task done <ID> [<ID> ...]
User-Defined Reports
report.large=id,uuid,project,priority,entry,start,due,active,tags,description
report.long=id,project,priority,entry,start,due,tags,description
report.list=id,project,priority,due,active,description
report.ls=id,project,priority,description
Sorting is always: due+ priority- project+
ID UUID Project Priority Entry Start Due Active Tags Description
Test Suite
- allow .taskrc override
- debug=on to cause all cout to be csv
- regression tests for every bug, command, feature
Recurrence
+ new T::status recurring (stored as R)
+ new user-specifiable attributes - recur:<duration> [until:<date>]
+ duration:
daily, day, 1d
Nd
weekly, 1w
Nw
biweekly
monthly, 1m
bimonthly
Nm
quarterly, 1q
Nq
biannual, biyearly
annual, yearly, 1y
Na, Ny
+ recur: without due: => Error
+ until: without recur: => Error
+ New file format: supports status R, recur:, until:, base:, range:
- on TDB.gc, adjust base: and compress range: for T::status == recurring
- all recurring tasks are removed from lists by T::*pendingT, and a synthetic
addendum is generated
- when a recurring task is completed, range: is updated, and a synthetic
task is added to completed.data that retains the attributes of the root
- Scenario:
# Today = 6/22/2008
% task add Friday due:6/15/2008 recur:weekly until 8/1/2008
# task must generate a base and range
# base:6/15/2008
# range:-------
# ^6/15
# ^6/22
# ^6/29
# ^7/6
# ^7/13
# ^7/20
# ^7/27
% task ls
1 Friday 6/15/2008 .lte. today (overdue)
2 Friday 6/22/2008 .lte. today (due)
3 Friday 6/29/2008 one recurrence
4 Friday 7/6/2008 (not shown)
5 Friday 7/13/2008 (not shown)
6 Friday 7/20/2008 (not shown)
7 Friday 7/27/2008 (not shown)

View File

@@ -1,68 +1,105 @@
task add do laundry
task add project:garage order dumpster
task add +phone tell mom i loveher
task add +phone pro:garage schedule goodwill pickup
task add +email pro:garage ask Tom if he wants that old bike
task ls
Hello, and welcome to this quick demo of the task program.
task 1 pro:home
task add do laundry Let's add some tasks
I need to do laundry
task add project:garage order dumpster Oh yeah, the dumpster
task add +phone tell mom i loveher Must call Mom (that "phone" there is a tag - they are
useful for searching, categorizing)
task add +phone pro:garage schedule
goodwill pickup
task ad +email pro:garage ask Tom if Notice I can abbreviating commands
he wants that old bkie
task ls Let's see what we've got
I spelled bike wrong
task 5 /bkie/bike/
task ls That's better
task 1 pro:home Let's assign projects
task 3 pro:home tell mom I love her
task ls pro:garage
task long pro:garage
task list pro:garage
task lis +phone
task li pro:garage +phone
task l mom
task 1 priority:H
task long pro:garage Let's see all the columns
task list pro:garage There are different ways to list
task lis +phone By tag
task li pro:garage +phone By project and tag
task l mom By word
task 1 priority:H Priorities can be High, Medium or Low
task pri:H 3
task 1 pri:M
task li
task li The list is sorted by priority.
task 2 pri:L
task li
task do 3
task li
# There may be an arbitrary number of tags.
task 2 +phone +mistake
task done 3 Suppose task 3 is done
task li ...and it's gone
task 2 +phone +mistake Lets add tags
# Oops!
task 2 -mistake
task tags
task info 2
task 2 -mistake or remove tags
task projects
task tags or look at all the tags
task 3 fg:bold
task li
task 3 fg:white
task info 2 or all the details
task projects or all the projects
task 3 fg:bold Let's make it colorful
task 4 fg:bold_green
task li
task 3 fg:bold_underline_white
task li
task 4 bg:on_bright_red fg:bold_yellow
task li
task li Oh that's just nasty - let's get rid of that.
task 4 bg:
task li
task 4 fg:
task colors
task 3 fg:
task colors There are many combinations to choose from
(Slashes!!!)
task 1 due:6/8/2008 Let's add a due date
date
task 1 due:6/8/2008
task li
task calendar
task 1 due:6/1/2008
task li
task calendar Notice the due task is in yellow, today is marked cyan
task 1 due:5/20/2008 This is now an overdue task
task li and it shows up red
task overdue
task cal
task export file.csv
task export file.csv You can export the tasks to a spreadsheet
cat file.csv
task start 1
task active
task do 1
task li
task do 3
task do 1
task active
task summary
task history
task start 1 Started tasks can be used as reminders
of what you are supposed to be doing
task active They show up as active
task done 1 Let's clear out a couple
task li
task done 3
task active
task summary Summary shows progress on all projects
task history History shows general activity - how many added,
completed etc, by month
And that's it. There are more commands than this
covered in the TUTORIAL file, but this should give
the basic idea.
Thank you for watching.

View File

@@ -1,407 +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 stlmacros.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:
stlmacros.h:
../auto.h:

View File

@@ -1,395 +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 stlmacros.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:
stlmacros.h:
../auto.h:
Date.h:

View File

@@ -1,392 +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 stlmacros.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:
stlmacros.h:
../auto.h:

View File

@@ -1,408 +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 stlmacros.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:
stlmacros.h:
../auto.h:

View File

@@ -1,399 +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 \
stlmacros.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:
stlmacros.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,395 +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 stlmacros.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:
stlmacros.h:
../auto.h:

View File

@@ -1,394 +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 stlmacros.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:
stlmacros.h:
../auto.h:

View File

@@ -1,419 +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 \
stlmacros.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:
stlmacros.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,392 +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 stlmacros.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:
stlmacros.h:
../auto.h:

View File

@@ -1,398 +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 stlmacros.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:
stlmacros.h:
../auto.h:
/usr/include/uuid/uuid.h:

2
src/.gitignore vendored
View File

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

View File

@@ -1,13 +1,37 @@
///////////////////////////////////////////////////////////////////////////////
// Copyright 2005 - 2008, Paul Beckingham. All rights reserved.
// 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 <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"
@@ -63,37 +87,37 @@ 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, "data.location=%s\n", dataDir.c_str ());
fprintf (out, "command.logging=off\n");
fprintf (out, "confirmation=yes\n");
fprintf (out, "#nag=Note: try to stick to high priority tasks. See \"task next\".\n");
fprintf (out, "next=2\n");
fprintf (out, "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");
@@ -104,28 +128,26 @@ void Config::createDefault (const std::string& file)
fprintf (out, "#color.pri.L=on_green\n");
fprintf (out, "color.active=bold_cyan\n");
fprintf (out, "color.tagged=yellow\n");
fprintf (out, "#color.tag.bug=yellow\n");
fprintf (out, "#color.project.home=on_green\n");
fprintf (out, "#color.keyword.car=on_blue\n");
fclose (out);
set ("data.location", taskDir);
set ("command.logging", "off");
set ("confirmation", "yes");
set ("next", 2);
set ("curses", "on");
set ("color", "on");
set ("color.overdue", "red");
set ("color.active", "cyan");
set ("color.tagged", "yellow");
std::cout << "Done." << std::endl;
}
}
}
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));
}
@@ -133,7 +155,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)
{
@@ -142,7 +164,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];
}
@@ -150,7 +172,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)
{
@@ -220,29 +242,6 @@ void Config::set (const std::string& key, const std::string& value)
(*this)[key] = value;
}
////////////////////////////////////////////////////////////////////////////////
// The vector form of Config::get assumes the single value is comma-separated,
// and splits accordingly.
void Config::get (
const std::string& key,
std::vector <std::string>& values)
{
values.clear ();
split (values, (*this)[key], ',');
}
////////////////////////////////////////////////////////////////////////////////
// The vector form of Config::set joins the values together with commas, and
// stores the single value.
void Config::set (
const std::string& key,
const std::vector <std::string>& values)
{
std::string conjoined;
join (conjoined, ",", values);
(*this)[key] = conjoined;
}
////////////////////////////////////////////////////////////////////////////////
// Provide a vector of all configuration keys.
void Config::all (std::vector<std::string>& items)

View File

@@ -1,6 +1,27 @@
////////////////////////////////////////////////////////////////////////////////
// Copyright 2005 - 2008, Paul Beckingham. All rights reserved.
// task - a command line task list manager.
//
// Copyright 2006 - 2008, Paul Beckingham.
// All rights reserved.
//
// This program is free software; you can redistribute it and/or modify it under
// the terms of the GNU General Public License as published by the Free Software
// Foundation; either version 2 of the License, or (at your option) any later
// version.
//
// This program is distributed in the hope that it will be useful, but WITHOUT
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
// details.
//
// You should have received a copy of the GNU General Public License along with
// this program; if not, write to the
//
// Free Software Foundation, Inc.,
// 51 Franklin Street, Fifth Floor,
// Boston, MA
// 02110-1301
// USA
//
////////////////////////////////////////////////////////////////////////////////
#ifndef INCLUDED_CONFIG
@@ -19,18 +40,16 @@ 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);
void get (const std::string&, std::vector <std::string>&);
void set (const std::string&, const int);
void set (const std::string&, const double);
void set (const std::string&, const std::string&);
void set (const std::string&, const std::vector <std::string>&);
void all (std::vector <std::string>&);
};

View File

@@ -1,6 +1,27 @@
////////////////////////////////////////////////////////////////////////////////
// Copyright 2005 - 2008, Paul Beckingham. All rights reserved.
// 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>
@@ -36,29 +57,138 @@ Date::Date (const int m, const int d, const int y)
}
////////////////////////////////////////////////////////////////////////////////
Date::Date (const std::string& mdy)
Date::Date (const std::string& mdy, const std::string& format /* = "m/d/Y" */)
{
size_t firstSlash = mdy.find ("/");
size_t secondSlash = mdy.find ("/", firstSlash + 1);
if (firstSlash != std::string::npos &&
secondSlash != std::string::npos)
int month = 0;
int day = 0;
int year = 0;
// Before parsing according to "format", perhaps this is a relative date?
if (isRelativeDate (mdy))
return;
unsigned int i = 0; // Index into mdy.
for (unsigned int f = 0; f < format.length (); ++f)
{
int m = ::atoi (mdy.substr (0, firstSlash ).c_str ());
int d = ::atoi (mdy.substr (firstSlash + 1, secondSlash - firstSlash).c_str ());
int y = ::atoi (mdy.substr (secondSlash + 1, std::string::npos ).c_str ());
if (!valid (m, d, y))
throw std::string ("\"") + mdy + "\" is not a valid date.";
switch (format[f])
{
// Single or double digit.
case 'm':
if (i >= mdy.length () ||
! ::isdigit (mdy[i]))
{
throw std::string ("\"") + mdy + "\" is not a valid date.";
}
// Duplicate Date::Date (const int, const int, const int);
struct tm t = {0};
t.tm_mday = d;
t.tm_mon = m - 1;
t.tm_year = y - 1900;
if (i + 1 < mdy.length () &&
(mdy[i + 0] == '0' || mdy[i + 0] == '1') &&
::isdigit (mdy[i + 1]))
{
month = ::atoi (mdy.substr (i, 2).c_str ());
i += 2;
}
else
{
month = ::atoi (mdy.substr (i, 1).c_str ());
++i;
}
break;
mT = mktime (&t);
case 'd':
if (i >= mdy.length () ||
! ::isdigit (mdy[i]))
{
throw std::string ("\"") + mdy + "\" is not a valid date.";
}
if (i + 1 < mdy.length () &&
(mdy[i + 0] == '0' || mdy[i + 0] == '1' || mdy[i + 0] == '2' || mdy[i + 0] == '3') &&
::isdigit (mdy[i + 1]))
{
day = ::atoi (mdy.substr (i, 2).c_str ());
i += 2;
}
else
{
day = ::atoi (mdy.substr (i, 1).c_str ());
++i;
}
break;
// Double digit.
case 'y':
if (i + 1 >= mdy.length () ||
! ::isdigit (mdy[i + 0]) ||
! ::isdigit (mdy[i + 1]))
{
throw std::string ("\"") + mdy + "\" is not a valid date.";
}
year = ::atoi (mdy.substr (i, 2).c_str ()) + 2000;
i += 2;
break;
case 'M':
if (i + 1 >= mdy.length () ||
! ::isdigit (mdy[i + 0]) ||
! ::isdigit (mdy[i + 1]))
{
throw std::string ("\"") + mdy + "\" is not a valid date.";
}
month = ::atoi (mdy.substr (i, 2).c_str ());
i += 2;
break;
case 'D':
if (i + 1 >= mdy.length () ||
! ::isdigit (mdy[i + 0]) ||
! ::isdigit (mdy[i + 1]))
{
throw std::string ("\"") + mdy + "\" is not a valid date.";
}
day = ::atoi (mdy.substr (i, 2).c_str ());
i += 2;
break;
// Quadruple digit.
case 'Y':
if (i + 3 >= mdy.length () ||
! ::isdigit (mdy[i + 0]) ||
! ::isdigit (mdy[i + 1]) ||
! ::isdigit (mdy[i + 2]) ||
! ::isdigit (mdy[i + 3]))
{
throw std::string ("\"") + mdy + "\" is not a valid date.";
}
year = ::atoi (mdy.substr (i, 4).c_str ());
i += 4;
break;
default:
if (i >= mdy.length () ||
mdy[i] != format[f])
{
throw std::string ("\"") + mdy + "\" is not a valid date.";
}
++i;
break;
}
}
else
if (!valid (month, day, year))
throw std::string ("\"") + mdy + "\" is not a valid date.";
// Duplicate Date::Date (const int, const int, const int);
struct tm t = {0};
t.tm_mday = day;
t.tm_mon = month - 1;
t.tm_year = year - 1900;
mT = mktime (&t);
}
////////////////////////////////////////////////////////////////////////////////
@@ -95,20 +225,32 @@ void Date::toMDY (int& m, int& d, int& y)
}
////////////////////////////////////////////////////////////////////////////////
void Date::toString (std::string& output)
const std::string Date::toString (const std::string& format /*= "m/d/Y" */) const
{
output = toString ();
}
// Making this local copy seems to fix a bug. Remove the local copy and you'll
// see segmentation faults and all kinds of gibberish.
std::string localFormat = format;
////////////////////////////////////////////////////////////////////////////////
std::string Date::toString (void)
{
int m, d, y;
toMDY (m, d, y);
char buffer[12];
std::string formatted;
for (unsigned int i = 0; i < localFormat.length (); ++i)
{
char c = localFormat[i];
switch (c)
{
case 'm': sprintf (buffer, "%d", this->month ()); break;
case 'M': sprintf (buffer, "%02d", this->month ()); break;
case 'd': sprintf (buffer, "%d", this->day ()); break;
case 'D': sprintf (buffer, "%02d", this->day ()); break;
case 'y': sprintf (buffer, "%02d", this->year () % 100); break;
case 'Y': sprintf (buffer, "%d", this->year ()); break;
default: sprintf (buffer, "%c", c); break;
}
char formatted [11];
sprintf (formatted, "%d/%d/%d", m, d, y);
return std::string (formatted);
formatted += buffer;
}
return formatted;
}
////////////////////////////////////////////////////////////////////////////////
@@ -175,7 +317,7 @@ std::string Date::monthName (int month)
assert (month > 0);
assert (month <= 12);
return months[month -1];
return months[month - 1];
}
////////////////////////////////////////////////////////////////////////////////
@@ -213,28 +355,44 @@ std::string Date::dayName (int dow)
}
////////////////////////////////////////////////////////////////////////////////
int Date::dayOfWeek ()
int Date::dayOfWeek () const
{
struct tm* t = localtime (&mT);
return t->tm_wday;
}
////////////////////////////////////////////////////////////////////////////////
int Date::month ()
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
{
struct tm* t = localtime (&mT);
return t->tm_mon + 1;
}
////////////////////////////////////////////////////////////////////////////////
int Date::day ()
int Date::day () const
{
struct tm* t = localtime (&mT);
return t->tm_mday;
}
////////////////////////////////////////////////////////////////////////////////
int Date::year ()
int Date::year () const
{
struct tm* t = localtime (&mT);
return t->tm_year + 1900;
@@ -276,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)
{
@@ -303,3 +491,151 @@ 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;
mT = today.mT;
return true;
}
else if (found == "today")
{
mT = today.mT;
return true;
}
else if (found == "tomorrow")
{
mT = today.mT + 86400;
return true;
}
else if (found == "yesterday")
{
mT = today.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

@@ -1,6 +1,27 @@
////////////////////////////////////////////////////////////////////////////////
// Copyright 2005 - 2008, Paul Beckingham. All rights reserved.
// task - a command line task list manager.
//
// Copyright 2006 - 2008, Paul Beckingham.
// All rights reserved.
//
// This program is free software; you can redistribute it and/or modify it under
// the terms of the GNU General Public License as published by the Free Software
// Foundation; either version 2 of the License, or (at your option) any later
// version.
//
// This program is distributed in the hope that it will be useful, but WITHOUT
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
// details.
//
// You should have received a copy of the GNU General Public License along with
// this program; if not, write to the
//
// Free Software Foundation, Inc.,
// 51 Franklin Street, Fifth Floor,
// Boston, MA
// 02110-1301
// USA
//
////////////////////////////////////////////////////////////////////////////////
#ifndef INCLUDED_DATE
@@ -16,15 +37,14 @@ public:
Date ();
Date (time_t);
Date (const int, const int, const int);
Date (const std::string&);
Date (const std::string&, const std::string& format = "m/d/Y");
Date (const Date&);
virtual ~Date ();
void toEpoch (time_t&);
time_t toEpoch ();
void toMDY (int&, int&, int&);
void toString (std::string&);
std::string toString (void);
const std::string toString (const std::string& format = "m/d/Y") const;
static bool valid (const int, const int, const int);
static bool leapYear (int);
@@ -32,11 +52,12 @@ public:
static std::string monthName (int);
static void dayName (int, std::string&);
static std::string dayName (int);
int dayOfWeek ();
static int dayOfWeek (const std::string&);
int month ();
int day ();
int year ();
int month () const;
int day () const;
int year () const;
int dayOfWeek () const;
bool operator== (const Date&);
bool operator!= (const Date&);
@@ -44,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);
@@ -51,6 +75,9 @@ public:
time_t operator- (const Date&);
private:
bool isRelativeDate (const std::string&);
protected:
time_t mT;
};

View File

@@ -1,5 +1,29 @@
////////////////////////////////////////////////////////////////////////////////
// Copyright 2007 - 2008, Paul Beckingham. All rights reserved.
// 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
//
//
//
// Grid implements a sparse 2D array of Cell objects. Grid makes every effort
// to perform well on cell insertion and retrieval. A Cell is a variant type,
@@ -145,9 +169,9 @@ unsigned int Grid::height () const
////////////////////////////////////////////////////////////////////////////////
Grid::Cell* Grid::byRow (const unsigned int row, const unsigned int col) const
{
if (row <= mRows.size () &&
if (row < mRows.size () &&
mRows[row] != NULL &&
col <= mRows[row]->size ())
col < mRows[row]->size ())
return (*mRows[row])[col];
return NULL;
@@ -155,9 +179,9 @@ Grid::Cell* Grid::byRow (const unsigned int row, const unsigned int col) const
Grid::Cell* Grid::byColumn (const unsigned int row, const unsigned int col) const
{
if (col <= mColumns.size () &&
if (col < mColumns.size () &&
mColumns[col] != NULL &&
row <= mColumns[col]->size ())
row < mColumns[col]->size ())
return (*mColumns[col])[row];
return NULL;
@@ -166,36 +190,25 @@ Grid::Cell* Grid::byColumn (const unsigned int row, const unsigned int col) cons
////////////////////////////////////////////////////////////////////////////////
void Grid::expandGrid (const unsigned int row, const unsigned int col)
{
// If the new row is outside the bounds of the current grid, add blank rows to
// pad, then a new row vector.
if (row >= mRows.size ())
{
for (unsigned int r = mRows.size (); r <= row; ++r)
if (r < row)
// {
// std::cout << "additional mRows[" << r << "] = NULL" << std::endl;
mRows.push_back (NULL);
// }
else
// {
// std::cout << "additional mRows[" << r << "] = new std::vector <Cell*>" << std::endl;
mRows.push_back (new std::vector <Cell*>);
// }
}
// If the new row is within the bounds of the current grid, ensure that the
// row points to a vector of cells.
else if (mRows[row] == NULL)
// {
// std::cout << "existing mRows[" << row << "] = new std::vector <Cell*>" << std::endl;
mRows[row] = new std::vector <Cell*>;
// }
if (col >= mRows[row]->size ())
for (unsigned int c = mRows[row]->size (); c <= col; ++c)
// {
// std::cout << "additional mRows[" << row << "][" << c << "] = NULL" << std::endl;
mRows[row]->push_back (NULL);
// }
// If the new col is outside the bounds of the current grid, add blank cols to
// pad, then a new col vector.
@@ -203,30 +216,18 @@ void Grid::expandGrid (const unsigned int row, const unsigned int col)
{
for (unsigned int c = mColumns.size (); c <= col; ++c)
if (c < col)
// {
// std::cout << "additional mColumns[" << c << "] = NULL" << std::endl;
mColumns.push_back (NULL);
// }
else
// {
// std::cout << "additional mColumns[" << c << "] = new std::vector <Cell*>" << std::endl;
mColumns.push_back (new std::vector <Cell*>);
// }
}
// If the new col is within the bounds of the current grid, ensure that the
// col points to a vector of cells.
else if (mColumns[col] == NULL)
// {
// std::cout << "existing mColumns[" << col << "] = new std::vector <Cell*>" << std::endl;
mColumns[col] = new std::vector <Cell*>;
// }
if (row >= mColumns[col]->size ())
for (unsigned int r = mColumns[col]->size (); r <= row; ++r)
// {
// std::cout << "additional mColumns[" << col << "][" << r << "] = NULL" << std::endl;
mColumns[col]->push_back (NULL);
// }
}
////////////////////////////////////////////////////////////////////////////////
@@ -237,15 +238,10 @@ void Grid::insertCell (
{
// Delete any existing cell, because cells are owned by rows, not columns.
if ((*mRows[row])[col] != NULL)
// {
// std::cout << "deleted old cell mRows[" << row << "][" << col << "]" << std::endl;
delete (*mRows[row])[col];
// }
(*mRows[row])[col] = cell;
(*mColumns[col])[row] = cell;
// std::cout << "assigned new cell mRows[" << row << "][" << col << "]" << std::endl;
// std::cout << "assigned new cell mColumns[" << col << "][" << row << "]" << std::endl;
}
////////////////////////////////////////////////////////////////////////////////

View File

@@ -1,6 +1,27 @@
////////////////////////////////////////////////////////////////////////////////
// Copyright 2007 - 2008, Paul Beckingham. All rights reserved.
// task - a command line task list manager.
//
// Copyright 2006 - 2008, Paul Beckingham.
// All rights reserved.
//
// This program is free software; you can redistribute it and/or modify it under
// the terms of the GNU General Public License as published by the Free Software
// Foundation; either version 2 of the License, or (at your option) any later
// version.
//
// This program is distributed in the hope that it will be useful, but WITHOUT
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
// details.
//
// You should have received a copy of the GNU General Public License along with
// this program; if not, write to the
//
// Free Software Foundation, Inc.,
// 51 Franklin Street, Fifth Floor,
// Boston, MA
// 02110-1301
// USA
//
////////////////////////////////////////////////////////////////////////////////
#ifndef INCLUDED_GRID

View File

@@ -1,3 +1,3 @@
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 stlmacros.h task.h
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
AM_CPPFLAGS = -Wall -pedantic -ggdb3 -fno-rtti

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,7 +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 stlmacros.h task.h
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
AM_CPPFLAGS = -Wall -pedantic -ggdb3 -fno-rtti
all: all-am
@@ -229,7 +229,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

@@ -1,6 +1,27 @@
////////////////////////////////////////////////////////////////////////////////
// Copyright 2006 - 2008, Paul Beckingham. All rights reserved.
// 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>
@@ -226,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 .+
@@ -240,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)
@@ -254,20 +276,8 @@ const std::string T::compose () const
int count = 0;
foreach (i, mAttributes)
{
std::string converted = i->second;
// Date attributes may need conversion to epoch.
if (i->first == "due" ||
i->first == "start" ||
i->first == "entry" ||
i->first == "end")
{
if (i->second.find ("/") != std::string::npos)
validDate (converted);
}
line += (count > 0 ? " " : "");
line += i->first + ":" + converted;
line += i->first + ":" + i->second;
++count;
}
@@ -294,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 += "'";
@@ -413,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);
@@ -438,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];
}
@@ -490,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?
@@ -509,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;
}
////////////////////////////////////////////////////////////////////////////////

28
src/T.h
View File

@@ -1,6 +1,27 @@
////////////////////////////////////////////////////////////////////////////////
// Copyright 2006 - 2007, Paul Beckingham. All rights reserved.
// task - a command line task list manager.
//
// Copyright 2006 - 2008, Paul Beckingham.
// All rights reserved.
//
// This program is free software; you can redistribute it and/or modify it under
// the terms of the GNU General Public License as published by the Free Software
// Foundation; either version 2 of the License, or (at your option) any later
// version.
//
// This program is distributed in the hope that it will be useful, but WITHOUT
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
// details.
//
// You should have received a copy of the GNU General Public License along with
// this program; if not, write to the
//
// Free Software Foundation, Inc.,
// 51 Franklin Street, Fifth Floor,
// Boston, MA
// 02110-1301
// USA
//
////////////////////////////////////////////////////////////////////////////////
#ifndef INCLUDED_T
@@ -11,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
@@ -59,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

@@ -1,6 +1,27 @@
////////////////////////////////////////////////////////////////////////////////
// Copyright 2007, 2008, Paul Beckingham. All rights reserved.
// 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>
@@ -17,6 +38,7 @@ TDB::TDB ()
: mPendingFile ("")
, mCompletedFile ("")
, mLogFile ("")
, mId (1)
{
}
@@ -28,7 +50,7 @@ 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";
@@ -46,7 +68,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 ();
@@ -74,20 +96,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);
}
@@ -100,20 +122,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);
}
@@ -167,7 +189,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);
@@ -191,7 +213,7 @@ bool TDB::deleteT (const T& t) const
}
////////////////////////////////////////////////////////////////////////////////
bool TDB::completeT (const T& t) const
bool TDB::completeT (const T& t)
{
T task (t);
@@ -218,11 +240,9 @@ bool TDB::completeT (const T& t) const
bool TDB::addT (const T& t) const
{
T task (t);
std::vector <std::string> tags;
task.getTags (tags);
// TODO This logic smells funny.
// +tag or -tag are both considered valid tags to add to a new pending task.
// Generating an error here would not be friendly.
for (unsigned int i = 0; i < tags.size (); ++i)
@@ -234,14 +254,15 @@ 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);
@@ -307,7 +328,7 @@ bool TDB::logCommand (int argc, char** argv) const
delay (0.25);
#endif
fprintf (out, command.c_str ());
fputs (command.c_str (), out);
fclose (out);
return true;
@@ -328,7 +349,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;
@@ -342,7 +363,7 @@ bool TDB::overwritePending (std::vector <T>& all) const
std::vector <T>::iterator it;
for (it = all.begin (); it != all.end (); ++it)
fprintf (out, it->compose ().c_str ());
fputs (it->compose ().c_str (), out);
fclose (out);
return true;
@@ -364,7 +385,7 @@ bool TDB::writePending (const T& t) const
delay (0.25);
#endif
fprintf (out, t.compose ().c_str ());
fputs (t.compose ().c_str (), out);
fclose (out);
return true;
@@ -386,7 +407,7 @@ bool TDB::writeCompleted (const T& t) const
delay (0.25);
#endif
fprintf (out, t.compose ().c_str ());
fputs (t.compose ().c_str (), out);
fclose (out);
return true;
@@ -433,7 +454,7 @@ bool TDB::readLockedFile (
}
////////////////////////////////////////////////////////////////////////////////
int TDB::gc () const
int TDB::gc ()
{
int count = 0;
@@ -448,7 +469,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.
@@ -465,4 +487,10 @@ int TDB::gc () const
}
////////////////////////////////////////////////////////////////////////////////
int TDB::nextId ()
{
return mId++;
}
////////////////////////////////////////////////////////////////////////////////

View File

@@ -1,6 +1,27 @@
////////////////////////////////////////////////////////////////////////////////
// Copyright 2007, 2008, Paul Beckingham. All rights reserved.
// task - a command line task list manager.
//
// Copyright 2006 - 2008, Paul Beckingham.
// All rights reserved.
//
// This program is free software; you can redistribute it and/or modify it under
// the terms of the GNU General Public License as published by the Free Software
// Foundation; either version 2 of the License, or (at your option) any later
// version.
//
// This program is distributed in the hope that it will be useful, but WITHOUT
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
// details.
//
// You should have received a copy of the GNU General Public License along with
// this program; if not, write to the
//
// Free Software Foundation, Inc.,
// 51 Franklin Street, Fifth Floor,
// Boston, MA
// 02110-1301
// USA
//
////////////////////////////////////////////////////////////////////////////////
#ifndef INCLUDED_TDB
@@ -17,22 +38,23 @@ 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 deleteT (const T&);
bool completeT (const T&);
bool addT (const T&) const;
bool modifyT (const T&) const;
bool modifyT (const T&);
bool logRead (std::vector <std::string>&) const;
bool logCommand (int, char**) const;
int gc () const;
int gc ();
int nextId ();
private:
bool lock (FILE*) const;
bool overwritePending (std::vector <T>&) const;
bool overwritePending (std::vector <T>&);
bool writePending (const T&) const;
bool writeCompleted (const T&) const;
bool readLockedFile (const std::string&, std::vector <std::string>&) const;
@@ -41,6 +63,7 @@ private:
std::string mPendingFile;
std::string mCompletedFile;
std::string mLogFile;
int mId;
};
#endif

View File

@@ -1,7 +1,29 @@
////////////////////////////////////////////////////////////////////////////////
// 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
//
//
//
// Attributes Table Row Column Cell
// ----------------------------------------------------
@@ -27,7 +49,6 @@
#include <Table.h>
#include <Date.h>
#include <task.h>
#include <stlmacros.h>
////////////////////////////////////////////////////////////////////////////////
Table::Table ()
@@ -632,63 +653,18 @@ void Table::formatCell (
blank = Text::colorize (fg, bg, pad + intraPad);
}
////////////////////////////////////////////////////////////////////////////////
const std::string Table::formatCell (
const int row,
const int col,
const int width,
const int padding)
{
assert (width > 0);
Text::color fg = getFg (row, col);
Text::color bg = getBg (row, col);
just justification = getJustification (row, col);
std::string data = getCell (row, col);
std::string pad = "";
std::string intraPad = "";
std::string preJust = "";
std::string postJust = "";
for (int i = 0; i < padding; ++i)
pad += " ";
// Place the data within the available space - justify.
int gap = width - data.length ();
if (justification == left)
{
for (int i = 0; i < gap; ++i)
postJust += " ";
}
else if (justification == right)
{
for (int i = 0; i < gap; ++i)
preJust += " ";
}
else if (justification == center)
{
for (int i = 0; i < gap / 2; ++i)
preJust += " ";
for (size_t i = 0; i < gap - preJust.length (); ++i)
postJust += " ";
}
if (col < (signed) mColumns.size () - 1)
for (int i = 0; i < getIntraPadding (); ++i)
intraPad += " ";
return Text::colorize (fg, bg, pad + preJust + data + postJust + pad + intraPad);
}
////////////////////////////////////////////////////////////////////////////////
void Table::suppressWS ()
{
mSuppressWS = true;
}
////////////////////////////////////////////////////////////////////////////////
void Table::setDateFormat (const std::string& dateFormat)
{
mDateFormat = dateFormat;
}
////////////////////////////////////////////////////////////////////////////////
int Table::rowCount ()
{
@@ -708,10 +684,10 @@ int Table::columnCount ()
// - removal of redundant color codes:
// ^[[31mName^[[0m ^[[31mValue^[[0m -> ^[[31mName Value^[[0m
//
// This method is a work in progress.
void Table::optimize (std::string& output)
{
/*
TODO Unoptimized length.
int start = output.length ();
*/
@@ -724,7 +700,6 @@ void Table::optimize (std::string& output)
}
/*
TODO This code displays the % reduction of the optimize function.
std::cout << int ((100 * (start - output.length ()) / start))
<< "%" << std::endl;
*/
@@ -802,8 +777,8 @@ void Table::sort (std::vector <int>& order)
else
{
Date dl ((std::string)*left);
Date dr ((std::string)*right);
Date dl ((std::string)*left, mDateFormat);
Date dr ((std::string)*right, mDateFormat);
if (dl > dr)
SWAP
}
@@ -820,8 +795,8 @@ void Table::sort (std::vector <int>& order)
else
{
Date dl ((std::string)*left);
Date dr ((std::string)*right);
Date dl ((std::string)*left, mDateFormat);
Date dr ((std::string)*right, mDateFormat);
if (dl < dr)
SWAP
}

View File

@@ -1,8 +1,28 @@
////////////////////////////////////////////////////////////////////////////////
// task - a command line task list manager.
//
// Copyright 2006 - 2008, Paul Beckingham.
// All rights reserved.
//
// TODO Implement height
// This program is free software; you can redistribute it and/or modify it under
// the terms of the GNU General Public License as published by the Free Software
// Foundation; either version 2 of the License, or (at your option) any later
// version.
//
// This program is distributed in the hope that it will be useful, but WITHOUT
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
// details.
//
// You should have received a copy of the GNU General Public License along with
// this program; if not, write to the
//
// Free Software Foundation, Inc.,
// 51 Franklin Street, Fifth Floor,
// Boston, MA
// 02110-1301
// USA
//
////////////////////////////////////////////////////////////////////////////////
#ifndef INCLUDED_TABLE
#define INCLUDED_TABLE
@@ -59,6 +79,7 @@ public:
void setCellBg (int, int, Text::color);
void suppressWS ();
void setDateFormat (const std::string&);
int rowCount ();
int columnCount ();
@@ -77,7 +98,6 @@ private:
just getJustification (const int, const int);
just getHeaderJustification (const int);
const std::string formatHeader (const int, const int, const int);
const std::string formatCell (const int, 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>&);
@@ -109,6 +129,7 @@ private:
// Misc...
bool mSuppressWS;
std::string mDateFormat;
};
#endif

View File

@@ -1,6 +1,27 @@
////////////////////////////////////////////////////////////////////////////////
// Copyright 2008, Paul Beckingham. All rights reserved.
// 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 <string>
@@ -221,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;
}
////////////////////////////////////////////////////////////////////////////////

View File

@@ -1,7 +1,28 @@
////////////////////////////////////////////////////////////////////////////////
// Copyright 2008, Paul Beckingham.
// task - a command line task list manager.
//
// Copyright 2006 - 2008, Paul Beckingham.
// All rights reserved.
//
// This program is free software; you can redistribute it and/or modify it under
// the terms of the GNU General Public License as published by the Free Software
// Foundation; either version 2 of the License, or (at your option) any later
// version.
//
// This program is distributed in the hope that it will be useful, but WITHOUT
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
// details.
//
// You should have received a copy of the GNU General Public License along with
// this program; if not, write to the
//
// Free Software Foundation, Inc.,
// 51 Franklin Street, Fifth Floor,
// Boston, MA
// 02110-1301
// USA
//
////////////////////////////////////////////////////////////////////////////////
#ifndef INCLUDED_COLOR
#define INCLUDED_COLOR

611
src/command.cpp Normal file
View File

@@ -0,0 +1,611 @@
////////////////////////////////////////////////////////////////////////////////
// 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 <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 "TDB.h"
#include "T.h"
#include "task.h"
#ifdef HAVE_LIBNCURSES
#include <ncurses.h>
#endif
////////////////////////////////////////////////////////////////////////////////
void handleAdd (const 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", "");
}
if (task.getDescription () == "")
throw std::string ("Cannot add a blank task.");
if (!tdb.addT (task))
throw std::string ("Could not create new task.");
}
////////////////////////////////////////////////////////////////////////////////
void handleProjects (TDB& tdb, T& task, Config& conf)
{
// 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);
}
std::cout << optionalBlankLine (conf)
<< table.render ()
<< optionalBlankLine (conf)
<< unique.size ()
<< (unique.size () == 1 ? " project" : " projects")
<< std::endl;
}
else
std::cout << "No projects."
<< std::endl;
}
////////////////////////////////////////////////////////////////////////////////
void handleTags (TDB& tdb, T& task, Config& conf)
{
// 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 ())
std::cout << optionalBlankLine (conf)
<< unique.size ()
<< (unique.size () == 1 ? " tag" : " tags")
<< std::endl;
else
std::cout << "No tags."
<< std::endl;
}
////////////////////////////////////////////////////////////////////////////////
// If a task is deleted, but is still in the pending file, then it may be
// undeleted simply by changing it's status.
void handleUndelete (TDB& tdb, T& task, Config& conf)
{
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") != "")
{
std::cout << "Task does not support 'undelete' for recurring tasks." << std::endl;
return;
}
T restored (*it);
restored.setStatus (T::pending);
restored.removeAttribute ("end");
tdb.modifyT (restored);
std::cout << "Task " << id << " successfully undeleted." << std::endl;
return;
}
else
{
std::cout << "Task " << id << " is not deleted - therefore cannot undelete." << std::endl;
return;
}
}
}
std::cout << "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;
}
////////////////////////////////////////////////////////////////////////////////
void handleVersion (Config& conf)
{
// 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 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);
}
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);
}
}
std::cout << "Copyright (C) 2006 - 2008, P. Beckingham."
<< std::endl
<< PACKAGE
<< " "
<< VERSION
<< std::endl
<< std::endl
<< "Task comes with ABSOLUTELY NO WARRANTY; for details read the COPYING file"
<< std::endl
<< "included. This is free software, and you are welcome to redistribute it"
<< std::endl
<< "under certain conditions; again, see the COPYING file for details."
<< std::endl
<< std::endl
<< table.render ()
<< std::endl
<< "See http://www.beckingham.net/task.html for the latest releases and a full tutorial."
<< std::endl
<< std::endl;
// Verify installation. This is mentioned in the documentation as the way to
// ensure everything is properly installed.
if (all.size () == 0)
std::cout << "Configuration error: .taskrc contains no entries"
<< std::endl;
else
{
if (conf.get ("data.location") == "")
std::cout << "Configuration error: data.location not specified in .taskrc "
"file."
<< std::endl;
if (access (expandPath (conf.get ("data.location")).c_str (), X_OK))
std::cout << "Configuration error: data.location contains a directory name"
" that doesn't exist, or is unreadable."
<< std::endl;
}
}
////////////////////////////////////////////////////////////////////////////////
void 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;
}
else
{
// Update mask in parent.
t->setStatus (T::deleted);
updateRecurrenceMask (tdb, all, *t);
tdb.deleteT (*t);
return;
}
}
else
tdb.deleteT (*t);
break; // No point continuing the loop.
}
}
}
else
std::cout << "Task not deleted." << std::endl;
}
////////////////////////////////////////////////////////////////////////////////
void 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;
}
else
std::cout << "Task " << task.getId () << " already started." << std::endl;
}
}
throw std::string ("Task not found.");
}
////////////////////////////////////////////////////////////////////////////////
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',"
<< "'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.");
}
////////////////////////////////////////////////////////////////////////////////
void handleColor (Config& conf)
{
if (conf.get ("color", true))
{
std::cout << 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
{
std::cout << "Color is currently turned off in your .taskrc file." << std::endl;
}
}
////////////////////////////////////////////////////////////////////////////////

View File

@@ -1,6 +1,27 @@
////////////////////////////////////////////////////////////////////////////////
// Copyright 2006 - 2008, Paul Beckingham. All rights reserved.
// 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>
@@ -86,6 +107,10 @@ static const char* attributes[] =
"entry",
"start",
"end",
"recur",
"until",
"mask",
"imask",
"",
};
@@ -99,18 +124,23 @@ static const char* commands[] =
"delete",
"done",
"export",
"help",
"history",
"ghistory",
"info",
"list",
"long",
"ls",
"newest",
"next",
"oldest",
"overdue",
"projects",
"start",
"stats",
"summary",
"tags",
"undelete",
"usage",
"version",
"",
@@ -128,7 +158,8 @@ 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
{
@@ -164,35 +195,19 @@ static bool isCommand (const std::string& candidate)
}
////////////////////////////////////////////////////////////////////////////////
bool validDate (std::string& date)
bool validDate (std::string& date, Config& conf)
{
size_t firstSlash = date.find ("/");
size_t secondSlash = date.find ("/", firstSlash + 1);
if (firstSlash != std::string::npos &&
secondSlash != std::string::npos)
{
int m = ::atoi (date.substr (0, firstSlash ).c_str ());
int d = ::atoi (date.substr (firstSlash + 1, secondSlash - firstSlash).c_str ());
int y = ::atoi (date.substr (secondSlash + 1, std::string::npos ).c_str ());
if (!Date::valid (m, d, y))
throw std::string ("\"") + date + "\" is not a valid date.";
Date test (date, conf.get ("dateformat", "m/d/Y"));
// Convert to epoch form.
Date dt (m, d, y);
time_t t;
dt.toEpoch (t);
char converted[12];
sprintf (converted, "%u", (unsigned int) t);
date = converted;
}
else
throw std::string ("Badly formed date - use the MM/DD/YYYY format");
char epoch[12];
sprintf (epoch, "%d", (int) test.toEpoch ());
date = epoch;
return true;
}
////////////////////////////////////////////////////////////////////////////////
static bool validPriority (std::string& input)
static bool validPriority (const std::string& input)
{
if (input != "H" &&
input != "M" &&
@@ -206,32 +221,43 @@ static bool validPriority (std::string& input)
}
////////////////////////////////////////////////////////////////////////////////
static bool validAttribute (std::string& name, std::string& value)
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);
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;
}
////////////////////////////////////////////////////////////////////////////////
@@ -245,7 +271,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)
@@ -266,7 +292,12 @@ static bool validDescription (const std::string& input)
////////////////////////////////////////////////////////////////////////////////
static bool validCommand (std::string& input)
{
guess ("command", commands, input);
std::string copy = input;
guess ("command", commands, copy);
if (copy == "")
return false;
input = copy;
return true;
}
@@ -301,6 +332,12 @@ static bool validSubstitution (
return false;
}
////////////////////////////////////////////////////////////////////////////////
bool validDuration (std::string& input)
{
return (convertDuration (input) != 0) ? true : false;
}
////////////////////////////////////////////////////////////////////////////////
// Token Distinguishing characteristic
// ------- -----------------------------
@@ -314,7 +351,8 @@ static bool validSubstitution (
void parse (
std::vector <std::string>& args,
std::string& command,
T& task)
T& task,
Config& conf)
{
command = "";
@@ -322,56 +360,78 @@ 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 (command != "add" && // "add" doesn't require an ID
task.getId () == 0 &&
validId (arg))
task.setId (::atoi (arg.c_str ()));
if (validAttribute (name, value))
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 = 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 == "")
{
if (isCommand (arg) && validCommand (arg))
command = arg;
else
throw std::string ("'") + arg + "' is not a valid command.";
}
// 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);
}

2638
src/report.cpp Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,27 @@
////////////////////////////////////////////////////////////////////////////////
// Copyright 2006 - 2008, Paul Beckingham. All rights reserved.
// 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>
@@ -62,6 +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.
// Note: These rules form a hierarchy - the last rule is king.
// Colorization of the tagged.
if (gsFg["color.tagged"] != Text::nocolor ||
@@ -153,6 +175,50 @@ void autoColorize (T& task, Text::color& fg, Text::color& bg)
bg = gsBg["color.due"];
}
}
// Colorization by tag value.
std::map <std::string, Text::color>::iterator it;
for (it = gsFg.begin (); it != gsFg.end (); ++it)
{
if (it->first.substr (0, 10) == "color.tag.")
{
std::string value = it->first.substr (10, std::string::npos);
if (task.hasTag (value))
{
fg = gsFg[it->first];
bg = gsBg[it->first];
}
}
}
// Colorization by project name.
for (it = gsFg.begin (); it != gsFg.end (); ++it)
{
if (it->first.substr (0, 14) == "color.project.")
{
std::string value = it->first.substr (14, std::string::npos);
if (task.getAttribute ("project") == value)
{
fg = gsFg[it->first];
bg = gsBg[it->first];
}
}
}
// Colorization by keyword.
for (it = gsFg.begin (); it != gsFg.end (); ++it)
{
if (it->first.substr (0, 14) == "color.keyword.")
{
std::string value = lowerCase (it->first.substr (14, std::string::npos));
std::string desc = lowerCase (task.getDescription ());
if (desc.find (value) != std::string::npos)
{
fg = gsFg[it->first];
bg = gsBg[it->first];
}
}
}
}
////////////////////////////////////////////////////////////////////////////////

View File

@@ -1,18 +0,0 @@
////////////////////////////////////////////////////////////////////////////////
// Copyright 2006 - 2008, Paul Beckingham. All rights reserved.
//
//
////////////////////////////////////////////////////////////////////////////////
#ifndef INCLUDED_STLMACROS
#define INCLUDED_STLMACROS
#define foreach(i, c) \
for (typeof (c) *foreach_p = & (c); \
foreach_p; \
foreach_p = 0) \
for (typeof (foreach_p->begin()) i = foreach_p->begin(); \
i != foreach_p->end(); \
++i)
#endif
////////////////////////////////////////////////////////////////////////////////

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,27 @@
////////////////////////////////////////////////////////////////////////////////
// Copyright 2006 - 2008, Paul Beckingham. All rights reserved.
// 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
//
////////////////////////////////////////////////////////////////////////////////
@@ -10,46 +31,72 @@
#include <sys/types.h>
#include "Config.h"
#include "Table.h"
#include "Date.h"
#include "color.h"
#include "TDB.h"
#include "T.h"
#include "stlmacros.h"
#include "../auto.h"
#ifndef min
#define min(a,b) ((a) < (b) ? (a) : (b))
#endif
#ifndef max
#define max(a,b) ((a) > (b) ? (a) : (b))
#endif
#define foreach(i, c) \
for (typeof (c) *foreach_p = & (c); \
foreach_p; \
foreach_p = 0) \
for (typeof (foreach_p->begin()) i = foreach_p->begin(); \
i != foreach_p->end(); \
++i)
// parse.cpp
void parse (std::vector <std::string>&, std::string&, T&);
bool validDate (std::string&);
void parse (std::vector <std::string>&, std::string&, T&, Config&);
bool validDate (std::string&, Config&);
// 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 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&);
// command.cpp
void handleAdd (const TDB&, T&, Config&);
void handleProjects (TDB&, T&, Config&);
void handleTags (TDB&, T&, Config&);
void handleUndelete (TDB&, T&, Config&);
void handleVersion (Config&);
void handleExport (TDB&, T&, Config&);
void handleDelete (TDB&, T&, Config&);
void handleStart (TDB&, T&, Config&);
void handleDone (TDB&, T&, Config&);
void handleModify (TDB&, T&, Config&);
void handleColor (Config&);
// report.cpp
void filter (std::vector<T>&, T&);
void handleList (TDB&, T&, Config&);
void handleInfo (TDB&, T&, Config&);
void handleLongList (TDB&, T&, Config&);
void handleSmallList (TDB&, T&, Config&);
void handleCompleted (TDB&, T&, Config&);
void handleReportSummary (TDB&, T&, Config&);
void handleReportNext (TDB&, T&, Config&);
void handleReportHistory (TDB&, T&, Config&);
void handleReportGHistory (TDB&, T&, Config&);
void handleReportUsage (const TDB&, T&, Config&);
void handleReportCalendar (TDB&, T&, Config&);
void handleReportActive (TDB&, T&, Config&);
void handleReportOverdue (TDB&, T&, Config&);
void handleReportStats (TDB&, T&, Config&);
void handleReportOldest (TDB&, T&, Config&);
void handleReportNewest (TDB&, T&, Config&);
// util.cpp
bool confirm (const std::string&);
@@ -64,11 +111,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,5 +1,7 @@
t.t
tdb.t
date.t
duration.t
pending.data
completed.data

31
src/tests/Makefile Normal file
View File

@@ -0,0 +1,31 @@
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
all: $(PROJECT)
install: $(PROJECT)
@echo unimplemented
test: $(PROJECT)
@echo unimplemented
clean:
-rm *.o $(PROJECT)
.cpp.o:
g++ -c $(CFLAGS) $<
t.t: t.t.o $(OBJECTS) test.o
g++ t.t.o $(OBJECTS) test.o $(LFLAGS) -o t.t
tdb.t: tdb.t.o $(OBJECTS) test.o
g++ tdb.t.o $(OBJECTS) test.o $(LFLAGS) -o tdb.t
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

226
src/tests/date.t.cpp Normal file
View File

@@ -0,0 +1,226 @@
////////////////////////////////////////////////////////////////////////////////
// Copyright 2005 - 2008, Paul Beckingham. All rights reserved.
//
////////////////////////////////////////////////////////////////////////////////
#include <iostream>
#include <Date.h>
#include <test.h>
////////////////////////////////////////////////////////////////////////////////
int main (int argc, char** argv)
{
plan (100);
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");
// 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");
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");
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");
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");
// Validity.
ok (Date::valid (2, 29, 2008), "valid: 2/29/2008");
notok (Date::valid (2, 29, 2007), "invalid: 2/29/2007");
// 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");
// 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");
// 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");
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");
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 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");
is (now - yesterday, 1, "today - yesterday == 1");
is (happyNewYear.toString (), "1/1/2008", "toString 1/1/2008");
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 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 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);
}
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;
}
////////////////////////////////////////////////////////////////////////////////

View File

@@ -1,4 +1,27 @@
////////////////////////////////////////////////////////////////////////////////
// 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 "../T.h"
@@ -8,7 +31,7 @@
////////////////////////////////////////////////////////////////////////////////
int main (int argc, char** argv)
{
plan (4);
plan (5);
T t;
std::string s = t.compose ();
@@ -25,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

@@ -1,4 +1,27 @@
////////////////////////////////////////////////////////////////////////////////
// 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>

View File

@@ -1,11 +1,32 @@
////////////////////////////////////////////////////////////////////////////////
// Copyright 2007, 2008, Paul Beckingham. All rights reserved.
// 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 <string>
#include <library.h>
#include <task.h>
static int total = 0;
static int counter = 0;

View File

@@ -1,5 +1,27 @@
////////////////////////////////////////////////////////////////////////////////
// Copyright 2007, 2008, Paul Beckingham. All rights reserved.
// task - a command line task list manager.
//
// Copyright 2006 - 2008, Paul Beckingham.
// All rights reserved.
//
// This program is free software; you can redistribute it and/or modify it under
// the terms of the GNU General Public License as published by the Free Software
// Foundation; either version 2 of the License, or (at your option) any later
// version.
//
// This program is distributed in the hope that it will be useful, but WITHOUT
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
// details.
//
// You should have received a copy of the GNU General Public License along with
// this program; if not, write to the
//
// Free Software Foundation, Inc.,
// 51 Franklin Street, Fifth Floor,
// Boston, MA
// 02110-1301
// USA
//
////////////////////////////////////////////////////////////////////////////////
#ifndef INCLUDED_TEST

View File

@@ -1,6 +1,27 @@
////////////////////////////////////////////////////////////////////////////////
// Copyright 2004 - 2008, Paul Beckingham. All rights reserved.
// 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>
@@ -8,6 +29,9 @@
#include <string>
#include "task.h"
static const char* newline = "\n";
static const char* noline = "";
///////////////////////////////////////////////////////////////////////////////
void wrapText (
std::vector <std::string>& lines,
@@ -262,3 +286,23 @@ std::string lowerCase (const std::string& input)
}
////////////////////////////////////////////////////////////////////////////////
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)
{
if (conf.get ("blanklines", true) == true)
return newline;
return noline;
}
////////////////////////////////////////////////////////////////////////////////

View File

@@ -1,6 +1,27 @@
////////////////////////////////////////////////////////////////////////////////
// Copyright 2006 - 2008, Paul Beckingham. All rights reserved.
// 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>
@@ -11,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"
@@ -59,19 +82,19 @@ void formatTimeDeltaDays (std::string& output, time_t delta)
if (days > 365)
sprintf (formatted, "%.1f yrs", (days / 365.2422));
else if (days > 84)
sprintf (formatted, "%1d mths", (int) (days / 30.6));
sprintf (formatted, "%1d mth%s", (int) (days / 30.6), ((int) (days / 30.6) == 1 ? "" : "s"));
else if (days > 13)
sprintf (formatted, "%d wks", (int) (days / 7.0));
sprintf (formatted, "%d wk%s", (int) (days / 7.0), ((int) (days / 7.0) == 1 ? "" : "s"));
else if (days > 5.0)
sprintf (formatted, "%d days", (int) days);
sprintf (formatted, "%d day%s", (int) days, ((int) days == 1 ? "" : "s"));
else if (days > 1.0)
sprintf (formatted, "%.1f days", days);
else if (days * 24 > 1.0)
sprintf (formatted, "%d hrs", (int) (days * 24.0));
sprintf (formatted, "%d hr%s", (int) (days * 24.0), ((int) (days * 24.0) == 1 ? "" : "s"));
else if (days * 24 * 60 > 1)
sprintf (formatted, "%d mins", (int) (days * 24 * 60));
sprintf (formatted, "%d min%s", (int) (days * 24 * 60), ((int) (days * 24 * 60) == 1 ? "" : "s"));
else if (days * 24 * 60 * 60 > 1)
sprintf (formatted, "%d secs", (int) (days * 24 * 60 * 60));
sprintf (formatted, "%d sec%s", (int) (days * 24 * 60 * 60), ((int) (days * 24 * 60 * 60) == 1 ? "" : "s"));
else
strcpy (formatted, "-");
@@ -87,19 +110,19 @@ std::string formatSeconds (time_t delta)
if (days > 365)
sprintf (formatted, "%.1f yrs", (days / 365.2422));
else if (days > 84)
sprintf (formatted, "%1d mths", (int) (days / 30.6));
sprintf (formatted, "%1d mth%s", (int) (days / 30.6), ((int) (days / 30.6) == 1 ? "" : "s"));
else if (days > 13)
sprintf (formatted, "%d wks", (int) (days / 7.0));
sprintf (formatted, "%d wk%s", (int) (days / 7.0), ((int) (days / 7.0) == 1 ? "" : "s"));
else if (days > 5.0)
sprintf (formatted, "%d days", (int) days);
sprintf (formatted, "%d day%s", (int) days, ((int) days == 1 ? "" : "s"));
else if (days > 1.0)
sprintf (formatted, "%.1f days", days);
else if (days * 24 > 1.0)
sprintf (formatted, "%d hrs", (int) (days * 24.0));
sprintf (formatted, "%d hr%s", (int) (days * 24.0), ((int) (days * 24) == 1 ? "" : "s"));
else if (days * 24 * 60 > 1)
sprintf (formatted, "%d mins", (int) (days * 24 * 60));
sprintf (formatted, "%d min%s", (int) (days * 24 * 60), ((int) (days * 24 * 60) == 1 ? "" : "s"));
else if (days * 24 * 60 * 60 > 1)
sprintf (formatted, "%d secs", (int) (days * 24 * 60 * 60));
sprintf (formatted, "%d sec%s", (int) (days * 24 * 60 * 60), ((int) (days * 24 * 60 * 60) == 1 ? "" : "s"));
else
strcpy (formatted, "-");
@@ -161,14 +184,18 @@ const std::string uuid ()
static char randomHexDigit ()
{
static char digits[] = "0123456789abcdef";
#ifdef HAVE_RANDOM
return digits[random () % 16];
#else
return digits[rand () % 16];
#endif
}
////////////////////////////////////////////////////////////////////////////////
const std::string uuid ()
{
// xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
char id [37];
char id [48] = {0};
id[0] = randomHexDigit ();
id[1] = randomHexDigit ();
id[2] = randomHexDigit ();
@@ -211,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;
}
////////////////////////////////////////////////////////////////////////////////