derick          Thu Feb 20 05:32:35 2003 EDT

  Modified files:              
    /php4       NEWS 
    /php4/ext/standard  md5.c sha1.c 
  Log:
  - Also add the optional raw output parameter to md5_file and sha1_file.
  
  
Index: php4/NEWS
diff -u php4/NEWS:1.1352 php4/NEWS:1.1353
--- php4/NEWS:1.1352    Thu Feb 20 02:13:59 2003
+++ php4/NEWS   Thu Feb 20 05:32:33 2003
@@ -20,8 +20,9 @@
 - Added lightweight streaming input abstraction to the Zend Engine scanners
   that provides uniform support for include()'ing data from PHP streams across
   all platforms (Wez, Zend Engine).
-- Added optional parameter to sha1() and md5() which makes them return 
-  the digest as binary data. (Michael Bretterklieber <[EMAIL PROTECTED]>, Derick)
+- Added optional parameter to sha1(), sha1_file(), md5() and md5_file() which
+  makes them return the digest as binary data. (Michael Bretterklieber
+  <[EMAIL PROTECTED]>, Derick)
 - Added proc_nice() function. Changes priority of the current process. (Ilia)
 - Added pcntl_getpriority() and pcntl_setpriority() functions. (Ilia)
 - Added idate(), date_sunrise() and date_sunset() functions. (Moshe Doron)
Index: php4/ext/standard/md5.c
diff -u php4/ext/standard/md5.c:1.31 php4/ext/standard/md5.c:1.32
--- php4/ext/standard/md5.c:1.31        Thu Feb 20 01:56:37 2003
+++ php4/ext/standard/md5.c     Thu Feb 20 05:32:35 2003
@@ -16,7 +16,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: md5.c,v 1.31 2003/02/20 06:56:37 derick Exp $ */
+/* $Id: md5.c,v 1.32 2003/02/20 10:32:35 derick Exp $ */
 
 /* 
  * md5.c - Copyright 1997 Lachlan Roche 
@@ -69,11 +69,13 @@
 }
 /* }}} */
 
-/* {{{ proto string md5_file(string filename)
+/* {{{ proto string md5_file(string filename [, bool raw_output])
    Calculate the md5 hash of given filename */
 PHP_NAMED_FUNCTION(php_if_md5_file)
 {
-       zval          **arg;
+       char          *arg;
+       int           arg_len;
+       zend_bool raw_output = 0;
        char          md5str[33];
        unsigned char buf[1024];
        unsigned char digest[16];
@@ -81,21 +83,19 @@
        int           n;
        FILE          *fp;
 
-       if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &arg) == FAILURE) {
-               WRONG_PARAM_COUNT;
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|b", &arg, &arg_len, 
+&raw_output) == FAILURE) {
+               return;
        }
 
-       convert_to_string_ex(arg);
-
-       if (PG(safe_mode) && (!php_checkuid(Z_STRVAL_PP(arg), NULL, 
CHECKUID_CHECK_FILE_AND_DIR))) {
+       if (PG(safe_mode) && (!php_checkuid(arg, NULL, CHECKUID_CHECK_FILE_AND_DIR))) {
                RETURN_FALSE;
        }
 
-       if (php_check_open_basedir(Z_STRVAL_PP(arg) TSRMLS_CC)) {
+       if (php_check_open_basedir(arg TSRMLS_CC)) {
                RETURN_FALSE;
        }
 
-       if ((fp = VCWD_FOPEN(Z_STRVAL_PP(arg), "rb")) == NULL) {
+       if ((fp = VCWD_FOPEN(arg, "rb")) == NULL) {
                php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to open file");
                RETURN_FALSE;
        }
@@ -115,9 +115,12 @@
 
        fclose(fp);
 
-       make_digest(md5str, digest);
-
-       RETVAL_STRING(md5str, 1);
+       if (raw_output) {
+               RETURN_STRINGL(digest, 20, 1);
+       } else {
+               make_digest(md5str, digest);
+               RETVAL_STRING(md5str, 1);
+       }
 }
 /* }}} */
 
Index: php4/ext/standard/sha1.c
diff -u php4/ext/standard/sha1.c:1.6 php4/ext/standard/sha1.c:1.7
--- php4/ext/standard/sha1.c:1.6        Thu Feb 20 01:56:37 2003
+++ php4/ext/standard/sha1.c    Thu Feb 20 05:32:35 2003
@@ -16,7 +16,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: sha1.c,v 1.6 2003/02/20 06:56:37 derick Exp $ */
+/* $Id: sha1.c,v 1.7 2003/02/20 10:32:35 derick Exp $ */
 
 #include <stdio.h>
 #include "php.h"
@@ -67,11 +67,13 @@
 
 /* }}} */
 
-/* {{{ proto string sha1_file(string filename)
+/* {{{ proto string sha1_file(string filename [, bool raw_output])
    Calculate the sha1 hash of given filename */
 PHP_FUNCTION(sha1_file)
 {
-       zval          **arg;
+       char          *arg;
+       int           arg_len;
+       zend_bool raw_output = 0;
        char          sha1str[41];
        unsigned char buf[1024];
        unsigned char digest[20];
@@ -79,21 +81,19 @@
        int           n;
        FILE          *fp;
 
-       if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &arg) == FAILURE) {
-               WRONG_PARAM_COUNT;
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|b", &arg, &arg_len, 
+&raw_output) == FAILURE) {
+               return;
        }
 
-       convert_to_string_ex(arg);
-
-       if (PG(safe_mode) && (!php_checkuid(Z_STRVAL_PP(arg), NULL, 
CHECKUID_CHECK_FILE_AND_DIR))) {
+       if (PG(safe_mode) && (!php_checkuid(arg, NULL, CHECKUID_CHECK_FILE_AND_DIR))) {
                RETURN_FALSE;
        }
 
-       if (php_check_open_basedir(Z_STRVAL_PP(arg) TSRMLS_CC)) {
+       if (php_check_open_basedir(arg TSRMLS_CC)) {
                RETURN_FALSE;
        }
 
-       if ((fp = VCWD_FOPEN(Z_STRVAL_PP(arg), "rb")) == NULL) {
+       if ((fp = VCWD_FOPEN(arg, "rb")) == NULL) {
                php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to open file");
                RETURN_FALSE;
        }
@@ -113,9 +113,12 @@
 
        fclose(fp);
 
-       make_sha1_digest(sha1str, digest);
-
-       RETVAL_STRING(sha1str, 1);
+       if (raw_output) {
+               RETURN_STRINGL(digest, 20, 1);
+       } else {
+               make_sha1_digest(sha1str, digest);
+               RETVAL_STRING(sha1str, 1);
+       }
 }
 /* }}} */
 



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to