mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-10-12 10:17:31 +09:00
Update NSS to 3.35-RTM
This commit is contained in:
parent
fe49ad404e
commit
66dd670b60
388 changed files with 39075 additions and 20752 deletions
|
|
@ -24,6 +24,7 @@
|
|||
|
||||
#if defined(_WIN32)
|
||||
#include <io.h>
|
||||
#include <windows.h>
|
||||
#endif
|
||||
#ifdef XP_UNIX
|
||||
#include <unistd.h>
|
||||
|
|
@ -34,15 +35,184 @@
|
|||
#include <fcntl.h>
|
||||
|
||||
#if defined(_WIN32)
|
||||
#define os_open _open
|
||||
#define os_fdopen _fdopen
|
||||
#define os_stat _stat
|
||||
#define os_truncate_open_flags _O_CREAT | _O_RDWR | _O_TRUNC
|
||||
#define os_append_open_flags _O_CREAT | _O_RDWR | _O_APPEND
|
||||
#define os_open_permissions_type int
|
||||
#define os_open_permissions_default _S_IREAD | _S_IWRITE
|
||||
#define os_stat_type struct _stat
|
||||
|
||||
/*
|
||||
* Convert a UTF8 string to Unicode wide character
|
||||
*/
|
||||
LPWSTR
|
||||
_NSSUTIL_UTF8ToWide(const char *buf)
|
||||
{
|
||||
DWORD size;
|
||||
LPWSTR wide;
|
||||
|
||||
if (!buf) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
size = MultiByteToWideChar(CP_UTF8, 0, buf, -1, NULL, 0);
|
||||
if (size == 0) {
|
||||
return NULL;
|
||||
}
|
||||
wide = PORT_Alloc(sizeof(WCHAR) * size);
|
||||
if (!wide) {
|
||||
return NULL;
|
||||
}
|
||||
size = MultiByteToWideChar(CP_UTF8, 0, buf, -1, wide, size);
|
||||
if (size == 0) {
|
||||
PORT_Free(wide);
|
||||
return NULL;
|
||||
}
|
||||
return wide;
|
||||
}
|
||||
|
||||
static int
|
||||
os_open(const char *filename, int oflag, int pmode)
|
||||
{
|
||||
int fd;
|
||||
|
||||
if (!filename) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
wchar_t *filenameWide = _NSSUTIL_UTF8ToWide(filename);
|
||||
if (!filenameWide) {
|
||||
return -1;
|
||||
}
|
||||
fd = _wopen(filenameWide, oflag, pmode);
|
||||
PORT_Free(filenameWide);
|
||||
|
||||
return fd;
|
||||
}
|
||||
|
||||
static int
|
||||
os_stat(const char *path, os_stat_type *buffer)
|
||||
{
|
||||
int result;
|
||||
|
||||
if (!path) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
wchar_t *pathWide = _NSSUTIL_UTF8ToWide(path);
|
||||
if (!pathWide) {
|
||||
return -1;
|
||||
}
|
||||
result = _wstat(pathWide, buffer);
|
||||
PORT_Free(pathWide);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
static FILE *
|
||||
os_fopen(const char *filename, const char *mode)
|
||||
{
|
||||
FILE *fp;
|
||||
|
||||
if (!filename || !mode) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
wchar_t *filenameWide = _NSSUTIL_UTF8ToWide(filename);
|
||||
if (!filenameWide) {
|
||||
return NULL;
|
||||
}
|
||||
wchar_t *modeWide = _NSSUTIL_UTF8ToWide(mode);
|
||||
if (!modeWide) {
|
||||
PORT_Free(filenameWide);
|
||||
return NULL;
|
||||
}
|
||||
fp = _wfopen(filenameWide, modeWide);
|
||||
PORT_Free(filenameWide);
|
||||
PORT_Free(modeWide);
|
||||
|
||||
return fp;
|
||||
}
|
||||
|
||||
PRStatus
|
||||
_NSSUTIL_Access(const char *path, PRAccessHow how)
|
||||
{
|
||||
int result;
|
||||
|
||||
if (!path) {
|
||||
return PR_FAILURE;
|
||||
}
|
||||
|
||||
int mode;
|
||||
switch (how) {
|
||||
case PR_ACCESS_WRITE_OK:
|
||||
mode = 2;
|
||||
break;
|
||||
case PR_ACCESS_READ_OK:
|
||||
mode = 4;
|
||||
break;
|
||||
case PR_ACCESS_EXISTS:
|
||||
mode = 0;
|
||||
break;
|
||||
default:
|
||||
return PR_FAILURE;
|
||||
}
|
||||
|
||||
wchar_t *pathWide = _NSSUTIL_UTF8ToWide(path);
|
||||
if (!pathWide) {
|
||||
return PR_FAILURE;
|
||||
}
|
||||
result = _waccess(pathWide, mode);
|
||||
PORT_Free(pathWide);
|
||||
|
||||
return result < 0 ? PR_FAILURE : PR_SUCCESS;
|
||||
}
|
||||
|
||||
static PRStatus
|
||||
nssutil_Delete(const char *name)
|
||||
{
|
||||
BOOL result;
|
||||
|
||||
if (!name) {
|
||||
return PR_FAILURE;
|
||||
}
|
||||
|
||||
wchar_t *nameWide = _NSSUTIL_UTF8ToWide(name);
|
||||
if (!nameWide) {
|
||||
return PR_FAILURE;
|
||||
}
|
||||
result = DeleteFileW(nameWide);
|
||||
PORT_Free(nameWide);
|
||||
|
||||
return result ? PR_SUCCESS : PR_FAILURE;
|
||||
}
|
||||
|
||||
static PRStatus
|
||||
nssutil_Rename(const char *from, const char *to)
|
||||
{
|
||||
BOOL result;
|
||||
|
||||
if (!from || !to) {
|
||||
return PR_FAILURE;
|
||||
}
|
||||
|
||||
wchar_t *fromWide = _NSSUTIL_UTF8ToWide(from);
|
||||
if (!fromWide) {
|
||||
return PR_FAILURE;
|
||||
}
|
||||
wchar_t *toWide = _NSSUTIL_UTF8ToWide(to);
|
||||
if (!toWide) {
|
||||
PORT_Free(fromWide);
|
||||
return PR_FAILURE;
|
||||
}
|
||||
result = MoveFileW(fromWide, toWide);
|
||||
PORT_Free(fromWide);
|
||||
PORT_Free(toWide);
|
||||
|
||||
return result ? PR_SUCCESS : PR_FAILURE;
|
||||
}
|
||||
#else
|
||||
#define os_fopen fopen
|
||||
#define os_open open
|
||||
#define os_fdopen fdopen
|
||||
#define os_stat stat
|
||||
|
|
@ -51,6 +221,8 @@
|
|||
#define os_open_permissions_type mode_t
|
||||
#define os_open_permissions_default 0600
|
||||
#define os_stat_type struct stat
|
||||
#define nssutil_Delete PR_Delete
|
||||
#define nssutil_Rename PR_Rename
|
||||
#endif
|
||||
|
||||
/****************************************************************
|
||||
|
|
@ -219,7 +391,7 @@ nssutil_ReadSecmodDB(const char *appName,
|
|||
}
|
||||
|
||||
/* do we really want to use streams here */
|
||||
fd = fopen(dbname, "r");
|
||||
fd = os_fopen(dbname, "r");
|
||||
if (fd == NULL)
|
||||
goto done;
|
||||
|
||||
|
|
@ -403,7 +575,7 @@ done:
|
|||
}
|
||||
|
||||
/* old one exists */
|
||||
status = PR_Access(olddbname, PR_ACCESS_EXISTS);
|
||||
status = _NSSUTIL_Access(olddbname, PR_ACCESS_EXISTS);
|
||||
if (status == PR_SUCCESS) {
|
||||
PR_smprintf_free(olddbname);
|
||||
PORT_ZFree(moduleList, useCount * sizeof(char *));
|
||||
|
|
@ -532,7 +704,7 @@ nssutil_DeleteSecmodDBEntry(const char *appName,
|
|||
}
|
||||
|
||||
/* do we really want to use streams here */
|
||||
fd = fopen(dbname, "r");
|
||||
fd = os_fopen(dbname, "r");
|
||||
if (fd == NULL)
|
||||
goto loser;
|
||||
|
||||
|
|
@ -602,10 +774,10 @@ nssutil_DeleteSecmodDBEntry(const char *appName,
|
|||
fclose(fd2);
|
||||
if (found) {
|
||||
/* rename dbname2 to dbname */
|
||||
PR_Delete(dbname);
|
||||
PR_Rename(dbname2, dbname);
|
||||
nssutil_Delete(dbname);
|
||||
nssutil_Rename(dbname2, dbname);
|
||||
} else {
|
||||
PR_Delete(dbname2);
|
||||
nssutil_Delete(dbname2);
|
||||
}
|
||||
PORT_Free(dbname2);
|
||||
PORT_Free(lib);
|
||||
|
|
@ -621,7 +793,7 @@ loser:
|
|||
fclose(fd2);
|
||||
}
|
||||
if (dbname2) {
|
||||
PR_Delete(dbname2);
|
||||
nssutil_Delete(dbname2);
|
||||
PORT_Free(dbname2);
|
||||
}
|
||||
PORT_Free(lib);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue