[ create a new paste ] login | about

Link: http://codepad.org/0zYgrYxX    [ raw code | fork ]

C, pasted on Jan 4:
static void iso_backing_file(char *s, const char *name) {
    sd_bus_error error = SD_BUS_ERROR_NULL;
    sd_bus_message *mess = NULL;
    sd_bus *iso_bus = NULL;
    int r;
    const uint8_t bytes;
    char obj_path[PATH_MAX + 1] = "/org/freedesktop/UDisks2/block_devices/";
    
    r = sd_bus_open_system(&iso_bus);
    if (r < 0) {
        WARN(strerror(-r));
        return;
    }
    strcat(obj_path, strrchr(name, '/') + 1);
    INFO("getting BackingFile property on bus.");
    r = sd_bus_get_property(iso_bus,
                           "org.freedesktop.UDisks2",
                           obj_path,
                           "org.freedesktop.UDisks2.Loop",
                           "BackingFile",
                           &error,
                           &mess,
                           "ay");
    if (r < 0) {
        WARN(error.message);
    } else {
        r = sd_bus_message_enter_container(mess, SD_BUS_TYPE_ARRAY, "y");
        if (r < 0) {
            WARN(strerror(-r));
        } else {
            while ((sd_bus_message_read(mess, "y", &bytes)) > 0) {
                sprintf(s + strlen(s), "%c", (char)bytes);
            }
        }
    }
    close_bus(&error, mess, iso_bus);
}


Create a new paste based on this one


Comments: