void imprimirMensagemOculpa(const char *linha) { int lendoPalavra = 0; while (*linha != '\n') { if (ESPACO(*linha)) { lendoPalavra = 0; } else if (!lendoPalavra) { putc(*linha, stdout); lendoPalavra = 1; } linha++; } putc('\n', stdout); }
/* **************************************************************** * Trata o comando word (.wo). * **************************************************************** */ void trtwo (char *arg) { char *cp, *palvr; /* * Le a palavra. */ palvr = lepalvr (arg, &cp); /* * Coloca a palavra na linha. */ poepalvr (palvr, PALAVRA); while (ESPACO (*cp)) cp++; if (*cp != NOCHAR) errcmd (); } /* end trtwo */
/* **************************************************************** * Le uma palavra. * **************************************************************** */ char * lepalvr (char *arg, char **cpp) { register char *cp; register char c; static char palvr[BLSZ]; cp = palvr; if ((c = *arg) != '"' && c != '\'') { while (!ESPACO (*arg) && *arg != NOCHAR) *cp++ = *arg++; } else { /* * A palavra esta' entre aspas ou plics. */ while (*++arg != c && *arg != NOCHAR) { if (*arg == '\\' && *(arg + 1) == c) *cp++ = *++arg; else *cp++ = *arg; } if (*arg == c) arg++; else errcmd (); } *cp = NOCHAR; *cpp = arg; return (palvr); } /* end lepalvr */
/* **************************************************************** * Prepara a linha para formatacao. * **************************************************************** */ char * poepalvr (char *palvr, int opt) { char *cp; register int nc, cont; /* * O proximo ponteiro de buflin aponta para a palavra. */ buflin[contpalvr].p_palavra = cptrab; if (tpchar == NEGRITO) { buflin[contpalvr].p_negrito = TRUE; rpt2++; } else buflin[contpalvr].p_negrito = FALSE; if (tpchar == ITALICO) buflin[contpalvr].p_italico = TRUE; else buflin[contpalvr].p_italico = FALSE; if (ul > 0) { buflin[contpalvr].p_sublinhado = TRUE; rpt3++; } else buflin[contpalvr].p_sublinhado = FALSE; cp = palvr; nc = 0; /* * Coloca a palavra em buftrab. */ if (opt == CADEIA) { while (*cp != NOCHAR && !ESPACO (*cp)) nc += identcarac (&cp); } else /* opt == PALAVRA */ { while (*cp != NOCHAR) nc += identcarac (&cp); } *cptrab++ = NOCHAR; /* * Verifica fim de linha. */ cont = contcarac + nc; if (cont < tamlin) { /* * Meio da linha. */ contcarac += (nc + ((iptit && contpalvr == 0) ? 0 : 1)); contpalvr++; } else { if (cont == tamlin || contpalvr == 0) { /* * Palavra maior que a linha, ou * nao precisa formatar. */ contpalvr++; trtlin (QUEBRA); } else { /* * Ultima palavra nao cabe na linha. */ if (tpchar == NEGRITO) rpt2--; if (ul > 0) rpt3--; trtlin (FORMATA); strcpy (buftrab, buflin[contpalvr].p_palavra); if (buflin[0].p_negrito = buflin[contpalvr].p_negrito) rpt2++; if (buflin[0].p_sublinhado = buflin[contpalvr].p_sublinhado) rpt3++; cptrab = strend (buftrab) + 1; contcarac = nc + 1; contpalvr = 1; } } return (cp); } /* end poepalvr */