From 09569ee5127fbe23fdfc30edb3787f56c01f6b4a Mon Sep 17 00:00:00 2001
From: Doug Coleman <doug.coleman@gmail.com>
Date: Thu, 14 Feb 2008 23:29:06 -0600
Subject: [PATCH] add current-process-handle to io.launcher make
 tools.disassembler work on windows

---
 extra/io/launcher/launcher.factor            | 2 ++
 extra/io/unix/launcher/launcher.factor       | 4 +++-
 extra/io/windows/launcher/launcher.factor    | 3 +++
 extra/tools/disassembler/disassembler.factor | 6 ++----
 extra/windows/kernel32/kernel32.factor       | 2 +-
 5 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/extra/io/launcher/launcher.factor b/extra/io/launcher/launcher.factor
index 6e6d79d8a4..dce893dcaf 100755
--- a/extra/io/launcher/launcher.factor
+++ b/extra/io/launcher/launcher.factor
@@ -76,6 +76,8 @@ SYMBOL: +append-environment+
         { [ dup assoc? ] [ >hashtable ] }
     } cond ;
 
+HOOK: current-process-handle io-backend ( -- handle )
+
 HOOK: run-process* io-backend ( desc -- handle )
 
 : wait-for-process ( process -- status )
diff --git a/extra/io/unix/launcher/launcher.factor b/extra/io/unix/launcher/launcher.factor
index c14b11029b..5adf0d7453 100755
--- a/extra/io/unix/launcher/launcher.factor
+++ b/extra/io/unix/launcher/launcher.factor
@@ -4,7 +4,7 @@ USING: io io.backend io.launcher io.unix.backend io.unix.files
 io.nonblocking sequences kernel namespaces math system
  alien.c-types debugger continuations arrays assocs 
 combinators unix.process parser-combinators memoize 
-promises strings threads ;
+promises strings threads unix ;
 IN: io.unix.launcher
 
 ! Search unix first
@@ -71,6 +71,8 @@ MEMO: 'arguments' ( -- parser )
         io-error
     ] [ error. :c flush ] recover 1 exit ;
 
+M: unix-io current-process-handle ( -- handle ) getpid ;
+
 M: unix-io run-process* ( desc -- pid )
     [
         [ spawn-process ] [ ] with-fork <process>
diff --git a/extra/io/windows/launcher/launcher.factor b/extra/io/windows/launcher/launcher.factor
index 475a4ddef6..cc3278dadc 100755
--- a/extra/io/windows/launcher/launcher.factor
+++ b/extra/io/windows/launcher/launcher.factor
@@ -102,6 +102,9 @@ M: windows-ce-io fill-redirection ;
     fill-lpEnvironment
     fill-startup-info ;
 
+M: windows-io current-process-handle ( -- handle )
+    GetCurrentProcessId ;
+
 M: windows-io run-process* ( desc -- handle )
     [
         [
diff --git a/extra/tools/disassembler/disassembler.factor b/extra/tools/disassembler/disassembler.factor
index 641eae90c2..f9e6e284de 100644
--- a/extra/tools/disassembler/disassembler.factor
+++ b/extra/tools/disassembler/disassembler.factor
@@ -2,8 +2,7 @@
 ! See http://factorcode.org/license.txt for BSD license.
 USING: io.files io words alien kernel math.parser alien.syntax
 io.launcher system assocs arrays sequences namespaces qualified
-regexp system math sequences.lib ;
-QUALIFIED: unix
+regexp system math sequences.lib windows.kernel32 ;
 IN: tools.disassembler
 
 : in-file "gdb-in.txt" resource-path ;
@@ -18,8 +17,7 @@ M: word make-disassemble-cmd
 M: pair make-disassemble-cmd
     in-file [
         "attach " write
-        unix:getpid number>string print
-
+        current-process-handle number>string print
         "disassemble " write
         [ number>string write bl ] each
     ] with-file-out ;
diff --git a/extra/windows/kernel32/kernel32.factor b/extra/windows/kernel32/kernel32.factor
index b8928c5820..3574df36db 100755
--- a/extra/windows/kernel32/kernel32.factor
+++ b/extra/windows/kernel32/kernel32.factor
@@ -895,7 +895,7 @@ FUNCTION: DWORD GetConsoleTitleW ( LPWSTR lpConsoleTitle, DWORD nSize ) ;
 FUNCTION: BOOL GetCurrentDirectoryW ( DWORD len, LPTSTR buf ) ;
 : GetCurrentDirectory GetCurrentDirectoryW ; inline
 FUNCTION: HANDLE GetCurrentProcess ( ) ;
-! FUNCTION: GetCurrentProcessId
+FUNCTION: DWORD GetCurrentProcessId ( ) ;
 FUNCTION: HANDLE GetCurrentThread ( ) ;
 ! FUNCTION: GetCurrentThreadId
 ! FUNCTION: GetDateFormatA