55 lines
939 B
C
55 lines
939 B
C
#include <stdio.h>
|
|
|
|
#include "map.h"
|
|
#include "internal/map_internal.h"
|
|
|
|
int8_t
|
|
write_header(FILE *f, const char *source, const char *target)
|
|
{
|
|
if (0 > fprintf(f, "C-MD MAP v1\n"))
|
|
return (1);
|
|
if (0 > fprintf(f, "source: %s\n", source))
|
|
return (1);
|
|
if (0 > fprintf(f, "target: %s\n", target))
|
|
return (1);
|
|
if (0 > fprintf(f, "---\n"))
|
|
return (1);
|
|
return (0);
|
|
}
|
|
|
|
int8_t
|
|
write_ranges(FILE *f, t_map *map)
|
|
{
|
|
size_t i;
|
|
t_range *r;
|
|
|
|
i = 0;
|
|
while (i < map->count)
|
|
{
|
|
r = &map->ranges[i];
|
|
if (0 > fprintf(f, "%u-%u:%u-%u\n",
|
|
r->src_start, r->src_end, r->dst_start, r->dst_end))
|
|
return (1);
|
|
i++;
|
|
}
|
|
return (0);
|
|
}
|
|
|
|
int8_t
|
|
map_write(t_map *map, const char *path, const char *source, const char *target)
|
|
{
|
|
FILE *f;
|
|
int8_t ret;
|
|
|
|
f = fopen(path, "w");
|
|
if (NULL == f)
|
|
{
|
|
perror(path);
|
|
return (1);
|
|
}
|
|
ret = write_header(f, source, target);
|
|
if (0 == ret)
|
|
ret = write_ranges(f, map);
|
|
fclose(f);
|
|
return (ret);
|
|
}
|