diff options
| author | Joseph Hunkeler <jhunkeler@gmail.com> | 2025-02-12 16:52:52 -0500 | 
|---|---|---|
| committer | Joseph Hunkeler <jhunkeler@gmail.com> | 2025-02-12 16:52:52 -0500 | 
| commit | 9da7ba82e2d922f5eb4ee257c04e3c4c912592a1 (patch) | |
| tree | 3b19fd959ff7b21f894857d5b56111fbdd2ba947 | |
| parent | 83e817f0bf1b5c02b6f09f9fc7b5ebc25b7aa815 (diff) | |
| download | stasis-9da7ba82e2d922f5eb4ee257c04e3c4c912592a1.tar.gz | |
Add debug statements to template.c
| -rw-r--r-- | src/lib/core/template.c | 43 | 
1 files changed, 27 insertions, 16 deletions
| diff --git a/src/lib/core/template.c b/src/lib/core/template.c index 879773d..f3eab62 100644 --- a/src/lib/core/template.c +++ b/src/lib/core/template.c @@ -20,6 +20,7 @@ struct tplfunc_frame *tpl_pool_func[1024] = {0};  unsigned tpl_pool_func_used = 0;  extern void tpl_reset() { +    SYSDEBUG("%s", "Resetting template engine");      tpl_free();      tpl_pool_used = 0;      tpl_pool_func_used = 0; @@ -31,19 +32,23 @@ void tpl_register_func(char *key, void *tplfunc_ptr, int argc, void *data_in) {      frame->argc = argc;      frame->func = tplfunc_ptr;      frame->data_in = data_in; +    SYSDEBUG("Registering function:\n\tkey=%s\n\targc=%d\n\tfunc=%p\n\tdata_in=%p", frame->key, frame->argc, frame->func, frame->data_in);      tpl_pool_func[tpl_pool_func_used] = frame;      tpl_pool_func_used++;  }  int tpl_key_exists(char *key) { +    SYSDEBUG("Key '%s' exists?", key);      for (size_t i = 0; i < tpl_pool_used; i++) {          if (tpl_pool[i]->key) {              if (!strcmp(tpl_pool[i]->key, key)) { +                SYSDEBUG("%s", "YES");                  return true;              }          }      } +    SYSDEBUG("%s", "NO");      return false;  } @@ -51,6 +56,7 @@ void tpl_register(char *key, char **ptr) {      struct tpl_item *item = NULL;      int replacing = 0; +    SYSDEBUG("Registering string:\n\tkey=%s\n\tptr=%s", key, *ptr ? *ptr : "NOT SET");      if (tpl_key_exists(key)) {          for (size_t i = 0; i < tpl_pool_used; i++) {              if (tpl_pool[i]->key) { @@ -61,7 +67,9 @@ void tpl_register(char *key, char **ptr) {              }          }          replacing = 1; +        SYSDEBUG("%s", "Item will be replaced");      } else { +        SYSDEBUG("%s", "Creating new item");          item = calloc(1, sizeof(*item));          item->key = strdup(key);      } @@ -73,6 +81,7 @@ void tpl_register(char *key, char **ptr) {      item->ptr = ptr;      if (!replacing) { +        SYSDEBUG("Registered tpl_item at index %u:\n\tkey=%s\n\tptr=%s", tpl_pool_used, item->key, *item->ptr);          tpl_pool[tpl_pool_used] = item;          tpl_pool_used++;      } @@ -83,27 +92,26 @@ void tpl_free() {          struct tpl_item *item = tpl_pool[i];          if (item) {              if (item->key) { -#ifdef DEBUG -                SYSERROR("freeing template item key: %s", item->key); -#endif +                SYSDEBUG("freeing template item key: %s", item->key);                  guard_free(item->key);              } -#ifdef DEBUG -            SYSERROR("freeing template item: %p", item); -#endif +            SYSDEBUG("freeing template item: %p", item);              item->ptr = NULL;          }          guard_free(item);      }      for (unsigned i = 0; i < tpl_pool_func_used; i++) {          struct tplfunc_frame *item = tpl_pool_func[i]; +        SYSDEBUG("freeing template function key: %s", item->key);          guard_free(item->key); +        SYSDEBUG("freeing template item: %p", item);          guard_free(item);      }  }  char *tpl_getval(char *key) {      char *result = NULL; +    SYSDEBUG("Getting value of template string: %s", key);      for (size_t i = 0; i < tpl_pool_used; i++) {          if (tpl_pool[i]->key) {              if (!strcmp(tpl_pool[i]->key, key)) { @@ -116,6 +124,7 @@ char *tpl_getval(char *key) {  }  struct tplfunc_frame *tpl_getfunc(char *key) { +    SYSDEBUG("Getting function frame: %s", key);      struct tplfunc_frame *result = NULL;      for (size_t i = 0; i < tpl_pool_func_used; i++) {          if (tpl_pool_func[i]->key) { @@ -131,9 +140,8 @@ struct tplfunc_frame *tpl_getfunc(char *key) {  static int grow(size_t z, size_t *output_bytes, char **output) {      if (z >= *output_bytes) {          size_t new_size = *output_bytes + z + 1; -#ifdef DEBUG -        fprintf(stderr, "template output buffer new size: %zu\n", new_size); -#endif +        SYSDEBUG("template output buffer new size: %zu\n", new_size); +          char *tmp = realloc(*output, new_size);          if (!tmp) {              perror("realloc failed"); @@ -178,6 +186,7 @@ char *tpl_render(char *str) {              }              // Read key name +            SYSDEBUG("%s", "Reading key");              size_t key_len = 0;              while (isalnum(pos[off]) || pos[off] != '}') {                  if (isspace(pos[off]) || isblank(pos[off])) { @@ -189,6 +198,7 @@ char *tpl_render(char *str) {                  key_len++;                  off++;              } +            SYSDEBUG("Key is %s", key);              char *type_stop = NULL;              type_stop = strchr(key, ':'); @@ -197,8 +207,10 @@ char *tpl_render(char *str) {              int do_func = 0;              if (type_stop) {                  if (!strncmp(key, "env", type_stop - key)) { +                    SYSDEBUG("%s", "Will render as value of environment variable");                      do_env = 1;                  } else if (!strncmp(key, "func", type_stop - key)) { +                    SYSDEBUG("%s", "Will render as output from function");                      do_func = 1;                  }              } @@ -260,12 +272,14 @@ char *tpl_render(char *str) {                          fprintf(stderr, "%s returned non-zero status: %d\n", frame->key, func_status);                      }                      value = strdup(func_result ? func_result : ""); +                    SYSDEBUG("Returned from function: %s (status: %d)\nData OUT\n--------\n'%s'", k, func_status, value);                      guard_free(func_result);                  }                  GENERIC_ARRAY_FREE(params);              } else {                  // Read replacement value                  value = strdup(tpl_getval(key) ? tpl_getval(key) : ""); +                SYSDEBUG("Rendered:\nData\n----\n'%s'", value);              }          } @@ -280,16 +294,11 @@ char *tpl_render(char *str) {              output[z] = 0;          } -#ifdef DEBUG -        fprintf(stderr, "z=%zu, output_bytes=%zu\n", z, output_bytes); -#endif          output[z] = pos[off];          z++;      } -#ifdef DEBUG -    fprintf(stderr, "template output length: %zu\n", strlen(output)); -    fprintf(stderr, "template output bytes: %zu\n", output_bytes); -#endif +    SYSDEBUG("template output length: %zu", strlen(output)); +    SYSDEBUG("template output bytes: %zu", output_bytes);      return output;  } @@ -301,6 +310,7 @@ int tpl_render_to_file(char *str, const char *filename) {      }      // Open the destination file for writing +    SYSDEBUG("Rendering to %s", filename);      FILE *fp = fopen(filename, "w+");      if (!fp) {          guard_free(result); @@ -310,6 +320,7 @@ int tpl_render_to_file(char *str, const char *filename) {      // Write rendered string to file      fprintf(fp, "%s", result);      fclose(fp); +    SYSDEBUG("%s", "Rendered successfully");      guard_free(result);      return 0; | 
