SPRINTF
SPRINTF(p, "/%s", audio_encoding_name(pi->encoding));
SPRINTF(p, "/%dbit", pi->precision);
SPRINTF(p, "/%dch", pi->channels);
SPRINTF(p, "/%dHz", pi->sample_rate);
SPRINTF(buf, ",play.param=%s", p + 1);
SPRINTF(p, "/%s", audio_encoding_name(ri->encoding));
SPRINTF(p, "/%dbit", ri->precision);
SPRINTF(p, "/%dch", ri->channels);
SPRINTF(p, "/%dHz", ri->sample_rate);
SPRINTF(buf, ",record.param=%s", p + 1);
SPRINTF(buf, ",mode=%d", ai->mode);
SPRINTF(buf, ",hiwat=%d", ai->hiwat);
SPRINTF(buf, ",lowat=%d", ai->lowat);
SPRINTF(buf, ",play.gain=%d", ai->play.gain);
SPRINTF(buf, ",record.gain=%d", ai->record.gain);
SPRINTF(buf, ",play.balance=%d", ai->play.balance);
SPRINTF(buf, ",record.balance=%d", ai->record.balance);
SPRINTF(buf, ",play.port=%d", ai->play.port);
SPRINTF(buf, ",record.port=%d", ai->record.port);
SPRINTF(buf, ",monitor_gain=%d", ai->monitor_gain);
SPRINTF(buf, ",play.pause=%d", ai->play.pause);
SPRINTF(buf, ",record.pause=%d", ai->record.pause);