mirror of
https://github.com/python/cpython.git
synced 2025-09-26 18:29:57 +00:00
Ignore Windows case check for ALL CAPS 8.3 files
This commit is contained in:
parent
a93b848e33
commit
323bf5e1f7
1 changed files with 39 additions and 1 deletions
|
@ -984,6 +984,34 @@ find_module(name, path, buf, buflen, p_fp)
|
||||||
|
|
||||||
#ifdef MS_WIN32
|
#ifdef MS_WIN32
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
|
#include <ctype.h>
|
||||||
|
|
||||||
|
static int
|
||||||
|
allcaps8x3(s)
|
||||||
|
char *s;
|
||||||
|
{
|
||||||
|
/* Return 1 if s is an 8.3 filename in ALLCAPS */
|
||||||
|
char c;
|
||||||
|
char *dot = strchr(s, '.');
|
||||||
|
char *end = strchr(s, '\0');
|
||||||
|
if (dot != NULL) {
|
||||||
|
if (dot-s > 8)
|
||||||
|
return 1; /* More than 8 before '.' */
|
||||||
|
if (end-dot > 4)
|
||||||
|
return 1; /* More than 3 after '.' */
|
||||||
|
end = strchr(dot+1, '.');
|
||||||
|
if (end != NULL)
|
||||||
|
return 1; /* More than one dot */
|
||||||
|
}
|
||||||
|
else if (end-s > 8)
|
||||||
|
return 1; /* More than 8 and no dot */
|
||||||
|
while ((c = *s++)) {
|
||||||
|
if (islower(c))
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
check_case(char *buf, int len, int namelen, char *name)
|
check_case(char *buf, int len, int namelen, char *name)
|
||||||
{
|
{
|
||||||
|
@ -999,6 +1027,14 @@ check_case(char *buf, int len, int namelen, char *name)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
FindClose(h);
|
FindClose(h);
|
||||||
|
if (allcaps8x3(data.cFileName)) {
|
||||||
|
/* Skip the test if the filename is ALL.CAPS. This can
|
||||||
|
happen in certain circumstances beyond our control,
|
||||||
|
e.g. when software is installed under NT on a FAT
|
||||||
|
filesystem and then the same FAT filesystem is used
|
||||||
|
under Windows 95. */
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
if (strncmp(data.cFileName, name, namelen) != 0) {
|
if (strncmp(data.cFileName, name, namelen) != 0) {
|
||||||
strcpy(buf+len-namelen, data.cFileName);
|
strcpy(buf+len-namelen, data.cFileName);
|
||||||
PyErr_Format(PyExc_NameError,
|
PyErr_Format(PyExc_NameError,
|
||||||
|
@ -2008,9 +2044,11 @@ imp_is_frozen(self, args)
|
||||||
PyObject *args;
|
PyObject *args;
|
||||||
{
|
{
|
||||||
char *name;
|
char *name;
|
||||||
|
struct _frozen *p;
|
||||||
if (!PyArg_ParseTuple(args, "s", &name))
|
if (!PyArg_ParseTuple(args, "s", &name))
|
||||||
return NULL;
|
return NULL;
|
||||||
return PyInt_FromLong(find_frozen(name) != NULL);
|
p = find_frozen(name);
|
||||||
|
return PyInt_FromLong((long) (p == NULL ? 0 : p->size));
|
||||||
}
|
}
|
||||||
|
|
||||||
static FILE *
|
static FILE *
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue