Move a recently introduced utility function out of the file in which I
authorsimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Sun, 2 Oct 2011 13:53:58 +0000 (13:53 +0000)
committersimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Sun, 2 Oct 2011 13:53:58 +0000 (13:53 +0000)
declared it static, and into winutils.c where it can be more generally
accessible.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9318 cda61777-01e9-0310-a592-d414129be87e

windows/winctrls.c
windows/winstuff.h
windows/winutils.c

index fa79e64..c9300cd 100644 (file)
@@ -2098,26 +2098,12 @@ void dlg_editbox_set(union control *ctrl, void *dlg, char const *text)
     SetDlgItemText(dp->hwnd, c->base_id+1, text);
 }
 
-static char *getdlgitemtext_alloc(HWND hwnd, int id)
-{
-    char *ret = NULL;
-    int size = 0;
-
-    do {
-       size = size * 4 / 3 + 512;
-       ret = sresize(ret, size, char);
-       GetDlgItemText(hwnd, id, ret, size);
-    } while (!memchr(ret, '\0', size-1));
-
-    return ret;
-}
-
 char *dlg_editbox_get(union control *ctrl, void *dlg)
 {
     struct dlgparam *dp = (struct dlgparam *)dlg;
     struct winctrl *c = dlg_findbyctrl(dp, ctrl);
     assert(c && c->ctrl->generic.type == CTRL_EDITBOX);
-    return getdlgitemtext_alloc(dp->hwnd, c->base_id+1);
+    return GetDlgItemText_alloc(dp->hwnd, c->base_id+1);
 }
 
 /* The `listbox' functions can also apply to combo boxes. */
@@ -2312,7 +2298,7 @@ Filename *dlg_filesel_get(union control *ctrl, void *dlg)
     char *tmp;
     Filename *ret;
     assert(c && c->ctrl->generic.type == CTRL_FILESELECT);
-    tmp = getdlgitemtext_alloc(dp->hwnd, c->base_id+1);
+    tmp = GetDlgItemText_alloc(dp->hwnd, c->base_id+1);
     ret = filename_from_str(tmp);
     sfree(tmp);
     return ret;
index e8b70d4..13ec3d8 100644 (file)
@@ -287,6 +287,7 @@ BOOL request_file(filereq *state, OPENFILENAME *of, int preserve, int save);
 filereq *filereq_new(void);
 void filereq_free(filereq *state);
 int message_box(LPCTSTR text, LPCTSTR caption, DWORD style, DWORD helpctxid);
+char *GetDlgItemText_alloc(HWND hwnd, int id);
 void split_into_argv(char *, int *, char ***, char ***);
 
 /*
index 40f1f4a..2e0183d 100644 (file)
@@ -151,6 +151,25 @@ void pgp_fingerprints(void)
 }
 
 /*
+ * Handy wrapper around GetDlgItemText which doesn't make you invent
+ * an arbitrary length limit on the output string. Returned string is
+ * dynamically allocated; caller must free.
+ */
+char *GetDlgItemText_alloc(HWND hwnd, int id)
+{
+    char *ret = NULL;
+    int size = 0;
+
+    do {
+       size = size * 4 / 3 + 512;
+       ret = sresize(ret, size, char);
+       GetDlgItemText(hwnd, id, ret, size);
+    } while (!memchr(ret, '\0', size-1));
+
+    return ret;
+}
+
+/*
  * Split a complete command line into argc/argv, attempting to do
  * it exactly the same way Windows itself would do it (so that
  * console utilities, which receive argc and argv from Windows,