-move abe functionality out of util; prepare for release
[oweals/gnunet.git] / contrib / timeout_watchdog_w32.c
index 63082fa02af5ad55ff11217400432439328eff36..fa7cd81fd9457c4e36c95e2872037bcd678305c9 100644 (file)
@@ -1,6 +1,6 @@
 /*
      This file is part of GNUnet
-     (C) 2010 Christian Grothoff (and other contributing authors)
+     Copyright (C) 2010 GNUnet e.V.
 
      GNUnet is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
@@ -14,8 +14,8 @@
 
      You should have received a copy of the GNU General Public License
      along with GNUnet; see the file COPYING.  If not, write to the
-     Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-     Boston, MA 02111-1307, USA.
+     Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+     Boston, MA 02110-1301, USA.
 */
 
 /**
@@ -37,7 +37,6 @@ main (int argc, char *argv[])
   wchar_t **wargv;
   wchar_t *arg;
   unsigned int cmdlen;
-  wchar_t *idx;
   STARTUPINFOW start;
   PROCESS_INFORMATION proc;
 
@@ -50,6 +49,7 @@ main (int argc, char *argv[])
   wchar_t *wcmd;
   int wargc;
   int timeout = 0;
+  ssize_t wrote;
 
   HANDLE job;
 
@@ -100,7 +100,7 @@ main (int argc, char *argv[])
   if (cmdlen < 5 || wcscmp (&wargv[2][cmdlen - 4], L".exe") != 0)
   {
     non_const_filename = malloc (sizeof (wchar_t) * (cmdlen + 5));
-    _snwprintf (non_const_filename, cmdlen + 5, L"%s.exe", wargv[2]);
+    swprintf (non_const_filename, cmdlen + 5, L"%S.exe", wargv[2]);
   }
   else
   {
@@ -109,7 +109,7 @@ main (int argc, char *argv[])
 
   /* Check that this is the full path. If it isn't, search. */
   if (non_const_filename[1] == L':')
-    _snwprintf (wpath, sizeof (wpath) / sizeof (wchar_t), L"%s", non_const_filename);
+    swprintf (wpath, sizeof (wpath) / sizeof (wchar_t), L"%S", non_const_filename);
   else if (!SearchPathW
            (pathbuf, non_const_filename, NULL, sizeof (wpath) / sizeof (wchar_t),
             wpath, NULL))
@@ -125,22 +125,25 @@ main (int argc, char *argv[])
   while (NULL != (arg = wargv[i++]))
     cmdlen += wcslen (arg) + 4;
 
-  wcmd = idx = malloc (sizeof (wchar_t) * (cmdlen + 1));
+  wcmd = malloc (sizeof (wchar_t) * (cmdlen + 1));
+  wrote = 0;
   i = 2;
   while (NULL != (arg = wargv[i++]))
   {
     /* This is to escape trailing slash */
     wchar_t arg_lastchar = arg[wcslen (arg) - 1];
-    if (idx == wcmd)
-      idx += swprintf (idx, L"\"%s%s\" ", wpath,
+    if (wrote == 0)
+    {
+      wrote += swprintf (&wcmd[wrote], cmdlen + 1 - wrote, L"\"%S%S\" ", wpath,
           arg_lastchar == L'\\' ? L"\\" : L"");
+    }
     else
     {
       if (wcschr (arg, L' ') != NULL)
-        idx += swprintf (idx, L"\"%s%s\"%s", arg,
+        wrote += swprintf (&wcmd[wrote], cmdlen + 1 - wrote, L"\"%S%S\"%S", arg,
             arg_lastchar == L'\\' ? L"\\" : L"", i == wargc ? L"" : L" ");
       else
-        idx += swprintf (idx, L"%s%s%s", arg,
+        wrote += swprintf (&wcmd[wrote], cmdlen + 1 - wrote, L"%S%S%S", arg,
             arg_lastchar == L'\\' ? L"\\" : L"", i == wargc ? L"" : L" ");
     }
   }
@@ -150,10 +153,10 @@ main (int argc, char *argv[])
   memset (&start, 0, sizeof (start));
   start.cb = sizeof (start);
 
-  if (!CreateProcessW (wpath, wcmd, NULL, NULL, GNUNET_YES, CREATE_SUSPENDED,
+  if (!CreateProcessW (wpath, wcmd, NULL, NULL, TRUE, CREATE_SUSPENDED,
        NULL, NULL, &start, &proc))
   {
-    wprintf (L"Failed to get spawn process `%s' with arguments `%s': %lu\n", wpath, wcmd, GetLastError ());
+    wprintf (L"Failed to get spawn process `%S' with arguments `%S': %lu\n", wpath, wcmd, GetLastError ());
     exit (6);
   }