blob: daea1fa73b3d817d179c2e1a12815b09571890b1 [file] [log] [blame]
Elliott Hughesd35df492017-02-15 15:19:05 -08001/*
Elliott Hughesb7556142018-02-20 17:03:16 -08002 * Copyright (c) 2001-2018 The strace developers.
Elliott Hughesd35df492017-02-15 15:19:05 -08003 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution.
13 * 3. The name of the author may not be used to endorse or promote products
14 * derived from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
17 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
18 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
19 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
20 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
21 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
23 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
25 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
Elliott Hughes77c3ff82017-09-08 17:11:00 -070028#ifndef STRACE_STRING_TO_UINT_H
29#define STRACE_STRING_TO_UINT_H
Elliott Hughesd35df492017-02-15 15:19:05 -080030
Elliott Hughesb7556142018-02-20 17:03:16 -080031#include <limits.h>
Elliott Hughesd35df492017-02-15 15:19:05 -080032
Elliott Hughesb7556142018-02-20 17:03:16 -080033#include "kernel_types.h"
34
35extern long long
Elliott Hughes77c3ff82017-09-08 17:11:00 -070036string_to_uint_ex(const char *str, char **endptr,
Elliott Hughesb7556142018-02-20 17:03:16 -080037 unsigned long long max_val, const char *accepted_ending);
Elliott Hughesd35df492017-02-15 15:19:05 -080038
Elliott Hughesb7556142018-02-20 17:03:16 -080039static inline long long
40string_to_uint_upto(const char *const str, const unsigned long long max_val)
Elliott Hughes77c3ff82017-09-08 17:11:00 -070041{
42 return string_to_uint_ex(str, NULL, max_val, NULL);
43}
Elliott Hughesd35df492017-02-15 15:19:05 -080044
Elliott Hughesb7556142018-02-20 17:03:16 -080045static inline int
46string_to_uint(const char *str)
47{
48 return string_to_uint_upto(str, INT_MAX);
49}
50
51static inline long
52string_to_ulong(const char *str)
53{
54 return string_to_uint_upto(str, LONG_MAX);
55}
56
57static inline kernel_long_t
58string_to_kulong(const char *str)
59{
60 return string_to_uint_upto(str, ((kernel_ulong_t) -1ULL) >> 1);
61}
62
63static inline long long
64string_to_ulonglong(const char *str)
65{
66 return string_to_uint_upto(str, LLONG_MAX);
67}
68
Elliott Hughes77c3ff82017-09-08 17:11:00 -070069#endif /* !STRACE_STRING_TO_UINT_H */