On Sat, 26 May 2018 01:23:08 -0400 k...@juliacomputing.com wrote: > From: Keno Fischer <k...@alumni.harvard.edu> > > - Darwin doesn't have strchrnul > - Comparisons of mode_t with -1 require an explicit cast, since mode_t > is unsigned on Darwin. > > Signed-off-by: Keno Fischer <k...@juliacomputing.com> > --- > hw/9pfs/9p-local.c | 9 ++++++--- > 1 file changed, 6 insertions(+), 3 deletions(-) > > diff --git a/hw/9pfs/9p-local.c b/hw/9pfs/9p-local.c > index fd65d04..6e0b2e8 100644 > --- a/hw/9pfs/9p-local.c > +++ b/hw/9pfs/9p-local.c > @@ -67,7 +67,10 @@ int local_open_nofollow(FsContext *fs_ctx, const char > *path, int flags, > assert(*path != '/'); > > head = g_strdup(path); > - c = strchrnul(path, '/'); > + /* equivalent to strchrnul(), but that is not available on Darwin */
Please make a qemu_strchrnul() helper with a separate implementation for Darwin then. I guess you can put it in this file since there aren't any other users in the QEMU code base. > + c = strchr(path, '/'); > + if (!c) > + c = path + strlen(path); > if (*c) { > /* Intermediate path element */ > head[c - path] = 0; > @@ -310,7 +313,7 @@ update_map_file: > if (credp->fc_gid != -1) { > gid = credp->fc_gid; > } > - if (credp->fc_mode != -1) { > + if (credp->fc_mode != (mode_t)-1) { > mode = credp->fc_mode; > } > if (credp->fc_rdev != -1) { > @@ -416,7 +419,7 @@ static int local_set_xattrat(int dirfd, const char *path, > FsCred *credp) > return err; > } > } > - if (credp->fc_mode != -1) { > + if (credp->fc_mode != (mode_t)-1) { > uint32_t tmp_mode = cpu_to_le32(credp->fc_mode); > err = fsetxattrat_nofollow(dirfd, path, "user.virtfs.mode", > &tmp_mode, > sizeof(mode_t), 0);