Don't use vasprintf() anymore on Windows.
[tinc] / lib / xmalloc.c
index 51356e4..58f2bce 100644 (file)
@@ -11,9 +11,9 @@
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
 
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software Foundation,
-   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
+   You should have received a copy of the GNU General Public License along
+   with this program; if not, write to the Free Software Foundation, Inc., Foundation,
+   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.  */
 
 #if HAVE_CONFIG_H
 # include <config.h>
@@ -34,7 +34,7 @@ void *realloc ();
 void free ();
 #endif
 
-#include "gettext.h"
+#include "dropin.h"
 #include "xalloc.h"
 
 #ifndef EXIT_FAILURE
@@ -53,10 +53,10 @@ void *xrealloc (void *p, size_t n);
 int xalloc_exit_failure = EXIT_FAILURE;
 
 /* FIXME: describe */
-char *const xalloc_msg_memory_exhausted = N_("Memory exhausted");
+char *const xalloc_msg_memory_exhausted = "Memory exhausted";
 
 /* FIXME: describe */
-void (*xalloc_fail_func) (int) = 0;
+void (*xalloc_fail_func) (int) = NULL;
 
 static void
 xalloc_fail (int size)
@@ -70,13 +70,12 @@ xalloc_fail (int size)
 /* Allocate N bytes of memory dynamically, with error checking.  */
 
 void *
-xmalloc (n)
-     size_t n;
+xmalloc (size_t n)
 {
   void *p;
 
   p = malloc (n);
-  if (p == 0)
+  if (p == NULL)
     xalloc_fail ((int)n);
   return p;
 }
@@ -84,13 +83,12 @@ xmalloc (n)
 /* Allocate N bytes of memory dynamically, and set it all to zero. */
 
 void *
-xmalloc_and_zero (n)
-     size_t n;
+xmalloc_and_zero (size_t n)
 {
   void *p;
 
   p = malloc (n);
-  if (p == 0)
+  if (p == NULL)
     xalloc_fail ((int)n);
   memset (p, '\0', n);
   return p;
@@ -101,12 +99,10 @@ xmalloc_and_zero (n)
    If P is NULL, run xmalloc.  */
 
 void *
-xrealloc (p, n)
-     void *p;
-     size_t n;
+xrealloc (void *p, size_t n)
 {
   p = realloc (p, n);
-  if (p == 0)
+  if (p == NULL)
     xalloc_fail (n);
   return p;
 }
@@ -134,7 +130,7 @@ xcalloc (n, s)
   void *p;
 
   p = calloc (n, s);
-  if (p == 0)
+  if (p == NULL)
     xalloc_fail ();
   return p;
 }
@@ -151,10 +147,18 @@ int xasprintf(char **strp, const char *fmt, ...) {
 }
 
 int xvasprintf(char **strp, const char *fmt, va_list ap) {
+#ifdef HAVE_MINGW
+       char buf[1024];
+       int result = vsnprintf(buf, sizeof buf, fmt, ap);
+       if(result < 0)
+               exit(xalloc_exit_failure);
+       *strp = xstrdup(buf);
+#else
        int result = vasprintf(strp, fmt, ap);
        if(result < 0) {
                fprintf(stderr, "vasprintf() failed: %s\n", strerror(errno));
                exit(xalloc_exit_failure);
        }
+#endif
        return result;
 }