static int local_mkdir(FsContext *fs_ctx, const char *path, FsCred *credp)

{

    int err = -1;

    int serrno = 0;



    /* Determine the security model */

    if (fs_ctx->fs_sm == SM_MAPPED) {

        err = mkdir(rpath(fs_ctx, path), SM_LOCAL_DIR_MODE_BITS);

        if (err == -1) {

            return err;

        }

        credp->fc_mode = credp->fc_mode|S_IFDIR;

        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) {

        err = mkdir(rpath(fs_ctx, path), credp->fc_mode);

        if (err == -1) {

            return err;

        }

        err = local_post_create_passthrough(fs_ctx, path, credp);

        if (err == -1) {

            serrno = errno;

            goto err_end;

        }

    }

    return err;



err_end:

    remove(rpath(fs_ctx, path));

    errno = serrno;

    return err;

}

static int local_mkdir(FsContext *fs_ctx, const char *path, FsCred *credp)

{

    int err = -1;

    int serrno = 0;



    

    if (fs_ctx->fs_sm == SM_MAPPED) {

        err = mkdir(rpath(fs_ctx, path), SM_LOCAL_DIR_MODE_BITS);

        if (err == -1) {

            return err;

        }

        credp->fc_mode = credp->fc_mode|S_IFDIR;

        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) {

        err = mkdir(rpath(fs_ctx, path), credp->fc_mode);

        if (err == -1) {

            return err;

        }

        err = local_post_create_passthrough(fs_ctx, path, credp);

        if (err == -1) {

            serrno = errno;

            goto err_end;

        }

    }

    return err;



err_end:

    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, FsCred *VAR_2)

{

    int VAR_3 = -1;

    int VAR_4 = 0;



    

    if (VAR_0->fs_sm == SM_MAPPED) {

        VAR_3 = mkdir(rpath(VAR_0, VAR_1), SM_LOCAL_DIR_MODE_BITS);

        if (VAR_3 == -1) {

            return VAR_3;

        }

        VAR_2->fc_mode = VAR_2->fc_mode|S_IFDIR;

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

        if (VAR_3 == -1) {

            VAR_4 = errno;

            goto err_end;

        }

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

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

        if (VAR_3 == -1) {

            return VAR_3;

        }

        VAR_3 = local_post_create_passthrough(VAR_0, VAR_1, VAR_2);

        if (VAR_3 == -1) {

            VAR_4 = errno;

            goto err_end;

        }

    }

    return VAR_3;



err_end:

    remove(rpath(VAR_0, VAR_1));

    errno = VAR_4;

    return VAR_3;

}

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