#include #include #include "cms_template.h" cms_template_args* cms_template_args_create() { cms_template_args* args = malloc(sizeof(cms_template_args)); if (!args) return NULL; args->arguments = NULL; args->argnum = 0; args->allocd = 0; return args; } cms_err* cms_template_args_append(cms_template_args* args, char* key, char* val) { args->argnum += 1; if (args->argnum > args->allocd) { args->allocd *= 2; args->arguments = realloc(args->arguments, sizeof(cms_template_arg) * args->allocd); if (!args->arguments) return cms_err_create(CMS_ERR_ALLOC, 0); } cms_template_arg arg = {key, val}; args->arguments[args->argnum - 1] = arg; return cms_err_create(CMS_ERR_NONE, NULL); } static cms_err* str_insert(char* str1, char* str2, size_t start, size_t end, size_t len) { size_t len2 = strlen(str2); return cms_err_create(CMS_ERR_NONE, NULL); } static cms_err* templatify_arg(char* str, cms_template_arg arg, size_t len) { #define OFFSET i - match_begin size_t match_begin = -1; size_t i = 0; char c; while ((c = str[i]) != 0) { if (match_begin == -1 && arg.key[0] == c) { match_begin = i; } if (match_begin != -1 && arg.key[OFFSET] == 0) { } i += 1; } #undef OFFSET return cms_err_create(CMS_ERR_NONE, NULL); } cms_err* cms_templateify(char* str, cms_template_args* args) { size_t len = strlen(str); size_t i; for (i = 0; i < args->argnum; ++i) { cms_err* err = templatify_arg(str, args->arguments[i], len); if (err) return err; } return cms_err_create(CMS_ERR_NONE, NULL); }