summaryrefslogtreecommitdiff
path: root/support/dktools/dk4time08.ctr
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2020-10-12 03:04:00 +0000
committerNorbert Preining <norbert@preining.info>2020-10-12 03:04:00 +0000
commit0ce40abb18ec02ec6fd6bcc5f21612c88daa7578 (patch)
tree416289fe1448873fd8ca33051f50ad85bffa8aaa /support/dktools/dk4time08.ctr
parentfdb18507cd80dc17f5a5256153d34668b4f4e61c (diff)
CTAN sync 202010120303
Diffstat (limited to 'support/dktools/dk4time08.ctr')
-rw-r--r--support/dktools/dk4time08.ctr427
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;
-}
-
-