aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--dejagnu.h81
2 files changed, 52 insertions, 34 deletions
diff --git a/ChangeLog b/ChangeLog
index 2182847..dc3893c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
2022-11-30 Jacob Bachmeyer <jcb@gnu.org>
+ * 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