123885Sjaap #ifndef lint
2*23907Sjaap static char sccsid[] = "@(#)n8.c 2.1 (CWI) 85/07/18";
323885Sjaap #endif lint
423885Sjaap #include <ctype.h>
523885Sjaap #include "tdef.h"
6*23907Sjaap #include <sgtty.h>
7*23907Sjaap #include "ext.h"
823885Sjaap #define HY_BIT 0200 /* stuff in here only works for ascii */
923885Sjaap
1023885Sjaap /*
11*23907Sjaap * troff8.c
12*23907Sjaap *
13*23907Sjaap * hyphenation
14*23907Sjaap */
1523885Sjaap
1623885Sjaap char hbuf[NHEX];
1723885Sjaap char *nexth = hbuf;
18*23907Sjaap tchar *hyend;
1923885Sjaap
hyphen(wp)2023885Sjaap hyphen(wp)
2123885Sjaap tchar *wp;
2223885Sjaap {
2323885Sjaap register j;
2423885Sjaap register tchar *i;
2523885Sjaap
2623885Sjaap i = wp;
2723885Sjaap while (punct(cbits(*i++)))
2823885Sjaap ;
2923885Sjaap if (!alph(cbits(*--i)))
3023885Sjaap return;
3123885Sjaap wdstart = i++;
3223885Sjaap while (alph(cbits(*i++)))
3323885Sjaap ;
3423885Sjaap hyend = wdend = --i - 1;
3523885Sjaap while (punct(cbits(*i++)))
3623885Sjaap ;
3723885Sjaap if (*--i)
3823885Sjaap return;
3923885Sjaap if ((wdend - wdstart - 4) < 0)
4023885Sjaap return;
4123885Sjaap hyp = hyptr;
4223885Sjaap *hyp = 0;
4323885Sjaap hyoff = 2;
4423885Sjaap /*
4523885Sjaap if (!exword() && !suffix())
4623885Sjaap digram();
4723885Sjaap */
4823885Sjaap if (!exword()) {
4923885Sjaap if (hyalg == ORIGINAL && !suffix())
5023885Sjaap digram();
5123885Sjaap if (hyalg == DUTCH)
5223885Sjaap split(wdstart, wdend);
5323885Sjaap }
5423885Sjaap *hyp++ = 0;
5523885Sjaap if (*hyptr)
5623885Sjaap for (j = 1; j; ) {
5723885Sjaap j = 0;
5823885Sjaap for (hyp = hyptr + 1; *hyp != 0; hyp++) {
5923885Sjaap if (*(hyp - 1) > *hyp) {
6023885Sjaap j++;
6123885Sjaap i = *hyp;
6223885Sjaap *hyp = *(hyp - 1);
6323885Sjaap *(hyp - 1) = i;
6423885Sjaap }
6523885Sjaap }
6623885Sjaap }
6723885Sjaap }
6823885Sjaap
6923885Sjaap
punct(i)7023885Sjaap punct(i)
7123885Sjaap {
7223885Sjaap if (!i || alph(i))
7323885Sjaap return(0);
7423885Sjaap else
7523885Sjaap return(1);
7623885Sjaap }
7723885Sjaap
7823885Sjaap
alph(i)7923885Sjaap alph(i)
8023885Sjaap {
8123885Sjaap if (i >= 'a' && i <= 'z' || i >= 'A' && i <= 'Z')
8223885Sjaap return(1);
8323885Sjaap else
8423885Sjaap return(0);
8523885Sjaap }
8623885Sjaap
8723885Sjaap /*
8823885Sjaap * set the hyphenation algorithm
8923885Sjaap *
9023885Sjaap * jna
9123885Sjaap */
9223885Sjaap
caseha()9323885Sjaap caseha()
9423885Sjaap { register i;
9523885Sjaap
9623885Sjaap if ( skip())
9723885Sjaap i = hyalg1;
9823885Sjaap else {
9923885Sjaap noscale++;
10023885Sjaap noscale = 0;
101*23907Sjaap i = max(atoi(), 0);
10223885Sjaap if (nonumb)
10323885Sjaap return;
10423885Sjaap if (i > MAXDIALECTS) {
105*23907Sjaap errprint("Unknown dialect %d", i);
10623885Sjaap return;
10723885Sjaap }
10823885Sjaap }
10923885Sjaap hyalg1 = hyalg;
11023885Sjaap hyalg = i;
11123885Sjaap if( hyalg == DUTCH)
11223885Sjaap thresh = DUTCH_THRESH;
11323885Sjaap }
11423885Sjaap
caseht()11523885Sjaap caseht()
11623885Sjaap {
11723885Sjaap switch(hyalg) {
11823885Sjaap case ORIGINAL:
11923885Sjaap thresh = THRESH;
12023885Sjaap break;
12123885Sjaap case DUTCH:
12223885Sjaap thresh = DUTCH_THRESH;
12323885Sjaap break;
12423885Sjaap }
125*23907Sjaap if (skip())
12623885Sjaap return;
12723885Sjaap noscale++;
128*23907Sjaap if (hyalg == DUTCH)
129*23907Sjaap thresh = max(atoi(), 1);
13023885Sjaap else
13123885Sjaap thresh = atoi();
13223885Sjaap noscale = 0;
13323885Sjaap }
13423885Sjaap
13523885Sjaap
casehw()13623885Sjaap casehw()
13723885Sjaap {
13823885Sjaap register i, k;
13923885Sjaap register char *j;
14023885Sjaap tchar t;
14123885Sjaap
14223885Sjaap k = 0;
14323885Sjaap while (!skip()) {
14423885Sjaap if ((j = nexth) >= (hbuf + NHEX - 2))
14523885Sjaap goto full;
14623885Sjaap for (; ; ) {
14723885Sjaap if (ismot(t = getch()))
14823885Sjaap continue;
14923885Sjaap i = cbits(t);
15023885Sjaap if (i == ' ' || i == '\n') {
15123885Sjaap *j++ = 0;
15223885Sjaap nexth = j;
15323885Sjaap *j = 0;
15423885Sjaap if (i == ' ')
15523885Sjaap break;
15623885Sjaap else
15723885Sjaap return;
15823885Sjaap }
15923885Sjaap if (i == '-') {
16023885Sjaap k = HY_BIT;
16123885Sjaap continue;
16223885Sjaap }
16323885Sjaap *j++ = maplow(i) | k;
16423885Sjaap k = 0;
16523885Sjaap if (j >= (hbuf + NHEX - 2))
16623885Sjaap goto full;
16723885Sjaap }
16823885Sjaap }
16923885Sjaap return;
17023885Sjaap full:
171*23907Sjaap errprint("exception word list full.");
17223885Sjaap *nexth = 0;
17323885Sjaap }
17423885Sjaap
17523885Sjaap
exword()17623885Sjaap exword()
17723885Sjaap {
17823885Sjaap register tchar *w;
17923885Sjaap register char *e;
18023885Sjaap char *save;
18123885Sjaap
18223885Sjaap e = hbuf;
18323885Sjaap while (1) {
18423885Sjaap save = e;
18523885Sjaap if (*e == 0)
18623885Sjaap return(0);
18723885Sjaap w = wdstart;
18823885Sjaap while (*e && w <= hyend && (*e & 0177) == maplow(cbits(*w))) {
18923885Sjaap e++;
19023885Sjaap w++;
19123885Sjaap };
19223885Sjaap if (!*e) {
19323885Sjaap if (w-1 == hyend ||
19423885Sjaap (hyalg == ORIGINAL /* s-extension only in original */
195*23907Sjaap && (w == wdend && maplow(cbits(*w)) == 's'))) {
19623885Sjaap w = wdstart;
19723885Sjaap for (e = save; *e; e++) {
19823885Sjaap if (*e & HY_BIT)
19923885Sjaap *hyp++ = w;
20023885Sjaap if (hyp > (hyptr + NHYP - 1))
20123885Sjaap hyp = hyptr + NHYP - 1;
20223885Sjaap w++;
20323885Sjaap }
20423885Sjaap return(1);
20523885Sjaap } else {
20623885Sjaap e++;
20723885Sjaap continue;
20823885Sjaap }
20923885Sjaap } else
21023885Sjaap while (*e++)
21123885Sjaap ;
21223885Sjaap }
21323885Sjaap }
21423885Sjaap
21523885Sjaap
suffix()21623885Sjaap suffix()
21723885Sjaap {
21823885Sjaap register tchar *w;
21923885Sjaap register char *s, *s0;
22023885Sjaap tchar i;
22123885Sjaap extern char *suftab[];
22223885Sjaap extern tchar *chkvow();
22323885Sjaap
22423885Sjaap again:
22523885Sjaap if (!alph(cbits(i = cbits(*hyend))))
22623885Sjaap return(0);
22723885Sjaap if (i < 'a')
22823885Sjaap i -= 'A' - 'a';
22923885Sjaap if ((s0 = suftab[i-'a']) == 0)
23023885Sjaap return(0);
23123885Sjaap for (; ; ) {
23223885Sjaap if ((i = *s0 & 017) == 0)
23323885Sjaap return(0);
23423885Sjaap s = s0 + i - 1;
23523885Sjaap w = hyend - 1;
23623885Sjaap while (s > s0 && w >= wdstart && (*s & 0177) == maplow(cbits(*w))) {
23723885Sjaap s--;
23823885Sjaap w--;
23923885Sjaap }
24023885Sjaap if (s == s0)
24123885Sjaap break;
24223885Sjaap s0 += i;
24323885Sjaap }
24423885Sjaap s = s0 + i - 1;
24523885Sjaap w = hyend;
24623885Sjaap if (*s0 & HY_BIT)
24723885Sjaap goto mark;
24823885Sjaap while (s > s0) {
24923885Sjaap w--;
25023885Sjaap if (*s-- & HY_BIT) {
25123885Sjaap mark:
25223885Sjaap hyend = w - 1;
25323885Sjaap if (*s0 & 0100)
25423885Sjaap continue;
25523885Sjaap if (!chkvow(w))
25623885Sjaap return(0);
25723885Sjaap *hyp++ = w;
25823885Sjaap }
25923885Sjaap }
26023885Sjaap if (*s0 & 040)
26123885Sjaap return(0);
26223885Sjaap if (exword())
26323885Sjaap return(1);
26423885Sjaap goto again;
26523885Sjaap }
26623885Sjaap
26723885Sjaap
maplow(i)26823885Sjaap maplow(i)
269*23907Sjaap register int i;
27023885Sjaap {
27123885Sjaap if (isupper(i))
27223885Sjaap i = tolower(i);
27323885Sjaap return(i);
27423885Sjaap }
27523885Sjaap
27623885Sjaap
vowel(i)27723885Sjaap vowel(i)
27823885Sjaap int i;
27923885Sjaap {
28023885Sjaap switch (maplow(i)) {
28123885Sjaap case 'a':
28223885Sjaap case 'e':
28323885Sjaap case 'i':
28423885Sjaap case 'o':
28523885Sjaap case 'u':
28623885Sjaap case 'y':
28723885Sjaap return(1);
28823885Sjaap default:
28923885Sjaap return(0);
29023885Sjaap }
29123885Sjaap }
29223885Sjaap
29323885Sjaap
chkvow(w)29423885Sjaap tchar *chkvow(w)
29523885Sjaap tchar *w;
29623885Sjaap {
29723885Sjaap while (--w >= wdstart)
29823885Sjaap if (vowel(cbits(*w)))
29923885Sjaap return(w);
30023885Sjaap return(0);
30123885Sjaap }
30223885Sjaap
30323885Sjaap
digram()30423885Sjaap digram()
30523885Sjaap {
30623885Sjaap register tchar *w;
30723885Sjaap register val;
30823885Sjaap tchar * nhyend, *maxw;
30923885Sjaap int maxval;
31023885Sjaap extern char bxh[26][13], bxxh[26][13], xxh[26][13], xhx[26][13], hxx[26][13];
31123885Sjaap
31223885Sjaap again:
31323885Sjaap if (!(w = chkvow(hyend + 1)))
31423885Sjaap return;
31523885Sjaap hyend = w;
31623885Sjaap if (!(w = chkvow(hyend)))
31723885Sjaap return;
31823885Sjaap nhyend = w;
31923885Sjaap maxval = 0;
32023885Sjaap w--;
32123885Sjaap while ((++w < hyend) && (w < (wdend - 1))) {
32223885Sjaap val = 1;
32323885Sjaap if (w == wdstart)
32423885Sjaap val *= dilook('a', cbits(*w), bxh);
32523885Sjaap else if (w == wdstart + 1)
32623885Sjaap val *= dilook(cbits(*(w-1)), cbits(*w), bxxh);
32723885Sjaap else
32823885Sjaap val *= dilook(cbits(*(w-1)), cbits(*w), xxh);
32923885Sjaap val *= dilook(cbits(*w), cbits(*(w+1)), xhx);
33023885Sjaap val *= dilook(cbits(*(w+1)), cbits(*(w+2)), hxx);
33123885Sjaap if (val > maxval) {
33223885Sjaap maxval = val;
33323885Sjaap maxw = w + 1;
33423885Sjaap }
33523885Sjaap }
33623885Sjaap hyend = nhyend;
33723885Sjaap if (maxval > thresh)
33823885Sjaap *hyp++ = maxw;
33923885Sjaap goto again;
34023885Sjaap }
34123885Sjaap
34223885Sjaap
dilook(a,b,t)34323885Sjaap dilook(a, b, t)
34423885Sjaap int a, b;
34523885Sjaap char t[26][13];
34623885Sjaap {
34723885Sjaap register i, j;
34823885Sjaap
34923885Sjaap i = t[maplow(a)-'a'][(j = maplow(b)-'a')/2];
35023885Sjaap if (!(j & 01))
35123885Sjaap i >>= 4;
35223885Sjaap return(i & 017);
35323885Sjaap }
35423885Sjaap
35523885Sjaap
35623885Sjaap /*
35723885Sjaap * All these jazz is to have the dialect dutch being hyphenated
35823885Sjaap * It first appeared in the dutch version of troff (nltroff), due to
35923885Sjaap * teus hagen.
36023885Sjaap * The original program has converted from Algol60 to C by, I think
36123885Sjaap * bert ijsselstein.
36223885Sjaap * It's a mess, anyway.
36323885Sjaap *
36423885Sjaap * Planted in this version of troff by jaap akkerhuis (jna).
36523885Sjaap *
36623885Sjaap * Note that this is licensed software!
36723885Sjaap *
36823885Sjaap */
36923885Sjaap
37023885Sjaap #ifndef NULL
37123885Sjaap #define NULL 0
37223885Sjaap #endif
37323885Sjaap #define MAXLETT 50 /* at most the first MAXLETT characters of a word
37423885Sjaap will be processed */
37523885Sjaap #define MAXSYLL 20 /* at most the first MAXSYLL syllables of a word
37623885Sjaap will be processed */
37723885Sjaap
37823885Sjaap #define LETTEREE 27
37923885Sjaap #define LETTERJ 41
38023885Sjaap #define LETTERV 55
38123885Sjaap #define LETTERX 57
38223885Sjaap #define LETTERZ 58
38323885Sjaap
384*23907Sjaap /*
385*23907Sjaap * split(..) needs to be cleaned up, could install hjt's version...
386*23907Sjaap */
387*23907Sjaap
split(aword,anend)38823885Sjaap split( aword, anend ) register tchar *aword, *anend;
38923885Sjaap { register tchar *place;
39023885Sjaap extern tchar *bestsplit1();
39123885Sjaap
39223885Sjaap place = bestsplit1( aword, anend );
39323885Sjaap if( place != (tchar *) NULL )
39423885Sjaap { *hyp++ = place;
39523885Sjaap if( place - aword > thresh && anend - place > thresh )
39623885Sjaap split( aword, place+1 );
39723885Sjaap if( anend - place > thresh && place - aword > thresh )
39823885Sjaap split( place, anend );
39923885Sjaap }
40023885Sjaap }
40123885Sjaap
40223885Sjaap tchar *
bestsplit1(tosplit,aend)40323885Sjaap bestsplit1( tosplit , aend )
40423885Sjaap tchar *tosplit, *aend;
40523885Sjaap {
40623885Sjaap /* This function determines the "best" place to split into two parts the
40723885Sjaap * Dutch word contained in a string of <size> characters which starts at
40823885Sjaap * the address <tosplit> .
40923885Sjaap * The input characters should be in ASCII code .
41023885Sjaap * The function returns as value the number of characters of the first
41123885Sjaap * of the two parts .
41223885Sjaap * If the returned value exceeds the character count of the line the
41323885Sjaap * user may try to invoke bestsplit1 again but now with <size> equal to
41423885Sjaap * the returned value plus one .
41523885Sjaap * The algorithm is adapted from the Mathematical Centre report NR 28/72,
41623885Sjaap * "BESTESPLITS1, EEN PROCEDURE VOOR HET AUTOMATISCH AFBREKEN VAN NEDER-
41723885Sjaap * LANDSE WOORDEN" , which has been written by J.C. VAN VLIET.
41823885Sjaap */
41923885Sjaap extern char translate[], comprimation[][14], consonant[][23],
42023885Sjaap prefix[][3] ;
421*23907Sjaap short woord[ MAXLETT +1], reference[ MAXLETT +1], vowel[ MAXSYLL ],
42223885Sjaap turn[ MAXSYLL ] , letter, nextlett, vowel1, vowel2,
42323885Sjaap l0, l1, l2 ;
42423885Sjaap short numlett, numsyll, turnindex, differ, start1, start2, stop,
42523885Sjaap level, bp ;
42623885Sjaap register int i, j, help ;
42723885Sjaap short size = aend - tosplit + 1;
42823885Sjaap
42923885Sjaap /* translate into bestsplit code : */
430*23907Sjaap woord[0] = 0 ;
43123885Sjaap i = 1 ;
43223885Sjaap help = -1 ;
43323885Sjaap while ( (++help < size) && (i < MAXLETT ) ) {
43423885Sjaap reference[i] = i;
435*23907Sjaap woord[i++] = translate[maplow(cbits(tosplit[help])) - 'a'] ;
43623885Sjaap }
43723885Sjaap /* end of translation : */
43823885Sjaap
43923885Sjaap numlett = i ;
44023885Sjaap if ( numlett < 4 ) goto nosplit ;
44123885Sjaap i = j = 1 ;
44223885Sjaap help = 0 ;
44323885Sjaap while ( i < numlett ) {
444*23907Sjaap letter = woord[i] ;
44523885Sjaap /* comprimation of vowels : */
44623885Sjaap if ( (25 < letter) && (letter < 41) ) {
447*23907Sjaap nextlett = woord[i+1] ;
44823885Sjaap if ( (28 < nextlett) && (nextlett < 43) ) {
44923885Sjaap letter = comprimation[letter-26][nextlett-29] ;
45023885Sjaap if (letter > 0) {
45123885Sjaap i++ ;
45223885Sjaap help++ ;
453*23907Sjaap woord[i] = letter ;
45423885Sjaap continue ;
45523885Sjaap }
45623885Sjaap }
45723885Sjaap } /* end of comprimation */
45823885Sjaap
459*23907Sjaap woord[j] = woord[i] ;
46023885Sjaap j++ ;
46123885Sjaap i++ ;
46223885Sjaap reference[j] += help ;
46323885Sjaap }
464*23907Sjaap woord[j] = woord[numlett] ;
46523885Sjaap numlett = j ;
46623885Sjaap
46723885Sjaap
46823885Sjaap /* determination of the number of syllables */
46923885Sjaap j = -1 ;
47023885Sjaap i = 0 ;
47123885Sjaap while ( ( ++i <= numlett ) && ( j < MAXSYLL ) ) {
472*23907Sjaap if (woord[i] < 39) {
47323885Sjaap j++ ;
47423885Sjaap vowel[j] = i ;
47523885Sjaap }
47623885Sjaap }
47723885Sjaap numsyll = j+1 ;
47823885Sjaap
47923885Sjaap if ( numsyll < 2 ) goto nosplit ;
48023885Sjaap turnindex = 0 ;
48123885Sjaap differ = 1 ;
48223885Sjaap start1 = 0 ;
48323885Sjaap start2 = numsyll - 1 ;
48423885Sjaap stop = start2 ;
48523885Sjaap
48623885Sjaap while ( turnindex < stop ) {
48723885Sjaap vowel1 = vowel[stop] ;
48823885Sjaap for ( i = stop - 1 ; i >= 0 ; i-- ) {
48923885Sjaap vowel2 = vowel[i] ;
49023885Sjaap if ( vowel1 - vowel2 == differ) {
49123885Sjaap turn[turnindex] = i ;
49223885Sjaap turnindex++ ;
49323885Sjaap }
49423885Sjaap vowel1 = vowel2 ;
49523885Sjaap }
49623885Sjaap if ( differ == 1 ) start1 = turnindex ;
49723885Sjaap else if ( differ == 2 ) start2 = turnindex ;
49823885Sjaap differ++ ;
49923885Sjaap }
50023885Sjaap
50123885Sjaap turnindex = start2 - 1 ;
50223885Sjaap stop = numsyll - 1 ;
50323885Sjaap level = 1 ;
50423885Sjaap
50523885Sjaap next :
50623885Sjaap turnindex++ ;
50723885Sjaap if ( turnindex >= stop ) {
50823885Sjaap if ( level == 1 ) turnindex = start2 ;
50923885Sjaap else if ( level == 2 ) {
51023885Sjaap turnindex = start1 ;
51123885Sjaap stop = start2 ;
51223885Sjaap }
51323885Sjaap else goto nosplit ;
51423885Sjaap level++ ;
51523885Sjaap if ( turnindex >= stop ) goto next ;
51623885Sjaap }
51723885Sjaap j = turn[turnindex] ;
51823885Sjaap vowel1 = vowel[j] ;
51923885Sjaap vowel2 = vowel[j+1] ;
52023885Sjaap
52123885Sjaap switch ( level ) {
52223885Sjaap case 1 :
52323885Sjaap for ( j = vowel2-2 ; j >= vowel1+1 ; j-- ) {
524*23907Sjaap help = consonant[woord[j]-39][woord[j+1]-39] ;
52523885Sjaap if ( abs(help) == 1 ) goto splitafterj ;
52623885Sjaap if ( help < 0 ) goto next ;
52723885Sjaap }
52823885Sjaap break ; /* end of first phase */
52923885Sjaap
53023885Sjaap case 2 :
53123885Sjaap for ( i = vowel2-2 ; i >= vowel1+1 ; i-- ) {
532*23907Sjaap help = consonant[woord[i]-39][woord[i+1]-39] ;
53323885Sjaap if ( abs(help) == 2 ) {
53423885Sjaap j = i ;
53523885Sjaap goto splitafterj ;
53623885Sjaap }
53723885Sjaap if ( abs(help) == 3 ) {
53823885Sjaap if ( i == vowel1+1 ) {
53923885Sjaap j = vowel1 ;
54023885Sjaap goto splitafterj ;
54123885Sjaap }
542*23907Sjaap help = abs(consonant[woord[i-1]-39][woord[i]-39]) ;
54323885Sjaap if ( help == 2 ) {
54423885Sjaap j = i - 1 ;
54523885Sjaap goto splitafterj ;
54623885Sjaap }
54723885Sjaap if ( help == 3 ) {
54823885Sjaap j = i - 2 ;
54923885Sjaap goto splitafterj ;
55023885Sjaap }
55123885Sjaap }
55223885Sjaap else if ( ( abs(help) == 4 ) &&
55323885Sjaap ( i == vowel2-2 ) ) {
55423885Sjaap j = i ;
55523885Sjaap goto splitafterj ;
55623885Sjaap }
55723885Sjaap if ( help < 0 ) goto next ;
55823885Sjaap }
55923885Sjaap break ; /* end of second phase */
56023885Sjaap
56123885Sjaap case 3 :
56223885Sjaap j = vowel1 ;
563*23907Sjaap help = woord[j+1] ;
56423885Sjaap if ( (help == LETTERJ) || (help == LETTERV) ||
56523885Sjaap (help == LETTERZ) ) goto splitafterj ;
56623885Sjaap if ( help == LETTERX ) goto next ;
567*23907Sjaap l1 = woord[j] ;
56823885Sjaap if ( l1 == LETTEREE ) goto next ;
56923885Sjaap if ( ( l1 > 24 ) && ( l1 < 29 ) ) {
57023885Sjaap j++ ;
57123885Sjaap goto splitafterj ;
57223885Sjaap }
573*23907Sjaap l0 = woord[j-1] ;
574*23907Sjaap l2 = woord[j+1] ;
57523885Sjaap for ( i = 0 ; i < 7 ; i++ )
57623885Sjaap if ( ( l0 == prefix[i][0] ) &&
57723885Sjaap ( l1 == prefix[i][1] ) &&
57823885Sjaap ( l2 == prefix[i][2] ) ) goto next ;
57923885Sjaap goto splitafterj ;
58023885Sjaap break ; /* end of third phase */
58123885Sjaap
58223885Sjaap }
58323885Sjaap
58423885Sjaap
58523885Sjaap goto next ;
58623885Sjaap
58723885Sjaap splitafterj :
58823885Sjaap bp = reference[j+1] - 1 ;
58923885Sjaap if((bp < size-1) && (bp > 0))
59023885Sjaap goto away;
59123885Sjaap else
59223885Sjaap goto next;
59323885Sjaap
59423885Sjaap nosplit :
59523885Sjaap bp = 0 ;
59623885Sjaap level = 4 ;
59723885Sjaap away :
59823885Sjaap return(bp == 0? (tchar *) NULL : tosplit+bp) ;
59923885Sjaap }
600