summaryrefslogtreecommitdiff
path: root/interpolate.c
diff options
context:
space:
mode:
Diffstat (limited to 'interpolate.c')
-rw-r--r--interpolate.c106
1 files changed, 0 insertions, 106 deletions
diff --git a/interpolate.c b/interpolate.c
deleted file mode 100644
index fb30694f47..0000000000
--- a/interpolate.c
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright 2006 Jon Loeliger
- */
-
-#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,
- * performing substitutions on %-named sub-strings from
- * the table, interps, with ninterps entries.
- *
- * Example interps:
- * {
- * { "%H", "example.org"},
- * { "%port", "123"},
- * { "%%", "%"},
- * }
- *
- * Returns 1 on a successful substitution pass that fits in result,
- * Returns 0 on a failed or overflowing substitution pass.
- */
-
-int interpolate(char *result, int reslen,
- const char *orig,
- const struct interp *interps, int ninterps)
-{
- const char *src = orig;
- char *dest = result;
- int newlen = 0;
- const char *name, *value;
- int namelen, valuelen;
- int i;
- char c;
-
- memset(result, 0, reslen);
-
- while ((c = *src) && newlen < reslen - 1) {
- if (c == '%') {
- /* Try to match an interpolation string. */
- for (i = 0; i < ninterps; i++) {
- name = interps[i].name;
- namelen = strlen(name);
- if (strncmp(src, name, namelen) == 0) {
- break;
- }
- }
-
- /* Check for valid interpolation. */
- if (i < ninterps) {
- value = interps[i].value;
- valuelen = strlen(value);
-
- if (newlen + valuelen < reslen - 1) {
- /* Substitute. */
- strncpy(dest, value, valuelen);
- newlen += valuelen;
- dest += valuelen;
- src += namelen;
- } else {
- /* Something's not fitting. */
- return 0;
- }
-
- } else {
- /* Skip bogus interpolation. */
- *dest++ = *src++;
- newlen++;
- }
-
- } else {
- /* Straight copy one non-interpolation character. */
- *dest++ = *src++;
- newlen++;
- }
- }
-
- return newlen < reslen - 1;
-}