Reorder trace looms by hostname (workaround)
This commit is contained in:
parent
d2a349e895
commit
162245e955
40
ovni.c
40
ovni.c
@ -724,6 +724,12 @@ load_loom(struct ovni_loom *loom, int loomid, char *loomdir)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
compare_alph(const void* a, const void* b)
|
||||
{
|
||||
return strcmp(*(const char**)a, *(const char**)b);
|
||||
}
|
||||
|
||||
int
|
||||
ovni_load_trace(struct ovni_trace *trace, char *tracedir)
|
||||
{
|
||||
@ -744,6 +750,13 @@ ovni_load_trace(struct ovni_trace *trace, char *tracedir)
|
||||
return -1;
|
||||
}
|
||||
|
||||
char *looms[OVNI_MAX_LOOM];
|
||||
char *hosts[OVNI_MAX_LOOM];
|
||||
for (int l = 0; l < OVNI_MAX_LOOM; ++l) {
|
||||
looms[l] = malloc(PATH_MAX*sizeof(char));
|
||||
hosts[l] = malloc(PATH_MAX*sizeof(char));
|
||||
}
|
||||
|
||||
while((dirent = readdir(dir)) != NULL)
|
||||
{
|
||||
if(find_dir_prefix_str(dirent, "loom", &loom_name) != 0)
|
||||
@ -759,22 +772,31 @@ ovni_load_trace(struct ovni_trace *trace, char *tracedir)
|
||||
abort();
|
||||
}
|
||||
|
||||
i = trace->nlooms;
|
||||
loom = &trace->loom[i];
|
||||
sprintf(hosts[trace->nlooms], "%s", loom_name);
|
||||
|
||||
/* FIXME: Unsafe */
|
||||
strcpy(loom->hostname, loom_name);
|
||||
|
||||
sprintf(path, "%s/%s", tracedir, dirent->d_name);
|
||||
|
||||
if(load_loom(&trace->loom[i], i, path) != 0)
|
||||
return -1;
|
||||
sprintf(looms[trace->nlooms], "%s/%s", tracedir, dirent->d_name);
|
||||
|
||||
trace->nlooms++;
|
||||
}
|
||||
|
||||
qsort((const char **) hosts, trace->nlooms, sizeof(const char*), compare_alph);
|
||||
qsort((const char **) looms, trace->nlooms, sizeof(const char*), compare_alph);
|
||||
|
||||
for (int l = 0; l < trace->nlooms; ++l) {
|
||||
/* FIXME: Unsafe */
|
||||
strcpy(trace->loom[l].hostname, hosts[l]);
|
||||
|
||||
if(load_loom(&trace->loom[l], l, looms[l]) != 0)
|
||||
return -1;
|
||||
}
|
||||
|
||||
closedir(dir);
|
||||
|
||||
for (int l = 0; l < OVNI_MAX_LOOM; ++l) {
|
||||
free(looms[l]);
|
||||
free(hosts[l]);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user