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 run all the post-install scripts
17 in their various forms. */
39 static OSVERSIONINFO verinfo;
42 run (char *shscript, char *args, char *file)
45 char cmdline [_MAX_PATH];
47 PROCESS_INFORMATION pi;
49 sprintf (cmdline, "%s %s %s", shscript, args, file);
50 memset (&pi, 0, sizeof (pi));
51 memset (&si, 0, sizeof (si));
53 si.lpTitle = "XEmacs Setup Post-Install Script";
54 si.dwFlags = STARTF_USEPOSITION;
56 b = CreateProcess (0, cmdline, 0, 0, 0,
57 CREATE_NEW_CONSOLE, 0, root_dir, &si, &pi);
60 WaitForSingleObject (pi.hProcess, INFINITE);
64 each (char *fname, unsigned int size)
66 char *ext = strrchr (fname, '.');
70 if (sh && strcmp (ext, ".sh") == 0)
72 char *f2 = concat (root_dir, XEMACS_SETUP_DIR, "postinstall/", fname, 0);
76 else if (cmd && strcmp (ext, ".bat") == 0)
78 char *f2 = backslash (concat (root_dir, XEMACS_SETUP_DIR, "postinstall/",
86 rename (concat (root_dir, XEMACS_SETUP_DIR, "postinstall/", fname, 0),
87 concat (root_dir, XEMACS_SETUP_DIR, "postinstall/", fname, ".done", 0));
90 static char *shells [] = {
99 do_postinstall (HINSTANCE h)
103 char* cygroot = find_cygwin_root (&issystem);
110 for (i=0; shells[i]; i++)
112 sh = backslash (concat (cygroot, shells[i], 0));
113 if (_access (sh, 0) == 0)
120 char old_path[_MAX_PATH];
121 GetEnvironmentVariable ("PATH", old_path, sizeof (old_path));
123 SetEnvironmentVariable ("PATH",
124 backslash (concat (root_dir, "/bin;",
125 root_dir, "/usr/bin;",
128 SetEnvironmentVariable ("CYGWINROOT", root_dir);
130 SetCurrentDirectory (root_dir);
132 verinfo.dwOSVersionInfoSize = sizeof (verinfo);
133 GetVersionEx (&verinfo);
135 switch (verinfo.dwPlatformId)
137 case VER_PLATFORM_WIN32_NT:
140 case VER_PLATFORM_WIN32_WINDOWS:
148 find (concat (root_dir, XEMACS_SETUP_DIR, "postinstall", 0), each);