=1) { $object['SIZE']=filesize($full_file); $object['ATIME']=fileatime($full_file); $object['CTIME']=filectime($full_file); $object['MTIME']=filemtime($full_file); $object['TYPE']=filetype($full_file); if(!empty($ext)) { $object['WO_EXT']=eregi_replace("\.$ext$",'',$file); $object['MIME']=h_mime_get_mime_content_type($ext); } if($detailed>=2) { $object['INODE']=fileinode($full_file); $object['UID']=fileowner($full_file); $object['GID']=filegroup($full_file); $mode=fileperms($full_file); if($mode) { $object['MODE']=$mode; if($detailed>=3) $object['PERMS']=h_fs_get_string_from_mode($mode); } } } if(function_exists($extra_attrs)) { $extra_object=$extra_attrs($full_file, $object, $detailed); if(is_array($extra_object)) return $extra_object; } return $object; } /* Taken from PHP Annotated Manual pwalker at pwccanada dot com 22-Feb-2000 02:00 Here is a simple function to display UNIX like permissions: */ # 2003-02-01 Sandino Araico Sánchez # The function was modified to return a value. function h_fs_get_string_from_mode($mode) { /* Determine Type */ if( $mode & 0x1000 ) $type='p'; /* FIFO pipe */ else if( $mode & 0x2000 ) $type='c'; /* Character special */ else if( $mode & 0x4000 ) $type='d'; /* Directory */ else if( $mode & 0x6000 ) $type='b'; /* Block special */ else if( $mode & 0x8000 ) $type='-'; /* Regular */ else if( $mode & 0xA000 ) $type='l'; /* Symbolic Link */ else if( $mode & 0xC000 ) $type='s'; /* Socket */ else $type='u'; /* UNKNOWN */ /* Determine permissions */ $owner["read"] = ($mode & 00400) ? 'r' : '-'; $owner["write"] = ($mode & 00200) ? 'w' : '-'; $owner["execute"] = ($mode & 00100) ? 'x' : '-'; $group["read"] = ($mode & 00040) ? 'r' : '-'; $group["write"] = ($mode & 00020) ? 'w' : '-'; $group["execute"] = ($mode & 00010) ? 'x' : '-'; $world["read"] = ($mode & 00004) ? 'r' : '-'; $world["write"] = ($mode & 00002) ? 'w' : '-'; $world["execute"] = ($mode & 00001) ? 'x' : '-'; /* Adjust for SUID, SGID and sticky bit */ if( $mode & 0x800 ) $owner["execute"] = ($owner[execute]=='x') ? 's' : 'S'; if( $mode & 0x400 ) $group["execute"] = ($group[execute]=='x') ? 's' : 'S'; if( $mode & 0x200 ) $world["execute"] = ($world[execute]=='x') ? 't' : 'T'; return $type.$owner[read].$owner[write].$owner[execute].$group[read].$group[write].$group[execute].$world[read].$world[write].$world[execute]; } function h_fs_check_dir($filename, $hops=0) { if($hops>__FILESYSTEM_MAX_DIR_HOPS) return; if(ereg("\/", $filename)) $dirname=dirname($filename); else $dirname=$filename; s_log("filename: $filename\tdirname: $dirname\thops: $hops",0,0,3); if(!file_exists($dirname)) { if(ereg("\/", $dirname)) h_fs_check_dir($dirname, $hops+1); mkdir($dirname, __FILESYSTEM_DIR_MODE); } return file_exists($dirname); } #--------------------------------------------------------------------- } //__FILESYSTEM_FUNCTIONS ?>