diff options
author | Alan Mishchenko <alanmi@berkeley.edu> | 2012-03-01 22:36:34 -0800 |
---|---|---|
committer | Alan Mishchenko <alanmi@berkeley.edu> | 2012-03-01 22:36:34 -0800 |
commit | a6f363d4615d01484af29cf8dcc53c87faeb2f3b (patch) | |
tree | c8de435c828e50bdda064c76ebdd1dcc0567bfba /src/misc/util/utilFile.c | |
parent | 325ac583e64b62d057007d28284a73a7fae4f5b6 (diff) | |
download | abc-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.c | 58 |
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 /// //////////////////////////////////////////////////////////////////////// |