mosquitto_sub and mosquitto_rr now open stdout in binary mode on Windows

This is so binary payloads are not modified when printing.

Thanks to Steve Mullock.
pull/2263/head
Roger A. Light 4 years ago
parent 5217863b8b
commit 6028d0e33e

@ -1,3 +1,10 @@
2.0.12 - 2021-07-xx
===================
Clients:
- mosquitto_sub and mosquitto_rr now open stdout in binary mode on Windows
so binary payloads are not modified when printing.
2.0.11 - 2021-06-08 2.0.11 - 2021-06-08
=================== ===================

@ -309,6 +309,7 @@ int main(int argc, char *argv[])
#endif #endif
mosquitto_lib_init(); mosquitto_lib_init();
output_init();
rc = client_config_load(&cfg, CLIENT_RR, argc, argv); rc = client_config_load(&cfg, CLIENT_RR, argc, argv);
if(rc){ if(rc){

@ -324,7 +324,7 @@ int main(int argc, char *argv[])
mosquitto_lib_init(); mosquitto_lib_init();
rand_init(); output_init();
rc = client_config_load(&cfg, CLIENT_SUB, argc, argv); rc = client_config_load(&cfg, CLIENT_SUB, argc, argv);
if(rc){ if(rc){

@ -21,6 +21,8 @@ Contributors:
#ifdef WIN32 #ifdef WIN32
/* For rand_s on Windows */ /* For rand_s on Windows */
# define _CRT_RAND_S # define _CRT_RAND_S
# include <fcntl.h>
# include <io.h>
#endif #endif
#include <assert.h> #include <assert.h>
@ -764,7 +766,7 @@ static void formatted_print(const struct mosq_config *lcfg, const struct mosquit
} }
void rand_init(void) void output_init(void)
{ {
#ifndef WIN32 #ifndef WIN32
struct tm *ti = NULL; struct tm *ti = NULL;
@ -773,6 +775,9 @@ void rand_init(void)
if(!get_time(&ti, &ns)){ if(!get_time(&ti, &ns)){
srandom((unsigned int)ns); srandom((unsigned int)ns);
} }
#else
/* Disable text translation so binary payloads aren't modified */
_setmode(_fileno(stdout), _O_BINARY);
#endif #endif
} }

@ -22,7 +22,7 @@ Contributors:
#include "mosquitto.h" #include "mosquitto.h"
#include "client_shared.h" #include "client_shared.h"
void rand_init(void); void output_init(void);
void print_message(struct mosq_config *cfg, const struct mosquitto_message *message, const mosquitto_property *properties); void print_message(struct mosq_config *cfg, const struct mosquitto_message *message, const mosquitto_property *properties);
#endif #endif

Loading…
Cancel
Save