Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge branch 'mc' into mc++
[simgrid.git] / tools / tesh / run_context.c
index 7479768..6f046df 100644 (file)
@@ -1,6 +1,6 @@
 /* run_context -- stuff in which TESH runs a command                        */
 
-/* Copyright (c) 2007, 2008, 2009, 2010. The SimGrid Team.
+/* Copyright (c) 2007-2014. The SimGrid Team.
  * All rights reserved.                                                     */
 
 /* This program is free software; you can redistribute it and/or modify it
@@ -85,7 +85,7 @@ void rctx_init(void)
   sigwaiter_mutex = xbt_os_mutex_init();
   sigwaiter_cond = xbt_os_cond_init();
   xbt_os_mutex_acquire(sigwaiter_mutex);
-  sigwaiter_thread = xbt_os_thread_create("Armaggedon request waiter",
+  sigwaiter_thread = xbt_os_thread_create("Armageddon request waiter",
                                           armageddon_sigwaiter, NULL, NULL);
   /* Wait for thread to start... */
   xbt_os_cond_wait(sigwaiter_cond, sigwaiter_mutex);
@@ -777,44 +777,24 @@ void *rctx_wait(void *r)
     xbt_dynar_free(&a);
   }
 
-  { // Sorting output wanted
+  if (rctx->output_sort) { // Sorting output wanted
+    char *newbuf;
     xbt_dynar_t a = xbt_str_split(rctx->output_wanted->data, "\n");
-    xbt_dynar_t b = xbt_dynar_new(sizeof(char *), NULL);
-    unsigned cpt;
-    char *str;
-    xbt_dynar_foreach(a, cpt, str) {
-      if (strncmp(str, "TESH_ERROR ", (sizeof "TESH_ERROR ") - 1) == 0) {
-        XBT_CRITICAL("%s", str);
-        errcode = 1;
-      } else if (coverage &&
-                 strncmp(str, "profiling:", (sizeof "profiling:") - 1) == 0) {
-        XBT_DEBUG("Remove line [%u]: '%s'", cpt, str);
-      } else {
-        xbt_dynar_push_as(b, char *, str);
-      }
-    }
 
-    if (rctx->output_sort) {
-      stable_sort(b);
-      /* If empty lines moved in first position, remove them */
-      while (!xbt_dynar_is_empty(b) && *xbt_dynar_getfirst_as(b, char*) == '\0')
-        xbt_dynar_shift(b, NULL);
-    }
+    stable_sort(a);
+    /* If empty lines moved in first position, remove them */
+    while (!xbt_dynar_is_empty(a) && *xbt_dynar_getfirst_as(a, char*) == '\0')
+        xbt_dynar_shift(a, NULL);
 
-    if (rctx->output_sort || xbt_dynar_length(b) != xbt_dynar_length(a)) {
-      char *newbuf = xbt_str_join(b, "\n");
-      strcpy(rctx->output_wanted->data, newbuf);
-      rctx->output_wanted->used = strlen(newbuf);
-      xbt_free(newbuf);
-    }
+    newbuf = xbt_str_join(a, "\n");
+    strcpy(rctx->output_wanted->data, newbuf);
+    rctx->output_wanted->used = strlen(newbuf);
+    xbt_free(newbuf);
 
-    xbt_dynar_free(&b);
     xbt_dynar_free(&a);
   }
   xbt_strbuff_chomp(rctx->output_got);
   xbt_strbuff_chomp(rctx->output_wanted);
-  xbt_strbuff_trim(rctx->output_got);
-  xbt_strbuff_trim(rctx->output_wanted);
 
   /* Check for broken pipe */
   if (rctx->brokenpipe)
@@ -889,7 +869,7 @@ void *rctx_wait(void *r)
     xbt_dynar_t a = xbt_str_split(rctx->output_got->data, "\n");
     char *out = xbt_str_join(a, "\n||");
     xbt_dynar_free(&a);
-    XBT_INFO("Output of <%s> so far: \n||%s", rctx->filepos, out);
+    XBT_INFO("Output of <%s> so far:\n||%s", rctx->filepos, out);
     free(out);
   } else if (rctx->output == e_output_check
              && (rctx->output_got->used != rctx->output_wanted->used
@@ -911,7 +891,7 @@ void *rctx_wait(void *r)
     xbt_dynar_t a = xbt_str_split(rctx->output_got->data, "\n");
     char *out = xbt_str_join(a, "\n||");
     xbt_dynar_free(&a);
-    XBT_INFO("Here is the (ignored) command output: \n||%s", out);
+    XBT_INFO("Here is the (ignored) command output:\n||%s", out);
     free(out);
   }