Hi, Attached is the merge directive for pdf_fsys_disk_item_p.
Interesting changes from the last revision include, adding proper braces (I'm still learning this GNU style ;)), using POSIX only commands to create the function and thus avoiding having #ifdefs to do the same thing (Thank Microsoft for adding POSXI) and overall simplification of the code.
Note because I used the POSIX fopen, Windows should handle relative paths just fine and I verified this with my own little simple program.
-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: a57dacbb4318cc699133735411c15018404a13d5 # timestamp: 2008-07-26 08:20:38 -0700 # base_revision_id: [EMAIL PROTECTED] # # Begin patch === modified file 'ChangeLog' --- ChangeLog 2008-07-25 23:13:29 +0000 +++ ChangeLog 2008-07-26 15:20:13 +0000 @@ -1,3 +1,8 @@ +2008-07-26 Zac Brown <[EMAIL PROTECTED]> + * src/base/pdf-fsys-disk.c (pdf_fsys_disk_item_p): Add implementation + for this function. Uses POSIX compliant command for Windows instead of + FindFirstFile to minimize crossing of API's. + 2008-07-26 Jose E. Marchesi <[EMAIL PROTECTED]> * doc/gnupdf-hg.texi (Naming Functions): New section. === modified file 'src/base/pdf-fsys-disk.c' --- src/base/pdf-fsys-disk.c 2008-06-13 11:55:20 +0000 +++ src/base/pdf-fsys-disk.c 2008-07-26 15:20:13 +0000 @@ -36,6 +36,7 @@ #include <pdf-types.h> #include <pdf-error.h> #include <pdf-fsys-disk.h> +#include <pdf-text.h> #ifndef PDF_HOST_WIN32 #include <sys/statvfs.h> @@ -472,22 +473,124 @@ pdf_bool_t pdf_fsys_disk_item_p (pdf_text_t path_name) { - /* FIXME: Please implement me :D */ + pdf_char_t* ascii_path; + pdf_size_t ascii_path_len; + pdf_status_t ret_code; + FILE *file = NULL; + + if (path_name == NULL) + { + return PDF_FALSE; + } + + ret_code = pdf_text_get_host (&ascii_path, &ascii_path_len, path_name, pdf_text_get_host_encoding()); + + if (ret_code != PDF_OK) + { + goto error_cleanup; + } + + file = fopen ((char*)ascii_path, "r"); + if (file == NULL) + { + goto error_cleanup; + } + else + { + fclose (file); + } + + pdf_dealloc (ascii_path); return PDF_TRUE; + + error_cleanup: + if (ascii_path) + { + pdf_dealloc (ascii_path); + } + return PDF_FALSE; } pdf_bool_t pdf_fsys_disk_item_readable_p (pdf_text_t path_name) { - /* FIXME: Please implement me :D */ + pdf_char_t* ascii_path; + pdf_size_t ascii_path_len; + pdf_status_t ret_code; + FILE *file = NULL; + + if (path_name == NULL) + { + return PDF_FALSE; + } + + ret_code = pdf_text_get_host (&ascii_path, &ascii_path_len, path_name, pdf_text_get_host_encoding()); + + if (ret_code != PDF_OK) + { + goto error_cleanup; + } + + file = fopen ((char*)ascii_path, "r"); + if (file == NULL) + { + goto error_cleanup; + } + else + { + fclose (file); + } + + pdf_dealloc (ascii_path); return PDF_TRUE; + + error_cleanup: + if (ascii_path) + { + pdf_dealloc (ascii_path); + } + return PDF_FALSE; } pdf_bool_t pdf_fsys_disk_item_writable_p (pdf_text_t path_name) { - /* FIXME: Please implement me :D */ + pdf_char_t* ascii_path; + pdf_size_t ascii_path_len; + pdf_status_t ret_code; + FILE *file = NULL; + + if (path_name == NULL) + { + return PDF_FALSE; + } + + ret_code = pdf_text_get_host (&ascii_path, &ascii_path_len, path_name, pdf_text_get_host_encoding()); + + if (ret_code != PDF_OK) + { + goto error_cleanup; + } + + file = fopen ((char*)ascii_path, "r"); + if (file == NULL) + { + goto error_cleanup; + } + else + { + fclose (file); + } + + pdf_dealloc (ascii_path); return PDF_TRUE; + + error_cleanup: + if (ascii_path) + { + pdf_dealloc (ascii_path); + } + return PDF_FALSE; } pdf_text_t # Begin bundle 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