if(sign && do_write(s, &sign, 1)) return -1;
if(xform && do_write(s, c->specifier->xform, xform)) return -1;
if(prec && do_pad(s, '0', prec) < 0) return -1;
if(ndigits && do_write(s, digits + dp, ndigits)) return -1;
if(sign && do_write(s, &sign, 1)) return -1;
if(xform && do_write(s, c->specifier->xform, xform)) return -1;
if(prec && do_pad(s, '0', prec) < 0) return -1;
if(ndigits && do_write(s, digits + dp, ndigits)) return -1;
} else if(c->flags & f_zero) {
if(sign && do_write(s, &sign, 1)) return -1;
if(xform && do_write(s, c->specifier->xform, xform)) return -1;
} else if(c->flags & f_zero) {
if(sign && do_write(s, &sign, 1)) return -1;
if(xform && do_write(s, c->specifier->xform, xform)) return -1;
if(prec && do_pad(s, '0', prec) < 0) return -1;
if(ndigits && do_write(s, digits + dp, ndigits)) return -1;
} else {
if(prec && do_pad(s, '0', prec) < 0) return -1;
if(ndigits && do_write(s, digits + dp, ndigits)) return -1;
} else {
if(sign && do_write(s, &sign, 1)) return -1;
if(xform && do_write(s, c->specifier->xform, xform)) return -1;
if(prec && do_pad(s, '0', prec) < 0) return -1;
if(ndigits && do_write(s, digits + dp, ndigits)) return -1;
if(sign && do_write(s, &sign, 1)) return -1;
if(xform && do_write(s, c->specifier->xform, xform)) return -1;
if(prec && do_pad(s, '0', prec) < 0) return -1;
if(ndigits && do_write(s, digits + dp, ndigits)) return -1;