summaryrefslogtreecommitdiff
path: root/app-misc/tdl
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2018-07-14 21:03:06 +0100
committerV3n3RiX <venerix@redcorelinux.org>2018-07-14 21:03:06 +0100
commit8376ef56580626e9c0f796d5b85b53a0a1c7d5f5 (patch)
tree7681bbd4e8b05407772df40a4bf04cbbc8afc3fa /app-misc/tdl
parent30a9caf154332f12ca60756e1b75d2f0e3e1822d (diff)
gentoo resync : 14.07.2018
Diffstat (limited to 'app-misc/tdl')
-rw-r--r--app-misc/tdl/Manifest8
-rw-r--r--app-misc/tdl/files/1.5.2-ldflags.patch13
-rw-r--r--app-misc/tdl/files/tdl-1.5.2-list.c.patch34
-rw-r--r--app-misc/tdl/files/tdl-1.5.2-main.c.patch178
-rw-r--r--app-misc/tdl/files/tdl-1.5.2-man.patch507
-rw-r--r--app-misc/tdl/metadata.xml13
-rw-r--r--app-misc/tdl/tdl-1.5.2-r2.ebuild75
7 files changed, 828 insertions, 0 deletions
diff --git a/app-misc/tdl/Manifest b/app-misc/tdl/Manifest
new file mode 100644
index 000000000000..5d18c067b65d
--- /dev/null
+++ b/app-misc/tdl/Manifest
@@ -0,0 +1,8 @@
+AUX 1.5.2-ldflags.patch 350 BLAKE2B 147ecde0a506852a3540c825143478cd7b741d3846afa7e58fe01cb389aaa1b9bd186916cd714b5d24a01a6ce5cc714e0bab53d95fee563a2916d8d87a149df8 SHA512 a3bb6f75a56d350755edf4cbb7a36fbe3da2e87fb8744a5597f9909cfe9e03b9ea4a50d70d9ca0cb2c480c11597701fbf9866d5eb7e726617005679c41ec5e9d
+AUX tdl-1.5.2-list.c.patch 1272 BLAKE2B 4d65bd0c6336d459b388f2375468871df6e7761e5be90aba3d059ec7991b4e41907b3c1089f3ada9416cb944a74b90d15c8435866d622e1117b4084df9facba8 SHA512 a66d0728f06d386827dd1232e3c290c9e749689cb368b9240638cde86c5ef1ae5e9ce5923a6b7dbba5e04c30ded2174c1c16e24ca6a943754cd178098a732400
+AUX tdl-1.5.2-main.c.patch 4967 BLAKE2B f609c3a44996ddf4bac91f65e28e3dbad4600284a8ffe0f249a2e58289ee98d0f6fb4533599d66b8a7019e52a235f6366ace8ef12e6882606849f9fccbd3e927 SHA512 b7036f2b4292263fcde59c6cb46a869dec92fe314f4d3a5d4f2f5411adb945ec5493e82a142372bca933d67c423c4deff333b297a1dc2481d993de1789faaeb2
+AUX tdl-1.5.2-man.patch 11004 BLAKE2B 849601edce8452c3ca590b6b10f211ee81355adc121ff878fee165758bde10cc58b4a72a0bb71855b58093ff45a21d51761e24563b50c8be88ebb61d9d1a50eb SHA512 fef2ca8f8c6db0b61037ad10269fe185f2d5cb1ffdee0560acdba61be87d71d2195471412d26a5c6e7766332d9a13bf95774b0374de14b6df7b4a97ad27e8d32
+DIST tdl-1.5.2.tar.gz 66057 BLAKE2B cc2d5581126d995098b5dc3032c97213614acaea3b984a507a824da2ba4d3be9afff954722f29acf0b9bd26db42ada22d67fc9110496961c2cb3104d9b4b7ece SHA512 8c07a5b6a5434bb567a2d68b6e0215bbfa7be3f7176ae1042652ac18684289117230af25d8d161fcf1ba27d9b740fd3fcd43c3213467b533de64390686481fe0
+DIST tdl-screenshot.png.tar 20480 BLAKE2B ce9284501ba1550179e1c3da54399a802aae3c0fb23b9a1ea25a1adb0f5c0404fe7694a360435913bb91cc1977d71561050ec0fe4e1681db775cdc7ec5fa11b7 SHA512 caca9793626b320ded4c7f16425b98e4bfde9ab0ca3c1bea60ecc8aaa8db080ab6fc3c474aef4d56e394b6415ec1162671329912aa22452dbd5dc72b50c7c8f6
+EBUILD tdl-1.5.2-r2.ebuild 1513 BLAKE2B bc883123e1df051229cfe479f95f46faeb498dbb4aa8c501dfd901a247a0797dd80c528603ed518202e3eb8fab926f0ba825af69f77c6123eb77fcee8318242a SHA512 40c6116b132441e21d62bccb997b1e140879df1981684aaba097d8b3373b4f933d94b89e52b3dc2d864a1b08193b09811437bad3077e228a600d0275fb752794
+MISC metadata.xml 507 BLAKE2B 9887ee368ca6f3409ee7da8a1fe98b0b6bac98f3b6949a1a263c9a8966b95d73c33c2b496f98732824e08d17af45b12a12916707e6932be88a947e9ca46d416e SHA512 ce0e36e0dc95b3c050f17e33220bb85c07946127337ae766b7c3af2d9d0891187bb9ab73d8cb01f91bad4f061620d19a403f3af85c801e3194f0a9dc6a0b6ce2
diff --git a/app-misc/tdl/files/1.5.2-ldflags.patch b/app-misc/tdl/files/1.5.2-ldflags.patch
new file mode 100644
index 000000000000..d807fdf02246
--- /dev/null
+++ b/app-misc/tdl/files/1.5.2-ldflags.patch
@@ -0,0 +1,13 @@
+diff --git a/Makefile.in b/Makefile.in
+index 46b05ca..eb9b656 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -52,7 +52,7 @@ OBJ = main.o io.o add.o done.o remove.o move.o list.o \
+ all : tdl
+
+ tdl : $(OBJ)
+- $(CC) $(CFLAGS) -o tdl $(OBJ) $(LIB_READLINE)
++ $(CC) $(CFLAGS) $(LDFLAGS) -o tdl $(OBJ) $(LIB_READLINE)
+
+ %.o : %.c
+ $(CC) $(CFLAGS) -c $<
diff --git a/app-misc/tdl/files/tdl-1.5.2-list.c.patch b/app-misc/tdl/files/tdl-1.5.2-list.c.patch
new file mode 100644
index 000000000000..d2cc39bd49c1
--- /dev/null
+++ b/app-misc/tdl/files/tdl-1.5.2-list.c.patch
@@ -0,0 +1,34 @@
+--- tdl-1.5.2.orig/list.c
++++ tdl-1.5.2/list.c
+@@ -75,14 +75,15 @@
+ static void print_timestamp(int timestamp, char *leader, int indent, int monochrome)/*{{{*/
+ {
+ char buffer[32];
+- time_t now;
++ time_t now, timestamp2;
+ long diff, days_ago, days_ahead;
+
+ now = time(NULL);
+ diff = now - timestamp;
+ days_ago = (diff + ((diff > 0) ? 43200 : -43200)) / 86400;
++ timestamp2 = (time_t) timestamp;
+ strftime(buffer, sizeof(buffer), "%a %d %b %Y %H:%M",
+- localtime((time_t *)&timestamp));
++ localtime(&timestamp2));
+ do_indent(indent+2);
+ if (days_ago < 0) {
+ days_ahead = - days_ago;
+@@ -524,6 +525,13 @@
+ * Otherwise, use the priority from the specified node, _except_ when
+ * that is higher than normal, in which case use normal. */
+ prio_to_use = (prio_set) ? prio : ((node_prio > prio) ? prio : node_prio);
++ /* if listing up-to-some-depth (option -N) and also
++ * beginning at some top-level (option NNN) then depth must be
++ * decremented by 1
++ * see: http://bugs.debian.org/364083 */
++ if (options.depth > 0) {
++ options.depth--;
++ }
+ list_chain(&n->kids, INDENT_TAB, 0, &options, index_buffer, prio_to_use, now, hits);
+ }
+ } else if ((y[0] == '-') && (y[1] == '-')) {
diff --git a/app-misc/tdl/files/tdl-1.5.2-main.c.patch b/app-misc/tdl/files/tdl-1.5.2-main.c.patch
new file mode 100644
index 000000000000..c195a1e5cb7c
--- /dev/null
+++ b/app-misc/tdl/files/tdl-1.5.2-main.c.patch
@@ -0,0 +1,178 @@
+--- tdl-1.5.2.orig/main.c
++++ tdl-1.5.2/main.c
+@@ -80,7 +80,7 @@
+ return;
+ }
+ /*}}}*/
+-static volatile void unlock_and_exit(int code)/*{{{*/
++static void unlock_and_exit(int code)/*{{{*/
+ {
+ unlock_database();
+ exit(code);
+@@ -237,22 +237,91 @@
+
+ }
+ /*}}}*/
+-static void rename_database(char *path)/*{{{*/
++static mode_t get_mode(const char *path); /* prototype */
++/*}}}*/
++static int copy_file_contents(char *pathsrc, char *pathdest) {
++ int src, dest;
++ ssize_t rdsize = 1;
++ char buf[4096];
++
++ src = open(pathsrc, O_RDONLY);
++ if (src == -1) {
++ perror("warning, couldn't open database");
++ return 0;
++ }
++ dest = open(pathdest, O_WRONLY | O_CREAT, get_mode(pathsrc));
++ if (dest == -1) {
++ perror("warning, couldn't open/create backup database");
++ close(src);
++ return 0;
++ }
++ if (ftruncate(dest,0) != 0) {
++ perror("warning, couldn't truncate backup database");
++ close(src);
++ close(dest);
++ return 0;
++ }
++ lseek(src,0,SEEK_SET);
++ lseek(dest,0,SEEK_SET);
++ while (rdsize > 0) {
++ rdsize = read(src, buf, 4096);
++ if (rdsize == -1) {
++ perror("warning, error reading database");
++ close(src);
++ close(dest);
++ return 0;
++ }
++ if (rdsize > 0) {
++ if (write(dest, buf, rdsize) != rdsize) {
++ perror("warning, error writing to backup database");
++ close(src);
++ close(dest);
++ return 0;
++ }
++ }
++ }
++ close(src);
++ close(dest);
++ return 1;
++}
++/*}}}*/
++static int path_is_symlink(char *path) {
++ int i;
++ struct stat s;
++ i = lstat(path, &s);
++ if ((i == 0) && (S_ISLNK(s.st_mode))) {
++ return 1; /* is a symlink */
++ }
++ return 0; /* not a symlink */
++}
++/*}}}*/
++static int rename_database(char *path)/*{{{*/
+ {
+- int len;
++ /* the rename_database function returns 1 if database or/and
++ * database backup file are symlinks; otherwise returns 0 */
++ int len, symlinks;
+ char *pathbak;
+-
++
+ len = strlen(path);
+ pathbak = new_array(char, len + 5);
+ strcpy(pathbak, path);
+ strcat(pathbak, ".bak");
+- if (rename(path, pathbak) < 0) {
+- if (is_noisy) {
+- perror("warning, couldn't save backup database:");
++
++ symlinks = path_is_symlink(path) | path_is_symlink(pathbak);
++
++ if (symlinks) {
++ if (access(path,F_OK) == 0) {
++ copy_file_contents(path, pathbak);
++ }
++ } else {
++ if (rename(path, pathbak) < 0) {
++ if (is_noisy) {
++ perror("warning, couldn't save backup database:");
++ }
+ }
+ }
+ free(pathbak);
+- return;
++ return symlinks;
+ }
+ /*}}}*/
+ static char *executable_name(char *argv0)/*{{{*/
+@@ -315,7 +384,7 @@
+ /*}}}*/
+ static void save_database(char *path)/*{{{*/
+ {
+- FILE *out;
++ FILE *out = NULL;
+ int out_fd;
+ mode_t database_mode;
+ if (is_loaded && currently_dirty) {
+@@ -324,20 +393,34 @@
+ /* The next line only used to happen if the command wasn't 'create'.
+ * However, it should quietly fail for create, where the existing database
+ * doesn't exist */
+- rename_database(path);
+-
+- /* Open database this way so that the permissions from the existing
+- database can be duplicated onto the new one in way free of race
+- conditions. */
+- out_fd = open(path, O_WRONLY | O_CREAT | O_EXCL, database_mode);
+- if (out_fd < 0) {
+- fprintf(stderr, "Could not open new database %s for writing : %s\n",
+- path, strerror(errno));
+- unlock_and_exit(1);
++ if (rename_database(path) == 0) {
++ /* database is a regular file */
++ /* Open database this way so that the permissions from the existing
++ database can be duplicated onto the new one in way free of race
++ conditions. */
++ out_fd = open(path, O_WRONLY | O_CREAT | O_EXCL, database_mode);
++ if (out_fd < 0) {
++ fprintf(stderr, "Could not open new database %s for writing : %s\n",
++ path, strerror(errno));
++ unlock_and_exit(1);
++ }
+ } else {
+- /* Normal case */
+- out = fdopen(out_fd, "wb");
++ /* database and/or backup database are symlinks */
++ /* we should truncate existing file and write its contents */
++ out_fd = open(path, O_WRONLY | O_CREAT, database_mode);
++ if (out_fd < 0) {
++ fprintf(stderr, "Could not open database %s for writing : %s\n",
++ path, strerror(errno));
++ unlock_and_exit(1);
++ } else {
++ /* Normal case */
++ if (ftruncate(out_fd, 0) != 0) {
++ perror("warning, couldn't truncate database:");
++ unlock_and_exit(1);
++ }
++ }
+ }
++ out = fdopen(out_fd, "wb");
+ if (!out) {
+ fprintf(stderr, "Cannot open database %s for writing\n", path);
+ unlock_and_exit(1);
+@@ -728,6 +811,11 @@
+
+ if (!is_loaded && cmds[index].load_db) {
+ load_database(current_database_path);
++ if (is_interactive && (!is_loaded)) {
++ fprintf(stderr, "error: could not open database. please create a "
++ "database with 'tdl create' before using this tdl command\n");
++ unlock_and_exit(-1);
++ }
+ }
+
+ pp = is_tdl ? (p + 1) : p;
diff --git a/app-misc/tdl/files/tdl-1.5.2-man.patch b/app-misc/tdl/files/tdl-1.5.2-man.patch
new file mode 100644
index 000000000000..955201a2fe2f
--- /dev/null
+++ b/app-misc/tdl/files/tdl-1.5.2-man.patch
@@ -0,0 +1,507 @@
+--- tdl-1.5.2.orig/tdl.1
++++ tdl-1.5.2/tdl.1
+@@ -2,25 +2,25 @@
+ .SH NAME
+ tdl \- To do list manager
+ .SH SYNOPSIS
+-tdl [-q]
++tdl [\-q]
+ .br
+-tdl [-q] add|edit|defer|log
++tdl [\-q] add|edit|defer|log
+ .br
+-tdl [-q] list|done|undo|report
++tdl [\-q] list|done|undo|report
+ .br
+-tdl [-q] remove|above|below|into|clone|copyto
++tdl [\-q] remove|above|below|into|clone|copyto
+ .br
+-tdl [-q] postpone|ignore|open
++tdl [\-q] postpone|ignore|open
+ .br
+-tdl [-q] which|version|help
++tdl [\-q] which|version|help
+ .br
+-tdla [-q]
++tdla [\-q]
+ .br
+-tdll [-q]
++tdll [\-q]
+ .br
+-tdld [-q]
++tdld [\-q]
+ .br
+-tdlg [-q]
++tdlg [\-q]
+
+ .SH DESCRIPTION
+ A program for managing a to-do list.
+@@ -68,9 +68,9 @@
+ modified database back to the disk. Only use it if you want to discard
+ all changes made in this tdl run.
+
+-.pp
++.PP
+ All forms may take
+-.I -q
++.I \-q
+ as the first command line argument. Currently, this suppresses the warning
+ message if no existing database can be found. The intended use is for using
+ .B tdll
+@@ -104,7 +104,7 @@
+ appear as the last children of the parent node afterwards.
+ .P
+ .ce 1
+---ooOOoo--
++\-\-ooOOoo-\-
+ .PP
+ .B tdl add
+ .I [@datespec]
+@@ -156,7 +156,7 @@
+ environment is set, in which case this specifies the path to use).
+ .P
+ .ce 1
+---ooOOoo--
++\-\-ooOOoo-\-
+ .PP
+ .B tdl below
+ .I index_to_insert_below
+@@ -173,7 +173,7 @@
+ appear as the first children of the parent node afterwards.
+ .P
+ .ce 1
+---ooOOoo--
++\-\-ooOOoo-\-
+ .PP
+ .B tdl clone
+ .I index_to_clone ...
+@@ -185,7 +185,7 @@
+ to change its text.
+ .P
+ .ce 1
+---ooOOoo--
++\-\-ooOOoo-\-
+ .PP
+ .B tdl copyto
+ .I new_parent_index
+@@ -197,7 +197,7 @@
+ children of an existing entry, rather than making them new top level entries.
+ .P
+ .ce 1
+---ooOOoo--
++\-\-ooOOoo-\-
+ .PP
+ .B tdl create
+ .PP
+@@ -217,7 +217,7 @@
+ TDL_DATABASE.
+ .P
+ .ce 1
+---ooOOoo--
++\-\-ooOOoo-\-
+ .PP
+ .B tdl defer
+ .I [@datespec]
+@@ -233,7 +233,7 @@
+ .P
+ which defers entries 1, 2.1 and all its children, and 5 until the following Friday.
+ To list deferred entries, use
+-.I list -p
++.I list \-p
+ , to defer entries indefinitely, see
+ .I postpone
+ command.
+@@ -242,7 +242,7 @@
+ command.
+ .P
+ .ce 1
+---ooOOoo--
++\-\-ooOOoo-\-
+ .PP
+ .B tdl done
+ .I @datespec
+@@ -278,7 +278,7 @@
+ section later in this page.
+ .P
+ .ce 1
+---ooOOoo--
++\-\-ooOOoo-\-
+ .PP
+ .B tdl edit
+ .I index_to_change
+@@ -294,7 +294,7 @@
+ command.
+ .P
+ .ce 1
+---ooOOoo--
++\-\-ooOOoo-\-
+ .PP
+ .B exit
+ .PP
+@@ -308,7 +308,7 @@
+ command, which loses all updates made during the current tdl run.
+ .P
+ .ce 1
+---ooOOoo--
++\-\-ooOOoo-\-
+ .PP
+ .B tdl export
+ .I filename
+@@ -322,14 +322,14 @@
+ the original database.
+ .P
+ .ce 1
+---ooOOoo--
++\-\-ooOOoo-\-
+ .PP
+ .B tdl help
+ .PP
+ This command displays a summary of use of each of the commands.
+ .P
+ .ce 1
+---ooOOoo--
++\-\-ooOOoo-\-
+ .PP
+ .B tdl ignore
+ .I index_to_ignore ...
+@@ -353,7 +353,7 @@
+ it
+ .P
+ .ce 1
+---ooOOoo--
++\-\-ooOOoo-\-
+ .PP
+ .B tdl import
+ .I filename
+@@ -367,7 +367,7 @@
+ wanted to merge their entries to form one combo database.
+ .P
+ .ce 1
+---ooOOoo--
++\-\-ooOOoo-\-
+ .PP
+ .B tdl into
+ .I new_parent_index
+@@ -381,23 +381,23 @@
+ argument has ".0" appended to it.
+ .P
+ .ce 1
+---ooOOoo--
++\-\-ooOOoo-\-
+ .PP
+ .B tdl list
+-.I [-v]
+-.I [-a]
+-.I [-p]
+-.I [-m]
+-.I [-1...9]
++.I [\-v]
++.I [\-a]
++.I [\-p]
++.I [\-m]
++.I [\-1...9]
+ .I [<min-priority>]
+ .I [<parent_index>|<search_conditions>...]
+ .br
+ .B tdll
+-.I [-v]
+-.I [-a]
+-.I [-p]
+-.I [-m]
+-.I [-1...9]
++.I [\-v]
++.I [\-a]
++.I [\-p]
++.I [\-m]
++.I [\-1...9]
+ .I [<min-priority>]
+ .I [<parent_index>|<search_conditions...]
+ .PP
+@@ -410,13 +410,13 @@
+ .B done
+ and which don't have start times deferred into the future are shown. If you
+ want to display all entries, include the
+-.B -a
++.B \-a
+ option (which means 'all'). If you want to display the dates and times when
+ the entries were added and/or done, include the
+-.B -v
++.B \-v
+ option (which means 'verbose').
+ The
+-.B -p
++.B \-p
+ option stands for postponed. It means that tasks which are 'deferred' or 'postponed'
+ are shown as well as open tasks.
+ .PP
+@@ -431,14 +431,14 @@
+ top node of each part of the database you want to show. So if your database
+ contains entries with indices 1, 2, 2.1, 2.2, 2.2.1, 3 and 4, the command
+ .PP
+-tdl list -a 2
++tdl list \-a 2
+ .PP
+ will show all entries 2, 2.1, 2.2 and 2.2.1, whether or not they are completed.
+ .PP
+ Also by default, all entries in the database, at any depth, will be shown. If
+ you only wish to show 'top-level' entries, for example, you can use
+ .PP
+-tdl list -1
++tdl list \-1
+ .PP
+ This lists level-1 entries. Any level-1 entry with hidden child entries
+ underneath it will show a summary of how many such children there are. For
+@@ -454,11 +454,11 @@
+ the normal 'negative index' method can't be used to specify an entry a certain
+ distance from the end of the list. If you want to do this, use a syntax like
+ .PP
+-tdl list -- -1
++tdl list \-\- \-1
+ .PP
+ to show the last index in the array, or
+ .PP
+-tdl list -2 -- -3 -2 -1
++tdl list \-2 \-\- \-3 \-2 \-1
+ .PP
+ to show level-1 and level-2 entries within the last 3 level-1 entries in the
+ list.
+@@ -489,7 +489,7 @@
+ approximate matches with keys up to 31 characters.
+ .PP
+ By default, the listing is produced with colour highlighting. The
+-.B -m
++.B \-m
+ option can be used to produce a monochrome listing instead. Alternatively, the
+ .B TDL_LIST_MONOCHROME
+ enviroment variable can be set (to any value) to achieve the same effect.
+@@ -512,7 +512,7 @@
+ .TE
+ .P
+ .ce 1
+---ooOOoo--
++\-\-ooOOoo-\-
+ .PP
+ .B tdl log
+ .br
+@@ -530,7 +530,7 @@
+ command.
+ .P
+ .ce 1
+---ooOOoo--
++\-\-ooOOoo-\-
+ .PP
+ .B narrow
+ .I new_root_index
+@@ -562,7 +562,7 @@
+ wouldn't make much sense).
+ .P
+ .ce 1
+---ooOOoo--
++\-\-ooOOoo-\-
+ .PP
+ .B tdl open
+ .I index_to_reopen[...] ...
+@@ -573,7 +573,7 @@
+ current time.
+ .P
+ .ce 1
+---ooOOoo--
++\-\-ooOOoo-\-
+ .PP
+ .B tdl postpone
+ .I index_to_postpone[...] ...
+@@ -586,7 +586,7 @@
+ command.
+ .P
+ .ce 1
+---ooOOoo--
++\-\-ooOOoo-\-
+ .PP
+ .B tdl pri
+ .I new_priority
+@@ -602,7 +602,7 @@
+ command.
+ .P
+ .ce 1
+---ooOOoo--
++\-\-ooOOoo-\-
+ .PP
+ .B tdl purge
+ .I since_epoch
+@@ -626,7 +626,7 @@
+ descendents. The default is to purge the entire database.
+ .P
+ .ce 1
+---ooOOoo--
++\-\-ooOOoo-\-
+ .PP
+ .B quit
+ .PP
+@@ -642,7 +642,7 @@
+ The main use for the quit command would be to avoid damaging the database if a serious error had been made.
+ .P
+ .ce 1
+---ooOOoo--
++\-\-ooOOoo-\-
+ .PP
+ .B tdl remove
+ .I index_to_remove ...
+@@ -659,7 +659,7 @@
+ descendents. This provides a quick way to remove a whole sub-tree of tasks.
+ .P
+ .ce 1
+---ooOOoo--
++\-\-ooOOoo-\-
+ .PP
+ .B tdl report
+ .I start_time
+@@ -688,12 +688,12 @@
+ will list all tasks completed between 2 and 1 weeks ago.
+ .PP
+ Where a child entry has been completed in the reporting period, but its parent
+-has not been completed, the parent text in the report will be surrounded by
+-'[[' and ']]'. To give one example, this will happen if the parent has other
++has not been completed, the parent text in the report will be surrounded by '[['
++and ']]'. To give one example, this will happen if the parent has other
+ child entries that haven't been completed yet.
+ .P
+ .ce 1
+---ooOOoo--
++\-\-ooOOoo-\-
+ .PP
+ .B revert
+ .PP
+@@ -706,7 +706,7 @@
+ The revert command does not take any arguments.
+ .P
+ .ce 1
+---ooOOoo--
++\-\-ooOOoo-\-
+ .PP
+ .B save
+ .PP
+@@ -728,7 +728,7 @@
+ The save command does not take any arguments.
+ .P
+ .ce 1
+---ooOOoo--
++\-\-ooOOoo-\-
+ .PP
+ .B tdl undo
+ .I index_of_entry_to_undo ...
+@@ -742,7 +742,7 @@
+ descendents. This provides a quick way to re-open a whole sub-tree of tasks.
+ .P
+ .ce 1
+---ooOOoo--
++\-\-ooOOoo-\-
+ .PP
+ .B tdl usage
+ .PP
+@@ -751,21 +751,21 @@
+ (q.v.)
+ .P
+ .ce 1
+---ooOOoo--
++\-\-ooOOoo-\-
+ .PP
+ .B tdl version
+ .PP
+ Show the version number of the software.
+ .P
+ .ce 1
+---ooOOoo--
++\-\-ooOOoo-\-
+ .PP
+ .B tdl which
+ .PP
+ Show the filename of the database that tdl accesses in the current context.
+ .P
+ .ce 1
+---ooOOoo--
++\-\-ooOOoo-\-
+ .PP
+ .B widen
+ .I n_level
+@@ -831,30 +831,30 @@
+ .TS
+ tab(&);
+ l l.
+--1h & exactly 1 hour ago
+--2d & exactly 2 days ago
++\-1h & exactly 1 hour ago
++\-2d & exactly 2 days ago
+ +1w & exactly 1 week in the future
+ +1m & exactly 1 month (30 days) in the future
+ +2y & exactly 2 years in the future
+--1d-0815 & 08:15am yesterday
++\-1d-0815 & 08:15am yesterday
+ +1d-08 & 8am tomorrow
+ +1w-08 & 8am on the same day as today next week
+ +6h-08 & 8am on the day containing the time 6 hours ahead of now
+-\.-08 & 8am today
+-\.-20 & 8pm today
++\.\-08 & 8am today
++\.\-20 & 8pm today
+ 20011020 & absolute : 12 noon on 20th October 2001
+ 011020 & absolute : 12 noon on 20th October 2001 (current century)
+ 1020 & absolute : 12 noon on 20th October 2001 (current century and year)
+ 20 & absolute : 12 noon on 20th October 2001 (current century, year and month)
+-20011020-081500 & absolute : 08:15am on 20th October 2001
+-20011020-0815 & absolute : 08:15am on 20th October 2001 (seconds=0)
+-20011020-08 & absolute : 08:00am on 20th October 2001 (minutes=seconds=0)
+-011020-08 & absolute : 08:00am on 20th October 2001 (minutes=seconds=0, current century)
++20011020\-081500 & absolute : 08:15am on 20th October 2001
++20011020\-0815 & absolute : 08:15am on 20th October 2001 (seconds=0)
++20011020\-08 & absolute : 08:00am on 20th October 2001 (minutes=seconds=0)
++011020\-08 & absolute : 08:00am on 20th October 2001 (minutes=seconds=0, current century)
+ etc & (see below)
+--sun & 12 noon on the previous Sunday
++\-sun & 12 noon on the previous Sunday
+ +sat & 12 noon on the following Saturday
+ +sat-08 & 8am on the following Saturday
+--tue-0815 & 08:15am on the previous Tuesday
++\-tue-0815 & 08:15am on the previous Tuesday
+ etc & (see below)
+ .TE
+ .PP
+@@ -876,7 +876,7 @@
+ of the more uses of this mode are rather far-fetched.
+ .PP
+ For the weekday and relative formats, the sign is actually optional. The
+-default sign (implying past (-) or future (+)) will then be assumed depending on
++default sign (implying past (\-) or future (+)) will then be assumed depending on
+ the command as shown below:
+
+ .PP
+@@ -886,9 +886,9 @@
+ Command & Default & Reason
+ _
+ add & + & Add entries with deferred start times
+-done & - & Entries have been completed at some time in the past
+-report & - & Reporting on earlier completed tasks not future ones
+-purge & - & Tasks won't be completed in the future, so no need to purge future ones
++done & \- & Entries have been completed at some time in the past
++report & \- & Reporting on earlier completed tasks not future ones
++purge & \- & Tasks won't be completed in the future, so no need to purge future ones
+ .TE
+
+ .SH HOMEPAGE
+@@ -943,16 +943,7 @@
+ .IP
+ cd project1
+ .br
+-ln -s ../project2/.tdldb .
++ln \-s ../project2/.tdldb .
+
+ .SH BUGS
+ Please report them to the author.
+-
+-.SH SEE ALSO
+-The full documentation for tdl is maintained as a Texinfo manual. If the info and tdl
+-programs are properly installed at your site, the command
+-.IP
+-info tdl
+-.PP
+-should give you access to the complete manual.
+-
diff --git a/app-misc/tdl/metadata.xml b/app-misc/tdl/metadata.xml
new file mode 100644
index 000000000000..fbad613d45e5
--- /dev/null
+++ b/app-misc/tdl/metadata.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>shell-tools@gentoo.org</email>
+ <name>Gentoo Shell Tools Project</name>
+ </maintainer>
+ <longdescription lang="en">
+ tdl is a command-line application for managing a list of outstanding
+ tasks that you have to do. It can organise tasks in a hierarchy, produce
+ weekly reports of completed tasks and so on.
+ </longdescription>
+</pkgmetadata>
diff --git a/app-misc/tdl/tdl-1.5.2-r2.ebuild b/app-misc/tdl/tdl-1.5.2-r2.ebuild
new file mode 100644
index 000000000000..3b105616d7c0
--- /dev/null
+++ b/app-misc/tdl/tdl-1.5.2-r2.ebuild
@@ -0,0 +1,75 @@
+# Copyright 1999-2012 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=4
+
+inherit eutils flag-o-matic toolchain-funcs
+
+DESCRIPTION="Command line To Do List manager"
+HOMEPAGE="http://www.rc0.org.uk/tdl/"
+SRC_URI="
+ http://www.rpcurnow.force9.co.uk/tdl/${P}.tar.gz
+ https://dev.gentoo.org/~jlec/distfiles/${PN}-screenshot.png.tar"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="amd64 ppc x86"
+IUSE="doc readline"
+
+RDEPEND="
+ sys-libs/ncurses
+ sys-libs/readline"
+DEPEND="${RDEPEND}
+ sys-apps/sed
+ sys-apps/texinfo
+ doc? ( virtual/texi2dvi )"
+
+src_prepare() {
+ epatch \
+ "${FILESDIR}"/${PV}-ldflags.patch \
+ "${FILESDIR}"/${P}-list.c.patch \
+ "${FILESDIR}"/${P}-main.c.patch \
+ "${FILESDIR}"/${P}-man.patch
+
+ tc-export CC
+}
+
+src_configure() {
+ local myconf="--prefix=${EPREFIX}/usr"
+
+ if ! use readline; then
+ myconf="${myconf} --without-readline"
+
+ sed -i 's#\($(LIB_READLINE)\)#\1 -lncurses##g' "${S}"/Makefile.in || die
+ fi
+ sed -i 's#-ltermcap#-lncurses#g' "${S}"/configure || die
+
+ # XXX: do not replace with econf.
+ "${S}"/configure ${myconf} || die "configure failed, sorry!"
+}
+
+src_compile() {
+ emake all tdl.info tdl.html tdl.txt
+ use doc && emake tdl.dvi tdl.ps tdl.pdf
+}
+
+src_install() {
+ local i
+
+ dodoc README NEWS tdl.txt "${WORKDIR}"/screenshot.png
+ doinfo tdl.info
+ dohtml tdl.html
+
+ dobin tdl
+ doman tdl.1
+
+ for i in tdl{a,l,d,g}
+ do
+ dosym tdl /usr/bin/${i}
+ dosym tdl.1 /usr/share/man/man1/${i}.1
+ done
+
+ if use doc; then
+ dodoc tdl.dvi tdl.ps tdl.pdf
+ fi
+}