+ if (stat(xbt_binary_name,&stat_buf)) {
+ /* Damn. binary not in current dir. We'll have to dig the PATH to find it */
+ int i;
+ for (i=0; environ[i]; i++) {
+ if (!strncmp("PATH=",environ[i], 5)) {
+ xbt_dynar_t path=xbt_str_split(environ[i] + 5, ":");
+ unsigned int cpt;
+ char *data;
+ xbt_dynar_foreach(path, cpt, data) {
+ if (binary_name)
+ free(binary_name);
+ binary_name = bprintf("%s/%s",data,xbt_binary_name);
+ if (!stat(binary_name,&stat_buf)) {
+ /* Found. */
+ DEBUG1("Looked in the PATH for the binary. Found %s",binary_name);
+ xbt_dynar_free(&path);
+ break;
+ }
+ }
+ if (stat(binary_name,&stat_buf)) {
+ /* not found */
+ e->used = 1;
+ e->bt_strings = xbt_new(char*,1);
+ e->bt_strings[0] = bprintf("(binary '%s' not found the path)",xbt_binary_name);
+ return;
+ }
+ xbt_dynar_free(&path);
+ break;
+ }
+ }
+ } else {
+ binary_name = xbt_strdup(xbt_binary_name);
+ }
+ cmd = curr = xbt_new(char,strlen(ADDR2LINE)+25+strlen(binary_name)+32*e->used);
+
+ curr += sprintf(curr,"%s -f -e %s ",ADDR2LINE,binary_name);
+ free(binary_name);
+