@@ -13,207 +13,21 @@ * Public License, either version 2 or 3, which can be found in the file * LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this * file. */ +#import "OFFileManager.h" #import "OFObject.h" -#import "OFDictionary.h" #import "OFString.h" OF_ASSUME_NONNULL_BEGIN -/*! @file */ - @class OFArray OF_GENERIC(ObjectType); @class OFDate; @class OFStream; @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 OFURLHandler OFURLHandler.h ObjFW/OFURLHandler.h * * @brief A handler for a URL scheme. */ @@ -413,86 +227,6 @@ */ - (bool)moveItemAtURL: (OFURL *)source toURL: (OFURL *)destination; @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