/* Format function for bwprintf */ void bwformat ( const char *fmt, va_list va ) { char bf[12]; char ch, lz; int w; while ( ( ch = *(fmt++) ) ) { if ( ch != '%' ) bwputc( ch ); else { lz = 0; w = 0; ch = *(fmt++); switch ( ch ) { case '0': lz = 1; ch = *(fmt++); break; case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': ch = bwa2i( ch, &fmt, 10, &w ); break; } switch( ch ) { case 0: return; case 'c': bwputc( va_arg( va, char ) ); break; case 's': bwputw( w, 0, va_arg( va, char* ) ); break; case 'u': bwui2a( va_arg( va, unsigned int ), 10, bf ); bwputw( w, lz, bf ); break; case 'd': bwi2a( va_arg( va, int ), bf ); bwputw( w, lz, bf ); break; case 'x': case 'p': bwui2a( va_arg( va, unsigned int ), 16, bf ); bwputw( w, lz, bf ); break; case '%': bwputc( ch ); break; } } } }
void format ( int server, int channel, char *fmt, va_list va ) { char bf[12]; char ch, lz; int w; while ( ( ch = *(fmt++) ) ) { if ( ch != '%' ) Putc( server, channel, ch ); else { lz = 0; w = 0; ch = *(fmt++); switch ( ch ) { case '0': lz = 1; ch = *(fmt++); break; case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': ch = a2i( ch, &fmt, 10, &w ); break; } switch( ch ) { case 0: return; case 'c': Putc( server, channel, va_arg( va, char ) ); break; case 's': putw( server, channel, w, 0, va_arg( va, char* ) ); break; case 'u': ui2a( va_arg( va, unsigned int ), 10, bf ); bwputw( channel, w, lz, bf ); break; case 'd': i2a( va_arg( va, int ), bf ); putw( server, channel, w, lz, bf ); break; case 'x': ui2a( va_arg( va, unsigned int ), 16, bf ); putw( server, channel, w, lz, bf ); break; case '%': Putc( server, channel, ch ); break; } } } }