Um uns das Leben zunächst maximal einfach zu machen, wollen wir jetzt einfach look.c:main durch einen Wrapper ersetzen, der das, was wir von main brauchen, tut und dann das alte look.c:look aufruft.
static PyObject *look1_look(PyObject *self, PyObject *args)
{
struct stat sb;
int fd;
void *res;
char *file;
char *front, *back;
if (!PyArg_ParseTuple(args, "ss", &file, &string)) {
return NULL;
}
if ((fd = open(file, O_RDONLY, 0)) < 0 || fstat(fd, &sb)) {
PyErr_SetFromErrno(PyExc_IOError);
return NULL;
}
/* ... weitgehend wie gehabt ... */
res = look(front, back);
munmap(front, sb.st_size);
close(fd);
if (res!=NULL) {
Py_INCREF(Py_None);
res = Py_None;
}
return res;
}
Änderungen:
Den veränderten Quellcode gibt es auf der Vorlesungsseite. Um alle Änderungen am Code zu sehen, könnt ihr das Unix-Kommando diff look.c look1module.c laufen lassen.