hholzgra                Tue Oct 22 21:11:06 2002 EDT

  Modified files:              
    /php4/ext/fdf       config.m4 fdf.c 
  Log:
  make it work with pre-v5 fdftk again
  
  
Index: php4/ext/fdf/config.m4
diff -u php4/ext/fdf/config.m4:1.20 php4/ext/fdf/config.m4:1.21
--- php4/ext/fdf/config.m4:1.20 Mon Oct 21 18:58:52 2002
+++ php4/ext/fdf/config.m4      Tue Oct 22 21:11:06 2002
@@ -1,5 +1,5 @@
 dnl
-dnl $Id: config.m4,v 1.20 2002/10/21 22:58:52 sniper Exp $
+dnl $Id: config.m4,v 1.21 2002/10/23 01:11:06 hholzgra Exp $
 dnl
 
 PHP_ARG_WITH(fdftk, for FDF support,
@@ -23,11 +23,12 @@
   esac
 
   if test "$PHP_FDFTK" = "yes"; then 
-    PHP_FDFTK="/usr /usr/local ../FDFToolkitForUNIX ext/fdf/FDFToolkitForUNIX"
+    PHP_FDFTK="/usr /usr/local ../FDFToolkitForUNIX ext/fdf/FDFToolkitForUNIX 
+../fdftk ext/fdf/fdftk"
   fi
 
   for dir in $PHP_FDFTK; do
     for subdir in include HeadersAndLibraries/headers; do
+                       echo checking for $dir/$subdir/FdfTk.h
       if test -r $dir/$subdir/FdfTk.h; then
         FDFTK_DIR=$dir
         FDFTK_H_DIR=$dir/$subdir
@@ -53,18 +54,22 @@
       if test -r $dir/lib$file.so; then
         PHP_CHECK_LIBRARY($file, FDFOpen, [FDFLIBRARY=$file], [], [-L$dir -lm])
         if test "$FDFLIBRARY"; then
+               PHP_CHECK_LIBRARY($file, FDFGetFDFVersion, [HAVE_FDFTK_5=yes], [], 
+[-L$dir -lm])
           FDFTK_LIB_DIR=$dir
           break 2
         fi
       fi
     done
   done
-  
+
   if test -z "$FDFLIBRARY"; then
     AC_MSG_ERROR(no usable fdf library found)
   fi
 
   AC_DEFINE(HAVE_FDFLIB,1,[ ])
+       if test "$HAVE_FDFTK_5" = "yes"; then    
+         AC_DEFINE(HAVE_FDFTK_5,1,[ ]) 
+       fi
   PHP_ADD_LIBRARY_WITH_PATH($FDFLIBRARY, $FDFTK_LIB_DIR, FDFTK_SHARED_LIBADD)
 
   PHP_SUBST(FDFTK_SHARED_LIBADD)
Index: php4/ext/fdf/fdf.c
diff -u php4/ext/fdf/fdf.c:1.65 php4/ext/fdf/fdf.c:1.66
--- php4/ext/fdf/fdf.c:1.65     Mon Oct 21 15:55:28 2002
+++ php4/ext/fdf/fdf.c  Tue Oct 22 21:11:06 2002
@@ -17,7 +17,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: fdf.c,v 1.65 2002/10/21 19:55:28 hholzgra Exp $ */
+/* $Id: fdf.c,v 1.66 2002/10/23 01:11:06 hholzgra Exp $ */
 
 /* FdfTk lib 2.0 is a Complete C/C++ FDF Toolkit available from
    http://beta1.adobe.com/ada/acrosdk/forms.html. */
@@ -46,7 +46,6 @@
 /* {{{ fdf_functions[]
  */
 function_entry fdf_functions[] = {
-       PHP_FE(fdf_add_doc_javascript,                  NULL)
        PHP_FE(fdf_add_template,                                                NULL)
        PHP_FE(fdf_close,                                                              
 NULL)
        PHP_FE(fdf_create,                                                             
 NULL)
@@ -54,7 +53,6 @@
        PHP_FE(fdf_errno,                                                       NULL)
        PHP_FE(fdf_error,                                                       NULL)
        PHP_FE(fdf_get_ap,                                                             
 NULL)
-       PHP_FE(fdf_get_attachment,                      NULL)
        PHP_FE(fdf_get_encoding,                                                NULL)
        PHP_FE(fdf_get_file,                                                    NULL)
        PHP_FE(fdf_get_flags,                                                   NULL)
@@ -73,14 +71,18 @@
        PHP_FE(fdf_set_file,                                                    NULL)
        PHP_FE(fdf_set_flags,                                                   NULL)
        PHP_FE(fdf_set_javascript_action,                               NULL)
-       PHP_FE(fdf_set_on_import_javascript,            NULL)
        PHP_FE(fdf_set_opt,                                                            
 NULL)
        PHP_FE(fdf_set_status,                                                  NULL)
        PHP_FE(fdf_set_submit_form_action,                              NULL)
-       PHP_FE(fdf_set_target_frame,                    NULL)
        PHP_FE(fdf_set_value,                                                   NULL)
-       PHP_FE(fdf_set_version,                         NULL)
        PHP_FE(fdf_header,                              NULL)
+#ifdef HAVE_FDFTK_5
+       PHP_FE(fdf_add_doc_javascript,                  NULL)
+       PHP_FE(fdf_get_attachment,                      NULL)
+       PHP_FE(fdf_set_on_import_javascript,            NULL)
+       PHP_FE(fdf_set_target_frame,                    NULL)
+       PHP_FE(fdf_set_version,                         NULL)
+#endif
        {NULL, NULL, NULL}
 };
 /* }}} */
@@ -336,17 +338,25 @@
 
        buffer = emalloc(size);
        if(which >= 0) {
+#if HAVE_FDFTK_5
                err = FDFGetNthValue(fdf, fieldname, which, buffer, size-2, &nr);
+#else
+               php_error_docref(NULL TSRMLS_CC, E_WARNING, "the optional 'which' 
+parameter requires FDF toolkit 5.0 or above, it will be ignored for now");
+               which = -1;
+#endif
        } else {
                err = FDFGetValue(fdf, fieldname, buffer, size-2, &nr);
        }
        if(err == FDFErcBufTooShort && nr > 0 ) {
                buffer = erealloc(buffer, nr+2); 
                if(which >= 0) {
+#if HAVE_FDFTK_5
                        err = FDFGetNthValue(fdf, fieldname, which, buffer, nr, &nr);
+#endif
                } else {
                        err = FDFGetValue(fdf, fieldname, buffer, nr, &nr);
                } 
+#if HAVE_FDFTK_5
        } else if((err == FDFErcValueIsArray) && (which == -1)) {
                if (array_init(return_value) == FAILURE) {
                        efree(buffer);
@@ -367,6 +377,7 @@
                if(err == FDFErcNoValue) err = FDFErcOK;
                efree(buffer); 
                buffer = NULL;
+#endif
        }
 
        if(err != FDFErcOK) {
@@ -411,6 +422,7 @@
        convert_to_string_ex(fieldname);
 
        if (Z_TYPE_PP(value) == IS_ARRAY) {
+#ifdef HAVE_FDFTK_5
                ASInt32 nValues = zend_hash_num_elements(Z_ARRVAL_PP(value));
                char **newValues = ecalloc(nValues, sizeof(char *)), **next;
                HashPosition   pos;
@@ -427,12 +439,15 @@
                }
 
                err = FDFSetValues(fdf, Z_STRVAL_PP(fieldname), nValues, (const char 
**)newValues);
-
                
                for(next = newValues; nValues; nValues--) {
                        efree(*next++);
                }
                efree(newValues);
+#else
+               php_error_docref(NULL TSRMLS_CC, E_WARNING, "setting array values is 
+only possible with FDF toolkit 5.0 and above");
+               RETURN_FALSE;
+#endif
        } else {
                convert_to_string_ex(value);
                
@@ -696,10 +711,14 @@
                FDF_FAILURE(err);
        }
        if(target_frame) {
+#ifdef HAVE_FDFTK_5
                err = FDFSetTargetFrame(fdf, target_frame);
                if(err != FDFErcOK) {
                        FDF_FAILURE(err);
                }
+#else
+               php_error_docref(NULL TSRMLS_CC, E_WARNING, "setting the target frame 
+is only possible with FDF toolkit 5.0 and above, ignoring it for now");
+#endif
        }
 
        FDF_SUCCESS;
@@ -1228,6 +1247,7 @@
                RETURN_STRING("The field has no /AP key", 1);
        case FDFErcIncompatibleFDF: 
                RETURN_STRING("An attempt to mix classic and template-based FDF files 
was made", 1);
+#ifdef HAVE_FDFTK_5
        case FDFErcNoAppendSaves: 
                RETURN_STRING("The FDF does not include a /Difference key", 1);
        case FDFErcValueIsArray: 
@@ -1238,6 +1258,7 @@
                RETURN_STRING("Returned by FDFOpenFromEmbedded when parameter iWhich 
>= the number of embedded FDFs (including the case when the passed FDF does not 
contain any embedded FDFs)", 1);
        case FDFErcInvalidPassword: 
                RETURN_STRING("Returned by FDFOpenFromEmbedded when the embedded FDF 
is encrypted, and you did not provide the correct password", 1);
+#endif
        case FDFErcLast: 
                RETURN_STRING("Reserved for future use", 1);
        default: 
@@ -1257,12 +1278,16 @@
        }
 
        if(r_fdf) {
+#if HAVE_FDFTK_5
                const char *fdf_version; 
                FDFDoc fdf;
 
                ZEND_FETCH_RESOURCE(fdf, FDFDoc *, &r_fdf, -1, "fdf", le_fdf);
                fdf_version = FDFGetFDFVersion(fdf);
                RETURN_STRING((char *)fdf_version, 1);
+#else
+               RETURN_STRING("1.2",1);
+#endif
        } else {
                const char *api_version = FDFGetVersion();
                RETURN_STRING((char *)api_version, 1);
@@ -1270,6 +1295,7 @@
 }
 /* }}} */
 
+#ifdef HAVE_FDFTK_5
 /* {{{ proto bool fdf_set_version(resourece fdfdoc, string version)
    Sets FDF version for a file*/
 PHP_FUNCTION(fdf_set_version) {
@@ -1377,6 +1403,7 @@
        FDF_SUCCESS;
 } 
 /* }}} */
+#endif
 
 /* {{{ proto bool fdf_remove_item(resource fdfdoc, string fieldname, int item)
    Sets target frame for form */
@@ -1406,6 +1433,7 @@
 } 
 /* }}} */
 
+#ifdef HAVE_FDFTK_5
 /* {{{ proto array fdf_get_attachment(resource fdfdoc, string fieldname, string 
savepath)
    Get attached uploaded file */
 PHP_FUNCTION(fdf_get_attachment) {
@@ -1450,6 +1478,7 @@
        add_assoc_long(return_value, "size", statBuf.st_size);
 }
 /* }}} */
+#endif 
 
 /* {{{ enum_values_callback */
   static ASBool enum_values_callback(char *name, char *value, void *userdata) {



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to