Mercurial > hgrepos > Python2 > PyMuPDF
diff mupdf-source/include/mupdf/fitz/getopt.h @ 2:b50eed0cc0ef upstream
ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
The directory name has changed: no version number in the expanded directory now.
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Mon, 15 Sep 2025 11:43:07 +0200 |
| parents | |
| children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mupdf-source/include/mupdf/fitz/getopt.h Mon Sep 15 11:43:07 2025 +0200 @@ -0,0 +1,134 @@ +// Copyright (C) 2004-2021 Artifex Software, Inc. +// +// This file is part of MuPDF. +// +// MuPDF is free software: you can redistribute it and/or modify it under the +// terms of the GNU Affero General Public License as published by the Free +// Software Foundation, either version 3 of the License, or (at your option) +// any later version. +// +// MuPDF 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 Affero General Public License for more +// details. +// +// You should have received a copy of the GNU Affero General Public License +// along with MuPDF. If not, see <https://www.gnu.org/licenses/agpl-3.0.en.html> +// +// Alternative licensing terms are available from the licensor. +// For commercial licensing, see <https://www.artifex.com/> or contact +// Artifex Software, Inc., 39 Mesa Street, Suite 108A, San Francisco, +// CA 94129, USA, for further information. + +#ifndef MUPDF_FITZ_GETOPT_H +#define MUPDF_FITZ_GETOPT_H + +#include "export.h" + +typedef struct +{ + char *option; + int *flag; + void *opaque; +} fz_getopt_long_options; + +/** + Simple functions/variables for use in tools. + + ostr = option string. Comprises single letter options, followed by : if there + is an argument to the option. + + longopts: NULL (indicating no long options), or a pointer to an array of + longoptions, terminated by an entry with option == NULL. + + In the event of matching a single char option, this function will normally + return the char. The exception to this is when the option requires an + argument and none is supplied; in this case we return ':'. + + In the event of matching a long option, this function returns 0, with fz_optlong + set to point to the matching option. + + A long option entry may be followed with : to indicate there is an argument to the + option. If the need for an argument is specified in this way, and no argument is + given, an error will be displayed and argument processing will stop. If an argument + is given, and the long option record contains a non-null flag pointer, then the code + will decode the argument and fill in that flag pointer. Specifically, + case-insensitive matches to 'yes', 'no', 'true' and 'false' will cause a value of 0 + or 1 as appropriate to be written; failing this the arg will be interpreted as a + decimal integer using atoi. + + A long option entry may be followed by an list of options (e.g. myoption=foo|bar|baz) + and the option will be passed to fz_opt_from_list. The return value of that will be + placed in fz_optitem. If the return value of that function is -1, then an error will + be displayed and argument processing will stop. + + In the event of reaching the end of the arg list or '--', this function returns EOF. + + In the event of failing to match anything, an error is printed, and we return '?'. + + If an argument is expected for the option, then fz_optarg will be returned pointing + at the start of the argument. Examples of supported argument formats: '-r500', '-r 500', + '--resolution 500', '--resolution=500'. +*/ +extern int fz_getopt_long(int nargc, char * const *nargv, const char *ostr, const fz_getopt_long_options *longopts); + +/** + Identical to fz_getopt_long, but with a NULL longopts field, signifying no long + options. +*/ +extern int fz_getopt(int nargc, char * const *nargv, const char *ostr); + +/** + fz_optind is updated to point to the current index being read from the + arguments. +*/ +FZ_DATA extern int fz_optind; + +/** + fz_optarg is a pointer to the argument data for the most recently + read option. +*/ +FZ_DATA extern char *fz_optarg; + +/** + fz_optlong is a pointer to the record for the most recently + read long option. (i.e. if a long option is detected, this + will be set to point to the record for that option, otherwise + it will be NULL). +*/ +FZ_DATA extern const fz_getopt_long_options *fz_optlong; + +/** + The item number for the most recently matched item list. + + First item in the list is numbered 0. No match is -1. +*/ +FZ_DATA extern int fz_optitem; + +/** + Return the index of a (case-insensitive) option within an optlist. + + For instance for optlist = "Foo|Bar|Baz", and opt = "bar", + this would return 1. + + If the optlist ends with "|*" then that is a catch all case and + matches all options allowing the caller to process it itself. + fz_optarg will be set to point to the option, and the return + value will be the index of the '*' option within that list. + + If an optlist entry ends with ':' (e.g. "Foo:") then that option + may have suboptions appended to it (for example "JPG:80") and + fz_optarg will be set to point at "80". Otherwise fz_optarg will + be set to NULL. + + In the event of no-match found, prints an error and returns -1. +*/ +int fz_opt_from_list(char *opt, const char *optlist); + +/** + Convert "-" to "/dev/stdout" for use with command lines. + Also converts "nul" and "con" on Windows. +*/ +char *fz_optpath(char *opt); + +#endif
