From: Laurent MAZET Date: Mon, 5 Oct 2026 14:55:34 +0000 (+0200) Subject: support code character X-Git-Url: https://secure.softndesign.org/git/?a=commitdiff_plain;h=cf575dc7ea99393fe34c30b3582b3aae1c4b2b31;p=html2txt.git support code character --- diff --git a/element.c b/element.c index f3e6d18..618ea52 100644 --- a/element.c +++ b/element.c @@ -2243,6 +2243,7 @@ nchar_t elements[] = { { NULL, NULL } }; +/* check element */ int check_element (char *str, char **glyph) { nchar_t *pt = elements; @@ -2257,4 +2258,40 @@ int check_element (char *str, char **glyph) return 0; } +/* check hexa character */ +int is_hexa (char c) +{ + int ret = -1; + if ((c >= '0') && (c <= '9')) { + ret = c - '0'; + } else if ((c >= 'A') && (c <= 'F')) { + ret = 10 + c - 'A'; + } else if ((c >= 'a') && (c <= 'f')) { + ret = 10 + c - 'a'; + } + return ret; +} + +/* check code */ +int check_code (char *str, char *out) +{ + int i = 0, l = 0; + while (str[i] != ';') { + int v = 0; + if ((str[i] == '\0') || ((v = is_hexa(str[i])) < 0)) { + *out = '\0'; + return 0; + } + + out[l] = (out[l] << 4) + v; + if (i % 2 == 1) { + if (out[l] != 0) { + l++; + } + } + i++; + } + return i + 1; +} + /* vim: set ts=4 sw=4 et: */ diff --git a/element.h b/element.h index 4259494..4cd8c10 100644 --- a/element.h +++ b/element.h @@ -3,6 +3,8 @@ int check_element (char *str, char **glyph); +int check_code (char *str, char *out); + #endif /* __ELEMENT_H__ */ /* vim: set ts=4 sw=4 et: */ diff --git a/html2txt.c b/html2txt.c index 40e1643..94b1b07 100644 --- a/html2txt.c +++ b/html2txt.c @@ -134,9 +134,18 @@ int main (int argc, char *argv[]) while ((*pt) && (*pt != '>')) pt++; break; case '&': - pt += check_element (pt + 1, &glyph); + if (pt[1] == '#') { + pt += 1 + check_code (pt + 2, out); + if (*out != '\0') { + glyph = out; + } + } else { + pt += check_element (pt + 1, &glyph); + } if (glyph) { - strcpy (out, glyph); + if (glyph != out) { + strcpy (out, glyph); + } } else { strncpy (out, pt, 1); } @@ -159,7 +168,8 @@ int main (int argc, char *argv[]) /* test: html2txt.exe -i 2>&1 | grep missing */ /* test: html2txt.exe -v 2>&1 | grep missing */ /* test: html2txt.exe -i foobar 2>&1 | grep "can't open file" */ +/* test: echo 'foob

a

r' | html2txt.exe | grep '^foobar$' */ +/* test: echo 'ff;F;>=r' | html2txt.exe | grep '^foobar$' */ /* test: html2txt.exe -i test.html >/dev/null */ -/* test: cat test.html | html2txt.exe >/dev/null */ /* vim: set ts=4 sw=4 et: */ diff --git a/test.html b/test.html index 1b08ec1..555594c 100644 --- a/test.html +++ b/test.html @@ -3,18 +3,18 @@ data-state="fixed-height" data-selection="disabled" > - +

Le week-end dernier, les parquets ont résonné au rythme des encouragements et des premiers véritables défis de la saison pour nos équipes de jeunes. Après des semaines d’entraînement et de préparation physique, l’heure était enfin venue de revêtir le maillot du PNH et de croiser le fer avec les adversaires du championnat.

Les -11 garçons recevaient Tarbes et s’imposent sur le score de 21 à 8. Les deux équipes -11 filles étaient sur les parquets : l’équipe bleue l’emporte 22 à 2 contre Bagnères-de-Bigorre, tandis que l’équipe noire bat Escoubès 35 à 3. Bravo les filles ! Les -13 garçons n’ont rien pu faire face aux voisins de Tournay, qui s’imposent 45 à 32, au terme d’une rencontre offensive. Les -13 filles s’imposent face aux Béarnaises d’Asson, un club de référence, sur le score de 29 à 12. Les -15 garçons s’inclinent face à Rabastens-de-Bigorre, 46 à 21. Les -15 filles de la une l’emportent sur forfait de Comminges ; la deux s’impose face à Saint-Girons, 41 à 30.

- +

Les -18 garçons ont souffert sur le parquet de Colomiers : il aura tout fallu pour l’emporter 36 à 34. Les -18 filles font match nul, 19 à 19, face à Pamiers.

Le staff technique et les encadrants saluent l’implication de l’ensemble des joueuses et joueurs, qui portent haut les couleurs et les valeurs du club. De quoi aborder la suite de la saison avec le sourire et une belle dose de confiance !

L’équipe deux seniors filles s’incline face à Pamiers de deux petits buts, 29 à 27. La une filles n’a laissé aucune chance à Muret, avec une large victoire 36 à 25, importante pour la suite du championnat. La deux des seniors garçons recevait L’Union Toulouse au gymnase de Lannemezan : victoire importante 28 à 19 dans l’optique du maintien en Excellence régionale. La une accueillait Blagnac pour essayer de faire un 3 sur 3 : belle victoire des joueurs du plateau, 40 à 27.

Un week-end riche en émotions qui confirme le dynamisme et la vitalité de la formation au sein du PNH.

- +

Test characters: ) f; = F; &#D0A4;