@@ -26,13 +26,10 @@ #import "OFSeekableStream.h" OF_ASSUME_NONNULL_BEGIN -@class OFArray OF_GENERIC(ObjectType); -@class OFDate; - #if defined(_WIN32) typedef struct __stat64 of_stat_t; #elif defined(OF_HAVE_OFF64_T) typedef struct stat64 of_stat_t; #else @@ -40,11 +37,11 @@ #endif /*! * @class OFFile OFFile.h ObjFW/OFFile.h * - * @brief A class which provides functions to read, write and manipulate files. + * @brief A class which provides functions to read and write files. */ @interface OFFile: OFSeekableStream { int _fd; bool _atEndOfStream; @@ -82,215 +79,10 @@ * It is not closed when the OFFile object is deallocated! * @return A new autoreleased OFFile */ + (instancetype)fileWithFileDescriptor: (int)fd; -/*! - * @brief Returns the path fo the current working directory. - * - * @return The path of the current working directory - */ -+ (OFString*)currentDirectoryPath; - -/*! - * @brief Checks whether a file exists at the specified path. - * - * @param path The path to check - * @return A boolean whether there is a file at the specified path - */ -+ (bool)fileExistsAtPath: (OFString*)path; - -/*! - * @brief Checks whether a directory exists at the specified path. - * - * @param path The path to check - * @return A boolean whether there is a directory at the specified path - */ -+ (bool)directoryExistsAtPath: (OFString*)path; - -#ifdef OF_HAVE_SYMLINK -/*! - * @brief Checks whether a symbolic link exists at the specified path. - * - * @param path The path to check - * @return A boolean whether there is a symbolic link at the specified path - */ -+ (bool)symbolicLinkExistsAtPath: (OFString*)path; -#endif - -/*! - * @brief Creates a directory at the specified path. - * - * @param path The path of the directory - */ -+ (void)createDirectoryAtPath: (OFString*)path; - -/*! - * @brief Creates a directory at the specified path. - * - * @param path The path of the directory - * @param createParents Whether to create the parents of the directory - */ -+ (void)createDirectoryAtPath: (OFString*)path - createParents: (bool)createParents; - -/*! - * @brief Returns an array with the items in the specified directory. - * - * @note `.` and `..` are not part of the returned array. - * - * @param path The path to the directory whose items should be returned - * @return An array of OFStrings with the items in the specified directory - */ -+ (OFArray OF_GENERIC(OFString*)*)contentsOfDirectoryAtPath: (OFString*)path; - -/*! - * @brief Changes the current working directory. - * - * @param path The new directory to change to - */ -+ (void)changeCurrentDirectoryPath: (OFString*)path; - -/*! - * @brief Returns the size of the specified file. - * - * @return The size of the specified file - */ -+ (of_offset_t)sizeOfFileAtPath: (OFString*)path; - -/*! - * @brief Returns the last access time of the specified file. - * - * @return The last access time of the specified file - */ -+ (OFDate*)accessTimeOfItemAtPath: (OFString*)path; - -/*! - * @brief Returns the last modification time of the specified file. - * - * @return The last modification time of the specified file - */ -+ (OFDate*)modificationTimeOfItemAtPath: (OFString*)path; - -/*! - * @brief Returns the last status change time of the specified file. - * - * @return The last status change time of the specified file - */ -+ (OFDate*)statusChangeTimeOfItemAtPath: (OFString*)path; - -#ifdef OF_HAVE_CHMOD -/*! - * @brief Changes the permissions of an item. - * - * This method only changes the read-only flag on Windows. - * - * @param path The path to the item whose permissions should be changed - * @param permissions The new permissions for the item - */ -+ (void)changePermissionsOfItemAtPath: (OFString*)path - permissions: (mode_t)permissions; -#endif - -#ifdef OF_HAVE_CHOWN -/*! - * @brief Changes the owner of an item. - * - * This method is not available on some systems, most notably Windows. - * - * @param path The path to the item whose owner should be changed - * @param owner The new owner for the item - * @param group The new group for the item - */ -+ (void)changeOwnerOfItemAtPath: (OFString*)path - owner: (OFString*)owner - group: (OFString*)group; -#endif - -/*! - * @brief Copies a file, directory or symlink (if supported by the OS). - * - * The destination path must be a full path, which means it must include the - * name of the item. - * - * If an item already exists, the copy operation fails. This is also the case - * if a directory is copied and an item already exists in the destination - * directory. - * - * @param source The file, directory or symlink to copy - * @param destination The destination path - */ -+ (void)copyItemAtPath: (OFString*)source - toPath: (OFString*)destination; - -/*! - * @brief Moves an item. - * - * The destination path must be a full path, which means it must include the - * name of the item. - * - * If the destination is on a different logical device, the source will be - * copied to the destination using @ref copyItemAtPath:toPath: and the source - * removed using @ref removeItemAtPath:. - * - * @param source The item to rename - * @param destination The new name for the item - */ -+ (void)moveItemAtPath: (OFString*)source - toPath: (OFString*)destination; - -/*! - * @brief Removes the item at the specified path. - * - * If the item at the specified path is a directory, it is removed recursively. - * - * @param path The path to the item which should be removed - */ -+ (void)removeItemAtPath: (OFString*)path; - -#ifdef OF_HAVE_LINK -/*! - * @brief Creates a hard link for the specified item. - * - * The destination path must be a full path, which means it must include the - * name of the item. - * - * This method is not available on some systems, most notably Windows. - * - * @param source The path of the item for which a link should be created - * @param destination The path of the item which should link to the source - */ -+ (void)linkItemAtPath: (OFString*)source - toPath: (OFString*)destination; -#endif - -#ifdef OF_HAVE_SYMLINK -/*! - * @brief Creates a symbolic link for an item. - * - * The destination path must be a full path, which means it must include the - * name of the item. - * - * This method is not available on some systems, most notably Windows. - * - * @param destination The path of the item which should symbolically link to the - * source - * @param source The path of the item for which a symbolic link should be - * created - */ -+ (void)createSymbolicLinkAtPath: (OFString*)destination - withDestinationPath: (OFString*)source; - -/*! - * @brief Returns the destination of the symbolic link at the specified path. - * - * @param path The path to the symbolic link - * @return The destination of the symbolic link at the specified path - */ -+ (OFString*)destinationOfSymbolicLinkAtPath: (OFString*)path; -#endif - /*! * @brief Initializes an already allocated OFFile. * * @param path The path to the file to open as a string * @param mode The mode in which the file should be opened.@n