johannes                                 Mon, 25 Jan 2010 22:43:29 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=294021

Log:
Merge libmagic update

r292654 - Upgrade bundled libmagic to 5.03 (fixes CDF parsing related issues)
          (mkoppanen)
r292682 - spprintf the dbname (mkoppanen)
r292693 - Fixed ZTS build (felipe)

Changed paths:
    _U  php/php-src/branches/PHP_5_3_2/
    U   php/php-src/branches/PHP_5_3_2/NEWS
    U   php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/apprentice.c
    U   php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/apptype.c
    U   php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/ascmagic.c
    U   php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/cdf.c
    U   php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/cdf_time.c
    U   php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/compress.c
    U   php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/file.h
    U   php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/fsmagic.c
    U   php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/funcs.c
    U   php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/is_tar.c
    U   php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/magic.c
    U   php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/magic.h
    U   php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/patchlevel.h
    U   php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/print.c
    U   php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/readcdf.c
    U   php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/readelf.c
    U   php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/softmagic.c

Property changes on: php/php-src/branches/PHP_5_3_2
___________________________________________________________________
Modified: svn:mergeinfo
   - /php/php-src/branches/PHP_5_3:292504,292574,292594-292595,292611,292624,292630,292632-292635,292719,292765
/php/php-src/trunk:284726
   + /php/php-src/branches/PHP_5_3:292504,292574,292594-292595,292611,292624,292630,292632-292635,292654,292682,292693,292719,292765
/php/php-src/trunk:284726

Modified: php/php-src/branches/PHP_5_3_2/NEWS
===================================================================
--- php/php-src/branches/PHP_5_3_2/NEWS	2010-01-25 22:26:54 UTC (rev 294020)
+++ php/php-src/branches/PHP_5_3_2/NEWS	2010-01-25 22:43:29 UTC (rev 294021)
@@ -1,8 +1,11 @@
 PHP                                                                        NEWS
 |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
 ?? ??? 20??, PHP 5.3.2 RC 2
+- Upgraded bundled libmagic to version 5.03. (Mikko)
+
 - Added missing host validation for HTTP urls inside FILTER_VALIDATE_URL.
   (Ilia)
+- Added stream_resolve_include_path(). (Mikko)

 - Fixed bug #47409 (extract() problem with array containing word "this").
   (Ilia, chrisstocktonaz at gmail dot com)
@@ -36,7 +39,6 @@
 - Added support for CURLOPT_CERTINFO. FR #49253.
   (Linus Nielsen Feltzing <li...@haxx.se>)
 - Added client-side server name indication support in openssl. (Arnaud)
-- Added stream_resolve_include_path() (Mikko)

 - Improved fix for bug #50006 (Segfault caused by uksort()). (Stas)


Modified: php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/apprentice.c
===================================================================
--- php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/apprentice.c	2010-01-25 22:26:54 UTC (rev 294020)
+++ php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/apprentice.c	2010-01-25 22:43:29 UTC (rev 294021)
@@ -34,7 +34,7 @@
 #include "file.h"

 #ifndef	lint
-FILE_RCSID("@(#)$File: apprentice.c,v 1.132 2008/03/28 18:19:30 christos Exp $")
+FILE_RCSID("@(#)$File: apprentice.c,v 1.151 2009/03/18 15:19:23 christos Exp $")
 #endif	/* lint */

 #include "magic.h"
@@ -44,7 +44,7 @@
 #ifdef PHP_WIN32
 #include "win32/unistd.h"
 #if _MSC_VER <= 1300
-#include "win32/php_strtoi64.h"
+# include "win32/php_strtoi64.h"
 #endif
 #define strtoull _strtoui64
 #else
@@ -55,8 +55,10 @@
 #include <assert.h>
 #include <ctype.h>
 #include <fcntl.h>
+#ifndef PHP_WIN32
+#include <dirent.h>
+#endif

-
 #define	EATAB {while (isascii((unsigned char) *l) && \
 		      isspace((unsigned char) *l))  ++l;}
 #define LOWCASE(l) (isupper((unsigned char) (l)) ? \
@@ -609,7 +611,11 @@
 	} else {

 		/* read and parse this file */
+#if (PHP_MAJOR_VERSION < 6)
 		for (ms->line = 1; (line = php_stream_get_line(stream, buffer , BUFSIZ, &line_len)) != NULL; ms->line++) {
+#else
+		for (ms->line = 1; (line = php_stream_get_line(stream, ZSTR(buffer), BUFSIZ, &line_len)) != NULL; ms->line++) {
+#endif
 			if (line_len == 0) /* null line, garbage, etc */
 				continue;

@@ -851,9 +857,9 @@
 		case FILE_INDIRECT:
 			break;
 		default:
-			if (ms->flags & MAGIC_CHECK) {
-			    file_magwarn(ms, "cannot happen: m->type=%d\n", m->type);
-			}
+			if (ms->flags & MAGIC_CHECK)
+			    file_magwarn(ms, "cannot happen: m->type=%d\n",
+				    m->type);
 			return ~0U;
 		}
 	}
@@ -1669,7 +1675,7 @@
 		 */
 		file_magwarn(ms, "Printf format `%c' is not valid for type "
 		    "`%s' in description `%s'", *ptr ? *ptr : '?',
-            file_names[m->type], m->desc);
+		    file_names[m->type], m->desc);
 		return -1;
 	}

@@ -2114,7 +2120,7 @@
 	}

 	if (dbname) {
-		free(dbname);
+		efree(dbname);
 	}
 	return ret;

@@ -2131,7 +2137,7 @@
 	}
 error2:
 	if (dbname) {
-		free(dbname);
+		efree(dbname);
 	}
 	return -1;
 }
@@ -2189,7 +2195,7 @@

 	rv = 0;
 out:
-	free(dbname);
+	efree(dbname);
 	return rv;
 }

@@ -2202,6 +2208,7 @@
 {
 	const char *p, *q;
 	char *buf;
+	TSRMLS_FETCH();

 	if (strip) {
 		if ((p = strrchr(fn, '/')) != NULL)
@@ -2223,14 +2230,14 @@
 	q++;
 	/* Compatibility with old code that looked in .mime */
 	if (ms->flags & MAGIC_MIME) {
-		asprintf(&buf, "%.*s.mime%s", (int)(q - fn), fn, ext);
-		if (access(buf, R_OK) != -1) {
+		spprintf(&buf, MAXPATHLEN, "%.*s.mime%s", (int)(q - fn), fn, ext);
+		if (VCWD_ACCESS(buf, R_OK) != -1) {
 			ms->flags &= MAGIC_MIME_TYPE;
 			return buf;
 		}
-		free(buf);
+		efree(buf);
 	}
-	asprintf(&buf, "%.*s%s", (int)(q - fn), fn, ext);
+	spprintf(&buf, MAXPATHLEN, "%.*s%s", (int)(q - fn), fn, ext);

 	/* Compatibility with old code that looked in .mime */
 	if (strstr(p, ".mime") != NULL)

Modified: php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/apptype.c
===================================================================
--- php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/apptype.c	2010-01-25 22:26:54 UTC (rev 294020)
+++ php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/apptype.c	2010-01-25 22:43:29 UTC (rev 294021)
@@ -27,10 +27,9 @@
 #include "file.h"

 #ifndef	lint
-FILE_RCSID("@(#)$File: apptype.c,v 1.7 2007/01/12 17:38:27 christos Exp $")
+FILE_RCSID("@(#)$File: apptype.c,v 1.11 2009/02/04 18:24:32 christos Exp $")
 #endif /* lint */

-
 #include <stdlib.h>
 #include <string.h>


Modified: php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/ascmagic.c
===================================================================
--- php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/ascmagic.c	2010-01-25 22:26:54 UTC (rev 294020)
+++ php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/ascmagic.c	2010-01-25 22:43:29 UTC (rev 294021)
@@ -2,7 +2,7 @@
  * Copyright (c) Ian F. Darwin 1986-1995.
  * Software written by Ian F. Darwin and others;
  * maintained 1995-present by Christos Zoulas and others.
- *
+ *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
  * are met:
@@ -12,7 +12,7 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- *
+ *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
@@ -36,7 +36,7 @@
 #include "file.h"

 #ifndef	lint
-FILE_RCSID("@(#)$File: ascmagic.c,v 1.62 2008/03/01 22:21:48 rrt Exp $")
+FILE_RCSID("@(#)$File: ascmagic.c,v 1.75 2009/02/03 20:27:51 christos Exp $")
 #endif	/* lint */

 #include "magic.h"
@@ -66,14 +66,14 @@
 {
 	while (nbytes > 1 && buf[nbytes - 1] == '\0')
 		nbytes--;
-
+
 	return nbytes;
 }

 protected int
 file_ascmagic(struct magic_set *ms, const unsigned char *buf, size_t nbytes)
 {
-	unichar *ubuf = NULL;
+	unichar *ubuf = NULL;
 	size_t ulen;
 	int rv = 1;

@@ -264,7 +264,7 @@
 			if (file_printf(ms, ", with") == -1)
 				goto done;

-			if (n_crlf == 0 && n_cr == 0 && n_nel == 0 && n_lf == 0)			{
+			if (n_crlf == 0 && n_cr == 0 && n_nel == 0 && n_lf == 0) {
 				if (file_printf(ms, " no") == -1)
 					goto done;
 			} else {

Modified: php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/cdf.c
===================================================================
--- php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/cdf.c	2010-01-25 22:26:54 UTC (rev 294020)
+++ php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/cdf.c	2010-01-25 22:43:29 UTC (rev 294021)
@@ -32,7 +32,7 @@
 #include "file.h"

 #ifndef lint
-FILE_RCSID("@(#)$File: cdf.c,v 1.17 2009/02/03 20:27:51 christos Exp $")
+FILE_RCSID("@(#)$File: cdf.c,v 1.30 2009/05/06 14:29:47 christos Exp $")
 #endif

 #include <assert.h>
@@ -237,6 +237,19 @@
 	CDF_UNPACK(d->d_unused0);
 }

+static int
+cdf_check_stream_offset(const cdf_stream_t *sst, const void *p, size_t tail)
+{
+	const char *b = (const char *)sst->sst_tab;
+	const char *e = ((const char *)p) + tail;
+	if (e >= b && (size_t)(e - b) < sst->sst_dirlen * sst->sst_len)
+		return 0;
+	DPRINTF((stderr, "offset begin %p end %p %zu >= %zu\n", b, e,
+	    (size_t)(e - b), sst->sst_dirlen * sst->sst_len));
+	errno = EFTYPE;
+	return -1;
+}
+
 static ssize_t
 cdf_read(const cdf_info_t *info, off_t off, void *buf, size_t len)
 {
@@ -264,7 +277,6 @@
 	return (ssize_t)len;
 }

-
 int
 cdf_read_header(const cdf_info_t *info, cdf_header_t *h)
 {
@@ -332,15 +344,15 @@
 			break;

 #define CDF_SEC_LIMIT (UINT32_MAX / (4 * ss))
-	if (h->h_num_sectors_in_master_sat > CDF_SEC_LIMIT ||
-	    i > CDF_SEC_LIMIT / nsatpersec) {
+	if (h->h_num_sectors_in_master_sat > CDF_SEC_LIMIT / nsatpersec ||
+	    i > CDF_SEC_LIMIT) {
 		DPRINTF(("Number of sectors in master SAT too big %u %zu\n",
 		    h->h_num_sectors_in_master_sat, i));
 		errno = EFTYPE;
 		return -1;
 	}

-	sat->sat_len = h->h_num_sectors_in_master_sat + i * nsatpersec;
+	sat->sat_len = h->h_num_sectors_in_master_sat * nsatpersec + i;
 	DPRINTF(("sat_len = %zu ss = %zu\n", sat->sat_len, ss));
 	if ((sat->sat_tab = calloc(sat->sat_len, ss)) == NULL)
 		return -1;
@@ -360,6 +372,8 @@

 	mid = h->h_secid_first_sector_in_master_sat;
 	for (j = 0; j < h->h_num_sectors_in_master_sat; j++) {
+		if (mid < 0)
+			goto out;
 		if (j >= CDF_LOOP_LIMIT) {
 			DPRINTF(("Reading master sector loop limit"));
 			errno = EFTYPE;
@@ -371,10 +385,8 @@
 		}
 		for (k = 0; k < nsatpersec; k++, i++) {
 			sec = CDF_TOLE4(msa[k]);
-			if (sec < 0) {
-				sat->sat_len = i;
-				break;
-			}
+			if (sec < 0)
+				goto out;
 			if (i >= sat->sat_len) {
 			    DPRINTF(("Out of bounds reading MSA %u >= %u",
 				i, sat->sat_len));
@@ -390,6 +402,8 @@
 		}
 		mid = CDF_TOLE4(msa[nsatpersec]);
 	}
+out:
+	sat->sat_len = i;
 	free(msa);
 	return 0;
 out2:
@@ -478,7 +492,7 @@
 	scn->sst_len = cdf_count_chain(ssat, sid, CDF_SEC_SIZE(h));
 	scn->sst_dirlen = len;

-	if (scn->sst_len == (size_t)-1)
+	if (sst->sst_tab == NULL || scn->sst_len == (size_t)-1)
 		return -1;

 	scn->sst_tab = calloc(scn->sst_len, ss);
@@ -629,22 +643,21 @@
 			break;

 	/* If the it is not there, just fake it; some docs don't have it */
-	if (i == dir->dir_len) {
-		scn->sst_tab = NULL;
-		scn->sst_len = 0;
-		return 0;
-	}
+	if (i == dir->dir_len)
+		goto out;
 	d = &dir->dir_tab[i];

 	/* If the it is not there, just fake it; some docs don't have it */
-	if (d->d_stream_first_sector < 0) {
-		scn->sst_tab = NULL;
-		scn->sst_len = 0;
-		return 0;
-	}
+	if (d->d_stream_first_sector < 0)
+		goto out;

 	return  cdf_read_long_sector_chain(info, h, sat,
 	    d->d_stream_first_sector, d->d_size, scn);
+out:
+	scn->sst_tab = NULL;
+	scn->sst_len = 0;
+	scn->sst_dirlen = 0;
+	return 0;
 }

 static int
@@ -697,15 +710,27 @@
 	size_t i, o, nelements, j;
 	cdf_property_info_t *inp;

+	if (offs > UINT32_MAX / 4) {
+		errno = EFTYPE;
+		goto out;
+	}
 	shp = (const void *)((const char *)sst->sst_tab + offs);
+	if (cdf_check_stream_offset(sst, shp, sizeof(*shp)) == -1)
+		goto out;
 	sh.sh_len = CDF_TOLE4(shp->sh_len);
+#define CDF_SHLEN_LIMIT (UINT32_MAX / 8)
+	if (sh.sh_len > CDF_SHLEN_LIMIT) {
+		errno = EFTYPE;
+		goto out;
+	}
 	sh.sh_properties = CDF_TOLE4(shp->sh_properties);
-#define CDF_PROP_LIM (UINT32_MAX / (4 * sizeof(*inp)))
-	if (sh.sh_properties > CDF_PROP_LIM)
+#define CDF_PROP_LIMIT (UINT32_MAX / (4 * sizeof(*inp)))
+	if (sh.sh_properties > CDF_PROP_LIMIT)
 		goto out;
-	DPRINTF(("section len: %u properties %u\n", sh.sh_len,	    sh.sh_properties));
+	DPRINTF(("section len: %u properties %u\n", sh.sh_len,
+	    sh.sh_properties));
 	if (*maxcount) {
-		if (*maxcount > CDF_PROP_LIM)
+		if (*maxcount > CDF_PROP_LIMIT)
 			goto out;
 		*maxcount += sh.sh_properties;
 		inp = realloc(*info, *maxcount * sizeof(*inp));
@@ -720,6 +745,8 @@
 	*count += sh.sh_properties;
 	p = (const void *)((const char *)sst->sst_tab + offs + sizeof(sh));
 	e = (const void *)(((const char *)shp) + sh.sh_len);
+	if (cdf_check_stream_offset(sst, e, 0) == -1)
+		goto out;
 	for (i = 0; i < sh.sh_properties; i++) {
 		q = (const uint32_t *)((const char *)p +
 		    CDF_TOLE4(p[(i << 1) + 1])) - 2;
@@ -777,8 +804,8 @@
 		case CDF_LENGTH32_STRING:
 			if (nelements > 1) {
 				size_t nelem = inp - *info;
-				if (*maxcount > CDF_PROP_LIM
-				    || nelements > CDF_PROP_LIM)
+				if (*maxcount > CDF_PROP_LIMIT
+				    || nelements > CDF_PROP_LIMIT)
 					goto out;
 				*maxcount += nelements;
 				inp = realloc(*info, *maxcount * sizeof(*inp));
@@ -832,6 +859,9 @@
 	const cdf_section_declaration_t *sd = (const void *)
 	    ((const char *)sst->sst_tab + CDF_SECTION_DECLARATION_OFFSET);

+	if (cdf_check_stream_offset(sst, si, sizeof(*si)) == -1 ||
+	    cdf_check_stream_offset(sst, sd, sizeof(*sd)) == -1)
+		return -1;
 	ssi->si_byte_order = CDF_TOLE2(si->si_byte_order);
 	ssi->si_os_version = CDF_TOLE2(si->si_os_version);
 	ssi->si_os = CDF_TOLE2(si->si_os);
@@ -946,11 +976,13 @@
 	size_t i;

 #define DUMP(a, b) (void)fprintf(stderr, "%40.40s = " a "\n", # b, h->h_ ## b)
+#define DUMP2(a, b) (void)fprintf(stderr, "%40.40s = " a " (" a ")\n", # b, \
+    h->h_ ## b, 1 << h->h_ ## b)
 	DUMP("%d", revision);
 	DUMP("%d", version);
 	DUMP("0x%x", byte_order);
-	DUMP("%d", sec_size_p2);
-	DUMP("%d", short_sec_size_p2);
+	DUMP2("%d", sec_size_p2);
+	DUMP2("%d", short_sec_size_p2);
 	DUMP("%d", num_sectors_in_sat);
 	DUMP("%d", secid_first_directory);
 	DUMP("%d", min_size_standard_stream);
@@ -1202,7 +1234,7 @@
 #endif


-		if (cdf_read_summary_info(&inf, &h, &sat, &ssat, &sst, &dir,
+		if (cdf_read_summary_info(&info, &h, &sat, &ssat, &sst, &dir,
 		    &scn) == -1)
 			err(1, "Cannot read summary info");
 #ifdef CDF_DEBUG

Modified: php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/cdf_time.c
===================================================================
--- php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/cdf_time.c	2010-01-25 22:26:54 UTC (rev 294020)
+++ php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/cdf_time.c	2010-01-25 22:43:29 UTC (rev 294021)
@@ -27,7 +27,7 @@
 #include "file.h"

 #ifndef lint
-FILE_RCSID("@(#)$File: cdf_time.c,v 1.5 2009/02/03 20:27:51 christos Exp $")
+FILE_RCSID("@(#)$File: cdf_time.c,v 1.6 2009/03/10 11:44:29 christos Exp $")
 #endif

 #include <time.h>

Modified: php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/compress.c
===================================================================
--- php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/compress.c	2010-01-25 22:26:54 UTC (rev 294020)
+++ php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/compress.c	2010-01-25 22:43:29 UTC (rev 294021)
@@ -32,12 +32,11 @@
  *	uncompress(method, old, n, newch) - uncompress old into new,
  *					    using method, return sizeof new
  */
-
 #include "config.h"
 #include "file.h"

 #ifndef lint
-FILE_RCSID("@(#)$File: compress.c,v 1.56 2008/02/07 00:58:52 christos Exp $")
+FILE_RCSID("@(#)$File: compress.c,v 1.63 2009/03/23 14:21:51 christos Exp $")
 #endif

 #include "magic.h"
@@ -89,7 +88,6 @@

 #define NODATA ((size_t)~0)

-
 private ssize_t swrite(int, const void *, size_t);
 #ifdef PHP_FILEINFO_UNCOMPRESS
 private size_t uncompressbuf(struct magic_set *, int, size_t,
@@ -107,10 +105,13 @@
 	size_t i, nsz;
 	int rv = 0;
 	int mime = ms->flags & MAGIC_MIME;
+	size_t ncompr;

 	if ((ms->flags & MAGIC_COMPRESS) == 0)
 		return 0;

+	ncompr = sizeof(compr) / sizeof(compr[0]);
+
 	for (i = 0; i < ncompr; i++) {
 		if (nbytes < compr[i].maglen)
 			continue;
@@ -189,6 +190,7 @@
 #ifdef FIONREAD
 	if ((canbepipe && (ioctl(fd, FIONREAD, &t) == -1)) || (t == 0)) {
 #ifdef FD_ZERO
+		int cnt;
 		for (cnt = 0;; cnt++) {
 			fd_set check;
 			struct timeval tout = {0, 100 * 1000};
@@ -310,6 +312,7 @@
 #define FNAME		(1 << 3)
 #define FCOMMENT	(1 << 4)

+
 private size_t
 uncompressgzipped(struct magic_set *ms, const unsigned char *old,
     unsigned char **newch, size_t n)
@@ -373,7 +376,6 @@
 }
 #endif

-
 private size_t
 uncompressbuf(struct magic_set *ms, int fd, size_t method,
     const unsigned char *old, unsigned char **newch, size_t n)
@@ -490,7 +492,7 @@
 		(void)wait(NULL);
 #endif
 		(void) close(fdin[0]);
-
+
 		return n;
 	}
 }

Modified: php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/file.h
===================================================================
--- php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/file.h	2010-01-25 22:26:54 UTC (rev 294020)
+++ php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/file.h	2010-01-25 22:43:29 UTC (rev 294021)
@@ -2,7 +2,7 @@
  * Copyright (c) Ian F. Darwin 1986-1995.
  * Software written by Ian F. Darwin and others;
  * maintained 1995-present by Christos Zoulas and others.
- *
+ *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
  * are met:
@@ -12,7 +12,7 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- *
+ *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
@@ -27,7 +27,7 @@
  */
 /*
  * file.h - definitions for file(1) program
- * @(#)$File: file.h,v 1.103 2008/03/01 22:21:49 rrt Exp $
+ * @(#)$File: file.h,v 1.119 2009/02/04 18:24:32 christos Exp $
  */

 #ifndef __file_h__
@@ -138,7 +138,7 @@
 #define UNSIGNED	0x08	/* comparison is unsigned */
 #define NOSPACE		0x10	/* suppress space character before output */
 #define BINTEST		0x20	/* test is for a binary type (set only
-                                   for top-level tests) */
+				   for top-level tests) */
 #define TEXTTEST	0	/* for passing to file_softmagic */

 	uint8_t factor;
@@ -216,7 +216,7 @@
 #else
 	uint8_t dummy;
 #endif
-	uint8_t factor_op;
+	uint8_t factor_op;
 #define		FILE_FACTOR_OP_PLUS	'+'
 #define		FILE_FACTOR_OP_MINUS	'-'
 #define		FILE_FACTOR_OP_TIMES	'*'
@@ -264,7 +264,7 @@
 #define str_range _u._s._count
 #define str_flags _u._s._flags
 	/* Words 9-16 */
-	union VALUETYPE value; /* either number of string */
+	union VALUETYPE value;	/* either number or string */
 	/* Words 17-24 */
 	char desc[MAXDESC];	/* description */
 	/* Words 25-32 */
@@ -312,7 +312,6 @@
 	int last_cond;	/* used for error checking by parse() */
 #endif
 };
-
 struct magic_set {
 	struct mlist *mlist;
 	struct cont {

Modified: php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/fsmagic.c
===================================================================
--- php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/fsmagic.c	2010-01-25 22:26:54 UTC (rev 294020)
+++ php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/fsmagic.c	2010-01-25 22:43:29 UTC (rev 294021)
@@ -176,7 +176,7 @@
 			return 1;
 # endif
 #endif
-
+
 #ifdef	S_IFIFO
 			case S_IFIFO:
 				if((ms->flags & MAGIC_DEVICES) != 0)

Modified: php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/funcs.c
===================================================================
--- php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/funcs.c	2010-01-25 22:26:54 UTC (rev 294020)
+++ php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/funcs.c	2010-01-25 22:43:29 UTC (rev 294021)
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) Christos Zoulas 2003.
  * All Rights Reserved.
- *
+ *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
  * are met:
@@ -11,7 +11,7 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- *
+ *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
@@ -27,7 +27,7 @@
 #include "file.h"

 #ifndef	lint
-FILE_RCSID("@(#)$File: funcs.c,v 1.39 2008/03/01 22:21:49 rrt Exp $")
+FILE_RCSID("@(#)$File: funcs.c,v 1.53 2009/04/07 11:07:00 christos Exp $")
 #endif	/* lint */

 #include "magic.h"
@@ -392,7 +392,7 @@

 	for (np = ms->o.pbuf, op = ms->o.buf; *op; op++) {
 		if (isprint((unsigned char)*op)) {
-			*np++ = *op;
+			*np++ = *op;
 		} else {
 			OCTALIFY(np, op);
 		}

Modified: php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/is_tar.c
===================================================================
--- php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/is_tar.c	2010-01-25 22:26:54 UTC (rev 294020)
+++ php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/is_tar.c	2010-01-25 22:43:29 UTC (rev 294021)
@@ -40,7 +40,7 @@
 #include "file.h"

 #ifndef lint
-FILE_RCSID("@(#)$File: is_tar.c,v 1.31 2008/02/04 20:51:17 christos Exp $")
+FILE_RCSID("@(#)$File: is_tar.c,v 1.36 2009/02/03 20:27:51 christos Exp $")
 #endif

 #include "magic.h"

Modified: php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/magic.c
===================================================================
--- php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/magic.c	2010-01-25 22:26:54 UTC (rev 294020)
+++ php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/magic.c	2010-01-25 22:43:29 UTC (rev 294021)
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) Christos Zoulas 2003.
  * All Rights Reserved.
- *
+ *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
  * are met:
@@ -11,7 +11,7 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- *
+ *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
@@ -28,7 +28,7 @@
 #include "file.h"

 #ifndef	lint
-FILE_RCSID("@(#)$File: magic.c,v 1.50 2008/02/19 00:58:59 rrt Exp $")
+FILE_RCSID("@(#)$File: magic.c,v 1.62 2009/03/20 21:25:41 christos Exp $")
 #endif	/* lint */

 #include "magic.h"
@@ -65,9 +65,10 @@
 #ifndef PHP_WIN32
 # include <netinet/in.h>		/* for byte swapping */
 #endif
+
 #include "patchlevel.h"

-#ifndef PIPE_BUF
+#ifndef PIPE_BUF
 /* Get the PIPE_BUF from pathconf */
 #ifdef _PC_PIPE_BUF
 #define PIPE_BUF pathconf(".", _PC_PIPE_BUF)
@@ -199,6 +200,7 @@
 close_and_restore(const struct magic_set *ms, const char *name, int fd,
     const struct stat *sb)
 {
+
 	if ((ms->flags & MAGIC_PRESERVE_ATIME) != 0) {
 		/*
 		 * Try to restore access, modification times if read it.
@@ -303,7 +305,7 @@
 	}

 #ifdef O_NONBLOCK
-		/* we should be already be in non blocking mode for network socket */
+/* we should be already be in non blocking mode for network socket */
 #endif

 	/*

Modified: php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/magic.h
===================================================================
--- php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/magic.h	2010-01-25 22:26:54 UTC (rev 294020)
+++ php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/magic.h	2010-01-25 22:43:29 UTC (rev 294021)
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) Christos Zoulas 2003.
  * All Rights Reserved.
- *
+ *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
  * are met:
@@ -11,7 +11,7 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- *
+ *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE

Modified: php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/patchlevel.h
===================================================================
--- php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/patchlevel.h	2010-01-25 22:26:54 UTC (rev 294020)
+++ php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/patchlevel.h	2010-01-25 22:43:29 UTC (rev 294021)
@@ -6,14 +6,14 @@
  * $File: patchlevel.h,v 1.68 2008/03/22 21:39:43 christos Exp $
  *
  * $Log$
- * Revision 1.1.2.3  2009/05/04 20:54:53  scottmac
- * MFH Update libmagic to 5.02
+ * Revision 1.4  2009/05/04 20:52:43  scottmac
+ * Update libmagic to 5.02
  *
- * Revision 1.1.2.2  2009/03/15 23:04:18  scottmac
- * MFH Update fileinfo to libmagic 5.00 and remove dependency on dirent.h on Windows
+ * Revision 1.3  2009/03/15 23:02:35  scottmac
+ * Update fileinfo to libmagic 5.00 and remove dependency on dirent.h on Windows
  *
- * Revision 1.1.2.1  2008/11/02 16:13:49  scottmac
- * MFH: Sync libmagic with 4.26 and add support for the new v6 magic file format
+ * Revision 1.2  2008/11/02 16:09:27  scottmac
+ * Update libmagic to 4.26 and add support for v6 of the magic file format.
  *
  * Revision 1.1  2008/07/11 14:13:50  derick
  * - Move lib to libmagic

Modified: php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/print.c
===================================================================
--- php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/print.c	2010-01-25 22:26:54 UTC (rev 294020)
+++ php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/print.c	2010-01-25 22:43:29 UTC (rev 294021)
@@ -34,7 +34,7 @@
 #include "file.h"

 #ifndef lint
-FILE_RCSID("@(#)$File: print.c,v 1.63 2008/02/17 19:28:54 rrt Exp $")
+FILE_RCSID("@(#)$File: print.c,v 1.66 2009/02/03 20:27:51 christos Exp $")
 #endif  /* lint */

 #include <string.h>

Modified: php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/readcdf.c
===================================================================
--- php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/readcdf.c	2010-01-25 22:26:54 UTC (rev 294020)
+++ php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/readcdf.c	2010-01-25 22:43:29 UTC (rev 294021)
@@ -26,17 +26,15 @@
 #include "file.h"

 #ifndef lint
-FILE_RCSID("@(#)$File: readcdf.c,v 1.11 2009/02/03 20:27:51 christos Exp $")
+FILE_RCSID("@(#)$File: readcdf.c,v 1.18 2009/05/06 20:48:22 christos Exp $")
 #endif

 #include <stdlib.h>
-
 #ifdef PHP_WIN32
 #include "win32/unistd.h"
 #else
 #include <unistd.h>
 #endif
-
 #include <string.h>
 #include <time.h>
 #include <ctype.h>
@@ -202,7 +200,7 @@
 file_trycdf(struct magic_set *ms, int fd, const unsigned char *buf,
     size_t nbytes)
 {
-	cdf_info_t info;
+	cdf_info_t info;
 	cdf_header_t h;
 	cdf_sat_t sat, ssat;
 	cdf_stream_t sst, scn;
@@ -246,7 +244,6 @@
 		expn = "Cannot read short stream";
 		goto out3;
 	}
-
 #ifdef CDF_DEBUG
 	cdf_dump_dir(&info, &h, &sat, &ssat, &sst, &dir);
 #endif

Modified: php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/readelf.c
===================================================================
--- php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/readelf.c	2010-01-25 22:26:54 UTC (rev 294020)
+++ php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/readelf.c	2010-01-25 22:43:29 UTC (rev 294021)
@@ -27,7 +27,7 @@
 #include "file.h"

 #ifndef lint
-FILE_RCSID("@(#)$File: readelf.c,v 1.73 2008/03/27 22:00:28 christos Exp $")
+FILE_RCSID("@(#)$File: readelf.c,v 1.81 2008/11/04 16:38:28 christos Exp $")
 #endif

 #ifdef BUILTIN_ELF
@@ -1118,6 +1118,7 @@
 	return 0;
 }

+
 protected int
 file_tryelf(struct magic_set *ms, int fd, const unsigned char *buf,
     size_t nbytes)
@@ -1137,7 +1138,6 @@

 	if (ms->flags & (MAGIC_MIME|MAGIC_APPLE))
 		return 0;
-
 	/*
 	 * ELF executables have multiple section headers in arbitrary
 	 * file locations and thus file(1) cannot determine it from easily.

Modified: php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/softmagic.c
===================================================================
--- php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/softmagic.c	2010-01-25 22:26:54 UTC (rev 294020)
+++ php/php-src/branches/PHP_5_3_2/ext/fileinfo/libmagic/softmagic.c	2010-01-25 22:43:29 UTC (rev 294021)
@@ -2,7 +2,7 @@
  * Copyright (c) Ian F. Darwin 1986-1995.
  * Software written by Ian F. Darwin and others;
  * maintained 1995-present by Christos Zoulas and others.
- *
+ *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
  * are met:
@@ -12,7 +12,7 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- *
+ *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
@@ -32,7 +32,7 @@
 #include "file.h"

 #ifndef	lint
-FILE_RCSID("@(#)$File: softmagic.c,v 1.117 2008/03/01 22:21:49 rrt Exp $")
+FILE_RCSID("@(#)$File: softmagic.c,v 1.135 2009/03/27 22:42:49 christos Exp $")
 #endif	/* lint */

 #include "magic.h"
@@ -149,7 +149,7 @@
 		default:
 			if (m->type == FILE_INDIRECT)
 				returnval = 1;
-
+
 			switch (magiccheck(ms, m)) {
 			case -1:
 				return -1;
@@ -163,7 +163,7 @@
 			break;
 		}
 		if (flush) {
-			/*
+			/*
 			 * main entry didn't match,
 			 * flush its continuations
 			 */
@@ -188,7 +188,7 @@


 		if (print && mprint(ms, m) == -1)
-		 			return -1;
+			return -1;

 		ms->c.li[cont_level].off = moffset(ms, m);

@@ -227,7 +227,7 @@
 				return -1;
 			case 0:
 				if (m->reln != '!')
-				continue;
+					continue;
 				flush = 1;
 				break;
 			default:
@@ -305,11 +305,11 @@
 		if (printed_something) {
 			firstline = 0;
 			if (print)
-			returnval = 1;
+				returnval = 1;
 		}
 		if ((ms->flags & MAGIC_CONTINUE) == 0 && printed_something) {
 			return returnval; /* don't keep searching */
-		}
+		}
 	}
 	return returnval;  /* This is hit if -k is set or there is no match */
 }
@@ -377,7 +377,8 @@
 				return -1;
 			break;
 		default:
-			if (file_printf(ms, m->desc, (unsigned short) v) == -1)
+			if (
+			    file_printf(ms, m->desc, (unsigned short) v) == -1)
 				return -1;
 			break;
 		}
@@ -932,7 +933,7 @@
 			}
 			if (lines)
 				last = (const char *)s + nbytes;
-
+
 			ms->search.s = buf;
 			ms->search.s_len = last - buf;
 			ms->search.offset = offset;
@@ -945,10 +946,10 @@
 			const unsigned char *esrc = s + nbytes;
 			char *dst = p->s;
 			char *edst = &p->s[sizeof(p->s) - 1];
-
+
 			if (type == FILE_BESTRING16)
 				src++;
-
+
 			/* check for pointer overflow */
 			if (src < s) {
 				file_magerror(ms, "invalid offset %u in mcopy()",
@@ -1506,14 +1507,14 @@
 		if (nbytes < (offset + 1)) /* should alway be true */
 			return 0;
 		break;
-
+
 	case FILE_SHORT:
 	case FILE_BESHORT:
 	case FILE_LESHORT:
 		if (nbytes < (offset + 2))
 			return 0;
 		break;
-
+
 	case FILE_LONG:
 	case FILE_BELONG:
 	case FILE_LELONG:
@@ -1532,7 +1533,7 @@
 		if (nbytes < (offset + 4))
 			return 0;
 		break;
-
+
 	case FILE_DOUBLE:
 	case FILE_BEDOUBLE:
 	case FILE_LEDOUBLE:
@@ -1591,7 +1592,7 @@
 	if (0L == flags) { /* normal string: do it fast */
 		while (len-- > 0)
 			if ((v = *b++ - *a++) != '\0')
-				break;
+				break;
 	}
 	else { /* combine the others */
 		while (len-- > 0) {
@@ -1605,8 +1606,8 @@
 				if ((v = toupper(*b++) - *a++) != '\0')
 					break;
 			}
-			else if ((flags & STRING_COMPACT_BLANK) &&
-			    isspace(*a)) {
+			else if ((flags & STRING_COMPACT_BLANK) &&
+			    isspace(*a)) {
 				a++;
 				if (isspace(*b++)) {
 					while (isspace(*b))
@@ -1761,23 +1762,23 @@
 		case 'x':
 			matched = 1;
 			break;
-
+
 		case '!':
 			matched = fv != fl;
 			break;
-
+
 		case '=':
 			matched = fv == fl;
 			break;
-
+
 		case '>':
 			matched = fv > fl;
 			break;
-
+
 		case '<':
 			matched = fv < fl;
 			break;
-
+
 		default:
 			matched = 0;
 			file_magerror(ms, "cannot happen with float: invalid relation `%c'",
@@ -1795,23 +1796,23 @@
 		case 'x':
 			matched = 1;
 			break;
-
+
 		case '!':
 			matched = dv != dl;
 			break;
-
+
 		case '=':
 			matched = dv == dl;
 			break;
-
+
 		case '>':
 			matched = dv > dl;
 			break;
-
+
 		case '<':
 			matched = dv < dl;
 			break;
-
+
 		default:
 			matched = 0;
 			file_magerror(ms, "cannot happen with double: invalid relation `%c'", m->reln);
@@ -1859,7 +1860,6 @@
 		}
 		break;
 	}
-
 	case FILE_REGEX: {
 		zval *pattern;
 		int options = 0;
@@ -1867,9 +1867,7 @@
 		TSRMLS_FETCH();

 		MAKE_STD_ZVAL(pattern);
-		Z_STRVAL_P(pattern) = (char *)m->value.s;
-		Z_STRLEN_P(pattern) = m->vallen;
-		Z_TYPE_P(pattern) = IS_STRING;
+		ZVAL_STRINGL(pattern, (char *)m->value.s, m->vallen, 0);

 		options |= PCRE_MULTILINE;

@@ -1878,8 +1876,14 @@
 		}

 		convert_libmagic_pattern(pattern, options);
-
+
+#if (PHP_MAJOR_VERSION < 6)
 		if ((pce = pcre_get_compiled_regex_cache(Z_STRVAL_P(pattern), Z_STRLEN_P(pattern) TSRMLS_CC)) == NULL) {
+#else
+		if ((pce = pcre_get_compiled_regex_cache(IS_STRING, Z_STRVAL_P(pattern), Z_STRLEN_P(pattern) TSRMLS_CC)) == NULL) {
+#endif
+			zval_dtor(pattern);
+			FREE_ZVAL(pattern);
 			return -1;
 		} else {
 			/* pce now contains the compiled regex */
@@ -1894,16 +1898,19 @@
 			haystack = estrndup(ms->search.s, ms->search.s_len);

 			/* match v = 0, no match v = 1 */
+#if (PHP_MAJOR_VERSION < 6)
 			php_pcre_match_impl(pce, haystack, ms->search.s_len, retval, subpats, 1, 1, PREG_OFFSET_CAPTURE, 0 TSRMLS_CC);
-
+#else
+			php_pcre_match_impl(pce, IS_STRING, haystack, ms->search.s_len, retval, subpats, 1, 1, PREG_OFFSET_CAPTURE, 0 TSRMLS_CC);
+#endif
 			/* Free haystack */
 			efree(haystack);

 			if (Z_LVAL_P(retval) < 0) {
 				zval_ptr_dtor(&subpats);
 				FREE_ZVAL(retval);
-				efree(Z_STRVAL_P(pattern));
-				efree(pattern);
+				zval_dtor(pattern);
+				FREE_ZVAL(pattern);
 				return -1;
 			} else if ((Z_LVAL_P(retval) > 0) && (Z_TYPE_P(subpats) == IS_ARRAY)) {

@@ -1991,8 +1998,8 @@
 					} else {
 						zval_ptr_dtor(&subpats);
 						FREE_ZVAL(retval);
-						efree(Z_STRVAL_P(pattern));
-						efree(pattern);
+						zval_dtor(pattern);
+						FREE_ZVAL(pattern);
 						return -1;
 					}
 				}
@@ -2004,8 +2011,8 @@
 			zval_ptr_dtor(&subpats);
 			FREE_ZVAL(retval);
 		}
-		efree(Z_STRVAL_P(pattern));
-		efree(pattern);
+		zval_dtor(pattern);
+		FREE_ZVAL(pattern);
 		break;
 	}
 	case FILE_INDIRECT:
@@ -2123,7 +2130,7 @@
 	if (firstline)
 		return 0;
 	/*
-	 * we found another match
+	 * we found another match
 	 * put a newline and '-' to do some simple formatting
 	 */
 	return file_printf(ms, "\n- ");
-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to