1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
|
/*
Copyright (C) 2019 Julian RĂ¼th
This file is part of Arb.
Arb is free software: you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License (LGPL) as published
by the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version. See <http://www.gnu.org/licenses/>.
*/
#include <string.h>
#include "arb.h"
#include "arf.h"
#include "mag.h"
int
arb_load_str(arb_t x, const char* data)
{
size_t midlen, maglen;
char * mid;
char * mag;
int err = 0;
const char* split = strchr(data, ' ');
if (split == NULL)
{
return 1;
}
split = strchr(split + 1, ' ');
if (split == NULL)
{
return 1;
}
midlen = (size_t)(split - data);
mid = (char*)flint_malloc(midlen + 1);
strncpy(mid, data, midlen);
mid[midlen] = '\0';
maglen = strlen(data) - midlen - 1;
mag = (char*)flint_malloc(maglen + 1);
strncpy(mag, split + 1, maglen);
mag[maglen] = '\0';
err = arf_load_str(arb_midref(x), mid);
if (err)
{
flint_free(mid);
flint_free(mag);
return err;
}
err = mag_load_str(arb_radref(x), mag);
flint_free(mid);
flint_free(mag);
return err;
}
|