[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[pdf-devel] [PATCH] Updates to disk filesystem implementation.
From: |
Zac Brown |
Subject: |
[pdf-devel] [PATCH] Updates to disk filesystem implementation. |
Date: |
Mon, 18 Aug 2008 20:49:23 -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
-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: 45697fced434a1751e62fc9441ebb83744b7bf17
# timestamp: 2008-08-18 20:43:11 -0500
# base_revision_id: address@hidden
#
# Begin patch
=== modified file 'ChangeLog'
--- ChangeLog 2008-08-18 20:48:15 +0000
+++ ChangeLog 2008-08-19 01:42:52 +0000
@@ -1,3 +1,20 @@
+2008-08-18 Zac Brwon <address@hidden>
+ * doc/gnupdf.texi (pdf_fsys_file_get_mode): Updated example.
+ (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 01:42:52 +0000
@@ -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 01:42:52 +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,62 @@
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:
+ {
+ /* Bad function parameters to underlying write() */
+ result_status = PDF_EBADDATA;
+ break;
+ }
+ case EAGAIN:
+ {
+ /* non-blocking descriptor and blocking writing
+ requested */
+ result_status = PDF_EAGAIN;
+ break;
+ }
+ case ENOSPC:
+ {
+ /* Not room in the disk for the data */
+ result_status = PDF_ENOSPC;
+ break;
+ }
+#endif /* !PDF_HOST_WIN32 */
+ default:
+ {
+ /* Other error conditions */
+ result_status = PDF_ERROR;
+ break;
+ }
+ }
+ }
+
+ return result_status;
}
pdf_bool_t
@@ -779,7 +830,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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
VDGIBvvH+LuSKcKEgBjtiag=
- [pdf-devel] [PATCH] Updates to disk filesystem implementation.,
Zac Brown <=