/* -*- LPC -*- */
#define FILE_STATS 1
private nosave mapping read_stats;
/*
* Read permisions for all of the objects in the game.
* This IS fun.
*/
int valid_read(string path, mixed euid, string func) {
mapping perms;
string prev;
if (euid == master())
return 1;
if ((func == "file_size") || (func == "stat"))
return 1;
if (path[0] != '/')
path = "/" + path;
#ifdef FILE_STATS
// Add some statistics collection.
if(!read_stats)
read_stats = ([ ]);
if(previous_object()) {
prev = base_name(previous_object());
if(!read_stats[prev])
read_stats[prev] = ([ path : 1 ]);
else
read_stats[prev][path] += 1;
}
#endif
perms = (mapping)permission_match_path(permissions, path);
return check_permission(euid, func, path, perms, READ_MASK);
} /* valid_read() */
mapping query_read_stats() { return copy(read_stats); }