/*
 * call-seq:
 *      Spread::version -> string
 *
 * The version of the Spread client libraries being used.
 */
static VALUE
spread_version(VALUE obj)
{
    int n;
    int len;
    int maj_ver, min_ver, patch_ver;
    char buf[64];

    if ((n = SP_version(&maj_ver, &min_ver, &patch_ver)) < 0)
        raise_sp_error(n);

    len = snprintf(buf, sizeof(buf), "%d.%d.%d",
                   maj_ver, min_ver, patch_ver);
    if (len < 0 || (size_t) len >= sizeof(buf))
        rb_raise(rb_eRuntimeError, "buffer overflow");

    return rb_str_new(buf, len);
}