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