
/*
 *    HAT.C
 *
 *    Modify the last history entry ^search^replace.  Called from
 *    MAIN.C
 *
 */

extern char *last_history_entry();

hat_replace(buf)
char *buf;
{
    char res[256];
    char *ptr, *hb, *repstr, *srchstr;
    int searchlen, replacelen;

    srchstr = buf + 1;
    for (repstr = srchstr; *repstr && *repstr != '^'; ++repstr);
    if (*repstr) {
	searchlen = repstr - srchstr;
	*repstr = '\0';
	++repstr;
    }
    replacelen = strlen(repstr);

    for (ptr = hb = last_history_entry(); *ptr; ++ptr) {
	if (strncmp(ptr, srchstr, searchlen) == 0) {
	    bmov(hb, res, ptr - hb);	     /* first part of history	*/
	    res[ptr-hb] = '\0';              /* add 0                   */
	    strcat(res, repstr);	     /* add replace string	*/
	    strcat(res, ptr+searchlen);      /* add rest of history	*/
	    strcpy(buf, res);		     /* copy			*/
	    puts (buf);
	    return(1);			     /* done			*/
	}
    }
    puts ("modifier failed");
    *buf = '\0';
    return(0);
}


