mike            Tue Aug  8 15:55:27 2006 UTC

  Modified files:              (Branch: PHP_5_2)
    /php-src    NEWS 
    /php-src/ext/dbase  dbase.c dbf_head.c 
  Log:
  MFH: implement #38357 (dbase_open can't open DBase 3 dbf file)
  
  
http://cvs.php.net/viewvc.cgi/php-src/NEWS?r1=1.2027.2.547.2.190&r2=1.2027.2.547.2.191&diff_format=u
Index: php-src/NEWS
diff -u php-src/NEWS:1.2027.2.547.2.190 php-src/NEWS:1.2027.2.547.2.191
--- php-src/NEWS:1.2027.2.547.2.190     Tue Aug  8 14:54:49 2006
+++ php-src/NEWS        Tue Aug  8 15:55:26 2006
@@ -8,6 +8,8 @@
 - Added an optional boolean parameter to memory_get_usage() and 
   memory_get_peak_usage() to get memory size allocated by emalloc() or real
   size of memory allocated from system. (Dmitry)
+- Implemented #38357 (dbase_open can't open DBase 3 dbf file).
+  (rodrigo at fabricadeideias dot com, Mike)
 
 - Moved extensions to PECL:
   . ext/filepro (Derick, Tony)
http://cvs.php.net/viewvc.cgi/php-src/ext/dbase/dbase.c?r1=1.74.2.2.2.3&r2=1.74.2.2.2.4&diff_format=u
Index: php-src/ext/dbase/dbase.c
diff -u php-src/ext/dbase/dbase.c:1.74.2.2.2.3 
php-src/ext/dbase/dbase.c:1.74.2.2.2.4
--- php-src/ext/dbase/dbase.c:1.74.2.2.2.3      Wed Jul 12 13:08:38 2006
+++ php-src/ext/dbase/dbase.c   Tue Aug  8 15:55:27 2006
@@ -16,7 +16,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: dbase.c,v 1.74.2.2.2.3 2006/07/12 13:08:38 tony2001 Exp $ */
+/* $Id: dbase.c,v 1.74.2.2.2.4 2006/08/08 15:55:27 mike Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -503,6 +503,13 @@
                                        }
                                }
                                break;
+                       case 'F':
+                               if (!assoc) {
+                                       add_next_index_double(return_value, 
atof(str_value));
+                               } else {
+                                       add_assoc_double(return_value, 
cur_f->db_fname, atof(str_value));
+                               }
+                               break;
                        case 'L':       /* we used to FALL THROUGH, but now we 
check for T/Y and F/N
                                                   and insert 1 or 0, 
respectively.  db_fdc is the number of
                                                   decimals, which we don't 
care about.      3/14/2001 LEW */
@@ -690,6 +697,9 @@
                case 'D':
                        cur_f->db_flen = 8;
                        break;
+               case 'F':
+                       cur_f->db_flen = 20;
+                       break;
                case 'N':
                case 'C':
                        /* field length */
@@ -862,6 +872,7 @@
                        case 'N': add_assoc_string(row, "type", "number", 1);   
        break;
                        case 'L': add_assoc_string(row, "type", "boolean", 1);  
        break;
                        case 'M': add_assoc_string(row, "type", "memo", 1);     
                break;
+                       case 'F': add_assoc_string(row, "type", "float", 1);    
 break;
                        default:  add_assoc_string(row, "type", "unknown", 1);  
        break;
                }
                
http://cvs.php.net/viewvc.cgi/php-src/ext/dbase/dbf_head.c?r1=1.14.4.1.2.1&r2=1.14.4.1.2.2&diff_format=u
Index: php-src/ext/dbase/dbf_head.c
diff -u php-src/ext/dbase/dbf_head.c:1.14.4.1.2.1 
php-src/ext/dbase/dbf_head.c:1.14.4.1.2.2
--- php-src/ext/dbase/dbf_head.c:1.14.4.1.2.1   Thu May 25 11:46:38 2006
+++ php-src/ext/dbase/dbf_head.c        Tue Aug  8 15:55:27 2006
@@ -148,6 +148,7 @@
        dbf->db_type = dbfield.dbf_type;
        switch (dbf->db_type) {
            case 'N':
+           case 'F':
                dbf->db_flen = dbfield.dbf_flen[0];
                dbf->db_fdc = dbfield.dbf_flen[1];
                break;
@@ -231,6 +232,7 @@
           case 'N':
           case 'L':
           case 'D':
+          case 'F':
                sprintf(format, "%%%ds", dbf->db_flen);
                break;
           case 'M':

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

Reply via email to