On Sat, 12 Dec 2009, Nagy Gabor wrote:
(the only remaining sanity check is splitname).
Correct, and it has just caught an error for me: $ ./src/pacman/.libs/lt-pacman -Sup :: Starting full system upgrade... error: invalid name for database entry '.lastupdate' error: invalid name for database entry '.lastupdate' error: invalid name for database entry '.lastupdate' local database is up to date It seems there is a non-directory file inside the sync db, I missed this one among the heaps of strace output. Is this intentional? Is this actually used? If it is, and since _alpm_db_populate() knows about the db structure, it should avoid that specific case. The following patch takes care of that special case and also reserves all hidden files for special database purposes, not db entries: --- a/lib/libalpm/be_files.c +++ b/lib/libalpm/be_files.c @@ -238,7 +238,8 @@ int _alpm_db_populate(pmdb_t *db) const char *name = ent->d_name; pmpkg_t *pkg; - if(strcmp(name, ".") == 0 || strcmp(name, "..") == 0) { + /* skip hidden files and '.' and '..' subdirectories */ + if (name[0] == '.') { continue; } pkg = _alpm_pkg_new(); Dimitris