#include <pulse/xmalloc.h>
-#include <pulsecore/winsock.h>
+#include <pulsecore/socket.h>
#include <pulsecore/macro.h>
#include "tagstruct.h"
size_t length, allocated;
size_t rindex;
- pa_bool_t dynamic;
+ bool dynamic;
};
pa_tagstruct *pa_tagstruct_new(const uint8_t* data, size_t length) {
t->length += 5+length;
}
-void pa_tagstruct_put_boolean(pa_tagstruct*t, pa_bool_t b) {
+void pa_tagstruct_put_boolean(pa_tagstruct*t, bool b) {
pa_assert(t);
extend(t, 1);
unsigned i;
pa_assert(t);
+ pa_assert(map);
extend(t, 2 + (size_t) map->channels);
t->data[t->length++] = PA_TAG_CHANNEL_MAP;
pa_volume_t vol;
pa_assert(t);
+ pa_assert(cvolume);
extend(t, 2 + cvolume->channels * sizeof(pa_volume_t));
t->data[t->length++] = PA_TAG_CVOLUME;
pa_tagstruct_puts(t, NULL);
}
+void pa_tagstruct_put_format_info(pa_tagstruct *t, pa_format_info *f) {
+ pa_assert(t);
+ pa_assert(f);
+
+ extend(t, 1);
+
+ t->data[t->length++] = PA_TAG_FORMAT_INFO;
+ pa_tagstruct_putu8(t, (uint8_t) f->encoding);
+ pa_tagstruct_put_proplist(t, f->plist);
+}
+
int pa_tagstruct_gets(pa_tagstruct*t, const char **s) {
int error = 0;
size_t n;
return t->data;
}
-int pa_tagstruct_get_boolean(pa_tagstruct*t, pa_bool_t *b) {
+int pa_tagstruct_get_boolean(pa_tagstruct*t, bool *b) {
pa_assert(t);
pa_assert(b);
return -1;
if (t->data[t->rindex] == PA_TAG_BOOLEAN_TRUE)
- *b = TRUE;
+ *b = true;
else if (t->data[t->rindex] == PA_TAG_BOOLEAN_FALSE)
- *b = FALSE;
+ *b = false;
else
return -1;
size_t saved_rindex;
pa_assert(t);
- pa_assert(p);
if (t->rindex+1 > t->length)
return -1;
if (!k)
break;
+ if (!pa_proplist_key_valid(k))
+ goto fail;
+
if (pa_tagstruct_getu32(t, &length) < 0)
goto fail;
if (pa_tagstruct_get_arbitrary(t, &d, length) < 0)
goto fail;
- if (pa_proplist_set(p, k, d, length) < 0)
- goto fail;
+ if (p)
+ pa_assert_se(pa_proplist_set(p, k, d, length) >= 0);
}
return 0;
return -1;
}
+int pa_tagstruct_get_format_info(pa_tagstruct *t, pa_format_info *f) {
+ size_t saved_rindex;
+ uint8_t encoding;
+
+ pa_assert(t);
+ pa_assert(f);
+
+ if (t->rindex+1 > t->length)
+ return -1;
+
+ if (t->data[t->rindex] != PA_TAG_FORMAT_INFO)
+ return -1;
+
+ saved_rindex = t->rindex;
+ t->rindex++;
+
+ if (pa_tagstruct_getu8(t, &encoding) < 0)
+ goto fail;
+
+ f->encoding = encoding;
+
+ if (pa_tagstruct_get_proplist(t, f->plist) < 0)
+ goto fail;
+
+ return 0;
+
+fail:
+ t->rindex = saved_rindex;
+ return -1;
+}
+
void pa_tagstruct_put(pa_tagstruct *t, ...) {
va_list va;
pa_assert(t);
case PA_TAG_BOOLEAN_TRUE:
case PA_TAG_BOOLEAN_FALSE:
- ret = pa_tagstruct_get_boolean(t, va_arg(va, pa_bool_t*));
+ ret = pa_tagstruct_get_boolean(t, va_arg(va, bool*));
break;
case PA_TAG_TIMEVAL: