diff options
author | Norbert Preining <norbert@preining.info> | 2020-10-12 03:04:00 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2020-10-12 03:04:00 +0000 |
commit | 0ce40abb18ec02ec6fd6bcc5f21612c88daa7578 (patch) | |
tree | 416289fe1448873fd8ca33051f50ad85bffa8aaa /support/dktools/dk4apphlv.ctr | |
parent | fdb18507cd80dc17f5a5256153d34668b4f4e61c (diff) |
CTAN sync 202010120303
Diffstat (limited to 'support/dktools/dk4apphlv.ctr')
-rw-r--r-- | support/dktools/dk4apphlv.ctr | 267 |
1 files changed, 0 insertions, 267 deletions
diff --git a/support/dktools/dk4apphlv.ctr b/support/dktools/dk4apphlv.ctr deleted file mode 100644 index c66da8202e..0000000000 --- a/support/dktools/dk4apphlv.ctr +++ /dev/null @@ -1,267 +0,0 @@ -%% options - -copyright owner = Dirk Krause -copyright year = 2015-xxxx -SPDX-License-Identifier: BSD-3-Clause - - - -%% module - -#include "dk4conf.h" -#include "dk4types.h" -#include "dk4mpl.h" -#include "dk4app.h" -#include "dk4fs.h" -#include "dk4tspdk.h" -#include "dk4fput.h" -#include "dk4mem.h" -#include "dk4strm.h" -#include "dk4strmr.h" -#include "dk4enc.h" -#include "dk4const.h" -#include "dk4unused.h" - -#if DK4_HAVE_ASSERT_H -#ifndef ASSERT_H_INCLUDED -#include <assert.h> -#define ASSERT_H_INCLUDED 1 -#endif -#endif - - -$!trace-include - - - -int -dk4app_can_run_normally(dk4_app_t const *app) -{ - int back = 0; - if (NULL != app) { - back = 1; - if (0 != app->hvl_cmd) { - back = 0; - } - } - return back; -} - - - -/** Show all strings in a text array, line by line. - CRT on Windows: Required. - @param array Array containing texts to show. -*/ -static -void -dk4app_show_text_array(const dkChar * const *array) -{ - while(*array) { - dk4fputs(*(array++), stdout, NULL); - dk4fputc(dkT('\n'), stdout, NULL); - } -} - - - -/** Object used to show help. -*/ -typedef struct { - FILE *outfile; /**< Output file. */ -} dk4_help_shower_t; - - - -/** Handler function for single characters. - CRT on Windows: Required. - @param obj Object to modify while processing the character. - @param c Character to process. - @param pos Current position in file or data stream. - @param erp Error report, may be NULL. - @return DK4_TSP_RES_OK if the character was processed - successfully, - DK4_TSP_RES_ERROR if there was an error but we can - continue, - DK4_TSP_RES_FATAL if there was a fatal error so we - should abort processing. -*/ -static -int -dk4app_help_show_char_handler( - void *obj, - dkChar c, - dk4_text_stream_position_t * DK4_ARG_UNUSED(pos), - dk4_er_t * DK4_ARG_UNUSED(erp) -) -{ - dk4_help_shower_t *helpshow; - - DK4_UNUSED_ARG(pos) - DK4_UNUSED_ARG(erp) - if (dkT('\r') != c) { - helpshow = (dk4_help_shower_t *)obj; - dk4fputc(c, helpshow->outfile, NULL); - if (dkT('\n') == c) { - fflush(helpshow->outfile); - } - } - return (DK4_TSP_RES_OK); -} - - - -/** Show short built-in help text. - CRT on Windows: Required. - @param app Application structure. -*/ -static -void -dk4app_show_help(dk4_app_t const *app) -{ - const dkChar * const *ptr; - -#if DK4_USE_ASSERT - assert(NULL != app); -#endif - if (NULL != app->help_text) { - ptr = app->help_text; - if (0 != (DK4_APP_CMD_ERROR & (app->hvl_cmd))) { - dk4fput_initialize_stderr(); - } else { - dk4fput_initialize_stdout(); - } - while (NULL != *ptr) { - dk4fputs( - *(ptr++), - ((DK4_APP_CMD_ERROR & (app->hvl_cmd)) ? stderr : stdout), - NULL - ); - dk4fputc( - dkT('\n'), - ((DK4_APP_CMD_ERROR & (app->hvl_cmd)) ? stderr : stdout), - NULL - ); - } - } -} - - - -/** Show help text (full manual if available, short help text otherwise). - CRT on Windows: Required. - @param app Application structure. -*/ -static -void -dk4app_show_manual(dk4_app_t *app) -{ - unsigned char inb[4096]; - dkChar fnb[DK4_MAX_PATH]; - dk4_tspdk_t tspdk; - dk4_stream_t *istrm; - dk4_help_shower_t helpshow; - size_t sz; - int res; - int done = 0; - -#if DK4_USE_ASSERT - assert(NULL != app); -#endif - if (NULL != app->help_file_name) { - res = dk4app_search_data_file( - fnb, DK4_SIZEOF(fnb,dkChar), app, app->help_file_name, - DK4_FS_DATA_MAX_SYS, 1, NULL - ); - if (0 != res) { - istrm = dk4stream_open_file_reader(fnb, NULL); - if (NULL != istrm) { - if (0 != (DK4_APP_CMD_ERROR & (app->hvl_cmd))) { - dk4fput_initialize_stderr(); - helpshow.outfile = stderr; - } else { - dk4fput_initialize_stdout(); - helpshow.outfile = stdout; - } - res = dk4tspdk_setup_char( - &tspdk, (void *)(&helpshow), dk4app_help_show_char_handler, - app->encoding, DK4_FILE_ENCODING_UTF8, NULL - ); - if (0 != res) { - do { - sz = sizeof(inb); - if (0 < dk4stream_read(inb, &sz, istrm, NULL)) { - if (0 < sz) { - (void)dk4tspdk_add_bytes(&tspdk, inb, sz); - done = 1; - } - } else { - sz = 0; - } - } while (0 < sz); - (void)dk4tspdk_finish(&tspdk); - } - dk4stream_close(istrm, NULL); - } - } - } - if (0 == done) { - dk4app_show_help(app); - } -} - - - -int -dk4app_help_version_license(dk4_app_t *app) -{ - int back = 0; -#if DK4_USE_ASSERT - assert(NULL != app); -#endif - - if (NULL != app) { - back = 1; - if (0 != app->hvl_cmd) { - if (DK4_APP_CMD_ERROR & (app->hvl_cmd)) { - dk4app_show_manual(app); - back = 0; - } else { - switch (app->hvl_cmd) { - case DK4_APP_CMD_MANUAL: { - dk4app_show_manual(app); - } break; - case DK4_APP_CMD_HELP: { - dk4app_show_help(app); - } break; - case DK4_APP_CMD_VERSION: { - if (NULL != app->vers_text) { - dk4fput_initialize_stdout(); - dk4fputs(app->vers_text, stdout, NULL); - dk4fputc(dkT('\n'), stdout, NULL); - } - } break; - case DK4_APP_CMD_LICENSE: { - if (NULL != app->lic_text) { - dk4fput_initialize_stdout(); - dk4app_show_text_array(app->lic_text); - } - } break; - default: { - /* ERROR: --help, --version, --license mutually exclusive! */ - dk4app_log_base1(app, DK4_LL_ERROR, 81); - app->hvl_cmd |= DK4_APP_CMD_ERROR; - dk4app_show_manual(app); - back = 0; - } break; - } - } - } else { - /* BUG: None of the options found in command line */ - back = 0; - } - } - return back; -} - - |