Command-line wrapper for Windows. More...
Command-line wrapper for Windows.
Windows has two types of executables: GUI and console. The GUI executables detach immediately when run from the command prompt (cmd.exe), and whatever you write to standard output disappears into a black hole. Console executables handle do display standard output and take standard input from the console, but when you run them from the GUI, an extra console window appears. It's possible to hide it, but it still flashes from a fraction of a second.
To provide an Unix-like experienve, where the application will behave correctly in command line mode and at the same time won't create the ugly console window when run from the GUI, we have to have two executables. The first one, inkscape.exe, is the GUI application. Its entry points are in main.cpp and winmain.cpp. The second one, called inkscape.com, is a small helper application contained in this file. It spawns the GUI application and redirects its output to the console.
Note that inkscape.com has nothing to do with "compact executables" from DOS. It's a normal PE executable renamed to .com. The trick is that cmd.exe picks .com over .exe when both are present in PATH, so when you type "inkscape" into the command prompt, inkscape.com gets run. The Windows program loader does not inspect the extension, just like an Unix program loader; it determines the binary format based on the contents of the file.
Definition in file winconsole.cpp.