summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile4
-rw-r--r--dmidecode.c33
-rw-r--r--dmidecode.h2
-rwxr-xr-xexample.py4
4 files changed, 23 insertions, 20 deletions
diff --git a/Makefile b/Makefile
index 732fcdb..7af6808 100644
--- a/Makefile
+++ b/Makefile
@@ -9,8 +9,8 @@
#
#. Bug in python2.4 PyString_FromFormat that results in not interpreting printf style formatting with %u and %lu.
-#PY = $(shell python -V 2>&1 |sed -e 's/.\(ython\) \(2\.[0-9]\)\..*/p\1\2/')
-PY = python2.5
+PY = $(shell python -V 2>&1 |sed -e 's/.\(ython\) \(2\.[0-9]\)\..*/p\1\2/')
+#PY = python2.5
CC = gcc
CFLAGS = -fno-strict-aliasing -D_XOPEN_SOURCE=600
diff --git a/dmidecode.c b/dmidecode.c
index e10b931..d461c6b 100644
--- a/dmidecode.c
+++ b/dmidecode.c
@@ -1021,15 +1021,14 @@ static PyObject *dmi_processor_voltage(u8 code) {
return data;
}
-const char *dmi_processor_frequency(u8 *p, char *_) {
+int dmi_processor_frequency(u8 *p) {
u16 code = WORD(p);
- if(code) sprintf(_, "%u MHz", code);
- else sprintf(_, "Unknown");
- return _;
+ if(code) return code; //. Value measured in MHz
+ else return -1; //. Unknown
}
-static PyObject *dmi_processor_frequency_py(u8 *p, char *_) {
- return PyString_FromString(dmi_processor_frequency(p, _));
+static PyObject *dmi_processor_frequency_py(u8 *p) {
+ return PyInt_FromLong(dmi_processor_frequency(p));
}
static const char *dmi_processor_status(u8 code) {
@@ -2034,11 +2033,12 @@ static PyObject *dmi_memory_device_width(u16 code) {
static PyObject *dmi_memory_device_size(u16 code) {
PyObject *data = NULL;
- if(code==0) data = PyString_FromString("No Module Installed");
- else if(code==0xFFFF) data = PyString_FromString(" Unknown");
+ if(code==0) data = Py_None; //. No Module Installed
+ else if(code==0xFFFF) data = PyString_FromString("Unknown"); //. Unknown
else {
- if(code&0x8000) data = PyString_FromFormat("%u kB", code&0x7FFF);
- else data = PyString_FromFormat("%u MB", code);
+ //. Keeping this as String rather than Int as it has KB and MB representations...
+ if(code&0x8000) data = PyString_FromFormat("%d KB", code&0x7FFF);
+ else data = PyString_FromFormat("%d MB", code);
}
return data;
}
@@ -3088,15 +3088,15 @@ PyObject* dmi_decode(struct dmi_header *h, u16 ver) {
PyDict_SetItemString(caseData, "Voltage", _val);
Py_DECREF(_val);
- _val = dmi_processor_frequency_py(data+0x12, _);
+ _val = dmi_processor_frequency_py(data+0x12);
PyDict_SetItemString(caseData, "External Clock", _val);
Py_DECREF(_val);
- _val = dmi_processor_frequency_py(data+0x14, _);
+ _val = dmi_processor_frequency_py(data+0x14);
PyDict_SetItemString(caseData, "Max Speed", _val);
Py_DECREF(_val);
- _val = dmi_processor_frequency_py(data+0x16, _);
+ _val = dmi_processor_frequency_py(data+0x16);
PyDict_SetItemString(caseData, "Current Speed", _val);
Py_DECREF(_val);
@@ -3507,7 +3507,7 @@ PyObject* dmi_decode(struct dmi_header *h, u16 ver) {
Py_DECREF(_val);
}
- _val = PyString_FromFormat("%u", WORD(data+0x0D));
+ _val = PyInt_FromLong(WORD(data+0x0D));
PyDict_SetItemString(caseData, "Number Of Devices", _val);
Py_DECREF(_val);
break;
@@ -4463,7 +4463,10 @@ static void dmi_table(u32 base, u16 len, u16 num, u16 ver, const char *devmem, P
dmi_dump(&h, _);
dmiSetItem(hDict, "lookup", _);
} else {
- PyDict_SetItem(hDict, PyInt_FromLong(i), dmi_decode(&h, ver));
+ //. TODO: //. Is the value of `i' important?...
+ //. TODO: PyDict_SetItem(hDict, PyInt_FromLong(i), dmi_decode(&h, ver));
+ //. TODO: ...removed and replaced with `data'...
+ PyDict_SetItem(hDict, PyString_FromString("data"), dmi_decode(&h, ver));
PyDict_SetItem(pydata, PyString_FromString(hid), hDict);
}
} else if(!(opt.flags & FLAG_QUIET))
diff --git a/dmidecode.h b/dmidecode.h
index ab4f820..5a0a768 100644
--- a/dmidecode.h
+++ b/dmidecode.h
@@ -40,6 +40,6 @@ const char *dmi_system_uuid(u8 *p, char *_);
PyObject *dmi_system_uuid_py(u8 *p);
const char *dmi_chassis_type(u8 code);
const char *dmi_processor_family(u8 code);
-const char *dmi_processor_frequency(u8 *p, char *_);
+int dmi_processor_frequency(u8 *p);
int submain(int argc, char * const argv[]);
diff --git a/example.py b/example.py
index bfea140..9c585e6 100755
--- a/example.py
+++ b/example.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python2.5
+#!/usr/bin/env python2.3
import dmidecode
import sys
from pprint import pprint
@@ -7,7 +7,7 @@ from pprint import pprint
#print "*** baseboard ***\n"; pprint(dmidecode.baseboard())
#print "*** chassis ***\n"; pprint(dmidecode.chassis())
#print "*** processor ***\n"; pprint(dmidecode.processor())
-#print "*** memory ***\n"; pprint(dmidecode.memory())
+print "*** memory ***\n"; pprint(dmidecode.memory())
#print "*** cache ***\n"; pprint(dmidecode.cache())
#print "*** connector ***\n"; pprint(dmidecode.connector())
#print "*** slot ***\n"; pprint(dmidecode.slot())