[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH] ios: replace `strerror' with `strerror_r' for dev-mmap
From: |
Mohammad-Reza Nabipoor |
Subject: |
[PATCH] ios: replace `strerror' with `strerror_r' for dev-mmap |
Date: |
Sun, 25 Feb 2024 23:39:35 +0100 |
2024-02-25 Mohammad-Reza Nabipoor <mnabipoor@gnu.org>
* bootstrap.conf (libpoke_modules): Add `strerror_r-posix'.
* libpoke/ios-dev-mmap.c (ios_dev_mmap_open): Replace `strerror'
with `strerror_r'.
(ios_dev_mmap_flush): Likewise.
* testsuite/poke.cmd/mmap-diag-1.pk: New test.
* testsuite/Makefile.am (EXTRA_DIST): Add new test.
---
Hi,
@jemarch
I'm not sure using "Invalid argument" text in the tests is portable enough.
We can drop the test. The rest of the patch should be OK.
@bhaible
In `testsuite/poke.cmd/mmap-diag-1.pk', I'm matching on string
"Invalid argument" for invalid invocation of `open', do you think expecting
all platforms to return EINVAL and all strerror_r implementations to return
"Invalid argument" string is OK?
Regards,
Mohammad-Reza
ChangeLog | 9 +++++++++
bootstrap.conf | 1 +
libpoke/ios-dev-mmap.c | 27 ++++++++++++++++++++-------
testsuite/Makefile.am | 1 +
testsuite/poke.cmd/mmap-diag-1.pk | 4 ++++
5 files changed, 35 insertions(+), 7 deletions(-)
create mode 100644 testsuite/poke.cmd/mmap-diag-1.pk
diff --git a/ChangeLog b/ChangeLog
index 5c038cda..df7f35f8 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2024-02-25 Mohammad-Reza Nabipoor <mnabipoor@gnu.org>
+
+ * bootstrap.conf (libpoke_modules): Add `strerror_r-posix'.
+ * libpoke/ios-dev-mmap.c (ios_dev_mmap_open): Replace `strerror'
+ with `strerror_r'.
+ (ios_dev_mmap_flush): Likewise.
+ * testsuite/poke.cmd/mmap-diag-1.pk: New test.
+ * testsuite/Makefile.am (EXTRA_DIST): Add new test.
+
2024-02-25 Mohammad-Reza Nabipoor <mnabipoor@gnu.org>
* libpoke/pkl.c (pkl_resolve_module): Handle failure of `asprintf'.
diff --git a/bootstrap.conf b/bootstrap.conf
index 0934ebf6..127c5a4a 100644
--- a/bootstrap.conf
+++ b/bootstrap.conf
@@ -105,6 +105,7 @@ libpoke_modules="
strchrnul
streq
string-buffer
+ strerror_r-posix
strndup
strtoull
signal-h
diff --git a/libpoke/ios-dev-mmap.c b/libpoke/ios-dev-mmap.c
index 7650b795..02fd0025 100644
--- a/libpoke/ios-dev-mmap.c
+++ b/libpoke/ios-dev-mmap.c
@@ -199,8 +199,11 @@ ios_dev_mmap_open (const char *handler, uint64_t flags,
int *error,
fd = open (dev_map->filename, open_flags);
if (fd == -1)
{
+ char errbuf[128];
+
+ strerror_r (errno, errbuf, sizeof (errbuf));
pk_printf ("Error in open of %s err: %s\n",
- dev_map->filename, strerror (errno));
+ dev_map->filename, errbuf);
goto err;
}
flags = mode_flags;
@@ -229,8 +232,11 @@ ios_dev_mmap_open (const char *handler, uint64_t flags,
int *error,
}
if (fd == -1)
{
+ char errbuf[128];
+
+ strerror_r (errno, errbuf, sizeof (errbuf));
pk_printf ("Error in open of %s err: %s\n",
- dev_map->filename, strerror (errno));
+ dev_map->filename, errbuf);
goto err;
}
}
@@ -240,8 +246,10 @@ ios_dev_mmap_open (const char *handler, uint64_t flags,
int *error,
ret = fstat (fd, &st);
if (ret == -1)
{
- pk_printf ("Error in fstat of %s err: %s\n",
- dev_map->filename, strerror (errno));
+ char errbuf[128];
+
+ strerror_r (errno, errbuf, sizeof (errbuf));
+ pk_printf ("Error in fstat of %s err: %s\n", dev_map->filename, errbuf);
goto err;
}
if ((st.st_mode & S_IFMT) == S_IFREG)
@@ -261,9 +269,12 @@ ios_dev_mmap_open (const char *handler, uint64_t flags,
int *error,
fd, dev_map->base);
if (dev_map->addr == MAP_FAILED)
{
+ char errbuf[128];
+
+ strerror_r (errno, errbuf, sizeof (errbuf));
pk_printf ("Error in mmap of %s base: 0x%x len: 0x%x prot: 0x%x err:
%s\n",
dev_map->filename, dev_map->base, dev_map->size,
- dev_map->prot, strerror (errno));
+ dev_map->prot, errbuf);
internal_error = IOD_EMMAP;
goto err;
}
@@ -435,9 +446,11 @@ ios_dev_mmap_flush (void *iod, ios_dev_off offset)
ret = msync (dev_map->addr, dev_map->size, MS_SYNC);
if (ret == -1)
{
+ char errbuf[128];
+
+ strerror_r (errno, errbuf, sizeof (errbuf));
pk_printf ("Error in msync of %s base: 0x%lx len: 0x%lx err: %s\n",
- dev_map->filename, dev_map->addr, dev_map->size,
- strerror (errno));
+ dev_map->filename, dev_map->addr, dev_map->size, errbuf);
return IOD_ERROR;
}
}
diff --git a/testsuite/Makefile.am b/testsuite/Makefile.am
index abd33ed5..aca3f219 100644
--- a/testsuite/Makefile.am
+++ b/testsuite/Makefile.am
@@ -97,6 +97,7 @@ EXTRA_DIST = \
poke.cmd/maps-alien-1.pk \
poke.cmd/mmap-1.pk \
poke.cmd/mmap-2.pk \
+ poke.cmd/mmap-diag-1.pk \
poke.cmd/nbd-1.pk \
poke.cmd/save-1.pk \
poke.cmd/save-2.pk \
diff --git a/testsuite/poke.cmd/mmap-diag-1.pk
b/testsuite/poke.cmd/mmap-diag-1.pk
new file mode 100644
index 00000000..b4c9aa8a
--- /dev/null
+++ b/testsuite/poke.cmd/mmap-diag-1.pk
@@ -0,0 +1,4 @@
+/* { dg-do run } */
+
+/* { dg-command { try open ("mmap://0/0//dev/zero"); catch if E_io { printf
"caught"; } } } */
+/* { dg-output "err: Invalid argument" } */
--
2.43.2
- [PATCH] ios: replace `strerror' with `strerror_r' for dev-mmap,
Mohammad-Reza Nabipoor <=