/*
* static prototypes
*/
-static int match (char *, char *);
+static int match (char *, char *) PURE;
static char *get_x400_friendly (char *, char *, int);
static int get_x400_comp (char *, char *, char *, int);
* copy a number to the destination subject to a maximum width
*/
void
-cpnumber(charstring_t dest, int num, unsigned int wid, char fill, size_t max) {
- if (wid < (num >= 0 ? max : max-1)) {
+cpnumber(charstring_t dest, int num, int wid, char fill, size_t max) {
+ /* Maybe we should handle left padding at some point? */
+ if (wid == 0)
+ return;
+ if (wid < 0)
+ wid = -wid; /* OK because wid originally a short. */
+ if ((size_t)wid < (num >= 0 ? max : max-1)) {
/* Build up the string representation of num in reverse. */
charstring_t rev = charstring_create (0);
int i = num >= 0 ? num : -num;
void
cptrimmed(charstring_t dest, char *str, int wid, char fill, size_t max) {
int remaining; /* remaining output width available */
- int rjust;
+ bool rjust;
struct charstring *trimmed;
size_t end; /* number of input bytes remaining in str */
#ifdef MULTIBYTE_SUPPORT
char *altstr = NULL;
#endif
char *sp; /* current position in source string */
- int prevCtrl = 1;
/* get alignment */
- rjust = 0;
+ rjust = false;
if ((remaining = wid) < 0) {
remaining = -remaining;
- rjust++;
+ rjust = true;
}
if (remaining > (int) max) { remaining = max; }
trimmed = rjust ? charstring_create(remaining) : dest;
+ bool prevCtrl = true;
if ((sp = str)) {
#ifdef MULTIBYTE_SUPPORT
if (mbtowc(NULL, NULL, 0)) {} /* reset shift state */
remaining--;
}
- prevCtrl = 1;
+ prevCtrl = true;
continue;
}
- prevCtrl = 0;
+ prevCtrl = false;
#ifdef MULTIBYTE_SUPPORT
if (w >= 0 && remaining >= w) {
char *sp;
char *savestr, *str;
char buffer[NMH_BUFSIZ], buffer2[NMH_BUFSIZ];
- int i, c, rjust;
+ int i, c;
+ bool rjust;
int value;
time_t t;
size_t max;
break;
case FT_LITF:
sp = fmt->f_text;
- rjust = 0;
+ rjust = false;
i = fmt->f_width;
if (i < 0) {
i = -i;
- rjust++; /* XXX should do something with this */
+ rjust = true; /* XXX should do something with this */
}
while ((c = *sp++) && --i >= 0 && charstring_chars (scanlp) < max) {
charstring_push_back (scanlp, c);
if (str) charstring_push_back_chars (scanlp, str, strlen (str), 0);
break;
case FT_STRFW:
- adios (NULL, "internal error (FT_STRFW)");
+ die("internal error (FT_STRFW)");
case FT_NUM: {
int num = value;
str = buffer;
while (isspace((unsigned char) *str))
str++;
- rjust = 0;
+ rjust = false;
if ((i = fmt->f_width) < 0) {
i = -i;
- rjust++;
+ rjust = true;
}
if (!rjust && i > 0 && (int) strlen(str) > i)
case FT_LV_RCLOCK:
if ((value = fmt->f_comp->c_tws->tw_clock) == 0)
value = dmktime(fmt->f_comp->c_tws);
- value = time((time_t *) 0) - value;
+ value = time(NULL) - value;
break;
case FT_LV_DAYF:
if (!(((tws = fmt->f_comp->c_tws)->tw_flags) & (TW_SEXP|TW_SIMP)))
*comp->c_tws = *tws;
comp->c_flags &= ~CF_TRUE;
} else if ((comp->c_flags & CF_DATEFAB) == 0) {
- memset (comp->c_tws, 0, sizeof *comp->c_tws);
+ ZERO(comp->c_tws);
comp->c_flags = CF_TRUE;
}
comp->c_flags |= CF_PARSED;
indent = strlen (sp);
wid -= indent;
if (wid <= 0) {
- adios(NULL, "putaddr -- num register (%d) must be greater "
+ die("putaddr -- num register (%d) must be greater "
"than label width (%d)", value, indent);
}
while ((c = *sp++) && charstring_chars (scanlp) < max) {
}
}
- return (NULL);
+ return NULL;
}