[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[pdf-devel] [PATCH] More functions added for disk implementation.
From: |
Zac Brown |
Subject: |
[pdf-devel] [PATCH] More functions added for disk implementation. |
Date: |
Fri, 22 Aug 2008 09:46:54 -0500 |
User-agent: |
Thunderbird 2.0.0.16 (X11/20080724) |
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: address@hidden
# 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: address@hidden
#
# 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 <address@hidden>
+
+ * 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 <address@hidden>
* 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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