示例#1
0
PyObject *py_ped_file_system_probe(PyObject *s, PyObject *args) {
    PyObject *in_geom = NULL;
    PedGeometry *out_geom = NULL;
    PedFileSystemType *fstype = NULL;
    _ped_FileSystemType *ret = NULL;

    if (!PyArg_ParseTuple(args, "O!", &_ped_Geometry_Type_obj, &in_geom)) {
        return NULL;
    }

    out_geom = _ped_Geometry2PedGeometry(in_geom);
    if (!out_geom) {
        return NULL;
    }

    fstype = ped_file_system_probe(out_geom);
    if (fstype) {
        ret = PedFileSystemType2_ped_FileSystemType(fstype);
    }
    else {
        if (partedExnRaised) {
            partedExnRaised = 0;

            if (!PyErr_ExceptionMatches(PartedException) &&
                !PyErr_ExceptionMatches(PyExc_NotImplementedError))
                PyErr_SetString(IOException, partedExnMessage);
        }
        else
            PyErr_SetString(FileSystemException, "Failed to find any filesystem in given geometry");

        return NULL;
    }

    return (PyObject *) ret;
}
示例#2
0
PyObject *py_ped_file_system_type_get_next(PyObject *s, PyObject *args) {
    PyObject *in_fstype = NULL;
    PedFileSystemType *cur = NULL, *next = NULL;
    _ped_FileSystemType *ret = NULL;

    if (!PyArg_ParseTuple(args, "|O!", &_ped_FileSystemType_Type_obj, &in_fstype)) {
        return NULL;
    }

    if (in_fstype) {
        cur = _ped_FileSystemType2PedFileSystemType(in_fstype);
        if (!cur) {
            return NULL;
        }
    }

    next = ped_file_system_type_get_next(cur);
    if (next) {
        ret = PedFileSystemType2_ped_FileSystemType(next);
        return (PyObject *) ret;
    } else {
        PyErr_SetNone(PyExc_IndexError);
        return NULL;
    }
}
示例#3
0
_ped_Partition *PedPartition2_ped_Partition(PedPartition *part,
                                            _ped_Disk *pydisk) {
    _ped_Partition *ret = NULL;

    if (part == NULL) {
        PyErr_SetString(PyExc_TypeError, "Empty PedPartition()");
        return NULL;
    }

    if (pydisk == NULL) {
        PyErr_SetString(PyExc_TypeError, "Empty _ped_Disk()");
        return NULL;
    }

    ret = (_ped_Partition *) _ped_Partition_Type_obj.tp_new(&_ped_Partition_Type_obj, NULL, NULL);
    if (!ret)
        return (_ped_Partition *) PyErr_NoMemory();

    ret->disk = (PyObject *)pydisk;
    Py_INCREF(ret->disk);

    ret->geom = (PyObject *)PedGeometry2_ped_Geometry(&part->geom);
    if (!ret->geom)
        goto error;

    if (part->fs_type == NULL) {
        ret->fs_type = Py_None;
        Py_INCREF(ret->fs_type);
    } else {
        ret->fs_type = (PyObject *)PedFileSystemType2_ped_FileSystemType(part->fs_type);
        if (!ret->fs_type)
            goto error;
    }

    ret->type = part->type;
    ret->ped_partition = part;

    return ret;

error:
    Py_DECREF(ret);
    return NULL;
}
示例#4
0
/* 1:1 function mappings for filesys.h in libparted */
PyObject *py_ped_file_system_type_get(PyObject *s, PyObject *args) {
    PedFileSystemType *fstype = NULL;
    _ped_FileSystemType *ret = NULL;
    char *name = NULL;

    if (!PyArg_ParseTuple(args, "s", &name)) {
        return NULL;
    }

    fstype = ped_file_system_type_get(name);
    if (fstype) {
        ret = PedFileSystemType2_ped_FileSystemType(fstype);
        return (PyObject *) ret;
    }
    else {
        PyErr_SetString(UnknownTypeException, name);
        return NULL;
    }
}
示例#5
0
_ped_FileSystem *PedFileSystem2_ped_FileSystem(PedFileSystem *fs) {
    _ped_FileSystem *ret = NULL;
    _ped_FileSystemType *type = NULL;
    _ped_Geometry *geom = NULL;
    PyObject *args = NULL;

    if (fs == NULL) {
        PyErr_SetString(PyExc_TypeError, "Empty PedFileSystem()");
        return NULL;
    }

    ret = (_ped_FileSystem *) _ped_FileSystem_Type_obj.tp_new(&_ped_FileSystem_Type_obj, NULL, NULL);
    if (!ret)
        return (_ped_FileSystem *) PyErr_NoMemory();

    if ((type = PedFileSystemType2_ped_FileSystemType(fs->type)) == NULL)
        goto error;

    if ((geom = PedGeometry2_ped_Geometry(fs->geom)) == NULL)
        goto error;

    args = Py_BuildValue("OOi", type, geom, fs->checked);
    if (args == NULL) {
        goto error;
    }

    if (_ped_FileSystem_Type_obj.tp_init((PyObject *) ret, args, NULL)) {
        goto error;
    }

    Py_DECREF(args);
    Py_DECREF(type);
    Py_DECREF(geom);

    return ret;

error:
    Py_XDECREF(args);
    Py_XDECREF(type);
    Py_XDECREF(geom);
    Py_DECREF(ret);
    return NULL;
}