static str xmlrpc_print(evi_reply_sock *sock) { str aux, *method; xmlrpc_print_s.len = 0; if (!sock) { LM_DBG("Nothing to print"); goto end; } if (sock->flags & EVI_ADDRESS) DO_PRINT(sock->address.s, sock->address.len); if (sock->flags & EVI_PORT) { DO_PRINT(":", 1); aux.s = int2str(sock->port, &aux.len); DO_PRINT(aux.s, aux.len); } if (sock->flags & EVI_PARAMS) { DO_PRINT(":", 1); method = (str *) &sock->params; DO_PRINT(method->s, method->len); } end: return xmlrpc_print_s; }
static str rmq_print(evi_reply_sock *sock) { rmq_params_t * param; rmq_print_s.len = 0; if (!sock) { LM_DBG("Nothing to print"); goto end; } if (!(sock->flags & EVI_PARAMS)) goto end; param = sock->params; if (param->flags & RMQ_PARAM_USER) { DO_PRINT(param->user.s, param->user.len - 1 /* skip 0 */); DO_PRINT("@", 1); } if (sock->flags & EVI_ADDRESS) DO_PRINT(sock->address.s, sock->address.len - 1); if (param->flags & RMQ_PARAM_EXCH) { DO_PRINT("/", 1); DO_PRINT(param->exchange.s, param->exchange.len - 1); } end: return rmq_print_s; }
static str xmlrpc_print(evi_reply_sock *sock) { str aux; struct xmlrpc_sock_param *params; xmlrpc_print_s.len = 0; if (!sock) { LM_DBG("Nothing to print\n"); goto end; } params = sock->params; if (sock->flags & EVI_ADDRESS) DO_PRINT(sock->address.s, sock->address.len); if (sock->flags & EVI_PORT) { DO_PRINT(":", 1); aux.s = int2str(sock->port, &aux.len); DO_PRINT(aux.s, aux.len); } if (sock->flags & EVI_PARAMS) { DO_PRINT(":", 1); DO_PRINT(params->method.s, params->method.len); } end: return xmlrpc_print_s; }
bool process_document(PD_FUNC get_info, PD_FUNC output, VOIDPTR info) { int tok; int size, width; int col; char page_text[10]; PD_INFO pd; char nl = '\n', sp = ' '; bool first_topic; pd.pnum = 1; pd.lnum = 0; output(PD_HEADING, &pd, info); bool first_section = true; while (get_info(PD_GET_CONTENT, &pd, info)) { if (!output(PD_START_SECTION, &pd, info)) return false; if (pd.new_page && pd.lnum != 0) { if (!output(PD_FOOTING, &pd, info)) return false; ++pd.pnum; pd.lnum = 0; if (!output(PD_HEADING, &pd, info)) return false; } else { if (pd.lnum+2 > PAGE_DEPTH-CONTENT_BREAK) { if (!output(PD_FOOTING, &pd, info)) return false; ++pd.pnum; pd.lnum = 0; if (!output(PD_HEADING, &pd, info)) return false; } else if (pd.lnum > 0) { if (!DO_PRINTN(nl, 2)) return false; pd.lnum += 2; } } if (!output(PD_SET_SECTION_PAGE, &pd, info)) return false; if (!first_section) { if (!output(PD_PRINT_SEC, &pd, info)) return false; ++pd.lnum; } first_topic = true; bool skip_blanks; while (get_info(PD_GET_TOPIC, &pd, info)) { if (!output(PD_START_TOPIC, &pd, info)) return false; skip_blanks = false; col = 0; if (!first_section) /* do not skip blanks for DocContents */ { while (pd.len > 0) { tok = find_token_length(DOC, pd.curr, pd.len, &size, nullptr); if (tok != TOK_XDOC && tok != TOK_XONLINE && tok != TOK_NL && tok != TOK_DONE) break; pd.curr += size; pd.len -= size; } if (first_topic && pd.len != 0) { if (!DO_PRINTN(nl, 1)) return false; ++pd.lnum; } } if (pd.lnum > PAGE_DEPTH-TOPIC_BREAK) { if (!output(PD_FOOTING, &pd, info)) return false; ++pd.pnum; pd.lnum = 0; if (!output(PD_HEADING, &pd, info)) return false; } else if (!first_topic) { if (!DO_PRINTN(nl, 1)) return false; pd.lnum++; } if (!output(PD_SET_TOPIC_PAGE, &pd, info)) return false; do { if (!output(PD_PERIODIC, &pd, info)) return false; tok = find_token_length(DOC, pd.curr, pd.len, &size, &width); switch (tok) { case TOK_PARA: { int indent, margin; unsigned holdlen = 0; char *holdcurr = 0; int in_link = 0; ++pd.curr; indent = *pd.curr++; margin = *pd.curr++; pd.len -= 3; if (!DO_PRINTN(sp, indent)) return false; col = indent; while (true) { if (!output(PD_PERIODIC, &pd, info)) return false; tok = find_token_length(DOC, pd.curr, pd.len, &size, &width); if (tok == TOK_NL || tok == TOK_FF) break; if (tok == TOK_DONE) { if (in_link == 0) { col = 0; ++pd.lnum; if (!DO_PRINTN(nl, 1)) return false; break; } else if (in_link == 1) { tok = TOK_SPACE; width = 1; size = 0; ++in_link; } else if (in_link == 2) { tok = TOK_WORD; width = (int) strlen(page_text); col += 8 - width; size = 0; pd.curr = page_text; ++in_link; } else if (in_link == 3) { pd.curr = holdcurr; pd.len = holdlen; in_link = 0; continue; } } if (tok == TOK_PARA) { col = 0; /* fake a nl */ ++pd.lnum; if (!DO_PRINTN(nl, 1)) return false; break; } if (tok == TOK_XONLINE || tok == TOK_XDOC) { pd.curr += size; pd.len -= size; continue; } if (tok == TOK_LINK) { pd.s = pd.curr+1; if (get_info(PD_GET_LINK_PAGE, &pd, info)) { in_link = 1; sprintf(page_text, "(p. %d)", pd.i); } else in_link = 3; holdcurr = pd.curr + size; holdlen = pd.len - size; pd.len = size - 2 - 3*sizeof(int); pd.curr += 1 + 3*sizeof(int); continue; } /* now tok is TOK_SPACE or TOK_WORD */ if (col+width > PAGE_WIDTH) { /* go to next line... */ if (!DO_PRINTN(nl, 1)) return false; if (++pd.lnum >= PAGE_DEPTH) { if (!output(PD_FOOTING, &pd, info)) return false; ++pd.pnum; pd.lnum = 0; if (!output(PD_HEADING, &pd, info)) return false; } if (tok == TOK_SPACE) width = 0; /* skip spaces at start of a line */ if (!DO_PRINTN(sp, margin)) return false; col = margin; } if (width > 0) { if (tok == TOK_SPACE) { if (!DO_PRINTN(sp, width)) return false; } else { if (!DO_PRINT(pd.curr, (size == 0) ? width : size)) return false; } } col += width; pd.curr += size; pd.len -= size; } skip_blanks = false; size = 0; width = size; break; } case TOK_NL: if (skip_blanks && col == 0) break; ++pd.lnum; if (pd.lnum >= PAGE_DEPTH || (col == 0 && pd.lnum >= PAGE_DEPTH-BLANK_BREAK)) { if (col != 0) /* if last wasn't a blank line... */ { if (!DO_PRINTN(nl, 1)) return false; } if (!output(PD_FOOTING, &pd, info)) return false; ++pd.pnum; pd.lnum = 0; skip_blanks = true; if (!output(PD_HEADING, &pd, info)) return false; } else { if (!DO_PRINTN(nl, 1)) return false; } col = 0; break; case TOK_FF: if (skip_blanks) break; if (!output(PD_FOOTING, &pd, info)) return false; col = 0; pd.lnum = 0; ++pd.pnum; if (!output(PD_HEADING, &pd, info)) return false; break; case TOK_CENTER: width = (PAGE_WIDTH - find_line_width(DOC, pd.curr, pd.len)) / 2; if (!DO_PRINTN(sp, width)) return false; break; case TOK_LINK: skip_blanks = false; if (!DO_PRINT(pd.curr+1+3*sizeof(int), size-3*sizeof(int)-2)) return false; pd.s = pd.curr+1; if (get_info(PD_GET_LINK_PAGE, &pd, info)) { width += 9; sprintf(page_text, " (p. %d)", pd.i); if (!DO_PRINT(page_text, (int) strlen(page_text))) return false; } break; case TOK_WORD: skip_blanks = false; if (!DO_PRINT(pd.curr, size)) return false; break; case TOK_SPACE: skip_blanks = false; if (!DO_PRINTN(sp, width)) return false; break; case TOK_DONE: case TOK_XONLINE: /* skip */ case TOK_XDOC: /* ignore */ break; } /* switch */ pd.curr += size; pd.len -= size; col += width; } while (pd.len > 0); get_info(PD_RELEASE_TOPIC, &pd, info); first_topic = false; } /* while */ first_section = false; } /* while */ if (!output(PD_FOOTING, &pd, info)) return false; return true; }