Changed arguments to nssm_gui().
authorIain Patterson <me@iain.cx>
Mon, 23 Dec 2013 16:14:22 +0000 (16:14 +0000)
committerIain Patterson <me@iain.cx>
Mon, 23 Dec 2013 16:58:16 +0000 (16:58 +0000)
The second argument to nssm_gui() is now an nssm_service_t pointer
rather than a string.  This will allow the function to be extended later
to edit existing services.

gui.cpp
gui.h
service.cpp

diff --git a/gui.cpp b/gui.cpp
index 80d74ef..94da622 100644 (file)
--- a/gui.cpp
+++ b/gui.cpp
@@ -4,9 +4,9 @@ static enum { NSSM_TAB_APPLICATION, NSSM_TAB_DETAILS, NSSM_TAB_LOGON, NSSM_TAB_S
 static HWND tablist[NSSM_NUM_TABS];\r
 static int selected_tab;\r
 \r
-int nssm_gui(int resource, TCHAR *name) {\r
+int nssm_gui(int resource, nssm_service_t *service) {\r
   /* Create window */\r
-  HWND dlg = CreateDialog(0, MAKEINTRESOURCE(resource), 0, install_dlg);\r
+  HWND dlg = CreateDialogParam(0, MAKEINTRESOURCE(resource), 0, nssm_dlg, (LPARAM) service);\r
   if (! dlg) {\r
     popup_message(MB_OK, NSSM_GUI_CREATEDIALOG_FAILED, error_string(GetLastError()));\r
     return 1;\r
@@ -17,8 +17,8 @@ int nssm_gui(int resource, TCHAR *name) {
   ShowWindow(dlg, SW_SHOW);\r
 \r
   /* Set service name if given */\r
-  if (name) {\r
-    SetDlgItemText(dlg, IDC_NAME, name);\r
+  if (service->name[0]) {\r
+    SetDlgItemText(dlg, IDC_NAME, service->name);\r
     /* No point making user click remove if the name is already entered */\r
     if (resource == IDD_REMOVE) {\r
       HWND button = GetDlgItem(dlg, IDC_REMOVE);\r
@@ -604,7 +604,7 @@ INT_PTR CALLBACK tab_dlg(HWND tab, UINT message, WPARAM w, LPARAM l) {
 }\r
 \r
 /* Install/remove dialogue callback */\r
-INT_PTR CALLBACK install_dlg(HWND window, UINT message, WPARAM w, LPARAM l) {\r
+INT_PTR CALLBACK nssm_dlg(HWND window, UINT message, WPARAM w, LPARAM l) {\r
   switch (message) {\r
     /* Creating the dialogue */\r
     case WM_INITDIALOG:\r
diff --git a/gui.h b/gui.h
index ad6bc56..5cc9cea 100644 (file)
--- a/gui.h
+++ b/gui.h
@@ -6,11 +6,11 @@
 #include <commctrl.h>\r
 #include "resource.h"\r
 \r
-int nssm_gui(int, TCHAR *);\r
+int nssm_gui(int, nssm_service_t *);\r
 void centre_window(HWND);\r
 int install(HWND);\r
 int remove(HWND);\r
 void browse(HWND);\r
-INT_PTR CALLBACK install_dlg(HWND, UINT, WPARAM, LPARAM);\r
+INT_PTR CALLBACK nssm_dlg(HWND, UINT, WPARAM, LPARAM);\r
 \r
 #endif\r
index 57dc7a2..09fbe1f 100644 (file)
@@ -80,17 +80,17 @@ void cleanup_nssm_service(nssm_service_t *service) {
 \r
 /* About to install the service */\r
 int pre_install_service(int argc, TCHAR **argv) {\r
+  nssm_service_t *service = alloc_nssm_service();\r
+  set_nssm_service_defaults(service);\r
+  if (argc) _sntprintf_s(service->name, _countof(service->name), _TRUNCATE, _T("%s"), argv[0]);\r
+\r
   /* Show the dialogue box if we didn't give the service name and path */\r
-  if (argc < 2) return nssm_gui(IDD_INSTALL, argv[0]);\r
+  if (argc < 2) return nssm_gui(IDD_INSTALL, service);\r
 \r
-  nssm_service_t *service = alloc_nssm_service();\r
   if (! service) {\r
     print_message(stderr, NSSM_EVENT_OUT_OF_MEMORY, _T("service"), _T("pre_install_service()"));\r
     return 1;\r
   }\r
-\r
-  set_nssm_service_defaults(service);\r
-  _sntprintf_s(service->name, _countof(service->name), _TRUNCATE, _T("%s"), argv[0]);\r
   _sntprintf_s(service->exe, _countof(service->exe), _TRUNCATE, _T("%s"), argv[1]);\r
 \r
   /* Arguments are optional */\r
@@ -122,11 +122,13 @@ int pre_install_service(int argc, TCHAR **argv) {
 \r
 /* About to remove the service */\r
 int pre_remove_service(int argc, TCHAR **argv) {\r
+  nssm_service_t *service = alloc_nssm_service();\r
+  set_nssm_service_defaults(service);\r
+  if (argc) _sntprintf_s(service->name, _countof(service->name), _TRUNCATE, _T("%s"), argv[0]);\r
+\r
   /* Show dialogue box if we didn't pass service name and "confirm" */\r
-  if (argc < 2) return nssm_gui(IDD_REMOVE, argv[0]);\r
+  if (argc < 2) return nssm_gui(IDD_REMOVE, service);\r
   if (str_equiv(argv[1], _T("confirm"))) {\r
-    nssm_service_t *service = alloc_nssm_service();\r
-    _sntprintf_s(service->name, _countof(service->name), _TRUNCATE, _T("%s"), argv[0]);\r
     int ret = remove_service(service);\r
     cleanup_nssm_service(service);\r
     return ret;\r