Ok, issues fixed and some improvements added (now a pdf_char_t is
returned by pdf_uuid_string to allow inline calls; added a check for
the appropriate buffer size; improved pdf_uuid_generate &
pdf_uuid_compare code; updated gnupdf.texi)

Albert

2011/3/23 Jose E. Marchesi <jema...@gnu.org>:
>
>
>    Please find attached a new patch. I've considered all your comments
>    and implemented the string issue with the c) option. I've also updated
>    the documentation. Thank you Jose and Aleksander for your reviews
>    :-)
>
> Your patch seems to revert some of the latest changes by Aleks:
>
> -@deftypefun {const pdf_text_t *} pdf_hash_get_text (pdf_hash_t *@var{table}, 
> const pdf_char_t *@var{key})
> +@deftypefun {const pdf_text_t} pdf_hash_get_text (pdf_hash_t *@var{table}, 
> const pdf_char_t *@var{key})
>
> It seems that you made a copy of gnupdf.texi, merged and then copied the
> file back in the repo.  Please check.
>
> Regarding the second argument of pdf_uuid_string, I would really prefer
> to just require a pointer to pdf_char_t (and not char).  The requirement
> for the pointed buffer shall be to be big enough, not to contain a fixed
> number of chars.
>
> --
> Jose E. Marchesi    jema...@gnu.org
> GNU Project         http://www.gnu.org
>
# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: albert.mer...@est.fib.upc.edu-20110324175836-\
#   amiray302v7qycqx
# target_branch: bzr://bzr.sv.gnu.org/pdf/libgnupdf/trunk/
# testament_sha1: 47bebb876779164bca8de621156b825f494640f0
# timestamp: 2011-03-24 18:59:11 +0100
# base_revision_id: jema...@gnu.org-20110323205237-cdqcwxt8vaw5ov19
# 
# Begin patch
=== modified file 'AUTHORS'
--- AUTHORS	2009-12-08 15:45:40 +0000
+++ AUTHORS	2011-03-24 17:58:36 +0000
@@ -3,6 +3,9 @@
 appreciation for their public spirit, we list here in
 alphabetical order a condensed list of their contributions.
 
+Albert Meroño Peñuela: changed configure.ac gnupdf.texi pdf-types-uuid.c
+  pdf-types-uuid.h
+
 Aleksander Morgado: changed gnupdf.texi pdf-text.c pdf-text-ucd-case.c
   pdf-text-filter.c pdf-time.c pdf-time-string.c gnupdf-tsd.texi
   pdf-text-generate-ucd.c pdf-text-host-encoding.c pdf-time.h pdf-types.h

=== modified file 'ChangeLog'
--- ChangeLog	2011-03-23 20:52:37 +0000
+++ ChangeLog	2011-03-24 17:58:36 +0000
@@ -1,3 +1,11 @@
+2011-03-24  Albert Meroño Peñuela  <albert.mer...@est.fib.upc.edu>
+
+	base/types: UUID module implementation.
+	* src/base/pdf-types-uuid.[h|c]
+	* src/Makefile.am: Compile UUID module within types.
+	* configure.ac: Added libuuid dependencies.
+	* doc/gnupdf.texi: Documented changes in UUID API.
+
 2011-03-23  Jose E. Marchesi  <jema...@gnu.org>
 
 	readme: added note about year intervals in the copyrights.

=== modified file 'configure.ac'
--- configure.ac	2011-01-27 23:21:59 +0000
+++ configure.ac	2011-03-24 17:58:36 +0000
@@ -102,6 +102,9 @@
 dnl Some of the libraries are mandatory, and some are optional.  See
 dnl the section "Report errors" below.
 
+dnl libuuid
+AC_LIB_HAVE_LINKFLAGS([uuid])
+
 dnl libpthread
 AC_LIB_HAVE_LINKFLAGS([pthread])
 
@@ -394,6 +397,10 @@
    missing_libs="$missing_libs
    libpthread"
 fi
+if test "x$HAVE_LIBUUID" != "xyes"; then
+   missing_libs="$missing_libs
+   libuuid"
+fi
 if test "x$HAVE_LIBGPG_ERROR" != "xyes"; then
    missing_libs="$missing_libs
    libgpg-error"

=== modified file 'doc/gnupdf.texi'
--- doc/gnupdf.texi	2011-03-23 09:35:50 +0000
+++ doc/gnupdf.texi	2011-03-24 17:58:36 +0000
@@ -1336,25 +1336,31 @@
 @end table
 @end deftypefun
 
-@deftypefun {const char *} pdf_uuid_string (pdf_uuid_t @var{uuid})
+@deftypefun {pdf_char_t *} pdf_uuid_string (pdf_uuid_t @var{uuid}, pdf_char_t * @var{buffer}, pdf_size_t buffer_size)
 
-Return an ASCII string with the printed representation of @var{uuid}.
+Set and return an ASCII string with the printed representation of @var{uuid}.
 
 @table @strong
 @item Parameters
 @table @var
 @item uuid
 A previously generated UUID.
+@item buffer
+A pointer to the output buffer. The given buffer should have at least PDF_UUID_SIZE (46) bytes.
+@item buffer_size
+Size of @var{buffer}.
 @end table
 @item Returns
-A null-terminated buffer containing the printed representation of
-@var{uuid}.
+A null-terminated buffer containing the printed representation of @var{uuid}.
 @item Usage example
+@example
 pdf_uuid_t uuid;
+pdf_char_t uuid_str[PDF_UUID_SIZE];
 
 uuid = pdf_uuid_generate (PDF_UUID_TIME);
 printf ("The generated UUID: %s\n",
-        pdf_uuid_string (uuid));
+        pdf_uuid_string (uuid, uuid_str, PDF_UUID_SIZE);
+@end example
 @end table
 @end deftypefun
 

=== modified file 'src/Makefile.am'
--- src/Makefile.am	2011-03-10 19:41:03 +0000
+++ src/Makefile.am	2011-03-24 17:58:36 +0000
@@ -32,7 +32,8 @@
 
 TYPES_MODULE_SOURCES = base/pdf-types.h \
                        base/pdf-types-buffer.c base/pdf-types-buffer.h \
-                       base/pdf-types-pmon.h
+                       base/pdf-types-pmon.h \
+                       base/pdf-types-uuid.c base/pdf-types-uuid.h
 
 ERROR_MODULE_SOURCES = base/pdf-error.c base/pdf-error.h
 
@@ -118,7 +119,7 @@
 endif
 
 libgnupdf_la_LDFLAGS = $(top_builddir)/lib/libgnu.la \
-                       $(LTLIBPTHREAD) $(LTLIBM) \
+                       $(LTLIBUUID) $(LTLIBPTHREAD) $(LTLIBM) \
                        $(LTLIBJBIG2DEC) $(LTLIBJPEG) $(LTLIBCURL) \
                        $(LIBGCRYPT_LIBS) $(LTLIBGPG_ERROR) $(LTLIBGCRYPT) \
                        $(LTLIBCHECK) $(LTLIBICONV)
@@ -149,6 +150,7 @@
               base/pdf-error.h \
               base/pdf-types-buffer.h \
               base/pdf-types-pmon.h \
+              base/pdf-types-uuid.h \
               base/pdf-fp.h \
               base/pdf-alloc.h \
               base/pdf-list.h \

=== added file 'src/base/pdf-types-uuid.c'
--- src/base/pdf-types-uuid.c	1970-01-01 00:00:00 +0000
+++ src/base/pdf-types-uuid.c	2011-03-24 17:58:36 +0000
@@ -0,0 +1,70 @@
+/* -*- mode: C -*-
+ *
+ *       File:         pdf-types-uuid.c
+ *       Date:         Tue Feb  8 18:38:34 2011
+ *
+ *       GNU PDF Library - UUID generation and utilities
+ *
+ */
+
+/* Copyright (C) 2011 Free Software Foundation, Inc. */
+
+/* This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <config.h>
+
+#include <pdf-types-uuid.h>
+
+pdf_uuid_t
+pdf_uuid_generate (enum pdf_uuid_type_e type)
+{
+  pdf_uuid_t new_uuid;
+
+  switch (type)
+    {
+    case PDF_UUID_TIME:
+      uuid_generate_time (new_uuid.uuid);
+      break;
+    case PDF_UUID_RANDOM:
+      uuid_generate_random (new_uuid.uuid);
+      break;
+    default:
+      uuid_generate (new_uuid.uuid);
+    }
+  
+  return new_uuid;
+}
+
+pdf_char_t *
+pdf_uuid_string (pdf_uuid_t uuid,
+                 pdf_char_t * buffer,
+                 pdf_size_t buffer_size)
+{
+  if (buffer_size < PDF_UUID_SIZE) 
+    return NULL;
+
+  uuid_unparse (uuid.uuid, buffer);
+
+  return buffer;
+}
+
+pdf_bool_t
+pdf_uuid_equal_p (pdf_uuid_t uuid1,
+                  pdf_uuid_t uuid2)
+{
+  return (uuid_compare (uuid1.uuid, uuid2.uuid) == 0 ? PDF_TRUE : PDF_FALSE);
+}
+
+/* End of pdf-types-uuid.c */

=== added file 'src/base/pdf-types-uuid.h'
--- src/base/pdf-types-uuid.h	1970-01-01 00:00:00 +0000
+++ src/base/pdf-types-uuid.h	2011-03-24 17:58:36 +0000
@@ -0,0 +1,76 @@
+/* -*- mode: C -*-
+ *
+ *       File:         pdf-types-uuid.h
+ *       Date:         Tue Feb  8 16:48:00 2011
+ *
+ *       GNU PDF Library - UUID generation and utilities
+ *
+ */
+
+/* Copyright (C) 2011 Free Software Foundation, Inc. */
+
+/* This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef PDF_TYPES_UUID_H
+#define PDF_TYPES_UUID_H
+
+#include <config.h>
+
+/* BEGIN PUBLIC */
+
+#include <uuid/uuid.h>
+
+/* END PUBLIC */
+
+#include <pdf-types.h>
+
+#define PDF_UUID_SIZE 46
+
+/* BEGIN PUBLIC */
+
+/* Types of UUIDs */
+/* Currently only time-based and random-based UUIDs are supported */
+enum pdf_uuid_type_e
+{
+  /* Time-based */
+  PDF_UUID_TIME,
+  /* Random-based */
+  PDF_UUID_RANDOM
+};
+
+struct pdf_uuid_s
+{
+  uuid_t uuid;
+};
+
+typedef struct pdf_uuid_s pdf_uuid_t;
+
+/* UUID creation */
+pdf_uuid_t pdf_uuid_generate (enum pdf_uuid_type_e type);
+
+/* Printed ASCII representation of an UUID */
+pdf_char_t * pdf_uuid_string (pdf_uuid_t uuid,
+                              pdf_char_t * buffer,
+                              pdf_size_t buffer_size);
+
+/* Determine if two UUIDs are equal */
+pdf_bool_t pdf_uuid_equal_p (pdf_uuid_t uuid1,
+                             pdf_uuid_t uuid2);
+
+/* END PUBLIC */
+
+#endif /* !PDF_TYPES_UUID_H */
+
+/* End of pdf-types-uuid.h */

# Begin bundle
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
f7oqbdD/hb6wr+LuSKcKEgSzna+g

Reply via email to