[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[pdf-devel] [PATCH] Updates to disk filesystem implementation. [TRY 2]
From: |
Zac Brown |
Subject: |
[pdf-devel] [PATCH] Updates to disk filesystem implementation. [TRY 2] |
Date: |
Mon, 18 Aug 2008 22:25:59 -0500 |
User-agent: |
Thunderbird 2.0.0.16 (X11/20080724) |
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: address@hidden
# 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: address@hidden
#
# 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 <address@hidden>
+ * 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 <address@hidden>
* 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
address@hidden enum pdf_fsys_file_mode_e pdf_fsys_file_get_mode
(pdf_fsys_file_t @var{file})
address@hidden {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
address@hidden 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})
address@hidden 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:
address@hidden @code
address@hidden PDF_OK
+The operation succeeded.
address@hidden PDF_EINVAL
+The mode provided was invalid.
address@hidden PDF_ERROR
+General failure, most applicable to Win32.
address@hidden 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
- [pdf-devel] [PATCH] Updates to disk filesystem implementation. [TRY 2],
Zac Brown <=