fix macro expansion
[m6w6/ext-psi] / src / token.c
index 7b303e712fa0c44ebdea49cc1d3227b8b064bc3f..18c74375fe0b84eb18cd5fadf0994e7774755762 100644 (file)
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *******************************************************************************/
 
-#include "php_psi_stdinc.h"
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#else
+# include "php_config.h"
+#endif
 
 #include <ctype.h>
 
@@ -46,9 +50,10 @@ struct psi_token *psi_token_init(token_t token_typ, const char *token_txt,
        T->col = col;
        T->line = line;
        T->file = zend_string_copy(file);
-       T->text = zend_string_init_interned(token_txt, token_len, 1);
+       T->text = psi_string_init_interned(token_txt, token_len, 1);
 #if PSI_DEBUG_TOKEN_ALLOC
-       fprintf(stderr, "PSI: token_init %p\n", T);
+       fprintf(stderr, "PSI: token_init %p\t", T);
+       psi_token_dump(NULL, T);
 #endif
        return T;
 }
@@ -57,7 +62,8 @@ void psi_token_free(struct psi_token **token_ptr) {
        if (*token_ptr) {
                struct psi_token *token = *token_ptr;
 #if PSI_DEBUG_TOKEN_ALLOC
-               fprintf(stderr, "PSI: token_free %p\n", token);
+               fprintf(stderr, "PSI: token_free %p\t", token);
+               psi_token_dump(NULL, token);
 #endif
                *token_ptr = NULL;
                zend_string_release(token->text);
@@ -71,7 +77,8 @@ struct psi_token *psi_token_copy(struct psi_token *src) {
 
        *ptr = *src;
 #if PSI_DEBUG_TOKEN_ALLOC
-       fprintf(stderr, "PSI: token_copy %p <= %p\n", ptr, src);
+       fprintf(stderr, "PSI: token_copy %p\t", ptr);
+       psi_token_dump(NULL, src);
 #endif
        ptr->text = zend_string_copy(ptr->text);
        ptr->file = zend_string_copy(ptr->file);
@@ -185,54 +192,59 @@ uint64_t psi_token_hash(struct psi_token *t, char *digest_buf) {
        return psi_hash(digest_buf, t->file->val, loc_buf, (char *) NULL);
 }
 
-void psi_token_dump(int fd, struct psi_token *t)
+void psi_token_dump(struct psi_dump *dump, struct psi_token *t)
 {
        size_t i;
 
-       dprintf(fd, "TOKEN %p (%u) ", t, t->type);
+       if (!t) {
+               PSI_DUMP(dump, "TOKEN deleted\n");
+               return;
+       }
+
+       PSI_DUMP(dump, "TOKEN %p (%u) ", t, t->type);
        if (t->type == PSI_T_EOF) {
-               dprintf(fd, "EOF");
+               PSI_DUMP(dump, "EOF");
        } else {
-               dprintf(fd, "\"");
+               PSI_DUMP(dump, "\"");
                for (i = 0; i < t->text->len; ++i) {
                        switch (t->text->val[i]) {
                        case '\0':
-                               dprintf(fd, "\\0");
+                               PSI_DUMP(dump, "\\0");
                                break;
                        case '\a':
-                               dprintf(fd, "\\a");
+                               PSI_DUMP(dump, "\\a");
                                break;
                        case '\b':
-                               dprintf(fd, "\\b");
+                               PSI_DUMP(dump, "\\b");
                                break;
                        case '\f':
-                               dprintf(fd, "\\f");
+                               PSI_DUMP(dump, "\\f");
                                break;
                        case '\n':
-                               dprintf(fd, "\\n");
+                               PSI_DUMP(dump, "\\n");
                                break;
                        case '\r':
-                               dprintf(fd, "\\r");
+                               PSI_DUMP(dump, "\\r");
                                break;
                        case '\t':
-                               dprintf(fd, "\\t");
+                               PSI_DUMP(dump, "\\t");
                                break;
                        case '\v':
-                               dprintf(fd, "\\v");
+                               PSI_DUMP(dump, "\\v");
                                break;
                        case '"':
-                               dprintf(fd, "\\\"");
+                               PSI_DUMP(dump, "\\\"");
                                break;
                        default:
                                if (isprint(t->text->val[i])) {
-                                       dprintf(fd, "%c", t->text->val[i]);
+                                       PSI_DUMP(dump, "%c", t->text->val[i]);
                                } else {
-                                       dprintf(fd, "\\x%02hhX", t->text->val[i]);
+                                       PSI_DUMP(dump, "\\x%02hhX", t->text->val[i]);
                                }
                                break;
                        }
                }
-               dprintf(fd, "\"");
+               PSI_DUMP(dump, "\"");
        }
-       dprintf(fd, " at col %u in %s on line %u\n", t->col, t->file->val, t->line);
+       PSI_DUMP(dump, " at col %u in %s on line %u\n", t->col, t->file->val, t->line);
 }