Implementation of "start" command

Dan Kegel dank at kegel.com
Thu Jan 16 10:52:58 CST 2003


I saw somebody at work type the following commandline in Windows:
    start notepad blah.c
He said "It's the easiest way to bring up a random file in Notepad."

Well, of course Wine should be able to do that, I realized
when I woke up this morning, and I vowed to make it happen
before I went to work today.  So here's a quickie implementation
of the start command.  Seems to work... comments welcome.
- Dan

-- 
Dan Kegel
http://www.kegel.com
http://counter.li.org/cgi-bin/runscript/display-person.cgi?user=78045
-------------- next part --------------
Index: configure.ac
===================================================================
RCS file: /home/wine/wine/configure.ac,v
retrieving revision 1.116
diff -d -u -r1.116 configure.ac
--- configure.ac	4 Jan 2003 02:52:05 -0000	1.116
+++ configure.ac	16 Jan 2003 16:28:55 -0000
@@ -1497,6 +1497,7 @@
 programs/regtest/Makefile
 programs/rpcss/Makefile
 programs/rundll32/Makefile
+programs/start/Makefile
 programs/uninstaller/Makefile
 programs/view/Makefile
 programs/wcmd/Makefile
Index: programs/Makefile.in
===================================================================
RCS file: /home/wine/wine/programs/Makefile.in,v
retrieving revision 1.33
diff -d -u -r1.33 Makefile.in
--- programs/Makefile.in	4 Jan 2003 02:52:05 -0000	1.33
+++ programs/Makefile.in	16 Jan 2003 16:28:55 -0000
@@ -19,6 +19,7 @@
 	regtest \
 	rpcss \
 	rundll32 \
+	start \
 	uninstaller \
 	view \
 	wcmd \
@@ -43,6 +44,7 @@
 	regsvr32 \
 	rpcss \
 	rundll32 \
+	start \
 	uninstaller \
 	wcmd \
 	wineboot \
@@ -61,6 +63,7 @@
 	progman \
 	regedit \
 	regsvr32 \
+	start \
 	uninstaller \
 	wcmd \
 	wineboot \
@@ -73,6 +76,7 @@
 
 # Symlinks to apps that we want to run from inside the source tree
 SYMLINKS = \
+	start.exe \
 	rpcss.exe \
 	wcmd.exe \
 	wineconsole.exe \
--- /dev/null	2002-08-30 16:31:37.000000000 -0700
+++ programs/start/Makefile.in	2003-01-16 08:20:35.000000000 -0800
@@ -0,0 +1,13 @@
+TOPSRCDIR = @top_srcdir@
+TOPOBJDIR = ../..
+SRCDIR    = @srcdir@
+VPATH     = @srcdir@
+MODULE    = start.exe
+APPMODE   = cui
+IMPORTS   = shell32
+
+C_SRCS = start.c
+
+ at MAKE_PROG_RULES@
+
+### Dependencies:
--- /dev/null	2002-08-30 16:31:37.000000000 -0700
+++ programs/start/start.c	2003-01-16 08:23:33.000000000 -0800
@@ -0,0 +1,59 @@
+/*
+ * Start a program using ShellExecute
+ *
+ * Copyright 2003 Dan Kegel
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#include "config.h"
+#include "wine/debug.h"
+
+#include <windows.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+WINE_DEFAULT_DEBUG_CHANNEL(start);
+
+/* Placeholder implementation for now. */
+
+int main(int argc, char *argv[])
+{
+	char *program;
+	char *arguments;
+	HINSTANCE hres;
+
+	if (argc == 1) {
+		printf("Usage: start file-or-program ...\n");
+		exit(0);
+	} 
+	if (argc > 3) {
+		WINE_FIXME("More than one argument not implemented");
+		exit(1);
+	}
+	
+	program = argv[1];
+	arguments = NULL;
+	if (argc == 3)
+		arguments = argv[2];
+
+	hres = ShellExecute(NULL, "open", program, arguments, NULL, SW_SHOWNORMAL);
+	if (((int)hres) <= 32) {
+		printf("Cannot execute %s %s, error %d\n", program, arguments?arguments:"", (int)hres);
+		exit(1);
+	}
+
+    exit(0);
+}


More information about the wine-devel mailing list