infcall: refactor 'call_function_by_hand_dummy'
[deliverable/binutils-gdb.git] / readline / examples / rlevent.c
CommitLineData
cc88a640
JK
1/*
2 * rl - command-line interface to read a line from the standard input
3 * (or another fd) using readline.
4 *
5 * usage: rl [-p prompt] [-u unit] [-d default] [-n nchars]
6 */
7
8/* Copyright (C) 1987-2009 Free Software Foundation, Inc.
9
10 This file is part of the GNU Readline Library (Readline), a library for
11 reading lines of text with interactive input and history editing.
12
13 Readline is free software: you can redistribute it and/or modify
14 it under the terms of the GNU General Public License as published by
15 the Free Software Foundation, either version 3 of the License, or
16 (at your option) any later version.
17
18 Readline is distributed in the hope that it will be useful,
19 but WITHOUT ANY WARRANTY; without even the implied warranty of
20 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 GNU General Public License for more details.
22
23 You should have received a copy of the GNU General Public License
24 along with Readline. If not, see <http://www.gnu.org/licenses/>.
25*/
26
27#if defined (HAVE_CONFIG_H)
28# include <config.h>
29#endif
30
cb41b9e7
TT
31#ifdef HAVE_UNISTD_H
32# include <unistd.h>
33#else
34extern int getopt();
35extern int sleep();
36#endif
37
cc88a640
JK
38#include <stdio.h>
39#include <sys/types.h>
40
41#ifdef HAVE_STDLIB_H
42# include <stdlib.h>
43#else
44extern void exit();
45#endif
46
47#if defined (READLINE_LIBRARY)
48# include "posixstat.h"
49# include "readline.h"
50# include "history.h"
51#else
52# include <sys/stat.h>
53# include <readline/readline.h>
54# include <readline/history.h>
55#endif
56
57extern int optind;
58extern char *optarg;
59
60#if !defined (strchr) && !defined (__STDC__)
61extern char *strrchr();
62#endif
63
64static char *progname;
65static char *deftext;
66
67static int
68event_hook ()
69{
70 fprintf (stderr, "ding!\n");
71 sleep (1);
72 return 0;
73}
74
75static int
76set_deftext ()
77{
78 if (deftext)
79 {
80 rl_insert_text (deftext);
81 deftext = (char *)NULL;
82 rl_startup_hook = (rl_hook_func_t *)NULL;
83 }
84 return 0;
85}
86
87static void
88usage()
89{
90 fprintf (stderr, "%s: usage: %s [-p prompt] [-u unit] [-d default] [-n nchars]\n",
91 progname, progname);
92}
93
94int
95main (argc, argv)
96 int argc;
97 char **argv;
98{
99 char *temp, *prompt;
100 struct stat sb;
101 int opt, fd, nch;
102 FILE *ifp;
103
104 progname = strrchr(argv[0], '/');
105 if (progname == 0)
106 progname = argv[0];
107 else
108 progname++;
109
110 /* defaults */
111 prompt = "readline$ ";
112 fd = nch = 0;
113 deftext = (char *)0;
114
115 while ((opt = getopt(argc, argv, "p:u:d:n:")) != EOF)
116 {
117 switch (opt)
118 {
119 case 'p':
120 prompt = optarg;
121 break;
122 case 'u':
123 fd = atoi(optarg);
124 if (fd < 0)
125 {
126 fprintf (stderr, "%s: bad file descriptor `%s'\n", progname, optarg);
127 exit (2);
128 }
129 break;
130 case 'd':
131 deftext = optarg;
132 break;
133 case 'n':
134 nch = atoi(optarg);
135 if (nch < 0)
136 {
137 fprintf (stderr, "%s: bad value for -n: `%s'\n", progname, optarg);
138 exit (2);
139 }
140 break;
141 default:
142 usage ();
143 exit (2);
144 }
145 }
146
147 if (fd != 0)
148 {
149 if (fstat (fd, &sb) < 0)
150 {
151 fprintf (stderr, "%s: %d: bad file descriptor\n", progname, fd);
152 exit (1);
153 }
154 ifp = fdopen (fd, "r");
155 rl_instream = ifp;
156 }
157
158 if (deftext && *deftext)
159 rl_startup_hook = set_deftext;
160
161 if (nch > 0)
162 rl_num_chars_to_read = nch;
163
164 rl_event_hook = event_hook;
165 temp = readline (prompt);
166
167 /* Test for EOF. */
168 if (temp == 0)
169 exit (1);
170
171 printf ("%s\n", temp);
172 exit (0);
173}
This page took 0.371922 seconds and 4 git commands to generate.