diff --git a/beacon.c b/beacon.c index 1d0ca49..32e285f 100644 --- a/beacon.c +++ b/beacon.c @@ -761,12 +761,14 @@ static void beacon_send (int j, dwgps_info_t *gpsinfo) strlcat (super_comment, var_comment, sizeof(super_comment)); } else { - text_color_set(DW_COLOR_ERROR); - dw_printf ("xBEACON, config file line %d, COMMENTCMD failure.\n", g_misc_config_p->beacon[j].lineno); - } + if (k < 0 || !g_misc_config_p->beacon[j].ignore_empty_cmd_stdout) { + text_color_set(DW_COLOR_ERROR); + dw_printf ("xBEACON, config file line %d, COMMENTCMD failure.\n", g_misc_config_p->beacon[j].lineno); + } + strlcpy (super_comment, "", sizeof(super_comment)); /* abort */ + } } - /* * Add the info part depending on beacon type. */ @@ -882,9 +884,11 @@ static void beacon_send (int j, dwgps_info_t *gpsinfo) strlcat (beacon_text, info_part, sizeof(beacon_text)); } else { - text_color_set(DW_COLOR_ERROR); - dw_printf ("CBEACON, config file line %d, INFOCMD failure.\n", g_misc_config_p->beacon[j].lineno); - strlcpy (beacon_text, "", sizeof(beacon_text)); // abort! + if(k < 0 || !g_misc_config_p->beacon[j].ignore_empty_cmd_stdout) { + text_color_set(DW_COLOR_ERROR); + dw_printf ("CBEACON, config file line %d, INFOCMD failure.\n", g_misc_config_p->beacon[j].lineno); + } + strlcpy (beacon_text, "", sizeof(beacon_text)); // abort! } } else { diff --git a/config.c b/config.c index e358b14..f608a61 100644 --- a/config.c +++ b/config.c @@ -4379,6 +4379,9 @@ static int beacon_options(char *cmd, struct beacon_s *b, int line, struct audio_ else if (strcasecmp(keyword, "INFOCMD") == 0) { b->custom_infocmd = strdup(value); } + else if (strcasecmp(keyword, "IGNOREEMPTY") == 0) { + b->ignore_empty_cmd_stdout = atoi(value); + } else if (strcasecmp(keyword, "OBJNAME") == 0) { strlcpy(b->objname, value, sizeof(b->objname)); } diff --git a/config.h b/config.h index 1b3c602..8d2551d 100644 --- a/config.h +++ b/config.h @@ -145,7 +145,8 @@ struct misc_config_s { char *comment; /* Comment or NULL. */ char *commentcmd; /* Command to append more to Comment or NULL. */ - + int ignore_empty_cmd_stdout; /* Do not print an error when infocmd exits + with status 0, and no output is generated. */ } beacon[MAX_BEACONS]; };