1 | /*
|
2 | * Souffle - A Datalog Compiler
|
3 | * Copyright (c) 2022, The Souffle Developers. All rights reserved
|
4 | * Licensed under the Universal Permissive License v 1.0 as shown at:
|
5 | * - https://opensource.org/licenses/UPL
|
6 | * - <souffle root>/licenses/SOUFFLE-UPL.txt
|
7 | */
|
8 | #ifndef GET_OPT_LONG_H
|
9 | #define GET_OPT_LONG_H
|
10 |
|
11 | // Points to the argument of the last option found.
|
12 | extern char* optarg;
|
13 |
|
14 | // Index of the next element to processed in argv.
|
15 | extern int optind;
|
16 |
|
17 | // Enables error message printing if opterr!=0.
|
18 | extern int opterr;
|
19 |
|
20 | extern int optopt;
|
21 |
|
22 | // The long option descriptor, as described by man page for getopt_long.
|
23 | struct option {
|
24 | const char* name; // name of the long option.
|
25 | int has_arg; // 0=no argument, 1=requires argument, 2=optional argument.
|
26 | int* flag; // if non-null, the variable pointed by `flag` is set to `val` when getopt_long finds this
|
27 | // option.
|
28 | int val; // value to return or to load in the variable pointed by `flag` when this option is found.
|
29 | };
|
30 |
|
31 | // A limited implementation of POSIX getopt_long.
|
32 | extern int getopt_long(
|
33 | int argc, char* const argv[], const char* optstring, const struct option* longopts, int* longindex);
|
34 |
|
35 | #endif
|