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.