X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;ds=sidebyside;f=gdb%2Fser-unix.c;h=6389712f567879cf8200c2e9fb107196eb552673;hb=3f9d8762a4b24873f22197d004a8710e9a8557ca;hp=9ec8bb109992f101fbaee8b7602834ad5df1e682;hpb=28e7fd62340426746f9c896cbc40c5d374ec47aa;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/ser-unix.c b/gdb/ser-unix.c index 9ec8bb1099..6389712f56 100644 --- a/gdb/ser-unix.c +++ b/gdb/ser-unix.c @@ -1,6 +1,6 @@ /* Serial interface for local (hardwired) serial ports on Un*x like systems - Copyright (C) 1992-2013 Free Software Foundation, Inc. + Copyright (C) 1992-2014 Free Software Foundation, Inc. This file is part of GDB. @@ -29,8 +29,8 @@ #include #include "gdb_select.h" -#include "gdb_string.h" #include "gdbcmd.h" +#include "filestuff.h" #ifdef HAVE_TERMIOS @@ -107,7 +107,7 @@ void _initialize_ser_hardwire (void); static int hardwire_open (struct serial *scb, const char *name) { - scb->fd = open (name, O_RDWR); + scb->fd = gdb_open_cloexec (name, O_RDWR, 0); if (scb->fd < 0) return -1; @@ -904,37 +904,41 @@ hardwire_close (struct serial *scb) } -void -_initialize_ser_hardwire (void) -{ - struct serial_ops *ops = XMALLOC (struct serial_ops); - memset (ops, 0, sizeof (struct serial_ops)); - ops->name = "hardwire"; - ops->next = 0; - ops->open = hardwire_open; - ops->close = hardwire_close; +/* The hardwire ops. */ + +static const struct serial_ops hardwire_ops = +{ + "hardwire", + hardwire_open, + hardwire_close, + NULL, /* FIXME: Don't replace this with the equivalent ser_base*() until the old TERMIOS/SGTTY/... timer code has been flushed. cagney 1999-09-16. */ - ops->readchar = hardwire_readchar; - ops->write = ser_base_write; - ops->flush_output = hardwire_flush_output; - ops->flush_input = hardwire_flush_input; - ops->send_break = hardwire_send_break; - ops->go_raw = hardwire_raw; - ops->get_tty_state = hardwire_get_tty_state; - ops->copy_tty_state = hardwire_copy_tty_state; - ops->set_tty_state = hardwire_set_tty_state; - ops->print_tty_state = hardwire_print_tty_state; - ops->noflush_set_tty_state = hardwire_noflush_set_tty_state; - ops->setbaudrate = hardwire_setbaudrate; - ops->setstopbits = hardwire_setstopbits; - ops->drain_output = hardwire_drain_output; - ops->async = ser_base_async; - ops->read_prim = ser_unix_read_prim; - ops->write_prim = ser_unix_write_prim; - serial_add_interface (ops); + hardwire_readchar, + ser_base_write, + hardwire_flush_output, + hardwire_flush_input, + hardwire_send_break, + hardwire_raw, + hardwire_get_tty_state, + hardwire_copy_tty_state, + hardwire_set_tty_state, + hardwire_print_tty_state, + hardwire_noflush_set_tty_state, + hardwire_setbaudrate, + hardwire_setstopbits, + hardwire_drain_output, + ser_base_async, + ser_unix_read_prim, + ser_unix_write_prim +}; + +void +_initialize_ser_hardwire (void) +{ + serial_add_interface (&hardwire_ops); #ifdef HAVE_TERMIOS #ifdef CRTSCTS