Bug 91712: Don't assume filenames have . in them when getting content type for file inputs. Thanks jst, vidur, and av for helping resolve all the subtle edge cases here... r=vidur@netscape.com, sr=jst@netscape.com

This commit is contained in:
pollmann%netscape.com 2001-07-21 04:10:04 +00:00
parent 0afc122f3a
commit 99e0a68ba1

View File

@ -1319,15 +1319,24 @@ nsFormFrame::GetContentType(char* aPathName, char** aContentType)
if (aPathName && *aPathName) {
// Get file extension and mimetype from that.g936
char* fileExt = &aPathName[nsCRT::strlen(aPathName)-1];
while (fileExt && (*fileExt != '.')) {
fileExt--;
char* fileExt = aPathName + nsCRT::strlen(aPathName);
while (fileExt > aPathName) {
if (*(--fileExt) == '.') {
break;
}
}
if (fileExt) {
nsCOMPtr<nsIMIMEService> MIMEService (do_GetService(NS_MIMESERVICE_CONTRACTID, &rv));
if (NS_FAILED(rv)) return rv;
if (NS_SUCCEEDED(MIMEService->GetTypeFromExtension(++fileExt, aContentType)))
return NS_OK;
if (*fileExt == '.' && *(fileExt + 1)) {
nsCOMPtr<nsIMIMEService> MIMEService =
do_GetService(NS_MIMESERVICE_CONTRACTID, &rv);
if (NS_FAILED(rv))
return rv;
rv = MIMEService->GetTypeFromExtension(fileExt + 1, aContentType);
if (NS_SUCCEEDED(rv)) {
return NS_OK;
}
}
}
*aContentType = nsCRT::strdup("application/octet-stream");