From 4c25687ee744780127150e22640df47931d139a9 Mon Sep 17 00:00:00 2001 From: Iain Patterson Date: Mon, 2 Mar 2015 11:02:06 +0000 Subject: [PATCH 1/1] Added nssm_imagepath() and nssm_unquoted_imagepath(). Functions to retrieve the path to nssm.exe both with and without path quoting. --- nssm.cpp | 16 ++++++++++++++++ nssm.h | 2 ++ 2 files changed, 18 insertions(+) diff --git a/nssm.cpp b/nssm.cpp index 7eef69d..ddd1561 100644 --- a/nssm.cpp +++ b/nssm.cpp @@ -4,6 +4,9 @@ extern unsigned long tls_index; extern bool is_admin; extern imports_t imports; +static TCHAR unquoted_imagepath[PATH_LENGTH]; +static TCHAR imagepath[PATH_LENGTH]; + /* Are two strings case-insensitively equivalent? */ int str_equiv(const TCHAR *a, const TCHAR *b) { size_t len = _tcslen(a); @@ -100,6 +103,14 @@ int num_cpus() { return (int) i; } +const TCHAR *nssm_unquoted_imagepath() { + return unquoted_imagepath; +} + +const TCHAR *nssm_imagepath() { + return imagepath; +} + int _tmain(int argc, TCHAR **argv) { check_console(); @@ -118,6 +129,11 @@ int _tmain(int argc, TCHAR **argv) { /* Set up function pointers. */ if (get_imports()) exit(111); + /* Remember our path for later. */ + GetModuleFileName(0, unquoted_imagepath, _countof(unquoted_imagepath)); + GetModuleFileName(0, imagepath, _countof(imagepath)); + PathQuoteSpaces(imagepath); + /* Elevate */ if (argc > 1) { /* diff --git a/nssm.h b/nssm.h index f95391d..911804f 100644 --- a/nssm.h +++ b/nssm.h @@ -60,6 +60,8 @@ int str_number(const TCHAR *, unsigned long *, TCHAR **); int str_number(const TCHAR *, unsigned long *); int num_cpus(); int usage(int); +const TCHAR *nssm_unquoted_imagepath(); +const TCHAR *nssm_imagepath(); #define NSSM _T("NSSM") #ifdef _WIN64 -- 2.20.1