$ git clone http://gcodetool.ion.nu/gcodetool.git
commit e84f2cf3685ac5da42128d3dfb3d1e92f7d01bfc
Author: Alicia <...>
Date:   Mon Jun 24 20:32:06 2019 +0200

    Some portability fixes.

diff --git a/gcode.c b/gcode.c
index bf2d6d9..b19d485 100644
--- a/gcode.c
+++ b/gcode.c
@@ -144,7 +144,9 @@ const struct gcommand* gcode_readcommand(struct gcode* gcode)
     unsigned int start=gcode->pos;
     gcode_nextline(gcode);
     cmd.paramcount=gcode->pos-start-1;
-    cmd.string=strndup(&gcode->code[start], cmd.paramcount);
+    cmd.string=malloc(cmd.paramcount+1);
+    memcpy(cmd.string, &gcode->code[start], cmd.paramcount);
+    cmd.string[cmd.paramcount]=0;
     return &cmd;
   }
   cmd.cmdtype=GCODE_CMD_PARAM;
diff --git a/main.c b/main.c
index 91b5d6d..8149443 100644
--- a/main.c
+++ b/main.c
@@ -17,6 +17,8 @@
 */
 #include <stdio.h>
 #include <string.h>
+#include <stdlib.h>
+#include <unistd.h>
 extern int gtool_mirror_arg(int argc, char** argv);
 extern int gtool_move_arg(int argc, char** argv);
 extern int gtool_info_arg(int argc, char** argv);
@@ -34,7 +36,15 @@ int main(int argc, char** argv)
   else if(argc>2 && !strcmp(argv[1], "info"))
   {
     return gtool_info_arg(argc, argv);
-  }else{
+  }
+#ifdef WIN32 // For lazy open-with
+  else if(argc>1 && !access(argv[1], R_OK))
+  {
+    gtool_info_arg(argc+1, &argv[-1]);
+    system("pause");
+  }
+#endif
+  else{
     printf("Usage: %s <subcommand> [options] <file>\n"
            "Supported subcommands include:\n"
            "mirror[XYZ]\n"