#include    <ctype.h>
#include    "defs.h"

BOOL    iskan(p)
LONG	p;
{
    register int     c1,c2;

    c1 = *Cnv_ptr(p++) & 0xff;
    c2 = *Cnv_ptr(p) & 0xff;
    if ( iskanji(c1) && p != btm_ptr && iskanji2(c2) )
	return TRUE;
    else
	return FALSE;
}
LONG    Nxt_line2(p)
register LONG    p;
{
    int     ch,x;

    for ( x = 0 ; p < btm_ptr ; ) {
	ch = *Cnv_ptr(p);
	if ( ch == '\x0A' )
	    return ++p;
        else if ( ch == '\t' ) {
            p++;
            if ( (x = ((x + TAB) / TAB) * TAB) >= MAX_X )
                return p;
        } else if ( iskan(p) != FALSE ) {
            if ( (x += 2) > MAX_X )
                return p;
            p+=2;
	} else if ( ch == '\x0D' ) {
	    p++;
	} else {
            p++;
	    if ( ++x >= MAX_X )
		return p;
	}
    }
    return p;
}
LONG    Bak_line2(ptr)
LONG	ptr;
{
    LONG    s;
    register LONG    p;

    if ( (p = ptr) != 0 && *Cnv_ptr(--p) == '\n' && p != 0 ) --p;
    while ( p != 0 && *Cnv_ptr(p) != '\n' ) --p;
    if ( p != 0 && *Cnv_ptr(p) == '\n' ) p++;
    do { s = p; } while ( (p = Nxt_line2(s)) < ptr );

    return s;
}
/********** move to buff.c ************
LONG    Nxt_line(p)
register LONG    p;
{
    while ( p < btm_ptr ) {
	if ( *Cnv_ptr(p++) == '\n' )
	    break;
    }
    return p;
}
***************************************/
LONG    Bak_line(ptr)
LONG	ptr;
{
    register LONG    p;

    if ( (p = ptr) != 0 && *Cnv_ptr(--p) == '\n' && p != 0 ) --p;
    while ( p != 0 && *Cnv_ptr(p) != '\n' ) --p;
    if ( p != 0 && *Cnv_ptr(p) == '\n' ) p++;

    return p;
}
