== This is my custom TODO file == * Dan and I both have personal TODOs. Perhaps we should kill off TODO and TODO.autoconf * Look into other VCSs to use. The main CVS repo will remain, but having a distributed system to allow for easy patching/pushing/pulling would be nice - monotone and mercurial look like the top contenders in my book, but I need to evaluate both a bit more. * src/pacman: - There's quite a few single function headers which contain the pacman_* functions. We should move these to a single header (pacman.h) to clean up the source a bit. * lib/libalpm: - move logging (alpm_logaction) out of the library. log files should be written by the app, not the library. Adding a PM_LOG_* constant that frontends can recognize and send to a file is probably a good idea. - clear up list allocation/deallocation - some lists need to be free'd, some do not and there is no clear indication WHEN this should happen. - remove DB entries (directories) on a read error? - Add a pm_errstr error string, which will allow us to do things like: pm_errno = PM_ERR_LIBARCHIVE; pm_errstr = archive_error_string(archive); or: pm_errno = PM_ERR_LIBDOWNLOAD; pm_errstr = downloadLastErrString; This way we don't break abstraction when returning specific errors in cases like the above. * pacman: A LOT of functions are way too long. There should be an upper limit of 100-200 lines. _alpm_add_commit is around 600 lines, and is far too complex. Quite a lot of this needs to be refactored as we go. Function list (from Dan McGee): add.c: _alpm_add_commit be_files.c: _alpm_db_read _alpm_db_write conflict.c: _alpm_checkconflicts _alpm_db_find_conflicts package.c: _alpm_pkg_load (getting a bit long) remove.c: _alpm_remove_commit server.c: _alpm_downloadfiles_forreal sync.c: _alpm_sync_sysupgrade (getting there) _alpm_sync_prepare _alpm_sync_commit * pacman: fixup doxygen documentation for public interface * libalpm: just because a function is in alpm.h doesn't mean it needs to be in alpm.c - we should move functions around where they should be. In fact, alpm.c might not be needed at all, if things were organized properly. * feature for 3.1: package file hooks * I've been planning on this one for some time. Here's a simple rundown: in /etc/pacman.d/hooks: Hook /usr/include/* : /usr/bin/ctags -R /usr/include/*.h -f /usr/include/systags This will allow us to make "global hooks" to simplify a lot of repetitive install files (scrollkeeper, depmod, etc). This also allows us to move ldconfig out of pacman entirely. possible: /etc/pacman.hooks/* files for hooks, so packages can add them too * feature for 3.1: multiple search/match types option: MatchType regex (current way) MatchType fnmatch (use fnmatch to match things like 'pacman -S gnome*') MatchType plain (no matching. expect plain text). * feature for 3.1: revamp the autotools system. I'd LOVE to use a manual system like wmii and friends do. It'd be real nice if we could just do away with autotools altogether. **** BUGS **** * Removal of conflicts on -A and -U (INCOMPLETE) * gensync: get all info from packages instead of PKGBUILDs for now, we only need to check the PKGBUILD in case of a 'force' option * pacman: add pactest cases/functionality for all -Q operations and make sure the output is sane