Readline 5.1 import for HEAD.
[deliverable/binutils-gdb.git] / readline / examples / histexamp.c
index 45651dfb13792b71ec2e61c4b47d0309cece4bd2..4f059c17cc334dfe11e6a3d409f5fd5cce2a8c2e 100644 (file)
 #  include <readline/history.h>
 #endif
 
+#include <string.h>
+
 main (argc, argv)
      int argc;
      char **argv;
 {
   char line[1024], *t;
-  int len, done = 0;
+  int len, done;
 
   line[0] = 0;
+  done = 0;
 
   using_history ();
   while (!done)
@@ -42,71 +45,80 @@ main (argc, argv)
       fflush (stdout);
       t = fgets (line, sizeof (line) - 1, stdin);
       if (t && *t)
-        {
-          len = strlen (t);
-          if (t[len - 1] == '\n')
-            t[len - 1] = '\0';
-        }
+       {
+         len = strlen (t);
+         if (t[len - 1] == '\n')
+           t[len - 1] = '\0';
+       }
 
       if (!t)
-        strcpy (line, "quit");
+       strcpy (line, "quit");
 
       if (line[0])
-        {
-          char *expansion;
-          int result;
+       {
+         char *expansion;
+         int result;
 
-          using_history ();
+         using_history ();
 
-          result = history_expand (line, &expansion);
-          if (result)
-            fprintf (stderr, "%s\n", expansion);
+         result = history_expand (line, &expansion);
+         if (result)
+           fprintf (stderr, "%s\n", expansion);
 
-          if (result < 0 || result == 2)
-            {
-              free (expansion);
-              continue;
-            }
+         if (result < 0 || result == 2)
+           {
+             free (expansion);
+             continue;
+           }
 
-          add_history (expansion);
-          strncpy (line, expansion, sizeof (line) - 1);
-          free (expansion);
-        }
+         add_history (expansion);
+         strncpy (line, expansion, sizeof (line) - 1);
+         free (expansion);
+       }
 
       if (strcmp (line, "quit") == 0)
-        done = 1;
+       done = 1;
       else if (strcmp (line, "save") == 0)
-        write_history ("history_file");
+       write_history ("history_file");
       else if (strcmp (line, "read") == 0)
-        read_history ("history_file");
+       read_history ("history_file");
       else if (strcmp (line, "list") == 0)
-        {
-          register HIST_ENTRY **the_list;
-          register int i;
-
-          the_list = history_list ();
-          if (the_list)
-            for (i = 0; the_list[i]; i++)
-              printf ("%d: %s\n", i + history_base, the_list[i]->line);
-        }
+       {
+         register HIST_ENTRY **the_list;
+         register int i;
+         time_t tt;
+         char timestr[128];
+
+         the_list = history_list ();
+         if (the_list)
+           for (i = 0; the_list[i]; i++)
+             {
+               tt = history_get_time (the_list[i]);
+               if (tt)
+                 strftime (timestr, sizeof (timestr), "%a %R", localtime(&tt));
+               else
+                 strcpy (timestr, "??");
+               printf ("%d: %s: %s\n", i + history_base, timestr, the_list[i]->line);
+             }
+       }
       else if (strncmp (line, "delete", 6) == 0)
-        {
-          int which;
-          if ((sscanf (line + 6, "%d", &which)) == 1)
-            {
-              HIST_ENTRY *entry = remove_history (which);
-              if (!entry)
-                fprintf (stderr, "No such entry %d\n", which);
-              else
-                {
-                  free (entry->line);
-                  free (entry);
-                }
-            }
-          else
-            {
-              fprintf (stderr, "non-numeric arg given to `delete'\n");
-            }
-        }
+       {
+         int which;
+         if ((sscanf (line + 6, "%d", &which)) == 1)
+           {
+             HIST_ENTRY *entry = remove_history (which);
+             if (!entry)
+               fprintf (stderr, "No such entry %d\n", which);
+             else
+               {
+                 free (entry->line);
+                 free (entry);
+               }
+           }
+         else
+           {
+             fprintf (stderr, "non-numeric arg given to `delete'\n");
+           }
+       }
     }
 }
This page took 0.025274 seconds and 4 git commands to generate.