@@ -14,17 +14,14 @@ * LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this * file. */ #import "OFObject.h" -#import "OFDictionary.h" -#import "OFSeekableStream.h" +#import "OFURLHandler.h" OF_ASSUME_NONNULL_BEGIN -/*! @file */ - #if defined(OF_HAVE_CHMOD) && !defined(OF_AMIGAOS) # define OF_FILE_MANAGER_SUPPORTS_PERMISSIONS #endif #if defined(OF_HAVE_CHOWN) && !defined(OF_AMIGAOS) # define OF_FILE_MANAGER_SUPPORTS_OWNER @@ -38,194 +35,10 @@ @class OFArray OF_GENERIC(ObjectType); @class OFDate; @class OFURL; -/*! - * @brief A key for a file attribute in the file attributes dictionary. - * - * Possible keys for file URLs are: - * - * * @ref of_file_attribute_key_size - * * @ref of_file_attribute_key_type - * * @ref of_file_attribute_key_posix_permissions - * * @ref of_file_attribute_key_posix_uid - * * @ref of_file_attribute_key_posix_gid - * * @ref of_file_attribute_key_owner - * * @ref of_file_attribute_key_group - * * @ref of_file_attribute_key_last_access_date - * * @ref of_file_attribute_key_modification_date - * * @ref of_file_attribute_key_status_change_date - * * @ref of_file_attribute_key_symbolic_link_destination - * - * Other URL schemes might not have all keys and might have keys not listed. - */ -typedef OFConstantString *of_file_attribute_key_t; - -/*! - * @brief The type of a file. - * - * Possibles values for file URLs are: - * - * * @ref of_file_type_regular - * * @ref of_file_type_directory - * * @ref of_file_type_symbolic_link - * * @ref of_file_type_fifo - * * @ref of_file_type_character_special - * * @ref of_file_type_block_special - * * @ref of_file_type_socket - * - * Other URL schemes might not have all types and might have types not listed. - */ -typedef OFConstantString *of_file_type_t; - -/*! - * @brief A dictionary mapping keys of type @ref of_file_attribute_key_t - * to their attribute values. - */ -typedef OFDictionary OF_GENERIC(of_file_attribute_key_t, id) - *of_file_attributes_t; - -/*! - * @brief A mutable dictionary mapping keys of type - * @ref of_file_attribute_key_t to their attribute values. - */ -typedef OFMutableDictionary OF_GENERIC(of_file_attribute_key_t, id) - *of_mutable_file_attributes_t; - -#ifdef __cplusplus -extern "C" { -#endif -/*! - * @brief The size of the file as an @ref OFNumber. - * - * For convenience, a category on @ref OFDictionary is provided to access this - * via @ref OFDictionary#fileSize. - */ -extern const of_file_attribute_key_t of_file_attribute_key_size; - -/*! - * @brief The type of the file. - * - * The corresponding value is of type @ref of_file_type_t. - * - * For convenience, a category on @ref OFDictionary is provided to access this - * via @ref OFDictionary#fileType. - */ -extern const of_file_attribute_key_t of_file_attribute_key_type; - -/*! - * @brief The POSIX permissions of the file as an @ref OFNumber. - * - * For convenience, a category on @ref OFDictionary is provided to access this - * via @ref OFDictionary#filePOSIXPermissions. - */ -extern const of_file_attribute_key_t of_file_attribute_key_posix_permissions; - -/*! - * @brief The POSIX UID of the file as an @ref OFNumber. - * - * For convenience, a category on @ref OFDictionary is provided to access this - * via @ref OFDictionary#filePOSIXUID. - */ -extern const of_file_attribute_key_t of_file_attribute_key_posix_uid; - -/*! - * @brief The POSIX GID of the file as an @ref OFNumber. - * - * For convenience, a category on @ref OFDictionary is provided to access this - * via @ref OFDictionary#filePOSIXGID. - */ -extern const of_file_attribute_key_t of_file_attribute_key_posix_gid; - -/*! - * @brief The owner of the file as an @ref OFString. - * - * For convenience, a category on @ref OFDictionary is provided to access this - * via @ref OFDictionary#fileOwner. - */ -extern const of_file_attribute_key_t of_file_attribute_key_owner; - -/*! - * @brief The group of the file as an @ref OFString. - * - * For convenience, a category on @ref OFDictionary is provided to access this - * via @ref OFDictionary#fileGroup. - */ -extern const of_file_attribute_key_t of_file_attribute_key_group; - -/*! - * @brief The last access date of the file as an @ref OFDate. - * - * For convenience, a category on @ref OFDictionary is provided to access this - * via @ref OFDictionary#fileLastAccessDate. - */ -extern const of_file_attribute_key_t of_file_attribute_key_last_access_date; - -/*! - * @brief The last modification date of the file as an @ref OFDate. - * - * For convenience, a category on @ref OFDictionary is provided to access this - * via @ref OFDictionary#fileModificationDate. - */ -extern const of_file_attribute_key_t of_file_attribute_key_modification_date; - -/*! - * @brief The last status change date of the file as an @ref OFDate. - * - * For convenience, a category on @ref OFDictionary is provided to access this - * via @ref OFDictionary#fileStatusChangeDate. - */ -extern const of_file_attribute_key_t of_file_attribute_key_status_change_date; - -/*! - * @brief The destination of a symbolic link as an @ref OFString. - * - * For convenience, a category on @ref OFDictionary is provided to access this - * via @ref OFDictionary#fileSymbolicLinkDestination. - */ -extern const of_file_attribute_key_t - of_file_attribute_key_symbolic_link_destination; - -/*! - * @brief A regular file. - */ -extern const of_file_type_t of_file_type_regular; - -/*! - * @brief A directory. - */ -extern const of_file_type_t of_file_type_directory; - -/*! - * @brief A symbolic link. - */ -extern const of_file_type_t of_file_type_symbolic_link; - -/*! - * @brief A FIFO. - */ -extern const of_file_type_t of_file_type_fifo; - -/*! - * @brief A character special file. - */ -extern const of_file_type_t of_file_type_character_special; - -/*! - * @brief A block special file. - */ -extern const of_file_type_t of_file_type_block_special; - -/*! - * @brief A socket. - */ -extern const of_file_type_t of_file_type_socket; -#ifdef __cplusplus -} -#endif - /*! * @class OFFileManager OFFileManager.h ObjFW/OFFileManager.h * * @brief A class which provides management for files, e.g. reading contents of * directories, deleting files, renaming files, etc. @@ -535,86 +348,6 @@ */ - (void)createSymbolicLinkAtURL: (OFURL *)URL withDestinationPath: (OFString *)target; @end -@interface OFDictionary (FileAttributes) -/*! - * The @ref of_file_attribute_key_size key from the dictionary. - * - * Raises an @ref OFUndefinedKeyException if the key is missing. - */ -@property (readonly, nonatomic) uintmax_t fileSize; - -/*! - * The @ref of_file_attribute_key_type key from the dictionary. - * - * Raises an @ref OFUndefinedKeyException if the key is missing. - */ -@property (readonly, nonatomic) of_file_type_t fileType; - -/*! - * The @ref of_file_attribute_key_posix_permissions key from the dictionary. - * - * Raises an @ref OFUndefinedKeyException if the key is missing. - */ -@property (readonly, nonatomic) uint16_t filePOSIXPermissions; - -/*! - * The @ref of_file_attribute_key_posix_uid key from the dictionary. - * - * Raises an @ref OFUndefinedKeyException if the key is missing. - */ -@property (readonly, nonatomic) uint32_t filePOSIXUID; - -/*! - * The @ref of_file_attribute_key_posix_gid key from the dictionary. - * - * Raises an @ref OFUndefinedKeyException if the key is missing. - */ -@property (readonly, nonatomic) uint32_t filePOSIXGID; - -/*! - * The @ref of_file_attribute_key_owner key from the dictionary. - * - * Raises an @ref OFUndefinedKeyException if the key is missing. - */ -@property (readonly, nonatomic) OFString *fileOwner; - -/*! - * The @ref of_file_attribute_key_group key from the dictionary. - * - * Raises an @ref OFUndefinedKeyException if the key is missing. - */ -@property (readonly, nonatomic) OFString *fileGroup; - -/*! - * The @ref of_file_attribute_key_last_access_date key from the dictionary. - * - * Raises an @ref OFUndefinedKeyException if the key is missing. - */ -@property (readonly, nonatomic) OFDate *fileLastAccessDate; - -/*! - * The @ref of_file_attribute_key_modification_date key from the dictionary. - * - * Raises an @ref OFUndefinedKeyException if the key is missing. - */ -@property (readonly, nonatomic) OFDate *fileModificationDate; - -/*! - * The @ref of_file_attribute_key_status_change_date key from the dictionary. - * - * Raises an @ref OFUndefinedKeyException if the key is missing. - */ -@property (readonly, nonatomic) OFDate *fileStatusChangeDate; - -/*! - * The @ref of_file_attribute_key_symbolic_link_destination key from the - * dictionary. - * - * Raises an @ref OFUndefinedKeyException if the key is missing. - */ -@property (readonly, nonatomic) OFString *fileSymbolicLinkDestination; -@end - OF_ASSUME_NONNULL_END