=== added file 'src/base/inline.h'
--- old/src/base/inline.h	1970-01-01 00:00:00 +0000
+++ new/src/base/inline.h	2009-03-30 07:58:20 +0000
@@ -0,0 +1,29 @@
+#ifndef INLINE_H
+#define INLINE_H
+
+/* GCC has `__inline__' in all modes, including strict ansi.  GCC 4.3 and
+   above with `-std=c99' or `-std=gnu99' implements ISO C99 inline semantics,
+   unless `-fgnu89-inline' is used.  Here we want GNU "extern inline"
+   semantics, hence the `__gnu_inline__' attribute, in accordance with:
+   http://gcc.gnu.org/gcc-4.3/porting_to.html .
+
+   With GCC 4.2, `__GNUC_STDC_INLINE__' is never defined (because C99 inline
+   semantics are not supported), but a warning is issued in C99 mode if
+   `__gnu_inline__' is not used.
+
+   Apple's GCC build >5400 (since Xcode 3.0) doesn't support GNU inline in
+   C99 mode and doesn't define `__GNUC_STDC_INLINE__'.  Fall back to "static
+   inline" in that case.  */
+
+# if (defined __GNUC__) && (!(__APPLE_CC__ > 5400 && __STDC_VERSION__ >= 199901L))
+#  if (defined __GNUC_STDC_INLINE__) || (__GNUC__ == 4 && __GNUC_MINOR__ == 2)
+#   define EXTERN_INLINE\
+  extern __inline__ __attribute__ ((__gnu_inline__))
+#  else
+#   define EXTERN_INLINE extern __inline__
+#  endif
+# elif (defined SCM_C_INLINE)
+#  define EXTERN_INLINE static SCM_C_INLINE
+# endif
+
+#endif

=== modified file 'src/base/pdf-crypt.h'
--- old/src/base/pdf-crypt.h	2008-12-23 18:08:31 +0000
+++ new/src/base/pdf-crypt.h	2009-03-30 08:24:08 +0000
@@ -27,6 +27,7 @@
 #define PDF_CRYPT_H
 
 #include <config.h>
+#include <inline.h>
 #include <pdf-types.h>
 #include <pdf-error.h>
 #include <pdf-alloc.h>
@@ -136,46 +137,13 @@
 
 #else
 
-
-#if __GNUC__ == 4 && __GNUC_MINOR__ >= 3 && defined(__GNUC_STDC_INLINE__)
-#  define FUCKING_C99_SEMANTICS
-#endif
-
-/* Apple's gcc build > 5400 (since Xcode 3.0) doesn't support GNU
-   inline in C99 mode */
-#if __APPLE_CC__ > 5400 && ! defined(FUCKING_C99_SEMANTICS) && __STDC_VERSION__ >= 199901L
-#  define FUCKING_C99_SEMANTICS
-#endif
-
-#if defined(COMPILING_PDF_CRYPT)
-#  if defined(FUCKING_C99_SEMANTICS)
-/* force exported copy */
-#    define EXTERN_INLINE extern inline
-#  else
-#    define EXTERN_INLINE
-#  endif
-#else
-/* For gcc >= 4.1 not working in C99 inline semantics by default
-   (including the annoying 4.2 warnings about the extern inline
-   hack) */
-#  if defined(__GNUC_STDC_INLINE__) || defined(__GNUC_GNU_INLINE__)
-#    define EXTERN_INLINE  static inline
-#  else
-#    define EXTERN_INLINE extern inline
-#  endif
-/* For gcc >= 4.3 with C99 semantics */
-#  if defined(FUCKING_C99_SEMANTICS)
-/* either inline or link to extern version at compiler's choice */
-#    undef EXTERN_INLINE
-#    define EXTERN_INLINE inline
-#  endif
-#endif /* COMPILING_PDF_CRYPT */
-
-
 #include <gcrypt.h>
 
 
-EXTERN_INLINE pdf_status_t
+#if defined EXTERN_INLINE && ! defined COMPILING_PDF_CRYPT
+EXTERN_INLINE 
+#endif
+pdf_status_t
 pdf_crypt_init (void)
 {
   gcry_check_version (GCRYPT_VERSION);
@@ -183,7 +151,10 @@
 }
 
 
-EXTERN_INLINE pdf_status_t
+#if defined EXTERN_INLINE && ! defined COMPILING_PDF_CRYPT
+EXTERN_INLINE 
+#endif
+pdf_status_t
 pdf_crypt_nonce (pdf_char_t * buffer, pdf_size_t size)
 {
   gcry_create_nonce (buffer, size);
@@ -192,7 +163,10 @@
 
 
 
-EXTERN_INLINE pdf_status_t
+#if defined EXTERN_INLINE && ! defined COMPILING_PDF_CRYPT
+EXTERN_INLINE 
+#endif
+pdf_status_t
 pdf_crypt_cipher_new (enum pdf_crypt_cipher_algo_e algorithm,
 		      pdf_crypt_cipher_t *cipher)
 {
@@ -242,7 +216,10 @@
 }
 
 
-EXTERN_INLINE pdf_status_t
+#if defined EXTERN_INLINE && ! defined COMPILING_PDF_CRYPT
+EXTERN_INLINE 
+#endif
+pdf_status_t
 pdf_crypt_cipher_setkey (pdf_crypt_cipher_t cipher,
 			 pdf_char_t *key, pdf_size_t size)
 {
@@ -250,7 +227,10 @@
 }
 
 
-EXTERN_INLINE pdf_status_t
+#if defined EXTERN_INLINE && ! defined COMPILING_PDF_CRYPT
+EXTERN_INLINE 
+#endif
+pdf_status_t
 pdf_crypt_cipher_encrypt (pdf_crypt_cipher_t cipher,
 			  pdf_char_t *out, pdf_size_t out_size,
 			  pdf_char_t *in,  pdf_size_t in_size,
@@ -260,7 +240,10 @@
 }
 
 
-EXTERN_INLINE pdf_status_t
+#if defined EXTERN_INLINE && ! defined COMPILING_PDF_CRYPT
+EXTERN_INLINE 
+#endif
+pdf_status_t
 pdf_crypt_cipher_decrypt (pdf_crypt_cipher_t cipher,
 			  pdf_char_t *out, pdf_size_t out_size,
 			  pdf_char_t *in,  pdf_size_t in_size,
@@ -270,7 +253,10 @@
 }
 
 
-EXTERN_INLINE pdf_status_t
+#if defined EXTERN_INLINE && ! defined COMPILING_PDF_CRYPT
+EXTERN_INLINE 
+#endif
+pdf_status_t
 pdf_crypt_cipher_destroy (pdf_crypt_cipher_t cipher)
 {
   pdf_status_t ret;
@@ -285,7 +271,10 @@
 /* Hashing functions */
 
 
-EXTERN_INLINE pdf_status_t
+#if defined EXTERN_INLINE && ! defined COMPILING_PDF_CRYPT
+EXTERN_INLINE 
+#endif
+pdf_status_t
 pdf_crypt_md_new (enum pdf_crypt_md_algo_e algo, pdf_crypt_md_t *_md)
 {
   pdf_crypt_md_t md;
@@ -320,7 +309,10 @@
 
 
 
-EXTERN_INLINE pdf_status_t
+#if defined EXTERN_INLINE && ! defined COMPILING_PDF_CRYPT
+EXTERN_INLINE 
+#endif
+pdf_status_t
 pdf_crypt_md_write (pdf_crypt_md_t md,
                     pdf_char_t *in,  pdf_size_t in_size)
 {
@@ -330,7 +322,10 @@
 }
 
 
-EXTERN_INLINE pdf_status_t
+#if defined EXTERN_INLINE && ! defined COMPILING_PDF_CRYPT
+EXTERN_INLINE 
+#endif
+pdf_status_t
 pdf_crypt_md_read (pdf_crypt_md_t md,
 		   pdf_char_t *out, pdf_size_t out_size)
 {
@@ -364,7 +359,10 @@
 
 
 
-EXTERN_INLINE pdf_status_t
+#if defined EXTERN_INLINE && ! defined COMPILING_PDF_CRYPT
+EXTERN_INLINE 
+#endif
+pdf_status_t
 pdf_crypt_md_destroy (pdf_crypt_md_t md)
 {
   pdf_dealloc (md->raw);

=== modified file 'src/base/pdf-list.h'
--- old/src/base/pdf-list.h	2009-02-02 09:22:53 +0000
+++ new/src/base/pdf-list.h	2009-03-30 08:31:40 +0000
@@ -27,6 +27,7 @@
 #define PDF_LIST_H
 
 #include <config.h>
+#include <inline.h>
 
 /* BEGIN PUBLIC */
 #include <stdbool.h>
@@ -174,45 +175,14 @@
 #else
 /* Inlined versions of the functions */
 
-#if __GNUC__ == 4 && __GNUC_MINOR__ >= 3 && defined(__GNUC_STDC_INLINE__)
-#  define FUCKING_C99_SEMANTICS
-#endif
-
-/* Apple's gcc build > 5400 (since Xcode 3.0) doesn't support GNU
-   inline in C99 mode */
-#if __APPLE_CC__ > 5400 && ! defined(FUCKING_C99_SEMANTICS)
-#  define FUCKING_C99_SEMANTICS
-#endif
-
-#if defined(COMPILING_PDF_LIST)
-#  if defined(FUCKING_C99_SEMANTICS)
-/* force exported copy */
-#    define EXTERN_INLINE extern inline
-#  else
-#    define EXTERN_INLINE
-#  endif
-#else
-/* For gcc >= 4.1 not working in C99 inline semantics by default
-   (including the annoying 4.2 warnings about the extern inline
-   hack) */
-#  if defined(__GNUC_STDC_INLINE__) || defined(__GNUC_GNU_INLINE__)
-#    define EXTERN_INLINE  static inline
-#  else
-#    define EXTERN_INLINE extern inline
-#  endif
-/* For gcc >= 4.3 with C99 semantics */
-#  if defined(FUCKING_C99_SEMANTICS)
-/* either inline or link to extern version at compiler's choice */
-#    undef EXTERN_INLINE
-#    define EXTERN_INLINE inline
-#  endif
-#endif /* COMPILING_PDF_LIST */
-
 #include <gl_array_list.h>
 
 /* Creation and destruction functions */
 
-EXTERN_INLINE pdf_status_t
+#if defined EXTERN_INLINE && ! defined COMPILING_PDF_LIST
+EXTERN_INLINE
+#endif
+pdf_status_t
 pdf_list_new (pdf_list_element_equals_fn_t equals_fn,
               pdf_list_element_dispose_fn_t dispose_fn,
               const pdf_bool_t allow_duplicates,
@@ -241,7 +211,10 @@
   return (st);
 }
 
-EXTERN_INLINE pdf_status_t
+#if defined EXTERN_INLINE && ! defined COMPILING_PDF_LIST
+EXTERN_INLINE
+#endif
+pdf_status_t
 pdf_list_destroy (pdf_list_t list)
 {
   gl_list_free ((gl_list_t) list.gl_list);
@@ -250,7 +223,10 @@
 
 /* Property management functions */
 
-EXTERN_INLINE pdf_size_t
+#if defined EXTERN_INLINE && ! defined COMPILING_PDF_LIST
+EXTERN_INLINE
+#endif
+pdf_size_t
 pdf_list_size (const pdf_list_t list)
 {
   return ((pdf_size_t) gl_list_size((gl_list_t) list.gl_list));
@@ -258,7 +234,10 @@
 
 /* Element searching functions */
 
-EXTERN_INLINE pdf_status_t
+#if defined EXTERN_INLINE && ! defined COMPILING_PDF_LIST
+EXTERN_INLINE
+#endif
+pdf_status_t
 pdf_list_search (const pdf_list_t list, 
                  const void* element,
                  pdf_list_node_t *node)
@@ -282,7 +261,10 @@
   return (st);
 }
 
-EXTERN_INLINE pdf_status_t
+#if defined EXTERN_INLINE && ! defined COMPILING_PDF_LIST
+EXTERN_INLINE
+#endif
+pdf_status_t
 pdf_list_search_from (const pdf_list_t list, 
                       const pdf_size_t start_index,
                       const void* element,
@@ -317,7 +299,10 @@
   return (st);
 }
 
-EXTERN_INLINE pdf_status_t
+#if defined EXTERN_INLINE && ! defined COMPILING_PDF_LIST
+EXTERN_INLINE
+#endif
+pdf_status_t
 pdf_list_search_from_to (const pdf_list_t list, 
                          const pdf_size_t start_index,
                          const pdf_size_t end_index,
@@ -357,7 +342,10 @@
   return (st);
 }
 
-EXTERN_INLINE pdf_status_t
+#if defined EXTERN_INLINE && ! defined COMPILING_PDF_LIST
+EXTERN_INLINE
+#endif
+pdf_status_t
 pdf_list_next_node (const pdf_list_t list,
                     const pdf_list_node_t node,
                     pdf_list_node_t *next)
@@ -384,7 +372,10 @@
 }
 
 
-EXTERN_INLINE pdf_status_t
+#if defined EXTERN_INLINE && ! defined COMPILING_PDF_LIST
+EXTERN_INLINE
+#endif
+pdf_status_t
 pdf_list_previous_node (const pdf_list_t list, const pdf_list_node_t node, pdf_list_node_t *prev)
 {
   pdf_status_t st;
@@ -408,7 +399,10 @@
   return (st);
 }
 
-EXTERN_INLINE pdf_status_t
+#if defined EXTERN_INLINE && ! defined COMPILING_PDF_LIST
+EXTERN_INLINE
+#endif
+pdf_status_t
 pdf_list_indexof (const pdf_list_t list,
                   const void *element,
                   pdf_size_t *position)
@@ -435,7 +429,10 @@
 }
 
 
-EXTERN_INLINE pdf_status_t
+#if defined EXTERN_INLINE && ! defined COMPILING_PDF_LIST
+EXTERN_INLINE
+#endif
+pdf_status_t
 pdf_list_indexof_from (const pdf_list_t list,
                        const pdf_size_t start_index,
                        const void *element,
@@ -471,7 +468,10 @@
 }
 
 
-EXTERN_INLINE pdf_status_t
+#if defined EXTERN_INLINE && ! defined COMPILING_PDF_LIST
+EXTERN_INLINE
+#endif
+pdf_status_t
 pdf_list_indexof_from_to (const pdf_list_t list,
                           const pdf_size_t start_index,
                           const pdf_size_t end_index,
@@ -514,7 +514,10 @@
 
 /* Element setting and getting functions */
 
-EXTERN_INLINE const void *
+#if defined EXTERN_INLINE && ! defined COMPILING_PDF_LIST
+EXTERN_INLINE
+#endif
+const void *
 pdf_list_node_value (const pdf_list_t list, const pdf_list_node_t node)
 {
   return (gl_list_node_value ((gl_list_t)list.gl_list,
@@ -522,7 +525,10 @@
 }
 
 
-EXTERN_INLINE pdf_status_t
+#if defined EXTERN_INLINE && ! defined COMPILING_PDF_LIST
+EXTERN_INLINE
+#endif
+pdf_status_t
 pdf_list_get_at (const pdf_list_t list,
                  const pdf_size_t position,
                  const void **value)
@@ -552,7 +558,10 @@
 }
 
 
-EXTERN_INLINE pdf_status_t
+#if defined EXTERN_INLINE && ! defined COMPILING_PDF_LIST
+EXTERN_INLINE
+#endif
+pdf_status_t
 pdf_list_set_at (pdf_list_t list,
                  const pdf_size_t position,
                  const void *element,
@@ -596,7 +605,10 @@
 /* Element addition and removal functions */
 
 
-EXTERN_INLINE pdf_status_t
+#if defined EXTERN_INLINE && ! defined COMPILING_PDF_LIST
+EXTERN_INLINE
+#endif
+pdf_status_t
 pdf_list_add_first (pdf_list_t list,
                     const void* element,
                     pdf_list_node_t *node)
@@ -624,7 +636,10 @@
 }
 
 
-EXTERN_INLINE pdf_status_t
+#if defined EXTERN_INLINE && ! defined COMPILING_PDF_LIST
+EXTERN_INLINE
+#endif
+pdf_status_t
 pdf_list_add_last (pdf_list_t list,
                    const void* element,
                    pdf_list_node_t *node)
@@ -652,7 +667,10 @@
 }
 
 
-EXTERN_INLINE pdf_status_t
+#if defined EXTERN_INLINE && ! defined COMPILING_PDF_LIST
+EXTERN_INLINE
+#endif
+pdf_status_t
 pdf_list_add_at (pdf_list_t list,
                  const pdf_size_t position,
                  const void *element,
@@ -693,7 +711,10 @@
 }
 
 
-EXTERN_INLINE pdf_status_t
+#if defined EXTERN_INLINE && ! defined COMPILING_PDF_LIST
+EXTERN_INLINE
+#endif
+pdf_status_t
 pdf_list_remove_node (pdf_list_t list, const pdf_list_node_t node)
 {
   gl_list_remove_node ((gl_list_t)list.gl_list, (gl_list_node_t)node.gl_node);
@@ -701,7 +722,10 @@
 }
 
 
-EXTERN_INLINE pdf_status_t
+#if defined EXTERN_INLINE && ! defined COMPILING_PDF_LIST
+EXTERN_INLINE
+#endif
+pdf_status_t
 pdf_list_remove_at (pdf_list_t list, const pdf_size_t position)
 {
   pdf_status_t st;
@@ -722,7 +746,10 @@
 }
 
 
-EXTERN_INLINE pdf_status_t
+#if defined EXTERN_INLINE && ! defined COMPILING_PDF_LIST
+EXTERN_INLINE
+#endif
+pdf_status_t
 pdf_list_remove (pdf_list_t list, const void * element)
 {
   pdf_status_t st;
@@ -739,7 +766,10 @@
 
 /* Element iterator functions */
 
-EXTERN_INLINE pdf_status_t
+#if defined EXTERN_INLINE && ! defined COMPILING_PDF_LIST
+EXTERN_INLINE
+#endif
+pdf_status_t
 pdf_list_iterator (const pdf_list_t list,
                    pdf_list_iterator_t *itr)
 {
@@ -761,7 +791,10 @@
 }
 
 
-EXTERN_INLINE pdf_status_t
+#if defined EXTERN_INLINE && ! defined COMPILING_PDF_LIST
+EXTERN_INLINE
+#endif
+pdf_status_t
 pdf_list_iterator_from_to (const pdf_list_t list, const pdf_size_t start_index,
                            const pdf_size_t end_index,
                            pdf_list_iterator_t *itr)
@@ -794,7 +827,10 @@
   return st;
 }
 
-EXTERN_INLINE pdf_status_t
+#if defined EXTERN_INLINE && ! defined COMPILING_PDF_LIST
+EXTERN_INLINE
+#endif
+pdf_status_t
 pdf_list_iterator_next (pdf_list_iterator_t *iterator,
                         const void **element_pointer,
                         pdf_list_node_t *node_pointer)
@@ -811,7 +847,10 @@
   return st;
 }
 
-EXTERN_INLINE pdf_status_t
+#if defined EXTERN_INLINE && ! defined COMPILING_PDF_LIST
+EXTERN_INLINE
+#endif
+pdf_status_t
 pdf_list_iterator_free (pdf_list_iterator_t *iterator)
 {
   gl_list_iterator_free ((gl_list_iterator_t*)(iterator->gl_iterator));
@@ -820,7 +859,10 @@
 }
 
 
-EXTERN_INLINE pdf_status_t
+#if defined EXTERN_INLINE && ! defined COMPILING_PDF_LIST
+EXTERN_INLINE
+#endif
+pdf_status_t
 pdf_list_sorted_add (pdf_list_t list, pdf_list_element_compar_fn_t compar_fn,
                      const void* element, pdf_list_node_t * element_node)
 {
@@ -847,7 +889,10 @@
 
 }
 
-EXTERN_INLINE pdf_status_t
+#if defined EXTERN_INLINE && ! defined COMPILING_PDF_LIST
+EXTERN_INLINE
+#endif
+pdf_status_t
 pdf_list_sorted_remove (pdf_list_t list, pdf_list_element_compar_fn_t compar_fn,
                         const void * element)
 {
@@ -869,7 +914,10 @@
 
 }
 
-EXTERN_INLINE pdf_status_t
+#if defined EXTERN_INLINE && ! defined COMPILING_PDF_LIST
+EXTERN_INLINE
+#endif
+pdf_status_t
 pdf_list_sorted_search (const pdf_list_t list, pdf_list_element_compar_fn_t compar_fn,
                         const void* element, pdf_list_node_t *node)
 {
@@ -895,7 +943,10 @@
   return (st);
 }
 
-EXTERN_INLINE pdf_status_t
+#if defined EXTERN_INLINE && ! defined COMPILING_PDF_LIST
+EXTERN_INLINE
+#endif
+pdf_status_t
 pdf_list_sorted_search_from_to (const pdf_list_t list,
                                 pdf_list_element_compar_fn_t compar_fn,
                                 const pdf_size_t start_index, const pdf_size_t end_index,
@@ -934,7 +985,10 @@
   return (st);
 }
 
-EXTERN_INLINE pdf_status_t
+#if defined EXTERN_INLINE && ! defined COMPILING_PDF_LIST
+EXTERN_INLINE
+#endif
+pdf_status_t
 pdf_list_sorted_indexof (const pdf_list_t list,
                          pdf_list_element_compar_fn_t compar_fn,
                          const void* element, pdf_size_t *position)
@@ -961,7 +1015,10 @@
   return (st);
 }
 
-EXTERN_INLINE pdf_status_t
+#if defined EXTERN_INLINE && ! defined COMPILING_PDF_LIST
+EXTERN_INLINE
+#endif
+pdf_status_t
 pdf_list_sorted_indexof_from_to (const pdf_list_t list,
                                  pdf_list_element_compar_fn_t compar_fn,
                                  const pdf_size_t start_index, const pdf_size_t end_index,

