File: load_str.c

package info (click to toggle)
flint-arb 1%3A2.19.0-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 13,028 kB
  • sloc: ansic: 177,109; sh: 553; makefile: 288; python: 268
file content (61 lines) | stat: -rw-r--r-- 1,285 bytes parent folder | download | duplicates (2)
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;
}