Bug 1442275 - Implement a path charset agnostic wrapper for PR_LoadLibraryWithFlags. r=froydnj
authorMasatoshi Kimura <VYV03354@nifty.ne.jp>
Tue, 24 Apr 2018 00:31:53 +0900
changeset 416791 af62a7677b23df7ea16511744b0c5095d7efc5de
parent 416790 6bcecf11bc2bd8cae64a26b4a9effb75d5e11ccb
child 416792 26a288cf0e0b871a95f0fa08cecb669fa32f776e
push id33938
push useraciure@mozilla.com
push dateThu, 03 May 2018 21:51:21 +0000
treeherdermozilla-central@06915b0dce57 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersfroydnj
bugs1442275
milestone61.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1442275 - Implement a path charset agnostic wrapper for PR_LoadLibraryWithFlags. r=froydnj MozReview-Commit-ID: 5rjmcv4kz9x
mfbt/SharedLibrary.h
mfbt/moz.build
new file mode 100644
--- /dev/null
+++ b/mfbt/SharedLibrary.h
@@ -0,0 +1,47 @@
+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set ts=8 sts=2 et sw=2 tw=80: */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+/* Path charset agnostic wrappers for prlink.h. */
+
+#ifndef mozilla_SharedLibrary_h
+#define mozilla_SharedLibrary_h
+
+#ifdef MOZILLA_INTERNAL_API
+
+#include "prlink.h"
+#include "mozilla/Char16.h"
+
+namespace mozilla {
+
+//
+// Load the specified library.
+//
+// @param aPath  path to the library
+// @param aFlags takes PR_LD_* flags (see prlink.h)
+//
+inline PRLibrary*
+#ifdef XP_WIN
+LoadLibraryWithFlags(char16ptr_t aPath, PRUint32 aFlags = 0)
+#else
+LoadLibraryWithFlags(const char* aPath, PRUint32 aFlags = 0)
+#endif
+{
+  PRLibSpec libSpec;
+#ifdef XP_WIN
+  libSpec.type = PR_LibSpec_PathnameU;
+  libSpec.value.pathname_u = aPath;
+#else
+  libSpec.type = PR_LibSpec_Pathname;
+  libSpec.value.pathname = aPath;
+#endif
+  return PR_LoadLibraryWithFlags(libSpec, aFlags);
+}
+
+}  /* namespace mozilla */
+
+#endif /* MOZILLA_INTERNAL_API */
+
+#endif /* mozilla_SharedLibrary_h */
--- a/mfbt/moz.build
+++ b/mfbt/moz.build
@@ -77,16 +77,17 @@ EXPORTS.mozilla = [
     'ResultExtensions.h',
     'ReverseIterator.h',
     'RollingMean.h',
     'Saturate.h',
     'Scoped.h',
     'ScopeExit.h',
     'SegmentedVector.h',
     'SHA1.h',
+    'SharedLibrary.h',
     'SmallPointerArray.h',
     'Span.h',
     'SplayTree.h',
     'Sprintf.h',
     'StaticAnalysisFunctions.h',
     'TaggedAnonymousMemory.h',
     'TemplateLib.h',
     'TextUtils.h',