#define NOPAD s = c
#define PAD(x) while ((int)(c - s) < (x) && (c < (line + len - 1))) \
*c++ = ' '; s = c
+#define ENDLINE \
+ if (c > line) \
+ line[c - line - 1] = '\n'
#define PRINT(var, size, format, args...) \
fwd = snprintf(var, size, format, ##args); \
c += (fwd >= size) ? size : fwd;
f++;
if (!(data = mpd_lookup(*f)))
- break; /* unknown wildcard */
+ continue; /* unknown wildcard */
PRINT(c, TAIL, data->header);
PAD(data->width);
} while (*f++);
- line[c - line - 1] = '\n';
- line[c - line] = '\0';
-
+ ENDLINE;
return (c - line);
}
f++;
if (!(data = mpd_lookup(*f)))
- break;
+ continue;
data->snprint(buff, MAX_FIELD_LEN, mpp);
PRINT(c, TAIL, buff);
buff[0] = '\0';
} while (*f++);
- line[c - line - 1] = '\n';
- line[c - line] = '\0';
-
+ ENDLINE;
return (c - line);
}
f++;
if (!(data = pd_lookup(*f)))
- break; /* unknown wildcard */
+ continue; /* unknown wildcard */
PRINT(c, TAIL, data->header);
PAD(data->width);
} while (*f++);
- line[c - line - 1] = '\n';
- line[c - line] = '\0';
-
+ ENDLINE;
return (c - line);
}
f++;
if (!(data = pd_lookup(*f)))
- break;
+ continue;
data->snprint(buff, MAX_FIELD_LEN, pp);
PRINT(c, TAIL, buff);
PAD(data->width);
} while (*f++);
- line[c - line - 1] = '\n';
- line[c - line] = '\0';
-
+ ENDLINE;
return (c - line);
}
f++;
if (!(data = pgd_lookup(*f)))
- break;
+ continue;
data->snprint(buff, MAX_FIELD_LEN, pgp);
PRINT(c, TAIL, buff);
PAD(data->width);
} while (*f++);
- line[c - line - 1] = '\n';
- line[c - line] = '\0';
-
+ ENDLINE;
return (c - line);
}