cvs: php-src / NEWS /ext/standard basic_functions.c config.m4 php_uuencode.h uuencode.c

From: Date: Mon, 27 Oct 2003 05:35:42 +0000
Subject: cvs: php-src / NEWS /ext/standard basic_functions.c config.m4 php_uuencode.h uuencode.c
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-24293@lists.php.net to get a copy of this message
iliaa Mon Oct 27 00:35:42 2003 EDT Added files: /php-src/ext/standard uuencode.c php_uuencode.h Modified files: /php-src NEWS /php-src/ext/standard basic_functions.c config.m4 Log: Added uuencode() & uudecode() functions.

Index: php-src/NEWS diff -u php-src/NEWS:1.1478 php-src/NEWS:1.1479 --- php-src/NEWS:1.1478 Sat Oct 25 10:06:29 2003 +++ php-src/NEWS Mon Oct 27 00:35:40 2003 @@ -32,6 +32,8 @@ . array_udiff_assoc(). (Andrey) . array_udiff_uassoc(). (Andrey) . array_diff_uassoc(). (Andrey) + . uuencode(). (Ilia) + . uudecode(). (Ilia) - Added "resume_pos" context option to "ftp://" wrapper. (Sara) - Added optional parameter to OCIWriteTemporaryLob() to specify the type of LOB (Patch by Novicky Marek <novicky@aarongroup.cz>). (Thies) Index: php-src/ext/standard/basic_functions.c diff -u php-src/ext/standard/basic_functions.c:1.634 php-src/ext/standard/basic_functions.c:1.635 --- php-src/ext/standard/basic_functions.c:1.634 Sun Oct 19 21:59:35 2003 +++ php-src/ext/standard/basic_functions.c Mon Oct 27 00:35:41 2003 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: basic_functions.c,v 1.634 2003/10/20 01:59:35 iliaa Exp $ */ +/* $Id: basic_functions.c,v 1.635 2003/10/27 05:35:41 iliaa Exp $ */ #include "php.h" #include "php_streams.h" @@ -33,6 +33,7 @@ #include "ext/session/php_session.h" #include "zend_operators.h" #include "ext/standard/dns.h" +#include "ext/standard/php_uuencode.h" #include <stdarg.h> #include <stdlib.h> @@ -488,6 +489,9 @@ PHP_FE(base64_decode, NULL) PHP_FE(base64_encode, NULL) + + PHP_FE(uuencode, NULL) + PHP_FE(uudecode, NULL) PHP_FE(abs, NULL) PHP_FE(ceil, NULL) Index: php-src/ext/standard/config.m4 diff -u php-src/ext/standard/config.m4:1.66 php-src/ext/standard/config.m4:1.67 --- php-src/ext/standard/config.m4:1.66 Sat Oct 4 08:23:11 2003 +++ php-src/ext/standard/config.m4 Mon Oct 27 00:35:41 2003 @@ -1,4 +1,4 @@ -dnl $Id: config.m4,v 1.66 2003/10/04 12:23:11 moriyoshi Exp $ -*- sh -*- +dnl $Id: config.m4,v 1.67 2003/10/27 05:35:41 iliaa Exp $ -*- sh -*- divert(3)dnl @@ -337,7 +337,7 @@ url_scanner.c var.c versioning.c assert.c strnatcmp.c levenshtein.c \ incomplete_class.c url_scanner_ex.c ftp_fopen_wrapper.c \ http_fopen_wrapper.c php_fopen_wrapper.c credits.c css.c \ - var_unserializer.c ftok.c sha1.c user_filters.c \ + var_unserializer.c ftok.c sha1.c user_filters.c uuencode.c \ filters.c proc_open.c sunfuncs.c streamsfuncs.c http.c) PHP_ADD_MAKEFILE_FRAGMENT Index: php-src/ext/standard/uuencode.c +++ php-src/ext/standard/uuencode.c /* +----------------------------------------------------------------------+ | PHP Version 4 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2003 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.0 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_0.txt. | | If you did not receive a copy of the PHP license and are unable to | | obtain it through the world-wide-web, please send a note to | | license@php.net so we can mail you a copy immediately. | +----------------------------------------------------------------------+ | Author: Ilia Alshanetsky <ilia@php.net> | +----------------------------------------------------------------------+ */ /* $Id: uuencode.c,v 1.1 2003/10/27 05:35:41 iliaa Exp $ */ /* * Portions of this code are based on Berkeley's uuencode/uudecode * implementation. * * Copyright (c) 1983, 1993 * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 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. * 3. All advertising materials mentioning features or use of this software * must display the following acknowledgement: * This product includes software developed by the University of * California, Berkeley and its contributors. * 4. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include <math.h> #include "php.h" #include "php_uuencode.h" #define PHP_UU_ENC(c) ((c) ? ((c) & 077) + ' ' : '`') #define PHP_UU_ENC_C2(c) PHP_UU_ENC(((*(c) << 4) & 060) | ((*((c) + 1) >> 4) & 017)) #define PHP_UU_ENC_C3(c) PHP_UU_ENC(((*(c + 1) << 2) & 074) | ((*((c) + 2) >> 6) & 03)) #define PHP_UU_DEC(c) (((c) - ' ') & 077) PHPAPI int php_uuencode(char *src, int src_len, char **dest) { int len = 45; char *p, *s, *e, *ee; /* encoded length is ~ 38% greater then the original */ p = *dest = emalloc((ceil(src_len * 1.38) + 45 + 1)); s = src; e = src + src_len; while ((s + 3) < e) { ee = s + len; if (ee > e) { ee = e; len = ee - s; if (len % 3) { ee = s + (int) (floor(len / 3) * 3); } } *p++ = PHP_UU_ENC(len); while (s < ee) { *p++ = PHP_UU_ENC(*s >> 2); *p++ = PHP_UU_ENC_C2(s); *p++ = PHP_UU_ENC_C3(s); *p++ = PHP_UU_ENC(*(s + 2) & 077); s += 3; } if (len == 45) { *p++ = '\n'; } } if (s < e) { if (len == 45) { *p++ = PHP_UU_ENC(e - s); len = 0; } *p++ = PHP_UU_ENC(*s >> 2); *p++ = PHP_UU_ENC_C2(s); *p++ = ((e - s) > 1) ? PHP_UU_ENC_C3(s) : PHP_UU_ENC('\0'); *p++ = ((e - s) > 2) ? PHP_UU_ENC(*(s + 2) & 077) : PHP_UU_ENC('\0'); } if (len < 45) { *p++ = '\n'; } *p++ = PHP_UU_ENC('\0'); *p++ = '\n'; *p = '\0'; return (p - *dest); } PHPAPI int php_uudecode(char *src, int src_len, char **dest) { int len, total_len=0; char *s, *e, *p, *ee; p = *dest = emalloc(ceil(src_len * 0.75) + 1); s = src; e = src + src_len; while (s < e) { if ((len = PHP_UU_DEC(*s++)) <= 0) { break; } total_len += len; ee = s + (len == 45 ? 60 : (int) floor(len * 1.33)); while (s < ee) { *p++ = PHP_UU_DEC(*s) << 2 | PHP_UU_DEC(*(s + 1)) >> 4; *p++ = PHP_UU_DEC(*(s + 1)) << 4 | PHP_UU_DEC(*(s + 2)) >> 2; *p++ = PHP_UU_DEC(*(s + 2)) << 6 | PHP_UU_DEC(*(s + 3)); s += 4; } if (len < 45) { break; } /* skip \n */ s++; } if ((len = total_len > (p - *dest))) { *p++ = PHP_UU_DEC(*s) << 2 | PHP_UU_DEC(*(s + 1)) >> 4; if (len > 1) { *p++ = PHP_UU_DEC(*(s + 1)) << 4 | PHP_UU_DEC(*(s + 2)) >> 2; if (len > 2) { *p++ = PHP_UU_DEC(*(s + 2)) << 6 | PHP_UU_DEC(*(s + 3)); } } } *(*dest + total_len) = '\0'; return total_len; } /* {{{ proto string uuencode(string data) uuencode a string */ PHP_FUNCTION(uuencode) { char *src, *dst; int src_len, dst_len; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &src, &src_len) == FAILURE || src_len < 1) { RETURN_FALSE; } dst_len = php_uuencode(src, src_len, &dst); RETURN_STRINGL(dst, dst_len, 0); } /* }}} */ /* {{{ proto string uudecode(string data) decode a uuencoded string */ PHP_FUNCTION(uudecode) { char *src, *dst; int src_len, dst_len; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &src, &src_len) == FAILURE || src_len < 1) { RETURN_FALSE; } dst_len = php_uudecode(src, src_len, &dst); RETURN_STRINGL(dst, dst_len, 0); } /* }}} */ Index: php-src/ext/standard/php_uuencode.h +++ php-src/ext/standard/php_uuencode.h /* +----------------------------------------------------------------------+ | PHP Version 4 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2003 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.0 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_0.txt. | | If you did not receive a copy of the PHP license and are unable to | | obtain it through the world-wide-web, please send a note to | | license@php.net so we can mail you a copy immediately. | +----------------------------------------------------------------------+ | Author: Ilia Alshanetsky <ilia@php.net> | +----------------------------------------------------------------------+ */ /* $Id: php_uuencode.h,v 1.1 2003/10/27 05:35:41 iliaa Exp $ */ #ifndef PHP_UUENCODE_H #define PHP_UUENCODE_H PHP_FUNCTION(uudecode); PHP_FUNCTION(uuencode); PHPAPI int php_uudecode(char *src, int src_len, char **dest); PHPAPI int php_uuencode(char *src, int src_len, char **dest); #endif /* PHP_UUENCODE_H */ /* * Local variables: * tab-width: 4 * c-basic-offset: 4 * End: */
« previous php.cvs (#24293) next »