char *p, *q;
char buffer[1024];
+ if (outlen <= 1) return 0;
+
if (!radius_xlat(buffer, sizeof(buffer), fmt, request, func)) {
*out = '\0';
return 0;
}
+/*
+ * Convert a string to uppercase
+ */
+static size_t xlat_uc(UNUSED void *instance, REQUEST *request,
+ char *fmt, char *out, size_t outlen,
+ UNUSED RADIUS_ESCAPE_STRING func)
+{
+ char *p, *q;
+ char buffer[1024];
+
+ if (outlen <= 1) return 0;
+
+ if (!radius_xlat(buffer, sizeof(buffer), fmt, request, func)) {
+ *out = '\0';
+ return 0;
+ }
+
+ for (p = buffer, q = out; *p != '\0'; p++, outlen--) {
+ if (outlen <= 1) break;
+
+ *(q++) = toupper((int) *p);
+ }
+
+ *q = '\0';
+
+ return strlen(out);
+}
+
/*
* Compare two xlat_t structs, based ONLY on the module name.
c = xlat_find("tolower");
rad_assert(c != NULL);
c->internal = TRUE;
+
+ xlat_register("toupper", xlat_uc, &xlat_inst[0]);
+ c = xlat_find("toupper");
+ rad_assert(c != NULL);
+ c->internal = TRUE;
}
/*