]> git.ozlabs.org Git - ccan/blobdiff - ccan/tap/tap.c
tap: fix isdigit and isspace usage.
[ccan] / ccan / tap / tap.c
index a5156aa194a748ecdf8822d49fde91ce7a0a257f..9f6d4d066a4e7068d16bc05659cb47fd680b3f6b 100644 (file)
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */
-/* FIXME: The real fix is an asprintf module. */
-#ifndef _GNU_SOURCE
-#define _GNU_SOURCE 1
-#endif
+#include "config.h"
 #include <ctype.h>
 #include <stdarg.h>
 #include <stdio.h>
@@ -49,7 +46,7 @@ static int test_pid;
 
 /* Encapsulate the pthread code in a conditional.  In the absence of
    libpthread the code does nothing */
-#ifdef HAVE_LIBPTHREAD
+#if HAVE_LIBPTHREAD
 #include <pthread.h>
 static pthread_mutex_t M = PTHREAD_MUTEX_INITIALIZER;
 # define LOCK pthread_mutex_lock(&M)
@@ -118,7 +115,8 @@ _gen_result(int ok, const char *func, const char *file, unsigned int line,
                if(local_test_name) {
                        name_is_digits = 1;
                        for(c = local_test_name; *c != '\0'; c++) {
-                               if(!isdigit(*c) && !isspace(*c)) {
+                               if(!isdigit((unsigned char)*c)
+                                  && !isspace((unsigned char)*c)) {
                                        name_is_digits = 0;
                                        break;
                                }
@@ -179,6 +177,9 @@ _gen_result(int ok, const char *func, const char *file, unsigned int line,
 
        UNLOCK;
 
+       if (!ok && tap_fail_callback)
+               tap_fail_callback();
+
        /* We only care (when testing) that ok is positive, but here we
           specifically only want to return 1 or 0 */
        return ok ? 1 : 0;
@@ -260,7 +261,7 @@ _tap_init(void)
                /* stdout needs to be unbuffered so that the output appears
                   in the same place relative to stderr output as it does 
                   with Test::Harness */
-               setbuf(stdout, 0);
+//             setbuf(stdout, 0);
                run_once = 1;
        }
 }