Don't deprecate powerpc mftb insn
[platform/upstream/binutils.git] / readline / examples / rlevent.c
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
31 #include <stdio.h>
32 #include <sys/types.h>
33
34 #ifdef HAVE_STDLIB_H
35 #  include <stdlib.h>
36 #else 
37 extern void exit();
38 #endif
39
40 #if defined (READLINE_LIBRARY)
41 #  include "posixstat.h"
42 #  include "readline.h"
43 #  include "history.h"
44 #else
45 #  include <sys/stat.h>
46 #  include <readline/readline.h>
47 #  include <readline/history.h>
48 #endif
49
50 extern int optind;
51 extern char *optarg;
52
53 #if !defined (strchr) && !defined (__STDC__)
54 extern char *strrchr();
55 #endif
56
57 static char *progname;
58 static char *deftext;
59
60 static int
61 event_hook ()
62 {
63   fprintf (stderr, "ding!\n");
64   sleep (1);
65   return 0;
66 }
67
68 static int
69 set_deftext ()
70 {
71   if (deftext)
72     {
73       rl_insert_text (deftext);
74       deftext = (char *)NULL;
75       rl_startup_hook = (rl_hook_func_t *)NULL;
76     }
77   return 0;
78 }
79
80 static void
81 usage()
82 {
83   fprintf (stderr, "%s: usage: %s [-p prompt] [-u unit] [-d default] [-n nchars]\n",
84                 progname, progname);
85 }
86
87 int
88 main (argc, argv)
89      int argc;
90      char **argv;
91 {
92   char *temp, *prompt;
93   struct stat sb;
94   int opt, fd, nch;
95   FILE *ifp;
96
97   progname = strrchr(argv[0], '/');
98   if (progname == 0)
99     progname = argv[0];
100   else
101     progname++;
102
103   /* defaults */
104   prompt = "readline$ ";
105   fd = nch = 0;
106   deftext = (char *)0;
107
108   while ((opt = getopt(argc, argv, "p:u:d:n:")) != EOF)
109     {
110       switch (opt)
111         {
112         case 'p':
113           prompt = optarg;
114           break;
115         case 'u':
116           fd = atoi(optarg);
117           if (fd < 0)
118             {
119               fprintf (stderr, "%s: bad file descriptor `%s'\n", progname, optarg);
120               exit (2);
121             }
122           break;
123         case 'd':
124           deftext = optarg;
125           break;
126         case 'n':
127           nch = atoi(optarg);
128           if (nch < 0)
129             {
130               fprintf (stderr, "%s: bad value for -n: `%s'\n", progname, optarg);
131               exit (2);
132             }
133           break;
134         default:
135           usage ();
136           exit (2);
137         }
138     }
139
140   if (fd != 0)
141     {
142       if (fstat (fd, &sb) < 0)
143         {
144           fprintf (stderr, "%s: %d: bad file descriptor\n", progname, fd);
145           exit (1);
146         }
147       ifp = fdopen (fd, "r");
148       rl_instream = ifp;
149     }
150
151   if (deftext && *deftext)
152     rl_startup_hook = set_deftext;
153
154   if (nch > 0)
155     rl_num_chars_to_read = nch;
156
157   rl_event_hook = event_hook;
158   temp = readline (prompt);
159
160   /* Test for EOF. */
161   if (temp == 0)
162     exit (1);
163
164   printf ("%s\n", temp);
165   exit (0);
166 }