瀏覽代碼

fix compatibility with 0.8.7

Remi Collet 5 年之前
父節點
當前提交
b29ad600d4
共有 2 個文件被更改,包括 17 次插入1 次删除
  1. 12 1
      config.m4
  2. 5 0
      kernel/write.c

+ 12 - 1
config.m4

@@ -76,6 +76,13 @@ if test "$PHP_XLSWRITER" != "no"; then
             ],[
                 -L$XLSXWRITER_DIR/$PHP_LIBDIR -lm
             ])
+            PHP_CHECK_LIBRARY(xlsxwriter, workbook_add_vba_project,
+            [
+                AC_DEFINE(HAVE_WORKBOOK_ADD_VBA_PROJECT, 1, [ workbook_add_vba_project available in 0.8.7 ])
+            ],[
+            ],[
+                -L$XLSXWRITER_DIR/$PHP_LIBDIR -lm
+            ])
         fi
         AC_DEFINE(HAVE_LIBXLSXWRITER, 1, [ use system libxlsxwriter ])
     else
@@ -85,13 +92,17 @@ if test "$PHP_XLSWRITER" != "no"; then
 
         XLSXWRITER_VERSION=`$EGREP "define LXW_VERSION" $srcdir/library/include/xlsxwriter.h | $SED -e 's/[[^0-9\.]]//g'`
 
-        if test `echo $XLSXWRITER_VERSION | $SED -e 's/[[^0-9]]/ /g' | $AWK '{print $1*10000 + $2*100 + $3}'` -lt 800; then
+        if test `echo $XLSXWRITER_VERSION | $SED -e 's/[[^0-9]]/ /g' | $AWK '{print $1*10000 + $2*100 + $3}'` -ge 709; then
             AC_DEFINE(HAVE_LXW_VERSION, 1, [ lxw_version available in 0.7.9 ])
         fi
 
         if test `echo $XLSXWRITER_VERSION | $SED -e 's/[[^0-9]]/ /g' | $AWK '{print $1*10000 + $2*100 + $3}'` -ge 800; then
             AC_DEFINE(HAVE_LXW_CHARTSHEET_NEW, 1, [ lxw_chartsheet_new available in 0.8.0 ])
         fi
+
+        if test `echo $XLSXWRITER_VERSION | $SED -e 's/[[^0-9]]/ /g' | $AWK '{print $1*10000 + $2*100 + $3}'` -ge 807; then
+            AC_DEFINE(HAVE_WORKBOOK_ADD_VBA_PROJECT, 1, [ workbook_add_vba_project available in 0.8.7 ])
+        fi
     fi
 
     if test -z "$PHP_DEBUG"; then

+ 5 - 0
kernel/write.c

@@ -159,8 +159,13 @@ workbook_file(xls_resource_t *self)
     /* Add cached data to charts. */
     _add_chart_cache_data(self->workbook);
 
+/* ugly test, new param (use_zip_64) was added in 0.8.7 with workbook_add_vba_project */
+#ifdef HAVE_WORKBOOK_ADD_VBA_PROJECT
     /* Create a packager object to assemble sub-elements into a zip file. */
+    packager = lxw_packager_new(self->workbook->filename, self->workbook->options.tmpdir, 0);
+#else
     packager = lxw_packager_new(self->workbook->filename, self->workbook->options.tmpdir);
+#endif
 
     /* If the packager fails it is generally due to a zip permission error. */
     if (packager == NULL) {