Add --prune as an alternative to --exclude, the difference being
[sgt/agedu] / TODO
diff --git a/TODO b/TODO
index 6b3a311..f4f4f0f 100644 (file)
--- a/TODO
+++ b/TODO
@@ -3,12 +3,6 @@ TODO list for agedu
 
 Before it's non-embarrassingly releasable:
 
- - render HTTP access control more sane.
-    * we should have the configurable option to use HTTP Basic
-      authentication or Linux magic /proc/net/tcp
-    * a third option, and the default one, should be to _try_ to use
-      magic auth, and fall back to HTTP Basic if unavailable
-
  - sort out the command line syntax
     * I think there should be a unified --mode / -M for every
       running mode, possibly without the one-letter option for the
@@ -16,29 +10,28 @@ Before it's non-embarrassingly releasable:
     * there should be some configurable options: 
        + range limits on the age display
        + server address in httpd mode
+       + HTTP authentication: specify username and/or password, the
+        latter by at least some means which doesn't involve it
+        showing up in "ps"
 
- - do some configurability for the disk scan
-    * wildcard-based includes and excludes
-       + wildcards can act on the last pathname component or the
-        whole lot
-       + include and exclude can be interleaved; implicit "include
-        *" before any
-    * reinstate filesystem crossing, though not doing so should
-      remain the default
-
- - polish up disk-scan progress reporting
-    * by default it should be conditional on isatty(2)
-    * manual override to enable or disable
-    * we should find rather than guessing the terminal width
-
- - work out what to do about atimes on directories
+ - work out what to do about atimes on directories in the absence of
+   the Linux syscall magic
     * one option is to read them during the scan and reinstate them
       after each recursion pop. Race-condition prone.
-    * marking them in a distinctive colour in the reports is the
-      other option.
+    * marking them in a distinctive colour in the reports is another
+      option.
+    * a third option is simply to ignore space taken up by
+      directories in the first place; inaccurate but terribly simple.
+    * incidentally, sometimes open(...,O_NOATIME) will fail, and
+      then we have to fall back to ordinary open. Be prepared to do
+      this, which probably means getting rid of the icky macro
+      hackery in du.c and turning it into a more sensible run-time
+      abstraction layer.
 
  - make a final decision on the name!
 
+ - man page, licence, online help.
+
 Future directions:
 
  - run-time configuration in the HTTP server
@@ -89,16 +82,25 @@ Future directions:
       results over the net to another machine where they'd be
       indexed; in particular, this way the indexing machine could be
       64-bit even if the machine owning the filesystems was only 32.
-    + ability to build a database _and_ immediately run one of the
-      ongoing interactive report modes (httpd, curses) would seem
-      handy.
+    + in the other direction, ability to build a database _and_
+      immediately run one of the ongoing interactive report modes
+      (httpd, curses) in a single invocation would seem handy.
 
  - portability
     + between Unices:
        * autoconf?
        * configure use of stat64
        * configure use of /proc/net/tcp
+       * configure use of /dev/random
+       * configure use of Linux syscall magic replacing readdir
+          + later glibcs have fdopendir, hooray! So we can use that
+           too, if it's available and O_NOATIME is too.
        * what do we do elsewhere about _GNU_SOURCE?
-    + further afield: is there in fact any non-Unix OS that supports
-      atimes and hence can be used with agedu at all?
-       * yes! http://msdn.microsoft.com/en-us/library/ms724290.aspx
+    + http://msdn.microsoft.com/en-us/library/ms724290.aspx suggest
+      modern Windowses support atime-equivalents, so a Windows port
+      is possible in principle. Would need to modify the current
+      structure a lot, to abstract away (at least) memory-mapping of
+      files, details of disk scan procedure, networking for httpd,
+      the path separator character (yuck). Unclear what the right UI
+      would be on Windows, too; command-line exactly as now might be
+      considered just a _little_ unfriendly. Or perhaps not.