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 |
|