Name: newt
%define version 0.50
Version: %{version}
-Release: 13
+Release: 14
Copyright: LGPL
Group: System Environment/Libraries
Source: ftp://ftp.redhat.com/pub/redhat/code/newt/newt-%{version}.tar.gz
%postun -p /sbin/ldconfig
%changelog
+* Wed Oct 20 1999 Matt Wilson <msw@redhat.com>
+- added patch to correctly wrap euc kanji
+
* Wed Sep 01 1999 Erik Troan <ewt@redhat.com>
- added suspend/resume to snack
return buf;
}
+#define iseuckanji(c) (0xa1 <= (unsigned char)(c&0xff) && (unsigned char)(c&0xff) <= 0xfe)
+
static void doReflow(const char * text, char ** resultPtr, int width,
int * badness, int * heightPtr) {
char * result = NULL;
const char * chptr, * end;
+ int i;
int howbad = 0;
int height = 0;
+ int kanji = 0;
if (resultPtr) {
/* XXX I think this will work */
}
while (*text) {
+ kanji = 0;
end = strchr(text, '\n');
if (!end)
end = text + strlen(text);
text = end;
if (*text) text++;
} else {
- chptr = text + width - 1;
- while (chptr > text && !isspace(*chptr)) chptr--;
- while (chptr > text && isspace(*chptr)) chptr--;
- chptr++;
+ chptr = text;
+ kanji = 0;
+ for ( i = 0; i < width - 1; i++ ) {
+ if ( !iseuckanji(*chptr)) {
+ kanji = 0;
+ } else if ( kanji == 1 ) {
+ kanji = 2;
+ } else {
+ kanji = 1;
+ }
+ chptr++;
+ }
+ if (kanji == 0) {
+ while (chptr > text && !isspace(*chptr)) chptr--;
+ while (chptr > text && isspace(*chptr)) chptr--;
+ chptr++;
+ }
if (chptr-text == 1 && !isspace(*chptr))
chptr = text + width - 1;
if (chptr > text)
howbad += width - (chptr - text) + 1;
if (result) {
- strncat(result, text, chptr - text);
+ if (kanji == 1) {
+ strncat(result, text, chptr - text + 1 );
+ chptr++;
+ kanji = 0;
+ } else {
+ strncat(result, text, chptr - text );
+ }
strcat(result, "\n");
height++;
}
- if (isspace(*chptr))
+ if (isspace(*chptr))
text = chptr + 1;
else
text = chptr;