/* Serial interface for a pipe to a separate program
- Copyright (C) 1999-2017 Free Software Foundation, Inc.
+ Copyright (C) 1999-2023 Free Software Foundation, Inc.
Contributed by Cygnus Solutions.
#include <sys/types.h>
#include <sys/socket.h>
-#include "gdb_sys_time.h"
+#include "gdbsupport/gdb_sys_time.h"
#include <fcntl.h>
-#include "filestuff.h"
+#include "gdbsupport/filestuff.h"
+#include "gdbsupport/pathstuff.h"
#include <signal.h>
static int pipe_open (struct serial *scb, const char *name);
static void pipe_close (struct serial *scb);
-extern void _initialize_ser_pipe (void);
-
struct pipe_state
{
int pid;
int err_pdes[2];
int pid;
+ if (*name == '|')
+ {
+ name++;
+ name = skip_spaces (name);
+ }
+
if (gdb_socketpair_cloexec (AF_UNIX, SOCK_STREAM, 0, pdes) < 0)
return -1;
if (gdb_socketpair_cloexec (AF_UNIX, SOCK_STREAM, 0, err_pdes) < 0)
}
close_most_fds ();
- execl ("/bin/sh", "sh", "-c", name, (char *) 0);
+
+ const char *shellfile = get_shell ();
+ execl (shellfile, shellfile, "-c", name, (char *) 0);
_exit (127);
}
ser_base_copy_tty_state,
ser_base_set_tty_state,
ser_base_print_tty_state,
- ser_base_noflush_set_tty_state,
ser_base_setbaudrate,
ser_base_setstopbits,
ser_base_setparity,
ser_unix_write_prim
};
+void _initialize_ser_pipe ();
void
-_initialize_ser_pipe (void)
+_initialize_ser_pipe ()
{
serial_add_interface (&pipe_ops);
}