summaryrefslogtreecommitdiff
path: root/support/dktools/dk4ftime08.ctr
blob: a9fb9cd83d0c855f1c23fafc0356d81f54191bd9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
%%	options

copyright owner	=	Dirk Krause
copyright year	=	2015-xxxx
SPDX-License-Identifier:	BSD-3-Clause



%%	module

#include "dk4conf.h"

#if	DK4_HAVE_ASSERT_H
#ifndef	ASSERT_H_INCLUDED
#include <assert.h>
#define	ASSERT_H_INCLUDED 1
#endif
#endif

#include "dk4ftime.h"

#ifndef DK4TIME08_H_INCLUDED
#include "dk4time08.h"
#endif



int
dk4filetime_to_text_c8(
  char			*dptr,
  size_t		 dsz,
  const dk4_file_time_t	*fit,
  dk4_er_t		*erp
)
{
#if DK4_ON_WINDOWS
  SYSTEMTIME	 st1;
  SYSTEMTIME	 st2;
  int		 back = 0;
#if	DK4_USE_ASSERT
  assert(NULL != dptr);
  assert(0 < dsz);
  assert(NULL != fit);
#endif
  if ((NULL != dptr) && (NULL != fit) && (0 < dsz)) {
    if (FileTimeToSystemTime(fit, &st1)) {
      if (SystemTimeToTzSpecificLocalTime(NULL, &st1, &st2)) {
        back = dk4time_to_text_c8(
	  dptr, dsz, DK4_TIMEFORMAT_DATE_TIME,
	  st2.wYear, st2.wMonth, st2.wDay,
	  st2.wHour, st2.wMinute, st2.wSecond,
	  erp
	);
      } else {
        /* Error: Conversion to local time failed */
	dk4error_set_simple_error_code(erp, DK4_E_BUG);
      }
    } else {
      /* Error: Time conversion failed */
      dk4error_set_simple_error_code(erp, DK4_E_BUG);
    }
  } else {
    dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS);
  }
  return back;
#else
#if	DK4_USE_ASSERT
  assert(NULL != dptr);
  assert(0 < dsz);
  assert(NULL != fit);
#endif
  return (dk4time_as_text_c8(dptr, dsz, fit, erp));
#endif
}