Fix ovnisync table parsing

This commit is contained in:
Rodrigo Arias 2021-09-28 12:22:56 +02:00
parent 3a0541e5fa
commit b9568cb052

27
emu.c
View File

@ -467,8 +467,8 @@ load_clock_offsets(struct ovni_emu *emu)
{
FILE *f;
char buf[1024];
int i, rank;
double offset, std;
int i, rank, ret;
double offset, mean, std;
char host[OVNI_MAX_HOSTNAME];
struct ovni_loom *loom;
struct ovni_trace *trace;
@ -485,8 +485,29 @@ load_clock_offsets(struct ovni_emu *emu)
/* Ignore header line */
fgets(buf, 1024, f);
while(fscanf(f, "%d %s %lf %lf", &rank, host, &offset, &std) == 4)
while(1)
{
errno = 0;
ret = fscanf(f, "%d %s %lf %lf %lf", &rank, host, &offset, &mean, &std);
if(ret == EOF)
{
if(errno != 0)
{
perror("fscanf failed");
exit(EXIT_FAILURE);
}
break;
}
if(ret != 5)
{
err("fscanf read %d instead of 5 fields in %s\n",
ret, emu->clock_offset_file);
exit(EXIT_FAILURE);
}
loom = find_loom_by_hostname(emu, host);
if(loom == NULL)