summaryrefslogtreecommitdiffstats
path: root/src/misc/util/utilFile.c
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2012-03-01 22:36:34 -0800
committerAlan Mishchenko <alanmi@berkeley.edu>2012-03-01 22:36:34 -0800
commita6f363d4615d01484af29cf8dcc53c87faeb2f3b (patch)
treec8de435c828e50bdda064c76ebdd1dcc0567bfba /src/misc/util/utilFile.c
parent325ac583e64b62d057007d28284a73a7fae4f5b6 (diff)
downloadabc-a6f363d4615d01484af29cf8dcc53c87faeb2f3b.tar.gz
abc-a6f363d4615d01484af29cf8dcc53c87faeb2f3b.tar.bz2
abc-a6f363d4615d01484af29cf8dcc53c87faeb2f3b.zip
Created a communication bridge.
Diffstat (limited to 'src/misc/util/utilFile.c')
-rw-r--r--src/misc/util/utilFile.c58
1 files changed, 58 insertions, 0 deletions
diff --git a/src/misc/util/utilFile.c b/src/misc/util/utilFile.c
index a25c5b2c..41438c57 100644
--- a/src/misc/util/utilFile.c
+++ b/src/misc/util/utilFile.c
@@ -154,6 +154,64 @@ int main(int argc, char** argv)
}
*/
+/**Function*************************************************************
+
+ Synopsis []
+
+ Description []
+
+ SideEffects []
+
+ SeeAlso []
+
+***********************************************************************/
+char* vnsprintf(const char* format, va_list args)
+{
+ unsigned n;
+ char* ret;
+ va_list args_copy;
+
+ static FILE* dummy_file = NULL;
+ if (!dummy_file)
+ {
+#if !defined(_MSC_VER)
+ dummy_file = fopen("/dev/null", "wb");
+#else
+ dummy_file = fopen("NUL", "wb");
+#endif
+ }
+
+#if defined(__va_copy)
+ __va_copy(args_copy, args);
+#else
+ #if defined(va_copy)
+ va_copy(args_copy, args);
+ #else
+ args_copy = args;
+ #endif
+#endif
+ n = vfprintf(dummy_file, format, args);
+ ret = ABC_ALLOC( char, n + 1 );
+ ret[n] = (char)255;
+ args = args_copy;
+ vsprintf(ret, format, args);
+#if !defined(__va_copy) && defined(va_copy)
+ va_end(args_copy);
+#endif
+ assert(ret[n] == 0);
+ return ret;
+}
+
+char* nsprintf(const char* format, ...)
+{
+ char* ret;
+ va_list args;
+ va_start(args, format);
+ ret = vnsprintf(format, args);
+ va_end(args);
+ return ret;
+}
+
////////////////////////////////////////////////////////////////////////
/// END OF FILE ///
////////////////////////////////////////////////////////////////////////