maint: consolidate developer debug messages
[platform/upstream/coreutils.git] / TODO
diff --git a/TODO b/TODO
index 5a9c122..e10da7c 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,33 +1,53 @@
-restore djgpp, eventually
-merge TODO lists
-add unit tests for lib/*.c
-
-strip: add an option to specify the program used to strip binaries.
-  suggestion from Karl Berry
+If you're interested in helping, here are some tasks that we've considered
+over the years.  Beware: some are quite old and no longer valid.  To avoid
+wasting your time by duplicating work or by working on a task that is no
+longer pertinent, please search the mailing list and post your intent
+before embarking on a big project.
+
+==================================================
+Modify chmod so that it does not change an inode's st_ctime
+  when the selected operation would have no other effect.
+  First suggested by Hans Ecke <http://hans.ecke.ws> in
+    http://thread.gmane.org/gmane.comp.gnu.coreutils.bugs/2920
+  Discussed more recently on <http://bugs.debian.org/497514>.
+
+document the following in coreutils.texi:
+  [
+  pinky
+
+Suggestion from Paul Eggert:
+  More generally, there's not that much use for imaxtostr nowadays,
+  since the inttypes module and newer versions of gettext allow things
+  like _("truncating %s at %" PRIdMAX " bytes") to work portably.
+  I suspect that (if someone cares to take the time) we can remove
+  all instances of imaxtostr and umaxtostr in coreutils and gnulib.
+
+cp --recursive: use fts and *at functions to perform directory traversals
+  in source and destination hierarchy rather than forming full file names.
+  The latter (current) approach fails unnecessarily when the names
+  become very long, and requires space and time that is quadratic in the
+  depth of the hierarchy.  [Bo Borgerson is working on this]
+
+printf:
+  Now that gnulib supports *printf("%a"), import one of the
+  *printf-posix modules so that printf(1) will support %a even on
+  platforms where the native *printf(3) is deficient.
+  Suggestion from Eric Blake.
+
+consider adding some implementation of the "col" utility
+  Suggested by Karl Berry.
 
 doc/coreutils.texi:
   Address this comment: FIXME: mv's behavior in this case is system-dependent
   Better still: fix the code so it's *not* system-dependent.
 
-implement --target-directory=DIR for install (per texinfo documentation)
-
 ls: add --format=FORMAT option that controls how each line is printed.
 
-cp --no-preserve=X should not attempt to preserve attribute X
-  reported by Andreas Schwab
-
 copy.c: Address the FIXME-maybe comment in copy_internal.
-And once that's done, add an exclusion so that `cp --link'
+And once that's done, add an exclusion so that 'cp --link'
 no longer incurs the overhead of saving src. dev/ino and dest. filename
 in the hash table.
 
-See if we can be consistent about where --verbose sends its output:
-  These all send --verbose output to stdout:
-    head, tail, rm, cp, mv, ln, chmod, chown, chgrp, install, ln
-  These send it to stderr:
-    shred mkdir split
-  readlink is different
-
 Write an autoconf test to work around build failure in HPUX's 64-bit mode.
 See notes in README -- and remove them once there's a work-around.
 
@@ -35,32 +55,11 @@ Integrate use of sendfile, suggested here:
   http://mail.gnu.org/archive/html/bug-fileutils/2003-03/msg00030.html
 I don't plan to do that, since a few tests demonstrate no significant benefit.
 
-Should printf '\0123' print "\n3"?
-  per report from TAKAI Kousuke on Mar 27
-  http://mail.gnu.org/archive/html/bug-coreutils/2003-03/index.html
-
 printf: consider adapting builtins/printf.def from bash
 
-df: add `--total' option, suggested here http://bugs.debian.org/186007
-
-seq: give better diagnostics for invalid formats:
-   e.g. no or too many % directives
-seq: consider allowing format string to contain no %-directives
-
-m4: rename all macros that start with AC_ to start with another prefix
-
-resolve RH report on cp -a forwarded by Tim Waugh
-
-Martin Michlmayr's patch to provide ls with `--sort directory' option
-
 tail: don't use xlseek; it *exits*.
   Instead, maybe use a macro and return nonzero.
 
-add mktemp?  Suggested by Nelson Beebe
-
-df: alignment problem of `Used' heading with e.g., -mP
-  reported by Karl Berry
-
 tr: support nontrivial equivalence classes, e.g. [=e=] with LC_COLLATE=fr_FR
 
 lib/strftime.c: Since %N is the only format that we need but that
@@ -68,28 +67,10 @@ lib/strftime.c: Since %N is the only format that we need but that
   would expand /%(-_)?\d*N/ to the desired string and then pass the
   resulting string to glibc's strftime.
 
-sort: Compress temporary files when doing large external sort/merges.
-  This improves performance when you can compress/uncompress faster than
-  you can read/write, which is common in these days of fast CPUs.
-  suggestion from Charles Randall on 2001-08-10
-
-sort: Add an ordering option -R that causes 'sort' to sort according
-  to a random permutation of the correct sort order.  Also, add an
-  option --random-seed=SEED that causes 'sort' to use an arbitrary
-  string SEED to select which permutations to use, in a deterministic
-  manner: that is, if you sort a permutation of the same input file
-  with the same --random-seed=SEED option twice, you'll get the same
-  output.  The default SEED is chosen at random, and contains enough
-  information to ensure that the output permutation is random.
-  suggestion from Feth AREZKI, Stephan Kasal, and Paul Eggert on 2003-07-17
-
 unexpand: [http://www.opengroup.org/onlinepubs/007908799/xcu/unexpand.html]
   printf 'x\t \t y\n'|unexpand -t 8,9 should print its input, unmodified.
   printf 'x\t \t y\n'|unexpand -t 5,8 should print "x\ty\n"
 
-Let GNU su use the `wheel' group if appropriate.
-  (there are a couple patches, already)
-
 sort: Investigate better sorting algorithms; see Knuth vol. 3.
 
   We tried list merge sort, but it was about 50% slower than the
@@ -108,11 +89,8 @@ sort: Investigate better sorting algorithms; see Knuth vol. 3.
   5.3.1, who credits Lester Ford, Jr. and Selmer Johnson, American
   Mathematical Monthly 66 (1959), 387-389.
 
-cp --recursive: perform dir traversals in source and dest hierarchy rather
-  than forming full file names.  The latter (current) approach fails
-  unnecessarily when the names become very long.
-
-tail --p is now ambiguous
+shred: Update shred as described here to conform to DoD 5220 rules:
+http://lists.gnu.org/archive/html/bug-coreutils/2007-05/msg00075.html
 
 Remove suspicious uses of alloca (ones that may allocate more than
    about 4k)
@@ -120,19 +98,15 @@ Remove suspicious uses of alloca (ones that may allocate more than
 Adapt these contribution guidelines for coreutils:
   http://sources.redhat.com/automake/contribute.html
 
+Improve test coverage.
+  See HACKING for instructions on generating an html test coverage report.
+  Find a program that has poor coverage and improve.
 
-Changes expected to go in, post-5.2.1:
+Changes expected to go in, someday.
 ======================================
 
-  wc: add an option, --files0-from [as for du] to make it read NUL-delimited
-    file name arguments from a file.
-
   dd patch from Olivier Delhomme
 
-  Apply Andreas Gruenbacher's ACL and xattr changes
-
-  Apply Bruno Haible's hostname changes
-
   test/mv/*: clean up $other_partition_tmpdir in all cases
 
   ls: when both -l and --dereference-command-line-symlink-to-dir are
@@ -141,77 +115,56 @@ Changes expected to go in, post-5.2.1:
   an implicit --NO-dereference-command-line-symlink-to-dir meaning.
   Pointed out by Karl Berry.
 
-  A more efficient version of factor, and possibly one that
-  accepts inputs of size 2^64 and larger.
-
-  dd: consider adding an option to suppress `bytes/block read/written'
-  output to stderr.  Suggested here:
-    http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=165045
-
   Pending copyright papers:
   ------------------------
-  ls --color: Ed Avis' patch to suppress escape sequences for
-    non-highlighted files
-
   getpwnam from Bruce Korb
 
   pb (progress bar) from Miika Pekkarinen
 
   ------------------------------
-  Look into improving the performance of md5sum.
-  `openssl md5' is consistently about 30% faster than md5sum on an idle
-  AMD 2000-XP system with plenty of RAM and a 261 MB input file.
-  openssl's md5 implementation is in assembly, generated by a perl script.
-
-  On an AMD-64 system, using a 700MB file on a tmpfs file system
-  (and enough RAM so that no actual disk reads were performed),
-  GNU md5sum is slightly faster than `openssl md5', e.g.:
-
-    2.38s user 0.38s system 100% cpu 2.756 total  (gnu md5sum)
-    vs.
-    2.52s user 0.34s system 100% cpu 2.869 total
-
-  However, `openssl sha1' is about 5% faster than GNU sha1sum:
-
-    3.32s user 0.33s system 99% cpu 3.653 total   (openssl sha1)
-    3.45s user 0.39s system 99% cpu 3.843 total   (gnu sha1sum)
-
-  The above are using the debian-sid (amd_64 alioth) binaries from
-  coreutils-5.2.1.  When I compile the latest (coreutils-cvs) with
-  gcc-4.0 -O3, I get slightly (2-3%) better sha1sum performance,
-  and a ~7% *decrease* in performance for md5sum.  I suspect that
-  with the right compiler options you can do much better.
-  ------------------------------
 
-Have euidaccess.m4 check for eaccess as well as euidaccess
-If found, then do `#define euidaccess eaccess'.
-
-Remove long-deprecated options like tail's --allow-missing
+Remove long-deprecated options.  Search case-insensitive for
+'deprecated' and 'remove in '.  Automate this.
 
 Add a distcheck-time test to ensure that every distributed
 file is either read-only(indicating generated) or is
 version-controlled and up to date.
 
-Implement Ulrich Drepper's suggestion to use getgrouplist rather
-  than getugroups.  This affects only `id', but makes a big difference
-  on systems with many users and/or groups, and makes id usable once
-  again on systems where access restrictions make getugroups fail.
-  But first we'll need a run-test (either in an autoconf macro or at
-  run time) to avoid the segfault bug in libc-2.3.2's getgrouplist.
-  In that case, we'd revert to using a new (to-be-written) getgrouplist
-  module that does most of what `id' already does.
-
-remove `%s' notation:
+remove '%s' notation (now that they're all gone, add a maint.mk sc_
+    rule to ensure no new ones are added):
   grep -E "\`%.{,4}s'" src/*.c
 
-remove.c should never exit, yet may do so (see uses of EXIT_FAILURE)
+remove all uses of the 'register' keyword: Done.  add a maint.mk rule
+  for this, too.
 
 remove or adjust chown's --changes option, since it
   can't always do what it currently says it does.
 
+Support arbitrary-precision arithmetic in those tools for which it
+makes sense.  Factor and expr already support this via libgmp.
+The "test" program is covered via its string-based comparison of
+integers.  To be converted: seq.
+
 Adapt tools like wc, tr, fmt, etc. (most of the textutils) to be
   multibyte aware.  The problem is that I want to avoid duplicating
   significant blocks of logic, yet I also want to incur only minimal
-  (preferably `no') cost when operating in single-byte mode.
+  (preferably 'no') cost when operating in single-byte mode.
+
+pr's use of nstrftime can make it malloc a very large (up to SIZE_MAX) buffer
+
+-----
+
+Copyright (C) 2002-2013 Free Software Foundation, Inc.
+
+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 3 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.
 
-Remove all uses of the `register' keyword
+You should have received a copy of the GNU General Public License
+along with this program.  If not, see <http://www.gnu.org/licenses/>.