88
99#include " ../../include/debug.h"
1010
11- char * ape_timezone = NULL ;
12-
1311void rs232ApeTime::_rs232_get_time (bool use_timezone)
1412{
1513 char old_tz[64 ];
@@ -24,16 +22,16 @@ void rs232ApeTime::_rs232_get_time(bool use_timezone)
2422
2523 time_t tt = time (nullptr );
2624
27- if (ape_timezone != NULL && use_timezone) {
25+ if (ape_timezone. size () && use_timezone) {
2826 Debug_printf (" Using time zone %s\n " , ape_timezone);
2927 strncpy (old_tz, getenv (" TZ" ), sizeof (old_tz));
30- setenv (" TZ" , ape_timezone, 1 );
28+ setenv (" TZ" , ape_timezone. c_str () , 1 );
3129 tzset ();
3230 }
3331
3432 struct tm * now = localtime (&tt);
3533
36- if (ape_timezone != NULL && use_timezone) {
34+ if (ape_timezone. size () && use_timezone) {
3735 setenv (" TZ" , old_tz, 1 );
3836 tzset ();
3937 }
@@ -53,35 +51,16 @@ void rs232ApeTime::_rs232_get_time(bool use_timezone)
5351 bus_to_computer (rs232_reply, sizeof (rs232_reply), false );
5452}
5553
56- void rs232ApeTime::_rs232_set_tz ()
54+ void rs232ApeTime::_rs232_set_tz (std::string newTZ )
5755{
58- int bufsz;
59-
60- Debug_println (" APETIME set TZ request" );
61-
62- if (ape_timezone != NULL ) {
63- free (ape_timezone);
56+ if (newTZ.size ())
57+ {
58+ ape_timezone = newTZ;
59+ Debug_printf (" TZ set to <%s>\n " , ape_timezone.c_str ());
6460 }
65-
66- #ifdef OBSOLETE
67- bufsz = rs232_get_aux16_lo ();
68- #endif /* OBSOLETE */
69- if (bufsz > 0 ) {
70- ape_timezone = (char *) malloc ((bufsz + 1 ) * sizeof (char ));
71-
72- uint8_t ck = bus_to_peripheral ((uint8_t *) ape_timezone, bufsz);
73- if (rs232_checksum ((uint8_t *) ape_timezone, bufsz) != ck) {
74- rs232_error ();
75- } else {
76- ape_timezone[bufsz] = ' \0 ' ;
77-
78- rs232_complete ();
79-
80- Debug_printf (" TZ set to <%s>\n " , ape_timezone);
81- }
82- } else {
61+ else
8362 Debug_printf (" TZ unset\n " );
84- }
63+ return ;
8564}
8665
8766void rs232ApeTime::rs232_process (FujiBusPacket &packet)
@@ -94,7 +73,7 @@ void rs232ApeTime::rs232_process(FujiBusPacket &packet)
9473 break ;
9574 case FUJICMD_SETTZ:
9675 rs232_ack ();
97- _rs232_set_tz ();
76+ _rs232_set_tz (packet. data (). value_or ( " " ) );
9877 break ;
9978 case FUJICMD_GETTZTIME:
10079 rs232_ack ();
0 commit comments