Skip to content

Commit e114f32

Browse files
authored
Avoid code duplication in php_ini.c (#4512)
1 parent 6422cf6 commit e114f32

File tree

1 file changed

+20
-30
lines changed

1 file changed

+20
-30
lines changed

main/php_ini.c

+20-30
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ PHPAPI void config_zval_dtor(zval *zvalue)
172172
zend_string_release_ex(Z_STR_P(zvalue), 1);
173173
}
174174
}
175-
/* Reset / free active_ini_sectin global */
175+
/* Reset / free active_ini_section global */
176176
#define RESET_ACTIVE_INI_HASH() do { \
177177
active_ini_hash = NULL; \
178178
is_special_section = 0; \
@@ -395,6 +395,17 @@ static void php_load_zend_extension_cb(void *arg) { }
395395
#endif
396396
/* }}} */
397397

398+
static void append_ini_path(char *php_ini_search_path, int search_path_size, const char *path)
399+
{
400+
static const char paths_separator[] = { ZEND_PATHS_SEPARATOR, 0 };
401+
402+
if (*php_ini_search_path) {
403+
strlcat(php_ini_search_path, paths_separator, search_path_size);
404+
}
405+
406+
strlcat(php_ini_search_path, path, search_path_size);
407+
}
408+
398409
/* {{{ php_init_config */
399410
int php_init_config(void)
400411
{
@@ -424,7 +435,6 @@ int php_init_config(void)
424435
int search_path_size;
425436
char *default_location;
426437
char *env_location;
427-
static const char paths_separator[] = { ZEND_PATHS_SEPARATOR, 0 };
428438
#ifdef PHP_WIN32
429439
char *reg_location;
430440
char phprc_path[MAXPATHLEN];
@@ -475,31 +485,22 @@ int php_init_config(void)
475485

476486
/* Add environment location */
477487
if (env_location[0]) {
478-
if (*php_ini_search_path) {
479-
strlcat(php_ini_search_path, paths_separator, search_path_size);
480-
}
481-
strlcat(php_ini_search_path, env_location, search_path_size);
488+
append_ini_path(php_ini_search_path, search_path_size, env_location);
482489
php_ini_file_name = env_location;
483490
}
484491

485492
#ifdef PHP_WIN32
486493
/* Add registry location */
487494
reg_location = GetIniPathFromRegistry();
488495
if (reg_location != NULL) {
489-
if (*php_ini_search_path) {
490-
strlcat(php_ini_search_path, paths_separator, search_path_size);
491-
}
492-
strlcat(php_ini_search_path, reg_location, search_path_size);
496+
append_ini_path(php_ini_search_path, search_path_size, reg_location);
493497
efree(reg_location);
494498
}
495499
#endif
496500

497501
/* Add cwd (not with CLI) */
498502
if (!sapi_module.php_ini_ignore_cwd) {
499-
if (*php_ini_search_path) {
500-
strlcat(php_ini_search_path, paths_separator, search_path_size);
501-
}
502-
strlcat(php_ini_search_path, ".", search_path_size);
503+
append_ini_path(php_ini_search_path, search_path_size, ".");
503504
}
504505

505506
if (PG(php_binary)) {
@@ -511,10 +512,8 @@ int php_init_config(void)
511512
if (separator_location && separator_location != binary_location) {
512513
*(separator_location) = 0;
513514
}
514-
if (*php_ini_search_path) {
515-
strlcat(php_ini_search_path, paths_separator, search_path_size);
516-
}
517-
strlcat(php_ini_search_path, binary_location, search_path_size);
515+
append_ini_path(php_ini_search_path, search_path_size, binary_location);
516+
518517
efree(binary_location);
519518
}
520519

@@ -523,29 +522,20 @@ int php_init_config(void)
523522
default_location = (char *) emalloc(MAXPATHLEN + 1);
524523

525524
if (0 < GetWindowsDirectory(default_location, MAXPATHLEN)) {
526-
if (*php_ini_search_path) {
527-
strlcat(php_ini_search_path, paths_separator, search_path_size);
528-
}
529-
strlcat(php_ini_search_path, default_location, search_path_size);
525+
append_ini_path(php_ini_search_path, search_path_size, default_location);
530526
}
531527

532528
/* For people running under terminal services, GetWindowsDirectory will
533529
* return their personal Windows directory, so lets add the system
534530
* windows directory too */
535531
if (0 < GetSystemWindowsDirectory(default_location, MAXPATHLEN)) {
536-
if (*php_ini_search_path) {
537-
strlcat(php_ini_search_path, paths_separator, search_path_size);
538-
}
539-
strlcat(php_ini_search_path, default_location, search_path_size);
532+
append_ini_path(php_ini_search_path, search_path_size, default_location);
540533
}
541534
efree(default_location);
542535

543536
#else
544537
default_location = PHP_CONFIG_FILE_PATH;
545-
if (*php_ini_search_path) {
546-
strlcat(php_ini_search_path, paths_separator, search_path_size);
547-
}
548-
strlcat(php_ini_search_path, default_location, search_path_size);
538+
append_ini_path(php_ini_search_path, search_path_size, default_location);
549539
#endif
550540
}
551541

0 commit comments

Comments
 (0)