xpcom/base/nsSetDllDirectory.h
author Mike Hommey <mh+mozilla@glandium.org>
Thu, 30 Oct 2014 13:05:56 +0900
changeset 237375 a7b5bb9e867a583d01513acb8ca4431cc9acb3d1
parent 223095 fe4f8a3cdb1991c1e6fba042dcab1fd345ad4357
permissions -rw-r--r--
Bug 1077148 part 2 - Remove hack to avoid sqlite being linked against mozglue on mac. r=gps This hack has actually not been actively used since sqlite, nss and nspr are all folded together, because no shared library is actually linked in db/sqlite3/src.

/* -*- 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/. */

#ifndef nsSetDllDirectory_h
#define nsSetDllDirectory_h

#ifndef XP_WIN
#error This file only makes sense on Windows.
#endif

#include <windows.h>
#include <nscore.h>
#include <stdlib.h>

namespace mozilla {

static void
SanitizeEnvironmentVariables()
{
  DWORD bufferSize = GetEnvironmentVariableW(L"PATH", nullptr, 0);
  if (bufferSize) {
    wchar_t* originalPath = new wchar_t[bufferSize];
    if (bufferSize - 1 == GetEnvironmentVariableW(L"PATH", originalPath,
                                                  bufferSize)) {
      bufferSize = ExpandEnvironmentStringsW(originalPath, nullptr, 0);
      if (bufferSize) {
        wchar_t* newPath = new wchar_t[bufferSize];
        if (ExpandEnvironmentStringsW(originalPath,
                                      newPath,
                                      bufferSize)) {
          SetEnvironmentVariableW(L"PATH", newPath);
        }
        delete[] newPath;
      }
    }
    delete[] originalPath;
  }
}

}

#endif