/* Generic serial interface routines
- Copyright 1992, 1993, 1996, 1997, 1999 Free Software Foundation, Inc.
+
+ Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+ Free Software Foundation, Inc.
This file is part of GDB.
suitable for playback by gdbserver. */
static char *serial_logfile = NULL;
-static GDB_FILE *serial_logfp = NULL;
+static struct ui_file *serial_logfp = NULL;
static struct serial_ops *serial_interface_lookup (char *);
-static void serial_logchar (struct gdb_file *stream, int ch_type, int ch, int timeout);
-static char logbase_hex[] = "hex";
-static char logbase_octal[] = "octal";
-static char logbase_ascii[] = "ascii";
-static char *logbase_enums[] =
+static void serial_logchar (struct ui_file *stream, int ch_type, int ch, int timeout);
+static const char logbase_hex[] = "hex";
+static const char logbase_octal[] = "octal";
+static const char logbase_ascii[] = "ascii";
+static const char *logbase_enums[] =
{logbase_hex, logbase_octal, logbase_ascii, NULL};
-static char *serial_logbase = logbase_ascii;
+static const char *serial_logbase = logbase_ascii;
\f
#define SERIAL_BREAK 1235
static void
-serial_logchar (struct gdb_file *stream, int ch_type, int ch, int timeout)
+serial_logchar (struct ui_file *stream, int ch_type, int ch, int timeout)
{
if (ch_type != serial_current_type)
{
if (scb->ops->open (scb, open_name))
{
- free (scb);
+ xfree (scb);
return NULL;
}
- scb->name = strsave (name);
+ scb->name = xstrdup (name);
scb->next = scb_base;
scb->refcnt = 1;
scb->debug_p = 0;
serial_current_type = 0;
/* XXX - What if serial_logfp == gdb_stdout or gdb_stderr? */
- gdb_fclose (&serial_logfp);
+ ui_file_delete (serial_logfp);
serial_logfp = NULL;
}
scb->ops->close (scb);
if (scb->name)
- free (scb->name);
+ xfree (scb->name);
if (scb_base == scb)
scb_base = scb_base->next;
break;
}
- free (scb);
+ xfree (scb);
}
void
/* FIXME: cagney/1999-10-11: Don't enable this check until the ASYNC
code is finished. */
if (0 && SERIAL_IS_ASYNC_P (scb) && timeout < 0)
- internal_error ("serial_readchar: blocking read in async mode");
+ internal_error (__FILE__, __LINE__,
+ "serial_readchar: blocking read in async mode");
ch = scb->ops->readchar (scb, timeout);
if (serial_logfp != NULL)
char *buf;
va_start (args, format);
- vasprintf (&buf, format, args);
+ xvasprintf (&buf, format, args);
SERIAL_WRITE (desc, buf, strlen (buf));
- free (buf);
+ xfree (buf);
va_end (args);
}
void
serial_print_tty_state (serial_t scb,
serial_ttystate ttystate,
- struct gdb_file *stream)
+ struct ui_file *stream)
{
scb->ops->print_tty_state (scb, ttystate, stream);
}
called? */
if (scb->fd < 0)
{
- internal_error ("serial: FD not valid");
+ internal_error (__FILE__, __LINE__,
+ "serial: FD not valid");
}
return scb->fd; /* sigh */
}
{
printf_unfiltered ("\r\n[Exiting connect mode]\r\n");
SERIAL_SET_TTY_STATE (tty_desc, ttystate);
- free (ttystate);
+ xfree (ttystate);
SERIAL_CLOSE (tty_desc);
}
add_show_from_set
(add_set_enum_cmd ("remotelogbase", no_class,
- logbase_enums, (char *) &serial_logbase,
+ logbase_enums, &serial_logbase,
"Set numerical base for remote session logging",
&setlist),
&showlist);
- add_show_from_set (add_set_cmd ("serialdebug",
+ add_show_from_set (add_set_cmd ("serial",
class_maintenance,
var_zinteger,
(char *)&global_serial_debug_p,
"Set serial debugging.\n\
-When non-zero, serial port debugging is enabled.", &setlist),
- &showlist);
+When non-zero, serial port debugging is enabled.", &setdebuglist),
+ &showdebuglist);
}