Hi, Added the following:
* implemented and added example to docs for pdf_fsys_file_same_p * implemented and added example to docs for pdf_fsys_file_set_pos * implemented and added example to docs for pdf_fsys_file_get_pos * fixed return value and fixed indentation in pdf_fsys_file_set_mode -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: 958e9eae4ae8b77f8e18a7ef9a55f129151dd1e8 # timestamp: 2008-08-22 09:37:27 -0500 # base_revision_id: [EMAIL PROTECTED] # # Begin patch === modified file 'ChangeLog' --- ChangeLog 2008-08-19 21:39:23 +0000 +++ ChangeLog 2008-08-22 14:37:16 +0000 @@ -1,3 +1,15 @@ +2008-08-22 Zac Brown <[EMAIL PROTECTED]> + + * src/base/pdf-fsys-disk.c (pdf_fsys_disk_file_set_mode): Make + sure a variable is initialized in all cases and fix indentation. + (pdf_fsys_disk_file_same_p): Implemented function. + (pdf_fsys_disk_file_get_pos): Implemented function. + (pdf_fsys_disk_file_set_pos): Implemented function. + + * doc/gnupdf.texi (pdf_fsys_file_same_p): Add example. + (pdf_fsys_file_set_pos): Add example. + (pdf_fsys_file_get_pos): Add example. + 2008-08-19 Jose E. Marchesi <[EMAIL PROTECTED]> * src/base/pdf-fsys-disk.c (pdf_fsys_disk_file_set_mode): Return === modified file 'doc/gnupdf.texi' --- doc/gnupdf.texi 2008-08-19 21:39:23 +0000 +++ doc/gnupdf.texi 2008-08-22 14:37:16 +0000 @@ -7061,7 +7061,12 @@ @end table @item Usage example @example -XXX +pdf_bool_t ret; +pdf_fsys_file_t file; /* some pre-initialized file variable */ +pdf_text_t other_path = pdf_text_new_from_unicode (&text, + "/path/to/baz", + 12, PDF_TEXT_UTF8); +ret = pdf_fsys_file_same_p (file, other_path); @end example @end table @end deftypefun @@ -7094,7 +7099,15 @@ @end 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); + +pdf_size_t pos = 20; +ret = pdf_fsys_file_get_pos(file, pos); @end example @end table @end deftypefun @@ -7124,7 +7137,15 @@ @end 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); + +pdf_size_t pos = 20; +ret = pdf_fsys_file_set_pos(file, pos); @end example @end table @end deftypefun === modified file 'src/base/pdf-fsys-disk.c' --- src/base/pdf-fsys-disk.c 2008-08-19 21:39:23 +0000 +++ src/base/pdf-fsys-disk.c 2008-08-22 14:37:16 +0000 @@ -673,7 +673,7 @@ if (work_file->file_descriptor == NULL) { - switch (errno) + switch (errno) { #ifndef PDF_HOST_WIN32 /* On Windows platforms (excluding Cygwin), freopen does not @@ -698,6 +698,10 @@ } } } + else + { + result_status = PDF_OK; + } return result_status; } @@ -706,24 +710,95 @@ pdf_fsys_disk_file_same_p (pdf_fsys_file_t file, pdf_text_t path) { - /* FIXME: Please implement me XD */ - return PDF_TRUE; + pdf_status_t stat; + pdf_i32_t ret; + pdf_bool_t case_sensitive; + pdf_fsys_disk_file_t work_file = (pdf_fsys_disk_file_t)file->data; + + /* Unix-like systems have case sensitive paths, Windows doesn't. */ +#ifndef PDF_HOST_WIN32 + case_sensitive = PDF_TRUE; +#else + case_sensitive = PDF_FALSE; +#endif + + ret = pdf_text_cmp(work_file->unicode_path, path, case_sensitive, &stat); + + if (ret == 0 && stat == PDF_OK) + { + return PDF_TRUE; + } + + return PDF_FALSE; } pdf_status_t pdf_fsys_disk_file_get_pos (pdf_fsys_file_t file, pdf_size_t *pos) { - /* FIXME: Please implement me XD */ - return 0; + pdf_status_t result_status; + pdf_fsys_disk_file_t work_file = (pdf_fsys_disk_file_t)file->data; + + if (fgetpos(work_file->file_descriptor, (fpos_t*)pos) == 0) + { + result_status = PDF_OK; + } + else + { + switch (errno) + { + case EINVAL: + case ESPIPE: + case EOVERFLOW: + case EBADF: + { + result_status = PDF_EBADDATA; + break; + } + default: + { + /* Other error conditions */ + result_status = PDF_ERROR; + break; + } + } + } + + return result_status; } pdf_status_t pdf_fsys_disk_file_set_pos (pdf_fsys_file_t file, pdf_size_t new_pos) { - /* FIXME: Please implement me XD */ - return PDF_OK; + pdf_status_t result_status; + pdf_fsys_disk_file_t work_file = (pdf_fsys_disk_file_t)file->data; + + if (fsetpos(work_file->file_descriptor, (fpos_t*)&new_pos) == 0) + { + result_status = PDF_OK; + } + else + { + switch (errno) + { + case EINVAL: + case ESPIPE: + case EBADF: + { + result_status = PDF_EBADDATA; + break; + } + default: + { + /* Other error conditions */ + result_status = PDF_ERROR; + break; + } + } + } + + return result_status; } pdf_bool_t # Begin bundle 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
