static int local_open2(FsContext *fs_ctx, const char *path, int flags,

        FsCred *credp)

{

    int fd = -1;

    int err = -1;

    int serrno = 0;



    /* Determine the security model */

    if (fs_ctx->fs_sm == SM_MAPPED) {

        fd = open(rpath(fs_ctx, path), flags, SM_LOCAL_MODE_BITS);

        if (fd == -1) {

            return fd;

        }

        credp->fc_mode = credp->fc_mode|S_IFREG;

        /* Set cleint credentials in xattr */

        err = local_set_xattr(rpath(fs_ctx, path), credp);

        if (err == -1) {

            serrno = errno;

            goto err_end;

        }

    } else if (fs_ctx->fs_sm == SM_PASSTHROUGH) {

        fd = open(rpath(fs_ctx, path), flags, credp->fc_mode);

        if (fd == -1) {

            return fd;

        }

        err = local_post_create_passthrough(fs_ctx, path, credp);

        if (err == -1) {

            serrno = errno;

            goto err_end;

        }

    }

    return fd;



err_end:

    close(fd);

    remove(rpath(fs_ctx, path));

    errno = serrno;

    return err;

}

static int local_open2(FsContext *fs_ctx, const char *path, int flags,

        FsCred *credp)

{

    int fd = -1;

    int err = -1;

    int serrno = 0;



    

    if (fs_ctx->fs_sm == SM_MAPPED) {

        fd = open(rpath(fs_ctx, path), flags, SM_LOCAL_MODE_BITS);

        if (fd == -1) {

            return fd;

        }

        credp->fc_mode = credp->fc_mode|S_IFREG;

        

        err = local_set_xattr(rpath(fs_ctx, path), credp);

        if (err == -1) {

            serrno = errno;

            goto err_end;

        }

    } else if (fs_ctx->fs_sm == SM_PASSTHROUGH) {

        fd = open(rpath(fs_ctx, path), flags, credp->fc_mode);

        if (fd == -1) {

            return fd;

        }

        err = local_post_create_passthrough(fs_ctx, path, credp);

        if (err == -1) {

            serrno = errno;

            goto err_end;

        }

    }

    return fd;



err_end:

    close(fd);

    remove(rpath(fs_ctx, path));

    errno = serrno;

    return err;

}

    } else if (fs_ctx->fs_sm == SM_PASSTHROUGH) {     } else if (fs_ctx->fs_sm == SM_PASSTHROUGH) {     } else if (fs_ctx->fs_sm == SM_PASSTHROUGH) {     } else if (fs_ctx->fs_sm == SM_PASSTHROUGH) {     } else if (fs_ctx->fs_sm == SM_PASSTHROUGH) {     } else if (fs_ctx->fs_sm == SM_PASSTHROUGH) {             serrno = errno;             goto err_end;     } else if (fs_ctx->fs_sm == SM_PASSTHROUGH) {
static int FUNC_0(FsContext *VAR_0, const char *VAR_1, int VAR_2,

        FsCred *VAR_3)

{

    int VAR_4 = -1;

    int VAR_5 = -1;

    int VAR_6 = 0;



    

    if (VAR_0->fs_sm == SM_MAPPED) {

        VAR_4 = open(rpath(VAR_0, VAR_1), VAR_2, SM_LOCAL_MODE_BITS);

        if (VAR_4 == -1) {

            return VAR_4;

        }

        VAR_3->fc_mode = VAR_3->fc_mode|S_IFREG;

        

        VAR_5 = local_set_xattr(rpath(VAR_0, VAR_1), VAR_3);

        if (VAR_5 == -1) {

            VAR_6 = errno;

            goto err_end;

        }

    } else if (VAR_0->fs_sm == SM_PASSTHROUGH) {

        VAR_4 = open(rpath(VAR_0, VAR_1), VAR_2, VAR_3->fc_mode);

        if (VAR_4 == -1) {

            return VAR_4;

        }

        VAR_5 = local_post_create_passthrough(VAR_0, VAR_1, VAR_3);

        if (VAR_5 == -1) {

            VAR_6 = errno;

            goto err_end;

        }

    }

    return VAR_4;



err_end:

    close(VAR_4);

    remove(rpath(VAR_0, VAR_1));

    errno = VAR_6;

    return VAR_5;

}

static int FUNC_0(FsContext *VAR_0, const char *VAR_1, int VAR_2,
FsCred *VAR_3)
{ int VAR_4 = -1; int VAR_5 = -1; int VAR_6 = 0; if (VAR_0->fs_sm == SM_MAPPED) { VAR_4 = open(rpath(VAR_0, VAR_1), VAR_2, SM_LOCAL_MODE_BITS); if (VAR_4 == -1) { return VAR_4; } VAR_3->fc_mode = VAR_3->fc_mode|S_IFREG; VAR_5 = local_set_xattr(rpath(VAR_0, VAR_1), VAR_3); if (VAR_5 == -1) { VAR_6 = errno; goto err_end; } } else if (VAR_0->fs_sm == SM_PASSTHROUGH) { VAR_4 = open(rpath(VAR_0, VAR_1), VAR_2, VAR_3->fc_mode); if (VAR_4 == -1) { return VAR_4; } VAR_5 = local_post_create_passthrough(VAR_0, VAR_1, VAR_3); if (VAR_5 == -1) { VAR_6 = errno; goto err_end; } } return VAR_4; err_end:
close(VAR_4); remove(rpath(VAR_0, VAR_1)); errno = VAR_6; return VAR_5; }