From 2ce5e628299cfdb213c748ac4e8888199790d423 Mon Sep 17 00:00:00 2001 From: Anna Wiggins Date: Tue, 21 Jun 2011 16:24:48 -0400 Subject: [PATCH] Added makefile for ease of compilation --- Makefile | 11 +++++++++++ steamstub.c | 11 ++++++++--- steamstub.exe | Bin 26496 -> 87503 bytes 3 files changed, 19 insertions(+), 3 deletions(-) create mode 100644 Makefile diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..15cb29f --- /dev/null +++ b/Makefile @@ -0,0 +1,11 @@ +# winegcc is required to compile this program correctly, because +# we need access to some Linux API + +ALL: steamstub.exe + +steamstub.exe: steamstub.c + winegcc -m32 -o $@ steamstub.c + mv steamstub.exe.so steamstub.exe + +clean: + rm -f steamstub.exe steamstub.exe.so diff --git a/steamstub.c b/steamstub.c index 2b60e76..9134295 100644 --- a/steamstub.c +++ b/steamstub.c @@ -1,17 +1,22 @@ /* steamstub.c - A Windows program for Linux +Useful as a wrapper to execute a Linux binary from Windows, and block on its + return (i.e. getting the Linux system() functionality for Linux binaries from + inside Windows binaries, such as Steam) + compile it with: -mingw32-gcc -o steamstub.exe steamstub.c +make -nb: on fedora, the mingw32 C compiler is called i686-pc-mingw32-gcc */ #include +#include int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { - MessageBox (NULL, "The Steam Stub is now running. Go play your Linux game, and come back and click the 'OK' button on this dialog box once you are done playing it." , "Steam Stub", 0); + system("gedit"); + return 0; } diff --git a/steamstub.exe b/steamstub.exe index 1fbec19319a12bdccc230830903f7667b53b76da..0b650bceba16cfc47e6edfeb84b824fc9a03fe4a 100755 GIT binary patch literal 87503 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 literal 26496 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