Add a tiny command line download tool.
authorMaarten Bosma <maarten@bosma.de>
Mon, 13 Aug 2007 20:09:47 +0000 (20:09 +0000)
committerMaarten Bosma <maarten@bosma.de>
Mon, 13 Aug 2007 20:09:47 +0000 (20:09 +0000)
svn path=/trunk/; revision=28322

reactos/base/applications/network/dwnl/dwnl.c [new file with mode: 0644]
reactos/base/applications/network/dwnl/dwnl.rbuild [new file with mode: 0644]
reactos/base/applications/network/network.rbuild

diff --git a/reactos/base/applications/network/dwnl/dwnl.c b/reactos/base/applications/network/dwnl/dwnl.c
new file mode 100644 (file)
index 0000000..2880cf4
--- /dev/null
@@ -0,0 +1,47 @@
+#include <windows.h>\r
+#include <urlmon.h>\r
+#include <tchar.h>\r
+\r
+HRESULT WINAPI URLDownloadToFileA(\r
+        LPUNKNOWN pCaller,\r
+        LPCSTR szURL,\r
+        LPCSTR szFileName,\r
+        DWORD dwReserved,\r
+        LPBINDSTATUSCALLBACK lpfnCB);\r
+\r
+// ToDo: Show status, get file name from webserver, better error reporting\r
+\r
+int tmain(int argc, TCHAR **argv)\r
+{\r
+       int i;\r
+\r
+       if(argc != 2)\r
+       {\r
+               _tprintf(TEXT("Usage: dwnl <url>"));\r
+               return 2;\r
+       }\r
+\r
+       TCHAR* filename = argv[1];\r
+       for(i=_tcslen(argv[1]);i>0\r
+               &&filename[i]!='/'\r
+               &&filename[i]!='\\'\r
+               &&filename[i]!='?'\r
+               &&filename[i]!='*'\r
+               &&filename[i]!=':'\r
+               &&filename[i]!='\"'\r
+               &&filename[i]!='<'\r
+               &&filename[i]!='>'\r
+               &&filename[i]!='|';i--);\r
+       filename = &argv[1][i+1];\r
+\r
+       _tprintf("Downloading %s... ", filename);\r
+\r
+       if(URLDownloadToFileA(NULL, argv[1], filename, 0, NULL) != S_OK)\r
+       {\r
+               _tprintf("Failed.\n");\r
+               return 1;\r
+       }\r
+\r
+       _tprintf("Finished.\n");\r
+       return 0;\r
+}\r
diff --git a/reactos/base/applications/network/dwnl/dwnl.rbuild b/reactos/base/applications/network/dwnl/dwnl.rbuild
new file mode 100644 (file)
index 0000000..2e8131b
--- /dev/null
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>\r
+<!DOCTYPE project SYSTEM "tools/rbuild/project.dtd">\r
+<module name="dwnl" type="win32cui" installbase="system32" installname="dwnl.exe">\r
+       <include base="dwnl">.</include>\r
+       <library>kernel32</library>\r
+       <library>crtdll</library>\r
+       <library>urlmon</library>\r
+       <define name="__USE_W32API" />\r
+       <define name="WINVER">0x0501</define>\r
+       <define name="_WIN32_IE>0x0600</define>\r
+       <file>dwnl.c</file>\r
+</module>\r
index 427b015..de7f038 100644 (file)
@@ -4,6 +4,9 @@
 <directory name="arp">
     <xi:include href="arp/arp.rbuild" />
 </directory>
+<directory name="dwnl">
+    <xi:include href="dwnl/dwnl.rbuild" />
+</directory>
 <directory name="finger">
     <xi:include href="finger/finger.rbuild" />
 </directory>