pkgsrc-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: pkg/60844: www/lynx with NetBSD curses fails to display utf-8
The following reply was made to PR pkg/60844; it has been noted by GNATS.
From: Valery Ushakov <uwe%stderr.spb.ru@localhost>
To: gnats-bugs%netbsd.org@localhost
Cc:
Subject: Re: pkg/60844: www/lynx with NetBSD curses fails to display utf-8
Date: Sat, 3 Oct 2026 14:23:58 +0300
--- a/src/LYCurses.c
+++ b/src/LYCurses.c
@@ -2287,19 +2287,31 @@ void LYwaddnstr(WINDOW * w GCC_UNUSED,
#endif
LYGetYX(y0, x0);
- for (inx = 0; inx < len; ++inx) {
- /*
- * Do tab-expansion relative to the base of the string (rather than
- * the screen) so that tabs in a TEXTAREA will look right.
- */
- if (src[inx] == '\t') {
- LYGetYX(y, x);
- while ((++x - x0) % 8)
- waddch(w, ' ');
- waddch(w, ' ');
- } else {
- waddch(w, UCH(src[inx]));
+ /*
+ * waddnstr(w, src, len), but do tab-expansion relative to the
+ * base of the string (rather than the screen) so that tabs in a
+ * TEXTAREA will look right.
+ */
+ const char *chunk = src;
+ while (*chunk != '\0') {
+ const char *tabp = strchr(chunk, '\t');
+ if (tabp == NULL) {
+ size_t toend = src + len - chunk;
+ waddnstr(w, chunk, toend);
+ break;
}
+
+ if (tabp != chunk) {
+ size_t totab = tabp - chunk;
+ waddnstr(w, chunk, totab);
+ }
+
+ LYGetYX(y, x);
+ do {
+ waddch(w, ' ');
+ } while ((++x - x0) % 8);
+
+ chunk = tabp + 1;
}
}
----8<--------8<--------8<----
begin 644 LYwaddnstr.patch
M+2TM(&$O<W)C+TQ90W5R<V5S+F,**RLK(&(O<W)C+TQ90W5R<V5S+F,*0$`@
M+3(R.#<L,3D@*S(R.#<L,S$@0$`@=F]I9"!,67=A9&1N<W1R*%=)3D1/5R`J
M('<@1T-#7U5.55-%1"P*("-E;F1I9@H@("`@($Q91V5T65@H>3`L('@P*3L*
M(`HM("`@(&9O<B`H:6YX(#T@,#L@:6YX(#P@;&5N.R`K*VEN>"D@>PHM"2\J
M"BT)("H@1&\@=&%B+65X<&%N<VEO;B!R96QA=&EV92!T;R!T:&4@8F%S92!O
M9B!T:&4@<W1R:6YG("AR871H97(@=&AA;@HM"2`J('1H92!S8W)E96XI('-O
M('1H870@=&%B<R!I;B!A(%1%6%1!4D5!('=I;&P@;&]O:R!R:6=H="X*+0D@
M*B\*+0EI9B`H<W)C6VEN>%T@/3T@)UQT)RD@>PHM"2`@("!,64=E=%E8*'DL
M('@I.PHM"2`@("!W:&EL92`H*"LK>"`M('@P*2`E(#@I"BT)"7=A9&1C:"AW
M+"`G("<I.PHM"2`@("!W861D8V@H=RP@)R`G*3L*+0E](&5L<V4@>PHM"2`@
M("!W861D8V@H=RP@54-(*'-R8UMI;GA=*2D["BL@("`@+RH**R`@("`@*B!W
M861D;G-T<BAW+"!S<F,L(&QE;BDL(&)U="!D;R!T86(M97AP86YS:6]N(')E
M;&%T:79E('1O('1H90HK("`@("`J(&)A<V4@;V8@=&AE('-T<FEN9R`H<F%T
M:&5R('1H86X@=&AE('-C<F5E;BD@<V\@=&AA="!T86)S(&EN(&$**R`@("`@
M*B!415A405)%02!W:6QL(&QO;VL@<FEG:'0N"BL@("`@("HO"BL@("`@8V]N
M<W0@8VAA<B`J8VAU;FL@/2!S<F,["BL@("`@=VAI;&4@*"IC:'5N:R`A/2`G
M7#`G*2!["BL)8V]N<W0@8VAA<B`J=&%B<"`]('-T<F-H<BAC:'5N:RP@)UQT
M)RD["BL):68@*'1A8G`@/3T@3E5,3"D@>PHK(`D@("`@<VEZ95]T('1O96YD
M(#T@<W)C("L@;&5N("T@8VAU;FL["BL)("`@('=A9&1N<W1R*'<L(&-H=6YK
M+"!T;V5N9"D["BL)("`@(&)R96%K.PH@"7T**PHK"6EF("AT86)P("$](&-H
M=6YK*2!["BL@"2`@("!S:7IE7W0@=&]T86(@/2!T86)P("T@8VAU;FL["BL)
M("`@('=A9&1N<W1R*'<L(&-H=6YK+"!T;W1A8BD["BL)?0HK"BL)3%E'9719
M6"AY+"!X*3L**PED;R!["BL)("`@('=A9&1C:"AW+"`G("<I.PHK"7T@=VAI
M;&4@*"@K*W@@+2!X,"D@)2`X*3L**PHK"6-H=6YK(#T@=&%B<"`K(#$["B`@
*("`@?0H@?0H@"@``
`
end
-uwe
Home |
Main Index |
Thread Index |
Old Index