X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Finclude%2Fgnunet_disk_lib.h;h=91cc1587a58387a39fa4eef11c892b7190a26238;hb=211fd52268a5ae7856273dd8d8b3b3ed427beadb;hp=7b6898293ce84874fa3c74c4ab978172659fb270;hpb=d720cc786723169cfdbb246ad6f1f584581f589d;p=oweals%2Fgnunet.git diff --git a/src/include/gnunet_disk_lib.h b/src/include/gnunet_disk_lib.h index 7b6898293..91cc1587a 100644 --- a/src/include/gnunet_disk_lib.h +++ b/src/include/gnunet_disk_lib.h @@ -25,16 +25,70 @@ #ifndef GNUNET_DISK_LIB_H #define GNUNET_DISK_LIB_H -/** - * Opaque handle used to access files. - */ -struct GNUNET_DISK_FileHandle; +#if WINDOWS +#define OFF_T uint64_t +#else +#define OFF_T off_t +#endif /** * Handle used to manage a pipe. */ struct GNUNET_DISK_PipeHandle; +/** + * Type of a handle. + */ +enum GNUNET_FILE_Type +{ + /** + * Handle represents a file. + */ + GNUNET_DISK_HANLDE_TYPE_FILE, + + /** + * Handle represents a pipe. + */ + GNUNET_DISK_HANLDE_TYPE_PIPE +}; + +/** + * Handle used to access files (and pipes). + */ +struct GNUNET_DISK_FileHandle +{ + +#if WINDOWS + /** + * File handle under W32. + */ + HANDLE h; + + /** + * Type + */ + enum GNUNET_FILE_Type type; + + /** + * Structure for overlapped reading (for pipes) + */ + OVERLAPPED *oOverlapRead; + + /** + * Structure for overlapped writing (for pipes) + */ + OVERLAPPED *oOverlapWrite; +#else + + /** + * File handle on other OSes. + */ + int fd; + +#endif /* + */ +}; + /* we need size_t, and since it can be both unsigned int or unsigned long long, this IS platform dependent; @@ -57,159 +111,160 @@ extern "C" * Specifies how a file should be opened. */ enum GNUNET_DISK_OpenFlags - { +{ /** - * Open the file for reading + * Open the file for reading */ - GNUNET_DISK_OPEN_READ = 1, - + GNUNET_DISK_OPEN_READ = 1, + /** - * Open the file for writing + * Open the file for writing */ - GNUNET_DISK_OPEN_WRITE = 2, - + GNUNET_DISK_OPEN_WRITE = 2, + /** - * Open the file for both reading and writing + * Open the file for both reading and writing */ - GNUNET_DISK_OPEN_READWRITE = 3, - + GNUNET_DISK_OPEN_READWRITE = 3, + /** - * Fail if file already exists + * Fail if file already exists */ - GNUNET_DISK_OPEN_FAILIFEXISTS = 4, - + GNUNET_DISK_OPEN_FAILIFEXISTS = 4, + /** - * Truncate file if it exists + * Truncate file if it exists */ - GNUNET_DISK_OPEN_TRUNCATE = 8, - + GNUNET_DISK_OPEN_TRUNCATE = 8, + /** - * Create file if it doesn't exist + * Create file if it doesn't exist */ - GNUNET_DISK_OPEN_CREATE = 16, + GNUNET_DISK_OPEN_CREATE = 16, /** - * Append to the file + * Append to the file */ - GNUNET_DISK_OPEN_APPEND = 32 - }; + GNUNET_DISK_OPEN_APPEND = 32 +}; /** * Specifies what type of memory map is desired. */ enum GNUNET_DISK_MapType - { +{ /** * Read-only memory map. */ - GNUNET_DISK_MAP_TYPE_READ = 1, + GNUNET_DISK_MAP_TYPE_READ = 1, /** * Write-able memory map. */ - GNUNET_DISK_MAP_TYPE_WRITE = 2, + GNUNET_DISK_MAP_TYPE_WRITE = 2, /** * Read-write memory map. */ - GNUNET_DISK_MAP_TYPE_READWRITE = 3 - }; + GNUNET_DISK_MAP_TYPE_READWRITE = 3 +}; /** * File access permissions, UNIX-style. */ enum GNUNET_DISK_AccessPermissions - { +{ /** * Nobody is allowed to do anything to the file. */ - GNUNET_DISK_PERM_NONE = 0, + GNUNET_DISK_PERM_NONE = 0, /** * Owner can read. */ - GNUNET_DISK_PERM_USER_READ = 1, + GNUNET_DISK_PERM_USER_READ = 1, /** * Owner can write. */ - GNUNET_DISK_PERM_USER_WRITE = 2, + GNUNET_DISK_PERM_USER_WRITE = 2, /** * Owner can execute. */ - GNUNET_DISK_PERM_USER_EXEC = 4, + GNUNET_DISK_PERM_USER_EXEC = 4, /** * Group can read. */ - GNUNET_DISK_PERM_GROUP_READ = 8, + GNUNET_DISK_PERM_GROUP_READ = 8, /** * Group can write. */ - GNUNET_DISK_PERM_GROUP_WRITE = 16, + GNUNET_DISK_PERM_GROUP_WRITE = 16, /** * Group can execute. */ - GNUNET_DISK_PERM_GROUP_EXEC = 32, + GNUNET_DISK_PERM_GROUP_EXEC = 32, /** * Everybody can read. */ - GNUNET_DISK_PERM_OTHER_READ = 64, + GNUNET_DISK_PERM_OTHER_READ = 64, /** * Everybody can write. */ - GNUNET_DISK_PERM_OTHER_WRITE = 128, + GNUNET_DISK_PERM_OTHER_WRITE = 128, /** * Everybody can execute. */ - GNUNET_DISK_PERM_OTHER_EXEC = 256 - }; + GNUNET_DISK_PERM_OTHER_EXEC = 256 +}; /** - * Constants for specifying how to seek. + * Constants for specifying how to seek. Do not change values or order, + * some of the code depends on the specific numeric values! */ -enum GNUNET_DISK_Seek - { +enum GNUNET_DISK_Seek +{ /** * Seek an absolute position (from the start of the file). */ - GNUNET_DISK_SEEK_SET, + GNUNET_DISK_SEEK_SET = 0, /** * Seek a relative position (from the current offset). */ - GNUNET_DISK_SEEK_CUR, - + GNUNET_DISK_SEEK_CUR = 1, + /** * Seek an absolute position from the end of the file. */ - GNUNET_DISK_SEEK_END - }; + GNUNET_DISK_SEEK_END = 2 +}; /** * Enumeration identifying the two ends of a pipe. */ enum GNUNET_DISK_PipeEnd - { +{ /** * The reading-end of a pipe. */ - GNUNET_DISK_PIPE_END_READ = 0, + GNUNET_DISK_PIPE_END_READ = 0, /** * The writing-end of a pipe. */ - GNUNET_DISK_PIPE_END_WRITE = 1 - }; + GNUNET_DISK_PIPE_END_WRITE = 1 +}; /** @@ -219,7 +274,8 @@ enum GNUNET_DISK_PipeEnd * @param part a file on the partition to check * @return -1 on errors, otherwise the number of free blocks */ -long GNUNET_DISK_get_blocks_available (const char *part); +long +GNUNET_DISK_get_blocks_available (const char *part); /** @@ -228,7 +284,8 @@ long GNUNET_DISK_get_blocks_available (const char *part); * @param h handle to check * @return GNUNET_YES if invalid, GNUNET_NO if valid */ -int GNUNET_DISK_handle_invalid (const struct GNUNET_DISK_FileHandle *h); +int +GNUNET_DISK_handle_invalid (const struct GNUNET_DISK_FileHandle *h); /** @@ -239,7 +296,8 @@ int GNUNET_DISK_handle_invalid (const struct GNUNET_DISK_FileHandle *h); * @return GNUNET_YES if yes, GNUNET_NO if not a file, GNUNET_SYSERR if something * else (will print an error message in that case, too). */ -int GNUNET_DISK_file_test (const char *fil); +int +GNUNET_DISK_file_test (const char *fil); /** @@ -249,15 +307,14 @@ int GNUNET_DISK_file_test (const char *fil); * @param whence specification to which position the offset parameter relates to * @return the new position on success, GNUNET_SYSERR otherwise */ -off_t -GNUNET_DISK_file_seek (const struct GNUNET_DISK_FileHandle *h, - off_t offset, - enum GNUNET_DISK_Seek whence); +OFF_T +GNUNET_DISK_file_seek (const struct GNUNET_DISK_FileHandle *h, OFF_T offset, + enum GNUNET_DISK_Seek whence); /** - * Get the size of the file (or directory) - * of the given file (in bytes). + * Get the size of the file (or directory) of the given file (in + * bytes). * * @param filename name of the file or directory * @param size set to the size of the file (or, @@ -265,11 +322,13 @@ GNUNET_DISK_file_seek (const struct GNUNET_DISK_FileHandle *h, * of all sizes of files in the directory) * @param includeSymLinks should symbolic links be * included? - * @return GNUNET_OK on success, GNUNET_SYSERR on error + * @param singleFileMode GNUNET_YES to only get size of one file + * and return GNUNET_SYSERR for directories. + * @return GNUNET_SYSERR on error, GNUNET_OK on success */ -int GNUNET_DISK_file_size (const char *filename, - uint64_t *size, - int includeSymLinks); +int +GNUNET_DISK_file_size (const char *filename, uint64_t * size, + int includeSymLinks, int singleFileMode); /** @@ -287,14 +346,17 @@ int GNUNET_DISK_file_size (const char *filename, * @param ino set to the inode ID * @return GNUNET_OK on success */ -int GNUNET_DISK_file_get_identifiers (const char *filename, - uint32_t *dev, - uint64_t *ino); - +int +GNUNET_DISK_file_get_identifiers (const char *filename, uint64_t * dev, + uint64_t * ino); + /** - * Create an (empty) temporary file on disk. - * + * Create an (empty) temporary file on disk. If the given name is not + * an absolute path, the current 'TMPDIR' will be prepended. In any case, + * 6 random characters will be appended to the name to create a unique + * filename. + * * @param t component to use for the name; * does NOT contain "XXXXXX" or "/tmp/". * @return NULL on error, otherwise name of fresh @@ -304,6 +366,19 @@ char * GNUNET_DISK_mktemp (const char *t); +/** + * Create an (empty) temporary directory on disk. If the given name is not an + * absolute path, the current 'TMPDIR' will be prepended. In any case, 6 + * random characters will be appended to the name to create a unique name. + * + * @param t component to use for the name; + * does NOT contain "XXXXXX" or "/tmp/". + * @return NULL on error, otherwise name of freshly created directory + */ +char * +GNUNET_DISK_mkdtemp (const char *t); + + /** * Open a file. Note that the access permissions will only be * used if a new file is created and if the underlying operating @@ -312,20 +387,52 @@ GNUNET_DISK_mktemp (const char *t); * @param fn file name to be opened * @param flags opening flags, a combination of GNUNET_DISK_OPEN_xxx bit flags * @param perm permissions for the newly created file, use - * GNUNET_DISK_PERM_USER_NONE if a file could not be created by this + * GNUNET_DISK_PERM_NONE if a file could not be created by this * call (because of flags) * @return IO handle on success, NULL on error */ -struct GNUNET_DISK_FileHandle *GNUNET_DISK_file_open (const char *fn, - enum GNUNET_DISK_OpenFlags flags, - enum GNUNET_DISK_AccessPermissions perm); +struct GNUNET_DISK_FileHandle * +GNUNET_DISK_file_open (const char *fn, enum GNUNET_DISK_OpenFlags flags, + enum GNUNET_DISK_AccessPermissions perm); + + +/** + * Get the size of an open file. + * + * @param fh open file handle + * @param size where to write size of the file + * @return GNUNET_OK on success, GNUNET_SYSERR on error + */ +int +GNUNET_DISK_file_handle_size (struct GNUNET_DISK_FileHandle *fh, + OFF_T *size); + /** * Creates an interprocess channel - * @param blocking creates an asynchronous pipe if set to GNUNET_NO + * + * @param blocking_read creates an asynchronous pipe for reading if set to GNUNET_NO + * @param blocking_write creates an asynchronous pipe for writing if set to GNUNET_NO + * @param inherit_read 1 to make read handle inheritable, 0 otherwise (NT only) + * @param inherit_write 1 to make write handle inheritable, 0 otherwise (NT only) * @return handle to the new pipe, NULL on error */ -struct GNUNET_DISK_PipeHandle *GNUNET_DISK_pipe (int blocking); +struct GNUNET_DISK_PipeHandle * +GNUNET_DISK_pipe (int blocking_read, int blocking_write, int inherit_read, int inherit_write); + + +/** + * Creates a pipe object from a couple of file descriptors. + * Useful for wrapping existing pipe FDs. + * + * @param blocking_read creates an asynchronous pipe for reading if set to GNUNET_NO + * @param blocking_write creates an asynchronous pipe for writing if set to GNUNET_NO + * @param fd an array of two fd values. One of them may be -1 for read-only or write-only pipes + * + * @return handle to the new pipe, NULL on error + */ +struct GNUNET_DISK_PipeHandle * +GNUNET_DISK_pipe_from_fd (int blocking_read, int blocking_write, int fd[2]); /** @@ -333,7 +440,9 @@ struct GNUNET_DISK_PipeHandle *GNUNET_DISK_pipe (int blocking); * @param p pipe * @return GNUNET_OK on success, GNUNET_SYSERR otherwise */ -int GNUNET_DISK_pipe_close (struct GNUNET_DISK_PipeHandle *p); +int +GNUNET_DISK_pipe_close (struct GNUNET_DISK_PipeHandle *p); + /** * Closes one half of an interprocess channel @@ -343,8 +452,8 @@ int GNUNET_DISK_pipe_close (struct GNUNET_DISK_PipeHandle *p); * @return GNUNET_OK on success, GNUNET_SYSERR otherwise */ int -GNUNET_DISK_pipe_close_end (struct GNUNET_DISK_PipeHandle *p, - enum GNUNET_DISK_PipeEnd end); +GNUNET_DISK_pipe_close_end (struct GNUNET_DISK_PipeHandle *p, + enum GNUNET_DISK_PipeEnd end); /** * Close an open file. @@ -352,7 +461,8 @@ GNUNET_DISK_pipe_close_end (struct GNUNET_DISK_PipeHandle *p, * @param h file handle * @return GNUNET_OK on success, GNUNET_SYSERR otherwise */ -int GNUNET_DISK_file_close (struct GNUNET_DISK_FileHandle *h); +int +GNUNET_DISK_file_close (struct GNUNET_DISK_FileHandle *h); /** @@ -363,10 +473,19 @@ int GNUNET_DISK_file_close (struct GNUNET_DISK_FileHandle *h); * @return handle for the respective end */ const struct GNUNET_DISK_FileHandle * -GNUNET_DISK_pipe_handle (const struct - GNUNET_DISK_PipeHandle - *p, - enum GNUNET_DISK_PipeEnd n); +GNUNET_DISK_pipe_handle (const struct GNUNET_DISK_PipeHandle *p, + enum GNUNET_DISK_PipeEnd n); + + +/** + * Get a handle from a native FD. + * + * @param fd native file descriptor + * @return file handle corresponding to the descriptor + */ +struct GNUNET_DISK_FileHandle * +GNUNET_DISK_get_handle_from_native (FILE *fd); + /** * Read the contents of a binary file into a buffer. @@ -375,8 +494,24 @@ GNUNET_DISK_pipe_handle (const struct * @param len the maximum number of bytes to read * @return the number of bytes read on success, GNUNET_SYSERR on failure */ -ssize_t GNUNET_DISK_file_read (const struct GNUNET_DISK_FileHandle *h, void *result, - size_t len); +ssize_t +GNUNET_DISK_file_read (const struct GNUNET_DISK_FileHandle *h, void *result, + size_t len); + + +/** + * Read the contents of a binary file into a buffer. + * Guarantees not to block (returns GNUNET_SYSERR and sets errno to EAGAIN + * when no data can be read). + * + * @param h handle to an open file + * @param result the buffer to write the result to + * @param len the maximum number of bytes to read + * @return the number of bytes read on success, GNUNET_SYSERR on failure + */ +ssize_t +GNUNET_DISK_file_read_non_blocking (const struct GNUNET_DISK_FileHandle * h, + void *result, size_t len); /** @@ -387,9 +522,8 @@ ssize_t GNUNET_DISK_file_read (const struct GNUNET_DISK_FileHandle *h, void *res * @param len the maximum number of bytes to read * @return number of bytes read, GNUNET_SYSERR on failure */ -ssize_t GNUNET_DISK_fn_read (const char *fn, - void *result, - size_t len); +ssize_t +GNUNET_DISK_fn_read (const char *fn, void *result, size_t len); /** @@ -400,10 +534,21 @@ ssize_t GNUNET_DISK_fn_read (const char *fn, * @param n number of bytes to write * @return number of bytes written on success, GNUNET_SYSERR on error */ -ssize_t GNUNET_DISK_file_write (const struct GNUNET_DISK_FileHandle *h, - const void *buffer, - size_t n); +ssize_t +GNUNET_DISK_file_write (const struct GNUNET_DISK_FileHandle *h, + const void *buffer, size_t n); + +/** + * Write a buffer to a file, blocking, if necessary. + * @param h handle to open file + * @param buffer the data to write + * @param n number of bytes to write + * @return number of bytes written on success, GNUNET_SYSERR on error + */ +ssize_t +GNUNET_DISK_file_write_blocking (const struct GNUNET_DISK_FileHandle * h, + const void *buffer, size_t n); /** * Write a buffer to a file. If the file is longer than @@ -412,13 +557,12 @@ ssize_t GNUNET_DISK_file_write (const struct GNUNET_DISK_FileHandle *h, * @param fn file name * @param buffer the data to write * @param n number of bytes to write - * @param mode file permissions + * @param mode file permissions * @return number of bytes written on success, GNUNET_SYSERR on error */ -ssize_t GNUNET_DISK_fn_write (const char *fn, - const void *buffer, - size_t n, - enum GNUNET_DISK_AccessPermissions mode); +ssize_t +GNUNET_DISK_fn_write (const char *fn, const void *buffer, size_t n, + enum GNUNET_DISK_AccessPermissions mode); /** @@ -428,7 +572,8 @@ ssize_t GNUNET_DISK_fn_write (const char *fn, * @param dst destination file name * @return GNUNET_OK on success, GNUNET_SYSERR on error */ -int GNUNET_DISK_file_copy (const char *src, const char *dst); +int +GNUNET_DISK_file_copy (const char *src, const char *dst); /** @@ -439,9 +584,10 @@ int GNUNET_DISK_file_copy (const char *src, const char *dst); * @param callback_cls closure for callback * @return the number of files found, -1 on error */ -int GNUNET_DISK_directory_scan (const char *dirName, - GNUNET_FileNameCallback callback, - void *callback_cls); +int +GNUNET_DISK_directory_scan (const char *dirName, + GNUNET_FileNameCallback callback, + void *callback_cls); /** @@ -455,7 +601,8 @@ struct GNUNET_DISK_DirectoryIterator; * * @param cls closure * @param di argument to pass to "GNUNET_DISK_directory_iterator_next" to - * get called on the next entry (or finish cleanly) + * get called on the next entry (or finish cleanly); + * NULL on error (will be the last call in that case) * @param filename complete filename (absolute path) * @param dirname directory name (absolute path) */ @@ -478,8 +625,9 @@ typedef void (*GNUNET_DISK_DirectoryIteratorCallback) (void *cls, * GNUNET_NO if this was the last entry (and iteration is complete), * GNUNET_SYSERR if "can" was YES */ -int GNUNET_DISK_directory_iterator_next (struct GNUNET_DISK_DirectoryIterator - *iter, int can); +int +GNUNET_DISK_directory_iterator_next (struct GNUNET_DISK_DirectoryIterator *iter, + int can); /** @@ -488,18 +636,18 @@ int GNUNET_DISK_directory_iterator_next (struct GNUNET_DISK_DirectoryIterator * If a scheduler does not need to be used, GNUNET_DISK_directory_scan * may provide a simpler API. * - * @param sched scheduler to use * @param prio priority to use * @param dirName the name of the directory * @param callback the method to call for each file * @param callback_cls closure for callback + * @return GNUNET_YES if directory is not empty and 'callback' + * will be called later, GNUNET_NO otherwise, GNUNET_SYSERR on error. */ -void GNUNET_DISK_directory_iterator_start (struct GNUNET_SCHEDULER_Handle - *sched, - enum GNUNET_SCHEDULER_Priority - prio, const char *dirName, - GNUNET_DISK_DirectoryIteratorCallback - callback, void *callback_cls); +int +GNUNET_DISK_directory_iterator_start (enum GNUNET_SCHEDULER_Priority prio, + const char *dirName, + GNUNET_DISK_DirectoryIteratorCallback + callback, void *callback_cls); /** @@ -510,7 +658,8 @@ void GNUNET_DISK_directory_iterator_start (struct GNUNET_SCHEDULER_Handle * @returns GNUNET_OK on success, GNUNET_SYSERR on failure, * GNUNET_NO if directory exists but is not writeable */ -int GNUNET_DISK_directory_create_for_file (const char *filename); +int +GNUNET_DISK_directory_create_for_file (const char *filename); /** @@ -523,17 +672,19 @@ int GNUNET_DISK_directory_create_for_file (const char *filename); * @return GNUNET_YES if yes, GNUNET_NO if does not exist, GNUNET_SYSERR * on any error and if exists but not directory */ -int GNUNET_DISK_directory_test (const char *fil); +int +GNUNET_DISK_directory_test (const char *fil); /** * Remove all files in a directory (rm -rf). Call with * caution. * - * @param fileName the file to remove + * @param filename the file to remove * @return GNUNET_OK on success, GNUNET_SYSERR on error */ -int GNUNET_DISK_directory_remove (const char *fileName); +int +GNUNET_DISK_directory_remove (const char *filename); /** @@ -542,7 +693,8 @@ int GNUNET_DISK_directory_remove (const char *fileName); * @param dir the directory to create * @returns GNUNET_SYSERR on failure, GNUNET_OK otherwise */ -int GNUNET_DISK_directory_create (const char *dir); +int +GNUNET_DISK_directory_create (const char *dir); /** @@ -555,8 +707,8 @@ int GNUNET_DISK_directory_create (const char *dir); * @return GNUNET_OK on success, GNUNET_SYSERR on error */ int -GNUNET_DISK_file_lock (struct GNUNET_DISK_FileHandle *fh, off_t lockStart, - off_t lockEnd, int excl); +GNUNET_DISK_file_lock (struct GNUNET_DISK_FileHandle *fh, OFF_T lockStart, + OFF_T lockEnd, int excl); /** @@ -567,15 +719,16 @@ GNUNET_DISK_file_lock (struct GNUNET_DISK_FileHandle *fh, off_t lockStart, * @return GNUNET_OK on success, GNUNET_SYSERR on error */ int -GNUNET_DISK_file_unlock (struct GNUNET_DISK_FileHandle *fh, off_t unlockStart, - off_t unlockEnd); +GNUNET_DISK_file_unlock (struct GNUNET_DISK_FileHandle *fh, OFF_T unlockStart, + OFF_T unlockEnd); /** * @brief Removes special characters as ':' from a filename. * @param fn the filename to canonicalize */ -void GNUNET_DISK_filename_canonicalize (char *fn); +void +GNUNET_DISK_filename_canonicalize (char *fn); /** @@ -584,7 +737,8 @@ void GNUNET_DISK_filename_canonicalize (char *fn); * @param user new owner of the file * @return GNUNET_OK on success, GNUNET_SYSERR on failure */ -int GNUNET_DISK_file_change_owner (const char *filename, const char *user); +int +GNUNET_DISK_file_change_owner (const char *filename, const char *user); /** @@ -601,8 +755,9 @@ int GNUNET_DISK_file_change_owner (const char *filename, const char *user); * private directory name. * @return the constructed filename */ -char *GNUNET_DISK_get_home_filename (const struct GNUNET_CONFIGURATION_Handle *cfg, - const char *serviceName, ...); +char * +GNUNET_DISK_get_home_filename (const struct GNUNET_CONFIGURATION_Handle *cfg, + const char *serviceName, ...); /** @@ -618,9 +773,10 @@ struct GNUNET_DISK_MapHandle; * @param len size of the mapping * @return pointer to the mapped memory region, NULL on failure */ -void *GNUNET_DISK_file_map (const struct GNUNET_DISK_FileHandle *h, - struct GNUNET_DISK_MapHandle **m, - enum GNUNET_DISK_MapType access, size_t len); +void * +GNUNET_DISK_file_map (const struct GNUNET_DISK_FileHandle *h, + struct GNUNET_DISK_MapHandle **m, + enum GNUNET_DISK_MapType access, size_t len); /** * Unmap a file @@ -628,14 +784,17 @@ void *GNUNET_DISK_file_map (const struct GNUNET_DISK_FileHandle *h, * @param h mapping handle * @return GNUNET_OK on success, GNUNET_SYSERR otherwise */ -int GNUNET_DISK_file_unmap (struct GNUNET_DISK_MapHandle *h); +int +GNUNET_DISK_file_unmap (struct GNUNET_DISK_MapHandle *h); /** * Write file changes to disk * @param h handle to an open file * @return GNUNET_OK on success, GNUNET_SYSERR otherwise */ -int GNUNET_DISK_file_sync (const struct GNUNET_DISK_FileHandle *h); +int +GNUNET_DISK_file_sync (const struct GNUNET_DISK_FileHandle *h); + #if 0 /* keep Emacsens' auto-indent happy */ {