diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/main.c | 18 | ||||
| -rw-r--r-- | src/template.c | 11 | 
2 files changed, 24 insertions, 5 deletions
| @@ -188,6 +188,24 @@ int main(int argc, char *argv[], char *arge[]) {      msg(OMC_MSG_L1, "Initializing\n"); +    // Expose variables for use with the template engine +    // NOTE: These pointers are populated by delivery_init() so please avoid using +    // tpl_render() until then. +    tpl_register("meta.name", &ctx.meta.name); +    tpl_register("meta.version", &ctx.meta.version); +    tpl_register("meta.codename", &ctx.meta.codename); +    tpl_register("meta.mission", &ctx.meta.mission); +    tpl_register("meta.python", &ctx.meta.python); +    tpl_register("meta.python_compact", &ctx.meta.python_compact); +    tpl_register("info.release_name", &ctx.info.release_name); +    tpl_register("conda.installer_baseurl", &ctx.conda.installer_baseurl); +    tpl_register("conda.installer_name", &ctx.conda.installer_name); +    tpl_register("conda.installer_version", &ctx.conda.installer_version); +    tpl_register("conda.installer_arch", &ctx.conda.installer_arch); +    tpl_register("conda.installer_platform", &ctx.conda.installer_platform); +    tpl_register("system.arch", &ctx.system.arch); +    tpl_register("system.platform", &ctx.system.platform[DELIVERY_PLATFORM_RELEASE]); +      // Set up PREFIX/etc directory information      // The user may manipulate the base directory path with OMC_SYSCONFDIR      // environment variable diff --git a/src/template.c b/src/template.c index 335da85..fe7ef11 100644 --- a/src/template.c +++ b/src/template.c @@ -12,12 +12,12 @@  struct tpl_item {      char *key; -    char *ptr; +    char **ptr;  };  struct tpl_item *tpl_pool[1024] = {0};  unsigned tpl_pool_used = 0; -void tpl_register(char *key, char *ptr) { +void tpl_register(char *key, char **ptr) {      struct tpl_item *item = NULL;      item = calloc(1, sizeof(*item));      if (!item) { @@ -47,7 +47,7 @@ char *tpl_getval(char *key) {      for (size_t i = 0; i < tpl_pool_used; i++) {          if (tpl_pool[i]->key) {              if (!strcmp(tpl_pool[i]->key, key)) { -                result = tpl_pool[i]->ptr; +                result = *tpl_pool[i]->ptr;                  break;              }          } @@ -78,8 +78,9 @@ char *tpl_render(char *str) {          return NULL;      }      size_t output_bytes = strlen(str); -    char *output; -    char *b_close, *pos; +    char *output = NULL; +    char *b_close = NULL; +    char *pos = NULL;      pos = str;      output = calloc(output_bytes + 1, sizeof(*output)); | 
