Logo Search packages:      
Sourcecode: bglibs version File versions

int str_catsnumw ( str s,
long  in,
unsigned  width,
char  pad,
unsigned  base,
const char *  digits 
)

Append a signed integer, optionally padded to a minimum width

Definition at line 21 of file catsnum.c.

References len, s, and str_realloc.

Referenced by str_cati(), and str_catiw().

{
  long tmp;
  unsigned size;
  unsigned i;
  unsigned sign;
  unsigned padsize;
  
  sign = 0;
  if (in < 0) {
    sign = 1;
    in = -in;
  }
  if (in < (long)base)
    size = 1;
  else
    for (tmp = in, size = 0; tmp; tmp /= base, ++size) ;
  padsize = (width > sign+size) ? width - sign+size : 0;
  if (!str_realloc(s, s->len + padsize+sign+size)) return 0;

  /* If the padding is a zero, put it after the sign, otherwise before */
  if (pad != '0')
    while (padsize--) s->s[s->len++] = pad;
  if (sign) s->s[s->len++] = pad;
  if (pad == '0')
    while (padsize--) s->s[s->len++] = pad;
  for (i = size; i-- > 0; in /= base)
    s->s[s->len+i] = digits[in % base];
  s->len += size;
  s->s[s->len] = 0;
  return 1;
}


Generated by  Doxygen 1.6.0   Back to index