/* 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
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);
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)
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
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);
}