Hi! First, I want to underline again, that the problem is serious, because -U = -Rd + -A.
But well, that really hurts my head badly...
OK, I will try to explain the "programmer friendly" version again;-) The goal: content of foo package must be exist on the HDD iff foo is installed (the filepath can be manipulated using symlinks, that is not(?) important: if /path/file exists in filelist, /path/file must exist on HDD iff foo is installed; /path can be symlink here.). My solution(?): We can assume, that the goal above holds before pacman is invoked, we just need to keep this situation. In this simpilified version, there is nothing interesting with regular file/dir install, we just "follow" symlinks and extract /path/file as /path/file. We just need to be careful during dir_symlink(->dir_pointed) install, when dir_symlink exists and it is a regular dir (else we create it or stop with file conflict): then we simply move the content of dir_symlink to dir_pointed, and replace dir_symlink with a symlink (->dir_pointed) [WARNING: more sophisticated file conflict checking needed here before the commit!]. You can see, that we didn't break our goal: all files in /dir_symlink can be accessed in the same way, the same for /dir_pointed. The removal is similar: Nothing extra with regular file/dir removal. If you remove a dir_symlink, you must scan the db for files which must be moved to the newly created regular dir named dir_symlink to keep our goal. Bye, ngaba ---------------------------------------------------------------- This message was sent using IMP, the Internet Messaging Program.