X-Git-Url: http://git.efficios.com/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fcommon%2Futils.c;h=83d4dbe45e4a9395a3ba2bd5b31a2cf7b2fd7b0c;hp=f3cb9e0306e599a3b7aef48bce1812cfc7d6a03a;hb=refs%2Fheads%2Fsow-2019-0002-rev1;hpb=cbf53d23cecaca9c6ec71582663c4a8254a9f285 diff --git a/src/common/utils.c b/src/common/utils.c index f3cb9e030..83d4dbe45 100644 --- a/src/common/utils.c +++ b/src/common/utils.c @@ -1,20 +1,10 @@ /* - * Copyright (C) 2012 - David Goulet - * Copyright (C) 2013 - Raphaël Beamonte - * Copyright (C) 2013 - Jérémie Galarneau + * Copyright (C) 2012 David Goulet + * Copyright (C) 2013 Raphaël Beamonte + * Copyright (C) 2013 Jérémie Galarneau * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License, version 2 only, as - * published by the Free Software Foundation. + * SPDX-License-Identifier: GPL-2.0-only * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along with - * this program; if not, write to the Free Software Foundation, Inc., 51 - * Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #define _LGPL_SOURCE @@ -744,7 +734,8 @@ int utils_stream_file_path(const char *path_name, const char *file_name, char count_str[MAX_INT_DEC_LEN(count) + 1] = {}; const char *path_separator; - if (path_name && path_name[strlen(path_name) - 1] == '/') { + if (path_name && (path_name[0] == '\0' || + path_name[strlen(path_name) - 1] == '/')) { path_separator = ""; } else { path_separator = "/"; @@ -1536,3 +1527,40 @@ int utils_change_working_directory(const char *path) end: return ret; } + +LTTNG_HIDDEN +int utils_parse_unsigned_long_long(const char *str, + unsigned long long *value) +{ + int ret; + char *endptr; + + assert(str); + assert(value); + + errno = 0; + *value = strtoull(str, &endptr, 10); + + /* Conversion failed. Out of range? */ + if (errno != 0) { + ret = -1; + goto end; + } + + /* Not the end of the string? */ + if (*endptr) { + ret = -1; + goto end; + } + + /* Empty string? */ + if (endptr == str) { + ret = -1; + goto end; + } + + ret = 0; + +end: + return ret; +}