]> granicus.if.org Git - php/commitdiff
- Require Fribidi 0.10.4 -> no more glib needed.
authorfoobar <sniper@php.net>
Mon, 16 Sep 2002 15:31:32 +0000 (15:31 +0000)
committerfoobar <sniper@php.net>
Mon, 16 Sep 2002 15:31:32 +0000 (15:31 +0000)
- Cleaned up a bit.

ext/fribidi/README
ext/fribidi/config.m4
ext/fribidi/fribidi.c
ext/fribidi/fribidi.php [deleted file]
ext/fribidi/php_fribidi.h

index db96b170a48abfb95e4fcb25262daca927e106e8..6620388248dc267668b327514f775cafe6c67aa2 100644 (file)
@@ -35,11 +35,9 @@ Compiling
   
 Prerequisites
 =============
-1) FriBidi version 0.9.0 or later must be installed. Latest version can be obtained thru 
+1) FriBidi version 0.10.4 or later must be installed. Latest version can be obtained thru 
    http://fribidi.sourceforge.net/
 
-2) glib header files: glib.h and glibconfig.h.
-
 Note
 =====
 
index 7e48b71d171f6dec499e00556a89a3d22b040563..b3bd80c162b2d660315e872316cd719a94ffd8c3 100644 (file)
@@ -3,77 +3,43 @@ dnl $Id$
 dnl
 
 PHP_ARG_WITH(fribidi, for FriBidi support,
-[  --with-fribidi[=DIR]    Include fribidi support (requires FriBidi >=0.1.12).])
+[  --with-fribidi[=DIR]    Include FriBidi support (requires FriBidi >= 0.10.4).])
 
 if test "$PHP_FRIBIDI" != "no"; then
 
-dnl if module was requested with default path of fribidi installation then 
-dnl $PHP_FRIBIDI will be "yes"
-
   if test "$PHP_FRIBIDI" = "yes"; then
     PHP_FRIBIDI=/usr/local
   fi
 
-  dnl check for fribidi header files
-
-  AC_MSG_CHECKING([for header files in "$PHP_FRIBIDI/include/fribidi"])
-  if test -f $PHP_FRIBIDI/include/fribidi/fribidi.h && test -f $PHP_FRIBIDI/include/fribidi/fribidi_types.h && test -f $PHP_FRIBIDI/include/fribidi/fribidi_char_sets.h; then
-    FRIBIDI_INCDIR=$PHP_FRIBIDI/include/fribidi/
-    AC_MSG_RESULT([found all])
-  else
-    AC_MSG_RESULT([missing])
-  fi
-
-  dnl check for fribidi shared library
-  
-  AC_MSG_CHECKING([for libfribidi.so file in "$PHP_FRIBIDI/lib/"])
-  if test -f "$PHP_FRIBIDI/lib/libfribidi.so" ; then
-    FRIBIDI_LIBDIR=$PHP_FRIBIDI/lib/
-    AC_MSG_RESULT([found])
-  else
-    AC_MSG_RESULT([missing])
-  fi
-
-  dnl check for glib header files
-
-  AC_MSG_CHECKING([for glib header files])
-  if test -f `which glib-config` ; then
-    AC_MSG_RESULT([found])
-    GLIB_INCDIR=`glib-config --cflags`
-  else
-    AC_MSG_RESULT([missing])
-  fi
-
-  
   dnl check for fribidi version
   AC_MSG_CHECKING([for FriBidi version])
   FRIBIDI_CONFIG=$PHP_FRIBIDI/bin/fribidi-config
-  if test -x $FRIBIDI_CONFIG; then
+  if test -x "$FRIBIDI_CONFIG"; then
     fribidi_version_full=`$FRIBIDI_CONFIG --version`
+  else
+    AC_MSG_ERROR([fribidi-config not found.])
   fi
-  
+
   fribidi_version=`echo ${fribidi_version_full} | awk 'BEGIN { FS = "."; } { printf "%d", ($1 * 1000 + $2) * 1000 + $3;}'`
 
-  if test "$fribidi_version" -ge 9000; then
+  if test "$fribidi_version" -ge 10004; then
     AC_MSG_RESULT([$fribidi_version_full])
   else
-    AC_MSG_ERROR(FriBidi version 0.9.0 or later is required to compile php with FriBidi support)
+    AC_MSG_ERROR([FriBidi version 0.10.4 or later required.])
   fi
 
+  dnl Get the paths
+  FRIBIDI_LIBS=`$FRIBIDI_CONFIG --libs`
+  FRIBIDI_INCS=`$FRIBIDI_CONFIG --cflags`
+  
+  if  test -n "$FRIBIDI_INCS" && test -n "$FRIBIDI_LIBS"; then
+    PHP_EVAL_INCLINE($FRIBIDI_INCS)
+    PHP_EVAL_LIBLINE($FRIBIDI_LIBS, FRIBIDI_SHARED_LIBADD)
 
-  AC_MSG_CHECKING([sanity to build  extension])
-  if  test -n "$FRIBIDI_INCDIR" && test -n "$FRIBIDI_LIBDIR" && test -n "$GLIB_INCDIR"; then
-
-    AC_MSG_RESULT([yes])
-
-    PHP_ADD_INCLUDE("$FRIBIDI_INCDIR")
-    PHP_EVAL_INCLINE("$GLIB_INCDIR")
-    PHP_ADD_LIBRARY_WITH_PATH(fribidi,"$FRIBIDI_LIBDIR", FRIBIDI_SHARED_LIBADD)
-
-    AC_DEFINE(HAVE_FRIBIDI, 1, [ ])
     PHP_NEW_EXTENSION(fribidi, fribidi.c, $ext_shared)
     PHP_SUBST(FRIBIDI_SHARED_LIBADD)
+    AC_DEFINE(HAVE_FRIBIDI, 1, [ ])
   else
-    AC_MSG_RESULT([no])
+    AC_MSG_ERROR([Could not find the required paths. Please check your FriBidi installation.])
   fi
 fi
index fc78f5315e8cd48e502ad037d1a0a182a8010137..7ba3e5c8aff759f985b5346f15f56417813563bc 100755 (executable)
 #endif
 
 #include "php.h"
-#include "php_ini.h"
 #include "php_fribidi.h"
-#include "fribidi.h"
 
-/* You should tweak config.m4 so this symbol (or some else suitable)
-   gets defined.
-*/
 #if HAVE_FRIBIDI
 
-/* If you declare any globals in php_fribidi.h uncomment this:
-ZEND_DECLARE_MODULE_GLOBALS(fribidi)
-*/
+#include "ext/standard/info.h"
+#include <fribidi/fribidi.h>
 
-/* True global resources - no need for thread safety here */
-/* static int le_fribidi; */
-
-/* Every user visible function must have an entry in fribidi_functions[].
-*/
 function_entry fribidi_functions[] = {
        PHP_FE(fribidi_log2vis, NULL)           
-       {NULL, NULL, NULL}      /* Must be the last line in fribidi_functions[] */
+       {NULL, NULL, NULL}
 };
 
 zend_module_entry fribidi_module_entry = {
-    STANDARD_MODULE_HEADER,
+       STANDARD_MODULE_HEADER,
        "fribidi",
        fribidi_functions,
        PHP_MINIT(fribidi),
@@ -56,7 +45,7 @@ zend_module_entry fribidi_module_entry = {
        NULL,
        NULL,
        PHP_MINFO(fribidi),
-    NO_VERSION_YET,
+       NO_VERSION_YET,
        STANDARD_MODULE_PROPERTIES
 };
 
@@ -92,7 +81,8 @@ PHP_MSHUTDOWN_FUNCTION(fribidi)
 PHP_MINFO_FUNCTION(fribidi)
 {
        php_info_print_table_start();
-       php_info_print_table_header(2, "fribidi support", "enabled");
+       php_info_print_table_header(2, "FriBidi support", "enabled");
+       php_info_print_table_header(2, "FriBidi version", FRIBIDI_VERSION);
        php_info_print_table_end();
 }
 /* }}} */
@@ -117,7 +107,7 @@ PHP_MINFO_FUNCTION(fribidi)
 /*                             FRIBIDI_CHARSET_ISIRI_3342                      */
 /*                                                              */
 /* Output: on success: The visual string.                       */
-/*         on failure:                                          */ 
+/*         on failure: FALSE                                    */ 
 /*--------------------------------------------------------------*/           
 
 /* {{{ proto string fribidi_log2vis(string str, string direction, int charset)
@@ -125,50 +115,36 @@ PHP_MINFO_FUNCTION(fribidi)
 PHP_FUNCTION(fribidi_log2vis)
 {
        zval **parameter1, **parameter2, **parameter3;
-
-
        FriBidiChar *u_logical_str, *u_visual_str;  /* unicode strings .... */
-       char *inString;
-       guchar *outString;
+       char *inString, *outString;
        int len, alloc_len, utf8_len;
-
-
        FriBidiCharType base_dir;
-
        FriBidiStrIndex *position_L_to_V_list;
        FriBidiStrIndex *position_V_to_L_list;
-       guint8  *embedding_level_list;
+       FriBidiLevel    *embedding_level_list;
                                   
        /* get parameters from input */
-       
        if (ZEND_NUM_ARGS() != 3 || zend_get_parameters_ex(3, &parameter1, &parameter2, &parameter3) == FAILURE) {
                WRONG_PARAM_COUNT;
        }
 
        /* convert input to expected type.... */
-
        convert_to_string_ex(parameter1);
        convert_to_string_ex(parameter2);
        convert_to_long_ex(parameter3);
        
        /* allocate space and prepare all local variables */
-
-
        len = Z_STRLEN_PP(parameter1);
-       
        inString = estrndup(Z_STRVAL_PP(parameter1), len);
-
        alloc_len = len+1;
 
        u_logical_str = (FriBidiChar*) emalloc(sizeof(FriBidiChar)*alloc_len);
        u_visual_str = (FriBidiChar*) emalloc(sizeof(FriBidiChar)*alloc_len);
        
-       position_L_to_V_list =  (FriBidiStrIndex*) emalloc(sizeof(FriBidiStrIndex)*alloc_len);
-       position_V_to_L_list =  (FriBidiStrIndex*) emalloc(sizeof(FriBidiStrIndex)*alloc_len);
-       embedding_level_list = (guint8*) emalloc(sizeof(guint8)*alloc_len);
+       position_L_to_V_list =  (FriBidiStrIndex *) emalloc(sizeof(FriBidiStrIndex)*alloc_len);
+       position_V_to_L_list =  (FriBidiStrIndex *) emalloc(sizeof(FriBidiStrIndex)*alloc_len);
+       embedding_level_list = (FriBidiLevel *) emalloc(sizeof(FriBidiLevel)*alloc_len);
 
-       outString = (guchar*)emalloc(sizeof(guchar)*alloc_len);
-       
        if(inString[len-1] == '\n') {
                inString[len-1] = '\0';
        }
@@ -193,36 +169,36 @@ PHP_FUNCTION(fribidi_log2vis)
                        fribidi_isiri_3342_to_unicode(inString, len, u_logical_str);
                        break;
                default:
-                       php_error_docref(NULL TSRMLS_CC, E_ERROR, "Unknown charset");
+                       php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unknown charset");
                        efree(u_logical_str);
                        efree(u_visual_str);
                        efree(position_L_to_V_list);
                        efree(position_V_to_L_list);
                        efree(embedding_level_list);
-                       efree(outString);
+                       efree(inString);
                        RETURN_FALSE;
        }
        
-       
        /* visualize the logical.... */
-
        if ((Z_STRVAL_PP(parameter2))[0] == 'R') {
                base_dir = FRIBIDI_TYPE_RTL;
-       } else if (Z_STRVAL_PP(parameter2)[0] == 'L')
+       } else if (Z_STRVAL_PP(parameter2)[0] == 'L') {
                base_dir = FRIBIDI_TYPE_LTR;
-       else
+       } else {
                base_dir = FRIBIDI_TYPE_N;
+       }
+       
+       outString = (char *) emalloc(sizeof(char)*alloc_len);
 
        fribidi_log2vis(u_logical_str, len, &base_dir, u_visual_str, position_L_to_V_list, position_V_to_L_list, embedding_level_list);
        
        /* convert back to original char set */
-
        switch(Z_LVAL_PP(parameter3)) {
                case FRIBIDI_CHARSET_UTF8:
-                       fribidi_unicode_to_utf8(u_visual_str, utf8_len , outString);
+                       fribidi_unicode_to_utf8(u_visual_str, utf8_len, outString);
                        break;
                case FRIBIDI_CHARSET_ISO8859_6:
-                       fribidi_unicode_to_iso8859_6(u_visual_str, len , outString);
+                       fribidi_unicode_to_iso8859_6(u_visual_str, len, outString);
                        break;
                case FRIBIDI_CHARSET_ISO8859_8:
                        fribidi_unicode_to_iso8859_8(u_visual_str, len , outString);
@@ -237,29 +213,29 @@ PHP_FUNCTION(fribidi_log2vis)
                        fribidi_unicode_to_isiri_3342(u_visual_str, len , outString);
                        break;
                default:
-                       php_error_docref(NULL TSRMLS_CC, E_ERROR, "Unknown charset");
+                       php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unknown charset");
                        efree(u_logical_str);
                        efree(u_visual_str);
                        efree(position_L_to_V_list);
                        efree(position_V_to_L_list);
                        efree(embedding_level_list);
                        efree(outString);
+                       efree(inString);
                        RETURN_FALSE;
        }
-       
 
        efree(u_logical_str);
        efree(u_visual_str);
-       
        efree(position_L_to_V_list);
        efree(position_V_to_L_list);
        efree(embedding_level_list);
-       
-       RETURN_STRING(outString, 1);
+       efree(inString);
+
+       RETVAL_STRING(outString, 1);
+       efree(outString);
 }
 /* }}} */
 
-
 #endif /* HAVE_FRIBIDI */
 
 /*
diff --git a/ext/fribidi/fribidi.php b/ext/fribidi/fribidi.php
deleted file mode 100644 (file)
index 6a603d6..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<?
-$module = 'fribidi';
-$function = 'confirm_' . $module . '_compiled';
-if (extension_loaded($module)) {
-       $str = $function($module);
-} else {
-       $str = "Module $module is not compiled into PHP";
-}
-echo "$str\n";
-?>
index 757a1d6d68ef79097f9e1346956a993b6d612dcb..7e602bbf461d0710503d2cff3079cdad90019599 100644 (file)
 
 #if HAVE_FRIBIDI
 
-#include "fribidi.h"
-#include "../standard/info.h"
-#include <glib.h>
+#include <fribidi/fribidi.h>
 
 extern zend_module_entry fribidi_module_entry;
 #define phpext_fribidi_ptr &fribidi_module_entry
 
-
-typedef struct _php_fribidi_rsrc{
-       guint16 *position_L_to_V_list;  
-       guint16 *position_V_to_L_list;
-       guint8  *embedding_level_list;
-       guchar *out_string;
-} php_fribidi_rsrc;
-
-
 #ifdef PHP_WIN32
 #define PHP_FRIBIDI_API __declspec(dllexport)
 #else
@@ -50,22 +39,6 @@ PHP_RSHUTDOWN_FUNCTION(fribidi);
 PHP_MINFO_FUNCTION(fribidi);
 
 PHP_FUNCTION(fribidi_log2vis);
-/*void php_fribidi_free_rsrc(php_fribidi_rsrc* p_rsrc);*/
-/* 
-       Declare any global variables you may need between the BEGIN
-       and END macros here:     
-
-ZEND_BEGIN_MODULE_GLOBALS(fribidi)
-       int global_variable;
-ZEND_END_MODULE_GLOBALS(fribidi)
-*/
-
-/* In every function that needs to use variables in php_fribidi_globals,
-   do call FRIBIDILS_FETCH(); after declaring other variables used by
-   that function, and always refer to them as FRIBIDIG(variable).
-   You are encouraged to rename these macros something shorter, see
-   examples in any other php module directory.
-*/
 
 #ifdef ZTS
 #define FRIBIDIG(v) TSRMG(fribidi_globals_id, php_fribidi_globals *, v)
@@ -81,7 +54,6 @@ ZEND_END_MODULE_GLOBALS(fribidi)
 
 #endif /* PHP_FRIBIDI_H */
 
-
 /*
  * Local variables:
  * tab-width: 4