READONLY
print_flag(f, s, c, READONLY, READWRITE);
{ "mode", &info.mode, P_R, READONLY },
{ "play.seek", &info.play.seek, UINT, READONLY },
{ "play.samples", &info.play.samples, UINT, READONLY },
{ "play.eof", &info.play.eof, UINT, READONLY },
{ "play.error", &info.play.error, UCHAR, READONLY },
{ "play.waiting", &info.play.waiting, UCHAR, READONLY },
{ "play.open", &info.play.open, UCHAR, READONLY },
{ "play.active", &info.play.active, UCHAR, READONLY },
{ "record.seek", &info.record.seek, UINT, READONLY },
{ "record.samples", &info.record.samples, UINT, READONLY },
{ "record.eof", &info.record.eof, UINT, READONLY },
{ "record.error", &info.record.error, UCHAR, READONLY },
{ "record.waiting", &info.record.waiting, UCHAR, READONLY },
{ "record.open", &info.record.open, UCHAR, READONLY },
{ "record.active", &info.record.active, UCHAR, READONLY },
{ "record.errors", &rerror, INT, READONLY },
if (p->flags & READONLY)
{ "name", &adev.name, STRING, READONLY },
{ "version", &adev.version, STRING, READONLY },
{ "config", &adev.config, STRING, READONLY },
{ "encodings", encbuf, STRING, READONLY },
{ "properties", &properties, PROPS, READONLY },