Beispiel #1
0
PyObject *CallToPython(GSM_Call * call)
{
	PyObject *number;
	PyObject *result;
	char *status;

	number = UnicodeStringToPython(call->PhoneNumber);
	if (number == NULL) {
		return NULL;
	}

	status = CallStatusToString(call->Status);
	if (status == NULL) {
		Py_DECREF(number);
		return NULL;
	}

	if (call->CallIDAvailable) {
		result = Py_BuildValue("{s:s,s:O,s:i,s:i}",
				       "Status", status,
				       "Number", number,
				       "CallID", call->CallID,
				       "StatusCode", call->StatusCode);
	} else {
		result = Py_BuildValue("{s:s,s:O,s:i}",
				       "Status", status,
				       "Number", number,
				       "StatusCode", call->StatusCode);
	}
	Py_DECREF(number);
	free(status);
	return result;
}
Beispiel #2
0
PyObject *RingtoneToPython(GSM_Ringtone * inring)
{
	GSM_Ringtone ring;
	PyObject *name;
	PyObject *v;
	PyObject *f;
	PyObject *result;
	int i;

	if (inring->Format != RING_NOTETONE) {
		if (GSM_RingtoneConvert(&ring, inring, RING_NOTETONE) !=
		    ERR_NONE) {
			pyg_warning
			    ("Ringtone can not be converted to RING_NOTETONE, ignoring!\n");
			Py_RETURN_NONE;
		}
	} else {
		ring = *inring;
	}

	v = PyList_New(0);
	if (v == NULL)
		return NULL;

	for (i = 0; i < ring.NoteTone.NrCommands; i++) {
		f = RingCommadToPython(&(ring.NoteTone.Commands[i]));
		if (f == NULL) {
			Py_DECREF(v);
			return NULL;
		}
		if (PyList_Append(v, f) != 0) {
			Py_DECREF(f);
			Py_DECREF(v);
			return NULL;
		}
		Py_DECREF(f);
	}

	name = UnicodeStringToPython(ring.Name);
	if (name == NULL) {
		Py_DECREF(v);
		return NULL;
	}

	result = Py_BuildValue("{s:i,s:O,s:O}",
			       "AllNotesScale",
			       (int)ring.NoteTone.AllNotesScale, "Name", name,
			       "Notes", v);
	Py_DECREF(v);
	Py_DECREF(name);

	return result;
}
Beispiel #3
0
PyObject *FileToPython(GSM_File * file)
{
	PyObject *name;
	PyObject *fullname;
	PyObject *buffer;
	PyObject *dt;
	char *type;
	PyObject *val;

	name = UnicodeStringToPython(file->Name);
	if (name == NULL) {
		return NULL;
	}

	type = FileTypeToString(file->Type);
	if (type == NULL) {
		Py_DECREF(name);
		return NULL;
	}

	fullname = UnicodeStringToPython(file->ID_FullName);
	if (fullname == NULL) {
		Py_DECREF(name);
		free(type);
		return NULL;
	}

	buffer = PyString_FromStringAndSize((char *)file->Buffer, file->Used);
	if (buffer == NULL) {
		Py_DECREF(name);
		free(type);
		Py_DECREF(fullname);
		return NULL;
	}

	if (file->ModifiedEmpty) {
		file->Modified.Year = 0;
	}
	dt = BuildPythonDateTime(&(file->Modified));
	if (dt == NULL) {
		Py_DECREF(name);
		free(type);
		Py_DECREF(fullname);
		Py_DECREF(buffer);
		return NULL;
	}

	val = Py_BuildValue("{s:i,s:O,s:i,s:i,s:s,s:O,s:O,s:O,s:i,s:i,s:i,s:i}",
			    "Used", file->Used,
			    "Name", name,
			    "Folder", (int)file->Folder,
			    "Level", file->Level,
			    "Type", type,
			    "ID_FullName", fullname,
			    "Buffer", buffer,
			    "Modified", dt,
			    "Protected", (int)file->Protected,
			    "ReadOnly", (int)file->ReadOnly,
			    "Hidden", (int)file->Hidden,
			    "System", (int)file->System);

	Py_DECREF(name);
	free(type);
	Py_DECREF(fullname);
	Py_DECREF(buffer);
	Py_DECREF(dt);
	return val;
}