]>
cygwin.com Git - cygwin-apps/setup.git/blob - root.cc
2 * Copyright (c) 2000, Red Hat, Inc.
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
9 * A copy of the GNU General Public License can be found at
12 * Written by DJ Delorie <dj@cygnus.com>
16 /* The purpose of this file is to ask the user where they want the
17 root of the installation to be, and to ask whether the user prefers
18 text or binary mounts. */
20 static char *cvsid
= "\n%%% $Id$\n";
36 static int rb
[] = { IDC_ROOT_TEXT
, IDC_ROOT_BINARY
, 0 };
37 static int su
[] = { IDC_ROOT_SYSTEM
, IDC_ROOT_USER
, 0 };
40 check_if_enable_next (HWND h
)
42 EnableWindow (GetDlgItem (h
, IDOK
), root_text
&& root_dir
&& root_scope
);
48 rbset (h
, rb
, root_text
);
49 rbset (h
, su
, root_scope
);
50 eset (h
, IDC_ROOT_DIR
, root_dir
);
51 check_if_enable_next (h
);
57 root_text
= rbget (h
, rb
);
58 root_scope
= rbget (h
, su
);
59 root_dir
= eget (h
, IDC_ROOT_DIR
, root_dir
);
63 browse_cb (HWND h
, UINT msg
, LPARAM lp
, LPARAM data
)
67 case BFFM_INITIALIZED
:
69 SendMessage (h
, BFFM_SETSELECTION
, TRUE
, (LPARAM
)root_dir
);
81 memset (&bi
, 0, sizeof (bi
));
83 bi
.pszDisplayName
= name
;
84 bi
.lpszTitle
= "Select an installation root directory";
85 bi
.ulFlags
= BIF_RETURNONLYFSDIRS
;
87 pidl
= SHBrowseForFolder (&bi
);
90 if (SHGetPathFromIDList (pidl
, name
))
91 eset (h
, IDC_ROOT_DIR
, name
);
95 #define isslash(c) ((c) == '\\' || (c) == '/')
98 directory_is_absolute ()
100 if (isalpha (root_dir
[0])
101 && root_dir
[1] == ':'
102 && (root_dir
[2] == '\\' || root_dir
[2] == '/'))
108 directory_is_rootdir ()
111 for (c
= root_dir
; *c
; c
++)
112 if (isslash (c
[0]) && c
[1] && !isslash (c
[1]))
118 directory_has_spaces ()
120 if (strchr (root_dir
, ' '))
126 dialog_cmd (HWND h
, int id
, HWND hwndctl
, UINT code
)
133 case IDC_ROOT_BINARY
:
134 case IDC_ROOT_SYSTEM
:
137 check_if_enable_next (h
);
140 case IDC_ROOT_BROWSE
:
147 if (! directory_is_absolute ())
149 note (IDS_ROOT_ABSOLUTE
);
153 if (directory_is_rootdir ())
154 if (IDNO
== yesno (IDS_ROOT_SLASH
))
157 if (directory_has_spaces ())
158 if (IDNO
== yesno (IDS_ROOT_SPACE
))
163 case IDC_SOURCE_NETINST
:
167 NEXT (IDD_S_FROM_CWD
);
170 msg ("source is default? %d\n", source
);
177 NEXT (IDD_LOCAL_DIR
);
187 dialog_proc (HWND h
, UINT message
, WPARAM wParam
, LPARAM lParam
)
195 return HANDLE_WM_COMMAND (h
, wParam
, lParam
, dialog_cmd
);
201 do_root (HINSTANCE h
)
206 rv
= DialogBox (h
, MAKEINTRESOURCE (IDD_ROOT
), 0, dialog_proc
);
208 fatal (IDS_DIALOG_FAILED
);
210 log (0, "root: %s %s %s", root_dir
,
211 (root_text
== IDC_ROOT_TEXT
) ? "text" : "binary",
212 (root_scope
== IDC_ROOT_USER
) ? "user" : "system");
This page took 0.047181 seconds and 6 git commands to generate.