All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC PATCH] linux-user: glib-ify is_proc_myself
@ 2021-05-24 11:23 Alex Bennée
  2021-05-24 11:27 ` no-reply
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Alex Bennée @ 2021-05-24 11:23 UTC (permalink / raw)
  To: qemu-devel; +Cc: Alex Bennée, Laurent Vivier, yamamoto

I'm not sure if this is neater than the original code but it does
remove a bunch of the !strcmp's in favour of glib's more natural bool
results. While we are at it make the function a bool return and fixup
the fake_open function prototypes.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
---
 linux-user/syscall.c | 30 ++++++++++++------------------
 1 file changed, 12 insertions(+), 18 deletions(-)

diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index e739921e86..18e953de9d 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -7987,33 +7987,27 @@ static int open_self_auxv(void *cpu_env, int fd)
     return 0;
 }
 
-static int is_proc_myself(const char *filename, const char *entry)
+static bool is_proc_myself(const char *filename, const char *entry)
 {
-    if (!strncmp(filename, "/proc/", strlen("/proc/"))) {
+    if (g_str_has_prefix(filename, "/proc/")) {
         filename += strlen("/proc/");
-        if (!strncmp(filename, "self/", strlen("self/"))) {
+        if (g_str_has_prefix(filename, "self/")) {
             filename += strlen("self/");
-        } else if (*filename >= '1' && *filename <= '9') {
-            char myself[80];
-            snprintf(myself, sizeof(myself), "%d/", getpid());
-            if (!strncmp(filename, myself, strlen(myself))) {
-                filename += strlen(myself);
-            } else {
-                return 0;
+        } else if (g_ascii_isdigit(*filename)) {
+            g_autofree char * myself = g_strdup_printf("%d/", getpid());
+            if (!g_str_has_prefix(filename, myself)) {
+                return false;
             }
-        } else {
-            return 0;
-        }
-        if (!strcmp(filename, entry)) {
-            return 1;
+            filename += strlen(myself);
         }
+        return g_str_has_prefix(filename, entry);
     }
-    return 0;
+    return false;
 }
 
 #if defined(HOST_WORDS_BIGENDIAN) != defined(TARGET_WORDS_BIGENDIAN) || \
     defined(TARGET_SPARC) || defined(TARGET_M68K) || defined(TARGET_HPPA)
-static int is_proc(const char *filename, const char *entry)
+static bool is_proc(const char *filename, const char *entry)
 {
     return strcmp(filename, entry) == 0;
 }
@@ -8097,7 +8091,7 @@ static int do_openat(void *cpu_env, int dirfd, const char *pathname, int flags,
     struct fake_open {
         const char *filename;
         int (*fill)(void *cpu_env, int fd);
-        int (*cmp)(const char *s1, const char *s2);
+        bool (*cmp)(const char *s1, const char *s2);
     };
     const struct fake_open *fake_open;
     static const struct fake_open fakes[] = {
-- 
2.20.1



^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2021-05-24 19:13 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-05-24 11:23 [RFC PATCH] linux-user: glib-ify is_proc_myself Alex Bennée
2021-05-24 11:27 ` no-reply
2021-05-24 11:35 ` Daniel P. Berrangé
2021-05-24 12:35   ` Alex Bennée
2021-05-24 19:12 ` Richard Henderson

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.