+static char *
+fmt_trim(char *str, int width)
+{
+ char *xp;
+ int ljust, i;
+ char buffer[BUFSIZ];
+ char *dst;
+
+ strncpy(buffer, str, sizeof(buffer));
+ dst = buffer;
+ dst[sizeof(buffer)-1] = '\0';
+ while (isspace(*dst)) {
+ dst++;
+ }
+ ljust = 0;
+ if ((i = width) < 0) {
+ i = -i;
+ ljust++;
+ }
+
+ if (!ljust && i > 0 && (int)strlen(dst) > i) {
+ dst[i] = '\0';
+ }
+ xp = dst;
+ xp += strlen(dst) - 1;
+ while (xp > dst && isspace(*xp)) {
+ *xp-- = '\0';
+ }
+ if (ljust && i > 0 && (int)strlen(dst) > i) {
+ dst += strlen(dst) - i;
+ }
+ strncpy(str, dst, strlen(str) + 1);
+ return str;
+}
+