If there is no lchown(), don't try to set the user & group of a symlink.
[rsync/rsync.git] / TODO
diff --git a/TODO b/TODO
index 413057e..72b009f 100644 (file)
--- a/TODO
+++ b/TODO
@@ -16,19 +16,17 @@ Handling IPv6 on old machines
 Other IPv6 stuff:
 Add ACL support                                                        2001/12/02
 Lazy directory creation
 Other IPv6 stuff:
 Add ACL support                                                        2001/12/02
 Lazy directory creation
-Conditional -z for old protocols
 proxy authentication                                           2002/01/23
 SOCKS                                                          2002/01/23
 FAT support
 Allow forcing arbitrary permissions                            2002/03/12
 --diff                                         david.e.sewell  2002/03/15
 proxy authentication                                           2002/01/23
 SOCKS                                                          2002/01/23
 FAT support
 Allow forcing arbitrary permissions                            2002/03/12
 --diff                                         david.e.sewell  2002/03/15
-Add daemon --no-detach and --no-fork options
+Add daemon --no-fork option
 Create more granular verbosity                         jw      2003/05/15
 
 DOCUMENTATION --------------------------------------------------------
 Update README
 Keep list of open issues and todos on the web site
 Create more granular verbosity                         jw      2003/05/15
 
 DOCUMENTATION --------------------------------------------------------
 Update README
 Keep list of open issues and todos on the web site
-Update web site from CVS
 Perhaps redo manual as SGML
 
 LOGGING --------------------------------------------------------------
 Perhaps redo manual as SGML
 
 LOGGING --------------------------------------------------------------
@@ -58,10 +56,8 @@ Add machines to build farm
 PERFORMANCE ----------------------------------------------------------
 File list structure in memory
 Traverse just one directory at a time
 PERFORMANCE ----------------------------------------------------------
 File list structure in memory
 Traverse just one directory at a time
-Hard-link handling
 Allow skipping MD4 file_sum                                    2002/04/08
 Accelerate MD4
 Allow skipping MD4 file_sum                                    2002/04/08
 Accelerate MD4
-String area code
 
 TESTING --------------------------------------------------------------
 Torture test
 
 TESTING --------------------------------------------------------------
 Torture test
@@ -74,7 +70,6 @@ If tests are skipped, say why.
 Test daemon feature to disallow particular options.
 Create pipe program for testing
 Create test makefile target for some tests
 Test daemon feature to disallow particular options.
 Create pipe program for testing
 Create test makefile target for some tests
-Test "refuse options" works
 
 RELATED PROJECTS -----------------------------------------------------
 rsyncsh
 
 RELATED PROJECTS -----------------------------------------------------
 rsyncsh
@@ -257,21 +252,6 @@ Lazy directory creation
                       --          --
 
 
                       --          --
 
 
-Conditional -z for old protocols
-
-  After we get the @RSYNCD greeting from the server, we know it's
-  version but we have not yet sent the command line, so we could just
-  remove the -z option if the server is too old.
-
-  For ssh invocation it's not so simple, because we actually use the
-  command line to start the remote process.  However, we only actually
-  do compression in token.c, and we could therefore once we discover
-  the remote version emit an error if it's too old.  I'm not sure if
-  that's a good tradeoff or not.
-
-                      --          --
-
-
 proxy authentication                                           2002/01/23
 
   Allow RSYNC_PROXY to be http://user:pass@proxy.foo:3128/, and do
 proxy authentication                                           2002/01/23
 
   Allow RSYNC_PROXY to be http://user:pass@proxy.foo:3128/, and do
@@ -345,7 +325,7 @@ Allow forcing arbitrary permissions                         2002/03/12
                       --          --
 
 
                       --          --
 
 
-Add daemon --no-detach and --no-fork options
+Add daemon --no-fork option
 
   Very useful for debugging.  Also good when running under a
   daemon-monitoring process that tries to restart the service when the
 
   Very useful for debugging.  Also good when running under a
   daemon-monitoring process that tries to restart the service when the
@@ -381,11 +361,6 @@ Keep list of open issues and todos on the web site
                       --          --
 
 
                       --          --
 
 
-Update web site from CVS
-
-                      --          --
-
-
 Perhaps redo manual as SGML
 
   The man page is getting rather large, and there is more information
 Perhaps redo manual as SGML
 
   The man page is getting rather large, and there is more information
@@ -444,7 +419,9 @@ Improve error messages
   our load?  (Debian #28416) Probably fixed now, but a test case would
   be good.
 
   our load?  (Debian #28416) Probably fixed now, but a test case would
   be good.
 
-
+  When running as a daemon, some errors should both be returned to the
+  user and logged.  This will make interacting with a daemon less
+  cryptic.
 
                       --          --
 
 
                       --          --
 
@@ -708,76 +685,6 @@ Traverse just one directory at a time
                       --          --
 
 
                       --          --
 
 
-Hard-link handling
-
-  At the moment hardlink handling is very expensive, so it's off by
-  default.  It does not need to be so.
-
-  Since most of the solutions are rather intertwined with the file
-  list it is probably better to fix that first, although fixing
-  hardlinks is possibly simpler.
-
-  We can rule out hardlinked directories since they will probably
-  screw us up in all kinds of ways.  They simply should not be used.
-
-  At the moment rsync only cares about hardlinks to regular files.  I
-  guess you could also use them for sockets, devices and other beasts,
-  but I have not seen them.
-
-  When trying to reproduce hard links, we only need to worry about
-  files that have more than one name (nlinks>1 && !S_ISDIR).
-
-  The basic point of this is to discover alternate names that refer to
-  the same file.  All operations, including creating the file and
-  writing modifications to it need only to be done for the first name.
-  For all later names, we just create the link and then leave it
-  alone.
-
-  If hard links are to be preserved:
-
-    Before the generator/receiver fork, the list of files is received
-    from the sender (recv_file_list), and a table for detecting hard
-    links is built.
-
-    The generator looks for hard links within the file list and does
-    not send checksums for them, though it does send other metadata.
-
-    The sender sends the device number and inode with file entries, so
-    that files are uniquely identified.
-
-    The receiver goes through and creates hard links (do_hard_links)
-    after all data has been written, but before directory permissions
-    are set.
-
-  At the moment device and inum are sent as 4-byte integers, which
-  will probably cause problems on large filesystems.  On Linux the
-  kernel uses 64-bit ino_t's internally, and people will soon have
-  filesystems big enough to use them.  We ought to follow NFS4 in
-  using 64-bit device and inode identification, perhaps with a
-  protocol version bump.
-
-  Once we've seen all the names for a particular file, we no longer
-  need to think about it and we can deallocate the memory.
-
-  We can also have the case where there are links to a file that are
-  not in the tree being transferred.  There's nothing we can do about
-  that.  Because we rename the destination into place after writing,
-  any hardlinks to the old file are always going to be orphaned.  In
-  fact that is almost necessary because otherwise we'd get really
-  confused if we were generating checksums for one name of a file and
-  modifying another.
-
-  At the moment the code seems to make a whole second copy of the file
-  list, which seems unnecessary.
-
-  We should have a test case that exercises hard links.  Since it
-  might be hard to compare ./tls output where the inodes change we
-  might need a little program to check whether several names refer to
-  the same file.
-
-                      --          --
-
-
 Allow skipping MD4 file_sum                                    2002/04/08
 
   If we're doing a local transfer, or using -W, then perhaps don't
 Allow skipping MD4 file_sum                                    2002/04/08
 
   If we're doing a local transfer, or using -W, then perhaps don't
@@ -806,14 +713,6 @@ Accelerate MD4
 
                       --          --
 
 
                       --          --
 
-
-String area code
-
-  Test whether this is actually faster than just using malloc().  If
-  it's not (anymore), throw it out.
-
-                      --          --
-
 TESTING --------------------------------------------------------------
 
 Torture test
 TESTING --------------------------------------------------------------
 
 Torture test
@@ -905,19 +804,6 @@ Create test makefile target for some tests
 
                       --          --
 
 
                       --          --
 
-
-Test "refuse options" works
-
-  What about for --recursive?
-
-  If you specify an unrecognized option here, you should get an error.
-
-  We need a test case for this...
-
-  Was this broken when we changed to popt?
-
-                      --          --
-
 RELATED PROJECTS -----------------------------------------------------
 
 rsyncsh
 RELATED PROJECTS -----------------------------------------------------
 
 rsyncsh