
/*
 *    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);
}


