annotate libmlk-util/mlk/util/util.h @ 438:25a56ca53ac2

core: update mlk-alloc module
author David Demelier <markand@malikania.fr>
date Mon, 17 Oct 2022 14:22:07 +0200
parents 38cf60f5a1c4
children 9f062143e675
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
315
3bfaaf5342a9 cmake: add support for Visual Studio 2019
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
420
7d2ebc334c8c misc: rename core to util
David Demelier <markand@malikania.fr>
parents: 411
diff changeset
2 * util.h -- miscellaneous utilities
315
3bfaaf5342a9 cmake: add support for Visual Studio 2019
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 *
378
460c78706989 misc: update copyright years
David Demelier <markand@malikania.fr>
parents: 366
diff changeset
4 * Copyright (c) 2020-2022 David Demelier <markand@malikania.fr>
315
3bfaaf5342a9 cmake: add support for Visual Studio 2019
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 *
3bfaaf5342a9 cmake: add support for Visual Studio 2019
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 * Permission to use, copy, modify, and/or distribute this software for any
3bfaaf5342a9 cmake: add support for Visual Studio 2019
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 * purpose with or without fee is hereby granted, provided that the above
3bfaaf5342a9 cmake: add support for Visual Studio 2019
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 * copyright notice and this permission notice appear in all copies.
3bfaaf5342a9 cmake: add support for Visual Studio 2019
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 *
3bfaaf5342a9 cmake: add support for Visual Studio 2019
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
3bfaaf5342a9 cmake: add support for Visual Studio 2019
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
3bfaaf5342a9 cmake: add support for Visual Studio 2019
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
3bfaaf5342a9 cmake: add support for Visual Studio 2019
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
3bfaaf5342a9 cmake: add support for Visual Studio 2019
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
3bfaaf5342a9 cmake: add support for Visual Studio 2019
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
3bfaaf5342a9 cmake: add support for Visual Studio 2019
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
3bfaaf5342a9 cmake: add support for Visual Studio 2019
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 */
3bfaaf5342a9 cmake: add support for Visual Studio 2019
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
366
19782ea1cf4a misc: start rebranding
David Demelier <markand@malikania.fr>
parents: 348
diff changeset
19 #ifndef MLK_PORT_H
19782ea1cf4a misc: start rebranding
David Demelier <markand@malikania.fr>
parents: 348
diff changeset
20 #define MLK_PORT_H
315
3bfaaf5342a9 cmake: add support for Visual Studio 2019
David Demelier <markand@malikania.fr>
parents:
diff changeset
21
348
7d7991f97acf misc: be more barebone portable
David Demelier <markand@malikania.fr>
parents: 320
diff changeset
22 #include <limits.h>
315
3bfaaf5342a9 cmake: add support for Visual Studio 2019
David Demelier <markand@malikania.fr>
parents:
diff changeset
23 #include <stdio.h>
3bfaaf5342a9 cmake: add support for Visual Studio 2019
David Demelier <markand@malikania.fr>
parents:
diff changeset
24
411
d74f53299252 make: add basic GNU make support
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
25 /*
d74f53299252 make: add basic GNU make support
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
26 * This file helps finding what are the available features accross the various
d74f53299252 make: add basic GNU make support
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
27 * operating system in the landscape.
d74f53299252 make: add basic GNU make support
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
28 *
d74f53299252 make: add basic GNU make support
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
29 * The following macros are automatically set depending on the operating
d74f53299252 make: add basic GNU make support
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
30 * system:
d74f53299252 make: add basic GNU make support
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
31 *
d74f53299252 make: add basic GNU make support
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
32 * - MLK_OS_WINDOWS: running on any Windows machine
d74f53299252 make: add basic GNU make support
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
33 * - MLK_OS_POSIX: every mostly POSIX systems
d74f53299252 make: add basic GNU make support
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
34 *
d74f53299252 make: add basic GNU make support
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
35 * The following macro will be automatically defined unless the user override
d74f53299252 make: add basic GNU make support
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
36 * them:
d74f53299252 make: add basic GNU make support
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
37 *
d74f53299252 make: add basic GNU make support
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
38 * - MLK_HAS_FMEMOPEN: defined if fmemopen function is available.
d74f53299252 make: add basic GNU make support
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
39 * - MLK_HAS_SSIZE_T: defined if ssize_t typedef is available.
d74f53299252 make: add basic GNU make support
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
40 */
d74f53299252 make: add basic GNU make support
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
41
d74f53299252 make: add basic GNU make support
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
42 #if defined(_WIN32)
d74f53299252 make: add basic GNU make support
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
43 # define MLK_OS_WINDOWS
d74f53299252 make: add basic GNU make support
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
44 #elif defined(__FreeBSD__)
d74f53299252 make: add basic GNU make support
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
45 # define MLK_OS_POSIX
d74f53299252 make: add basic GNU make support
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
46 #elif defined(__OpenBSD__)
d74f53299252 make: add basic GNU make support
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
47 # define MLK_OS_POSIX
d74f53299252 make: add basic GNU make support
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
48 #elif defined(__NetBSD__)
d74f53299252 make: add basic GNU make support
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
49 # define MLK_OS_POSIX
d74f53299252 make: add basic GNU make support
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
50 #elif defined(__linux__)
d74f53299252 make: add basic GNU make support
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
51 # define MLK_OS_POSIX
d74f53299252 make: add basic GNU make support
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
52 #elif defined(__APPLE__)
d74f53299252 make: add basic GNU make support
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
53 # define MLK_OS_POSIX
d74f53299252 make: add basic GNU make support
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
54 # define MLK_OS_APPLE
d74f53299252 make: add basic GNU make support
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
55 #endif
d74f53299252 make: add basic GNU make support
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
56
348
7d7991f97acf misc: be more barebone portable
David Demelier <markand@malikania.fr>
parents: 320
diff changeset
57 #if !defined(PATH_MAX)
315
3bfaaf5342a9 cmake: add support for Visual Studio 2019
David Demelier <markand@malikania.fr>
parents:
diff changeset
58 # define PATH_MAX 2048
3bfaaf5342a9 cmake: add support for Visual Studio 2019
David Demelier <markand@malikania.fr>
parents:
diff changeset
59 #endif
3bfaaf5342a9 cmake: add support for Visual Studio 2019
David Demelier <markand@malikania.fr>
parents:
diff changeset
60
411
d74f53299252 make: add basic GNU make support
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
61 #if defined(MLK_OS_POSIX) && !defined(MLK_HAS_SSIZE_T)
d74f53299252 make: add basic GNU make support
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
62 # define MLK_HAS_SSIZE_T
d74f53299252 make: add basic GNU make support
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
63 #endif
d74f53299252 make: add basic GNU make support
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
64
d74f53299252 make: add basic GNU make support
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
65 #if !defined(MLK_HAS_SSIZE_T)
315
3bfaaf5342a9 cmake: add support for Visual Studio 2019
David Demelier <markand@malikania.fr>
parents:
diff changeset
66 typedef long long int ssize_t;
3bfaaf5342a9 cmake: add support for Visual Studio 2019
David Demelier <markand@malikania.fr>
parents:
diff changeset
67 #endif
3bfaaf5342a9 cmake: add support for Visual Studio 2019
David Demelier <markand@malikania.fr>
parents:
diff changeset
68
411
d74f53299252 make: add basic GNU make support
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
69 #if defined(MLK_OS_POSIX) && !defined(MLK_HAS_FMEMOPEN)
d74f53299252 make: add basic GNU make support
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
70 # define MLK_HAS_FMEMOPEN
d74f53299252 make: add basic GNU make support
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
71 #endif
d74f53299252 make: add basic GNU make support
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
72
348
7d7991f97acf misc: be more barebone portable
David Demelier <markand@malikania.fr>
parents: 320
diff changeset
73 size_t
420
7d2ebc334c8c misc: rename core to util
David Demelier <markand@malikania.fr>
parents: 411
diff changeset
74 util_strlcpy(char *, const char *, size_t);
348
7d7991f97acf misc: be more barebone portable
David Demelier <markand@malikania.fr>
parents: 320
diff changeset
75
7d7991f97acf misc: be more barebone portable
David Demelier <markand@malikania.fr>
parents: 320
diff changeset
76 size_t
420
7d2ebc334c8c misc: rename core to util
David Demelier <markand@malikania.fr>
parents: 411
diff changeset
77 util_strlcat(char *, const char *, size_t);
348
7d7991f97acf misc: be more barebone portable
David Demelier <markand@malikania.fr>
parents: 320
diff changeset
78
7d7991f97acf misc: be more barebone portable
David Demelier <markand@malikania.fr>
parents: 320
diff changeset
79 FILE *
420
7d2ebc334c8c misc: rename core to util
David Demelier <markand@malikania.fr>
parents: 411
diff changeset
80 util_fmemopen(void *, size_t, const char *);
348
7d7991f97acf misc: be more barebone portable
David Demelier <markand@malikania.fr>
parents: 320
diff changeset
81
7d7991f97acf misc: be more barebone portable
David Demelier <markand@malikania.fr>
parents: 320
diff changeset
82 char *
420
7d2ebc334c8c misc: rename core to util
David Demelier <markand@malikania.fr>
parents: 411
diff changeset
83 util_basename(char *);
348
7d7991f97acf misc: be more barebone portable
David Demelier <markand@malikania.fr>
parents: 320
diff changeset
84
7d7991f97acf misc: be more barebone portable
David Demelier <markand@malikania.fr>
parents: 320
diff changeset
85 char *
420
7d2ebc334c8c misc: rename core to util
David Demelier <markand@malikania.fr>
parents: 411
diff changeset
86 util_dirname(char *);
348
7d7991f97acf misc: be more barebone portable
David Demelier <markand@malikania.fr>
parents: 320
diff changeset
87
420
7d2ebc334c8c misc: rename core to util
David Demelier <markand@malikania.fr>
parents: 411
diff changeset
88 extern int util_opterr;
7d2ebc334c8c misc: rename core to util
David Demelier <markand@malikania.fr>
parents: 411
diff changeset
89 extern int util_optind;
7d2ebc334c8c misc: rename core to util
David Demelier <markand@malikania.fr>
parents: 411
diff changeset
90 extern int util_optopt;
7d2ebc334c8c misc: rename core to util
David Demelier <markand@malikania.fr>
parents: 411
diff changeset
91 extern char *util_optarg;
348
7d7991f97acf misc: be more barebone portable
David Demelier <markand@malikania.fr>
parents: 320
diff changeset
92
7d7991f97acf misc: be more barebone portable
David Demelier <markand@malikania.fr>
parents: 320
diff changeset
93 int
420
7d2ebc334c8c misc: rename core to util
David Demelier <markand@malikania.fr>
parents: 411
diff changeset
94 util_getopt(int, char **, const char *);
348
7d7991f97acf misc: be more barebone portable
David Demelier <markand@malikania.fr>
parents: 320
diff changeset
95
366
19782ea1cf4a misc: start rebranding
David Demelier <markand@malikania.fr>
parents: 348
diff changeset
96 #endif /* !MLK_PORT_H */