diff options
author | Guido van Rossum <guido@python.org> | 1996-08-21 15:03:37 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 1996-08-21 15:03:37 (GMT) |
commit | 6dbd190f5ec3127ad7c5ef6fc67d2f02c4cc1492 (patch) | |
tree | 972a44c594f9dc3a5c2bd0c4d5136b5ed457ec3f /PC/import_nt.c | |
parent | 019f424a0a88e97e3df2e83ea6b66aa50943702f (diff) | |
download | cpython-6dbd190f5ec3127ad7c5ef6fc67d2f02c4cc1492.zip cpython-6dbd190f5ec3127ad7c5ef6fc67d2f02c4cc1492.tar.gz cpython-6dbd190f5ec3127ad7c5ef6fc67d2f02c4cc1492.tar.bz2 |
NT specific files supplied by Mark Hammond
Diffstat (limited to 'PC/import_nt.c')
-rw-r--r-- | PC/import_nt.c | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/PC/import_nt.c b/PC/import_nt.c new file mode 100644 index 0000000..cac4734 --- /dev/null +++ b/PC/import_nt.c @@ -0,0 +1,44 @@ +/******************************************************************** + + importnt.c + + Win32 specific import code. + +*/ + +#include "allobjects.h" +#include "osdefs.h" +#include <windows.h> +#include "import.h" +#include "importdl.h" + +#ifndef WIN32_PATCH_LEVEL +#define WIN32_PATCH_LEVEL "000" +#endif + +extern BOOL PyWin_IsWin32s(); + +FILE *PyWin_FindRegisteredModule( const char *moduleName, struct filedescr **ppFileDesc, char *pathBuf, int pathLen) +{ + char moduleKey[128]; + struct filedescr *fdp = NULL; + FILE *fp; + int modNameSize = pathLen; + HKEY keyBase = PyWin_IsWin32s() ? HKEY_CLASSES_ROOT : HKEY_LOCAL_MACHINE; + strcpy(moduleKey, "Software\\Python\\PythonCore\\" WIN32_PATCH_LEVEL "\\Modules\\"); + strcat(moduleKey, moduleName); + if (RegQueryValue(keyBase, moduleKey, pathBuf, &modNameSize)!=ERROR_SUCCESS) + return NULL; + // use the file extension to locate the type entry. + for (fdp = import_filetab; fdp->suffix != NULL; fdp++) { + int extLen=strlen(fdp->suffix); + if (modNameSize>extLen && strnicmp(pathBuf+(modNameSize-extLen-1),fdp->suffix,extLen)==0) + break; + } + if (fdp->suffix==NULL) + return NULL; + fp = fopen(pathBuf, fdp->mode); + if (fp != NULL) + *ppFileDesc = fdp; + return fp; +} |