diff --git a/ChangeLog b/ChangeLog index 2182847..dc3893c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2022-11-30 Jacob Bachmeyer + * dejagnu.h (buffer): Remove this variable. + (pass, xpass, fail, xfail, untested, unresolved, unsupported) + (note): Replace use of buffer and vsnprintf with flockfile, + multiple writes, and funlockfile in all functions. + * dejagnu.h (DG__status): New struct for test counters. (passed, failed, xpassed, xfailed, untest, unresolve, unsupport): Move all counters into new struct, changing all functions. diff --git a/dejagnu.h b/dejagnu.h index 03f24d0..77795e9 100644 --- a/dejagnu.h +++ b/dejagnu.h @@ -40,18 +40,18 @@ static struct { int unsupported; } DG__status = { 0 }; -static char buffer[512]; - static inline void pass (const char* fmt, ...) { va_list ap; DG__status.pass++; - va_start (ap, fmt); - vsnprintf (buffer, sizeof (buffer), fmt, ap); - va_end (ap); - printf ("\tPASSED: %s\n", buffer); + + flockfile (stdout); + fputs ("\tPASSED: ", stdout); + va_start (ap, fmt); vfprintf (stdout, fmt, ap); va_end (ap); + fputc ('\n', stdout); + funlockfile (stdout); } static inline void @@ -60,10 +60,12 @@ xpass (const char* fmt, ...) va_list ap; DG__status.xpass++; - va_start (ap, fmt); - vsnprintf (buffer, sizeof (buffer), fmt, ap); - va_end (ap); - printf ("\tXPASSED: %s\n", buffer); + + flockfile (stdout); + fputs ("\tXPASSED: ", stdout); + va_start (ap, fmt); vfprintf (stdout, fmt, ap); va_end (ap); + fputc ('\n', stdout); + funlockfile (stdout); } static inline void @@ -72,10 +74,12 @@ fail (const char* fmt, ...) va_list ap; DG__status.fail++; - va_start (ap, fmt); - vsnprintf (buffer, sizeof (buffer), fmt, ap); - va_end (ap); - printf ("\tFAILED: %s\n", buffer); + + flockfile (stdout); + fputs ("\tFAILED: ", stdout); + va_start (ap, fmt); vfprintf (stdout, fmt, ap); va_end (ap); + fputc ('\n', stdout); + funlockfile (stdout); } static inline void @@ -84,10 +88,12 @@ xfail (const char* fmt, ...) va_list ap; DG__status.xfail++; - va_start (ap, fmt); - vsnprintf (buffer, sizeof (buffer), fmt, ap); - va_end (ap); - printf ("\tXFAILED: %s\n", buffer); + + flockfile (stdout); + fputs ("\tXFAILED: ", stdout); + va_start (ap, fmt); vfprintf (stdout, fmt, ap); va_end (ap); + fputc ('\n', stdout); + funlockfile (stdout); } static inline void @@ -96,10 +102,12 @@ untested (const char* fmt, ...) va_list ap; DG__status.untested++; - va_start (ap, fmt); - vsnprintf (buffer, sizeof (buffer), fmt, ap); - va_end (ap); - printf ("\tUNTESTED: %s\n", buffer); + + flockfile (stdout); + fputs ("\tUNTESTED: ", stdout); + va_start (ap, fmt); vfprintf (stdout, fmt, ap); va_end (ap); + fputc ('\n', stdout); + funlockfile (stdout); } static inline void @@ -108,10 +116,12 @@ unresolved (const char* fmt, ...) va_list ap; DG__status.unresolved++; - va_start (ap, fmt); - vsnprintf (buffer, sizeof (buffer), fmt, ap); - va_end (ap); - printf ("\tUNRESOLVED: %s\n", buffer); + + flockfile (stdout); + fputs ("\tUNRESOLVED: ", stdout); + va_start (ap, fmt); vfprintf (stdout, fmt, ap); va_end (ap); + fputc ('\n', stdout); + funlockfile (stdout); } static inline void @@ -120,10 +130,12 @@ unsupported (const char* fmt, ...) va_list ap; DG__status.unsupported++; - va_start (ap, fmt); - vsnprintf (buffer, sizeof (buffer), fmt, ap); - va_end (ap); - printf ("\tUNSUPPORTED: %s\n", buffer); + + flockfile (stdout); + fputs ("\tUNSUPPORTED: ", stdout); + va_start (ap, fmt); vfprintf (stdout, fmt, ap); va_end (ap); + fputc ('\n', stdout); + funlockfile (stdout); } static inline void @@ -131,10 +143,11 @@ note (const char* fmt, ...) { va_list ap; - va_start (ap, fmt); - vsnprintf (buffer, sizeof (buffer), fmt, ap); - va_end (ap); - printf ("\tNOTE: %s\n", buffer); + flockfile (stdout); + fputs ("\tNOTE: ", stdout); + va_start (ap, fmt); vfprintf (stdout, fmt, ap); va_end (ap); + fputc ('\n', stdout); + funlockfile (stdout); } static inline void