diff --git a/rigs/racal/ra37xx.c b/rigs/racal/ra37xx.c index baade0067..d2d313b77 100644 --- a/rigs/racal/ra37xx.c +++ b/rigs/racal/ra37xx.c @@ -81,7 +81,6 @@ static int ra37xx_one_transaction(RIG *rig, const char *cmd, char *data, struct rig_state *rs = &rig->state; char cmdbuf[BUFSZ]; char respbuf[BUFSZ]; - int cmd_len; int retval; int pkt_header_len; struct timeval tv; @@ -96,17 +95,17 @@ static int ra37xx_one_transaction(RIG *rig, const char *cmd, char *data, if (priv->receiver_id != -1) { pkt_header_len = 2; - cmd_len = sprintf(cmdbuf, SOM "%d%s" EOM, priv->receiver_id, cmd); + SNPRINTF(cmdbuf, sizeof(cmdbuf), SOM "%d%s" EOM, priv->receiver_id, cmd); } else { pkt_header_len = 1; - cmd_len = sprintf(cmdbuf, SOM "%s" EOM, cmd); + SNPRINTF(cmdbuf, sizeof(cmdbuf), SOM "%s" EOM, cmd); } rig_flush(&rs->rigport); - retval = write_block(&rs->rigport, (unsigned char *) cmdbuf, cmd_len); + retval = write_block(&rs->rigport, (unsigned char *) cmdbuf, strlen(cmdbuf)); if (retval != RIG_OK) { @@ -258,12 +257,10 @@ int ra37xx_cleanup(RIG *rig) return RIG_OK; } - - /* * Assumes rig!=NULL, rig->state.priv!=NULL */ -int ra37xx_set_conf(RIG *rig, token_t token, const char *val) +int ra37xx_set_conf2(RIG *rig, token_t token, const char *val, int val_len) { struct ra37xx_priv_data *priv = (struct ra37xx_priv_data *)rig->state.priv; int receiver_id; @@ -288,19 +285,24 @@ int ra37xx_set_conf(RIG *rig, token_t token, const char *val) return RIG_OK; } +int ra37xx_set_conf(RIG *rig, token_t token, const char *val) +{ + return ra37xx_set_conf2(rig, token, val, 128); +} + /* * assumes rig!=NULL, * Assumes rig!=NULL, rig->state.priv!=NULL * and val points to a buffer big enough to hold the conf value. */ -int ra37xx_get_conf(RIG *rig, token_t token, char *val) +int ra37xx_get_conf2(RIG *rig, token_t token, char *val, int val_len) { struct ra37xx_priv_data *priv = (struct ra37xx_priv_data *)rig->state.priv; switch (token) { case TOK_RIGID: - sprintf(val, "%d", priv->receiver_id); + SNPRINTF(val, val_len, "%d", priv->receiver_id); break; default: @@ -339,14 +341,8 @@ int ra37xx_close(RIG *rig) int ra37xx_set_freq(RIG *rig, vfo_t vfo, freq_t freq) { char freqbuf[BUFSZ]; - int freq_len; - freq_len = sprintf(freqbuf, "F%lu", (unsigned long)freq); - - if (freq_len < 0) - { - return -RIG_ETRUNC; - } + SNPRINTF(freqbuf, sizeof(freqbuf), "F%lu", (unsigned long)freq); return ra37xx_transaction(rig, freqbuf, NULL, NULL); } @@ -417,9 +413,9 @@ int ra37xx_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width) #endif #ifdef XXREMOVEDXX - sprintf(buf, "M%d;B%d,%d", ra_mode, widthtype, widthnum); + SNPRINTF(buf, sizeof(buf), "M%d;B%d,%d", ra_mode, widthtype, widthnum); #else - sprintf(buf, "M%d", ra_mode); + SNPRINTF(buf, sizeof(buf), "M%d", ra_mode); #endif return ra37xx_transaction(rig, buf, NULL, NULL); @@ -473,7 +469,7 @@ int ra37xx_get_mode(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width) /* FIXME */ widthnum = 0; - sprintf(buf, "QBCON%d,%d", widthtype, widthnum); + SNPRINTF(buf, sizeof(buf), "QBCON%d,%d", widthtype, widthnum); retval = ra37xx_transaction(rig, buf, resbuf, &len); if (retval != RIG_OK) @@ -494,7 +490,7 @@ int ra37xx_set_func(RIG *rig, vfo_t vfo, setting_t func, int status) switch (func) { case RIG_FUNC_MUTE: - sprintf(cmdbuf, "MUTE%d", status ? 1 : 0); + SNPRINTF(cmdbuf, sizeof(cmdbuf), "MUTE%d", status ? 1 : 0); break; default: @@ -546,23 +542,23 @@ int ra37xx_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val) switch (level) { case RIG_LEVEL_AF: - sprintf(cmdbuf, "AFL%d", (int)(val.f * 255)); + SNPRINTF(cmdbuf, sizeof(cmdbuf), "AFL%d", (int)(val.f * 255)); break; case RIG_LEVEL_PREAMP: - sprintf(cmdbuf, "RFAMP%d", val.i ? 1 : 0); + SNPRINTF(cmdbuf, sizeof(cmdbuf), "RFAMP%d", val.i ? 1 : 0); break; case RIG_LEVEL_CWPITCH: /* BFO */ - sprintf(cmdbuf, "BFO%d", val.i); + SNPRINTF(cmdbuf, sizeof(cmdbuf), "BFO%d", val.i); break; case RIG_LEVEL_SQL: - sprintf(cmdbuf, "CORL%d", (int)(val.f * 255)); + SNPRINTF(cmdbuf, sizeof(cmdbuf), "CORL%d", (int)(val.f * 255)); break; case RIG_LEVEL_RF: - sprintf(cmdbuf, "G%d", (int)(val.f * 255)); + SNPRINTF(cmdbuf, sizeof(cmdbuf), "G%d", (int)(val.f * 255)); break; case RIG_LEVEL_AGC: @@ -579,7 +575,7 @@ int ra37xx_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val) default: return -RIG_EINVAL; } - sprintf(cmdbuf, "AGC%d,%d", val.i == RIG_AGC_USER ? 1 : 0, agc); + SNPRINTF(cmdbuf, sizeof(cmdbuf), "AGC%d,%d", val.i == RIG_AGC_USER ? 1 : 0, agc); break; default: @@ -748,7 +744,7 @@ int ra37xx_set_ant(RIG *rig, vfo_t vfo, ant_t ant, value_t option) return -RIG_EINVAL; } - sprintf(buf, "ANT%d", i_ant); + SNPRINTF(buf, sizeof(buf), "ANT%d", i_ant); return ra37xx_transaction(rig, buf, NULL, NULL); } @@ -787,7 +783,7 @@ int ra37xx_set_mem(RIG *rig, vfo_t vfo, int ch) /* NB: does a RIG_OP_TO_VFO!*/ - sprintf(buf, "CHAN%d", ch); + SNPRINTF(buf, sizeof(buf), "CHAN%d", ch); return ra37xx_transaction(rig, buf, NULL, NULL); } @@ -827,7 +823,7 @@ int ra37xx_scan(RIG *rig, vfo_t vfo, scan_t scan, int ch) return -RIG_EINVAL; } - sprintf(buf, "SCAN%d,0", scantype); + SNPRINTF(buf, sizeof(buf), "SCAN%d,0", scantype); return ra37xx_transaction(rig, buf, NULL, NULL); } @@ -847,7 +843,7 @@ int ra37xx_vfo_op(RIG *rig, vfo_t vfo, vfo_op_t op) return ret; } - sprintf(buf, "STRE%d", ch); + SNPRINTF(buf, sizeof(buf), "STRE%d", ch); return ra37xx_transaction(rig, buf, NULL, NULL); case RIG_OP_TO_VFO: @@ -858,7 +854,7 @@ int ra37xx_vfo_op(RIG *rig, vfo_t vfo, vfo_op_t op) return ret; } - sprintf(buf, "CHAN%d", ch); + SNPRINTF(buf, sizeof(buf), "CHAN%d", ch); return ra37xx_transaction(rig, buf, NULL, NULL); default: diff --git a/rigs/racal/racal.c b/rigs/racal/racal.c index ddb2d18ad..6c4888cb4 100644 --- a/rigs/racal/racal.c +++ b/rigs/racal/racal.c @@ -79,14 +79,13 @@ static int racal_transaction(RIG *rig, const char *cmd, char *data, struct racal_priv_data *priv = (struct racal_priv_data *)rig->state.priv; struct rig_state *rs = &rig->state; char cmdbuf[BUFSZ + 1]; - int cmd_len; int retval; - cmd_len = sprintf(cmdbuf, SOM "%u%s" EOM, priv->receiver_id, cmd); + SNPRINTF(cmdbuf, sizeof(cmdbuf), SOM "%u%s" EOM, priv->receiver_id, cmd); rig_flush(&rs->rigport); - retval = write_block(&rs->rigport, (unsigned char *) cmdbuf, cmd_len); + retval = write_block(&rs->rigport, (unsigned char *) cmdbuf, strlen(cmdbuf)); if (retval != RIG_OK) { @@ -192,14 +191,14 @@ int racal_set_conf(RIG *rig, token_t token, const char *val) * Assumes rig!=NULL, rig->state.priv!=NULL * and val points to a buffer big enough to hold the conf value. */ -int racal_get_conf(RIG *rig, token_t token, char *val) +int racal_get_conf2(RIG *rig, token_t token, char *val, int val_len) { struct racal_priv_data *priv = (struct racal_priv_data *)rig->state.priv; switch (token) { case TOK_RIGID: - sprintf(val, "%u", priv->receiver_id); + SNPRINTF(val, val_len, "%u", priv->receiver_id); break; default: @@ -209,6 +208,11 @@ int racal_get_conf(RIG *rig, token_t token, char *val) return RIG_OK; } +int racal_get_conf(RIG *rig, token_t token, char *val) +{ + return racal_get_conf2(rig, token, val, 128); +} + /* * racal_open * Assumes rig!=NULL @@ -242,14 +246,8 @@ int racal_close(RIG *rig) int racal_set_freq(RIG *rig, vfo_t vfo, freq_t freq) { char freqbuf[BUFSZ]; - int freq_len; - freq_len = sprintf(freqbuf, "F%0g", (double)(freq / MHz(1))); - - if (freq_len < 0) - { - return -RIG_ETRUNC; - } + SNPRINTF(freqbuf, sizeof(freqbuf), "F%0g", (double)(freq / MHz(1))); return racal_transaction(rig, freqbuf, NULL, NULL); } @@ -315,11 +313,11 @@ int racal_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width) width = rig_passband_normal(rig, mode); } - sprintf(buf, "D%dI%.0f", ra_mode, (double)(width / kHz(1))); + SNPRINTF(buf, sizeof(buf), "D%dI%.0f", ra_mode, (double)(width / kHz(1))); } else { - sprintf(buf, "D%d", ra_mode); + SNPRINTF(buf, sizeof(buf), "D%d", ra_mode); } return racal_transaction(rig, buf, NULL, NULL); @@ -388,12 +386,12 @@ int racal_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val) { case RIG_LEVEL_RF: /* Manually set threshold */ - sprintf(cmdbuf, "A%d", (int)(val.f * 120)); + SNPRINTF(cmdbuf, sizeof(cmdbuf), "A%d", (int)(val.f * 120)); priv->threshold = val.f; break; case RIG_LEVEL_IF: - sprintf(cmdbuf, "B%+0g", ((double)val.i) / kHz(1)); + SNPRINTF(cmdbuf, sizeof(cmdbuf), "B%+0g", ((double)val.i) / kHz(1)); priv->bfo = val.i; break; @@ -416,7 +414,7 @@ int racal_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val) agc += 4; /* with manually set threshold */ } - sprintf(cmdbuf, "M%d", agc); + SNPRINTF(cmdbuf, sizeof(cmdbuf), "M%d", agc); break; default: @@ -564,7 +562,7 @@ const char *racal_get_info(RIG *rig) strcpy(filterbuf, "IO error"); } - sprintf(infobuf, "BITE errors: %s, Filters: %s\n", + SNPRINTF(infobuf, sizeof(infobuf), "BITE errors: %s, Filters: %s\n", bitebuf + 1, filterbuf); return infobuf;