pdf-devel
[Top][All Lists]
Advanced

[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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

reply via email to

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