diff options
| author | jvoisin | 2017-12-01 16:56:58 +0100 |
|---|---|---|
| committer | jvoisin | 2017-12-01 16:56:58 +0100 |
| commit | 5efe641fefc74dfc908efd43d862477e91d904a9 (patch) | |
| tree | 4c096d28c2059cfe0866e223b1106f4032697c63 /src | |
| parent | c041a7ab3b6daa75edf9e7fa07acc1422af41d44 (diff) | |
Vastly simplify the dumping process
Diffstat (limited to 'src')
| -rw-r--r-- | src/sp_utils.c | 31 |
1 files changed, 2 insertions, 29 deletions
diff --git a/src/sp_utils.c b/src/sp_utils.c index 28c8a8b..73ad528 100644 --- a/src/sp_utils.c +++ b/src/sp_utils.c | |||
| @@ -132,45 +132,18 @@ int sp_log_request(const char* folder) { | |||
| 132 | for (size_t i = 0; i < (sizeof(zones) / sizeof(zones[0])) - 1; i++) { | 132 | for (size_t i = 0; i < (sizeof(zones) / sizeof(zones[0])) - 1; i++) { |
| 133 | zval* variable_value; | 133 | zval* variable_value; |
| 134 | zend_string* variable_key; | 134 | zend_string* variable_key; |
| 135 | size_t params_len = strlen(zones[i].str) + 1; | ||
| 136 | char* param; | ||
| 137 | size_t size_max = 2048; | ||
| 138 | 135 | ||
| 139 | if (Z_TYPE(PG(http_globals)[zones[i].key]) == IS_UNDEF) { | 136 | if (Z_TYPE(PG(http_globals)[zones[i].key]) == IS_UNDEF) { |
| 140 | continue; | 137 | continue; |
| 141 | } | 138 | } |
| 142 | 139 | ||
| 143 | HashTable* ht = Z_ARRVAL(PG(http_globals)[zones[i].key]); | 140 | HashTable* ht = Z_ARRVAL(PG(http_globals)[zones[i].key]); |
| 144 | 141 | fprintf(file, "%s:", zones[i].str); | |
| 145 | // Compute the size of the allocation | ||
| 146 | ZEND_HASH_FOREACH_STR_KEY_VAL(ht, variable_key, variable_value) { | 142 | ZEND_HASH_FOREACH_STR_KEY_VAL(ht, variable_key, variable_value) { |
| 147 | params_len += snprintf(NULL, 0, "%s=%s&", ZSTR_VAL(variable_key), | 143 | fprintf(file, "%s=%s&", ZSTR_VAL(variable_key), Z_STRVAL_P(variable_value)); |
| 148 | Z_STRVAL_P(variable_value)); | ||
| 149 | } | 144 | } |
| 150 | ZEND_HASH_FOREACH_END(); | 145 | ZEND_HASH_FOREACH_END(); |
| 151 | |||
| 152 | params_len = params_len>size_max?size_max:params_len; | ||
| 153 | |||
| 154 | #define NCAT_AND_DEC(a, b, c) strncat(a, b, c); c -= strlen(b); | ||
| 155 | |||
| 156 | // Allocate and copy the data | ||
| 157 | // FIXME Why are we even allocating? | ||
| 158 | param = ecalloc(params_len, 1); | ||
| 159 | NCAT_AND_DEC(param, zones[i].str, params_len); | ||
| 160 | NCAT_AND_DEC(param, ":", params_len); | ||
| 161 | ZEND_HASH_FOREACH_STR_KEY_VAL(ht, variable_key, variable_value) { | ||
| 162 | NCAT_AND_DEC(param, ZSTR_VAL(variable_key), params_len); | ||
| 163 | NCAT_AND_DEC(param, "=", params_len); | ||
| 164 | NCAT_AND_DEC(param, Z_STRVAL_P(variable_value), params_len); | ||
| 165 | NCAT_AND_DEC(param, "&", params_len); | ||
| 166 | } | ||
| 167 | ZEND_HASH_FOREACH_END(); | ||
| 168 | |||
| 169 | param[strlen(param) - 1] = '\0'; | ||
| 170 | |||
| 171 | fputs(param, file); | ||
| 172 | fputs("\n", file); | 146 | fputs("\n", file); |
| 173 | efree(param); | ||
| 174 | } | 147 | } |
| 175 | fclose(file); | 148 | fclose(file); |
| 176 | 149 | ||
