[PHP-dev 958]Re: Signal11で落ちる(php-src/ext/standard/

NAKAMURA Takeshi 1yen @ sh.rim.or.jp
2003年 12月 24日 (水) 08:24:36 JST


仲村です。

 とりあえず、動くのを書きましたが、
空行を読む動作はまだ良いとして... まともなプログラム希望。
# 久しぶりに ddd とか、関数名を探すために始めて cc -S とか使いました。

On Tue, Dec 23, 2003 at 09:45:33PM +0900,
 NAKAMURA Takeshi wrote:

>>  ただ、空行があるとそれから先を読まなかったり
>> 「文字,文字,文字,」と、デリミタのすぐ後が行末だと ("文字","文字","文字")
>> と、3つしか帰ってこないようです。
>> 空行の後もそのまま読んだり、("文字","文字","文字","") と、4つ
>> 返すことはできないでしょうか?

Index: ext/standard/file.c
===================================================================
RCS file: /cvs/php/php-src/ext/standard/file.c,v
retrieving revision 1.279.2.49
diff -u -r1.279.2.49 file.c
--- ext/standard/file.c	23 Dec 2003 11:06:42 -0000	1.279.2.49
+++ ext/standard/file.c	23 Dec 2003 23:19:33 -0000
@@ -2284,9 +2284,21 @@
 
 	if (!enclosure || !(p = _php_fgetcsv_find_enclosure(s, (e - s), enclosure))) {
 no_enclosure:
-		while ((p = memchr(s, delimiter, (e - s)))) {
-			CSV_ADD_ENTRY(s, p, s);
-			s = p + 1;
+		/** is enpty line? **/
+		if( s == e ){
+			CSV_ADD_ENTRY(s, 0, 0);
+		}else{
+			while ((p = memchr(s, delimiter, (e - s)))){
+				printf(" p: %s", p);
+				CSV_ADD_ENTRY(s, p, s);
+				s = p + 1;
+
+				/***** ad hock ******/
+				/** Please help me **/
+				if ( s == e ){
+					CSV_ADD_ENTRY(s, 0, 0);
+				}
+			}
 		}
 	} else {
 		char *p2=NULL;

----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+
 関西沖縄青年の集い がじまるの会 手伝い 一人だけの勝手に神奈川支部
 仲村 武 <1yen @ sh.rim.or.jp>


PHP-dev メーリングリストの案内