ao-tools: Add lots of compiler warning flags to ao-tools build
[fw/altos] / ao-tools / ao-dbg / ao-dbg-main.c
index f1e2c11199122a5ca4b1ca5b19a5c59fb7f839b7..8c87903510b5a325297afca854a1944a4cccbdaf 100644 (file)
  * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
  */
 
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
 #include "ao-dbg.h"
 #include <unistd.h>
 #include <sys/types.h>
@@ -34,6 +38,7 @@ struct ccdbg *s51_dbg;
 int s51_interrupted = 0;
 int s51_monitor = 0;
 char *s51_tty = NULL;
+char *s51_device = NULL;
 
 static FILE *s51_input;
 static FILE *s51_output;
@@ -52,6 +57,7 @@ void s51_sigint()
 
 static const struct option options[] = {
        { .name = "tty", .has_arg = 1, .val = 'T' },
+       { .name = "device", .has_arg = 1, .val = 'D' },
        { 0, 0, 0, 0 },
 };
 
@@ -60,7 +66,6 @@ main(int argc, char **argv)
 {
        int flags, opt;
        char *endptr;
-       struct sigvec vec, ovec;
 
        while ((opt = getopt_long(argc, argv, "PVvHhmt:X:c:r:Z:s:S:p:T:", options, NULL)) != -1) {
                switch (opt) {
@@ -114,6 +119,9 @@ main(int argc, char **argv)
                case 'T':
                        s51_tty = optarg;
                        break;
+               case 'D':
+                       s51_device = optarg;
+                       break;
                }
        }
        if (s51_port) {
@@ -160,22 +168,16 @@ main(int argc, char **argv)
                                perror("fdopen");
                                exit(1);
                        }
-                       vec.sv_handler = SIG_IGN;
-                       vec.sv_mask = 0;
-                       vec.sv_flags = 0;
-                       sigvec(SIGINT, &vec, &ovec);
+                       signal(SIGINT, SIG_IGN);
                        command_read();
-                       sigvec(SIGINT, &ovec, NULL);
+                       signal(SIGINT, SIG_DFL);
                        fclose(s51_input);
                        fclose(s51_output);
                }
        } else {
                s51_input = stdin;
                s51_output = stdout;
-               vec.sv_handler = s51_sigint;
-               vec.sv_mask = 0;
-               vec.sv_flags = 0;
-               sigvec(SIGINT, &vec, &ovec);
+               signal(SIGINT, s51_sigint);
                command_read();
        }
        exit(0);
@@ -199,13 +201,16 @@ s51_putc(int c)
        putc(c, s51_output);
 }
 
+#if HAVE_LIBREADLINE
 #include <readline/readline.h>
 #include <readline/history.h>
+#endif
 
 int
 s51_read_line(char *line, int len)
 {
        int ret;
+#if HAVE_LIBREADLINE
        if (s51_output == stdout && s51_input == stdin && s51_prompt) {
                char *r;
 
@@ -216,7 +221,9 @@ s51_read_line(char *line, int len)
                line[len-1] = '\0';
                add_history(r);
                return 1;
-       } else {
+       } else
+#endif
+       {
                if (s51_prompt)
                        s51_printf("%s", s51_prompt);
                else