/*
* ltoza, ltozan - long to zero-padded ascii conversions
*
* These functions exist only because there is no portable way
* to do this with printf and there may be no way do it at all
* with printf on V7, due to a bug in V7's printf.
*/
#define RADIX 10
/*
* convert value to at most width characters in outstr, padding with
* zeros on the left (after any sign); do not terminate with a NUL.
* returns true iff the value fits in width characters.
*/
int /* boolean */
ltozan(outstr, value, width)
char *outstr;
long value;
int width;
{
register char *op = outstr;
register long wval = value;
register int wwid = width;
if (wval < 0 && wwid > 0) {
*op++ = '-';
--wwid;
wval = -wval; /* fails on smallest int; tough */
}
op += wwid - 1; /* find right end */
while (wwid-- > 0) { /* generate "wwid" digits */
*op-- = wval % RADIX + '0';
wval /= RADIX;
}
return wval == 0;
}
/*
* convert value to at most width characters in outstr, padding with
* zeros on the left (after any sign); terminate with a NUL.
*/
int /* boolean */
ltoza(outstr, value, width)
register char *outstr; /* char outstr[width+1]; */
long value;
register int width;
{
register int fits = ltozan(outstr, value, width);
outstr[width] = '\0';
return fits;
}
syntax highlighted by Code2HTML, v. 0.9.1