X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=ao-tools%2Fao-dbg%2Fao-dbg-main.c;h=8c87903510b5a325297afca854a1944a4cccbdaf;hp=f1e2c11199122a5ca4b1ca5b19a5c59fb7f839b7;hb=f14c799ae7ff3be56c28f5694f04c03daff7708e;hpb=4685fc541466afbeefc151bcb64cd054739c048b diff --git a/ao-tools/ao-dbg/ao-dbg-main.c b/ao-tools/ao-dbg/ao-dbg-main.c index f1e2c111..8c879035 100644 --- a/ao-tools/ao-dbg/ao-dbg-main.c +++ b/ao-tools/ao-dbg/ao-dbg-main.c @@ -16,6 +16,10 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include "ao-dbg.h" #include #include @@ -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 #include +#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