More updates to the disk filesystem implementation including: * implemented pdf_fsys_disk_file_get_mode * implemented pdf_fsys_disk_file_set_mode and changed return type to pdf_status_t * fixed return value in pdf_fsys_disk_file_flush * added file_mode field to pdf_fsys_disk_file_t
Last patch I managed to spell my name wrong :-P. Also wanted to add an update to the gnupdf.texi file for a function declaration.
-Zac
# Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: [EMAIL PROTECTED] # target_branch: http://bzr.savannah.gnu.org/r/pdf/libgnupdf/branches\ # /trunk/ # testament_sha1: c2a7e88c33864fb72f601ba53303d0f7b00c66e6 # timestamp: 2008-08-18 22:22:58 -0500 # base_revision_id: [EMAIL PROTECTED] # # Begin patch === modified file 'ChangeLog' --- ChangeLog 2008-08-18 20:48:15 +0000 +++ ChangeLog 2008-08-19 03:12:03 +0000 @@ -1,3 +1,21 @@ +2008-08-18 Zac Brown <[EMAIL PROTECTED]> + * doc/gnupdf.texi (pdf_fsys_file_get_mode): Updated example and + function declaration to resolve issue in rendering gnupdf.info. + (pdf_fsys_file_set_mode): Updated example and updated return type. + + * src/base/pdf-fsys-disk.c + (pdf_fsys_disk_file_get_mode): Implemented function. + (pdf_fsys_disk_file_set_mode): Implemented function and updated + return type to give better information in instances of failure. + (pdf_fsys_disk_file_flush): Fix return value for success from + PDF_TRUE to PDF_OK. + + * src/base/pdf-fsys-disk.h (pdf_fsys_disk_file_t): Add file_mode field. + (pdf_fsys_disk_file_set_mode): Update return type to pdf_status_t. + + * src/base/pdf-fsys.{ch} (pdf_fsys_file_set_mode): Update return type + to pdf_status_t. + 2008-08-18 Jose E. Marchesi <[EMAIL PROTECTED]> * AUTHORS: Added David Vazquez. === modified file 'doc/gnupdf.texi' --- doc/gnupdf.texi 2008-08-15 00:34:15 +0000 +++ doc/gnupdf.texi 2008-08-19 03:12:03 +0000 @@ -6941,7 +6941,7 @@ @end table @end deftypefun [EMAIL PROTECTED] enum pdf_fsys_file_mode_e pdf_fsys_file_get_mode (pdf_fsys_file_t @var{file}) [EMAIL PROTECTED] {enum pdf_fsys_file_mode_e} pdf_fsys_file_get_mode (pdf_fsys_file_t @var{file}) Return the access mode used to open a given file. @@ -6952,10 +6952,18 @@ An open file. @end table @item Returns -A mode value. +A mode value if successful, otherwise returns -1. @item Usage example @example -XXX +pdf_status_t ret; +pdf_fsys_file_t file = pdf_alloc(sizeof(pdf_fsys_file_s)); +pdf_text_t path = pdf_text_new_from_unicode (&text, + "/path/to/foo", + 12, PDF_TEXT_UTF8); +ret = pdf_fsys_open (path, PDF_FSYS_OPEN_MODE_READ, file); + +enum pdf_fsys_file_mode_e mode; +mode = pdf_fsys_file_get_mode(file); @end example @end table @end deftypefun @@ -6985,7 +6993,7 @@ @end table @end deftypefun [EMAIL PROTECTED] enum pdf_fsys_file_mode_e pdf_fsys_file_set_mode (pdf_fsys_file_t @var{file}, enum pdf_fsys_file_mode_e @var{new_mode}) [EMAIL PROTECTED] pdf_status_t pdf_fsys_file_set_mode (pdf_fsys_file_t @var{file}, enum pdf_fsys_file_mode_e @var{new_mode}) Update the mode of a given open file. @@ -6998,11 +7006,28 @@ The new mode to set for the file. @end table @item Returns -The previous mode of the file or 0 if there is an error setting the -new mode. +Returns PDF_OK if the mode is set to the new mode, otherwise returns +an appropriate pdf_status_t error. +A PDF status value: [EMAIL PROTECTED] @code [EMAIL PROTECTED] PDF_OK +The operation succeeded. [EMAIL PROTECTED] PDF_EINVAL +The mode provided was invalid. [EMAIL PROTECTED] PDF_ERROR +General failure, most applicable to Win32. [EMAIL PROTECTED] table @item Usage example @example -XXX +pdf_status_t ret; +pdf_fsys_file_t file = pdf_alloc(sizeof(pdf_fsys_file_s)); +pdf_text_t path = pdf_text_new_from_unicode (&text, + "/path/to/foo", + 12, PDF_TEXT_UTF8); +ret = pdf_fsys_open (path, PDF_FSYS_OPEN_MODE_WRITE, file); + +enum pdf_fsys_file_mode_e mode = PDF_FSYS_OPEN_MODE_READ; +ret = pdf_fsys_file_set_mode(file, mode); @end example @end table @end deftypefun === modified file 'src/base/pdf-fsys-disk.c' --- src/base/pdf-fsys-disk.c 2008-08-06 13:51:06 +0000 +++ src/base/pdf-fsys-disk.c 2008-08-19 03:22:50 +0000 @@ -226,6 +226,8 @@ } } + file_data->file_mode = mode; + return ret_status; } @@ -644,8 +646,7 @@ enum pdf_fsys_file_mode_e pdf_fsys_disk_file_get_mode (pdf_fsys_file_t file) { - /* FIXME: Please implement me :o) */ - return 0; + return ((pdf_fsys_disk_file_t)file->data)->file_mode; } pdf_text_t @@ -655,12 +656,50 @@ return NULL; } -enum pdf_fsys_file_mode_e +pdf_status_t pdf_fsys_disk_file_set_mode (pdf_fsys_file_t file, enum pdf_fsys_file_mode_e new_mode) { - /* FIXME: Please implement me :D */ - return 0; + pdf_char_t mode_str[4]; + pdf_status_t result_status; + pdf_fsys_disk_file_t work_file = (pdf_fsys_disk_file_t)file->data; + + pdf_fsys_disk_build_mode_string(new_mode, mode_str); + + work_file->file_descriptor = freopen(work_file->host_path, mode_str, + work_file->file_descriptor); + + work_file->file_mode = new_mode; + + if (work_file->file_descriptor == NULL) + { + switch (errno) + { +#ifndef PDF_HOST_WIN32 + /* On Windows platforms (excluding Cygwin), freopen does not + set errno upon failure. */ + + case EBADF: + case EFAULT: + case EFBIG: + case EINVAL: + { + result_status = PDF_EINVAL; + break; + } + case EAGAIN: + case ENOSPC: +#endif /* !PDF_HOST_WIN32 */ + default: + { + /* Other error conditions */ + result_status = PDF_ERROR; + break; + } + } + } + + return result_status; } pdf_bool_t @@ -779,7 +818,7 @@ } else { - result_status = PDF_TRUE; + result_status = PDF_OK; } return result_status; === modified file 'src/base/pdf-fsys-disk.h' --- src/base/pdf-fsys-disk.h 2008-08-06 13:51:06 +0000 +++ src/base/pdf-fsys-disk.h 2008-08-19 01:42:52 +0000 @@ -37,6 +37,8 @@ encoded version */ pdf_size_t host_path_size; /* Size of the host encoded path */ + enum pdf_fsys_file_mode_e file_mode; /* file mode set when file + was opened */ FILE *file_descriptor; /* The descriptor of the open file */ }; @@ -65,8 +67,8 @@ pdf_fsys_t pdf_fsys_disk_file_get_filesystem (pdf_fsys_file_t file); enum pdf_fsys_file_mode_e pdf_fsys_disk_file_get_mode (pdf_fsys_file_t file); pdf_text_t pdf_fsys_disk_file_get_url (pdf_fsys_file_t file); -enum pdf_fsys_file_mode_e pdf_fsys_disk_file_set_mode (pdf_fsys_file_t file, - enum pdf_fsys_file_mode_e new_mode); +pdf_status_t pdf_fsys_disk_file_set_mode (pdf_fsys_file_t file, + enum pdf_fsys_file_mode_e new_mode); pdf_bool_t pdf_fsys_disk_file_same_p (pdf_fsys_file_t file, pdf_text_t path); pdf_status_t pdf_fsys_disk_file_get_pos (pdf_fsys_file_t file, === modified file 'src/base/pdf-fsys.c' --- src/base/pdf-fsys.c 2008-08-06 21:45:28 +0000 +++ src/base/pdf-fsys.c 2008-08-19 01:42:52 +0000 @@ -358,7 +358,7 @@ } } -enum pdf_fsys_file_mode_e +pdf_status_t pdf_fsys_file_set_mode (pdf_fsys_file_t file, enum pdf_fsys_file_mode_e new_mode) { === modified file 'src/base/pdf-fsys.h' --- src/base/pdf-fsys.h 2008-08-06 13:51:06 +0000 +++ src/base/pdf-fsys.h 2008-08-19 01:42:52 +0000 @@ -219,7 +219,7 @@ pdf_fsys_t pdf_fsys_file_get_filesystem (pdf_fsys_file_t file); enum pdf_fsys_file_mode_e pdf_fsys_file_get_mode (pdf_fsys_file_t file); pdf_text_t pdf_fsys_file_get_url (pdf_fsys_file_t file); -enum pdf_fsys_file_mode_e pdf_fsys_file_set_mode (pdf_fsys_file_t file, +pdf_status_t pdf_fsys_file_set_mode (pdf_fsys_file_t file, enum pdf_fsys_file_mode_e new_mode); pdf_bool_t pdf_fsys_file_same_p (pdf_fsys_file_t file, pdf_text_t path); # Begin bundle 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 A/i7kinChITJsGTg
