X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=interpolate.c;h=fb30694f4741147bba62350f704111d3afbf8133;hb=6aead43db34313e6cdbc72e2f7a70f6b82c78cf2;hp=d82f1b51bbff4a545a2d5a0aebb91612cacd3d69;hpb=043c04107c5e55224b4517a43c5c40ba18a617d0;p=git.git diff --git a/interpolate.c b/interpolate.c index d82f1b51b..fb30694f4 100644 --- a/interpolate.c +++ b/interpolate.c @@ -2,11 +2,35 @@ * Copyright 2006 Jon Loeliger */ -#include - +#include "git-compat-util.h" #include "interpolate.h" +void interp_set_entry(struct interp *table, int slot, const char *value) +{ + char *oldval = table[slot].value; + char *newval = NULL; + + if (oldval) + free(oldval); + + if (value) + newval = xstrdup(value); + + table[slot].value = newval; +} + + +void interp_clear_table(struct interp *table, int ninterps) +{ + int i; + + for (i = 0; i < ninterps; i++) { + interp_set_entry(table, i, NULL); + } +} + + /* * Convert a NUL-terminated string in buffer orig * into the supplied buffer, result, whose length is reslen, @@ -25,13 +49,13 @@ */ int interpolate(char *result, int reslen, - char *orig, - struct interp *interps, int ninterps) + const char *orig, + const struct interp *interps, int ninterps) { - char *src = orig; + const char *src = orig; char *dest = result; int newlen = 0; - char *name, *value; + const char *name, *value; int namelen, valuelen; int i; char c;