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/dk4time08.ctr | |
parent | fdb18507cd80dc17f5a5256153d34668b4f4e61c (diff) |
CTAN sync 202010120303
Diffstat (limited to 'support/dktools/dk4time08.ctr')
-rw-r--r-- | support/dktools/dk4time08.ctr | 427 |
1 files changed, 0 insertions, 427 deletions
diff --git a/support/dktools/dk4time08.ctr b/support/dktools/dk4time08.ctr deleted file mode 100644 index 6abffd9f12..0000000000 --- a/support/dktools/dk4time08.ctr +++ /dev/null @@ -1,427 +0,0 @@ -%% options - -copyright owner = Dirk Krause -copyright year = 2015-xxxx -SPDX-License-Identifier: BSD-3-Clause - - -%% header - -/** @file - Convert timestamp to char string, timestamp either given as set - of components (year, month, day, hour, minute, second), as - pointer to struct tm or as dk4_time_t value. - - CRT on Windows: Optional. -*/ - -#ifndef DK4CONF_H_INCLUDED -#if DK4_BUILDING_DKTOOLS4 -#include "dk4conf.h" -#else -#include <dktools-4/dk4conf.h> -#endif -#endif - -#ifndef DK4TYPES_H_INCLUDED -#if DK4_BUILDING_DKTOOLS4 -#include "dk4types.h" -#else -#include <dktools-4/dk4types.h> -#endif -#endif - -#ifndef DK4ERROR_H_INCLUDED -#if DK4_BUILDING_DKTOOLS4 -#include "dk4error.h" -#else -#include <dktools-4/dk4error.h> -#endif -#endif - -#ifndef DK4TIME_H_INCLUDED -#if DK4_BUILDING_DKTOOLS4 -#include "dk4time.h" -#else -#include <dktools-4/dk4time.h> -#endif -#endif - -#ifndef DK4TIMEC_H_INCLUDED -#if DK4_BUILDING_DKTOOLS4 -#include "dk4timec.h" -#else -#include <dktools-4/dk4timec.h> -#endif -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -/** Convert timestamp to char string. - CRT on Windows: Optional. - @param dptr Destination buffer address. - @param dsz Destination buffer size (number of char). - @param format Output format: - DK4_TIMEFORMAT_DATE_TIME for sortable date/time - combination - yyyy-mm-dd hh:mm:ss - (default), - DK4_TIMEFORMAT_DATE_SORTABLE for sortable date - yyyy-mm-dd, - DK4_TIMEFORMAT_DATE_ENGLISH for English style date - mm/dd/yyyy, - DK4_TIMEFORMAT_DATE_GERMAN for German style date - dd.mm.yyyy. - @param year Year. - @param month Month (1 to 12). - @param mday Day within month (1 to 31). - @param hour Hour of day (0 to 23). - @param min Minute within hour (0 to 59). - @param sec Second within minute (0 to 59). - @param erp Error report, may be NULL. - @return 1 on success, 0 on error. - - Error codes: - - DK4_E_INVALID_ARGUMENTS<br> - if dptr is NULL or dsz is 0, - - DK4_E_BUFFER_TOO_SMALL<br> - if the buffer is too small. - -*/ -int -dk4time_to_text_c8( - char *dptr, - size_t dsz, - int format, - unsigned short year, - unsigned short month, - unsigned short mday, - unsigned short hour, - unsigned short min, - unsigned short sec, - dk4_er_t *erp -); - -/** Create text representation for a struct tm. - CRT on Windows: Required. - @param dptr Destination buffer address. - @param dsz Destination buffer size (number of wchar_t). - @param tm Struct to convert. - @param erp Error report, may be NULL. - @return 1 on success, 0 on error. - - Error codes: - - DK4_E_INVALID_ARGUMENTS<br> - if dptr is NULL or dsz is 0, - - DK4_E_BUFFER_TOO_SMALL<br> - if the buffer is too small. -*/ -int -dk4time_convert_to_text_c8( - char *dptr, size_t dsz, const struct tm *tm, dk4_er_t *erp -); - -/** Create text representation for timestamp. - CRT on Windows: Required. - @param dptr Destination buffer address. - @param dsz Destination buffer size. - @param timer Timestamp to convert. - @param erp Error report, may be NULL. - @return 1 on success, 0 on error. - - Error codes: - - DK4_E_INVALID_ARGUMENTS<br> - if dptr is NULL or dsz is 0, - - DK4_E_BUG<br> - if an internal conversion function fails, - - DK4_E_BUFFER_TOO_SMALL<br> - if the buffer is too small. -*/ -int -dk4time_as_text_c8( - char *dptr, size_t dsz, const dk4_time_t *timer, dk4_er_t *erp -); - -#ifdef __cplusplus -} -#endif - -%% module - -#include "dk4conf.h" - -#if DK4_HAVE_ASSERT_H -#ifndef ASSERT_H_INCLUDED -#include <assert.h> -#define ASSERT_H_INCLUDED 1 -#endif -#endif - -#include "dk4time08.h" - -#ifndef DK4STR8_H_INCLUDED -#include "dk4str8.h" -#endif - -#ifndef DK4MAO8D_H_INCLUDED -#include "dk4mao8d.h" -#endif - - - -$!trace-include - - - -/** Constant text strings used by this module. -*/ -static const char * const dk4time08_kw[] = { -$!string-table -0 -- -/ -. - -: -$!end -}; - - - -int -dk4time_to_text_c8( - char *dptr, - size_t dsz, - int format, - unsigned short year, - unsigned short month, - unsigned short mday, - unsigned short hour, - unsigned short min, - unsigned short sec, - dk4_er_t *erp -) -{ - char bye[8]; - char bmo[8]; - char bda[8]; - char bho[8]; - char bmi[8]; - char bse[8]; - int res; - int back = 0; -#if DK4_USE_ASSERT - assert(NULL != dptr); - assert(0 < dsz); -#endif - if ((NULL != dptr) && (0 < dsz)) { - back = 1; - res = dk4ma_write_c8_decimal_unsigned( - bye, sizeof(bye), (dk4_um_t)year, 4, erp - ); - if (0 == res) { back = 0; } - res = dk4ma_write_c8_decimal_unsigned( - bmo, sizeof(bmo), (dk4_um_t)month, 2, erp - ); - if (0 == res) { back = 0; } - res = dk4ma_write_c8_decimal_unsigned( - bda, sizeof(bda), (dk4_um_t)mday, 2, erp - ); - if (0 == res) { back = 0; } - if (DK4_TIMEFORMAT_DATE_SORTABLE != format) { - if (DK4_TIMEFORMAT_DATE_ENGLISH != format) { - if (DK4_TIMEFORMAT_DATE_GERMAN != format) { - res = dk4ma_write_c8_decimal_unsigned( - bho, sizeof(bho), (dk4_um_t)hour, 2, erp - ); - if (0 == res) { back = 0; } - res = dk4ma_write_c8_decimal_unsigned( - bmi, sizeof(bmi), (dk4_um_t)min, 2, erp - ); - if (0 == res) { back = 0; } - res = dk4ma_write_c8_decimal_unsigned( - bse, sizeof(bse), (dk4_um_t)sec, 2, erp - ); - if (0 == res) { back = 0; } - } - } - } - if (0 != back) { - back = 0; - switch (format) { - case DK4_TIMEFORMAT_DATE_ENGLISH: { - if (0 != dk4str8_cpy_s(dptr, dsz, bmo, erp)) { - if (0 != dk4str8_cat_s(dptr, dsz, dk4time08_kw[2], erp)) { - if (0 != dk4str8_cat_s(dptr, dsz, bda, erp)) { - if (0 != dk4str8_cat_s(dptr, dsz, dk4time08_kw[2], erp)) { - if (0 != dk4str8_cat_s(dptr, dsz, bye, erp)) { - back = 1; - } - } - } - } - } - } break; - case DK4_TIMEFORMAT_DATE_GERMAN: { - if (0 != dk4str8_cpy_s(dptr, dsz, bda, erp)) { - if (0 != dk4str8_cat_s(dptr, dsz, dk4time08_kw[3], erp)) { - if (0 != dk4str8_cat_s(dptr, dsz, bmo, erp)) { - if (0 != dk4str8_cat_s(dptr, dsz, dk4time08_kw[3], erp)) { - if (0 != dk4str8_cat_s(dptr, dsz, bye, erp)) { - back = 1; - } - } - } - } - } - } break; - default: { - /* yyyy-mm-dd */ - if (0 != dk4str8_cpy_s(dptr, dsz, bye, erp)) { - if (0 != dk4str8_cat_s(dptr, dsz, dk4time08_kw[1], erp)) { - if (0 != dk4str8_cat_s(dptr, dsz, bmo, erp)) { - if (0 != dk4str8_cat_s(dptr, dsz, dk4time08_kw[1], erp)) { - if (0 != dk4str8_cat_s(dptr, dsz, bda, erp)) { - back = 1; - } - } - } - } - } - if ((0 != back) && (DK4_TIMEFORMAT_DATE_SORTABLE != format)) { - back = 0; - if (0 != dk4str8_cat_s(dptr, dsz, dk4time08_kw[4], erp)) { - if (0 != dk4str8_cat_s(dptr, dsz, bho, erp)) { - if (0 != dk4str8_cat_s(dptr, dsz, dk4time08_kw[5], erp)) { - if (0 != dk4str8_cat_s(dptr, dsz, bmi, erp)) { - if (0 != dk4str8_cat_s(dptr, dsz, dk4time08_kw[5], erp)) { - if (0 != dk4str8_cat_s(dptr, dsz, bse, erp)) { - back = 1; - } - } - } - } - } - } - } - } break; - } - } - } else { - dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); - } - return back; -} - - - -int -dk4time_convert_to_text_c8( - char *dptr, size_t dsz, const struct tm *tm, dk4_er_t *erp -) -{ - int back = 0; -#if DK4_USE_ASSERT - assert(NULL != dptr); - assert(0 < dsz); - assert(NULL != tm); -#endif - if ((NULL != dptr) && (0 < dsz)) { - *dptr = '\0'; - if (NULL != tm) { - back = dk4time_to_text_c8( - dptr, dsz, DK4_TIMEFORMAT_DATE_TIME, - (unsigned short)(1900 + tm->tm_year), - (unsigned short)(1 + tm->tm_mon), - (unsigned short)(tm->tm_mday), - (unsigned short)(tm->tm_hour), - (unsigned short)(tm->tm_min), - (unsigned short)(tm->tm_sec), - erp - ); - } else { - dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); - } - } else { - dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); - } - return back; -} - - - -static -int -dk4time_i_as_text_c8( - char *dptr, size_t dsz, const dk4_time_t *timer, dk4_er_t *erp -) -{ -#if DK4_ON_WINDOWS - /* +++ Windows */ - struct tm lct; - int back = 0; -#if DK4_USE_ASSERT - assert(NULL != dptr); - assert(0 < dsz); - assert(NULL != timer); -#endif - if (0 == _localtime64_s(&lct, timer)) { - back = dk4time_convert_to_text_c8(dptr, dsz, &lct, erp); - } else { - dk4error_set_simple_error_code(erp, DK4_E_BUG); - } - return back; - /* --- Windows */ -#else - /* +++ non-Windows */ -#if DK4_HAVE_LOCALTIME_R - struct tm lct; - int back = 0; -#if DK4_USE_ASSERT - assert(NULL != dptr); - assert(0 < dsz); - assert(NULL != timer); -#endif - if (NULL != localtime_r(timer, &lct)) { - back = dk4time_convert_to_text_c8(dptr, dsz, &lct, erp); - } else { - dk4error_set_simple_error_code(erp, DK4_E_BUG); - } - return back; -#else - dk4error_set_simple_error_code(erp, DK4_E_NOT_SUPPORTED); - return 0; -#endif - /* --- non-Windows */ -#endif -} - - - -int -dk4time_as_text_c8( - char *dptr, size_t dsz, const dk4_time_t *timer, dk4_er_t *erp -) -{ - int back = 0; -#if DK4_USE_ASSERT - assert(NULL != dptr); - assert(0 < dsz); - assert(NULL != timer); -#endif - if ((NULL != dptr) && (0 < dsz)) { - *dptr = '\0'; - if (NULL != timer) { - back = dk4time_i_as_text_c8(dptr, dsz, timer, erp); - } else { - dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); - } - } else { - dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); - } - return back; -} - - |