Blame src/hwloc/netloc/support.c

Packit Service c5cf8c
/*
Packit Service c5cf8c
 * Copyright © 2013-2014 University of Wisconsin-La Crosse.
Packit Service c5cf8c
 *                         All rights reserved.
Packit Service c5cf8c
 * Copyright © 2016-2018 Inria.  All rights reserved.
Packit Service c5cf8c
 *
Packit Service c5cf8c
 * $COPYRIGHT$
Packit Service c5cf8c
 *
Packit Service c5cf8c
 * Additional copyrights may follow
Packit Service c5cf8c
 * See COPYING in top-level directory.
Packit Service c5cf8c
 *
Packit Service c5cf8c
 * $HEADER$
Packit Service c5cf8c
 */
Packit Service c5cf8c
Packit Service c5cf8c
#include <private/netloc.h>
Packit Service c5cf8c
#include <netloc.h>
Packit Service c5cf8c
Packit Service c5cf8c
#include <sys/types.h>
Packit Service c5cf8c
#include <sys/stat.h>
Packit Service c5cf8c
#include <fcntl.h>
Packit Service c5cf8c
#ifdef HAVE_UNISTD_H
Packit Service c5cf8c
#include <unistd.h>
Packit Service c5cf8c
#endif
Packit Service c5cf8c
Packit Service c5cf8c
char *netloc_line_get_next_token(char **string, char c)
Packit Service c5cf8c
{
Packit Service c5cf8c
    char *field;
Packit Service c5cf8c
    char *string_end;
Packit Service c5cf8c
Packit Service c5cf8c
    if (!*string)
Packit Service c5cf8c
        return NULL;
Packit Service c5cf8c
Packit Service c5cf8c
    string_end = strchr(*string, c);
Packit Service c5cf8c
Packit Service c5cf8c
    if (string_end) {
Packit Service c5cf8c
        string_end[0] = '\0';
Packit Service c5cf8c
        field = *string;
Packit Service c5cf8c
        *string = string_end+1;
Packit Service c5cf8c
    } else {
Packit Service c5cf8c
        field = *string;
Packit Service c5cf8c
        *string = NULL;
Packit Service c5cf8c
    }
Packit Service c5cf8c
Packit Service c5cf8c
    return field;
Packit Service c5cf8c
}
Packit Service c5cf8c
Packit Service c5cf8c
ssize_t netloc_line_get(char **lineptr, size_t *n, FILE *stream)
Packit Service c5cf8c
{
Packit Service c5cf8c
    ssize_t read = getline(lineptr, n, stream);
Packit Service c5cf8c
    if (read == -1)
Packit Service c5cf8c
        return -1;
Packit Service c5cf8c
Packit Service c5cf8c
    /* Remove last \n character */
Packit Service c5cf8c
    char *line = *lineptr;
Packit Service c5cf8c
    size_t lastpos = strlen(line)-1;
Packit Service c5cf8c
    if (line[lastpos] == '\n') {
Packit Service c5cf8c
        line[lastpos] = '\0';
Packit Service c5cf8c
        read--;
Packit Service c5cf8c
    }
Packit Service c5cf8c
    return read;
Packit Service c5cf8c
}
Packit Service c5cf8c