annotate readline/examples/histexamp.c @ 2996:9d4e3a9de17e

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