* TODO file for GNU sharutils

Tell <bug-gnu-utils@gnu.org> if you feel like volunteering for any
of these ideas, listed more or less in decreasing order of priority.
Some TODO items are implicit from received email.

- read_stduu, read_base64, decode: arbitrary limitation, by using a fixed
  length buffer.  Although well-formed uuencode coded output always fits
  within this buffer, an arbitrary-length filename may make the begin line
  exceed the buffer, and it is not robust to malicious input.
  Furthermore, POSIX states that input files are not necessarily text
  files since arbitrary data and line lengths may precede the embedded
  uuencode section.  We should probably be using gnulib's getline here.

- decode: POSIX only states that the input file contain output from uuencode,
  not that the encoded data begins immediately after a newline character.
  Maybe it is worth asking for an interpretation from the POSIX Austin Group
  as to whether arbitrary characters can proceed the "begin" on the first
  line of the encoded data.

- decode: POSIX requires uudecode to parse both octal AND symbolic mode,
  but the GNU uudecode currently fails on symbolic modes.

- main: When using the GNU uudecode extension of parsing multiple
  filenames, the -o option no longer makes sense (you end up decoding
  multiple source files into the same destination, destroying data from
  all but the last filename argument).  Since multiple filenames is an
  extension, you should reject attempts to use -o if more than one file is
  specified.

- decode: GNU uudecode attempts to do ~ expansion, which is allowed by
  POSIX since ~ is not part of the portable filename character set.
  However, it may be worth considering extensions to uuencode and uudecode
  that encode non-portable filename characters in such a manner that
  uudecode can recreate any valid filename (within the limits of the
  filesystem it is expanding onto).

- decode: If the output file already exists and is a FIFO or symlink, GNU
  uudecode fails, although POSIX requires that a FIFO be opened for
  writing and a symlink be followed.

- all over: uudecode should be careful to use binary mode ("rb" instead of
  "r" for fopen, for example), on systems where it matters.

- use chksum instead of md5sum.  Stephen Gildea proposed this and
  he is probably right.  chksum is standardized and more often found
  on non-GNU systems.

- change mail-files to use multiple To: lines instead of having a
  loop.  Suggested by Tom Tromey.

- shar: Don't offer -Z if compress isn't available (--help is
  adjusted; also add ifdefs to rip out the code?).
- shar: Add -j, --bzip2.
  (Done by Bruno; check whether it's added everywhere.  grep for
  BTzZ and similar strings)
- Use plural form:
    #: src/shar.c:2279
    #, c-format
    msgid "Created %d files\n"
    msgstr "%d Datei(en) erzeugt\n"
- Check the old todo list (after "cut here").

After 4.4.0:
- Remove intl/.
- Split some messages.

-=-=-=-=-=-=-=-=-=-=-=-=-=- cut here -=-=-=-=-=-=-=-=-=-=-=-=-=-

(One more word.  This list already existed when I took over the task
of maintaining sharutils.  I have not investigated the list enough
to say this will also be correct for me.  But Franc,ois and I often
agree so it is likely.)


.# Next release
The next release will have these changes:
. + better integrate uucode with the others, code-wise


.@ ChangeLog

.* Short term
. + Utiliser guillemets français dans fr.tt
. + convert uucode documentation into sharutils.texi
. + remove many fixed limits, everywhere
. + delete useless code, among which some matching features
. + simplify further `:' vs `true' usage, the latter might be avoided
. + remsync matters
.  - documentation
The documentation is still rudimentary, but might help you to
understand what is going on.  Many examples in some quick start
node might help.  In any case, criticize it at will, and let me
use your comments as an incentive for further improvement.  Any help
from native English speakers is appreciated.

Carefully ensure that you have a backup of your synchronized trees
before your tries of remsync.  It does work for me, but who knows if
it will not be dangerous in your particular setup.

White lines, and lines beginning with \`#\', are comments.  Command
keywords may be abbreviated to their first letter.  Space between
successive keywords may be omitted.  Variable arguments may often be
replaced by numeric index from lists.  SITE may also be local or 0.
SITE_SET is a list of SITE, default is all.  A ! prefix complements it.
The following commands are meant for automatic internal use:
.  - handle receving files over symbolic links or directories
.  - maintain a project title
.  - no remote could also be local
.  - diagnose /net/mnt_tmp/... directories
.  - if deleting a scan, already registered files declared unexisting
.  - have a paranoid option, in which diffs are always done
.  - study if and how the symbolic links might be transported

.* Medium term
. + integrate remsync script and documentation
. + have -C as synonymous for -d in shar
	1994-08-22, Karl Berry <kb@cs.umb.edu>
. + speedup unshar, far too slow while matching sed input
. + construct some `make check' for shar/unshar
. + do something sensible with file permissions
. + study if the symbolic links might be transported
. + when local/remote directories are relative, this should be to ~user
. + do not send absolute files
. + add some `-h UNSHAR.HDR' option
	1994-08-19, Marty Leisner <leisner@sdsp.mc.xerox.com>
. + decode options from a SHAR environment variable
	1994-08-30, Ulrich Drepper <drepper@ira.uka.de>
. + automatic detection of gzip'ed shar files in unshar
	1996-06-06, Larry Schwimmer <rosebud@cyclone.Stanford.EDU>
. + provide -z option to compress input of shar (???)
	1996-06-06, Larry Schwimmer <rosebud@cyclone.Stanford.EDU>
. + remsync matters
.  - have a command to rename a remote while keeping all its values
.  - do something sensible with file permissions
.  - qualify each scan with destination sites
.  - emacslisp/menage.el to omit, have it reconstructed automatically instead
.  - have an equivalence system for email addresses
.  - avoid computing checksums for ignored files
.  - have a master directory for .remsync's, have them located elsewhere
.  - have a recursive mode finding all .remsync's in tree
.  - provide encryption hooks, so people can use e.g. PGP or rot13 :-)

.* Long term
. + automatically retrieve in correct sequence from a bunched file
	1994-08-24, Karl Berry <kb@cs.umb.edu>
. + when -T, just reject binary files
	1994-08-29, Andrew A. Chernov <ache@astral.msk.su>
	1994-09-11, Eric Backus <ericb@lsid.hp.com> -- disagrees
