OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [branches/] [oc/] [gdb-5.0/] [readline/] [examples/] [histexamp.c] - Blame information for rev 106

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 106 markom
main ()
2
{
3
  char line[1024], *t;
4
  int len, done = 0;
5
 
6
  line[0] = 0;
7
 
8
  using_history ();
9
  while (!done)
10
    {
11
      printf ("history$ ");
12
      fflush (stdout);
13
      t = fgets (line, sizeof (line) - 1, stdin);
14
      if (t && *t)
15
        {
16
          len = strlen (t);
17
          if (t[len - 1] == '\n')
18
            t[len - 1] = '\0';
19
        }
20
 
21
      if (!t)
22
        strcpy (line, "quit");
23
 
24
      if (line[0])
25
        {
26
          char *expansion;
27
          int result;
28
 
29
          using_history ();
30
 
31
          result = history_expand (line, &expansion);
32
          if (result)
33
            fprintf (stderr, "%s\n", expansion);
34
 
35
          if (result < 0 || result == 2)
36
            {
37
              free (expansion);
38
              continue;
39
            }
40
 
41
          add_history (expansion);
42
          strncpy (line, expansion, sizeof (line) - 1);
43
          free (expansion);
44
        }
45
 
46
      if (strcmp (line, "quit") == 0)
47
        done = 1;
48
      else if (strcmp (line, "save") == 0)
49
        write_history ("history_file");
50
      else if (strcmp (line, "read") == 0)
51
        read_history ("history_file");
52
      else if (strcmp (line, "list") == 0)
53
        {
54
          register HIST_ENTRY **the_list;
55
          register int i;
56
 
57
          the_list = history_list ();
58
          if (the_list)
59
            for (i = 0; the_list[i]; i++)
60
              printf ("%d: %s\n", i + history_base, the_list[i]->line);
61
        }
62
      else if (strncmp (line, "delete", 6) == 0)
63
        {
64
          int which;
65
          if ((sscanf (line + 6, "%d", &which)) == 1)
66
            {
67
              HIST_ENTRY *entry = remove_history (which);
68
              if (!entry)
69
                fprintf (stderr, "No such entry %d\n", which);
70
              else
71
                {
72
                  free (entry->line);
73
                  free (entry);
74
                }
75
            }
76
          else
77
            {
78
              fprintf (stderr, "non-numeric arg given to `delete'\n");
79
            }
80
        }
81
    }
82
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.