Ideas for future release
========================

[ ]: Fix the rsync-options parser:
     
     --rsh="/usr/bin/rsh -i foo" <-- does not work, while
     -e "-i foo"                 <-- does

     Parser needs to be smarter.

[ ]: Add an option to limit backups by criteria other than available space.

     max-archive-age [<y>Y][<m>M][<d>d][<h>h][<M>m]
     - Delete archives older than this

     max-archive-num <x>
     - If there are more than <x> archives in the vault(?), delete the oldest
       until there are only <x> left.

     expire-archive <creation-date> <max-age>
     expire-archive ...
     expire-archive ...
     - Multiple expire-archive lines may be used.
     - The last rule that matches is applied.
       <creation-date> := <minute> <hour> <day-of-month> <month> <day-of-wk>
       <minute> := 0-59 | *
       <hour> := 0-23 | *
       <day-of-month> := 1-31 | *
       <month> := 1-12 | jan-dec | *
       <day-of-wk> := 0-7 (0,7 = sun) | sun-sat | *
       <max-age> := [<y>y][<m>m][<d>d][<h>h][<m>m] | never

     - How to calculate day of week:
       x1 = year % 100 (get the last two digits of the year)
       x2 += (x1 / 4)
       x3 = [jan=6,feb=2,mar=2,apr=5,may=0,3,5,1,4,6,2,dec=4][month]
       n = x1 + x2 + x3
       n %= 7 (day of week: 0=sun)

[ ]: Add a debugging command-line option to print out everything that
     would/could otherwise be written to the log file.

[ ]: Add an option to add configurable path between the vault path and the
     archive path.  It would work something like this:

     The way it is now:

     /<vault path> -- Set by the user in global config via "vault"
       |
       +-- <archive-timestamp>/ -- Generated by RVM at invokation
             |
             +-- <archive-path>/ -- Set by user in <default> or <job>

     The way I want it to be:

     /<vault path> -- Set by the user in global config via "vault"
       |
       +-- <archive-prefix-path>/ -- Set by the user in <default> or <job>
            |
            +-- <archive-timestamp>/ -- Generated by RVM at invokation
                  |
                  +-- <archive-path>/ -- Set by user in <default> or <job>

     The archive-prefix-path command would operate the same way as the
     archive-path command.

[ ]: Add an option to add additional command-line options to rsync when
     retrying failed rsync commands.

[ ]: Maybe: Modify RVM to warn if uint64 is not really 64 bits, and use
     slightly different algebra to suit.  (This bug was noticed on an amd-64
     machine where RVM was compiled using a 32-bit version of gcc.)

[ ]: Maybe: Change report manager to allow a vector of rsync output exit
     code/signal pairs, and report all rsync attempts, not just the output of
     the last attempt.

[ ]: Maybe: Change retry code to reschedule a failed job later, rather than
     retrying immediately.

[ ]: Maybe: Modify the report manager object:
     - Report manager should be the first object initialized, rather than the
       configuration manager.
     - Report manager should keep a list of all error messages.  Errors should
       be incorporated into the final report.  (Both fatal and nonfatal)
     - After archiving/cataloging is over, the report manager will send a
       report to standard output, just as it does now.  Then, reporter should
       query the configuration manager to see if a valid log-dir was found.
       If so, then save a report to file.  If not, add one more error to the
       list of errors printed to standard output.
     - Incorporate exitstat into report manager.
     - Incorporate logger into report manager?  This would make it easier to
       coordinate automated extension numbers when RVM is refreshing an
       existing archive (or recovering from an earlier archive failure).

[ ]: Maybe: optionally create a file for each archive job path with a
     ready-to-run rsync command that would restore the contents of this
     archive to the remove host?

[ ]: Maybe: write a vault-scouring program to search for files that are
     identical (such as where a file's name or location was changed between
     runs) and hard-linking them into place to save even more space.

[ ]: Maybe: devise a method of mapping directories to the usernames and
     groupnames of their owners in the catalog.  That way users could browse
     the files themselves without needing to know where their home areas
     physically reside.

[ ]: Maybe: write a web-based interface to the archive?  Another way a user
     could search for their files...

[ ]: Maybe: write a web-based report/log browser?

# vim:ts=2:shiftwidth=2:et:
