mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-10-21 06:37:30 +09:00
Issue #187: Remove solaris conditional code.
This commit is contained in:
parent
471c65b924
commit
78d61fd2b1
26 changed files with 12 additions and 448 deletions
|
|
@ -59,7 +59,6 @@ const nsIPropertyElement = Components.interfaces.nsIPropertyElement;
|
||||||
|
|
||||||
const MAC = (navigator.platform.indexOf("Mac") != -1);
|
const MAC = (navigator.platform.indexOf("Mac") != -1);
|
||||||
const LINUX = (navigator.platform.indexOf("Linux") != -1);
|
const LINUX = (navigator.platform.indexOf("Linux") != -1);
|
||||||
const SOLARIS = (navigator.platform.indexOf("SunOS") != -1);
|
|
||||||
const WIN = (navigator.platform.indexOf("Win") != -1);
|
const WIN = (navigator.platform.indexOf("Win") != -1);
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@
|
||||||
|
|
||||||
// nsIAccessible::name
|
// nsIAccessible::name
|
||||||
var applicationName = "";
|
var applicationName = "";
|
||||||
if (LINUX || SOLARIS) {
|
if (LINUX) {
|
||||||
applicationName = appInfo.name;
|
applicationName = appInfo.name;
|
||||||
} else {
|
} else {
|
||||||
try {
|
try {
|
||||||
|
|
|
||||||
|
|
@ -130,7 +130,7 @@
|
||||||
*/
|
*/
|
||||||
function getMenuTree1()
|
function getMenuTree1()
|
||||||
{
|
{
|
||||||
if (LINUX || SOLARIS) {
|
if (LINUX) {
|
||||||
var tree = {
|
var tree = {
|
||||||
role: ROLE_MENUPOPUP,
|
role: ROLE_MENUPOPUP,
|
||||||
children: [
|
children: [
|
||||||
|
|
@ -190,7 +190,7 @@
|
||||||
function getMenuTree2()
|
function getMenuTree2()
|
||||||
{
|
{
|
||||||
var tree = getMenuTree1();
|
var tree = getMenuTree1();
|
||||||
if (LINUX || SOLARIS) {
|
if (LINUX) {
|
||||||
var submenuTree =
|
var submenuTree =
|
||||||
{
|
{
|
||||||
name: "item2.0",
|
name: "item2.0",
|
||||||
|
|
@ -232,7 +232,7 @@
|
||||||
children: []
|
children: []
|
||||||
};
|
};
|
||||||
|
|
||||||
if (LINUX || SOLARIS)
|
if (LINUX)
|
||||||
tree.children[2].children[0].children.push(subsubmenuTree);
|
tree.children[2].children[0].children.push(subsubmenuTree);
|
||||||
else
|
else
|
||||||
tree.children[2].children[0].children[0].children[0].children.push(subsubmenuTree);
|
tree.children[2].children[0].children[0].children[0].children.push(subsubmenuTree);
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@
|
||||||
this.invoke = function openMenu_invoke()
|
this.invoke = function openMenu_invoke()
|
||||||
{
|
{
|
||||||
var tree;
|
var tree;
|
||||||
if (LINUX || SOLARIS) {
|
if (LINUX) {
|
||||||
tree =
|
tree =
|
||||||
{ PARENT_MENUITEM: [ ] };
|
{ PARENT_MENUITEM: [ ] };
|
||||||
|
|
||||||
|
|
@ -51,7 +51,7 @@
|
||||||
this.finalCheck = function openMenu_finalCheck()
|
this.finalCheck = function openMenu_finalCheck()
|
||||||
{
|
{
|
||||||
var tree;
|
var tree;
|
||||||
if (LINUX || SOLARIS) {
|
if (LINUX) {
|
||||||
tree =
|
tree =
|
||||||
{ PARENT_MENUITEM: [
|
{ PARENT_MENUITEM: [
|
||||||
{ MENUITEM: [ ] },
|
{ MENUITEM: [ ] },
|
||||||
|
|
|
||||||
|
|
@ -725,13 +725,6 @@
|
||||||
@RESPATH@/components/pipnss.xpt
|
@RESPATH@/components/pipnss.xpt
|
||||||
@RESPATH@/components/pippki.xpt
|
@RESPATH@/components/pippki.xpt
|
||||||
|
|
||||||
; for Solaris SPARC
|
|
||||||
#ifdef SOLARIS
|
|
||||||
bin/libfreebl_32fpu_3.so
|
|
||||||
bin/libfreebl_32int_3.so
|
|
||||||
bin/libfreebl_32int64_3.so
|
|
||||||
#endif
|
|
||||||
|
|
||||||
; [Updater]
|
; [Updater]
|
||||||
;
|
;
|
||||||
#ifdef MOZ_UPDATER
|
#ifdef MOZ_UPDATER
|
||||||
|
|
|
||||||
|
|
@ -318,13 +318,6 @@
|
||||||
@RESPATH@/chrome/pippki@JAREXT@
|
@RESPATH@/chrome/pippki@JAREXT@
|
||||||
@RESPATH@/chrome/pippki.manifest
|
@RESPATH@/chrome/pippki.manifest
|
||||||
|
|
||||||
; for Solaris SPARC
|
|
||||||
#ifdef SOLARIS
|
|
||||||
bin/libfreebl_32fpu_3.so
|
|
||||||
bin/libfreebl_32int_3.so
|
|
||||||
bin/libfreebl_32int64_3.so
|
|
||||||
#endif
|
|
||||||
|
|
||||||
; [Updater]
|
; [Updater]
|
||||||
;
|
;
|
||||||
#ifdef MOZ_UPDATER
|
#ifdef MOZ_UPDATER
|
||||||
|
|
|
||||||
|
|
@ -13,10 +13,6 @@
|
||||||
#include <float.h>
|
#include <float.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(SOLARIS)
|
|
||||||
#include <ieeefp.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "js/TypeDecls.h"
|
#include "js/TypeDecls.h"
|
||||||
#include "js/Value.h"
|
#include "js/Value.h"
|
||||||
#include "js/RootingAPI.h"
|
#include "js/RootingAPI.h"
|
||||||
|
|
|
||||||
|
|
@ -27,8 +27,6 @@
|
||||||
#elif defined(_AIX)
|
#elif defined(_AIX)
|
||||||
#define DEFAULT_X11_PATH "/usr/lib"
|
#define DEFAULT_X11_PATH "/usr/lib"
|
||||||
#define LOCAL_PLUGIN_DLL_ALT_SUFFIX ".a"
|
#define LOCAL_PLUGIN_DLL_ALT_SUFFIX ".a"
|
||||||
#elif defined(SOLARIS)
|
|
||||||
#define DEFAULT_X11_PATH "/usr/openwin/lib/"
|
|
||||||
#elif defined(LINUX)
|
#elif defined(LINUX)
|
||||||
#define DEFAULT_X11_PATH "/usr/X11R6/lib/"
|
#define DEFAULT_X11_PATH "/usr/X11R6/lib/"
|
||||||
#elif defined(__APPLE__)
|
#elif defined(__APPLE__)
|
||||||
|
|
@ -102,7 +100,7 @@ static bool LoadExtraSharedLib(const char *name, char **soname, bool tryToGetSon
|
||||||
|
|
||||||
#define PLUGIN_MAX_NUMBER_OF_EXTRA_LIBS 32
|
#define PLUGIN_MAX_NUMBER_OF_EXTRA_LIBS 32
|
||||||
#define PREF_PLUGINS_SONAME "plugin.soname.list"
|
#define PREF_PLUGINS_SONAME "plugin.soname.list"
|
||||||
#if defined(SOLARIS) || defined(HPUX)
|
#if defined(HPUX)
|
||||||
#define DEFAULT_EXTRA_LIBS_LIST "libXt" LOCAL_PLUGIN_DLL_SUFFIX ":libXext" LOCAL_PLUGIN_DLL_SUFFIX ":libXm" LOCAL_PLUGIN_DLL_SUFFIX
|
#define DEFAULT_EXTRA_LIBS_LIST "libXt" LOCAL_PLUGIN_DLL_SUFFIX ":libXext" LOCAL_PLUGIN_DLL_SUFFIX ":libXm" LOCAL_PLUGIN_DLL_SUFFIX
|
||||||
#else
|
#else
|
||||||
#define DEFAULT_EXTRA_LIBS_LIST "libXt" LOCAL_PLUGIN_DLL_SUFFIX ":libXext" LOCAL_PLUGIN_DLL_SUFFIX
|
#define DEFAULT_EXTRA_LIBS_LIST "libXt" LOCAL_PLUGIN_DLL_SUFFIX ":libXext" LOCAL_PLUGIN_DLL_SUFFIX
|
||||||
|
|
@ -280,7 +278,7 @@ nsresult nsPluginFile::LoadPlugin(PRLibrary **outLibrary)
|
||||||
// work fine.
|
// work fine.
|
||||||
|
|
||||||
|
|
||||||
#if defined(SOLARIS) || defined(HPUX)
|
#if defined(HPUX)
|
||||||
// Acrobat/libXm: Lazy resolving might cause crash later (bug 211587)
|
// Acrobat/libXm: Lazy resolving might cause crash later (bug 211587)
|
||||||
*outLibrary = PR_LoadLibraryWithFlags(libSpec, PR_LD_NOW);
|
*outLibrary = PR_LoadLibraryWithFlags(libSpec, PR_LD_NOW);
|
||||||
pLibrary = *outLibrary;
|
pLibrary = *outLibrary;
|
||||||
|
|
|
||||||
|
|
@ -1096,15 +1096,8 @@ gfxFcFontSet::SortPreferredFonts(bool &aWaitForUserFont)
|
||||||
|
|
||||||
FcFontSet *sets[1] = { fontSet };
|
FcFontSet *sets[1] = { fontSet };
|
||||||
FcResult result;
|
FcResult result;
|
||||||
#ifdef SOLARIS
|
|
||||||
// Get around a crash of FcFontSetSort when FcConfig is nullptr
|
|
||||||
// Solaris's FcFontSetSort needs an FcConfig (bug 474758)
|
|
||||||
fontSet.own(FcFontSetSort(FcConfigGetCurrent(), sets, 1, mSortPattern,
|
|
||||||
FcFalse, nullptr, &result));
|
|
||||||
#else
|
|
||||||
fontSet.own(FcFontSetSort(nullptr, sets, 1, mSortPattern,
|
fontSet.own(FcFontSetSort(nullptr, sets, 1, mSortPattern,
|
||||||
FcFalse, nullptr, &result));
|
FcFalse, nullptr, &result));
|
||||||
#endif
|
|
||||||
|
|
||||||
if (truncateMarker != nullptr && fontSet) {
|
if (truncateMarker != nullptr && fontSet) {
|
||||||
nsAutoRef<FcFontSet> truncatedSet(FcFontSetCreate());
|
nsAutoRef<FcFontSet> truncatedSet(FcFontSetCreate());
|
||||||
|
|
|
||||||
|
|
@ -240,11 +240,7 @@ GetBuildConfiguration(JSContext* cx, unsigned argc, Value* vp)
|
||||||
if (!JS_SetProperty(cx, info, "intl-api", value))
|
if (!JS_SetProperty(cx, info, "intl-api", value))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
#if defined(SOLARIS)
|
|
||||||
value = BooleanValue(false);
|
|
||||||
#else
|
|
||||||
value = BooleanValue(true);
|
value = BooleanValue(true);
|
||||||
#endif
|
|
||||||
if (!JS_SetProperty(cx, info, "mapped-array-buffer", value))
|
if (!JS_SetProperty(cx, info, "mapped-array-buffer", value))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -20,10 +20,6 @@
|
||||||
#include <float.h>
|
#include <float.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(SOLARIS)
|
|
||||||
#include <ieeefp.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef HAVE_SSIZE_T
|
#ifdef HAVE_SSIZE_T
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -17,11 +17,6 @@
|
||||||
#include "jswin.h"
|
#include "jswin.h"
|
||||||
#include <psapi.h>
|
#include <psapi.h>
|
||||||
|
|
||||||
#elif defined(SOLARIS)
|
|
||||||
|
|
||||||
#include <sys/mman.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
|
|
||||||
#elif defined(XP_UNIX)
|
#elif defined(XP_UNIX)
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
|
@ -408,86 +403,6 @@ DeallocateMappedContent(void* p, size_t length)
|
||||||
|
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
#elif defined(SOLARIS)
|
|
||||||
|
|
||||||
#ifndef MAP_NOSYNC
|
|
||||||
# define MAP_NOSYNC 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void
|
|
||||||
InitMemorySubsystem()
|
|
||||||
{
|
|
||||||
if (pageSize == 0)
|
|
||||||
pageSize = allocGranularity = size_t(sysconf(_SC_PAGESIZE));
|
|
||||||
}
|
|
||||||
|
|
||||||
void*
|
|
||||||
MapAlignedPages(size_t size, size_t alignment)
|
|
||||||
{
|
|
||||||
MOZ_ASSERT(size >= alignment);
|
|
||||||
MOZ_ASSERT(size >= allocGranularity);
|
|
||||||
MOZ_ASSERT(size % alignment == 0);
|
|
||||||
MOZ_ASSERT(size % pageSize == 0);
|
|
||||||
MOZ_ASSERT_IF(alignment < allocGranularity, allocGranularity % alignment == 0);
|
|
||||||
MOZ_ASSERT_IF(alignment > allocGranularity, alignment % allocGranularity == 0);
|
|
||||||
|
|
||||||
int prot = PROT_READ | PROT_WRITE;
|
|
||||||
int flags = MAP_PRIVATE | MAP_ANON | MAP_ALIGN | MAP_NOSYNC;
|
|
||||||
|
|
||||||
void* p = mmap((caddr_t)alignment, size, prot, flags, -1, 0);
|
|
||||||
if (p == MAP_FAILED)
|
|
||||||
return nullptr;
|
|
||||||
return p;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void*
|
|
||||||
MapAlignedPagesLastDitch(size_t size, size_t alignment)
|
|
||||||
{
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
UnmapPages(void* p, size_t size)
|
|
||||||
{
|
|
||||||
MOZ_ALWAYS_TRUE(0 == munmap((caddr_t)p, size));
|
|
||||||
}
|
|
||||||
|
|
||||||
bool
|
|
||||||
MarkPagesUnused(void* p, size_t size)
|
|
||||||
{
|
|
||||||
MOZ_ASSERT(OffsetFromAligned(p, pageSize) == 0);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool
|
|
||||||
MarkPagesInUse(void* p, size_t size)
|
|
||||||
{
|
|
||||||
if (!DecommitEnabled())
|
|
||||||
return;
|
|
||||||
|
|
||||||
MOZ_ASSERT(OffsetFromAligned(p, pageSize) == 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
size_t
|
|
||||||
GetPageFaultCount()
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void*
|
|
||||||
AllocateMappedContent(int fd, size_t offset, size_t length, size_t alignment)
|
|
||||||
{
|
|
||||||
// Not implemented.
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Deallocate mapped memory for object.
|
|
||||||
void
|
|
||||||
DeallocateMappedContent(void* p, size_t length)
|
|
||||||
{
|
|
||||||
// Not implemented.
|
|
||||||
}
|
|
||||||
|
|
||||||
#elif defined(XP_UNIX)
|
#elif defined(XP_UNIX)
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
||||||
|
|
@ -14,8 +14,6 @@
|
||||||
#if defined(XP_WIN)
|
#if defined(XP_WIN)
|
||||||
#include "jswin.h"
|
#include "jswin.h"
|
||||||
#include <psapi.h>
|
#include <psapi.h>
|
||||||
#elif defined(SOLARIS)
|
|
||||||
// This test doesn't apply to Solaris.
|
|
||||||
#elif defined(XP_UNIX)
|
#elif defined(XP_UNIX)
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
|
@ -39,8 +37,6 @@ BEGIN_TEST(testGCAllocator)
|
||||||
# else // Various APIs are unavailable. This test is disabled.
|
# else // Various APIs are unavailable. This test is disabled.
|
||||||
return true;
|
return true;
|
||||||
# endif
|
# endif
|
||||||
#elif defined(SOLARIS)
|
|
||||||
return true;
|
|
||||||
#elif defined(XP_UNIX)
|
#elif defined(XP_UNIX)
|
||||||
PageSize = size_t(sysconf(_SC_PAGESIZE));
|
PageSize = size_t(sysconf(_SC_PAGESIZE));
|
||||||
#else
|
#else
|
||||||
|
|
@ -301,12 +297,6 @@ void* mapMemory(size_t length) { return nullptr; }
|
||||||
void unmapPages(void* p, size_t size) { }
|
void unmapPages(void* p, size_t size) { }
|
||||||
|
|
||||||
# endif
|
# endif
|
||||||
#elif defined(SOLARIS) // This test doesn't apply to Solaris.
|
|
||||||
|
|
||||||
void* mapMemoryAt(void* desired, size_t length) { return nullptr; }
|
|
||||||
void* mapMemory(size_t length) { return nullptr; }
|
|
||||||
void unmapPages(void* p, size_t size) { }
|
|
||||||
|
|
||||||
#elif defined(XP_UNIX)
|
#elif defined(XP_UNIX)
|
||||||
|
|
||||||
void*
|
void*
|
||||||
|
|
@ -377,7 +367,7 @@ unmapPages(void* p, size_t size)
|
||||||
MOZ_RELEASE_ASSERT(errno == ENOMEM);
|
MOZ_RELEASE_ASSERT(errno == ENOMEM);
|
||||||
}
|
}
|
||||||
|
|
||||||
#else // !defined(XP_WIN) && !defined(SOLARIS) && !defined(XP_UNIX)
|
#else // !defined(XP_WIN) && !defined(XP_UNIX)
|
||||||
#error "Memory mapping functions are not defined for your OS."
|
#error "Memory mapping functions are not defined for your OS."
|
||||||
#endif
|
#endif
|
||||||
END_TEST(testGCAllocator)
|
END_TEST(testGCAllocator)
|
||||||
|
|
|
||||||
|
|
@ -71,20 +71,6 @@ js::GetNativeStackBaseImpl()
|
||||||
# endif
|
# endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#elif defined(SOLARIS)
|
|
||||||
|
|
||||||
#include <ucontext.h>
|
|
||||||
|
|
||||||
JS_STATIC_ASSERT(JS_STACK_GROWTH_DIRECTION < 0);
|
|
||||||
|
|
||||||
void*
|
|
||||||
js::GetNativeStackBaseImpl()
|
|
||||||
{
|
|
||||||
stack_t st;
|
|
||||||
stack_getbounds(&st);
|
|
||||||
return static_cast<char*>(st.ss_sp) + st.ss_size;
|
|
||||||
}
|
|
||||||
|
|
||||||
#elif defined(AIX)
|
#elif defined(AIX)
|
||||||
|
|
||||||
#include <ucontext.h>
|
#include <ucontext.h>
|
||||||
|
|
|
||||||
|
|
@ -11,9 +11,6 @@
|
||||||
#include "mozilla/DebugOnly.h"
|
#include "mozilla/DebugOnly.h"
|
||||||
#include "mozilla/MathAlgorithms.h"
|
#include "mozilla/MathAlgorithms.h"
|
||||||
|
|
||||||
#ifdef SOLARIS
|
|
||||||
#define _REENTRANT 1
|
|
||||||
#endif
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
|
|
||||||
|
|
@ -33,10 +30,6 @@
|
||||||
|
|
||||||
#ifdef XP_UNIX
|
#ifdef XP_UNIX
|
||||||
|
|
||||||
#ifdef _SVID_GETTOD /* Defined only on Solaris, see Solaris <sys/types.h> */
|
|
||||||
extern int gettimeofday(struct timeval* tv);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <sys/time.h>
|
#include <sys/time.h>
|
||||||
|
|
||||||
#endif /* XP_UNIX */
|
#endif /* XP_UNIX */
|
||||||
|
|
@ -49,11 +42,7 @@ PRMJ_Now()
|
||||||
{
|
{
|
||||||
struct timeval tv;
|
struct timeval tv;
|
||||||
|
|
||||||
#ifdef _SVID_GETTOD /* Defined only on Solaris, see Solaris <sys/types.h> */
|
|
||||||
gettimeofday(&tv);
|
|
||||||
#else
|
|
||||||
gettimeofday(&tv, 0);
|
gettimeofday(&tv, 0);
|
||||||
#endif /* _SVID_GETTOD */
|
|
||||||
|
|
||||||
return int64_t(tv.tv_sec) * PRMJ_USEC_PER_SEC + int64_t(tv.tv_usec);
|
return int64_t(tv.tv_sec) * PRMJ_USEC_PER_SEC + int64_t(tv.tv_usec);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -130,7 +130,7 @@ class AutoSetHandlingSegFault
|
||||||
# define EPC_sig(p) ((p)->sc_pc)
|
# define EPC_sig(p) ((p)->sc_pc)
|
||||||
# define RFP_sig(p) ((p)->sc_regs[30])
|
# define RFP_sig(p) ((p)->sc_regs[30])
|
||||||
# endif
|
# endif
|
||||||
#elif defined(__linux__) || defined(SOLARIS)
|
#elif defined(__linux__)
|
||||||
# if defined(__linux__)
|
# if defined(__linux__)
|
||||||
# define XMM_sig(p,i) ((p)->uc_mcontext.fpregs->_xmm[i])
|
# define XMM_sig(p,i) ((p)->uc_mcontext.fpregs->_xmm[i])
|
||||||
# define EIP_sig(p) ((p)->uc_mcontext.gregs[REG_EIP])
|
# define EIP_sig(p) ((p)->uc_mcontext.gregs[REG_EIP])
|
||||||
|
|
|
||||||
|
|
@ -644,7 +644,6 @@ env_setProperty(JSContext* cx, HandleObject obj, HandleId id, MutableHandleValue
|
||||||
ObjectOpResult& result)
|
ObjectOpResult& result)
|
||||||
{
|
{
|
||||||
/* XXX porting may be easy, but these don't seem to supply setenv by default */
|
/* XXX porting may be easy, but these don't seem to supply setenv by default */
|
||||||
#if !defined SOLARIS
|
|
||||||
RootedString valstr(cx);
|
RootedString valstr(cx);
|
||||||
RootedString idstr(cx);
|
RootedString idstr(cx);
|
||||||
int rv;
|
int rv;
|
||||||
|
|
@ -696,7 +695,6 @@ env_setProperty(JSContext* cx, HandleObject obj, HandleId id, MutableHandleValue
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
vp.setString(valstr);
|
vp.setString(valstr);
|
||||||
#endif /* !defined SOLARIS */
|
|
||||||
return result.succeed();
|
return result.succeed();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -67,9 +67,6 @@
|
||||||
#define alloca _alloca
|
#define alloca _alloca
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#ifdef SOLARIS
|
|
||||||
#include <alloca.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
using std::max;
|
using std::max;
|
||||||
using std::min;
|
using std::min;
|
||||||
|
|
|
||||||
|
|
@ -283,9 +283,7 @@ typedef long ssize_t;
|
||||||
#define JEMALLOC_RECYCLE
|
#define JEMALLOC_RECYCLE
|
||||||
|
|
||||||
#ifndef MOZ_MEMORY_WINDOWS
|
#ifndef MOZ_MEMORY_WINDOWS
|
||||||
#ifndef MOZ_MEMORY_SOLARIS
|
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#endif
|
|
||||||
#ifndef __DECONST
|
#ifndef __DECONST
|
||||||
# define __DECONST(type, var) ((type)(uintptr_t)(const void *)(var))
|
# define __DECONST(type, var) ((type)(uintptr_t)(const void *)(var))
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -311,7 +309,7 @@ __FBSDID("$FreeBSD: head/lib/libc/stdlib/malloc.c 180599 2008-07-18 19:35:44Z ja
|
||||||
#endif
|
#endif
|
||||||
#include <sys/time.h>
|
#include <sys/time.h>
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#if !defined(MOZ_MEMORY_SOLARIS) && !defined(MOZ_MEMORY_ANDROID)
|
#if !defined(MOZ_MEMORY_ANDROID)
|
||||||
#include <sys/sysctl.h>
|
#include <sys/sysctl.h>
|
||||||
#endif
|
#endif
|
||||||
#include <sys/uio.h>
|
#include <sys/uio.h>
|
||||||
|
|
@ -413,10 +411,6 @@ void *_mmap(void *addr, size_t length, int prot, int flags,
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(MOZ_MEMORY_SOLARIS) && defined(MAP_ALIGN) && !defined(JEMALLOC_NEVER_USES_MAP_ALIGN)
|
|
||||||
#define JEMALLOC_USES_MAP_ALIGN /* Required on Solaris 10. Might improve performance elsewhere. */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef __DECONST
|
#ifndef __DECONST
|
||||||
#define __DECONST(type, var) ((type)(uintptr_t)(const void *)(var))
|
#define __DECONST(type, var) ((type)(uintptr_t)(const void *)(var))
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -1043,7 +1037,7 @@ static const bool config_recycle = false;
|
||||||
* will abort.
|
* will abort.
|
||||||
* Platform specific page size conditions copied from js/public/HeapAPI.h
|
* Platform specific page size conditions copied from js/public/HeapAPI.h
|
||||||
*/
|
*/
|
||||||
#if (defined(SOLARIS) || defined(__FreeBSD__)) && \
|
#if (defined(__FreeBSD__)) && \
|
||||||
(defined(__sparc) || defined(__sparcv9) || defined(__ia64))
|
(defined(__sparc) || defined(__sparcv9) || defined(__ia64))
|
||||||
#define pagesize_2pow ((size_t) 13)
|
#define pagesize_2pow ((size_t) 13)
|
||||||
#elif defined(__powerpc64__)
|
#elif defined(__powerpc64__)
|
||||||
|
|
@ -5131,13 +5125,6 @@ malloc_ncpus(void)
|
||||||
else
|
else
|
||||||
return (n);
|
return (n);
|
||||||
}
|
}
|
||||||
#elif (defined(MOZ_MEMORY_SOLARIS))
|
|
||||||
|
|
||||||
static inline unsigned
|
|
||||||
malloc_ncpus(void)
|
|
||||||
{
|
|
||||||
return sysconf(_SC_NPROCESSORS_ONLN);
|
|
||||||
}
|
|
||||||
#elif (defined(MOZ_MEMORY_WINDOWS))
|
#elif (defined(MOZ_MEMORY_WINDOWS))
|
||||||
static inline unsigned
|
static inline unsigned
|
||||||
malloc_ncpus(void)
|
malloc_ncpus(void)
|
||||||
|
|
@ -5934,19 +5921,9 @@ RETURN:
|
||||||
#define MOZ_MEMORY_ELF
|
#define MOZ_MEMORY_ELF
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef MOZ_MEMORY_SOLARIS
|
|
||||||
# ifdef __SUNPRO_C
|
|
||||||
void *
|
|
||||||
memalign_impl(size_t alignment, size_t size);
|
|
||||||
#pragma no_inline(memalign_impl)
|
|
||||||
# elif (defined(__GNUC__))
|
|
||||||
__attribute__((noinline))
|
|
||||||
# endif
|
|
||||||
#else
|
|
||||||
#if (defined(MOZ_MEMORY_ELF))
|
#if (defined(MOZ_MEMORY_ELF))
|
||||||
__attribute__((visibility ("hidden")))
|
__attribute__((visibility ("hidden")))
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
#endif /* MOZ_REPLACE_MALLOC */
|
#endif /* MOZ_REPLACE_MALLOC */
|
||||||
|
|
||||||
#ifdef MOZ_MEMORY_ELF
|
#ifdef MOZ_MEMORY_ELF
|
||||||
|
|
|
||||||
|
|
@ -96,11 +96,7 @@ static inline int mywcsprintf(WCHAR* dest, size_t count, const WCHAR* fmt, ...)
|
||||||
# include <sys/wait.h>
|
# include <sys/wait.h>
|
||||||
# include <unistd.h>
|
# include <unistd.h>
|
||||||
|
|
||||||
#ifdef SOLARIS
|
|
||||||
# include <sys/stat.h>
|
|
||||||
#else
|
|
||||||
# include <fts.h>
|
# include <fts.h>
|
||||||
#endif
|
|
||||||
# include <dirent.h>
|
# include <dirent.h>
|
||||||
|
|
||||||
#ifdef XP_MACOSX
|
#ifdef XP_MACOSX
|
||||||
|
|
|
||||||
|
|
@ -3648,88 +3648,6 @@ int add_dir_entries(const NS_tchar *dirpath, ActionList *list)
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
#elif defined(SOLARIS)
|
|
||||||
int add_dir_entries(const NS_tchar *dirpath, ActionList *list)
|
|
||||||
{
|
|
||||||
int rv = OK;
|
|
||||||
NS_tchar foundpath[MAXPATHLEN];
|
|
||||||
struct {
|
|
||||||
dirent dent_buffer;
|
|
||||||
char chars[MAXNAMLEN];
|
|
||||||
} ent_buf;
|
|
||||||
struct dirent* ent;
|
|
||||||
mozilla::UniquePtr<NS_tchar[]> searchpath(get_full_path(dirpath));
|
|
||||||
|
|
||||||
DIR* dir = opendir(searchpath.get());
|
|
||||||
if (!dir) {
|
|
||||||
LOG(("add_dir_entries error on opendir: " LOG_S ", err: %d", searchpath.get(),
|
|
||||||
errno));
|
|
||||||
return UNEXPECTED_FILE_OPERATION_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
while (readdir_r(dir, (dirent *)&ent_buf, &ent) == 0 && ent) {
|
|
||||||
if ((strcmp(ent->d_name, ".") == 0) ||
|
|
||||||
(strcmp(ent->d_name, "..") == 0))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
NS_tsnprintf(foundpath, sizeof(foundpath)/sizeof(foundpath[0]),
|
|
||||||
NS_T("%s%s"), searchpath.get(), ent->d_name);
|
|
||||||
struct stat64 st_buf;
|
|
||||||
int test = stat64(foundpath, &st_buf);
|
|
||||||
if (test) {
|
|
||||||
closedir(dir);
|
|
||||||
return UNEXPECTED_FILE_OPERATION_ERROR;
|
|
||||||
}
|
|
||||||
if (S_ISDIR(st_buf.st_mode)) {
|
|
||||||
NS_tsnprintf(foundpath, sizeof(foundpath)/sizeof(foundpath[0]),
|
|
||||||
NS_T("%s/"), foundpath);
|
|
||||||
// Recurse into the directory.
|
|
||||||
rv = add_dir_entries(foundpath, list);
|
|
||||||
if (rv) {
|
|
||||||
LOG(("add_dir_entries error: " LOG_S ", err: %d", foundpath, rv));
|
|
||||||
closedir(dir);
|
|
||||||
return rv;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// Add the file to be removed to the ActionList.
|
|
||||||
NS_tchar *quotedpath = get_quoted_path(get_relative_path(foundpath));
|
|
||||||
if (!quotedpath) {
|
|
||||||
closedir(dir);
|
|
||||||
return PARSE_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
Action *action = new RemoveFile();
|
|
||||||
rv = action->Parse(quotedpath);
|
|
||||||
if (rv) {
|
|
||||||
LOG(("add_dir_entries Parse error on recurse: " LOG_S ", err: %d",
|
|
||||||
quotedpath, rv));
|
|
||||||
closedir(dir);
|
|
||||||
return rv;
|
|
||||||
}
|
|
||||||
|
|
||||||
list->Append(action);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
closedir(dir);
|
|
||||||
|
|
||||||
// Add the directory to be removed to the ActionList.
|
|
||||||
NS_tchar *quotedpath = get_quoted_path(get_relative_path(dirpath));
|
|
||||||
if (!quotedpath)
|
|
||||||
return PARSE_ERROR;
|
|
||||||
|
|
||||||
Action *action = new RemoveDir();
|
|
||||||
rv = action->Parse(quotedpath);
|
|
||||||
if (rv) {
|
|
||||||
LOG(("add_dir_entries Parse error on close: " LOG_S ", err: %d",
|
|
||||||
quotedpath, rv));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
list->Append(action);
|
|
||||||
}
|
|
||||||
|
|
||||||
return rv;
|
|
||||||
}
|
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
int add_dir_entries(const NS_tchar *dirpath, ActionList *list)
|
int add_dir_entries(const NS_tchar *dirpath, ActionList *list)
|
||||||
|
|
|
||||||
|
|
@ -32,11 +32,6 @@
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(SOLARIS)
|
|
||||||
#include <sys/resource.h>
|
|
||||||
#include <ucontext.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static const char* gProgname = "huh?";
|
static const char* gProgname = "huh?";
|
||||||
|
|
||||||
// Note: some tests manipulate this value.
|
// Note: some tests manipulate this value.
|
||||||
|
|
@ -198,32 +193,6 @@ static void fpehandler(int signum, siginfo_t *si, void *context)
|
||||||
*mxcsr &= ~SSE_STATUS_FLAGS; /* clear all pending SSE exceptions */
|
*mxcsr &= ~SSE_STATUS_FLAGS; /* clear all pending SSE exceptions */
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#ifdef SOLARIS
|
|
||||||
ucontext_t *uc = (ucontext_t *)context;
|
|
||||||
|
|
||||||
#if defined(__i386)
|
|
||||||
uint32_t *cw = &uc->uc_mcontext.fpregs.fp_reg_set.fpchip_state.state[0];
|
|
||||||
*cw |= FPU_EXCEPTION_MASK;
|
|
||||||
|
|
||||||
uint32_t *sw = &uc->uc_mcontext.fpregs.fp_reg_set.fpchip_state.state[1];
|
|
||||||
*sw &= ~FPU_STATUS_FLAGS;
|
|
||||||
|
|
||||||
/* address of the instruction that caused the exception */
|
|
||||||
uint32_t *ip = &uc->uc_mcontext.fpregs.fp_reg_set.fpchip_state.state[3];
|
|
||||||
uc->uc_mcontext.gregs[REG_PC] = *ip;
|
|
||||||
#endif
|
|
||||||
#if defined(__amd64__)
|
|
||||||
uint16_t *cw = &uc->uc_mcontext.fpregs.fp_reg_set.fpchip_state.cw;
|
|
||||||
*cw |= FPU_EXCEPTION_MASK;
|
|
||||||
|
|
||||||
uint16_t *sw = &uc->uc_mcontext.fpregs.fp_reg_set.fpchip_state.sw;
|
|
||||||
*sw &= ~FPU_STATUS_FLAGS;
|
|
||||||
|
|
||||||
uint32_t *mxcsr = &uc->uc_mcontext.fpregs.fp_reg_set.fpchip_state.mxcsr;
|
|
||||||
*mxcsr |= SSE_EXCEPTION_MASK; /* disable all SSE exceptions */
|
|
||||||
*mxcsr &= ~SSE_STATUS_FLAGS; /* clear all pending SSE exceptions */
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
@ -286,30 +255,6 @@ void InstallSignalHandlers(const char *aProgname)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(SOLARIS)
|
|
||||||
#define NOFILES 512
|
|
||||||
|
|
||||||
// Boost Solaris file descriptors
|
|
||||||
{
|
|
||||||
struct rlimit rl;
|
|
||||||
|
|
||||||
if (getrlimit(RLIMIT_NOFILE, &rl) == 0)
|
|
||||||
|
|
||||||
if (rl.rlim_cur < NOFILES) {
|
|
||||||
rl.rlim_cur = NOFILES;
|
|
||||||
|
|
||||||
if (setrlimit(RLIMIT_NOFILE, &rl) < 0) {
|
|
||||||
perror("setrlimit(RLIMIT_NOFILE)");
|
|
||||||
fprintf(stderr, "Cannot exceed hard limit for open files");
|
|
||||||
}
|
|
||||||
#if defined(DEBUG)
|
|
||||||
if (getrlimit(RLIMIT_NOFILE, &rl) == 0)
|
|
||||||
printf("File descriptors set to %d\n", rl.rlim_cur);
|
|
||||||
#endif //DEBUG
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif //SOLARIS
|
|
||||||
|
|
||||||
#if defined(MOZ_WIDGET_GTK) && (GLIB_MAJOR_VERSION > 2 || (GLIB_MAJOR_VERSION == 2 && GLIB_MINOR_VERSION >= 6))
|
#if defined(MOZ_WIDGET_GTK) && (GLIB_MAJOR_VERSION > 2 || (GLIB_MAJOR_VERSION == 2 && GLIB_MINOR_VERSION >= 6))
|
||||||
const char *assertString = PR_GetEnv("XPCOM_DEBUG_BREAK");
|
const char *assertString = PR_GetEnv("XPCOM_DEBUG_BREAK");
|
||||||
if (assertString &&
|
if (assertString &&
|
||||||
|
|
|
||||||
|
|
@ -450,12 +450,6 @@ RealBreak()
|
||||||
".object_arch armv4t\n"
|
".object_arch armv4t\n"
|
||||||
#endif
|
#endif
|
||||||
"BKPT #0");
|
"BKPT #0");
|
||||||
#elif defined(SOLARIS)
|
|
||||||
#if defined(__i386__) || defined(__i386) || defined(__x86_64__)
|
|
||||||
asm("int $3");
|
|
||||||
#else
|
|
||||||
raise(SIGTRAP);
|
|
||||||
#endif
|
|
||||||
#else
|
#else
|
||||||
#warning do not know how to break on this platform
|
#warning do not know how to break on this platform
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -530,8 +524,6 @@ Break(const char* aMsg)
|
||||||
RealBreak();
|
RealBreak();
|
||||||
#elif defined(__arm__)
|
#elif defined(__arm__)
|
||||||
RealBreak();
|
RealBreak();
|
||||||
#elif defined(SOLARIS)
|
|
||||||
RealBreak();
|
|
||||||
#else
|
#else
|
||||||
#warning do not know how to break on this platform
|
#warning do not know how to break on this platform
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -317,85 +317,6 @@ VsizeMaxContiguousDistinguishedAmount(int64_t* aN)
|
||||||
}
|
}
|
||||||
#endif // FreeBSD
|
#endif // FreeBSD
|
||||||
|
|
||||||
#elif defined(SOLARIS)
|
|
||||||
|
|
||||||
#include <procfs.h>
|
|
||||||
#include <fcntl.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
|
|
||||||
static void
|
|
||||||
XMappingIter(int64_t& aVsize, int64_t& aResident)
|
|
||||||
{
|
|
||||||
aVsize = -1;
|
|
||||||
aResident = -1;
|
|
||||||
int mapfd = open("/proc/self/xmap", O_RDONLY);
|
|
||||||
struct stat st;
|
|
||||||
prxmap_t* prmapp = nullptr;
|
|
||||||
if (mapfd >= 0) {
|
|
||||||
if (!fstat(mapfd, &st)) {
|
|
||||||
int nmap = st.st_size / sizeof(prxmap_t);
|
|
||||||
while (1) {
|
|
||||||
// stat(2) on /proc/<pid>/xmap returns an incorrect value,
|
|
||||||
// prior to the release of Solaris 11.
|
|
||||||
// Here is a workaround for it.
|
|
||||||
nmap *= 2;
|
|
||||||
prmapp = (prxmap_t*)malloc((nmap + 1) * sizeof(prxmap_t));
|
|
||||||
if (!prmapp) {
|
|
||||||
// out of memory
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
int n = pread(mapfd, prmapp, (nmap + 1) * sizeof(prxmap_t), 0);
|
|
||||||
if (n < 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (nmap >= n / sizeof(prxmap_t)) {
|
|
||||||
aVsize = 0;
|
|
||||||
aResident = 0;
|
|
||||||
for (int i = 0; i < n / sizeof(prxmap_t); i++) {
|
|
||||||
aVsize += prmapp[i].pr_size;
|
|
||||||
aResident += prmapp[i].pr_rss * prmapp[i].pr_pagesize;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
free(prmapp);
|
|
||||||
}
|
|
||||||
free(prmapp);
|
|
||||||
}
|
|
||||||
close(mapfd);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#define HAVE_VSIZE_AND_RESIDENT_REPORTERS 1
|
|
||||||
static MOZ_MUST_USE nsresult
|
|
||||||
VsizeDistinguishedAmount(int64_t* aN)
|
|
||||||
{
|
|
||||||
int64_t vsize, resident;
|
|
||||||
XMappingIter(vsize, resident);
|
|
||||||
if (vsize == -1) {
|
|
||||||
return NS_ERROR_FAILURE;
|
|
||||||
}
|
|
||||||
*aN = vsize;
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
static MOZ_MUST_USE nsresult
|
|
||||||
ResidentDistinguishedAmount(int64_t* aN)
|
|
||||||
{
|
|
||||||
int64_t vsize, resident;
|
|
||||||
XMappingIter(vsize, resident);
|
|
||||||
if (resident == -1) {
|
|
||||||
return NS_ERROR_FAILURE;
|
|
||||||
}
|
|
||||||
*aN = resident;
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
static MOZ_MUST_USE nsresult
|
|
||||||
ResidentFastDistinguishedAmount(int64_t* aN)
|
|
||||||
{
|
|
||||||
return ResidentDistinguishedAmount(aN);
|
|
||||||
}
|
|
||||||
|
|
||||||
#elif defined(XP_MACOSX)
|
#elif defined(XP_MACOSX)
|
||||||
|
|
||||||
#include <mach/mach_init.h>
|
#include <mach/mach_init.h>
|
||||||
|
|
@ -1145,13 +1066,9 @@ ResidentPeakDistinguishedAmount(int64_t* aN)
|
||||||
if (0 == getrusage(RUSAGE_SELF, &usage)) {
|
if (0 == getrusage(RUSAGE_SELF, &usage)) {
|
||||||
// The units for ru_maxrrs:
|
// The units for ru_maxrrs:
|
||||||
// - Mac: bytes
|
// - Mac: bytes
|
||||||
// - Solaris: pages? But some sources it actually always returns 0, so
|
|
||||||
// check for that
|
|
||||||
// - Linux, {Net/Open/Free}BSD, DragonFly: KiB
|
// - Linux, {Net/Open/Free}BSD, DragonFly: KiB
|
||||||
#ifdef XP_MACOSX
|
#ifdef XP_MACOSX
|
||||||
*aN = usage.ru_maxrss;
|
*aN = usage.ru_maxrss;
|
||||||
#elif defined(SOLARIS)
|
|
||||||
*aN = usage.ru_maxrss * getpagesize();
|
|
||||||
#else
|
#else
|
||||||
*aN = usage.ru_maxrss * 1024;
|
*aN = usage.ru_maxrss * 1024;
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -11,10 +11,6 @@
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
#include <float.h>
|
#include <float.h>
|
||||||
|
|
||||||
#ifdef SOLARIS
|
|
||||||
#include <ieeefp.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* round
|
* round
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -1591,22 +1591,6 @@ nsLocalFile::IsExecutable(bool* aResult)
|
||||||
|
|
||||||
// Then check the execute bit.
|
// Then check the execute bit.
|
||||||
*aResult = (access(mPath.get(), X_OK) == 0);
|
*aResult = (access(mPath.get(), X_OK) == 0);
|
||||||
#ifdef SOLARIS
|
|
||||||
// On Solaris, access will always return 0 for root user, however
|
|
||||||
// the file is only executable if S_IXUSR | S_IXGRP | S_IXOTH is set.
|
|
||||||
// See bug 351950, https://bugzilla.mozilla.org/show_bug.cgi?id=351950
|
|
||||||
if (*aResult) {
|
|
||||||
struct STAT buf;
|
|
||||||
|
|
||||||
*aResult = (STAT(mPath.get(), &buf) == 0);
|
|
||||||
if (*aResult || errno == EACCES) {
|
|
||||||
*aResult = *aResult && (buf.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH));
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
return NSRESULT_FOR_ERRNO();
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
if (*aResult || errno == EACCES) {
|
if (*aResult || errno == EACCES) {
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue