1If you're interested in helping, here are some tasks that we've considered 2over the years. Beware: some are quite old and no longer valid. To avoid 3wasting your time by duplicating work or by working on a task that is no 4longer pertinent, please search the mailing list and post your intent 5before embarking on a big project. 6 7================================================== 8Modify chmod so that it does not change an inode's st_ctime 9 when the selected operation would have no other effect. 10 First suggested by Hans Ecke <http://hans.ecke.ws> in 11 http://thread.gmane.org/gmane.comp.gnu.coreutils.bugs/2920 12 Discussed more recently on <http://bugs.debian.org/497514>. 13 14document the following in coreutils.texi: 15 [ 16 pinky 17 18Suggestion from Paul Eggert: 19 More generally, there's not that much use for imaxtostr nowadays, 20 since the inttypes module and newer versions of gettext allow things 21 like _("truncating %s at %" PRIdMAX " bytes") to work portably. 22 I suspect that (if someone cares to take the time) we can remove 23 all instances of imaxtostr and umaxtostr in coreutils and gnulib. 24 25cp --recursive: use fts and *at functions to perform directory traversals 26 in source and destination hierarchy rather than forming full file names. 27 The latter (current) approach fails unnecessarily when the names 28 become very long, and requires space and time that is quadratic in the 29 depth of the hierarchy. [Bo Borgerson is working on this] 30 31printf: 32 Now that gnulib supports *printf("%a"), import one of the 33 *printf-posix modules so that printf(1) will support %a even on 34 platforms where the native *printf(3) is deficient. 35 Suggestion from Eric Blake. 36 37renice: POSIX utility, needs implementing. 38 suggestion from Karl Berry (among others). 39 Bob Proulx is working on this. 40 41doc/coreutils.texi: 42 Address this comment: FIXME: mv's behavior in this case is system-dependent 43 Better still: fix the code so it's *not* system-dependent. 44 45ls: add --format=FORMAT option that controls how each line is printed. 46 47cp --no-preserve=X should not attempt to preserve attribute X 48 reported by Andreas Schwab 49 50copy.c: Address the FIXME-maybe comment in copy_internal. 51And once that's done, add an exclusion so that `cp --link' 52no longer incurs the overhead of saving src. dev/ino and dest. filename 53in the hash table. 54 55Write an autoconf test to work around build failure in HPUX's 64-bit mode. 56See notes in README -- and remove them once there's a work-around. 57 58Integrate use of sendfile, suggested here: 59 http://mail.gnu.org/archive/html/bug-fileutils/2003-03/msg00030.html 60I don't plan to do that, since a few tests demonstrate no significant benefit. 61 62printf: consider adapting builtins/printf.def from bash 63 64tail: don't use xlseek; it *exits*. 65 Instead, maybe use a macro and return nonzero. 66 67tr: support nontrivial equivalence classes, e.g. [=e=] with LC_COLLATE=fr_FR 68 69lib/strftime.c: Since %N is the only format that we need but that 70 glibc's strftime doesn't support, consider using a wrapper that 71 would expand /%(-_)?\d*N/ to the desired string and then pass the 72 resulting string to glibc's strftime. 73 74unexpand: [http://www.opengroup.org/onlinepubs/007908799/xcu/unexpand.html] 75 printf 'x\t \t y\n'|unexpand -t 8,9 should print its input, unmodified. 76 printf 'x\t \t y\n'|unexpand -t 5,8 should print "x\ty\n" 77 78Let GNU su use the `wheel' group if appropriate. 79 (there are a couple patches, already) 80 81sort: Investigate better sorting algorithms; see Knuth vol. 3. 82 83 We tried list merge sort, but it was about 50% slower than the 84 recursive algorithm currently used by sortlines, and it used more 85 comparisons. We're not sure why this was, as the theory suggests it 86 should do fewer comparisons, so perhaps this should be revisited. 87 List merge sort was implemented in the style of Knuth algorithm 88 5.2.4L, with the optimization suggested by exercise 5.2.4-22. The 89 test case was 140,213,394 bytes, 426,4424 lines, text taken from the 90 GCC 3.3 distribution, sort.c compiled with GCC 2.95.4 and running on 91 Debian 3.0r1 GNU/Linux, 2.4GHz Pentium 4, single pass with no 92 temporary files and plenty of RAM. 93 94 Since comparisons seem to be the bottleneck, perhaps the best 95 algorithm to try next should be merge insertion. See Knuth section 96 5.3.1, who credits Lester Ford, Jr. and Selmer Johnson, American 97 Mathematical Monthly 66 (1959), 387-389. 98 99shred: Update shred as described here to conform to DoD 5220 rules: 100http://lists.gnu.org/archive/html/bug-coreutils/2007-05/msg00075.html 101 102Remove suspicious uses of alloca (ones that may allocate more than 103 about 4k) 104 105Adapt these contribution guidelines for coreutils: 106 http://sources.redhat.com/automake/contribute.html 107 108Improve test coverage. 109 See HACKING for instructions on generating an html test coverage report. 110 Find a program that has poor coverage and improve. 111 112Changes expected to go in, someday. 113====================================== 114 115 dd patch from Olivier Delhomme 116 117 test/mv/*: clean up $other_partition_tmpdir in all cases 118 119 ls: when both -l and --dereference-command-line-symlink-to-dir are 120 specified, consider whether to let the latter select whether to 121 dereference command line symlinks to directories. Since -l has 122 an implicit --NO-dereference-command-line-symlink-to-dir meaning. 123 Pointed out by Karl Berry. 124 125 dd: consider adding an option to suppress `bytes/block read/written' 126 output to stderr. Suggested here: 127 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=165045 128 129 Pending copyright papers: 130 ------------------------ 131 getpwnam from Bruce Korb 132 133 pb (progress bar) from Miika Pekkarinen 134 135 ------------------------------ 136 137Remove long-deprecated options. Search case-insensitive for 138`deprecated' and `remove in '. Automate this. 139 140Add a distcheck-time test to ensure that every distributed 141file is either read-only(indicating generated) or is 142version-controlled and up to date. 143 144remove `%s' notation (now that they're all gone, add a maint.mk sc_ 145 rule to ensure no new ones are added): 146 grep -E "\`%.{,4}s'" src/*.c 147 148remove all uses of the `register' keyword: Done. add a maint.mk rule 149 for this, too. 150 151remove or adjust chown's --changes option, since it 152 can't always do what it currently says it does. 153 154Support arbitrary-precision arithmetic in those tools for which it 155makes sense. Factor and expr already support this via libgmp. 156The "test" program is covered via its string-based comparison of 157integers. To be converted: seq. 158 159Adapt tools like wc, tr, fmt, etc. (most of the textutils) to be 160 multibyte aware. The problem is that I want to avoid duplicating 161 significant blocks of logic, yet I also want to incur only minimal 162 (preferably `no') cost when operating in single-byte mode. 163 164pr's use of nstrftime can make it malloc a very large (up to SIZE_MAX) buffer 165 166----- 167 168Copyright (C) 2002-2010 Free Software Foundation, Inc. 169 170This program is free software: you can redistribute it and/or modify 171it under the terms of the GNU General Public License as published by 172the Free Software Foundation, either version 3 of the License, or 173(at your option) any later version. 174 175This program is distributed in the hope that it will be useful, 176but WITHOUT ANY WARRANTY; without even the implied warranty of 177MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 178GNU General Public License for more details. 179 180You should have received a copy of the GNU General Public License 181along with this program. If not, see <http://www.gnu.org/licenses/>. 182