#include"Python.h" FILE *f=NULL; int _openf(const char* name) { f=fopen(name,"rb"); if(f==NULL) return -1; else return 0; } long long _fgetd() { long long d; return fscanf(f,"%lld",&d),d; } char* _fgetstr() { static char* s="",c; while((c=fgetc(f))!='\n') s=strcat(s,&c); return s; } static PyObject *openf(PyObject* self,PyObject* args) { char* s; if(!(PyArg_ParseTuple(args,"s",s))) return NULL; return Py_BuildValue("i",_openf(s)); } static PyObject *fgetch(PyObject* self,PyObject* args) { char s[2]; s[0]=fgetc(f); return Py_BuildValue("s",s); } static PyObject *fgetd(PyObject* self,PyObject* args) { return Py_BuildValue("i",_fgetd()); } static PyObject *fgetstr(PyObject* self,PyObject* args) { return Py_BuildValue("s",_fgetstr()); } static PyObject *closef(PyObject* self,PyObject* args) { return fclose(f),Py_BuildValue("i",0); } static PyMethodDef methods[]= { {"open",openf,METH_VARARGS,"Open a file"}, {"fgetc",fgetch,METH_VARARGS,"Get one char"}, {"fgetd",fgetd,METH_VARARGS,"Get an integer"}, {"fgets",fgetstr,METH_VARARGS,"Get a line"}, {"fclose",closef,METH_VARARGS,"Close the file"} }; static struct PyModuleDef of= { PyModuleDef_HEAD_INIT, "openext", "Open files in windows with hidden extentions", -1, methods }; PyMODINIT_FUNC PyInit_openfile(void) { return PyModule_Create(&of); }