]> Dogcows Code - chaz/yoink/blobdiff - src/stlplus/portability/dprintf.cpp
import stlplus 3.7
[chaz/yoink] / src / stlplus / portability / dprintf.cpp
index b0e05c6b7097bd785c3a55c996bb0d383fba3dc0..d9a9e4f0a23cfb0b14a98d49ee2733d5e9e72620 100644 (file)
@@ -1,92 +1,92 @@
-////////////////////////////////////////////////////////////////////////////////
-
-//   Author:    Andy Rushton
-//   Copyright: (c) Southampton University 1999-2004
-//              (c) Andy Rushton           2004-2009
-//   License:   BSD License, see ../docs/license.html
-
-//   Notes:
-
-//   Feb 2007: Rewritten in terms of platform-specific fixes to the
-//   buffer-overflow problem. Using native functions for this has the added
-//   benefit of giving access to other features of the C-runtime such as Unicode
-//   support.
-
-////////////////////////////////////////////////////////////////////////////////
-
-#include "dprintf.hpp"
-#include <stdio.h>
-#include <limits.h>
-#include <float.h>
-#include <ctype.h>
-#include <stdlib.h>
-
-////////////////////////////////////////////////////////////////////////////////
-
-namespace stlplus
-{
-
-////////////////////////////////////////////////////////////////////////////////
-
-  int vdprintf(std::string& formatted, const char* format, va_list args)
-  {
-#ifdef MSWINDOWS
-    int length = 0;
-    char* buffer = 0;
-    for(int buffer_length = 256; ; buffer_length*=2)
-    {
-      buffer = (char*)malloc(buffer_length);
-      if (!buffer) return -1;
-      length = _vsnprintf(buffer, buffer_length-1, format, args);
-      if (length >= 0)
-      {
-        buffer[length] = 0;
-        formatted += std::string(buffer);
-        free(buffer);
-        break;
-      }
-      free(buffer);
-    }
-    return length;
-#else
-    char* buffer = 0;
-    int length = vasprintf(&buffer, format, args);
-    if (!buffer) return -1;
-    if (length >= 0)
-      formatted += std::string(buffer);
-    free(buffer);
-    return length;
-#endif
-  }
-
-  int dprintf(std::string& formatted, const char* format, ...)
-  {
-    va_list args;
-    va_start(args, format);
-    int result = vdprintf(formatted, format, args);
-    va_end(args);
-    return result;
-  }
-
-  std::string vdformat(const char* format, va_list args) throw(std::invalid_argument)
-  {
-    std::string formatted;
-    int length = vdprintf(formatted, format, args);
-    if (length < 0) throw std::invalid_argument("dprintf");
-    return formatted;
-  }
-
-  std::string dformat(const char* format, ...) throw(std::invalid_argument)
-  {
-    std::string formatted;
-    va_list args;
-    va_start(args, format);
-    int length = vdprintf(formatted, format, args);
-    va_end(args);
-    if (length < 0) throw std::invalid_argument("dprintf");
-    return formatted;
-  }
-
-////////////////////////////////////////////////////////////////////////////////
-
-} // end namespace stlplus
+////////////////////////////////////////////////////////////////////////////////\r
+\r
+//   Author:    Andy Rushton\r
+//   Copyright: (c) Southampton University 1999-2004\r
+//              (c) Andy Rushton           2004 onwards\r
+//   License:   BSD License, see ../docs/license.html\r
+\r
+//   Notes:\r
+\r
+//   Feb 2007: Rewritten in terms of platform-specific fixes to the\r
+//   buffer-overflow problem. Using native functions for this has the added\r
+//   benefit of giving access to other features of the C-runtime such as Unicode\r
+//   support.\r
+\r
+////////////////////////////////////////////////////////////////////////////////\r
+\r
+#include "dprintf.hpp"\r
+#include <stdio.h>\r
+#include <limits.h>\r
+#include <float.h>\r
+#include <ctype.h>\r
+#include <stdlib.h>\r
+\r
+////////////////////////////////////////////////////////////////////////////////\r
+\r
+namespace stlplus\r
+{\r
+\r
+////////////////////////////////////////////////////////////////////////////////\r
+\r
+  int vdprintf(std::string& formatted, const char* format, va_list args)\r
+  {\r
+#ifdef MSWINDOWS\r
+    int length = 0;\r
+    char* buffer = 0;\r
+    for(int buffer_length = 256; ; buffer_length*=2)\r
+    {\r
+      buffer = (char*)malloc(buffer_length);\r
+      if (!buffer) return -1;\r
+      length = _vsnprintf(buffer, buffer_length-1, format, args);\r
+      if (length >= 0)\r
+      {\r
+        buffer[length] = 0;\r
+        formatted += std::string(buffer);\r
+        free(buffer);\r
+        break;\r
+      }\r
+      free(buffer);\r
+    }\r
+    return length;\r
+#else\r
+    char* buffer = 0;\r
+    int length = vasprintf(&buffer, format, args);\r
+    if (!buffer) return -1;\r
+    if (length >= 0)\r
+      formatted += std::string(buffer);\r
+    free(buffer);\r
+    return length;\r
+#endif\r
+  }\r
+\r
+  int dprintf(std::string& formatted, const char* format, ...)\r
+  {\r
+    va_list args;\r
+    va_start(args, format);\r
+    int result = vdprintf(formatted, format, args);\r
+    va_end(args);\r
+    return result;\r
+  }\r
+\r
+  std::string vdformat(const char* format, va_list args) throw(std::invalid_argument)\r
+  {\r
+    std::string formatted;\r
+    int length = vdprintf(formatted, format, args);\r
+    if (length < 0) throw std::invalid_argument("dprintf");\r
+    return formatted;\r
+  }\r
+\r
+  std::string dformat(const char* format, ...) throw(std::invalid_argument)\r
+  {\r
+    std::string formatted;\r
+    va_list args;\r
+    va_start(args, format);\r
+    int length = vdprintf(formatted, format, args);\r
+    va_end(args);\r
+    if (length < 0) throw std::invalid_argument("dprintf");\r
+    return formatted;\r
+  }\r
+\r
+////////////////////////////////////////////////////////////////////////////////\r
+\r
+} // end namespace stlplus\r
This page took 0.025458 seconds and 4 git commands to generate.