[commit: ghc] master: Remove left-over shell-tools.c (f3beed3)

git at git.haskell.org git at git.haskell.org
Sun Apr 10 21:39:40 UTC 2016


Repository : ssh://git@git.haskell.org/ghc

On branch  : master
Link       : http://ghc.haskell.org/trac/ghc/changeset/f3beed35309e4e8b60aa3f11372d1e00324eb046/ghc

>---------------------------------------------------------------

commit f3beed35309e4e8b60aa3f11372d1e00324eb046
Author: Herbert Valerio Riedel <hvr at gnu.org>
Date:   Sun Apr 10 18:56:11 2016 +0200

    Remove left-over shell-tools.c
    
    The last user of this file was the "-dynload wrapper"
    which was removed in 169f5972d5398e75c4cf7f831b6ce703288ec73c
    for addressing #4275
    
    Reviewers: austin, erikd, bgamari
    
    Reviewed By: bgamari
    
    Subscribers: thomie
    
    Differential Revision: https://phabricator.haskell.org/D2098
    
    GHC Trac Issues: #4275


>---------------------------------------------------------------

f3beed35309e4e8b60aa3f11372d1e00324eb046
 includes/shell-tools.c | 139 -------------------------------------------------
 1 file changed, 139 deletions(-)

diff --git a/includes/shell-tools.c b/includes/shell-tools.c
deleted file mode 100644
index 82c22d3..0000000
--- a/includes/shell-tools.c
+++ /dev/null
@@ -1,139 +0,0 @@
-#include <stdio.h>
-#include <stdarg.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <ghcplatform.h>
-
-#ifdef mingw32_HOST_OS
-#include <windows.h>
-#include <process.h>
-#include <malloc.h>
-#include <signal.h>
-#include <io.h>
-#endif
-
-void error(const char *fmt, ...) {
-    va_list argp;
-    va_start(argp, fmt);
-    vfprintf(stderr, fmt, argp);
-    va_end(argp);
-    fflush(stderr);
-}
-
-#ifndef mingw32_HOST_OS
-int run(char *this, char *program, int argc, char** argv) {
-    execv(program, argv);
-    error("%s: Unable to start %s: ", this, program);
-    perror("");
-    return 1; /* Not reached */
-}
-#else
-int run(char *this, char *program, int argc, char** argv) {
-    TCHAR  programShort[MAX_PATH+1];
-    DWORD  dwSize;
-    DWORD  dwExitCode;
-    int    i;
-    char*  new_cmdline;
-    char   *ptr;
-    char   *src;
-    unsigned int cmdline_len;
-
-    STARTUPINFO si;
-    PROCESS_INFORMATION pi;
-  
-    ZeroMemory(&si, sizeof(STARTUPINFO));
-    ZeroMemory(&pi, sizeof(PROCESS_INFORMATION));
-
-    si.cb = sizeof(STARTUPINFO);
-
-    dwSize = MAX_PATH;
-    /* Turn the path into short form - LFN form causes problems
-       when passed in argv[0]. */
-    if ( !(GetShortPathName(program, programShort, dwSize)) ) {
-        error("%s: Unable to locate %s\n", this, program);
-        return 1;
-    }
-  
-    /* Compute length of the flattened 'argv', including spaces! */
-    cmdline_len = 0;
-    for(i = 0; i < argc; i++) {
-        /* Note: play it safe and quote all argv strings */
-        /* In the worst case we have to escape every character with a \ */
-        cmdline_len += 1 + 2 * strlen(argv[i]) + 2;
-    }
-    new_cmdline = (char*)malloc(sizeof(char) * (cmdline_len + 1));
-    if (!new_cmdline) {
-        error("%s: failed to start up ghc.exe; insufficient memory\n", this);
-        return 1;
-    }
-
-    ptr = new_cmdline;
-    for(i = 0; i < argc; i++) {
-        *ptr++ = ' ';
-        *ptr++ = '"';
-        src = argv[i];
-        while(*src) {
-            /* Escape any \ and " characters */
-            if ((*src == '\\') || (*src == '"')) {
-                *ptr++ = '\\';
-            }
-            *ptr++ = *src++;
-        }
-        *ptr++ = '"';
-    }
-    *ptr = '\0';
-    new_cmdline = new_cmdline + 1; /* Skip the leading space */
-
-    /* Note: Used to use _spawnv(_P_WAIT, ...) here, but it suffered
-       from the parent intercepting console events such as Ctrl-C,
-       which it shouldn't. Installing an ignore-all console handler
-       didn't do the trick either.
-
-       Irrespective of this issue, using CreateProcess() is preferable,
-       as it makes this wrapper work on both mingw and cygwin.
-    */
-#if 0
-    fprintf(stderr, "Invoking ghc: %s %s\n", programShort, new_cmdline);
-    fflush(stderr);
-#endif
-    if (!CreateProcess(programShort,
-                       new_cmdline,
-                       NULL,
-                       NULL,
-                       TRUE,
-                       0, /* dwCreationFlags */
-                       NULL, /* lpEnvironment */
-                       NULL, /* lpCurrentDirectory */
-                       &si,  /* lpStartupInfo */
-                       &pi) ) {
-        error("%s: Unable to start ghc.exe (error code: %lu)\n",
-              this, GetLastError());
-        return 1;
-    }
-    /* Disable handling of console events in the parent by dropping its
-     * connection to the console. This has the (minor) downside of not being
-     * able to subsequently emit any error messages to the console.
-     */
-    FreeConsole();
-
-    switch (WaitForSingleObject(pi.hProcess, INFINITE) ) {
-        case WAIT_OBJECT_0:
-            if (GetExitCodeProcess(pi.hProcess, &dwExitCode)) {
-                return dwExitCode;
-            }
-            else {
-                return 1;
-            }
-        case WAIT_ABANDONED:
-        case WAIT_FAILED:
-            /* in the event we get any hard errors, bring the child
-               to a halt. */
-            TerminateProcess(pi.hProcess, 1);
-            return 1;
-        default:
-            return 1;
-    }
-}
-#endif
-



More information about the ghc-commits mailing list