f08917b8dd2f2badd126641de2b2a02eb702b320
[sgt/agedu] / TODO
1 TODO list for agedu
2 ===================
3
4 Before it's non-embarrassingly releasable:
5
6 - sort out the command line syntax
7 * I think there should be a unified --mode / -M for every
8 running mode, possibly without the one-letter option for the
9 diagnostic sorts of things
10 * there should be some configurable options:
11 + range limits on the age display
12 + server address in httpd mode
13 + HTTP authentication: specify username and/or password, the
14 latter by at least some means which doesn't involve it
15 showing up in "ps"
16
17 - do some configurability for the disk scan
18 * wildcard-based includes and excludes
19 + wildcards can act on the last pathname component or the
20 whole lot
21 + include and exclude can be interleaved; implicit "include
22 *" before any
23 * reinstate filesystem crossing, though not doing so should
24 remain the default
25
26 - polish up disk-scan progress reporting
27 * by default it should be conditional on isatty(2)
28 * manual override to enable or disable
29 * we should find rather than guessing the terminal width
30
31 - work out what to do about atimes on directories
32 * one option is to read them during the scan and reinstate them
33 after each recursion pop. Race-condition prone.
34 * marking them in a distinctive colour in the reports is the
35 other option.
36
37 - make a final decision on the name!
38
39 Future directions:
40
41 - run-time configuration in the HTTP server
42 * I think this probably works by having a configuration form, or
43 a link pointing to one, somewhere on the report page. If you
44 want to reconfigure anything, you fill in and submit the form;
45 the web server receives HTTP GET with parameters and a
46 referer, adjusts its internal configuration, and returns an
47 HTTP redirect back to the referring page - which it then
48 re-renders in accordance with the change.
49 * All the same options should have their starting states
50 configurable on the command line too.
51
52 - polish the plain-text output:
53 + do the same formatting as in HTML, by showing files as a
54 single unit and also sorting by size? (Probably the other way
55 up, due to scrolling.)
56 + configurable recursive output depth
57
58 - curses-ish equivalent of the web output
59 + try using xterm 256-colour mode. Can (n)curses handle that? If
60 not, try doing it manually.
61
62 - cross-module:
63 + figure out what to do about scans starting in the root
64 directory!
65 * Currently we end up with a double leading slash on the
66 pathnames, which is ugly, and we also get a zero-length
67 href in between those slashes which means the web interface
68 doesn't let you click back up to the top level at all.
69 * One big problem here is that a lot of the code assumes that
70 you can find the extent of a pathname by searching for
71 "foo" and "foo^A", trusting that anything inside the
72 directory will begin "foo/". So I'd need to consistently
73 fix this everywhere so that a trailing slash is disregarded
74 while doing it, but not actually removed.
75 * The text output gets it all wrong.
76 * The HTML output is fiddly even at the design stage: where
77 would I _ideally_ put the link to click on to get back to
78 /? It's unclear!
79
80 - more flexible running modes
81 + decouple the disk scan from the index building code, so that
82 the former can optionally output in the same format as --dump
83 and the latter can optionally work from input on stdin (having
84 also fixed the --dump format in the process so it's perfectly
85 general). Then we could scan on one machine and transfer the
86 results over the net to another machine where they'd be
87 indexed; in particular, this way the indexing machine could be
88 64-bit even if the machine owning the filesystems was only 32.
89 + ability to build a database _and_ immediately run one of the
90 ongoing interactive report modes (httpd, curses) would seem
91 handy.
92
93 - portability
94 + between Unices:
95 * autoconf?
96 * configure use of stat64
97 * configure use of /proc/net/tcp
98 * what do we do elsewhere about _GNU_SOURCE?
99 + further afield: is there in fact any non-Unix OS that supports
100 atimes and hence can be used with agedu at all?
101 * yes! http://msdn.microsoft.com/en-us/library/ms724290.aspx