#include stdio

/*
 * history.c - history list analyzer
 *
 * written by C. Bongiovanni - October 1984
 */

char s[132];
char l[9] = "eventXXX";
char symbol[4] = "cnt";
char value[5] = "    ";
char hsym[5] = "hsym";
char hval[5];
long dscs[2] = {131,s};
long dscl[2] = {8,l};
long dsc[2] = {3,symbol};
long ret_buf[2] = {4,value};
long ret_len, tbl_ind;
long dschs[2] = {4,hsym};
long dschv[2] = {4,hval};
int eventno;
int histlen;

main (argc,argv)
char **argv;

{
   int start;
   int i;
   inithistory ();
   if (--argc > 1)
      printf ("history: bad parameter number\n");
   else {
      if (argc > 0) {
         if ((i = atoi(argv[argc])) == 0) {
            printf ("history: bad parameter value\n");
            exit ();
         } else if (i < 0)
            start = eventno + i;
         else {
            sprintf (l,"event%s\0",argv[argc]);
            dscl[0] = strlen (l);
            if (lib$get_symbol (dscl,dscs,&ret_len,&tbl_ind) != 1)
               printf ("\t%s: event not found\n",argv[argc]);
            else {
               s[ret_len] = '\0';
               printf ("\t%s: %s\n",argv[argc],s);
            }
            exit ();
         }
      } else if (histlen == -1)
         start = 1;
      else
         start = eventno - histlen + 1;
      for ( i=start ; i<eventno ; i++ ) {
         sprintf (l,"event%d\0",i);
         dscl[0] = strlen (l);
         if (lib$get_symbol (dscl,dscs,&ret_len,&tbl_ind) != 1)
            printf ("\t%d: event not found\n",i);
         else {
            s[ret_len] = '\0';
            printf ("\t%d: %s\n",i,s);
         }
      }
   }
}

inithistory ()
{
   if (lib$get_symbol (dsc,ret_buf,&ret_len,&tbl_ind) != 1)
      strcpy (value,"1");
   else
      value[ret_len] = '\0';
   eventno = atoi (value);
   if (lib$get_symbol (dschs,dschv,&ret_len,&tbl_ind) != 1)
      strcpy (hval,"-1");
   else
      hval[ret_len] = '\0';
   histlen = atoi (hval);
}
