From 45c2d7d33a92bcb7e84a039616ad747ebf953a73 Mon Sep 17 00:00:00 2001 From: Robert Collins Date: Thu, 1 Nov 2001 13:22:46 +0000 Subject: [PATCH] 2001-11-02 Robert Collins * choose.cc (dialog_cmd): Swap cygwin root selection and local dir selection order. * localdir.cc: Ran indent. (get_root_dir_now): New function. (save_local_dir): New function. (dialog_cmd): Use it and swap cygwin root selection and local dir selection order. (do_local_dir): If there is a saved local dir, read it in. * net.cc (dialog_cmd): Swap cygwin root selection and local dir selection order. * root.cc (dialog_cmd): Ditto. * source.cc (dialog_cmd): Ditto. --- ChangeLog | 12 +++++++++ choose.cc | 2 +- localdir.cc | 73 ++++++++++++++++++++++++++++++++++++++++++++++++----- net.cc | 11 +------- root.cc | 15 ++--------- source.cc | 10 +++++++- 6 files changed, 92 insertions(+), 31 deletions(-) diff --git a/ChangeLog b/ChangeLog index d45bb85f..feb95181 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2001-11-02 Robert Collins + + * choose.cc (dialog_cmd): Swap cygwin root selection and local dir selection order. + * localdir.cc: Ran indent. + (get_root_dir_now): New function. + (save_local_dir): New function. + (dialog_cmd): Use it and swap cygwin root selection and local dir selection order. + (do_local_dir): If there is a saved local dir, read it in. + * net.cc (dialog_cmd): Swap cygwin root selection and local dir selection order. + * root.cc (dialog_cmd): Ditto. + * source.cc (dialog_cmd): Ditto. + 2001-11-01 Robert Collins * choose.cc(list_vscroll): Return 0 as required by win32. diff --git a/choose.cc b/choose.cc index a2eef9d8..9b1af686 100644 --- a/choose.cc +++ b/choose.cc @@ -1157,7 +1157,7 @@ dialog_cmd (HWND h, int id, HWND hwndctl, UINT code) case IDC_BACK: initialized = 0; if (source == IDC_SOURCE_CWD) - NEXT (IDD_ROOT); + NEXT (IDD_LOCAL_DIR); else NEXT (IDD_SITE); break; diff --git a/localdir.cc b/localdir.cc index 0e2e3594..19e61be5 100644 --- a/localdir.cc +++ b/localdir.cc @@ -18,7 +18,8 @@ root of the installation to be, and to ask whether the user prefers text or binary mounts. */ -static char *cvsid = "\n%%% $Id$\n"; +static char *cvsid = + "\n%%% $Id$\n"; #include "win32.h" #include @@ -33,6 +34,34 @@ static char *cvsid = "\n%%% $Id$\n"; #include "mount.h" #include "concat.h" #include "log.h" +#include "mkdir.h" + +static void +get_root_dir_now () +{ + int istext; + int issystem; + if (get_root_dir ()) + return; + read_mounts (); +} + +void +save_local_dir () +{ + get_root_dir_now (); + if (!get_root_dir ()) + return; + + mkdir_p (1, local_dir); + + FILE *f = fopen (cygpath ("/etc/setup/last-cache", 0), "wb"); + if (!f) + return; + fprintf (f, "%s", local_dir); + fclose (f); +} + static void check_if_enable_next (HWND h) @@ -61,7 +90,7 @@ browse_cb (HWND h, UINT msg, LPARAM lp, LPARAM data) { case BFFM_INITIALIZED: if (local_dir) - SendMessage (h, BFFM_SETSELECTION, TRUE, (LPARAM)local_dir); + SendMessage (h, BFFM_SETSELECTION, TRUE, (LPARAM) local_dir); break; } return 0; @@ -105,18 +134,20 @@ dialog_cmd (HWND h, int id, HWND hwndctl, UINT code) case IDOK: save_dialog (h); + save_local_dir (); if (SetCurrentDirectoryA (local_dir)) { switch (source) { case IDC_SOURCE_DOWNLOAD: + case IDC_SOURCE_NETINST: NEXT (IDD_NET); break; - case IDC_SOURCE_NETINST: case IDC_SOURCE_CWD: - NEXT (IDD_ROOT); + NEXT (IDD_S_FROM_CWD); break; default: + msg ("source is default? %d\n", source); NEXT (0); break; } @@ -128,7 +159,19 @@ dialog_cmd (HWND h, int id, HWND hwndctl, UINT code) case IDC_BACK: save_dialog (h); - NEXT (IDD_SOURCE); + switch (source) + { + case IDC_SOURCE_DOWNLOAD: + NEXT (IDD_SOURCE); + break; + case IDC_SOURCE_NETINST: + case IDC_SOURCE_CWD: + NEXT (IDD_ROOT); + break; + default: + msg ("source is default? %d\n", source); + NEXT (0); + } break; case IDCANCEL: @@ -156,6 +199,25 @@ extern char cwd[_MAX_PATH]; void do_local_dir (HINSTANCE h) { + static int inited = 0; + if (!inited) + { + FILE *f = fopen (cygpath ("/etc/setup/last-cache", 0), "rt"); + if (f) + { + char localdir[1000]; + localdir[0] = '\0'; + char *fg_ret = fgets (localdir, 1000, f); + fclose (f); + if (fg_ret) + { + free (local_dir); + local_dir = strdup (localdir); + } + } + inited = 1; + } + int rv = 0; rv = DialogBox (h, MAKEINTRESOURCE (IDD_LOCAL_DIR), 0, dialog_proc); if (rv == -1) @@ -163,4 +225,3 @@ do_local_dir (HINSTANCE h) log (0, "Selected local directory: %s", local_dir); } - diff --git a/net.cc b/net.cc index 764b9aec..37342350 100644 --- a/net.cc +++ b/net.cc @@ -101,16 +101,7 @@ dialog_cmd (HWND h, int id, HWND hwndctl, UINT code) case IDC_BACK: save_dialog (h); - switch (source) - { - case IDC_SOURCE_DOWNLOAD: - NEXT (IDD_LOCAL_DIR); - break; - case IDC_SOURCE_NETINST: - case IDC_SOURCE_CWD: - NEXT (IDD_ROOT); - break; - } + NEXT (IDD_LOCAL_DIR); break; case IDCANCEL: diff --git a/root.cc b/root.cc index 60417946..8ecda171 100644 --- a/root.cc +++ b/root.cc @@ -157,23 +157,12 @@ dialog_cmd (HWND h, int id, HWND hwndctl, UINT code) if (IDNO == yesno (IDS_ROOT_SPACE)) break; - switch (source) - { - case IDC_SOURCE_NETINST: - NEXT (IDD_NET); - break; - case IDC_SOURCE_CWD: - NEXT (IDD_S_FROM_CWD); - break; - default: - msg ("source is default? %d\n", source); - NEXT (0); - } + NEXT (IDD_LOCAL_DIR); break; case IDC_BACK: save_dialog (h); - NEXT (IDD_LOCAL_DIR); + NEXT (IDD_SOURCE); break; case IDCANCEL: diff --git a/source.cc b/source.cc index 9ff9268b..c3a954dc 100644 --- a/source.cc +++ b/source.cc @@ -63,7 +63,15 @@ dialog_cmd (HWND h, int id, HWND hwndctl, UINT code) case IDOK: save_dialog (h); - NEXT (IDD_LOCAL_DIR); + switch (source) + { + case IDC_SOURCE_DOWNLOAD: + NEXT (IDD_LOCAL_DIR); + break; + default: + NEXT (IDD_ROOT); + break; + } break; case IDC_BACK: -- 2.43.5