static int handle_reply (rr_dev dev, const char *reply, size_t nbytes, size_t term_bytes) { if (dev->opt_log_cb) dev->opt_log_cb (dev, RR_LOG_RECV, reply, nbytes + term_bytes, dev->opt_log_cl); switch(dev->proto) { case RR_PROTO_FIVED: return fived_handle_reply (dev, reply, nbytes); case RR_PROTO_TONOKIP: return tonokip_handle_reply (dev, reply, nbytes); case RR_PROTO_SIMPLE: if (!strncasecmp ("ok", reply, 2) && dev->reply_cb) { rr_dev_handle_ok (dev); dev->reply_cb (dev, RR_OK, 0.0, NULL, dev->reply_cl); } else if (dev->error_cb) dev->error_cb (dev, RR_E_UNKNOWN_REPLY, reply, nbytes, dev->error_cl); return 0; default: return RR_E_UNSUPPORTED_PROTO; } return 0; }
static void float_reply (rr_dev dev, char **i, rr_reply type) { if (dev->reply_cb) dev->reply_cb (dev, type, strtof (*i + 2, i), NULL, dev->reply_cl); }