+ if (pa_atou(value_str, &k) >= 0)
+ volume = (pa_volume_t) PA_CLAMP_VOLUME(k);
+ else {
+ size_t len;
+
+ token_end = value_str + strcspn(value_str, WHITESPACE);
+
+ len = token_end - value_str;
+ if (len == (sizeof(UPDATE_REPLACE) - 1) && !strncmp(value_str, UPDATE_REPLACE, len))
+ mode = PA_UPDATE_REPLACE;
+ else if (len == (sizeof(UPDATE_MERGE) - 1) && !strncmp(value_str, UPDATE_MERGE, len))
+ mode = PA_UPDATE_MERGE;
+
+ if (mode != (pa_update_mode_t) -1) {
+ value_str = token_end + strspn(token_end, WHITESPACE);
+
+ if (!*value_str) {
+ pa_log("[%s:%u] failed to parse line - too few words", fn, n);
+ goto finish;
+ }
+ } else
+ mode = PA_UPDATE_MERGE;
+
+ if (*value_str == '"') {
+ value_str++;
+
+ token_end = strchr(value_str, '"');
+ if (!token_end) {
+ pa_log("[%s:%u] failed to parse line - missing role closing quote", fn, n);
+ goto finish;
+ }
+ } else
+ token_end = value_str + strcspn(value_str, WHITESPACE);
+
+ *token_end = 0;
+
+ value_str = pa_sprintf_malloc("media.role=\"%s\"", value_str);
+ proplist = pa_proplist_from_string(value_str);
+ pa_xfree(value_str);
+ }