12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- #include "orasel.h"
- //-----------------------------------------------------------------------------
- static void out_delim(const unsigned* pl, unsigned nc)
- {
- unsigned i;
- for(i = 0; i < nc; i++) {
- unsigned j = pl[i] + 2;
- putchar('+');
- do putchar('-'); while(--j);
- }
- printf("+\n");
- }
- //-----------------------------------------------------------------------------
- void out_res(const res_t* _r)
- {
- unsigned* pl = NULL;
- unsigned nc = _r->col_n, nr = _r->row_n, i, j;
- Str** ps = _r->names;
- if(!outmode.raw) {
- pl = safe_malloc(nc * sizeof(unsigned));
- for(i = 0; i < nc; i++)
- pl[i] = ps[i]->len;
- for(j = 0; j < nr; j++) {
- ps = _r->rows[j];
- for(i = 0; i < nc; i++)
- if(pl[i] < ps[i]->len) pl[i] = ps[i]->len;
- }
- out_delim(pl, nc);
- }
- if(!outmode.hdr) {
- ps = _r->names;
- for(i = 0; i < nc; i++) {
- if(!outmode.raw) {
- printf("| %-*.*s ", pl[i], ps[i]->len, ps[i]->s);
- } else {
- if(i) putchar('\t');
- printf("%.*s", ps[i]->len, ps[i]->s);
- }
- }
- if(outmode.raw) putchar('\n');
- else {
- printf("|\n");
- out_delim(pl, nc);
- }
- }
- for(j = 0; j < nr; j++) {
- ps = _r->rows[j];
- if(!outmode.raw) {
- for(i = 0; i < nc; i++)
- printf(_r->types[i] ? "| %-*.*s " : "| %*.*s ",
- pl[i], ps[i]->len, ps[i]->s);
- printf("|\n");
- } else {
- for(i = 0; i < nc; i++) {
- if(i) putchar('\t');
- printf("%.*s", ps[i]->len, ps[i]->s);
- }
- putchar('\n');
- }
- }
- if(!outmode.raw) out_delim(pl, nc);
- }
- //-----------------------------------------------------------------------------
|