@@ -1046,16 +1046,35 @@ show_archive_json(const char *instance_name, uint32 xlog_seg_size,
1046
1046
appendPQExpBuffer (buf ,"%lu" ,tlinfo -> size );
1047
1047
1048
1048
json_add_key (buf ,"zratio" ,json_level );
1049
+
1049
1050
// forcing comma-based floating point representation
1050
- locale_t newloc = newlocale (LC_NUMERIC_MASK ,"POSIX" , (locale_t )0 );
1051
- locale_t saveloc = uselocale (newloc );
1051
+ locale_t saveloc ;
1052
+ #ifdef HAVE_USELOCALE
1053
+ locale_t newloc = newlocale (LC_NUMERIC_MASK ,"C" , (locale_t )0 );
1054
+ saveloc = uselocale (newloc );
1055
+ #else
1056
+ #ifdef HAVE__CONFIGTHREADLOCALE
1057
+ locale_t oldthreadlocale = _configthreadlocale (_ENABLE_PER_THREAD_LOCALE );
1058
+ #endif
1059
+ saveloc = setlocale (LC_NUMERIC ,NULL );
1060
+ setlocale (LC_NUMERIC ,"C" );
1061
+ #endif
1052
1062
if (tlinfo -> size != 0 )
1053
1063
zratio = ((float )xlog_seg_size * tlinfo -> n_xlog_files ) /tlinfo -> size ;
1054
1064
appendPQExpBuffer (buf ,"%.2f" ,zratio );
1065
+
1055
1066
// restoring previous locale
1067
+ #ifdef HAVE_USELOCALE
1056
1068
if (saveloc != (locale_t )0 )
1057
1069
uselocale (saveloc );
1058
1070
freelocale (newloc );
1071
+ #else
1072
+ setlocale (LC_NUMERIC ,saveloc );
1073
+ #ifdef HAVE__CONFIGTHREADLOCALE
1074
+ if (oldthreadlocale != -1 )
1075
+ _configthreadlocale (oldthreadlocale );
1076
+ #endif
1077
+ #endif
1059
1078
1060
1079
if (tlinfo -> closest_backup != NULL )
1061
1080
snprintf (tmp_buf ,lengthof (tmp_buf ),"%s" ,