pdf-devel
[Top][All Lists]
Advanced

[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
IyBCYXphYXIgcmV2aXNpb24gYnVuZGxlIHY0CiMKQlpoOTFBWSZTWZk2DJwACfFfgF14eXf//3/v
3/q////6YBAe3j6DbLswqldaCgBQ41NrH3OkBzZStpaQyGzaDEw44yYJoZDIyMmhoA0GRhANBo0y
GIaADRE9FPCk8FAA9QDIAAZAAAAHqABqUPUHpANHqAaAAANAaGgA0AAACREI0hPRNIw1I2nqj1PJ
qeKPU9ImT0QegjEYCaZoEUimTJMmKfkm1J6U8o/RoE1N6o9RvVB6mnhGpoaaAek0eoIpCBoTEBBM
T0mTSDSnpD1PUPU9Qwg9IA00bUKwziQAFaMRb3Q8RN/T1nfQGrRB4wcHA6TblqnGyT6lrrioQWZV
NUq8UEL0zPAUj6mORRzii08Usz2W5b9dY4utR4rRagZB/AMLGLJ8f/eQ42F9Ldy8LRfZ2ciCwM4o
hpoME0Qcq064nhxNUxgTtl83Fa3949Pp/XNIWxqrEjmycqFobqUOGy5qTrnHXbGji2FTEwObgUjA
mmEjqoLVFIF/cUJifbQox0Jfhrykn0bzyYB+Fw3dGx7vv4DDb3iXUBzJMbG2xtsTY22BszEpa9um
2g4Y6buWsVpO6SvMUipupFFws3VOe9740kveFdg21WaTiMo7tsbMLxkyzKsbMXONppOJ4zj2ob/W
Ea1uJmR7/Y2o6KCovZqvkg87G+lvyTq661MUTu1mjOYziOeFSYzjCIlCQe9xvKuVsDQOcFCQgGmg
OsVF+k2eiwU08z7UG3Km/fOu5sHju+elJm0WmzC0LN+BuIpcZZXrUwNZD6ZzFQhXwttKGitaOysU
Nnrg0IPEDGwtemterLPHK4gmlNNBeq+TLaJgLXKxMUpWR6jjLR5Hx9PTz07uvwtvsPZ9X2LDAulT
09SCprZfDKUs7vjGEbr4jfkFOSilx1+F+uunaruOB5yBGqqq14WhUegzli18ww3MY5Z8gOjW0csO
Me7oPe4eW9jnMO6Tn9nNL2xo5DIqeCNYxrFK2DqdBc3mzo+fViWZ3cBxhxN0zJ6hYHQ8QwSQVIIP
FsiEB9QuQxCNkgvTnGkdOxOr7gPMTtaimjw6jmAeqmWXtI+zwN+eVpndiUxq+htCQQ98EoINqP5q
QgkgJ/Uvh+B+ESiBfB+jy4kyc/0j1ODQ6wUQ9xn32FEQREebt5+BJSzjYJtIKeXn3KBU9Eqi9aRO
yPenigJGOIpw+6ltQapeE4AIuQKZFDQxE3vgEoxEeYkvkqBwUCwhgsydND1EK2hAoxgQgOAWniXA
1oOBMqakjtPiTO4CRwJORke9TAx01I5C4U0nueMgKwTgstSXdzcJ+YRF0fQ9a4r6UaF450vqISJV
8ZG9nh0nrXa3ozgwbGAyhob+YM3iKWa2EzASsTFKJoOWwKYGBHB1kWJAin0i6ZQBCcMiDCGVugRR
qoWZuhMu1B0N5kYlCRM3hkpUTXQlnWOGqbUUVh4VtgYHIiRIx4qiPAaEBRBZIoYCYYJy1LWglsGU
CQXiYjBItO4oNKcKhHYY0MB6CnuEgORUsLTUOBe0gyiprTcakEwCRQsIKmxIwPZ18MiUsXwdtB+g
TGWoUjOOO/fbpdu1w5BvGBqASiMSZwJB32KX4YVuNx+3COuA5j0C2WI+OJtrF+Mw9xQdiApEGIWV
KbYFpHpyHmalpMjAqWGVGQfGFdqvWxhtMiwGd09xO0Ht7dxNusIkKczmWR4kFDuON/AoaanIwO0D
LISs7IYaVDTM5g/vqWHIUuLShqaEz+Cmg0gOeB0MJU4hG/RuhnipjgMtS4weV1b7xS1QyLOPM6GQ
8ngVncfmPYFDEsmaidh3dDnfqaF5UsCR2mNwTLTYzeRcUvLio4lDgJwNRM8t8ZBJrBjplOTZtQkx
NvNSWNTDA4mRjLBjQzlmdiSbzYoTakNpAG5HUgzMSRM4ibzQzHuHFL8Mdt9NaS3JQJEAFTIpEXFB
zLeBwqTNTIsMijYesqnAqbjhLdiGhOQGasjt7czkbzYtDcXkHMmaEG8kHamApP3CmOMbTEiCM9dG
60wt6SgU1UUoEFilsRFAQuAwLhOBZxOPE4FpcR5Cmxh2UTEJbHI3FtvZbrvN3TQuOhuMzIMjho3S
XgTLS8gJGOO4bTiYG44Gp0UsxjlpBBcX2TrpugLJwqFGhscSRxsthndeYnEmQULUsOJxJjmbGzPE
nLS+063lkwjMqKyomWFJlMASJlb0il38e3q9vo46vMhmTyQOLKyk2ZgIBhWdwNoBQBWW4CXLjm7I
NgdmTtsq+GC0rPtgnMeh1jvMAPqYA1PbAhfdBGthITuKIGM8FHQiVBAOCENDF2iaYxsv8J0HYEQm
ttZM2pmMypkzbz0oVY3b2KScE6LsBIg6v7HcM6z9Fu7L5l20NoYxgNt4FKQ0fkayN5i/yVYaQfpw
e0YfuPUyG27JlS4QRiTZKFn7ql9ht/2UL3G8zCn0wbjYq+bmFSuTJl4NC7RzHgUHvIB/qB9uRKjL
WbRmtpC5+Dm5b8TkR/A2KmfC+02SbJkaFzLuY+X3ag3sBa3ELhCOw73uDeIYpSgbBNttpMI/0USA
hHahjGdSaGAwCAaaCigDsiTAdUR02EUXutNptAYpEhUY2GuhIpBlAWBSKC6DAAh8pwUKhMYQiDBU
FCLoYggACKhoEAmZPGCXsU/5KSkpAU2WvTnLQx2GdTEdplPIG6PlAKcDWE+6zUSc4N7cfweaU3kC
1CDO+qefvyKSBcn4HMf7gLF9wb4AvvWmZuVONvfl5HuMzgINBMmVEzeKDIHCn3szfKzUNJWFxSb5
5aiozviOh66ZKbb7gwAp7hNMh9L69IIVJJpCB8GR2lxYbzgnQlvPpOY+0yOh0LSRiXlRU8Ts9x/4
OJ9RuOz65GAKfIaU3n7XicSZOf0waHrN7FNvMxPD9+ljD3nZt/9YeAdQ+YbkuYh1isM2Pqi/wPA6
8jqe8sJEzuPYuMDvLQ8i0oEzNGChQxVg6hoWvvKGeJUlQ0UdfMwKnH4d8fUB55nwP5vEFKmGeu/1
8S3Fobi+MM0DQuJALuIEuIB9bw9nyCCColt6niPwLmnq549DqsQwRFdAoOvuKygrmprNSsQ31VZg
RXEyllYEUbQ5dUSlLrEqUGZmb+7l9g3njLHlMMOSIPE5IvUwFRWcReNo+I1GEqNxz2pidaGsH2DU
YIW5hmcgvGFZAEIkggTU7ewLz5FrhlA6xM3mRaehficqGF+KTJPedNQzT/RTZLHaPhX/2f5TXMly
EkTSeY8degoNQxiyWUSd7bhvPFBh98FNIN5Xsp0G8MqbDEPlMDmQ5sHZJiCIIiLPsoh+PkJIQN67
O/RQL35ZaRqe/fCSPJ60LVCWp8ZxG4egSwpIKx5hLhMByFZtlRxnP0YznKwFg7G/MwKH1v2n1lDi
WpIHAgmbEFDmDaWiNByM/NA/Iwf3FEdSD1+CkVkEDbgQmec5J4eE2FKEuLQE2ksE3BzEQRNQJDcc
uhkX/9s6UaRdBCjpCQkQLvEhm4VRgDDSjDvBPhN4xm9dy6vP8XIM4oUBKgYKUhfiQGai89cRubJu
r7BT5L9xM4VGUiAgIKeoTmTnUzPtCO5Jdyj92B1qPfrBAP3+P6LRFJNo2rx/LrAIt0UU7VOXelKj
zxra2TVvsIQqx0t8L2IsEDCgzne4mL1rs84p24VN2lTmSB08jC/WKco3ekOZJksMB3hExhDyAKHz
Es8vtgS1Xmnv8BL8vsvzgImSElCMoUWEgMWWIYv9A8C4vCn1sAUa3NXLjtFpgkrxmyCIKqdLFLQM
AZJ833uLSGwPvU72rzDxg6xIIEbYxtJpjxXKCauvqMvjXmyanMt9dcWFG2qPii0w4RNKURgCQ1HM
JEAl26gVwxBmLLgDpOnjK+yv4zaHo13ke0ffgJmOjmalpGMFjbiiRCJ3KQMAyE1+SHzvI/AaUNhP
I9gg6vgIm6o2abj/EvD2TtvvqEiHt2T44kg3woFnxZbzzHA7zUwJo9vJlcSlAB/m/YqOgFiGOhDc
6MvswlmbEgN1Y2OBtqQ5XleRWZpM9B9ZvaZHaNpwCsFhsbTGMTGmHWMggbbbGDKVbYxvQC98XCIP
QJGFAOPJ+5EW4Ogw2XbB4j4j1E+jDwDFtmEEpHSI6MqJO9MAnL5WUqmFJN5xtAZ0xUguA8Z96dci
5hPxhOTNkhyYUmnBNyo6By3S3+wehaBSAOYRxX3kN3BzrijaR/eHMFMVKwMhIJzQ5vp3wZjHbS4j
XvnldmeAP6GZY7xhxbFAnRTEbAoOI1IA8+7gZAX4WAzB+DeIEkPMkg5K/Rn0ExZAWcSTrgNkIz1M
gCYUXBUCnlyQhSWL7JUmEQJUggP6jPdk95QsBakqIVjFiCoDKhp76hgmCM6p2US1QdFJsC9OwD0G
o0CBmlVAkPDNcwpFp8xZsbZTTuh9DqGoBsh/GMgktYV2wYEqCUHAOZap6Kej8xSr5cGUUxE9cMRI
crgMRmOHMQzBi9gbhWO5ToyCZ6qnecNlfG0oX8ogZkyJ24hSsohWBw700lwWlm0APHOgNXVKUFFX
GHYOFrGOoUhQMDusN0mToGkTsuoHIqO7/rpPoQgedIJJBIgkxrOAFLAdQ5SGck9AflqcI5ClYgKG
A/i7kinChITJsGTg

reply via email to

[Prev in Thread] Current Thread [Next in Thread]