TO_SJIS((CONST unsigned char *)text, temp);
PUBLIC void statusline ARGS1(	CONST char *,	text){    char buffer[256];    unsigned char *temp = NULL;    int max_length, len, i, j;    unsigned char k;    if (text == NULL)	return;    /*     *	Don't print statusline messages if dumping to stdout.     */    if (dump_output_immediately)	return;    /*     *	Don't print statusline message if turned off.     */    if (mustshow != TRUE) {	if (no_statusline == TRUE) {	    return;	}    }    mustshow = FALSE;    /*     *	Deal with any CJK escape sequences and Kanji if we have a CJK     *	character set selected, otherwise, strip any escapes.  Also,     *	make sure text is not longer than the statusline window. - FM     */    max_length = ((LYcols - 2) < (int)sizeof(buffer))		? (LYcols - 2) : (int)sizeof(buffer)-1;    if ((text[0] != '\0') &&	(LYHaveCJKCharacterSet)) {	/*	 *  Translate or filter any escape sequences. - FM	 */	if ((temp = (unsigned char *)calloc(1, strlen(text) + 1)) == NULL)	    outofmem(__FILE__, "statusline");	if (kanji_code == EUC) {	    TO_EUC((CONST unsigned char *)text, temp);	} else if (kanji_code == SJIS) {	    TO_SJIS((CONST unsigned char *)text, temp);	} else {	    for (i = 0, j = 0; text[i]; i++) {		if (text[i] != CH_ESC) {  /* S/390 -- gil -- 2119 */		    temp[j++] = text[i];		}	    }	    temp[j] = '\0';	}	/*	 *  Deal with any newlines or tabs in the string. - FM	 */	convert_to_spaces((char *)temp, FALSE);	/*	 *  Handle the Kanji, making sure the text is not	 *  longer than the statusline window. - FM	 */	for (i = 0, j = 0, len = 0, k = '\0';	     temp[i] != '\0' && len < max_length; i++) {	    if (k != '\0') {		buffer[j++] = k;		buffer[j++] = temp[i];		k = '\0';		len += 2;	    } else if ((temp[i] & 0200) != 0) {		k = temp[i];	    } else {		buffer[j++] = temp[i];		len++;	    }	}	buffer[j] = '\0';	FREE(temp);    } else {	/*	 *  Strip any escapes, and shorten text if necessary.  Note	 *  that we don't deal with the possibility of UTF-8 characters	 *  in the string.  This is unlikely, but if strings with such	 *  characters are used in LYMessages_en.h, a compilation	 *  symbol of HAVE_UTF8_STATUSLINES could be added there, and	 *  code added here for determining the displayed string length,	 *  as we do above for CJK. - FM	 */	for (i = 0, len = 0; text[i] != '\0' && len < max_length; i++) {	    if (text[i] != CH_ESC) {  /* S/390 -- gil -- 2136 */		buffer[len++] = text[i];	    }	}	buffer[len] = '\0';	/*	 *  Deal with any newlines or tabs in the string. - FM	 */	convert_to_spaces(buffer, FALSE);    }    /*     *	Move to the desired statusline window and     *	output the text highlighted. - FM     */    if (LYStatusLine >= 0) {	if (LYStatusLine < LYlines-1) {	    move(LYStatusLine, 0);	} else {	    move(LYlines-1, 0);	}    } else if (user_mode == NOVICE_MODE) {	move(LYlines-3, 0);    } else {	move(LYlines-1, 0);    }    clrtoeol();    if (text != NULL && text[0] != '\0') {#ifdef HAVE_UTF8_STATUSLINES	if (LYCharSet_UC[current_char_set].enc == UCT_ENC_UTF8) {	    refresh();	}#endif /* HAVE_UTF8_STATUSLINES */#ifndef USE_COLOR_STYLE	lynx_start_status_color ();	addstr (buffer);	lynx_stop_status_color ();#else	/* draw the status bar in the STATUS style */	{		int a=(strncmp(buffer, ALERT_FORMAT, ALERT_PREFIX_LEN) ||		       !hashStyles[s_alert].name) ? s_status : s_alert;		LynxChangeStyle (a, STACK_ON, 1);		addstr(buffer);		wbkgdset(stdscr,			 ((lynx_has_color && LYShowColor >= SHOW_COLOR_ON)			  ? hashStyles[a].color			  :A_NORMAL) | ' ');		clrtoeol();		if (!(lynx_has_color && LYShowColor >= SHOW_COLOR_ON))		    wbkgdset(stdscr, A_NORMAL | ' ');		else if (s_normal != NOSTYLE)		    wbkgdset(stdscr, hashStyles[s_normal].color | ' ');		else		    wbkgdset(stdscr, displayStyles[DSTYLE_NORMAL].color | ' ');		LynxChangeStyle (a, STACK_OFF, 0);	}#endif    }    refresh();    return;}