static int do_readlink(struct iovec *iovec, struct iovec *out_iovec)

{

    char *buffer;

    int size, retval;

    V9fsString target, path;



    v9fs_string_init(&path);

    retval = proxy_unmarshal(iovec, PROXY_HDR_SZ, "sd", &path, &size);

    if (retval < 0) {

        v9fs_string_free(&path);

        return retval;

    }

    buffer = g_malloc(size);

    v9fs_string_init(&target);

    retval = readlink(path.data, buffer, size);

    if (retval > 0) {

        buffer[retval] = '\0';

        v9fs_string_sprintf(&target, "%s", buffer);

        retval = proxy_marshal(out_iovec, PROXY_HDR_SZ, "s", &target);

    } else {

        retval = -errno;

    }

    g_free(buffer);

    v9fs_string_free(&target);

    v9fs_string_free(&path);

    return retval;

}

static int do_readlink(struct iovec *iovec, struct iovec *out_iovec)

{

    char *buffer;

    int size, retval;

    V9fsString target, path;



    v9fs_string_init(&path);

    retval = proxy_unmarshal(iovec, PROXY_HDR_SZ, "sd", &path, &size);

    if (retval < 0) {

        v9fs_string_free(&path);

        return retval;

    }

    buffer = g_malloc(size);

    v9fs_string_init(&target);

    retval = readlink(path.data, buffer, size);

    if (retval > 0) {

        buffer[retval] = '\0';

        v9fs_string_sprintf(&target, "%s", buffer);

        retval = proxy_marshal(out_iovec, PROXY_HDR_SZ, "s", &target);

    } else {

        retval = -errno;

    }

    g_free(buffer);

    v9fs_string_free(&target);

    v9fs_string_free(&path);

    return retval;

}

    retval = readlink(path.data, buffer, size);
static int FUNC_0(struct VAR_0 *VAR_0, struct VAR_0 *VAR_1)

{

    char *VAR_2;

    int VAR_3, VAR_4;

    V9fsString target, path;



    v9fs_string_init(&path);

    VAR_4 = proxy_unmarshal(VAR_0, PROXY_HDR_SZ, "sd", &path, &VAR_3);

    if (VAR_4 < 0) {

        v9fs_string_free(&path);

        return VAR_4;

    }

    VAR_2 = g_malloc(VAR_3);

    v9fs_string_init(&target);

    VAR_4 = readlink(path.data, VAR_2, VAR_3);

    if (VAR_4 > 0) {

        VAR_2[VAR_4] = '\0';

        v9fs_string_sprintf(&target, "%s", VAR_2);

        VAR_4 = proxy_marshal(VAR_1, PROXY_HDR_SZ, "s", &target);

    } else {

        VAR_4 = -errno;

    }

    g_free(VAR_2);

    v9fs_string_free(&target);

    v9fs_string_free(&path);

    return VAR_4;

}

static int FUNC_0(struct VAR_0 *VAR_0, struct VAR_0 *VAR_1)
{ char *VAR_2; int VAR_3, VAR_4; V9fsString target, path; v9fs_string_init(&path); VAR_4 = proxy_unmarshal(VAR_0, PROXY_HDR_SZ, "sd", &path, &VAR_3); if (VAR_4 < 0) { v9fs_string_free(&path); return VAR_4; } VAR_2 = g_malloc(VAR_3); v9fs_string_init(&target); VAR_4 = readlink(path.data, VAR_2, VAR_3); if (VAR_4 > 0) { VAR_2[VAR_4] = '\0'; v9fs_string_sprintf(&target, "%s", VAR_2); VAR_4 = proxy_marshal(VAR_1, PROXY_HDR_SZ, "s", &target); } else { VAR_4 = -errno; } g_free(VAR_2); v9fs_string_free(&target); v9fs_string_free(&path); return VAR_4; }