annotate libmlk-util/mlk/util/util.h @ 444:9f062143e675

misc: fix for DragonFlyBSD
author David Demelier <markand@malikania.fr>
date Tue, 31 Jan 2023 10:22:35 +0100
parents 38cf60f5a1c4
children 773a082f0b91
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
444
9f062143e675 misc: fix for DragonFlyBSD
David Demelier <markand@malikania.fr>
parents: 432
diff changeset
46 #elif defined(__DragonFly__)
9f062143e675 misc: fix for DragonFlyBSD
David Demelier <markand@malikania.fr>
parents: 432
diff changeset
47 # define MLK_OS_POSIX
411
d74f53299252 make: add basic GNU make support
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
48 #elif defined(__OpenBSD__)
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(__NetBSD__)
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(__linux__)
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 #elif defined(__APPLE__)
d74f53299252 make: add basic GNU make support
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
55 # define MLK_OS_POSIX
d74f53299252 make: add basic GNU make support
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
56 # define MLK_OS_APPLE
d74f53299252 make: add basic GNU make support
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
57 #endif
d74f53299252 make: add basic GNU make support
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
58
348
7d7991f97acf misc: be more barebone portable
David Demelier <markand@malikania.fr>
parents: 320
diff changeset
59 #if !defined(PATH_MAX)
315
3bfaaf5342a9 cmake: add support for Visual Studio 2019
David Demelier <markand@malikania.fr>
parents:
diff changeset
60 # define PATH_MAX 2048
3bfaaf5342a9 cmake: add support for Visual Studio 2019
David Demelier <markand@malikania.fr>
parents:
diff changeset
61 #endif
3bfaaf5342a9 cmake: add support for Visual Studio 2019
David Demelier <markand@malikania.fr>
parents:
diff changeset
62
411
d74f53299252 make: add basic GNU make support
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
63 #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
64 # define MLK_HAS_SSIZE_T
d74f53299252 make: add basic GNU make support
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
65 #endif
d74f53299252 make: add basic GNU make support
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
66
d74f53299252 make: add basic GNU make support
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
67 #if !defined(MLK_HAS_SSIZE_T)
315
3bfaaf5342a9 cmake: add support for Visual Studio 2019
David Demelier <markand@malikania.fr>
parents:
diff changeset
68 typedef long long int ssize_t;
3bfaaf5342a9 cmake: add support for Visual Studio 2019
David Demelier <markand@malikania.fr>
parents:
diff changeset
69 #endif
3bfaaf5342a9 cmake: add support for Visual Studio 2019
David Demelier <markand@malikania.fr>
parents:
diff changeset
70
411
d74f53299252 make: add basic GNU make support
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
71 #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
72 # define MLK_HAS_FMEMOPEN
d74f53299252 make: add basic GNU make support
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
73 #endif
d74f53299252 make: add basic GNU make support
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
74
348
7d7991f97acf misc: be more barebone portable
David Demelier <markand@malikania.fr>
parents: 320
diff changeset
75 size_t
420
7d2ebc334c8c misc: rename core to util
David Demelier <markand@malikania.fr>
parents: 411
diff changeset
76 util_strlcpy(char *, const char *, size_t);
348
7d7991f97acf misc: be more barebone portable
David Demelier <markand@malikania.fr>
parents: 320
diff changeset
77
7d7991f97acf misc: be more barebone portable
David Demelier <markand@malikania.fr>
parents: 320
diff changeset
78 size_t
420
7d2ebc334c8c misc: rename core to util
David Demelier <markand@malikania.fr>
parents: 411
diff changeset
79 util_strlcat(char *, const char *, size_t);
348
7d7991f97acf misc: be more barebone portable
David Demelier <markand@malikania.fr>
parents: 320
diff changeset
80
7d7991f97acf misc: be more barebone portable
David Demelier <markand@malikania.fr>
parents: 320
diff changeset
81 FILE *
420
7d2ebc334c8c misc: rename core to util
David Demelier <markand@malikania.fr>
parents: 411
diff changeset
82 util_fmemopen(void *, size_t, const char *);
348
7d7991f97acf misc: be more barebone portable
David Demelier <markand@malikania.fr>
parents: 320
diff changeset
83
7d7991f97acf misc: be more barebone portable
David Demelier <markand@malikania.fr>
parents: 320
diff changeset
84 char *
420
7d2ebc334c8c misc: rename core to util
David Demelier <markand@malikania.fr>
parents: 411
diff changeset
85 util_basename(char *);
348
7d7991f97acf misc: be more barebone portable
David Demelier <markand@malikania.fr>
parents: 320
diff changeset
86
7d7991f97acf misc: be more barebone portable
David Demelier <markand@malikania.fr>
parents: 320
diff changeset
87 char *
420
7d2ebc334c8c misc: rename core to util
David Demelier <markand@malikania.fr>
parents: 411
diff changeset
88 util_dirname(char *);
348
7d7991f97acf misc: be more barebone portable
David Demelier <markand@malikania.fr>
parents: 320
diff changeset
89
420
7d2ebc334c8c misc: rename core to util
David Demelier <markand@malikania.fr>
parents: 411
diff changeset
90 extern int util_opterr;
7d2ebc334c8c misc: rename core to util
David Demelier <markand@malikania.fr>
parents: 411
diff changeset
91 extern int util_optind;
7d2ebc334c8c misc: rename core to util
David Demelier <markand@malikania.fr>
parents: 411
diff changeset
92 extern int util_optopt;
7d2ebc334c8c misc: rename core to util
David Demelier <markand@malikania.fr>
parents: 411
diff changeset
93 extern char *util_optarg;
348
7d7991f97acf misc: be more barebone portable
David Demelier <markand@malikania.fr>
parents: 320
diff changeset
94
7d7991f97acf misc: be more barebone portable
David Demelier <markand@malikania.fr>
parents: 320
diff changeset
95 int
420
7d2ebc334c8c misc: rename core to util
David Demelier <markand@malikania.fr>
parents: 411
diff changeset
96 util_getopt(int, char **, const char *);
348
7d7991f97acf misc: be more barebone portable
David Demelier <markand@malikania.fr>
parents: 320
diff changeset
97
366
19782ea1cf4a misc: start rebranding
David Demelier <markand@malikania.fr>
parents: 348
diff changeset
98 #endif /* !MLK_PORT_H */