@@ -2328,35 +2328,32 @@ PHP_METHOD(SplFileObject, fgetcsv)
2328
2328
2329
2329
CHECK_SPL_FILE_OBJECT_IS_INITIALIZED (intern );
2330
2330
2331
- switch (ZEND_NUM_ARGS ()) {
2332
- case 3 :
2333
- if (esc_len > 1 ) {
2334
- zend_argument_value_error (3 , "must be empty or a single character" );
2331
+ if (delim ) {
2332
+ if (d_len != 1 ) {
2333
+ zend_argument_value_error (1 , "must be a single character" );
2335
2334
RETURN_THROWS ();
2336
2335
}
2337
- if (esc_len == 0 ) {
2338
- escape = PHP_CSV_NO_ESCAPE ;
2339
- } else {
2340
- escape = (unsigned char ) esc [0 ];
2341
- }
2342
- ZEND_FALLTHROUGH ;
2343
- case 2 :
2336
+ delimiter = delim [0 ];
2337
+ }
2338
+ if (enclo ) {
2344
2339
if (e_len != 1 ) {
2345
2340
zend_argument_value_error (2 , "must be a single character" );
2346
2341
RETURN_THROWS ();
2347
2342
}
2348
2343
enclosure = enclo [0 ];
2349
- ZEND_FALLTHROUGH ;
2350
- case 1 :
2351
- if (d_len != 1 ) {
2352
- zend_argument_value_error (1 , "must be a single character" );
2344
+ }
2345
+ if ( esc ) {
2346
+ if (esc_len > 1 ) {
2347
+ zend_argument_value_error (3 , "must be empty or a single character" );
2353
2348
RETURN_THROWS ();
2354
2349
}
2355
- delimiter = delim [0 ];
2356
- ZEND_FALLTHROUGH ;
2357
- case 0 :
2358
- break ;
2350
+ if (esc_len == 0 ) {
2351
+ escape = PHP_CSV_NO_ESCAPE ;
2352
+ } else {
2353
+ escape = (unsigned char ) esc [0 ];
2354
+ }
2359
2355
}
2356
+
2360
2357
if (spl_filesystem_file_read_csv (intern , delimiter , enclosure , escape , return_value ) == FAILURE ) {
2361
2358
RETURN_FALSE ;
2362
2359
}
@@ -2375,49 +2372,41 @@ PHP_METHOD(SplFileObject, fputcsv)
2375
2372
zval * fields = NULL ;
2376
2373
zend_string * eol = NULL ;
2377
2374
2378
- if (zend_parse_parameters (ZEND_NUM_ARGS (), "a|sssS" , & fields , & delim , & d_len , & enclo , & e_len , & esc , & esc_len , & eol ) == SUCCESS ) {
2375
+ if (zend_parse_parameters (ZEND_NUM_ARGS (), "a|sssS" , & fields , & delim , & d_len , & enclo , & e_len , & esc , & esc_len , & eol ) == FAILURE ) {
2376
+ RETURN_THROWS ();
2377
+ }
2379
2378
2380
- switch (ZEND_NUM_ARGS ())
2381
- {
2382
- case 5 :
2383
- case 4 :
2384
- switch (esc_len ) {
2385
- case 0 :
2386
- escape = PHP_CSV_NO_ESCAPE ;
2387
- break ;
2388
- case 1 :
2389
- escape = (unsigned char ) esc [0 ];
2390
- break ;
2391
- default :
2392
- zend_argument_value_error (4 , "must be empty or a single character" );
2393
- RETURN_THROWS ();
2394
- }
2395
- ZEND_FALLTHROUGH ;
2396
- case 3 :
2397
- if (e_len != 1 ) {
2398
- zend_argument_value_error (3 , "must be a single character" );
2399
- RETURN_THROWS ();
2400
- }
2401
- enclosure = enclo [0 ];
2402
- ZEND_FALLTHROUGH ;
2403
- case 2 :
2404
- if (d_len != 1 ) {
2405
- zend_argument_value_error (2 , "must be a single character" );
2406
- RETURN_THROWS ();
2407
- }
2408
- delimiter = delim [0 ];
2409
- ZEND_FALLTHROUGH ;
2410
- case 1 :
2411
- case 0 :
2412
- break ;
2379
+ if (delim ) {
2380
+ if (d_len != 1 ) {
2381
+ zend_argument_value_error (2 , "must be a single character" );
2382
+ RETURN_THROWS ();
2413
2383
}
2414
-
2415
- ret = php_fputcsv (intern -> u .file .stream , fields , delimiter , enclosure , escape , eol );
2416
- if (ret < 0 ) {
2417
- RETURN_FALSE ;
2384
+ delimiter = delim [0 ];
2385
+ }
2386
+ if (enclo ) {
2387
+ if (e_len != 1 ) {
2388
+ zend_argument_value_error (3 , "must be a single character" );
2389
+ RETURN_THROWS ();
2390
+ }
2391
+ enclosure = enclo [0 ];
2392
+ }
2393
+ if (esc ) {
2394
+ if (esc_len > 1 ) {
2395
+ zend_argument_value_error (4 , "must be empty or a single character" );
2396
+ RETURN_THROWS ();
2397
+ }
2398
+ if (esc_len == 0 ) {
2399
+ escape = PHP_CSV_NO_ESCAPE ;
2400
+ } else {
2401
+ escape = (unsigned char ) esc [0 ];
2418
2402
}
2419
- RETURN_LONG (ret );
2420
2403
}
2404
+
2405
+ ret = php_fputcsv (intern -> u .file .stream , fields , delimiter , enclosure , escape , eol );
2406
+ if (ret < 0 ) {
2407
+ RETURN_FALSE ;
2408
+ }
2409
+ RETURN_LONG (ret );
2421
2410
}
2422
2411
/* }}} */
2423
2412
@@ -2430,43 +2419,39 @@ PHP_METHOD(SplFileObject, setCsvControl)
2430
2419
char * delim = NULL , * enclo = NULL , * esc = NULL ;
2431
2420
size_t d_len = 0 , e_len = 0 , esc_len = 0 ;
2432
2421
2433
- if (zend_parse_parameters (ZEND_NUM_ARGS (), "|sss" , & delim , & d_len , & enclo , & e_len , & esc , & esc_len ) == SUCCESS ) {
2434
- switch (ZEND_NUM_ARGS ())
2435
- {
2436
- case 3 :
2437
- switch (esc_len ) {
2438
- case 0 :
2439
- escape = PHP_CSV_NO_ESCAPE ;
2440
- break ;
2441
- case 1 :
2442
- escape = (unsigned char ) esc [0 ];
2443
- break ;
2444
- default :
2445
- zend_argument_value_error (3 , "must be empty or a single character" );
2446
- RETURN_THROWS ();
2447
- }
2448
- ZEND_FALLTHROUGH ;
2449
- case 2 :
2450
- if (e_len != 1 ) {
2451
- zend_argument_value_error (2 , "must be a single character" );
2452
- RETURN_THROWS ();
2453
- }
2454
- enclosure = enclo [0 ];
2455
- ZEND_FALLTHROUGH ;
2456
- case 1 :
2457
- if (d_len != 1 ) {
2458
- zend_argument_value_error (1 , "must be a single character" );
2459
- RETURN_THROWS ();
2460
- }
2461
- delimiter = delim [0 ];
2462
- ZEND_FALLTHROUGH ;
2463
- case 0 :
2464
- break ;
2422
+ if (zend_parse_parameters (ZEND_NUM_ARGS (), "|sss" , & delim , & d_len , & enclo , & e_len , & esc , & esc_len ) == FAILURE ) {
2423
+ RETURN_THROWS ();
2424
+ }
2425
+
2426
+ if (delim ) {
2427
+ if (d_len != 1 ) {
2428
+ zend_argument_value_error (1 , "must be a single character" );
2429
+ RETURN_THROWS ();
2430
+ }
2431
+ delimiter = delim [0 ];
2432
+ }
2433
+ if (enclo ) {
2434
+ if (e_len != 1 ) {
2435
+ zend_argument_value_error (2 , "must be a single character" );
2436
+ RETURN_THROWS ();
2437
+ }
2438
+ enclosure = enclo [0 ];
2439
+ }
2440
+ if (esc ) {
2441
+ if (esc_len > 1 ) {
2442
+ zend_argument_value_error (3 , "must be empty or a single character" );
2443
+ RETURN_THROWS ();
2444
+ }
2445
+ if (esc_len == 0 ) {
2446
+ escape = PHP_CSV_NO_ESCAPE ;
2447
+ } else {
2448
+ escape = (unsigned char ) esc [0 ];
2465
2449
}
2466
- intern -> u .file .delimiter = delimiter ;
2467
- intern -> u .file .enclosure = enclosure ;
2468
- intern -> u .file .escape = escape ;
2469
2450
}
2451
+
2452
+ intern -> u .file .delimiter = delimiter ;
2453
+ intern -> u .file .enclosure = enclosure ;
2454
+ intern -> u .file .escape = escape ;
2470
2455
}
2471
2456
/* }}} */
2472
2457
@@ -2476,6 +2461,10 @@ PHP_METHOD(SplFileObject, getCsvControl)
2476
2461
spl_filesystem_object * intern = Z_SPLFILESYSTEM_P (ZEND_THIS );
2477
2462
char delimiter [2 ], enclosure [2 ], escape [2 ];
2478
2463
2464
+ if (zend_parse_parameters_none () == FAILURE ) {
2465
+ RETURN_THROWS ();
2466
+ }
2467
+
2479
2468
array_init (return_value );
2480
2469
2481
2470
delimiter [0 ] = intern -> u .file .delimiter ;
0 commit comments