/* * Write out a preference list. */ static void wprefs(void *sesskey, char *name, const struct keyvalwhere *mapping, int nvals, int *array) { char *buf, *p; int i, maxlen; for (maxlen = i = 0; i < nvals; i++) { const char *s = val2key(mapping, nvals, array[i]); if (s) { maxlen += (maxlen > 0 ? 1 : 0) + strlen(s); } } buf = snewn(maxlen + 1, char); p = buf; for (i = 0; i < nvals; i++) { const char *s = val2key(mapping, nvals, array[i]); if (s) { p += sprintf(p, "%s%s", (p > buf ? "," : ""), s); } } assert(p - buf == maxlen); *p = '\0'; write_setting_s(sesskey, name, buf); sfree(buf); }
/* * Write out a preference list. */ static void wprefs(void *sesskey, char *name, const struct keyval *mapping, int nvals, int *array) { char buf[80] = ""; /* XXX assumed big enough */ int l = sizeof(buf) - 1, i; buf[l] = '\0'; for (i = 0; l > 0 && i < nvals; i++) { const char *s = val2key(mapping, nvals, array[i]); if (s) { int sl = strlen(s); if (i > 0) { strncat(buf, ",", l); l--; } strncat(buf, s, l); l -= sl; } } write_setting_s(sesskey, name, buf); }