X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=interpolate.c;h=fb30694f4741147bba62350f704111d3afbf8133;hb=d016a896d4a58a53dbb98cd85ebd033771413079;hp=d82f1b51bbff4a545a2d5a0aebb91612cacd3d69;hpb=b0ed9eafb35b2330d5a96be79307f0e65547febb;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;