NTSTATUS returns STATUS_SUCCESS on success.
[nssm.git] / service.cpp
index 849f790..20ebcd9 100644 (file)
@@ -1503,6 +1503,9 @@ void WINAPI service_main(unsigned long argc, TCHAR **argv) {
   nssm_service_t *service = alloc_nssm_service();\r
   if (! service) return;\r
 \r
+  static volatile bool await_debugger = (argc > 1 && str_equiv(argv[1], _T("debug")));\r
+  while (await_debugger) Sleep(1000);\r
+\r
   if (_sntprintf_s(service->name, _countof(service->name), _TRUNCATE, _T("%s"), argv[0]) < 0) {\r
     log_event(EVENTLOG_ERROR_TYPE, NSSM_EVENT_OUT_OF_MEMORY, _T("service->name"), _T("service_main()"), 0);\r
     return;\r
@@ -2209,7 +2212,9 @@ awaited:
   return ret;\r
 }\r
 \r
-int list_nssm_services() {\r
+int list_nssm_services(int argc, TCHAR **argv) {\r
+  bool including_native = (argc > 0 && str_equiv(argv[0], _T("all")));\r
+\r
   /* Open service manager. */\r
   SC_HANDLE services = open_service_manager(SC_MANAGER_CONNECT | SC_MANAGER_ENUMERATE_SERVICE);\r
   if (! services) {\r
@@ -2256,7 +2261,7 @@ int list_nssm_services() {
 \r
       get_parameters(service, 0);\r
       /* We manage the service if we have an Application. */\r
-      if (service->exe[0]) _tprintf(_T("%s\n"), service->name);\r
+      if (including_native || service->exe[0]) _tprintf(_T("%s\n"), service->name);\r
 \r
       cleanup_nssm_service(service);\r
     }\r