[OB] Introduce new shared function fileio_to_host_openflags
Commit Message
Hi all,
This commit introduces a new shared function to replace identical
functions in GDB and gdbserver.
Pushed as obvious.
My apologies but the ChangeLog entries didn't get pulled into the
commit message as usual. I've inlined them below.
Thanks,
Gary
gdb/ChangeLog:
* common/fileio.h (fileio_to_host_openflags): New declaration.
* common/fileio.c (fcntl.h): New include.
(fileio_to_host_openflags): New function, factored out from...
* inf-child.c (inf_child_fileio_open_flags_to_host): ...here.
Single use updated.
gdb/gdbserver/ChangeLog:
* hostio.c (fileio_open_flags_to_host): Factored out to
fileio_to_host_openflags in common/fileio.c. Single use
updated.
---
gdb/ChangeLog | 8 ++++++++
gdb/common/fileio.c | 35 +++++++++++++++++++++++++++++++++++
gdb/common/fileio.h | 5 +++++
gdb/gdbserver/ChangeLog | 6 ++++++
gdb/gdbserver/hostio.c | 34 +---------------------------------
gdb/inf-child.c | 37 +------------------------------------
6 files changed, 56 insertions(+), 69 deletions(-)
@@ -20,6 +20,7 @@
#include "common-defs.h"
#include "fileio.h"
#include <sys/stat.h>
+#include <fcntl.h>
/* See fileio.h. */
@@ -74,6 +75,40 @@ host_to_fileio_error (int error)
return FILEIO_EUNKNOWN;
}
+/* See fileio.h. */
+
+int
+fileio_to_host_openflags (int fileio_open_flags, int *open_flags_p)
+{
+ int open_flags = 0;
+
+ if (fileio_open_flags & ~FILEIO_O_SUPPORTED)
+ return -1;
+
+ if (fileio_open_flags & FILEIO_O_CREAT)
+ open_flags |= O_CREAT;
+ if (fileio_open_flags & FILEIO_O_EXCL)
+ open_flags |= O_EXCL;
+ if (fileio_open_flags & FILEIO_O_TRUNC)
+ open_flags |= O_TRUNC;
+ if (fileio_open_flags & FILEIO_O_APPEND)
+ open_flags |= O_APPEND;
+ if (fileio_open_flags & FILEIO_O_RDONLY)
+ open_flags |= O_RDONLY;
+ if (fileio_open_flags & FILEIO_O_WRONLY)
+ open_flags |= O_WRONLY;
+ if (fileio_open_flags & FILEIO_O_RDWR)
+ open_flags |= O_RDWR;
+ /* On systems supporting binary and text mode, always open files
+ in binary mode. */
+#ifdef O_BINARY
+ open_flags |= O_BINARY;
+#endif
+
+ *open_flags_p = open_flags;
+ return 0;
+}
+
/* Convert a host-format mode_t into a bitmask of File-I/O flags. */
static LONGEST
@@ -27,6 +27,11 @@
extern int host_to_fileio_error (int error);
+/* Convert File-I/O open flags FFLAGS to host format, storing
+ the result in *FLAGS. Return 0 on success, -1 on error. */
+
+extern int fileio_to_host_openflags (int fflags, int *flags);
+
/* Pack a host-format integer into a byte buffer in big-endian
format. BYTES specifies the size of the integer to pack in
bytes. */
@@ -243,38 +243,6 @@ hostio_reply_with_data (char *own_buf, char *buffer, int len,
return input_index;
}
-static int
-fileio_open_flags_to_host (int fileio_open_flags, int *open_flags_p)
-{
- int open_flags = 0;
-
- if (fileio_open_flags & ~FILEIO_O_SUPPORTED)
- return -1;
-
- if (fileio_open_flags & FILEIO_O_CREAT)
- open_flags |= O_CREAT;
- if (fileio_open_flags & FILEIO_O_EXCL)
- open_flags |= O_EXCL;
- if (fileio_open_flags & FILEIO_O_TRUNC)
- open_flags |= O_TRUNC;
- if (fileio_open_flags & FILEIO_O_APPEND)
- open_flags |= O_APPEND;
- if (fileio_open_flags & FILEIO_O_RDONLY)
- open_flags |= O_RDONLY;
- if (fileio_open_flags & FILEIO_O_WRONLY)
- open_flags |= O_WRONLY;
- if (fileio_open_flags & FILEIO_O_RDWR)
- open_flags |= O_RDWR;
-/* On systems supporting binary and text mode, always open files in
- binary mode. */
-#ifdef O_BINARY
- open_flags |= O_BINARY;
-#endif
-
- *open_flags_p = open_flags;
- return 0;
-}
-
static void
handle_open (char *own_buf)
{
@@ -291,7 +259,7 @@ handle_open (char *own_buf)
|| require_comma (&p)
|| require_int (&p, &mode)
|| require_end (p)
- || fileio_open_flags_to_host (fileio_flags, &flags))
+ || fileio_to_host_openflags (fileio_flags, &flags))
{
hostio_packet_error (own_buf);
return;
@@ -204,41 +204,6 @@ inf_child_pid_to_exec_file (struct target_ops *self, int pid)
return NULL;
}
-
-/* Target file operations. */
-
-static int
-inf_child_fileio_open_flags_to_host (int fileio_open_flags, int *open_flags_p)
-{
- int open_flags = 0;
-
- if (fileio_open_flags & ~FILEIO_O_SUPPORTED)
- return -1;
-
- if (fileio_open_flags & FILEIO_O_CREAT)
- open_flags |= O_CREAT;
- if (fileio_open_flags & FILEIO_O_EXCL)
- open_flags |= O_EXCL;
- if (fileio_open_flags & FILEIO_O_TRUNC)
- open_flags |= O_TRUNC;
- if (fileio_open_flags & FILEIO_O_APPEND)
- open_flags |= O_APPEND;
- if (fileio_open_flags & FILEIO_O_RDONLY)
- open_flags |= O_RDONLY;
- if (fileio_open_flags & FILEIO_O_WRONLY)
- open_flags |= O_WRONLY;
- if (fileio_open_flags & FILEIO_O_RDWR)
- open_flags |= O_RDWR;
-/* On systems supporting binary and text mode, always open files in
- binary mode. */
-#ifdef O_BINARY
- open_flags |= O_BINARY;
-#endif
-
- *open_flags_p = open_flags;
- return 0;
-}
-
/* Open FILENAME on the target, using FLAGS and MODE. Return a
target file descriptor, or -1 if an error occurs (and set
*TARGET_ERRNO). */
@@ -250,7 +215,7 @@ inf_child_fileio_open (struct target_ops *self,
int nat_flags;
int fd;
- if (inf_child_fileio_open_flags_to_host (flags, &nat_flags) == -1)
+ if (fileio_to_host_openflags (flags, &nat_flags) == -1)
{
*target_errno = FILEIO_EINVAL;
return -1;