want_go = ( c == 'g' || c == 'G' );
want_go = (BOOL) ( c == 'g' || c == 'G' );
PUBLIC int follow_link_number ARGS4(	int,		c,	int,		cur,	document *,	doc,	int *,		num){    char temp[120];    char *p = temp;    int rel = 0;    int new_top, new_link;    BOOL want_go;    int curline = *num; /* passed in from mainloop() */    CTRACE(tfp,"follow_link_number(%d,%d,...)\n",c,cur);    temp[0] = c;    temp[1] = '\0';    *num = -1;    _statusline(FOLLOW_LINK_NUMBER);    /*     *	Get the number, possibly with a letter suffix, from the user.     */    if (LYgetstr(temp, VISIBLE, sizeof(temp), NORECALL) < 0 || *temp == 0) {	HTInfoMsg(CANCELLED);	return(DO_NOTHING);    }    *num = atoi(p);    while ( isdigit(*p) )	++p;    c = *p; /* reuse c; 0 or g or p or + or - */    switch ( c ) {    case '+': case '-':	/* 123+ or 123- */	rel = c; c = *++p;	break;    default:	rel = *++p;    case 0:	break;    }    /* don't currently check for errors typing suffix */    CTRACE(tfp,"  temp=%s, *num=%d, rel='%c'\n",temp,*num,rel);    /*     *	Check if we had a 'p' or 'P' following the number as     *	a flag for displaying the page with that number. - FM     */    if ( c == 'p' || c == 'P' ) {	int nlines = HText_getNumOfLines();	int npages = ((nlines + 1) > display_lines) ?		(((nlines + 1) + (display_lines - 1))/(display_lines))						    : 1;	int curpage = ((curline + 1) > display_lines) ?		     (((curline + 1) + (display_lines - 1))/(display_lines))						      : 1;	CTRACE(tfp," nlines=%d, npages=%d, curline=%d, curpage=%d\n",		nlines,npages,curline,curpage);	if (*num < 1)	    *num = rel ? 0 : 1;	if ( rel == '+' )	    *num = curpage + *num;	else if ( rel == '-' )	    *num = curpage - *num;	doc->line = (npages <= 1) ?				1 :		((*num <= npages) ? (((*num - 1) * display_lines) + 1)				  : (((npages - 1) * display_lines) + 1));	return(DO_GOTOPAGE_STUFF);    }    /*     *	Check if we want to make the link corresponding to the     *	number the current link, rather than ACTIVATE-ing it.     */    want_go = ( c == 'g' || c == 'G' );    /* If rel, add or subtract num from current link, or     * nearest previous/subsequent link if current link is not on screen.     */    if ( rel )	*num = HTGetRelLinkNum( *num, rel, cur );   /*    *  If we have a valid number, act on it.    */   if (*num > 0) {	int info;	/*	 *  Get the lname, and hightext, directly from www	 *  structures and add it to the cur link so that	 *  we can pass it transparently on to getfile(),	 *  and load new_top and new_link if we instead want	 *  to make the link number current.  These things	 *  are done so that a link can be selected anywhere	 *  in the current document, whether it is displayed	 *  on the screen or not!	 */	if ((info = HTGetLinkInfo(*num,				  want_go,				  &new_top,				  &new_link,				  &links[cur].hightext,			  &links[cur].lname)) == WWW_INTERN_LINK_TYPE) {	    links[cur].type = WWW_INTERN_LINK_TYPE;	    return(DO_LINK_STUFF);	} else if (info == LINK_LINE_FOUND) {	    doc->line = new_top + 1;	    doc->link = new_link;	    return(DO_GOTOLINK_STUFF);	} else if (info) {	    links[cur].type = WWW_LINK_TYPE;	    return(DO_LINK_STUFF);	} else {	    return(PRINT_ERROR);	}    } else {	return(PRINT_ERROR);    }}