Replace systemlinux.org URL and email address. Although the web page is still online at the old location, the new location at tuebingen.mpg.de is now the "official" one. This commit changes the URL in the INSTALL file and all email addresses to the new domain.
Fix a design bug concerning struct user_info. It was a bad idea to include the accounting data (#files, #dirs, information about the user only. So move the accounting data to user_summary_info. This allows to get rid of the ugly uid_hash_table_sort_idx construct and of sort_hash_table(). These were only needed because of the broken design. We now never sort the hash table but allocate an array of user_summary_info structures on each query and sort that array instead. This patch not only simplifies code but also fixes a real bug noted by Sebastian Stark: If the user_summary was requested more than once in interactive mode, the old code computed incorrect values because the above mentioned accounting fields were only initialized once. The new code gets this right automatically because a fresh array is created on each query.
Add yet more source code documentation.
Add copyright header and COPYING file.
Fix sorting of the uid hash table. We must not blindy sort the whole table because in interactive mode this table may be modified by later commands and lookup_uid() gets confused if the entries have been permuted. So introduce uid_hash_table_sort_idx, an array of indices that describes the current sorting of the hash table. The order of the entries in the table itsself never gets changed any more with this patch. Also, simplify the uid comparators by introducing a wrapper that does the casts which were previously contained in each comparator.
Do not close tables on each query. This speeds up interactive mode where many queries may be executed in a row. User tables are opened on demand (if the uid is admissible) and only closed on exit. Also the dir table is opened only once per session rather than on each query.
User handling improvments. - move global variable num_uids to user.c. - logging improvements. - replace search_uid() by create_user_table(). search_uid() had a horrible interface. - in user.c, use FOR_EACH_USER() to loop over all users rather than for_each_admissible_user().
Simplify user table closing. No need for an extra function for freeing the hash table.
Add new select option to specify users by name. This patch renames the short option -u for --uid to -U and introduces the new --user option (short: -u) to specify admissible users by name. The new option may be given mutltiple times to allow more than one user.
Move user and user ID related functions to separate files.