#include "ext/standard/php_image.h"
#include "ext/standard/info.h"
-#ifdef HAVE_MBSTRING
+#if defined(HAVE_MBSTRING) && !defined(COMPILE_DL_MBSTRING)
+#define EXIF_USE_MBSTRING 1
+#endif
+
+#ifdef EXIF_USE_MBSTRING
#include "ext/mbstring/mbstring.h"
#endif
ZEND_API ZEND_INI_MH(OnUpdateEncode)
{
-#ifdef HAVE_MBSTRING
+#ifdef EXIF_USE_MBSTRING
if (new_value && strlen(new_value) && !php_mb_check_encoding_list(new_value TSRMLS_CC)) {
php_error_docref( NULL TSRMLS_CC, E_WARNING, "Illegal encoding ignored: '%s'", new_value);
return FAILURE;
ZEND_API ZEND_INI_MH(OnUpdateDecode)
{
-#ifdef HAVE_MBSTRING
+#ifdef EXIF_USE_MBSTRING
if (!php_mb_check_encoding_list(new_value TSRMLS_CC)) {
php_error_docref( NULL TSRMLS_CC, E_WARNING, "Illegal encoding ignored: '%s'", new_value);
return FAILURE;
/* {{{ exif_process_string_raw
* Copy a string in Exif header to a character string returns length of allocated buffer if any. */
-#ifndef HAVE_MBSTRING
+#ifndef EXIF_USE_MBSTRING
static int exif_process_string_raw(char **result, char *value, size_t byte_count) {
/* we cannot use strlcpy - here the problem is that we have to copy NUL
* chars up to byte_count, we also have to add a single NUL character to
{
int a;
-#ifdef HAVE_MBSTRING
+#ifdef EXIF_USE_MBSTRING
char *decode;
size_t len;;
#endif
*pszEncoding = estrdup((const char*)szValuePtr);
szValuePtr = szValuePtr+8;
ByteCount -= 8;
-#ifdef HAVE_MBSTRING
+#ifdef EXIF_USE_MBSTRING
/* First try to detect BOM: ZERO WIDTH NOBREAK SPACE (FEFF 16)
* since we have no encoding support for the BOM yet we skip that.
*/
*pszEncoding = estrdup((const char*)szValuePtr);
szValuePtr = szValuePtr+8;
ByteCount -= 8;
-#ifdef HAVE_MBSTRING
+#ifdef EXIF_USE_MBSTRING
if (ImageInfo->motorola_intel) {
*pszInfoPtr = php_mb_convert_encoding(szValuePtr, ByteCount, ImageInfo->encode_jis, ImageInfo->decode_jis_be, &len TSRMLS_CC);
} else {
xp_field->tag = tag;
/* Copy the comment */
-#ifdef HAVE_MBSTRING
+#ifdef EXIF_USE_MBSTRING
/* What if MS supports big-endian with XP? */
/* if (ImageInfo->motorola_intel) {
xp_field->value = php_mb_convert_encoding(szValuePtr, ByteCount, ImageInfo->encode_unicode, ImageInfo->decode_unicode_be, &xp_field->size TSRMLS_CC);