diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /support/dktools/dk4info.c |
Initial commit
Diffstat (limited to 'support/dktools/dk4info.c')
-rw-r--r-- | support/dktools/dk4info.c | 521 |
1 files changed, 521 insertions, 0 deletions
diff --git a/support/dktools/dk4info.c b/support/dktools/dk4info.c new file mode 100644 index 0000000000..b2e68dd8db --- /dev/null +++ b/support/dktools/dk4info.c @@ -0,0 +1,521 @@ +/* + WARNING: This file was generated by dkct. + Changes you make here will be lost if dkct is run again! + You should modify the original source and run dkct on it. + Original source: dk4info.ctr +*/ + +/* +Copyright (C) 2015-2017, Dirk Krause + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above opyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. +* Neither the name of the author nor the names of contributors may be used + to endorse or promote products derived from this software without specific + prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/** @file dk4info.c The dk4info module. +*/ + + +#line 10 "dk4info.ctr" + + +#include "dk4conf.h" + +#if DK4_HAVE_STDLIB_H +#ifndef STDLIB_H_INCLUDED +#include <stdlib.h> +#define STDLIB_H_INCLUDED 1 +#endif +#endif + +#include "dk4app.h" +#include "dk4aopt.h" +#include "dk4maodd.h" +#include "dk4mem.h" +#include "dk4fput.h" +#include "dk4vers.h" +#include "dk4inst.h" +#include "dk4strd.h" + + + + + +#line 33 "dk4info.ctr" + + + +#include "dk4info1.c" + + + +/** Short help text. +*/ +static const dkChar * const dk_info_help_text[] = { +dkT(""), +dkT("Show installation details"), +dkT(""), +dkT("dk4info [<options>]"), +dkT(""), +dkT("Options:"), +dkT(""), +dkT("-l\t\tLong output."), +dkT(""), +dkT("--help\t\tShow this short help text."), +dkT("--manual\t*** SHOW FULL MANUAL. ***"), +dkT("--version\tShow version information."), +dkT("--license\tShow license information."), +dkT(""), +NULL + + +#line 59 "dk4info.ctr" +}; + + + +/** License text. +*/ +static const dkChar * const dk_info_license_text[] = { +dkT(""), +dkT("This software uses code from the following projects, either directly or as"), +dkT("a library:"), +dkT(""), +dkT("dktools\t\tDirk Krause's tools and libraries."), +dkT("\t\tSee http://dktools.sourceforge.net/ for more information."), +#if DK4_HAVE_ZLIB_H +dkT(""), +dkT("zlib\t\tData compression library."), +dkT("\t\tSee http://www.zlib.net/ for more information."), +#endif +#if DK4_HAVE_BZLIB_H +dkT(""), +dkT("bzip2\t\tData compression program and library."), +dkT("\t\tSee http://www.bzip.org/ for more information."), +#endif +dkT(""), +dkT("All the licenses below apply to the program."), +dkT("Licenses for used libraries are shown as found on my Scientific Linux 6.x"), +dkT("computer in the /usr/share/doc directory on 2015-04-01. Check the project"), +dkT("homepages of the used libraries for additional information and/or updated"), +dkT("license terms."), +dkT(""), +dkT(""), +dkT("DK tools and libraries license"), +dkT("=============================="), +dkT("Copyright (c) 2015-2016, Dirk Krause"), +dkT("All rights reserved."), +dkT(""), +dkT("Redistribution and use in source and binary forms, with or without"), +dkT("modification, are permitted provided that the following conditions are met:"), +dkT(""), +dkT("* Redistributions of source code must retain the above copyright notice,"), +dkT(" this list of conditions and the following disclaimer."), +dkT("* Redistributions in binary form must reproduce the above copyright"), +dkT(" notice, this list of conditions and the following disclaimer in the"), +dkT(" documentation and/or other materials provided with the distribution."), +dkT("* Neither the name of the Dirk Krause nor the names of contributors may be"), +dkT(" used to endorse or promote products derived from this software without"), +dkT(" specific prior written permission."), +dkT(""), +dkT("THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\""), +dkT("AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE"), +dkT("IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE"), +dkT("ARE DISCLAIMED."), +dkT(""), +dkT("IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,"), +dkT("INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,"), +dkT("BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,"), +dkT("DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY"), +dkT("OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING"), +dkT("NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,"), +dkT("EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."), +#if DK4_HAVE_ZLIB_H +dkT(""), +dkT(""), +dkT("Zlib license"), +dkT("============"), +dkT("(C) 1995-2004 Jean-loup Gailly and Mark Adler"), +dkT(""), +dkT("This software is provided 'as-is', without any express or implied"), +dkT("warranty. In no event will the authors be held liable for any damages"), +dkT("arising from the use of this software."), +dkT(""), +dkT("Permission is granted to anyone to use this software for any purpose,"), +dkT("including commercial applications, and to alter it and redistribute it"), +dkT("freely, subject to the following restrictions:"), +dkT(""), +dkT("1. The origin of this software must not be misrepresented; you must not"), +dkT(" claim that you wrote the original software. If you use this software"), +dkT(" in a product, an acknowledgment in the product documentation would be"), +dkT(" appreciated but is not required."), +dkT("2. Altered source versions must be plainly marked as such, and must not be"), +dkT(" misrepresented as being the original software."), +dkT("3. This notice may not be removed or altered from any source distribution."), +dkT(""), +dkT("Jean-loup Gailly Mark Adler"), +dkT("jloup@gzip.org madler@alumni.caltech.edu"), +#endif +#if DK4_HAVE_BZLIB_H +dkT(""), +dkT(""), +dkT("Bzip2 and libbzip2 library license"), +dkT("=================================="), +dkT("This program, \"bzip2\", the associated library \"libbzip2\", and all"), +dkT("documentation, are copyright (C) 1996-2007 Julian R Seward. All"), +dkT("rights reserved."), +dkT(""), +dkT("Redistribution and use in source and binary forms, with or without"), +dkT("modification, are permitted provided that the following conditions"), +dkT("are met:"), +dkT(""), +dkT("1. Redistributions of source code must retain the above copyright"), +dkT(" notice, this list of conditions and the following disclaimer."), +dkT(""), +dkT("2. The origin of this software must not be misrepresented; you must "), +dkT(" not claim that you wrote the original software. If you use this "), +dkT(" software in a product, an acknowledgment in the product "), +dkT(" documentation would be appreciated but is not required."), +dkT(""), +dkT("3. Altered source versions must be plainly marked as such, and must"), +dkT(" not be misrepresented as being the original software."), +dkT(""), +dkT("4. The name of the author may not be used to endorse or promote "), +dkT(" products derived from this software without specific prior written "), +dkT(" permission."), +dkT(""), +dkT("THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS"), +dkT("OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED"), +dkT("WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE"), +dkT("ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY"), +dkT("DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL"), +dkT("DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE"), +dkT("GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS"), +dkT("INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,"), +dkT("WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING"), +dkT("NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS"), +dkT("SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."), +dkT(""), +dkT("Julian Seward, jseward@bzip.org"), +dkT("bzip2/libbzip2 version 1.0.5 of 10 December 2007"), +#endif +dkT(""), +NULL + + +#line 191 "dk4info.ctr" +}; + + + +/** Constant texts used by the module, not localized. +*/ +static const dkChar * const dk_info_kwnl[] = { +/* 0 */ +dkT("dktools"), + +/* 1 */ +dkT("dk4info.txt"), + +/* 2 */ +dkT("dk4info.str"), + +NULL + + +#line 212 "dk4info.ctr" +}; + + + +/** Program options. +*/ +static const dk4_option_specification_t dk_info_options[] = { + { dkT('l'), dkT("long"), DK4_OPT_ARG_NONE } +}; + + + +/** Constant texts used by the program, replaced by localized texts. +*/ +static const dkChar * const dk_info_kw_def[] = { +/* 0 */ +dkT("Used directories:"), + +/* 1 */ +dkT("-----------------"), + +/* 2 */ +dkT("Configured at build time:"), + +/* 3 */ +dkT("-------------------------"), + +/* 4 */ +dkT("Definitions:"), + +/* 5 */ +dkT("------------"), + +NULL + + +#line 244 "dk4info.ctr" +}; + + + +/** Option names for configure. +*/ +static dkChar const *option_names[] = { +/* 0 */ +dkT("--prefix="), + +/* 1 */ +dkT("--sysconfdir="), + +/* 2 */ +dkT("--datarootdir="), + +/* 3 */ +dkT("--localstatedir="), + +/* 4 */ +dkT("--bindir="), + +/* 5 */ +dkT("--sbindir="), + +/* 6 */ +dkT("--libdir="), + +/* 7 */ +dkT("--includedir="), + +/* 8 */ +dkT("--mandir="), + +/* 9 */ +dkT("--execprefix="), + +/* 10 */ +dkT("--libexecdir="), + +NULL + + +#line 264 "dk4info.ctr" +}; + + + +/** Options order. +*/ +static size_t option_order[] = { + 0, 1, 3, 2, 4, 5, 6, 7, 8, 10 +}; + + + +static const size_t szoo = sizeof(option_order)/sizeof(size_t); + +/** Replaced by localized texts if found. +*/ +static const dkChar * const *dk_info_msg = dk_info_kw_def; + + + + +/** Number of elements in dk_info_msg. +*/ +static size_t dk_info_sz_msg = +sizeof(dk_info_kw_def)/sizeof(DK4_PDKCHAR) - 1; + + + +/** Number of elements in the options array. +*/ +static const size_t dk_info_sz_options = +sizeof(dk_info_options)/sizeof(dk4_option_specification_t); + + + +/** Application structure. +*/ +static dk4_app_t *app = NULL; + + + +/** Exit status code returned by the program. +*/ +static int exval = EXIT_FAILURE; + + + +static +void +show_one_directory(size_t ind, size_t maxl) +{ + const dkChar *val; + size_t lgt; + + val = dk4inst_get_directory(ind); + if (NULL != val) { + lgt = dk4str_len(option_names[ind]); + while (lgt++ < maxl) { dk4fputc(dkT(' '), stdout, NULL); } + dk4fputs(option_names[ind], stdout, NULL); + dk4fputs(val, stdout, NULL); + dk4fputc(dkT('\n'), stdout, NULL); + } +} + + + +static +void +show_one_used_directory(size_t ind, size_t maxl, const dkChar *dn) +{ + size_t lgt; + if (NULL != dn) { + lgt = dk4str_len(option_names[ind]); + while (lgt++ < maxl) { dk4fputc(dkT(' '), stdout, NULL); } + dk4fputs(option_names[ind], stdout, NULL); + dk4fputs(dn, stdout, NULL); + dk4fputc(dkT('\n'), stdout, NULL); + } +} + + + +/** Produce output. +*/ +static +void +dk_info_run_with_app(void) +{ + size_t i; + size_t maxl = 0; + size_t lgt; + + /* Find longest option name length. + */ + for (i = 0; i < 11; i++) { + lgt = dk4str_len(option_names[i]); + if (lgt > maxl) { maxl = lgt; } + } + + /* Show used values. + */ + dk4fputs(dk_info_kw_def[0], stdout, NULL); + dk4fputc(dkT('\n'), stdout, NULL); + dk4fputs(dk_info_kw_def[1], stdout, NULL); + dk4fputc(dkT('\n'), stdout, NULL); + show_one_used_directory(1, maxl, app->dir_etc); + show_one_used_directory(4, maxl, app->dir_bin); + show_one_used_directory(6, maxl, app->dir_lib); + show_one_used_directory(2, maxl, app->dir_share); + show_one_used_directory(3, maxl, app->dir_var); + dk4fputc(dkT('\n'), stdout, NULL); + + /* Show compiled values. + */ + dk4fputs(dk_info_kw_def[2], stdout, NULL); + dk4fputc(dkT('\n'), stdout, NULL); + dk4fputs(dk_info_kw_def[3], stdout, NULL); + dk4fputc(dkT('\n'), stdout, NULL); + for (i = 0; i < szoo; i++) { + lgt = option_order[i]; + show_one_directory(lgt, maxl); + } + + /* Show complete list of defines if required. + */ + if (0 != dk4app_opt_is_set_short(app, dkT('l'), NULL)) { + dk4fputc(dkT('\n'), stdout, NULL); + dk4fputs(dk_info_kw_def[4], stdout, NULL); + dk4fputc(dkT('\n'), stdout, NULL); + dk4fputs(dk_info_kw_def[5], stdout, NULL); + dk4fputc(dkT('\n'), stdout, NULL); + showdefines(); + } + +} + + + +/** Main function. + @param argc Number of command line arguments. + @param argv Command line arguments array. + @return 0 on success, all other values indicate errors. +*/ +#if DK4_CHAR_SIZE > 1 +int wmain(int argc, wchar_t *argv[]) +#else +int main(int argc, char *argv[]) +#endif +{ + + +#line 414 "dk4info.ctr" + + +#line 415 "dk4info.ctr" + + +#line 416 "dk4info.ctr" + + +#line 417 "dk4info.ctr" + dk4fput_initialize_stdout(); + dk4fput_initialize_stderr(); + app = dk4app_open_cmd( + argc, argv, dk_info_options, dk_info_sz_options, + dk_info_kwnl[0], DKT_VERSION_DK, + dk_info_kwnl[1], dk_info_help_text, dk_info_license_text + ); + if (NULL != app) { + dk_info_sz_msg = dk4app_string_table_size(dk_info_kw_def); + dk_info_msg = dk4app_string_table(app, dk_info_kwnl[2], dk_info_kw_def); + if (0 != dk4app_can_run_normally(app)) { + dk_info_run_with_app(); + } else { + if (0 != dk4app_help_version_license(app)) { + exval = EXIT_SUCCESS; + } + } + dk4app_close(app); + } + fflush(stdout); + fflush(stderr); + dk4fput_cleanup_stderr(); + dk4fput_cleanup_stdout(); + + +#line 441 "dk4info.ctr" + + +#line 442 "dk4info.ctr" + exit(exval); return exval; +} + |