/*
 * call-seq:
 *      mq.attr      =>    mq_attr
 *
 * Returns a POSIX_MQ::Attr struct containing the attributes
 * of the message queue.  See the mq_getattr(3) manpage for
 * more details.
 */
static VALUE getattr(VALUE self)
{
        struct posix_mq *mq = get(self, 1);

        if (mq_getattr(mq->des, &mq->attr) < 0)
                rb_sys_fail("mq_getattr");

        return rb_funcall(cAttr, id_new, 4,
                          LONG2NUM(mq->attr.mq_flags),
                          LONG2NUM(mq->attr.mq_maxmsg),
                          LONG2NUM(mq->attr.mq_msgsize),
                          LONG2NUM(mq->attr.mq_curmsgs));
}