summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xbootstrap.sh6
-rw-r--r--po/as.po63
-rw-r--r--po/bn_IN.po63
-rw-r--r--po/ca.po63
-rw-r--r--po/cs.po63
-rw-r--r--po/de.po63
-rw-r--r--po/de_CH.po63
-rw-r--r--po/el.po63
-rw-r--r--po/es.po74
-rw-r--r--po/fi.po63
-rw-r--r--po/fr.po63
-rw-r--r--po/gu.po63
-rw-r--r--po/hi.po63
-rw-r--r--po/it.po63
-rw-r--r--po/kn.po63
-rw-r--r--po/ko.po63
-rw-r--r--po/mr.po63
-rw-r--r--po/nl.po63
-rw-r--r--po/or.po63
-rw-r--r--po/pa.po63
-rw-r--r--po/pl.po133
-rw-r--r--po/pt.po63
-rw-r--r--po/pt_BR.po88
-rw-r--r--po/sr.po63
-rw-r--r--po/sr@latin.po63
-rw-r--r--po/sv.po63
-rw-r--r--po/ta.po63
-rw-r--r--po/te.po63
-rw-r--r--po/uk.po63
-rw-r--r--po/zh_CN.po63
-rw-r--r--src/.gitignore1
-rw-r--r--src/Makefile.am17
-rw-r--r--src/daemon/cmdline.c5
-rw-r--r--src/daemon/daemon-conf.c20
-rw-r--r--src/daemon/main.c2
-rw-r--r--src/modules/alsa/alsa-mixer.c16
-rw-r--r--src/modules/alsa/mixer/paths/analog-output-lfe-on-mono.conf7
-rw-r--r--src/modules/alsa/mixer/paths/analog-output-mono.conf7
-rw-r--r--src/modules/alsa/mixer/paths/analog-output.conf7
-rw-r--r--src/modules/gconf/module-gconf.c9
-rw-r--r--src/modules/module-combine.c2
-rw-r--r--src/modules/module-ladspa-sink.c79
-rw-r--r--src/modules/module-remap-sink.c7
-rw-r--r--src/modules/module-solaris.c100
-rw-r--r--src/modules/module-udev-detect.c303
-rw-r--r--src/pulse/util.c52
-rw-r--r--src/pulsecore/core-util.c125
-rw-r--r--src/pulsecore/core-util.h4
-rw-r--r--src/pulsecore/core.c2
-rw-r--r--src/pulsecore/core.h2
-rw-r--r--src/pulsecore/msgobject.c14
-rw-r--r--src/pulsecore/msgobject.h8
-rw-r--r--src/pulsecore/object.c18
-rw-r--r--src/pulsecore/object.h51
-rw-r--r--src/pulsecore/play-memblockq.c3
-rw-r--r--src/pulsecore/protocol-esound.c3
-rw-r--r--src/pulsecore/protocol-native.c15
-rw-r--r--src/pulsecore/protocol-simple.c3
-rw-r--r--src/pulsecore/sink-input.c23
-rw-r--r--src/pulsecore/sink-input.h14
-rw-r--r--src/pulsecore/sink.c18
-rw-r--r--src/pulsecore/sink.h2
-rw-r--r--src/pulsecore/sound-file-stream.c3
-rw-r--r--src/pulsecore/source-output.c4
-rw-r--r--src/pulsecore/source-output.h2
-rw-r--r--src/pulsecore/source.c2
-rw-r--r--src/pulsecore/source.h2
-rw-r--r--src/pulsecore/usergroup.c372
-rw-r--r--src/pulsecore/usergroup.h51
-rw-r--r--src/tests/usergroup-test.c161
70 files changed, 2230 insertions, 1245 deletions
diff --git a/bootstrap.sh b/bootstrap.sh
index 970e884e..c7c85823 100755
--- a/bootstrap.sh
+++ b/bootstrap.sh
@@ -47,9 +47,9 @@ case $(uname) in
esac
if [ -f .git/hooks/pre-commit.sample -a ! -f .git/hooks/pre-commit ] ; then
- echo "Activating pre-commit hook."
- cp -pv .git/hooks/pre-commit.sample .git/hooks/pre-commit
- chmod -v +x .git/hooks/pre-commit
+ cp -p .git/hooks/pre-commit.sample .git/hooks/pre-commit && \
+ chmod +x .git/hooks/pre-commit && \
+ echo "Activated pre-commit hook."
fi
if [ -f .tarball-version ]; then
diff --git a/po/as.po b/po/as.po
index 63fa3558..f1b1b14c 100644
--- a/po/as.po
+++ b/po/as.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio.master-tx.pulseaudio.as\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-19 04:16+0200\n"
+"POT-Creation-Date: 2009-08-22 00:08+0200\n"
"PO-Revision-Date: 2009-04-08 12:35+0530\n"
"Last-Translator: Amitakhya Phukan <aphukan@fedoraproject.org>\n"
"Language-Team: Assamese <fedora-trans-as@redhat.com>\n"
@@ -16,7 +16,7 @@ msgstr ""
"X-Generator: Lokalize 0.3\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666
+#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2676
#, c-format
msgid "%s %s"
msgstr ""
@@ -70,11 +70,11 @@ msgid ""
"input control values>"
msgstr ""
-#: ../src/pulsecore/sink.c:2650
+#: ../src/pulsecore/sink.c:2660
msgid "Internal Audio"
msgstr "আভ্যন্তৰীণ অ'ডিঅ'"
-#: ../src/pulsecore/sink.c:2655
+#: ../src/pulsecore/sink.c:2665
msgid "Modem"
msgstr "মোডেম"
@@ -322,11 +322,16 @@ msgid "Using state directory %s."
msgstr "অৱস্থাসূচক পঞ্জিকা %s ব্যৱহাৰ কৰা হৈছে ।"
#: ../src/daemon/main.c:777
+#, fuzzy, c-format
+msgid "Using modules directory %s."
+msgstr "ৰান-টাইম পঞ্জিকা %s ব্যৱহাৰ কৰা হৈছে ।"
+
+#: ../src/daemon/main.c:779
#, c-format
msgid "Running in system mode: %s"
msgstr "প্ৰণালী মোডত চলিছে: %s"
-#: ../src/daemon/main.c:780
+#: ../src/daemon/main.c:782
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -336,15 +341,15 @@ msgid ""
"explanation why system mode is usually a bad idea."
msgstr ""
-#: ../src/daemon/main.c:797
+#: ../src/daemon/main.c:799
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() ব্যৰ্থ ।"
-#: ../src/daemon/main.c:807
+#: ../src/daemon/main.c:809
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "নতুন high-resolution timers পোৱা হয়! অভিনন্দন!"
-#: ../src/daemon/main.c:809
+#: ../src/daemon/main.c:811
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -352,28 +357,28 @@ msgstr ""
"শ্ৰীমান, আপোনাৰ কাৰ্ণেল পূৰণি! high-resolution timer সক্ৰিয় থকা Linux ক আজি "
"উপদেশ দিয়া হয়!"
-#: ../src/daemon/main.c:827
+#: ../src/daemon/main.c:829
msgid "pa_core_new() failed."
msgstr "pa_core_new() ব্যৰ্থ ।"
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:891
msgid "Failed to initialize daemon."
msgstr "ডেমন আৰম্ভ কৰিবলৈ ব্যৰ্থ ।"
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:896
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr ""
"তুলি লোৱা মডিউল নোহোৱাকে ডেমন আৰম্ভ কৰা হৈছে, কোনো কাম সঞ্চালন কৰা সম্ভৱ নহয় ।"
-#: ../src/daemon/main.c:911
+#: ../src/daemon/main.c:913
msgid "Daemon startup complete."
msgstr "ডেমন আৰম্ভ কৰা সম্পূৰ্ণ ।"
-#: ../src/daemon/main.c:917
+#: ../src/daemon/main.c:919
msgid "Daemon shutdown initiated."
msgstr "ডেমন বন্ধ কৰাৰ প্ৰক্ৰিয়া আৰম্ভ কৰা হৈছে ।"
-#: ../src/daemon/main.c:939
+#: ../src/daemon/main.c:941
msgid "Daemon terminated."
msgstr "ডেমন বন্ধ কৰা হৈছে ।"
@@ -630,72 +635,72 @@ msgstr ""
msgid "Path: %s\n"
msgstr "পাথ: %s\n"
-#: ../src/daemon/daemon-conf.c:216
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] লগ লক্ষ্য '%s' বৈধ নহয় ।"
-#: ../src/daemon/daemon-conf.c:232
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] লগৰ স্তৰ '%s' বৈধ নহয় ।"
-#: ../src/daemon/daemon-conf.c:248
+#: ../src/daemon/daemon-conf.c:264
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] resample পদ্ধতি '%s' বৈধ নহয় ।"
-#: ../src/daemon/daemon-conf.c:271
+#: ../src/daemon/daemon-conf.c:287
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] rlimit '%s' বৈধ নহয় ।"
-#: ../src/daemon/daemon-conf.c:278
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] এই স্থাপত্যত rlimit সমৰ্থিত নহয় ।"
-#: ../src/daemon/daemon-conf.c:294
+#: ../src/daemon/daemon-conf.c:310
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] চানেকিৰ বিন্যাস '%s' বৈধ নহয় ।"
-#: ../src/daemon/daemon-conf.c:312
+#: ../src/daemon/daemon-conf.c:328
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] চানেকিৰ মাত্ৰা '%s' বৈধ নহয় ।"
-#: ../src/daemon/daemon-conf.c:336
+#: ../src/daemon/daemon-conf.c:352
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] চানেকিৰ চেনেল '%s' বৈধ নহয়"
-#: ../src/daemon/daemon-conf.c:354
+#: ../src/daemon/daemon-conf.c:370
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] চেনেল মেপ '%s' বৈধ নহয় ।"
-#: ../src/daemon/daemon-conf.c:372
+#: ../src/daemon/daemon-conf.c:388
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] অংশৰ সংখ্যা '%s' বৈধ নহয় ।"
-#: ../src/daemon/daemon-conf.c:390
+#: ../src/daemon/daemon-conf.c:406
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] অংশৰ মাপ '%s' বৈধ নহয় ।"
-#: ../src/daemon/daemon-conf.c:408
+#: ../src/daemon/daemon-conf.c:424
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] nice স্তৰ '%s' বৈধ নহয় ।"
-#: ../src/daemon/daemon-conf.c:530
+#: ../src/daemon/daemon-conf.c:546
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "বিন্যাস নথিপত্ৰ খুলিবলৈ ব্যৰ্থ: %s"
-#: ../src/daemon/daemon-conf.c:546
+#: ../src/daemon/daemon-conf.c:562
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -703,7 +708,7 @@ msgstr ""
"নিৰ্ধাৰিত অবিকল্পিত চেনেল মেপত নিৰ্ধাৰিত অবিকল্পিত চেনেলৰ সংখ্যাতকে বেলেগ সংখ্যক "
"চেনেল আছে ।"
-#: ../src/daemon/daemon-conf.c:622
+#: ../src/daemon/daemon-conf.c:638
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### চিহ্নিত বিন্যাস নথিপত্ৰৰ পৰা পঢ়া হ'ব: %s ###\n"
diff --git a/po/bn_IN.po b/po/bn_IN.po
index 15c074d1..bd16b9cf 100644
--- a/po/bn_IN.po
+++ b/po/bn_IN.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio.master-tx\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-19 04:16+0200\n"
+"POT-Creation-Date: 2009-08-22 00:08+0200\n"
"PO-Revision-Date: 2009-04-08 16:21+0530\n"
"Last-Translator: Runa Bhattacharjee <runab@fedoraproject.org>\n"
"Language-Team: Bengali INDIA <fedora-trans-bn_in@redhat.com>\n"
@@ -17,7 +17,7 @@ msgstr ""
"X-Generator: KBabel 1.11.4\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666
+#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2676
#, c-format
msgid "%s %s"
msgstr ""
@@ -71,11 +71,11 @@ msgid ""
"input control values>"
msgstr ""
-#: ../src/pulsecore/sink.c:2650
+#: ../src/pulsecore/sink.c:2660
msgid "Internal Audio"
msgstr "অভ্যন্তরীণ অডিও"
-#: ../src/pulsecore/sink.c:2655
+#: ../src/pulsecore/sink.c:2665
msgid "Modem"
msgstr "মোডেম"
@@ -326,11 +326,16 @@ msgid "Using state directory %s."
msgstr "অবস্থাসূচক ডিরেক্টরি %s ব্যবহার করা হচ্ছে।"
#: ../src/daemon/main.c:777
+#, fuzzy, c-format
+msgid "Using modules directory %s."
+msgstr "রান-টাইম ডিরেক্টরি %s ব্যবহার করা হচ্ছে।"
+
+#: ../src/daemon/main.c:779
#, c-format
msgid "Running in system mode: %s"
msgstr "সিস্টেম মোডে চলছে: %s"
-#: ../src/daemon/main.c:780
+#: ../src/daemon/main.c:782
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -340,42 +345,42 @@ msgid ""
"explanation why system mode is usually a bad idea."
msgstr ""
-#: ../src/daemon/main.c:797
+#: ../src/daemon/main.c:799
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() ব্যর্থ।"
-#: ../src/daemon/main.c:807
+#: ../src/daemon/main.c:809
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "উচ্চ-রেসোলিউশনের নতুন টাইমার উপলব্ধ রয়েছে! পরীক্ষা করে দেখুন!"
-#: ../src/daemon/main.c:809
+#: ../src/daemon/main.c:811
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
msgstr "উচ্চ-রেসোলিউশনের নতুন টাইমার সহ Linux সক্রিয় করা বাঞ্ছনীয়!"
-#: ../src/daemon/main.c:827
+#: ../src/daemon/main.c:829
msgid "pa_core_new() failed."
msgstr "pa_core_new() ব্যর্থ।"
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:891
msgid "Failed to initialize daemon."
msgstr "ডেমন আরম্ভ করতে ব্যর্থ।"
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:896
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr ""
"লোড করা মডিউল বিনা ডেমন আরম্ভ করা হয়েছে এবং কোনো কর্ম সঞ্চালন করা সম্ভব নয়।"
-#: ../src/daemon/main.c:911
+#: ../src/daemon/main.c:913
msgid "Daemon startup complete."
msgstr "ডেমন আরম্ভ করা হয়েছে।"
-#: ../src/daemon/main.c:917
+#: ../src/daemon/main.c:919
msgid "Daemon shutdown initiated."
msgstr "ডেমন বন্ধ করার প্রক্রিয়া আরম্ভ করা হয়েছে।"
-#: ../src/daemon/main.c:939
+#: ../src/daemon/main.c:941
msgid "Daemon terminated."
msgstr "ডেমন বন্ধ করা হয়েছে।"
@@ -641,72 +646,72 @@ msgstr ""
msgid "Path: %s\n"
msgstr "পাথ: %s\n"
-#: ../src/daemon/daemon-conf.c:216
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] লগ টার্গেট '%s' বৈধ নয়।"
-#: ../src/daemon/daemon-conf.c:232
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] লগের স্তর '%s' বৈধ নয়।"
-#: ../src/daemon/daemon-conf.c:248
+#: ../src/daemon/daemon-conf.c:264
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] রি-স্যাম্পেল পদ্ধতি '%s' বৈধ নয়।"
-#: ../src/daemon/daemon-conf.c:271
+#: ../src/daemon/daemon-conf.c:287
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] rlimit '%s' বৈধ নয়।"
-#: ../src/daemon/daemon-conf.c:278
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] এই প্ল্যাটফর্মে rlimit সমর্থিত নয়।"
-#: ../src/daemon/daemon-conf.c:294
+#: ../src/daemon/daemon-conf.c:310
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] স্যাম্পেলের বিন্যাস '%s' বৈধ নয়।"
-#: ../src/daemon/daemon-conf.c:312
+#: ../src/daemon/daemon-conf.c:328
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] স্যাম্পেলের মাত্রা '%s' বৈধ নয়।"
-#: ../src/daemon/daemon-conf.c:336
+#: ../src/daemon/daemon-conf.c:352
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] স্যাম্পেলের চ্যানেল '%s' বৈধ নয়"
-#: ../src/daemon/daemon-conf.c:354
+#: ../src/daemon/daemon-conf.c:370
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] চ্যানেল ম্যাপ '%s' বৈধ নয়।"
-#: ../src/daemon/daemon-conf.c:372
+#: ../src/daemon/daemon-conf.c:388
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] অংশ সংখ্যা '%s' বৈধ নয়।"
-#: ../src/daemon/daemon-conf.c:390
+#: ../src/daemon/daemon-conf.c:406
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] অংশের মাপ '%s' বৈধ নয়।"
-#: ../src/daemon/daemon-conf.c:408
+#: ../src/daemon/daemon-conf.c:424
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] nice স্তর '%s' বৈধ নয়।"
-#: ../src/daemon/daemon-conf.c:530
+#: ../src/daemon/daemon-conf.c:546
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "কনফিগারেশন ফাইল খুলতে ব্যর্থ: %s"
-#: ../src/daemon/daemon-conf.c:546
+#: ../src/daemon/daemon-conf.c:562
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -714,7 +719,7 @@ msgstr ""
"ডিফল্ট চ্যানেল ম্যাপের মধ্যে অন্তর্ভুক্ত চ্যানেলের সংখ্যা ও চ্যানেলের ডিফল্ট সংখ্যার মধ্যে "
"গরমিল।"
-#: ../src/daemon/daemon-conf.c:622
+#: ../src/daemon/daemon-conf.c:638
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### চিহ্নিত কনফিগারেশন ফাইল থেকে পড়া হবে: %s ###\n"
diff --git a/po/ca.po b/po/ca.po
index 373c8702..167501d2 100644
--- a/po/ca.po
+++ b/po/ca.po
@@ -23,7 +23,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-19 04:16+0200\n"
+"POT-Creation-Date: 2009-08-22 00:08+0200\n"
"PO-Revision-Date: 2009-07-18 11:40+0100\n"
"Last-Translator: Tomàs Bigordà <t0mynoker@gmail.com>\n"
"Language-Team: Catalan <fedora@softcatala.net>\n"
@@ -31,7 +31,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666
+#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2676
#, c-format
msgid "%s %s"
msgstr ""
@@ -93,11 +93,11 @@ msgstr ""
"pulgin=<nom del connector ladspa> label=<etiqueta del connector ladspa> "
"control=<llista separada per comes dels valors de control d'entrada>"
-#: ../src/pulsecore/sink.c:2650
+#: ../src/pulsecore/sink.c:2660
msgid "Internal Audio"
msgstr "Audio intern"
-#: ../src/pulsecore/sink.c:2655
+#: ../src/pulsecore/sink.c:2665
msgid "Modem"
msgstr "Mòdem"
@@ -353,11 +353,16 @@ msgid "Using state directory %s."
msgstr "S'està utilitzant el directori d'estat %s."
#: ../src/daemon/main.c:777
+#, fuzzy, c-format
+msgid "Using modules directory %s."
+msgstr "S'està utilitzant el directori d'execució %s."
+
+#: ../src/daemon/main.c:779
#, c-format
msgid "Running in system mode: %s"
msgstr "S'està executant en mode sistema: %s"
-#: ../src/daemon/main.c:780
+#: ../src/daemon/main.c:782
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -373,15 +378,15 @@ msgstr ""
"Si us plau, llegiu http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode per "
"a una explicació de per què el mode sistema sol ser una mala idea."
-#: ../src/daemon/main.c:797
+#: ../src/daemon/main.c:799
msgid "pa_pid_file_create() failed."
msgstr "S'ha produït un error en pa_pid_file_create()."
-#: ../src/daemon/main.c:807
+#: ../src/daemon/main.c:809
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Estan disponibles els temporitzadors frescos d'alta resolució."
-#: ../src/daemon/main.c:809
+#: ../src/daemon/main.c:811
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -389,27 +394,27 @@ msgstr ""
"Es recomana la utilització d'un nucli amb els temporitzadors d'alta "
"resolució habilitats."
-#: ../src/daemon/main.c:827
+#: ../src/daemon/main.c:829
msgid "pa_core_new() failed."
msgstr "S'ha produït un error en pa_core_new()."
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:891
msgid "Failed to initialize daemon."
msgstr "S'ha produït un error en inicialitzar el dimoni."
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:896
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "El dimoni s'ha iniciat sense cap mòdul carregat, no funcionarà."
-#: ../src/daemon/main.c:911
+#: ../src/daemon/main.c:913
msgid "Daemon startup complete."
msgstr "S'ha completat la inicialització del dimoni."
-#: ../src/daemon/main.c:917
+#: ../src/daemon/main.c:919
msgid "Daemon shutdown initiated."
msgstr "S'ha iniciat l'aturada del dimoni."
-#: ../src/daemon/main.c:939
+#: ../src/daemon/main.c:941
msgid "Daemon terminated."
msgstr "S'ha aturat el dimoni."
@@ -679,72 +684,72 @@ msgstr "Advertència d'obsolescència: %s\n"
msgid "Path: %s\n"
msgstr "Ruta: %s\n"
-#: ../src/daemon/daemon-conf.c:216
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Destí de registre incorrecte '%s'"
-#: ../src/daemon/daemon-conf.c:232
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Nivell de registre incorrecte '%s'."
-#: ../src/daemon/daemon-conf.c:248
+#: ../src/daemon/daemon-conf.c:264
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Mètode de remostreig incorrecte '%s'."
-#: ../src/daemon/daemon-conf.c:271
+#: ../src/daemon/daemon-conf.c:287
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] rlimit incorrecte '%s'."
-#: ../src/daemon/daemon-conf.c:278
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit no disponible en aquesta plataforma."
-#: ../src/daemon/daemon-conf.c:294
+#: ../src/daemon/daemon-conf.c:310
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Format de mostra incorrecte '%s'."
-#: ../src/daemon/daemon-conf.c:312
+#: ../src/daemon/daemon-conf.c:328
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Velocitat de mostreig '%s'."
-#: ../src/daemon/daemon-conf.c:336
+#: ../src/daemon/daemon-conf.c:352
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Canals de mostreig incorrectes '%s'."
-#: ../src/daemon/daemon-conf.c:354
+#: ../src/daemon/daemon-conf.c:370
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] Mapa de canals incorrecte '%s'."
-#: ../src/daemon/daemon-conf.c:372
+#: ../src/daemon/daemon-conf.c:388
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Nombre de fragments incorrecte '%s'."
-#: ../src/daemon/daemon-conf.c:390
+#: ../src/daemon/daemon-conf.c:406
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Mida de fragment incorrecta '%s'."
-#: ../src/daemon/daemon-conf.c:408
+#: ../src/daemon/daemon-conf.c:424
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Nivell de prioritat incorrecte '%s'."
-#: ../src/daemon/daemon-conf.c:530
+#: ../src/daemon/daemon-conf.c:546
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Error en obrir el fitxer de configuració: %s"
-#: ../src/daemon/daemon-conf.c:546
+#: ../src/daemon/daemon-conf.c:562
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -752,7 +757,7 @@ msgstr ""
"El mapa de canals especificat per omissió té un número de canals diferent "
"del número de canals especificat per omissió."
-#: ../src/daemon/daemon-conf.c:622
+#: ../src/daemon/daemon-conf.c:638
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### Lectura del fitxer de configuració: %s ###\n"
diff --git a/po/cs.po b/po/cs.po
index 6ced9549..13a5134e 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio.master-tx\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-19 04:16+0200\n"
+"POT-Creation-Date: 2009-08-22 00:08+0200\n"
"PO-Revision-Date: 2009-08-17 01:58+0200\n"
"Last-Translator: Petr Kovar <pknbe@volny.cz>\n"
"Language-Team: Czech <translation-team-cs@lists.sourceforge.net>\n"
@@ -15,7 +15,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
-#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666
+#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2676
#, c-format
msgid "%s %s"
msgstr "%s %s"
@@ -77,11 +77,11 @@ msgstr ""
"modulu ladspa> label=<popisek zásuvného modulu ladspa> control=<čárkou "
"oddělený seznam hodnot ovládání vstupu>"
-#: ../src/pulsecore/sink.c:2650
+#: ../src/pulsecore/sink.c:2660
msgid "Internal Audio"
msgstr "Vnitřní zvukový systém"
-#: ../src/pulsecore/sink.c:2655
+#: ../src/pulsecore/sink.c:2665
msgid "Modem"
msgstr "Modem"
@@ -329,11 +329,16 @@ msgid "Using state directory %s."
msgstr "Používán stavový adresář %s."
#: ../src/daemon/main.c:777
+#, fuzzy, c-format
+msgid "Using modules directory %s."
+msgstr "Používán běhový adresář %s."
+
+#: ../src/daemon/main.c:779
#, c-format
msgid "Running in system mode: %s"
msgstr "Běží v systémovém režimu: %s"
-#: ../src/daemon/main.c:780
+#: ../src/daemon/main.c:782
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -349,16 +354,16 @@ msgstr ""
"Vysvětlení, proč je systémový režim obvykle velmi špatný nápad, si můžete "
"přečíst na http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode."
-#: ../src/daemon/main.c:797
+#: ../src/daemon/main.c:799
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() selhalo."
-#: ../src/daemon/main.c:807
+#: ../src/daemon/main.c:809
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr ""
"Jsou dostupné výtečné časovače o vysokém rozlišení. Tak s chutí do toho!"
-#: ../src/daemon/main.c:809
+#: ../src/daemon/main.c:811
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -366,27 +371,27 @@ msgstr ""
"Sorry, vole, kernel error! Tip šéfkuchaře na dnešní den zní: Linux se "
"zapnutými časovači o vysokém rozlišení."
-#: ../src/daemon/main.c:827
+#: ../src/daemon/main.c:829
msgid "pa_core_new() failed."
msgstr "pa_core_new() selhalo."
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:891
msgid "Failed to initialize daemon."
msgstr "Selhalo spuštění démona."
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:896
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "Spuštění démona bez jakýchkoliv nahraných modulů, běh bude odmítnut."
-#: ../src/daemon/main.c:911
+#: ../src/daemon/main.c:913
msgid "Daemon startup complete."
msgstr "Spuštění démona dokončeno."
-#: ../src/daemon/main.c:917
+#: ../src/daemon/main.c:919
msgid "Daemon shutdown initiated."
msgstr "Vypínání démona spuštěno."
-#: ../src/daemon/main.c:939
+#: ../src/daemon/main.c:941
msgid "Daemon terminated."
msgstr "Démon ukončen."
@@ -647,72 +652,72 @@ msgstr "VAROVÁNÍ ZASTARALOSTI: %s\n"
msgid "Path: %s\n"
msgstr "Cesta: %s\n"
-#: ../src/daemon/daemon-conf.c:216
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Neplatný protokolovací cíl \"%s\"."
-#: ../src/daemon/daemon-conf.c:232
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Neplatná protokolovací úroveň \"%s\"."
-#: ../src/daemon/daemon-conf.c:248
+#: ../src/daemon/daemon-conf.c:264
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Neplatná metoda převzorkování \"%s\"."
-#: ../src/daemon/daemon-conf.c:271
+#: ../src/daemon/daemon-conf.c:287
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] Neplatné rlimit \"%s\"."
-#: ../src/daemon/daemon-conf.c:278
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit na této platformě není podporováno."
-#: ../src/daemon/daemon-conf.c:294
+#: ../src/daemon/daemon-conf.c:310
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Neplatný vzorkovací formát \"%s\"."
-#: ../src/daemon/daemon-conf.c:312
+#: ../src/daemon/daemon-conf.c:328
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Neplatná vzorkovací frekvence \"%s\"."
-#: ../src/daemon/daemon-conf.c:336
+#: ../src/daemon/daemon-conf.c:352
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Neplatné vzorkovací kanály \"%s\"."
-#: ../src/daemon/daemon-conf.c:354
+#: ../src/daemon/daemon-conf.c:370
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] Neplatná mapa kanálů \"%s\"."
-#: ../src/daemon/daemon-conf.c:372
+#: ../src/daemon/daemon-conf.c:388
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Neplatný počet fragmentů \"%s\"."
-#: ../src/daemon/daemon-conf.c:390
+#: ../src/daemon/daemon-conf.c:406
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Neplatná velikost fragmentu \"%s\"."
-#: ../src/daemon/daemon-conf.c:408
+#: ../src/daemon/daemon-conf.c:424
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Neplatná úroveň nice \"%s\"."
-#: ../src/daemon/daemon-conf.c:530
+#: ../src/daemon/daemon-conf.c:546
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Nezdařilo se otevřít konfigurační soubor: %s"
-#: ../src/daemon/daemon-conf.c:546
+#: ../src/daemon/daemon-conf.c:562
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -720,7 +725,7 @@ msgstr ""
"Zadaná výchozí mapa kanálů obsahuje odlišný počet kanálů než je zadaný "
"výchozí počet kanálů."
-#: ../src/daemon/daemon-conf.c:622
+#: ../src/daemon/daemon-conf.c:638
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### Čtení z konfiguračního souboru: %s ###\n"
diff --git a/po/de.po b/po/de.po
index 94de66ca..ef9454ca 100644
--- a/po/de.po
+++ b/po/de.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-19 04:16+0200\n"
+"POT-Creation-Date: 2009-08-22 00:08+0200\n"
"PO-Revision-Date: 2009-04-18 12:43+0100\n"
"Last-Translator: Fabian Affolter <fab@fedoraproject.org>\n"
"Language-Team: German <fedora-trans-de@redhat.com>\n"
@@ -19,7 +19,7 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Poedit-Language: German\n"
-#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666
+#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2676
#, c-format
msgid "%s %s"
msgstr ""
@@ -76,11 +76,11 @@ msgid ""
"input control values>"
msgstr ""
-#: ../src/pulsecore/sink.c:2650
+#: ../src/pulsecore/sink.c:2660
msgid "Internal Audio"
msgstr "Internes Audio"
-#: ../src/pulsecore/sink.c:2655
+#: ../src/pulsecore/sink.c:2665
msgid "Modem"
msgstr "Modem"
@@ -328,11 +328,16 @@ msgid "Using state directory %s."
msgstr "Nutze Zustands-Verzeichnis %s."
#: ../src/daemon/main.c:777
+#, fuzzy, c-format
+msgid "Using modules directory %s."
+msgstr "Nutze Laufzeit-Verzeichnis %s."
+
+#: ../src/daemon/main.c:779
#, c-format
msgid "Running in system mode: %s"
msgstr "Laufe im System-Modus: %s"
-#: ../src/daemon/main.c:780
+#: ../src/daemon/main.c:782
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -342,41 +347,41 @@ msgid ""
"explanation why system mode is usually a bad idea."
msgstr ""
-#: ../src/daemon/main.c:797
+#: ../src/daemon/main.c:799
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() fehlgeschlagen."
-#: ../src/daemon/main.c:807
+#: ../src/daemon/main.c:809
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Neue hochauslösende Timer verfügbar! Guten Appetit!"
-#: ../src/daemon/main.c:809
+#: ../src/daemon/main.c:811
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
msgstr "Der Chefkoch empfiehlt: Linux mit aktivierten hochauslösenden Timern!"
-#: ../src/daemon/main.c:827
+#: ../src/daemon/main.c:829
msgid "pa_core_new() failed."
msgstr "pa_core_new() fehlgeschlagen."
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:891
msgid "Failed to initialize daemon."
msgstr "Konnte Daemon nicht initialisieren."
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:896
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "Daemon verweigert Ausführung, da keine Module geladen."
-#: ../src/daemon/main.c:911
+#: ../src/daemon/main.c:913
msgid "Daemon startup complete."
msgstr "Start des Daemons abgeschlossen."
-#: ../src/daemon/main.c:917
+#: ../src/daemon/main.c:919
msgid "Daemon shutdown initiated."
msgstr "Herunterfahren des Daemon gestartet."
-#: ../src/daemon/main.c:939
+#: ../src/daemon/main.c:941
msgid "Daemon terminated."
msgstr "Daemon beendet."
@@ -630,72 +635,72 @@ msgstr ""
msgid "Path: %s\n"
msgstr "Pfad: %s\n"
-#: ../src/daemon/daemon-conf.c:216
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Ungültiges Log-Ziel '%s'."
-#: ../src/daemon/daemon-conf.c:232
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Ungültige Log-Stufe '%s'."
-#: ../src/daemon/daemon-conf.c:248
+#: ../src/daemon/daemon-conf.c:264
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Ungültige Resample-Methode '%s'."
-#: ../src/daemon/daemon-conf.c:271
+#: ../src/daemon/daemon-conf.c:287
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] Ungültiges rlimit '%s'."
-#: ../src/daemon/daemon-conf.c:278
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit auf dieser Plattform nicht unterstützt."
-#: ../src/daemon/daemon-conf.c:294
+#: ../src/daemon/daemon-conf.c:310
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Ungültiges Sample-Format '%s'."
-#: ../src/daemon/daemon-conf.c:312
+#: ../src/daemon/daemon-conf.c:328
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Ungültige Sample-Rate '%s'."
-#: ../src/daemon/daemon-conf.c:336
+#: ../src/daemon/daemon-conf.c:352
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Ungültige Sample-Kanäle '%s'."
-#: ../src/daemon/daemon-conf.c:354
+#: ../src/daemon/daemon-conf.c:370
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] Ungültige Kanal-Zuordnung '%s'."
-#: ../src/daemon/daemon-conf.c:372
+#: ../src/daemon/daemon-conf.c:388
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Ungültige Anzahl von Fragmenten '%s'."
-#: ../src/daemon/daemon-conf.c:390
+#: ../src/daemon/daemon-conf.c:406
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Ungültige Fragmentgröße '%s'."
-#: ../src/daemon/daemon-conf.c:408
+#: ../src/daemon/daemon-conf.c:424
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Ungültige Nice-Stufe '%s'."
-#: ../src/daemon/daemon-conf.c:530
+#: ../src/daemon/daemon-conf.c:546
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Öffnen der Konfigurationsdatei fehlgeschlagen : %s"
-#: ../src/daemon/daemon-conf.c:546
+#: ../src/daemon/daemon-conf.c:562
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -703,7 +708,7 @@ msgstr ""
"Die angegebene Standard-Kanalzuordnung hat eine andere Anzahl von Kanälen "
"als die angegebene Standard-Kanal-Anzahl."
-#: ../src/daemon/daemon-conf.c:622
+#: ../src/daemon/daemon-conf.c:638
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### Lese von Konfigurationsdatei: %s ###\n"
diff --git a/po/de_CH.po b/po/de_CH.po
index 6f499208..507df748 100644
--- a/po/de_CH.po
+++ b/po/de_CH.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-19 04:16+0200\n"
+"POT-Creation-Date: 2009-08-22 00:08+0200\n"
"PO-Revision-Date: 2009-04-18 12:55+0100\n"
"Last-Translator: Fabian Affolter <fab@fedoraproject.org>\n"
"Language-Team: German <fedora-trans-de@redhat.com>\n"
@@ -18,7 +18,7 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Poedit-Language: Swiss German\n"
-#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666
+#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2676
#, c-format
msgid "%s %s"
msgstr ""
@@ -75,11 +75,11 @@ msgid ""
"input control values>"
msgstr ""
-#: ../src/pulsecore/sink.c:2650
+#: ../src/pulsecore/sink.c:2660
msgid "Internal Audio"
msgstr "Internes Audio"
-#: ../src/pulsecore/sink.c:2655
+#: ../src/pulsecore/sink.c:2665
msgid "Modem"
msgstr "Modem"
@@ -330,11 +330,16 @@ msgid "Using state directory %s."
msgstr "Nutze Zustands-Verzeichnis %s."
#: ../src/daemon/main.c:777
+#, fuzzy, c-format
+msgid "Using modules directory %s."
+msgstr "Nutze Laufzeit-Verzeichnis %s."
+
+#: ../src/daemon/main.c:779
#, c-format
msgid "Running in system mode: %s"
msgstr "Laufe im System-Modus: %s"
-#: ../src/daemon/main.c:780
+#: ../src/daemon/main.c:782
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -344,41 +349,41 @@ msgid ""
"explanation why system mode is usually a bad idea."
msgstr ""
-#: ../src/daemon/main.c:797
+#: ../src/daemon/main.c:799
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() fehlgeschlagen."
-#: ../src/daemon/main.c:807
+#: ../src/daemon/main.c:809
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Neue hochauslösende Timer verfügbar! Guten Appetit!"
-#: ../src/daemon/main.c:809
+#: ../src/daemon/main.c:811
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
msgstr "Der Chefkoch empfiehlt: Linux mit aktivierten hochauslösenden Timern!"
-#: ../src/daemon/main.c:827
+#: ../src/daemon/main.c:829
msgid "pa_core_new() failed."
msgstr "pa_core_new() fehlgeschlagen."
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:891
msgid "Failed to initialize daemon."
msgstr "Konnte Daemon nicht initialisieren."
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:896
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "Daemon verweigert Ausführung, da keine Module geladen."
-#: ../src/daemon/main.c:911
+#: ../src/daemon/main.c:913
msgid "Daemon startup complete."
msgstr "Start des Daemons abgeschlossen."
-#: ../src/daemon/main.c:917
+#: ../src/daemon/main.c:919
msgid "Daemon shutdown initiated."
msgstr "Herunterfahren des Daemon gestartet."
-#: ../src/daemon/main.c:939
+#: ../src/daemon/main.c:941
msgid "Daemon terminated."
msgstr "Daemon beendet."
@@ -632,72 +637,72 @@ msgstr ""
msgid "Path: %s\n"
msgstr "Pfad: %s\n"
-#: ../src/daemon/daemon-conf.c:216
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Ungültiges Log-Ziel '%s'."
-#: ../src/daemon/daemon-conf.c:232
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Ungültige Log-Stufe '%s'."
-#: ../src/daemon/daemon-conf.c:248
+#: ../src/daemon/daemon-conf.c:264
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Ungültige Resample-Methode '%s'."
-#: ../src/daemon/daemon-conf.c:271
+#: ../src/daemon/daemon-conf.c:287
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] Ungültiges rlimit '%s'."
-#: ../src/daemon/daemon-conf.c:278
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit auf dieser Plattform nicht unterstützt."
-#: ../src/daemon/daemon-conf.c:294
+#: ../src/daemon/daemon-conf.c:310
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Ungültiges Sample-Format '%s'."
-#: ../src/daemon/daemon-conf.c:312
+#: ../src/daemon/daemon-conf.c:328
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Ungültige Sample-Rate '%s'."
-#: ../src/daemon/daemon-conf.c:336
+#: ../src/daemon/daemon-conf.c:352
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Ungültige Sample-Kanäle '%s'."
-#: ../src/daemon/daemon-conf.c:354
+#: ../src/daemon/daemon-conf.c:370
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] Ungültige Kanal-Zuordnung '%s'."
-#: ../src/daemon/daemon-conf.c:372
+#: ../src/daemon/daemon-conf.c:388
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Ungültige Anzahl von Fragmenten '%s'."
-#: ../src/daemon/daemon-conf.c:390
+#: ../src/daemon/daemon-conf.c:406
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Ungültige Fragmentgrösse '%s'."
-#: ../src/daemon/daemon-conf.c:408
+#: ../src/daemon/daemon-conf.c:424
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Ungültige Nice-Stufe '%s'."
-#: ../src/daemon/daemon-conf.c:530
+#: ../src/daemon/daemon-conf.c:546
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Öffnen der Konfigurationsdatei fehlgeschlagen : %s"
-#: ../src/daemon/daemon-conf.c:546
+#: ../src/daemon/daemon-conf.c:562
#, fuzzy
msgid ""
"The specified default channel map has a different number of channels than "
@@ -706,7 +711,7 @@ msgstr ""
"Die angegebene Standard-Kanalzuordnung hat eine andere Anzahl von Kanälen "
"als die angegebene Standard-Kanal-Anzahl."
-#: ../src/daemon/daemon-conf.c:622
+#: ../src/daemon/daemon-conf.c:638
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### Lese von Konfigurationsdatei: %s ###\n"
diff --git a/po/el.po b/po/el.po
index 9863910c..e4bb39f0 100644
--- a/po/el.po
+++ b/po/el.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: el\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-19 04:16+0200\n"
+"POT-Creation-Date: 2009-08-22 00:08+0200\n"
"PO-Revision-Date: 2008-08-22 19:40+0300\n"
"Last-Translator: Dimitris Glezos <dimitris@glezos.com>\n"
"Language-Team: Greek <fedora-trans-el@redhat.com>\n"
@@ -16,7 +16,7 @@ msgstr ""
"X-Generator: KAider 0.1\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666
+#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2676
#, c-format
msgid "%s %s"
msgstr ""
@@ -61,11 +61,11 @@ msgid ""
"input control values>"
msgstr ""
-#: ../src/pulsecore/sink.c:2650
+#: ../src/pulsecore/sink.c:2660
msgid "Internal Audio"
msgstr ""
-#: ../src/pulsecore/sink.c:2655
+#: ../src/pulsecore/sink.c:2665
msgid "Modem"
msgstr ""
@@ -312,10 +312,15 @@ msgstr ""
#: ../src/daemon/main.c:777
#, c-format
+msgid "Using modules directory %s."
+msgstr ""
+
+#: ../src/daemon/main.c:779
+#, c-format
msgid "Running in system mode: %s"
msgstr ""
-#: ../src/daemon/main.c:780
+#: ../src/daemon/main.c:782
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -325,15 +330,15 @@ msgid ""
"explanation why system mode is usually a bad idea."
msgstr ""
-#: ../src/daemon/main.c:797
+#: ../src/daemon/main.c:799
msgid "pa_pid_file_create() failed."
msgstr ""
-#: ../src/daemon/main.c:807
+#: ../src/daemon/main.c:809
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr ""
-#: ../src/daemon/main.c:809
+#: ../src/daemon/main.c:811
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -341,27 +346,27 @@ msgstr ""
"Δικέ μου, ο πυρήνας σου είναι για τα μπάζα! Η πρόταση του σεφ σήμερα είναι "
"Linux με ενεργοποιημένα τα high-resolution timers!"
-#: ../src/daemon/main.c:827
+#: ../src/daemon/main.c:829
msgid "pa_core_new() failed."
msgstr ""
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:891
msgid "Failed to initialize daemon."
msgstr ""
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:896
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr ""
-#: ../src/daemon/main.c:911
+#: ../src/daemon/main.c:913
msgid "Daemon startup complete."
msgstr ""
-#: ../src/daemon/main.c:917
+#: ../src/daemon/main.c:919
msgid "Daemon shutdown initiated."
msgstr ""
-#: ../src/daemon/main.c:939
+#: ../src/daemon/main.c:941
msgid "Daemon terminated."
msgstr ""
@@ -547,78 +552,78 @@ msgstr ""
msgid "Path: %s\n"
msgstr ""
-#: ../src/daemon/daemon-conf.c:216
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:232
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:248
+#: ../src/daemon/daemon-conf.c:264
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:271
+#: ../src/daemon/daemon-conf.c:287
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:278
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr ""
-#: ../src/daemon/daemon-conf.c:294
+#: ../src/daemon/daemon-conf.c:310
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:312
+#: ../src/daemon/daemon-conf.c:328
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:336
+#: ../src/daemon/daemon-conf.c:352
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:354
+#: ../src/daemon/daemon-conf.c:370
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:372
+#: ../src/daemon/daemon-conf.c:388
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:390
+#: ../src/daemon/daemon-conf.c:406
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:408
+#: ../src/daemon/daemon-conf.c:424
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:530
+#: ../src/daemon/daemon-conf.c:546
#, c-format
msgid "Failed to open configuration file: %s"
msgstr ""
-#: ../src/daemon/daemon-conf.c:546
+#: ../src/daemon/daemon-conf.c:562
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
msgstr ""
-#: ../src/daemon/daemon-conf.c:622
+#: ../src/daemon/daemon-conf.c:638
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr ""
diff --git a/po/es.po b/po/es.po
index aa839b91..c53af258 100644
--- a/po/es.po
+++ b/po/es.po
@@ -8,16 +8,16 @@ msgid ""
msgstr ""
"Project-Id-Version: PulseAudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-19 04:16+0200\n"
-"PO-Revision-Date: 2009-08-10 14:36-0300\n"
-"Last-Translator: Héctor Daniel Cabrera <h.daniel.cabrera@gmail.com>\n"
+"POT-Creation-Date: 2009-08-22 00:08+0200\n"
+"PO-Revision-Date: 2009-08-19 08:17-0300\n"
+"Last-Translator: Domingo Becker <domingobecker@gmail.com>\n"
"Language-Team: Fedora Spanish <fedora-trans-es@redhat.com>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Poedit-Language: Spanish\n"
-#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666
+#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2676
#, c-format
msgid "%s %s"
msgstr "%s %s"
@@ -80,11 +80,11 @@ msgstr ""
"complemento ladspa> control=<lista separada por comas de valores de control "
"de entrada>"
-#: ../src/pulsecore/sink.c:2650
+#: ../src/pulsecore/sink.c:2660
msgid "Internal Audio"
msgstr "Audio Interno"
-#: ../src/pulsecore/sink.c:2655
+#: ../src/pulsecore/sink.c:2665
msgid "Modem"
msgstr "Módem"
@@ -337,11 +337,16 @@ msgid "Using state directory %s."
msgstr "Utilizando directorio de estado %s."
#: ../src/daemon/main.c:777
+#, fuzzy, c-format
+msgid "Using modules directory %s."
+msgstr "Utilizando directorio de tiempo de ejecución %s."
+
+#: ../src/daemon/main.c:779
#, c-format
msgid "Running in system mode: %s"
msgstr "Ejecutándose en modo de sistema: %s"
-#: ../src/daemon/main.c:780
+#: ../src/daemon/main.c:782
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -358,17 +363,17 @@ msgstr ""
"obtener una explicación acerca de por qué es una mala idea utilizar el modo "
"sistema."
-#: ../src/daemon/main.c:797
+#: ../src/daemon/main.c:799
msgid "pa_pid_file_create() failed."
msgstr "Ha fallado pa_pid_file_create()."
-#: ../src/daemon/main.c:807
+#: ../src/daemon/main.c:809
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr ""
"¡Existen cronómetros de alta resolución fresquitos y disponibles! ¡Bon "
"appetit!"
-#: ../src/daemon/main.c:809
+#: ../src/daemon/main.c:811
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -376,29 +381,29 @@ msgstr ""
"¡Amigo, su kernel deja mucho que desear! ¡El plato que hoy recomienda el "
"chef es Linux con cronómetros de alta resolución activados! "
-#: ../src/daemon/main.c:827
+#: ../src/daemon/main.c:829
msgid "pa_core_new() failed."
msgstr "Falló pa_core_new()."
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:891
msgid "Failed to initialize daemon."
msgstr "Fallo al intentar iniciar el demonio."
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:896
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr ""
"El demonio se ha iniciado sin ningún módulo cargado, y por ello se niega a "
"funcionar."
-#: ../src/daemon/main.c:911
+#: ../src/daemon/main.c:913
msgid "Daemon startup complete."
msgstr "El demonio se inició completamente."
-#: ../src/daemon/main.c:917
+#: ../src/daemon/main.c:919
msgid "Daemon shutdown initiated."
msgstr "Comienza a apagarse el demonio."
-#: ../src/daemon/main.c:939
+#: ../src/daemon/main.c:941
msgid "Daemon terminated."
msgstr "El demonio se ha apagado."
@@ -665,72 +670,72 @@ msgstr "ADVERTENCIA DE COMPATIBILIDAD: %s\n"
msgid "Path: %s\n"
msgstr "Ruta: %s\n"
-#: ../src/daemon/daemon-conf.c:216
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Destino de log inválido '%s'."
-#: ../src/daemon/daemon-conf.c:232
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Nivel de log inválido '%s'."
-#: ../src/daemon/daemon-conf.c:248
+#: ../src/daemon/daemon-conf.c:264
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Método de remuestreo inválido '%s'."
-#: ../src/daemon/daemon-conf.c:271
+#: ../src/daemon/daemon-conf.c:287
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] Rlimit inválido '%s'."
-#: ../src/daemon/daemon-conf.c:278
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] Rlimit no soportado en esta plataforma."
-#: ../src/daemon/daemon-conf.c:294
+#: ../src/daemon/daemon-conf.c:310
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Formato de muestra inválido '%s'."
-#: ../src/daemon/daemon-conf.c:312
+#: ../src/daemon/daemon-conf.c:328
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Tasa de muestra inválida '%s'."
-#: ../src/daemon/daemon-conf.c:336
+#: ../src/daemon/daemon-conf.c:352
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Canales de muestra inválidos '%s'."
-#: ../src/daemon/daemon-conf.c:354
+#: ../src/daemon/daemon-conf.c:370
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] Mapa de canal inválido '%s'."
-#: ../src/daemon/daemon-conf.c:372
+#: ../src/daemon/daemon-conf.c:388
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Cantidad de fragmentoa inválidos '%s'."
-#: ../src/daemon/daemon-conf.c:390
+#: ../src/daemon/daemon-conf.c:406
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Tamaño inválido de fragmento '%s'."
-#: ../src/daemon/daemon-conf.c:408
+#: ../src/daemon/daemon-conf.c:424
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Nivel de nice inválido '%s'."
-#: ../src/daemon/daemon-conf.c:530
+#: ../src/daemon/daemon-conf.c:546
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "No se pudo abrir el archivo de configuración: %s"
-#: ../src/daemon/daemon-conf.c:546
+#: ../src/daemon/daemon-conf.c:562
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -738,15 +743,14 @@ msgstr ""
"El mapa de canal predeterminado especificado tiene un número de canales "
"distinto al especificado como predeterminado."
-#: ../src/daemon/daemon-conf.c:622
+#: ../src/daemon/daemon-conf.c:638
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### Leyendo desde el archivo de confioguración: %s ###\n"
#: ../src/daemon/caps.c:62
-#, fuzzy
msgid "Cleaning up privileges."
-msgstr "Abandonando privilegios de root."
+msgstr "Abandonando privilegios."
#: ../src/daemon/pulseaudio.desktop.in.h:1
msgid "PulseAudio Sound System"
@@ -2251,9 +2255,9 @@ msgid "Daemon not responding."
msgstr "El demonio no responde."
#: ../src/utils/pacmd.c:161
-#, fuzzy, c-format
+#, c-format
msgid "poll(): %s"
-msgstr "fork(): %s"
+msgstr "poll(): %s"
#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
#, c-format
diff --git a/po/fi.po b/po/fi.po
index 8a635ce4..51f591ca 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: git trunk\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-19 04:16+0200\n"
+"POT-Creation-Date: 2009-08-22 00:08+0200\n"
"PO-Revision-Date: 2009-04-05 16:24+0300\n"
"Last-Translator: Ville-Pekka Vainio <vpivaini@cs.helsinki.fi>\n"
"Language-Team: Finnish <laatu@lokalisointi.org>\n"
@@ -16,7 +16,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666
+#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2676
#, c-format
msgid "%s %s"
msgstr ""
@@ -72,11 +72,11 @@ msgid ""
"input control values>"
msgstr ""
-#: ../src/pulsecore/sink.c:2650
+#: ../src/pulsecore/sink.c:2660
msgid "Internal Audio"
msgstr "Sisäinen äänentoisto"
-#: ../src/pulsecore/sink.c:2655
+#: ../src/pulsecore/sink.c:2665
msgid "Modem"
msgstr "Modeemi"
@@ -330,11 +330,16 @@ msgid "Using state directory %s."
msgstr "Käytetään tilahakemistoa %s."
#: ../src/daemon/main.c:777
+#, fuzzy, c-format
+msgid "Using modules directory %s."
+msgstr "Käytetään ajonaikaista hakemistoa %s."
+
+#: ../src/daemon/main.c:779
#, c-format
msgid "Running in system mode: %s"
msgstr "Suoritetaan järjestelmätilassa: %s"
-#: ../src/daemon/main.c:780
+#: ../src/daemon/main.c:782
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -344,15 +349,15 @@ msgid ""
"explanation why system mode is usually a bad idea."
msgstr ""
-#: ../src/daemon/main.c:797
+#: ../src/daemon/main.c:799
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() epäonnistui."
-#: ../src/daemon/main.c:807
+#: ../src/daemon/main.c:809
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Korkean tarkkuuden ajastimet käytettävissä."
-#: ../src/daemon/main.c:809
+#: ../src/daemon/main.c:811
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -360,29 +365,29 @@ msgstr ""
"Hei, ytimesi on kehno! Linux korkean tarkkuuden ajastimien tuella on hyvin "
"suositeltava!"
-#: ../src/daemon/main.c:827
+#: ../src/daemon/main.c:829
msgid "pa_core_new() failed."
msgstr "pa_core_new() epäonnistui."
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:891
msgid "Failed to initialize daemon."
msgstr "Taustaprosessin alustus epäonnistui."
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:896
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr ""
"Taustaprosessin käynnistys ilman ladattavia moduuleita, kieltäydytään "
"toiminnasta."
-#: ../src/daemon/main.c:911
+#: ../src/daemon/main.c:913
msgid "Daemon startup complete."
msgstr "Taustaprosessin käynnistys valmis."
-#: ../src/daemon/main.c:917
+#: ../src/daemon/main.c:919
msgid "Daemon shutdown initiated."
msgstr "Taustaprosessin sulkeminen käynnistetty."
-#: ../src/daemon/main.c:939
+#: ../src/daemon/main.c:941
msgid "Daemon terminated."
msgstr "Taustaprosessi lopetettu."
@@ -653,72 +658,72 @@ msgstr ""
msgid "Path: %s\n"
msgstr "Polku: %s\n"
-#: ../src/daemon/daemon-conf.c:216
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Virheellinen lokikirjoituksen kohde ”%s”."
-#: ../src/daemon/daemon-conf.c:232
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Virheellinen lokikirjoituksen taso ”%s”."
-#: ../src/daemon/daemon-conf.c:248
+#: ../src/daemon/daemon-conf.c:264
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Virheellinen uudelleennäytteistyksen tapa ”%s”."
-#: ../src/daemon/daemon-conf.c:271
+#: ../src/daemon/daemon-conf.c:287
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] Virheellinen rlimit ”%s”."
-#: ../src/daemon/daemon-conf.c:278
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimitiä ei tueta tällä alustalla."
-#: ../src/daemon/daemon-conf.c:294
+#: ../src/daemon/daemon-conf.c:310
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Virheellinen näytemuoto ”%s”."
-#: ../src/daemon/daemon-conf.c:312
+#: ../src/daemon/daemon-conf.c:328
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Virheellinen näytteenottotaajuus ”%s”."
-#: ../src/daemon/daemon-conf.c:336
+#: ../src/daemon/daemon-conf.c:352
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Virheelliset näytekanavat ”%s”."
-#: ../src/daemon/daemon-conf.c:354
+#: ../src/daemon/daemon-conf.c:370
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] Virheellinen kanavakartta ”%s”."
-#: ../src/daemon/daemon-conf.c:372
+#: ../src/daemon/daemon-conf.c:388
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Virheellinen fragmenttimäärä ”%s”."
-#: ../src/daemon/daemon-conf.c:390
+#: ../src/daemon/daemon-conf.c:406
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Virheellinen fragmenttikoko ”%s”."
-#: ../src/daemon/daemon-conf.c:408
+#: ../src/daemon/daemon-conf.c:424
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Virheellinen nice-taso ”%s”."
-#: ../src/daemon/daemon-conf.c:530
+#: ../src/daemon/daemon-conf.c:546
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Asetustiedoston avaaminen epäonnistui: %s"
-#: ../src/daemon/daemon-conf.c:546
+#: ../src/daemon/daemon-conf.c:562
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -726,7 +731,7 @@ msgstr ""
"Kanavien oletusmäärä ja oletuskanavakartan kanavien määrä poikkeavat "
"toisistaan."
-#: ../src/daemon/daemon-conf.c:622
+#: ../src/daemon/daemon-conf.c:638
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### Luettu asetustiedostosta: %s ###\n"
diff --git a/po/fr.po b/po/fr.po
index 31e7635b..ba6122b2 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio trunk\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-19 04:16+0200\n"
+"POT-Creation-Date: 2009-08-22 00:08+0200\n"
"PO-Revision-Date: 2009-04-26 17:22+0200\n"
"Last-Translator: Corentin Perard <corentin.perard@gmail.com>\n"
"Language-Team: French <fedora-trans-fr@redhat.com>\n"
@@ -20,7 +20,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n>1;\n"
-#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666
+#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2676
#, c-format
msgid "%s %s"
msgstr ""
@@ -77,11 +77,11 @@ msgid ""
"input control values>"
msgstr ""
-#: ../src/pulsecore/sink.c:2650
+#: ../src/pulsecore/sink.c:2660
msgid "Internal Audio"
msgstr "Audio interne"
-#: ../src/pulsecore/sink.c:2655
+#: ../src/pulsecore/sink.c:2665
msgid "Modem"
msgstr "Modem"
@@ -336,11 +336,16 @@ msgid "Using state directory %s."
msgstr "Utilisation du répertoire d'état %s."
#: ../src/daemon/main.c:777
+#, fuzzy, c-format
+msgid "Using modules directory %s."
+msgstr "Utilisation du répertoire d'exécution %s."
+
+#: ../src/daemon/main.c:779
#, c-format
msgid "Running in system mode: %s"
msgstr "Exécution en mode système : %s"
-#: ../src/daemon/main.c:780
+#: ../src/daemon/main.c:782
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -350,16 +355,16 @@ msgid ""
"explanation why system mode is usually a bad idea."
msgstr ""
-#: ../src/daemon/main.c:797
+#: ../src/daemon/main.c:799
msgid "pa_pid_file_create() failed."
msgstr "Échec de pa_pid_file_create()."
-#: ../src/daemon/main.c:807
+#: ../src/daemon/main.c:809
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr ""
"De nouvelles horloges à haute résolution sont disponibles ! Bon appétit !"
-#: ../src/daemon/main.c:809
+#: ../src/daemon/main.c:811
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -367,27 +372,27 @@ msgstr ""
"Eh mec, ton noyau il pue ! La recommandation d'aujourd'hui du patron est "
"d'activer les horloges à haute résolution sur ton Linux."
-#: ../src/daemon/main.c:827
+#: ../src/daemon/main.c:829
msgid "pa_core_new() failed."
msgstr "Échec de pa_core_new()."
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:891
msgid "Failed to initialize daemon."
msgstr "Échec lors de l'initialisation du démon"
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:896
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "Démarrage du démon sans aucun module chargé : refus de fonctionner."
-#: ../src/daemon/main.c:911
+#: ../src/daemon/main.c:913
msgid "Daemon startup complete."
msgstr "Démarrage du démon effectué."
-#: ../src/daemon/main.c:917
+#: ../src/daemon/main.c:919
msgid "Daemon shutdown initiated."
msgstr "Fermeture du démon initiée."
-#: ../src/daemon/main.c:939
+#: ../src/daemon/main.c:941
msgid "Daemon terminated."
msgstr "Démon terminé."
@@ -663,72 +668,72 @@ msgid "Path: %s\n"
msgstr "Chemin : %s\n"
# dans les lignes suivantes [%s = nom de fichier: %u = ligne dans celui-ci]
-#: ../src/daemon/daemon-conf.c:216
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Cible du journal « %s » invalide."
-#: ../src/daemon/daemon-conf.c:232
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Niveau du journal « %s » invalide."
-#: ../src/daemon/daemon-conf.c:248
+#: ../src/daemon/daemon-conf.c:264
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Méthode de rééchantillonnage « %s » invalide."
-#: ../src/daemon/daemon-conf.c:271
+#: ../src/daemon/daemon-conf.c:287
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] rlimit « %s » invalide."
-#: ../src/daemon/daemon-conf.c:278
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit n'est pas pris en charge sur cette plateforme."
-#: ../src/daemon/daemon-conf.c:294
+#: ../src/daemon/daemon-conf.c:310
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Format d'échantillon « %s » invalide."
-#: ../src/daemon/daemon-conf.c:312
+#: ../src/daemon/daemon-conf.c:328
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Taux d'échantillonnage « %s » invalide."
-#: ../src/daemon/daemon-conf.c:336
+#: ../src/daemon/daemon-conf.c:352
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Canaux d'échantillonnage « %s » invalide."
-#: ../src/daemon/daemon-conf.c:354
+#: ../src/daemon/daemon-conf.c:370
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] Plan de canaux « %s » invalide."
-#: ../src/daemon/daemon-conf.c:372
+#: ../src/daemon/daemon-conf.c:388
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Nombre de fragments « %s » invalide."
-#: ../src/daemon/daemon-conf.c:390
+#: ../src/daemon/daemon-conf.c:406
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Taille du fragment « %s » invalide."
-#: ../src/daemon/daemon-conf.c:408
+#: ../src/daemon/daemon-conf.c:424
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Niveau de priorité (nice) « %s » invalide."
-#: ../src/daemon/daemon-conf.c:530
+#: ../src/daemon/daemon-conf.c:546
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Échec lors de l'ouverture du fichier de configuration : %s"
-#: ../src/daemon/daemon-conf.c:546
+#: ../src/daemon/daemon-conf.c:562
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -736,7 +741,7 @@ msgstr ""
"Le plan de canaux spécifié par défaut a un nombre de canaux différent du "
"nombre spécifié par défaut."
-#: ../src/daemon/daemon-conf.c:622
+#: ../src/daemon/daemon-conf.c:638
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### Lecture à partir du fichier de configuration : %s ###\n"
diff --git a/po/gu.po b/po/gu.po
index 7d00130b..f454c3f0 100644
--- a/po/gu.po
+++ b/po/gu.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-19 04:16+0200\n"
+"POT-Creation-Date: 2009-08-22 00:08+0200\n"
"PO-Revision-Date: 2009-04-07 14:27+0530\n"
"Last-Translator: Sweta Kothari <swkothar@redhat.com>\n"
"Language-Team: Gujarati\n"
@@ -17,7 +17,7 @@ msgstr ""
"X-Generator: KBabel 1.11.4\n"
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
-#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666
+#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2676
#, c-format
msgid "%s %s"
msgstr ""
@@ -73,11 +73,11 @@ msgid ""
"input control values>"
msgstr ""
-#: ../src/pulsecore/sink.c:2650
+#: ../src/pulsecore/sink.c:2660
msgid "Internal Audio"
msgstr "આંતરિક ઓડિયો"
-#: ../src/pulsecore/sink.c:2655
+#: ../src/pulsecore/sink.c:2665
msgid "Modem"
msgstr "મોડેમ"
@@ -326,11 +326,16 @@ msgid "Using state directory %s."
msgstr "સ્થિતિ ડિરેક્ટરી %s ને વાપરી રહ્યા છે."
#: ../src/daemon/main.c:777
+#, fuzzy, c-format
+msgid "Using modules directory %s."
+msgstr "રનટાઇમ ડિરેક્ટરી %s ને વાપરી રહ્યા છે."
+
+#: ../src/daemon/main.c:779
#, c-format
msgid "Running in system mode: %s"
msgstr "સિસ્ટમ સ્થિતિમાં ચાલી રહ્યુ છે: %s"
-#: ../src/daemon/main.c:780
+#: ../src/daemon/main.c:782
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -340,15 +345,15 @@ msgid ""
"explanation why system mode is usually a bad idea."
msgstr ""
-#: ../src/daemon/main.c:797
+#: ../src/daemon/main.c:799
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() નિષ્ફળ."
-#: ../src/daemon/main.c:807
+#: ../src/daemon/main.c:809
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "તાજુ high-resolution ટાઇમરો ઉપલ્બધ છે! બોન એપેટાઇટ!"
-#: ../src/daemon/main.c:809
+#: ../src/daemon/main.c:811
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -356,27 +361,27 @@ msgstr ""
"મિત્ર, તમારુ કર્નલમાં ગડબડ છે! રસોઇયાનું આજે ભલામણ એ સક્રિય થયેલ high-resolution "
"ટાઇમરો સાથે Linux નું છે!"
-#: ../src/daemon/main.c:827
+#: ../src/daemon/main.c:829
msgid "pa_core_new() failed."
msgstr "pa_core_new() નિષ્ફળ."
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:891
msgid "Failed to initialize daemon."
msgstr "ડિમનને શરૂ કરવામાં નિષ્ફળ."
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:896
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "કોઇપણ લોડ થયેલ મોડ્યુલો વગર ડિમનને શરૂ કરો, કામ કરવા માટે ફરી શરૂ કરી રહ્યા છે."
-#: ../src/daemon/main.c:911
+#: ../src/daemon/main.c:913
msgid "Daemon startup complete."
msgstr "ડિમન પારંભ કરવાનું સમાપ્ત છે."
-#: ../src/daemon/main.c:917
+#: ../src/daemon/main.c:919
msgid "Daemon shutdown initiated."
msgstr "ડિમનને બંધ કરવાનું પ્રારંભ થયેલ છે."
-#: ../src/daemon/main.c:939
+#: ../src/daemon/main.c:941
msgid "Daemon terminated."
msgstr "ડિમનનો અંત આવેલ છે."
@@ -632,79 +637,79 @@ msgstr ""
msgid "Path: %s\n"
msgstr "પાથ: %s\n"
-#: ../src/daemon/daemon-conf.c:216
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] અયોગ્ય લોગ લક્ષ્ય '%s'."
-#: ../src/daemon/daemon-conf.c:232
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] અયોગ્ય લોગ સ્તર '%s'."
-#: ../src/daemon/daemon-conf.c:248
+#: ../src/daemon/daemon-conf.c:264
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] અયોગ્ય resample પદ્દતિ '%s'."
-#: ../src/daemon/daemon-conf.c:271
+#: ../src/daemon/daemon-conf.c:287
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] અયોગ્ય rlimit '%s'."
-#: ../src/daemon/daemon-conf.c:278
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit એ આ પ્લેટફોર્મ પર આધારભૂત નથી."
-#: ../src/daemon/daemon-conf.c:294
+#: ../src/daemon/daemon-conf.c:310
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] અયોગ્ય નમૂના બંધારણ '%s'."
-#: ../src/daemon/daemon-conf.c:312
+#: ../src/daemon/daemon-conf.c:328
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] અયોગ્ય નમૂના દર '%s'."
-#: ../src/daemon/daemon-conf.c:336
+#: ../src/daemon/daemon-conf.c:352
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] અયોગ્ય નમૂના ચેનલો '%s'."
-#: ../src/daemon/daemon-conf.c:354
+#: ../src/daemon/daemon-conf.c:370
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] અયોગ્ય ચેનલ મેપ '%s'."
-#: ../src/daemon/daemon-conf.c:372
+#: ../src/daemon/daemon-conf.c:388
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] અયોગ્ય ફ્રેગમેન્ટોનાં નંબર '%s'."
-#: ../src/daemon/daemon-conf.c:390
+#: ../src/daemon/daemon-conf.c:406
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] અયોગ્ય ફ્રેગમેન્ટ માપ '%s'."
-#: ../src/daemon/daemon-conf.c:408
+#: ../src/daemon/daemon-conf.c:424
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] અયોગ્ય સારુ સ્તર '%s'."
-#: ../src/daemon/daemon-conf.c:530
+#: ../src/daemon/daemon-conf.c:546
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "રૂપરેખાંકન ફાઇલને ખોલવાનું નિષ્ફળ: %s"
-#: ../src/daemon/daemon-conf.c:546
+#: ../src/daemon/daemon-conf.c:562
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
msgstr ""
"સ્પષ્ટ થયેલ મૂળભૂત ચેનલ મેપ પાસે સ્પષ્ટ થયેલ ચેનલોની મૂળભૂત સંખ્યા કરતા વિવિધ ચેનલોની સંખ્યા છે."
-#: ../src/daemon/daemon-conf.c:622
+#: ../src/daemon/daemon-conf.c:638
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### રૂપરેખાંકન ફાઇલમાંથી વાંચો: %s ###\n"
diff --git a/po/hi.po b/po/hi.po
index 080931ec..d784e714 100644
--- a/po/hi.po
+++ b/po/hi.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio.master-tx.pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-19 04:16+0200\n"
+"POT-Creation-Date: 2009-08-22 00:08+0200\n"
"PO-Revision-Date: 2009-06-08 12:01+0530\n"
"Last-Translator: Rajesh Ranjan <rajesh672@gmail.com>\n"
"Language-Team: Hindi <hindi.sf.net>\n"
@@ -20,7 +20,7 @@ msgstr ""
"\n"
"\n"
-#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666
+#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2676
#, c-format
msgid "%s %s"
msgstr ""
@@ -75,11 +75,11 @@ msgid ""
"input control values>"
msgstr ""
-#: ../src/pulsecore/sink.c:2650
+#: ../src/pulsecore/sink.c:2660
msgid "Internal Audio"
msgstr "आंतरिक ऑडियो"
-#: ../src/pulsecore/sink.c:2655
+#: ../src/pulsecore/sink.c:2665
msgid "Modem"
msgstr "मॉडेम"
@@ -326,11 +326,16 @@ msgid "Using state directory %s."
msgstr "स्टेट निर्देशिका %s का प्रयोग कर रहा है."
#: ../src/daemon/main.c:777
+#, fuzzy, c-format
+msgid "Using modules directory %s."
+msgstr "रनटाइम निर्देशिका %s का प्रयोग कर रहा है."
+
+#: ../src/daemon/main.c:779
#, c-format
msgid "Running in system mode: %s"
msgstr "तंत्र मोड में चल रहा है: %s"
-#: ../src/daemon/main.c:780
+#: ../src/daemon/main.c:782
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -340,42 +345,42 @@ msgid ""
"explanation why system mode is usually a bad idea."
msgstr ""
-#: ../src/daemon/main.c:797
+#: ../src/daemon/main.c:799
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() विफल."
-#: ../src/daemon/main.c:807
+#: ../src/daemon/main.c:809
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "ताज़ा उच्च विभेदन टाइमर उपलब्ध! आनंद लें!"
-#: ../src/daemon/main.c:809
+#: ../src/daemon/main.c:811
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
msgstr ""
"आपका कर्नेल बुरी स्थिति में है! सलाह है कि उच्च विभेदन युक्त लिनक्स सक्रिय किया जाना चाहिए!"
-#: ../src/daemon/main.c:827
+#: ../src/daemon/main.c:829
msgid "pa_core_new() failed."
msgstr "pa_core_new() विफल."
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:891
msgid "Failed to initialize daemon."
msgstr "डेमॉन आरंभ करने में विफल."
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:896
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "बिना लोड मॉड्यूल के डेमॉन आरंभ, काम करने से अस्वीकार कर रहा है."
-#: ../src/daemon/main.c:911
+#: ../src/daemon/main.c:913
msgid "Daemon startup complete."
msgstr "डेमॉन आरंभन पूर्ण."
-#: ../src/daemon/main.c:917
+#: ../src/daemon/main.c:919
msgid "Daemon shutdown initiated."
msgstr "डेमॉन बन्द किया जाना आरंभ."
-#: ../src/daemon/main.c:939
+#: ../src/daemon/main.c:941
msgid "Daemon terminated."
msgstr "डेमॉन अवरोधित."
@@ -632,72 +637,72 @@ msgstr ""
msgid "Path: %s\n"
msgstr "पथ: %s\n"
-#: ../src/daemon/daemon-conf.c:216
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] अवैध लॉग लक्ष्य '%s'."
-#: ../src/daemon/daemon-conf.c:232
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] अवैध लॉग स्तर '%s'."
-#: ../src/daemon/daemon-conf.c:248
+#: ../src/daemon/daemon-conf.c:264
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] अवैध पुनः नमूना विधि '%s'."
-#: ../src/daemon/daemon-conf.c:271
+#: ../src/daemon/daemon-conf.c:287
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] अवैध rlimit '%s'."
-#: ../src/daemon/daemon-conf.c:278
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit इस प्लेटफॉर्म पर समर्थित नहीं."
-#: ../src/daemon/daemon-conf.c:294
+#: ../src/daemon/daemon-conf.c:310
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] अवैध प्रतिदर्श प्रारूप '%s'."
-#: ../src/daemon/daemon-conf.c:312
+#: ../src/daemon/daemon-conf.c:328
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] अवैध प्रतिदर्श दर '%s'."
-#: ../src/daemon/daemon-conf.c:336
+#: ../src/daemon/daemon-conf.c:352
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] अवैध प्रतिदर्श चैनल '%s'."
-#: ../src/daemon/daemon-conf.c:354
+#: ../src/daemon/daemon-conf.c:370
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] अवैध चैनल मानचित्र '%s'."
-#: ../src/daemon/daemon-conf.c:372
+#: ../src/daemon/daemon-conf.c:388
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] टुकड़े '%s' की अवैध संख्या."
-#: ../src/daemon/daemon-conf.c:390
+#: ../src/daemon/daemon-conf.c:406
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] अवैध खंड आकार '%s'."
-#: ../src/daemon/daemon-conf.c:408
+#: ../src/daemon/daemon-conf.c:424
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] अवैध नाइस स्तर '%s'."
-#: ../src/daemon/daemon-conf.c:530
+#: ../src/daemon/daemon-conf.c:546
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "विन्यास फ़ाइल खोलने में विफल: %s"
-#: ../src/daemon/daemon-conf.c:546
+#: ../src/daemon/daemon-conf.c:562
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -705,7 +710,7 @@ msgstr ""
"निर्दिष्ट तयशुदा चैनल मानचित्र के पास चैनल की भिन्न संख्या है चैनल की तयशुदा निर्दिष्ट संख्या "
"के बनिस्पत."
-#: ../src/daemon/daemon-conf.c:622
+#: ../src/daemon/daemon-conf.c:638
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### विन्यास फ़ाइल से पढ़ें: %s ###\n"
diff --git a/po/it.po b/po/it.po
index c952290e..de337c2d 100644
--- a/po/it.po
+++ b/po/it.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-19 04:16+0200\n"
+"POT-Creation-Date: 2009-08-22 00:08+0200\n"
"PO-Revision-Date: 2009-04-20 22:34+0200\n"
"Last-Translator: mario_santagiuliana <mario at marionline.it>\n"
"Language-Team: Italian <fedora-trans-it at redhat.com>\n"
@@ -19,7 +19,7 @@ msgstr ""
"X-Generator: Lokalize 0.3\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666
+#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2676
#, c-format
msgid "%s %s"
msgstr ""
@@ -74,11 +74,11 @@ msgid ""
"input control values>"
msgstr ""
-#: ../src/pulsecore/sink.c:2650
+#: ../src/pulsecore/sink.c:2660
msgid "Internal Audio"
msgstr "Audio interno"
-#: ../src/pulsecore/sink.c:2655
+#: ../src/pulsecore/sink.c:2665
msgid "Modem"
msgstr "Modem"
@@ -335,11 +335,16 @@ msgid "Using state directory %s."
msgstr "In uso directory di stato %s."
#: ../src/daemon/main.c:777
+#, fuzzy, c-format
+msgid "Using modules directory %s."
+msgstr "In uso directory di runtime %s."
+
+#: ../src/daemon/main.c:779
#, c-format
msgid "Running in system mode: %s"
msgstr "In esecuzione in modalità sistema: %s"
-#: ../src/daemon/main.c:780
+#: ../src/daemon/main.c:782
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -349,17 +354,17 @@ msgid ""
"explanation why system mode is usually a bad idea."
msgstr ""
-#: ../src/daemon/main.c:797
+#: ../src/daemon/main.c:799
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() non riuscita."
# io mi domando e dico..... mah!
-#: ../src/daemon/main.c:807
+#: ../src/daemon/main.c:809
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Disponibili timer high-resolution freschi freschi! Buon appetito!"
# $REPEAT_PREVIOUS_COMMENT_HERE
-#: ../src/daemon/main.c:809
+#: ../src/daemon/main.c:811
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -367,27 +372,27 @@ msgstr ""
"Hey, questo kernel è andato a male! Lo chef oggi raccomanda Linux con i "
"timer high-resolution abilitati!"
-#: ../src/daemon/main.c:827
+#: ../src/daemon/main.c:829
msgid "pa_core_new() failed."
msgstr "pa_core_new() non riuscita."
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:891
msgid "Failed to initialize daemon."
msgstr "Inizializzazione del demone non riuscita."
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:896
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "Avvio del demone senza alcun modulo caricato, rifiuta di lavorare."
-#: ../src/daemon/main.c:911
+#: ../src/daemon/main.c:913
msgid "Daemon startup complete."
msgstr "Completato l'avvio del demone."
-#: ../src/daemon/main.c:917
+#: ../src/daemon/main.c:919
msgid "Daemon shutdown initiated."
msgstr "Iniziato l'arresto del demone."
-#: ../src/daemon/main.c:939
+#: ../src/daemon/main.c:941
msgid "Daemon terminated."
msgstr "Demone terminato."
@@ -678,73 +683,73 @@ msgstr ""
msgid "Path: %s\n"
msgstr "Percorso: %s\n"
-#: ../src/daemon/daemon-conf.c:216
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Destinazione di registro \"%s\" non valida."
-#: ../src/daemon/daemon-conf.c:232
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Livello di registro \"%s\" non valido."
-#: ../src/daemon/daemon-conf.c:248
+#: ../src/daemon/daemon-conf.c:264
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Metodo di ricampionamento \"%s\" non valido."
-#: ../src/daemon/daemon-conf.c:271
+#: ../src/daemon/daemon-conf.c:287
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] rlimit \"%s\" non valido."
-#: ../src/daemon/daemon-conf.c:278
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit non supportato su questa piattaforma."
# o campionamento?? ma campionamento non è sampling?
-#: ../src/daemon/daemon-conf.c:294
+#: ../src/daemon/daemon-conf.c:310
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Formato di campionamento \"%s\" non valido."
-#: ../src/daemon/daemon-conf.c:312
+#: ../src/daemon/daemon-conf.c:328
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Frequenza di campionamento '%s' non valida."
-#: ../src/daemon/daemon-conf.c:336
+#: ../src/daemon/daemon-conf.c:352
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Canali di campionamento \"%s\" non validi."
-#: ../src/daemon/daemon-conf.c:354
+#: ../src/daemon/daemon-conf.c:370
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] Mappa del canale \"%s\" non valida."
-#: ../src/daemon/daemon-conf.c:372
+#: ../src/daemon/daemon-conf.c:388
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Numero di frammenti \"%s\" non valido."
-#: ../src/daemon/daemon-conf.c:390
+#: ../src/daemon/daemon-conf.c:406
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Dimensione dei frammenti \"%s\" non valida."
-#: ../src/daemon/daemon-conf.c:408
+#: ../src/daemon/daemon-conf.c:424
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Livello di nice \"%s\" non valido."
-#: ../src/daemon/daemon-conf.c:530
+#: ../src/daemon/daemon-conf.c:546
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Apertura del file di configurazione non riuscita: %s"
-#: ../src/daemon/daemon-conf.c:546
+#: ../src/daemon/daemon-conf.c:562
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -752,7 +757,7 @@ msgstr ""
"La mappa del canale predefinita specificata presenta un numero diverso di "
"canali rispetto a quello predefinito specificato."
-#: ../src/daemon/daemon-conf.c:622
+#: ../src/daemon/daemon-conf.c:638
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### Lettura dal file di configurazione: %s ###\n"
diff --git a/po/kn.po b/po/kn.po
index 49b05cf3..53705a98 100644
--- a/po/kn.po
+++ b/po/kn.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio.master-tx.pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-19 04:16+0200\n"
+"POT-Creation-Date: 2009-08-22 00:08+0200\n"
"PO-Revision-Date: 2009-04-07 11:13+0530\n"
"Last-Translator: Shankar Prasad <svenkate@redhat.com>\n"
"Language-Team: Kannada <en@li.org>\n"
@@ -17,7 +17,7 @@ msgstr ""
"X-Generator: KBabel 1.11.4\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666
+#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2676
#, c-format
msgid "%s %s"
msgstr ""
@@ -71,11 +71,11 @@ msgid ""
"input control values>"
msgstr ""
-#: ../src/pulsecore/sink.c:2650
+#: ../src/pulsecore/sink.c:2660
msgid "Internal Audio"
msgstr "ಆಂತರಿಕ ಆಡಿಯೊ"
-#: ../src/pulsecore/sink.c:2655
+#: ../src/pulsecore/sink.c:2665
msgid "Modem"
msgstr "ಮಾಡೆಮ್:"
@@ -331,11 +331,16 @@ msgid "Using state directory %s."
msgstr "ಸ್ಥಿತಿ ಕೋಶ %s ಅನ್ನು ಬಳಸಿಕೊಂಡು."
#: ../src/daemon/main.c:777
+#, fuzzy, c-format
+msgid "Using modules directory %s."
+msgstr "ಚಲಾವಣಾಸಮಯ(ರನ್‌ಟೈಮ್) ಕೋಶ %s ಅನ್ನು ಬಳಸಿಕೊಂಡು."
+
+#: ../src/daemon/main.c:779
#, c-format
msgid "Running in system mode: %s"
msgstr "ವ್ಯವಸ್ಥೆಯ ಕ್ರಮದಲ್ಲಿ ಚಲಾಯಿಸಲಾಗುತ್ತಿದೆ: %s"
-#: ../src/daemon/main.c:780
+#: ../src/daemon/main.c:782
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -345,15 +350,15 @@ msgid ""
"explanation why system mode is usually a bad idea."
msgstr ""
-#: ../src/daemon/main.c:797
+#: ../src/daemon/main.c:799
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() ವಿಫಲಗೊಂಡಿದೆ."
-#: ../src/daemon/main.c:807
+#: ../src/daemon/main.c:809
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "ತಾಜಾ ರೆಸಲ್ಯೂಶನ್ ಟೈಮರ್ ಲಭ್ಯವಿದೆ! Bon appetit!"
-#: ../src/daemon/main.c:809
+#: ../src/daemon/main.c:811
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -361,27 +366,27 @@ msgstr ""
"ಮಹಾಶಯರೆ, ನಿಮ್ಮ ಕರ್ನಲ್ ಕೊಳೆತುಹೋಗಿದೆ! ಅತ್ಯುತ್ತಮ ರೆಸಲ್ಯೂಶನ್ ಟೈಮರ್ ಅನ್ನು ಶಕ್ತಗೊಳಿಸಲಾದ "
"ಲಿನಕ್ಸನ್ನು ಬಳಸುವಂತೆ ಅಡುಗೆಯವರು ಸಲಹೆ ಮಾಡುತ್ತಿದ್ದಾರೆ!"
-#: ../src/daemon/main.c:827
+#: ../src/daemon/main.c:829
msgid "pa_core_new() failed."
msgstr "pa_core_new() ವಿಫಲಗೊಂಡಿದೆ."
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:891
msgid "Failed to initialize daemon."
msgstr "ಡೀಮನ್ ಅನ್ನು ಆರಂಭಿಸಲು ವಿಫಲಗೊಂಡಿದೆ."
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:896
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "ಲೋಡ್ ಮಾಡಲಾದ ಯಾವುದೆ ಡೀಮನ್ ಇಲ್ಲದೆ ಆರಂಭಗೊಂಡಿದೆ, ಕೆಲಸ ಮಾಡಲು ನಿರಾಕರಿಸಿದೆ."
-#: ../src/daemon/main.c:911
+#: ../src/daemon/main.c:913
msgid "Daemon startup complete."
msgstr "ಡೀಮನ್ ಆರಂಭಗೊಳಿಕೆ ಪೂರ್ಣಗೊಂಡಿದೆ."
-#: ../src/daemon/main.c:917
+#: ../src/daemon/main.c:919
msgid "Daemon shutdown initiated."
msgstr "ಡೀಮನ್ ಸ್ಥಗಿತಗೊಳಿಕೆಯನ್ನು ಆರಂಭಿಸಲಾಗಿದೆ."
-#: ../src/daemon/main.c:939
+#: ../src/daemon/main.c:941
msgid "Daemon terminated."
msgstr "ಡೀಮನ್ ಅನ್ನು ಅಂತ್ಯಗೊಳಿಸಲಾಗಿದೆ."
@@ -643,72 +648,72 @@ msgstr ""
msgid "Path: %s\n"
msgstr "ಮಾರ್ಗ: %s\n"
-#: ../src/daemon/daemon-conf.c:216
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] ಅಮಾನ್ಯವಾದ ದಾಖಲೆ ಗುರಿ '%s'."
-#: ../src/daemon/daemon-conf.c:232
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] ಅಮಾನ್ಯವಾದ ದಾಖಲೆ ಮಟ್ಟ '%s'."
-#: ../src/daemon/daemon-conf.c:248
+#: ../src/daemon/daemon-conf.c:264
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] ಅಮಾನ್ಯವಾದ ಮರುನಮೂನೆ ವಿಧಾನ '%s'."
-#: ../src/daemon/daemon-conf.c:271
+#: ../src/daemon/daemon-conf.c:287
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] ಅಮಾನ್ಯವಾದ rlimit '%s'."
-#: ../src/daemon/daemon-conf.c:278
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit ಗೆ ಈ ಪ್ಲಾಟ್‌ಫಾರ್ಮಿನಲ್ಲಿ ಬೆಂಬಲವಿಲ್ಲ."
-#: ../src/daemon/daemon-conf.c:294
+#: ../src/daemon/daemon-conf.c:310
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] ಅಮಾನ್ಯವಾದ ನಮೂನೆ ರಚನೆ '%s'."
-#: ../src/daemon/daemon-conf.c:312
+#: ../src/daemon/daemon-conf.c:328
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] ಅಮಾನ್ಯವಾದ ನಮೂನೆ ದರ '%s'."
-#: ../src/daemon/daemon-conf.c:336
+#: ../src/daemon/daemon-conf.c:352
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] ಅಮಾನ್ಯವಾದ ನಮೂನೆ ಚಾನಲ್‌ಗಳು '%s'."
-#: ../src/daemon/daemon-conf.c:354
+#: ../src/daemon/daemon-conf.c:370
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] ಅಮಾನ್ಯವಾದ ಚಾನಲ್ ನಕ್ಷೆ '%s'."
-#: ../src/daemon/daemon-conf.c:372
+#: ../src/daemon/daemon-conf.c:388
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] ಅಮಾನ್ತವಾದ ಫ್ರಾಗ್ಮೆಂಟುಗಳ ಸಂಖ್ಯೆ '%s'."
-#: ../src/daemon/daemon-conf.c:390
+#: ../src/daemon/daemon-conf.c:406
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] ಅಮಾನ್ಯವಾದ ಫ್ರಾಗ್ಮೆಂಟ್ ಗಾತ್ರ '%s'."
-#: ../src/daemon/daemon-conf.c:408
+#: ../src/daemon/daemon-conf.c:424
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] ಅಮಾನ್ಯವಾದ ನೈಸ್‌ ಹಂತ '%s'."
-#: ../src/daemon/daemon-conf.c:530
+#: ../src/daemon/daemon-conf.c:546
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "ಸಂರಚನಾ ಕಡತವನ್ನು ತೆರೆಯಲು ವಿಫಲಗೊಂಡಿದೆ: %s"
-#: ../src/daemon/daemon-conf.c:546
+#: ../src/daemon/daemon-conf.c:562
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -716,7 +721,7 @@ msgstr ""
"ಸೂಚಿಸಲಾದ ಪೂರ್ವನಿಯೋಜಿತ ಚಾನಲ್ ನಕ್ಷೆಯು ಪೂರ್ವನಿಯೋಜಿತ ಚಾನಲ್‌ಗಳ ಸಂಖ್ಯೆಗಳಿಗಿಂತ ವಿಭಿನ್ನವಾದ "
"ಮಾರ್ಗಗಳ ಸಂಖ್ಯೆಯನ್ನು ಹೊಂದಿದೆ."
-#: ../src/daemon/daemon-conf.c:622
+#: ../src/daemon/daemon-conf.c:638
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### ಸಂರಚನಾ ಕಡತದಿಂದ ಓದು: %s ###\n"
diff --git a/po/ko.po b/po/ko.po
index 30f0341a..bcb746f6 100644
--- a/po/ko.po
+++ b/po/ko.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-19 04:16+0200\n"
+"POT-Creation-Date: 2009-08-22 00:08+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -16,7 +16,7 @@ msgstr ""
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666
+#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2676
#, c-format
msgid "%s %s"
msgstr ""
@@ -61,11 +61,11 @@ msgid ""
"input control values>"
msgstr ""
-#: ../src/pulsecore/sink.c:2650
+#: ../src/pulsecore/sink.c:2660
msgid "Internal Audio"
msgstr ""
-#: ../src/pulsecore/sink.c:2655
+#: ../src/pulsecore/sink.c:2665
msgid "Modem"
msgstr ""
@@ -312,10 +312,15 @@ msgstr ""
#: ../src/daemon/main.c:777
#, c-format
+msgid "Using modules directory %s."
+msgstr ""
+
+#: ../src/daemon/main.c:779
+#, c-format
msgid "Running in system mode: %s"
msgstr ""
-#: ../src/daemon/main.c:780
+#: ../src/daemon/main.c:782
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -325,41 +330,41 @@ msgid ""
"explanation why system mode is usually a bad idea."
msgstr ""
-#: ../src/daemon/main.c:797
+#: ../src/daemon/main.c:799
msgid "pa_pid_file_create() failed."
msgstr ""
-#: ../src/daemon/main.c:807
+#: ../src/daemon/main.c:809
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr ""
-#: ../src/daemon/main.c:809
+#: ../src/daemon/main.c:811
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
msgstr ""
-#: ../src/daemon/main.c:827
+#: ../src/daemon/main.c:829
msgid "pa_core_new() failed."
msgstr ""
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:891
msgid "Failed to initialize daemon."
msgstr ""
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:896
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr ""
-#: ../src/daemon/main.c:911
+#: ../src/daemon/main.c:913
msgid "Daemon startup complete."
msgstr ""
-#: ../src/daemon/main.c:917
+#: ../src/daemon/main.c:919
msgid "Daemon shutdown initiated."
msgstr ""
-#: ../src/daemon/main.c:939
+#: ../src/daemon/main.c:941
msgid "Daemon terminated."
msgstr ""
@@ -545,78 +550,78 @@ msgstr ""
msgid "Path: %s\n"
msgstr ""
-#: ../src/daemon/daemon-conf.c:216
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:232
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:248
+#: ../src/daemon/daemon-conf.c:264
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:271
+#: ../src/daemon/daemon-conf.c:287
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:278
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr ""
-#: ../src/daemon/daemon-conf.c:294
+#: ../src/daemon/daemon-conf.c:310
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:312
+#: ../src/daemon/daemon-conf.c:328
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:336
+#: ../src/daemon/daemon-conf.c:352
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:354
+#: ../src/daemon/daemon-conf.c:370
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:372
+#: ../src/daemon/daemon-conf.c:388
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:390
+#: ../src/daemon/daemon-conf.c:406
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:408
+#: ../src/daemon/daemon-conf.c:424
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:530
+#: ../src/daemon/daemon-conf.c:546
#, c-format
msgid "Failed to open configuration file: %s"
msgstr ""
-#: ../src/daemon/daemon-conf.c:546
+#: ../src/daemon/daemon-conf.c:562
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
msgstr ""
-#: ../src/daemon/daemon-conf.c:622
+#: ../src/daemon/daemon-conf.c:638
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr ""
diff --git a/po/mr.po b/po/mr.po
index 6980ccea..2538adcc 100644
--- a/po/mr.po
+++ b/po/mr.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio.master-tx.pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-19 04:16+0200\n"
+"POT-Creation-Date: 2009-08-22 00:08+0200\n"
"PO-Revision-Date: 2009-04-06 13:43+0530\n"
"Last-Translator: Sandeep Shedmake <sandeep.shedmake@gmail.com>\n"
"Language-Team: marathi\n"
@@ -17,7 +17,7 @@ msgstr ""
"X-Generator: KBabel 1.11.4\n"
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
-#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666
+#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2676
#, c-format
msgid "%s %s"
msgstr ""
@@ -71,11 +71,11 @@ msgid ""
"input control values>"
msgstr ""
-#: ../src/pulsecore/sink.c:2650
+#: ../src/pulsecore/sink.c:2660
msgid "Internal Audio"
msgstr "आंतरीक ऑडिओ"
-#: ../src/pulsecore/sink.c:2655
+#: ../src/pulsecore/sink.c:2665
msgid "Modem"
msgstr "मोडेम"
@@ -322,11 +322,16 @@ msgid "Using state directory %s."
msgstr "स्थिती डिरेक्ट्री %s वापरत आहे."
#: ../src/daemon/main.c:777
+#, fuzzy, c-format
+msgid "Using modules directory %s."
+msgstr "रनटाईम डिरेक्ट्री %s वापरत आहे."
+
+#: ../src/daemon/main.c:779
#, c-format
msgid "Running in system mode: %s"
msgstr "प्रणाली पद्धतीत कार्यरत: %s"
-#: ../src/daemon/main.c:780
+#: ../src/daemon/main.c:782
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -336,15 +341,15 @@ msgid ""
"explanation why system mode is usually a bad idea."
msgstr ""
-#: ../src/daemon/main.c:797
+#: ../src/daemon/main.c:799
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() अपयशी."
-#: ../src/daemon/main.c:807
+#: ../src/daemon/main.c:809
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "नवीन उच्च-बिंदूता टाइमर उपलब्ध! Bon appetit!"
-#: ../src/daemon/main.c:809
+#: ../src/daemon/main.c:811
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -352,27 +357,27 @@ msgstr ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
-#: ../src/daemon/main.c:827
+#: ../src/daemon/main.c:829
msgid "pa_core_new() failed."
msgstr "pa_core_new() अपयशी."
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:891
msgid "Failed to initialize daemon."
msgstr "डिमन प्रारंभ करण्यास अपयशी."
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:896
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "विना विभाग दाखल केल्यास डिमन प्रारंभ झाले, कार्य करण्यास नकार."
-#: ../src/daemon/main.c:911
+#: ../src/daemon/main.c:913
msgid "Daemon startup complete."
msgstr "डिमन स्टार्टअप पूर्ण झाले."
-#: ../src/daemon/main.c:917
+#: ../src/daemon/main.c:919
msgid "Daemon shutdown initiated."
msgstr "डिमन पूर्णपणे बंद करण्यास प्रारंभ केले."
-#: ../src/daemon/main.c:939
+#: ../src/daemon/main.c:941
msgid "Daemon terminated."
msgstr "डिमन नष्ट केले."
@@ -629,72 +634,72 @@ msgstr ""
msgid "Path: %s\n"
msgstr "मार्ग: %s\n"
-#: ../src/daemon/daemon-conf.c:216
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] अवैध लॉग लक्ष्य '%s'."
-#: ../src/daemon/daemon-conf.c:232
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] अवैध लॉग स्तर '%s'."
-#: ../src/daemon/daemon-conf.c:248
+#: ../src/daemon/daemon-conf.c:264
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] अवैध पुन्ह सॅम्पल पद्धत '%s'."
-#: ../src/daemon/daemon-conf.c:271
+#: ../src/daemon/daemon-conf.c:287
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] अवैध rlimit '%s'."
-#: ../src/daemon/daemon-conf.c:278
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit या प्लॅटफॉर्म वर समर्थीत नाही."
-#: ../src/daemon/daemon-conf.c:294
+#: ../src/daemon/daemon-conf.c:310
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] अवैध सॅम्पल स्वरूप '%s'."
-#: ../src/daemon/daemon-conf.c:312
+#: ../src/daemon/daemon-conf.c:328
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] अवैध सॅम्पल दर '%s'."
-#: ../src/daemon/daemon-conf.c:336
+#: ../src/daemon/daemon-conf.c:352
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] अवैध सॅम्पल मार्ग '%s'."
-#: ../src/daemon/daemon-conf.c:354
+#: ../src/daemon/daemon-conf.c:370
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] अवैध मार्ग मॅप '%s'."
-#: ../src/daemon/daemon-conf.c:372
+#: ../src/daemon/daemon-conf.c:388
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] अवैध तुकडे '%s' यांची एकूण संख्या."
-#: ../src/daemon/daemon-conf.c:390
+#: ../src/daemon/daemon-conf.c:406
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] अवैध तुकड्याचे आकार '%s'."
-#: ../src/daemon/daemon-conf.c:408
+#: ../src/daemon/daemon-conf.c:424
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] अवैध nice स्तर '%s'."
-#: ../src/daemon/daemon-conf.c:530
+#: ../src/daemon/daemon-conf.c:546
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "संयोजना फाइल उघडण्यास अपयशी: %s"
-#: ../src/daemon/daemon-conf.c:546
+#: ../src/daemon/daemon-conf.c:562
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -702,7 +707,7 @@ msgstr ""
"निश्चित मुलभूत वाहिनी मॅपकडे निश्चित एकूण मुलभूत वाहिनी पेक्षा वेगळे वाहिनी संख्या "
"समाविष्टीत आहे."
-#: ../src/daemon/daemon-conf.c:622
+#: ../src/daemon/daemon-conf.c:638
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### संयोजना फाइल: %s पासून वाचा ###\n"
diff --git a/po/nl.po b/po/nl.po
index 92a9d986..e9be9374 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio.master-tx\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-19 04:16+0200\n"
+"POT-Creation-Date: 2009-08-22 00:08+0200\n"
"PO-Revision-Date: 2009-04-15 21:04+0200\n"
"Last-Translator: Geert Warrink <geert.warrink@onsnet.nu>\n"
"Language-Team: Dutch <nl@li.org>\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666
+#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2676
#, c-format
msgid "%s %s"
msgstr ""
@@ -74,11 +74,11 @@ msgid ""
"input control values>"
msgstr ""
-#: ../src/pulsecore/sink.c:2650
+#: ../src/pulsecore/sink.c:2660
msgid "Internal Audio"
msgstr "Intern geluid"
-#: ../src/pulsecore/sink.c:2655
+#: ../src/pulsecore/sink.c:2665
msgid "Modem"
msgstr "Modem"
@@ -327,11 +327,16 @@ msgid "Using state directory %s."
msgstr "Verbruik van state map %s."
#: ../src/daemon/main.c:777
+#, fuzzy, c-format
+msgid "Using modules directory %s."
+msgstr "Gebruik van runtime map %s."
+
+#: ../src/daemon/main.c:779
#, c-format
msgid "Running in system mode: %s"
msgstr "Draaiend in systeem mode: %s"
-#: ../src/daemon/main.c:780
+#: ../src/daemon/main.c:782
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -341,15 +346,15 @@ msgid ""
"explanation why system mode is usually a bad idea."
msgstr ""
-#: ../src/daemon/main.c:797
+#: ../src/daemon/main.c:799
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() mislukte."
-#: ../src/daemon/main.c:807
+#: ../src/daemon/main.c:809
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Verse high-resolution timers beschikbaar! Smakelijk eten!"
-#: ../src/daemon/main.c:809
+#: ../src/daemon/main.c:811
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -357,27 +362,27 @@ msgstr ""
"Kerel, je kernel stinkt! De aanbeveling van de chef is vandaag Linux met "
"aangezette high-resolution timers!"
-#: ../src/daemon/main.c:827
+#: ../src/daemon/main.c:829
msgid "pa_core_new() failed."
msgstr "pa_core_new() mislukte."
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:891
msgid "Failed to initialize daemon."
msgstr "Initialiseren van de daemon mislukte."
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:896
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "Daemon opgestart zonder geladen modules, dat werkt niet."
-#: ../src/daemon/main.c:911
+#: ../src/daemon/main.c:913
msgid "Daemon startup complete."
msgstr "Daemon opstarten is klaar."
-#: ../src/daemon/main.c:917
+#: ../src/daemon/main.c:919
msgid "Daemon shutdown initiated."
msgstr "Daemon afsluiten is begonnen."
-#: ../src/daemon/main.c:939
+#: ../src/daemon/main.c:941
msgid "Daemon terminated."
msgstr "Daemon is afgesloten."
@@ -644,78 +649,78 @@ msgstr ""
msgid "Path: %s\n"
msgstr "Pad: %s\n"
-#: ../src/daemon/daemon-conf.c:216
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:232
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:248
+#: ../src/daemon/daemon-conf.c:264
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:271
+#: ../src/daemon/daemon-conf.c:287
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:278
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr ""
-#: ../src/daemon/daemon-conf.c:294
+#: ../src/daemon/daemon-conf.c:310
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:312
+#: ../src/daemon/daemon-conf.c:328
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:336
+#: ../src/daemon/daemon-conf.c:352
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:354
+#: ../src/daemon/daemon-conf.c:370
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:372
+#: ../src/daemon/daemon-conf.c:388
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:390
+#: ../src/daemon/daemon-conf.c:406
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:408
+#: ../src/daemon/daemon-conf.c:424
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:530
+#: ../src/daemon/daemon-conf.c:546
#, c-format
msgid "Failed to open configuration file: %s"
msgstr ""
-#: ../src/daemon/daemon-conf.c:546
+#: ../src/daemon/daemon-conf.c:562
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
msgstr ""
-#: ../src/daemon/daemon-conf.c:622
+#: ../src/daemon/daemon-conf.c:638
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr ""
diff --git a/po/or.po b/po/or.po
index d487af12..359b8e84 100644
--- a/po/or.po
+++ b/po/or.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio.master-tx.pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-19 04:16+0200\n"
+"POT-Creation-Date: 2009-08-22 00:08+0200\n"
"PO-Revision-Date: 2009-04-09 13:16+0530\n"
"Last-Translator: Manoj Kumar Giri <mgiri@redhat.com>\n"
"Language-Team: Oriya <oriya-it@googlegroups.com>\n"
@@ -23,7 +23,7 @@ msgstr ""
"\n"
"\n"
-#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666
+#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2676
#, c-format
msgid "%s %s"
msgstr ""
@@ -80,11 +80,11 @@ msgid ""
"input control values>"
msgstr ""
-#: ../src/pulsecore/sink.c:2650
+#: ../src/pulsecore/sink.c:2660
msgid "Internal Audio"
msgstr "ଆଭ୍ୟନ୍ତରୀଣ ଧ୍ୱନି"
-#: ../src/pulsecore/sink.c:2655
+#: ../src/pulsecore/sink.c:2665
msgid "Modem"
msgstr "ମଡେମ"
@@ -332,11 +332,16 @@ msgid "Using state directory %s."
msgstr "ସ୍ଥିତି ଡିରେକ୍ଟୋରୀ %s କୁ ବ୍ୟବହାର କରି।"
#: ../src/daemon/main.c:777
+#, fuzzy, c-format
+msgid "Using modules directory %s."
+msgstr "ପ୍ରଚଳିତ ଡିରେକ୍ଟୋରୀ %s କୁ ବ୍ୟବହାର କରୁଅଛି।"
+
+#: ../src/daemon/main.c:779
#, c-format
msgid "Running in system mode: %s"
msgstr "ତନ୍ତ୍ର ଧାରାରେ ଚାଲୁଅଛି: %s"
-#: ../src/daemon/main.c:780
+#: ../src/daemon/main.c:782
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -346,15 +351,15 @@ msgid ""
"explanation why system mode is usually a bad idea."
msgstr ""
-#: ../src/daemon/main.c:797
+#: ../src/daemon/main.c:799
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() ବିଫଳ ହୋଇଛି।"
-#: ../src/daemon/main.c:807
+#: ../src/daemon/main.c:809
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "ସତେଜ ଉଚ୍ଚ-ବିଭେଦନ ସମୟ ମାପକ ଉପଲବ୍ଧ! Bon appetit!"
-#: ../src/daemon/main.c:809
+#: ../src/daemon/main.c:811
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -362,27 +367,27 @@ msgstr ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
-#: ../src/daemon/main.c:827
+#: ../src/daemon/main.c:829
msgid "pa_core_new() failed."
msgstr "pa_core_new() ବିଫଳ ହୋଇଛି।"
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:891
msgid "Failed to initialize daemon."
msgstr "ଡେମନକୁ ଆରମ୍ଭ କରିବାରେ ବିଫଳ।"
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:896
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "ଧାରଣ ହୋଇଥିବା ଏକକାଂଶଗୁଡ଼ିକ ବିନା ଡେମନ ଆରମ୍ଭ ହୋଇଛି, କାର୍ଯ୍ୟ କରିବାକୁ ବାରଣ କରୁଅଛି।"
-#: ../src/daemon/main.c:911
+#: ../src/daemon/main.c:913
msgid "Daemon startup complete."
msgstr "ଡେମନ ଆରମ୍ଭ ସମ୍ପୂର୍ଣ୍ଣ ହୋଇଛି।"
-#: ../src/daemon/main.c:917
+#: ../src/daemon/main.c:919
msgid "Daemon shutdown initiated."
msgstr "ଡେମନ ବନ୍ଦକୁ ଆରମ୍ଭ କରାଯାଇଛି।"
-#: ../src/daemon/main.c:939
+#: ../src/daemon/main.c:941
msgid "Daemon terminated."
msgstr "ଡେମନକୁ ସମାପ୍ତ କରାଯାଇଛି।"
@@ -638,72 +643,72 @@ msgstr ""
msgid "Path: %s\n"
msgstr "ପଥ: %s\n"
-#: ../src/daemon/daemon-conf.c:216
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] ଅବୈଧ ଲଗ ଲକ୍ଷ୍ଯସ୍ଥଳ '%s'।"
-#: ../src/daemon/daemon-conf.c:232
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] ଅବୈଧ ଲଗ ସ୍ତର%s'."
-#: ../src/daemon/daemon-conf.c:248
+#: ../src/daemon/daemon-conf.c:264
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] ଅବୈଧ ପୁନଃ ମିଶ୍ରଣ ଧାରା '%s'।"
-#: ../src/daemon/daemon-conf.c:271
+#: ../src/daemon/daemon-conf.c:287
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] ଅବୈଧ rlimit '%s'."
-#: ../src/daemon/daemon-conf.c:278
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit ଏହି ପ୍ଲାଟଫର୍ମରେ ସମର୍ଥିତ ନୁହଁ।"
-#: ../src/daemon/daemon-conf.c:294
+#: ../src/daemon/daemon-conf.c:310
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] ଅବୈଧ ନମୁନା ଶୈଳୀ '%s'।"
-#: ../src/daemon/daemon-conf.c:312
+#: ../src/daemon/daemon-conf.c:328
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] ଅବୈଧ ନମୁନା ହାର '%s'।"
-#: ../src/daemon/daemon-conf.c:336
+#: ../src/daemon/daemon-conf.c:352
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] ଅବୈଧ ନମୁନା ଚ୍ୟାନେଲ '%s'।"
-#: ../src/daemon/daemon-conf.c:354
+#: ../src/daemon/daemon-conf.c:370
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] ଅବୈଧ ଚ୍ୟାନେଲ ମ୍ୟାପ '%s'."
-#: ../src/daemon/daemon-conf.c:372
+#: ../src/daemon/daemon-conf.c:388
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] ଅବୈଧ ସଂଖ୍ୟକ ଖଣ୍ଡଗୁଡ଼ିକ '%s'."
-#: ../src/daemon/daemon-conf.c:390
+#: ../src/daemon/daemon-conf.c:406
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] ଅବୈଧ ଖଣ୍ଡ ଆକାର '%s'."
-#: ../src/daemon/daemon-conf.c:408
+#: ../src/daemon/daemon-conf.c:424
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] ଅବୈଧ ସୁନ୍ଦର ସ୍ତର '%s'."
-#: ../src/daemon/daemon-conf.c:530
+#: ../src/daemon/daemon-conf.c:546
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "ବିନ୍ୟାସ ଫାଇଲ ଖୋଲିବାରେ ବିଫଳ: %s"
-#: ../src/daemon/daemon-conf.c:546
+#: ../src/daemon/daemon-conf.c:562
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -711,7 +716,7 @@ msgstr ""
"ନିର୍ଦ୍ଦିଷ୍ଟିତ ପୂର୍ବନିର୍ଦ୍ଧାରିତ ଚ୍ୟାନେଲ ମ୍ୟାପରେ ପୂର୍ବନିର୍ଦ୍ଧାରିତ ସଂଖ୍ୟକ ଚ୍ୟାନେଲ ବ୍ୟତିତ ଭିନ୍ନ ସଂଖ୍ୟକ "
"ଚ୍ୟାନେଲ ଉଲ୍ଲେଖ ଅଛି।"
-#: ../src/daemon/daemon-conf.c:622
+#: ../src/daemon/daemon-conf.c:638
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### ବିନ୍ୟାସ ଫାଇଲରୁ ପଢ଼ନ୍ତୁ: %s ###\n"
diff --git a/po/pa.po b/po/pa.po
index cad00009..bbda78f3 100644
--- a/po/pa.po
+++ b/po/pa.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio.master-tx.pa\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-19 04:16+0200\n"
+"POT-Creation-Date: 2009-08-22 00:08+0200\n"
"PO-Revision-Date: 2009-06-06 07:38+0530\n"
"Last-Translator: A S Alam <aalam@users.sf.net>\n"
"Language-Team: American English <punjabi-users@lists.sf.net>\n"
@@ -19,7 +19,7 @@ msgstr ""
"X-Generator: Lokalize 0.3\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
-#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666
+#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2676
#, c-format
msgid "%s %s"
msgstr ""
@@ -70,11 +70,11 @@ msgid ""
"input control values>"
msgstr ""
-#: ../src/pulsecore/sink.c:2650
+#: ../src/pulsecore/sink.c:2660
msgid "Internal Audio"
msgstr "ਅੰਦਰੂਨੀ ਆਡੀਓ"
-#: ../src/pulsecore/sink.c:2655
+#: ../src/pulsecore/sink.c:2665
msgid "Modem"
msgstr "ਮਾਡਮ"
@@ -320,11 +320,16 @@ msgid "Using state directory %s."
msgstr "ਸਟੇਟ ਡਾਇਰੈਕਟਰੀ %s ਦੀ ਵਰਤੋਂ।"
#: ../src/daemon/main.c:777
+#, fuzzy, c-format
+msgid "Using modules directory %s."
+msgstr "ਰਨਟਾਈਮ ਡਾਇਰੈਕਟਰੀ %s ਦੀ ਵਰਤੋਂ।"
+
+#: ../src/daemon/main.c:779
#, c-format
msgid "Running in system mode: %s"
msgstr "ਸਿਸਟਮ ਮੋਡ ਵਿੱਚ ਚੱਲ ਰਿਹਾ ਹੈ: %s"
-#: ../src/daemon/main.c:780
+#: ../src/daemon/main.c:782
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -334,42 +339,42 @@ msgid ""
"explanation why system mode is usually a bad idea."
msgstr ""
-#: ../src/daemon/main.c:797
+#: ../src/daemon/main.c:799
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() ਫੇਲ੍ਹ ਹੈ।"
-#: ../src/daemon/main.c:807
+#: ../src/daemon/main.c:809
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "ਤਾਜ਼ੀ ਹਾਈ-ਰੈਜ਼ੋਲੂਸ਼ਨ ਟਾਈਮਰ ਉਪਲੱਬਧ ਹੈ! Bon appetit!"
-#: ../src/daemon/main.c:809
+#: ../src/daemon/main.c:811
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
msgstr ""
"ਮਿੱਤਰਾ, ਤੇਰਾ ਕਰਨਲ ਪੁਰਾਣਾ ਹੈ! ਚੀਫ ਦੀ ਅੱਜ ਦੀ ਸਿਫਾਰਸ਼ ਹਾਈ-ਰੈਜ਼ੋਲੂਸ਼ਨ ਟਾਈਮਰ ਯੋਗ ਨਾਲ ਲੀਨਕਸ ਹੈ!"
-#: ../src/daemon/main.c:827
+#: ../src/daemon/main.c:829
msgid "pa_core_new() failed."
msgstr "pa_core_new() ਫੇਲ੍ਹ ਹੈ।"
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:891
msgid "Failed to initialize daemon."
msgstr "ਡੈਮਨ ਸ਼ੁਰੂ ਕਰਨ ਵਿੱਚ ਫੇਲ੍ਹ।"
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:896
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "ਡੈਮਨ ਸ਼ੁਰੂਆਤੀ ਬਿਨਾਂ ਕਿਸੇ ਲੋਡ ਕੀਤੇ ਮੈਡਿਊਲ, ਕੰਮ ਕਰਨ ਤੋਂ ਰੋਕ ਰਿਹਾ ਹੈ।"
-#: ../src/daemon/main.c:911
+#: ../src/daemon/main.c:913
msgid "Daemon startup complete."
msgstr "ਡੈਮਨ ਸ਼ੁਰੂਆਤੀ ਮੁਕੰਮਲ।"
-#: ../src/daemon/main.c:917
+#: ../src/daemon/main.c:919
msgid "Daemon shutdown initiated."
msgstr "ਡੈਮਨ ਬੰਦ ਕਰਨਾ ਸ਼ੁਰੂ ਹੋ ਗਿਆ।"
-#: ../src/daemon/main.c:939
+#: ../src/daemon/main.c:941
msgid "Daemon terminated."
msgstr "ਡੈਮਨ ਬੰਦ ਹੋ ਗਿਆ।"
@@ -626,78 +631,78 @@ msgstr ""
msgid "Path: %s\n"
msgstr "ਪਾਥ: %s\n"
-#: ../src/daemon/daemon-conf.c:216
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] ਗਲਤ ਲਾਗ ਟਾਰਗੇਟ '%s'।"
-#: ../src/daemon/daemon-conf.c:232
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] ਗਲਤੀ ਲਾਗ ਲੈਵਲ '%s'।"
-#: ../src/daemon/daemon-conf.c:248
+#: ../src/daemon/daemon-conf.c:264
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] ਅਢੁੱਕਵੀਂ ਰੀਸੈਂਪਲ ਢੰਗ '%s'।"
-#: ../src/daemon/daemon-conf.c:271
+#: ../src/daemon/daemon-conf.c:287
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] ਅਢੁੱਕਵੀਂ rlimit '%s'।"
-#: ../src/daemon/daemon-conf.c:278
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit ਨੂੰ ਇਸ ਪਲੇਟਫਾਰਮ ਤੇ ਸਹਿਯੋਗ ਨਹੀਂ ਹੈ।"
-#: ../src/daemon/daemon-conf.c:294
+#: ../src/daemon/daemon-conf.c:310
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] ਅਢੁੱਕਵਾਂ ਸੈਂਪਲ ਫਾਰਮੈਟ '%s'।"
-#: ../src/daemon/daemon-conf.c:312
+#: ../src/daemon/daemon-conf.c:328
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] ਅਢੁੱਕਵਾਂ ਸੈਂਪਲ ਰੇਟ '%s'।"
-#: ../src/daemon/daemon-conf.c:336
+#: ../src/daemon/daemon-conf.c:352
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] ਅਢੁੱਕਵਾਂ ਸੈਂਪਲ ਚੈਨਲ '%s'।"
-#: ../src/daemon/daemon-conf.c:354
+#: ../src/daemon/daemon-conf.c:370
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] ਅਢੁੱਕਵਾਂ ਚੈਨਲ ਮੈਪ '%s'।"
-#: ../src/daemon/daemon-conf.c:372
+#: ../src/daemon/daemon-conf.c:388
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] ਫਰੈਗਮੈਂਟਾਂ ਦਾ ਅਢੁੱਕਵਾਂ ਨੰਬਰ '%s'।"
-#: ../src/daemon/daemon-conf.c:390
+#: ../src/daemon/daemon-conf.c:406
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] ਅਢੁੱਕਵਾਂ ਫਰੈਗਮੈਂਟ ਅਕਾਰ '%s'।"
-#: ../src/daemon/daemon-conf.c:408
+#: ../src/daemon/daemon-conf.c:424
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] ਅਢੁੱਕਵਾਂ nice ਲੈਵਲ '%s'।"
-#: ../src/daemon/daemon-conf.c:530
+#: ../src/daemon/daemon-conf.c:546
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "ਸੰਰਚਨਾ ਫਾਇਲ ਖੋਲ੍ਹਣ ਵਿੱਚ ਫੇਲ੍ਹ: %s"
-#: ../src/daemon/daemon-conf.c:546
+#: ../src/daemon/daemon-conf.c:562
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
msgstr "ਦਿੱਤੇ ਡਿਫਾਲਟ ਚੈਨਲ ਮੈਪ ਦੀ ਦਿੱਤੇਤ ਚੈਨਲ ਗਿਣਤੀ ਨਾਲੋਂ ਇੱਕ ਵੱਖਰੀ ਚੈਨਲ ਗਿਣਤੀ ਹੈ।"
-#: ../src/daemon/daemon-conf.c:622
+#: ../src/daemon/daemon-conf.c:638
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### ਸੰਰਚਨਾ ਫਾਇਲ ਵਿੱਚੋਂ ਪੜਿਆ: %s ###\n"
diff --git a/po/pl.po b/po/pl.po
index a24543ce..bc7e68f6 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -5,15 +5,15 @@ msgid ""
msgstr ""
"Project-Id-Version: pl\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-19 04:16+0200\n"
-"PO-Revision-Date: 2009-07-28 21:54+0200\n"
+"POT-Creation-Date: 2009-08-22 00:08+0200\n"
+"PO-Revision-Date: 2009-08-19 22:52+0200\n"
"Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
"Language-Team: Polish <pl@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666
+#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2676
#, c-format
msgid "%s %s"
msgstr "%s %s"
@@ -72,11 +72,11 @@ msgstr ""
"kanałów> plugin=<nazwa wtyczki ladspa> label=<etykieta wtyczki ladspa> "
"control=<lista wartości kontroli wejścia oddzielona przecinkami>"
-#: ../src/pulsecore/sink.c:2650
+#: ../src/pulsecore/sink.c:2660
msgid "Internal Audio"
msgstr "Wewnętrzny dźwięk"
-#: ../src/pulsecore/sink.c:2655
+#: ../src/pulsecore/sink.c:2665
msgid "Modem"
msgstr "Modem"
@@ -330,11 +330,16 @@ msgid "Using state directory %s."
msgstr "Używanie folderu stanu %s."
#: ../src/daemon/main.c:777
+#, fuzzy, c-format
+msgid "Using modules directory %s."
+msgstr "Używanie folderu wykonywania %s."
+
+#: ../src/daemon/main.c:779
#, c-format
msgid "Running in system mode: %s"
msgstr "Uruchamianie w trybie systemowym: %s"
-#: ../src/daemon/main.c:780
+#: ../src/daemon/main.c:782
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -350,15 +355,15 @@ msgstr ""
"Proszę przeczytać http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode, "
"gdzie wyjaśniono, dlaczego tryb systemowy jest zwykle złym pomysłem."
-#: ../src/daemon/main.c:797
+#: ../src/daemon/main.c:799
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() nie powiodło się."
-#: ../src/daemon/main.c:807
+#: ../src/daemon/main.c:809
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Świeże zegary o wysokiej rozdzielczości! Smacznego!"
-#: ../src/daemon/main.c:809
+#: ../src/daemon/main.c:811
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -366,27 +371,27 @@ msgstr ""
"Koleś, twoje jądro śmierdzi! Szef kuchni poleca dzisiaj Linuksa w włączonymi "
"zegarami o wysokiej rozdzielczości!"
-#: ../src/daemon/main.c:827
+#: ../src/daemon/main.c:829
msgid "pa_core_new() failed."
msgstr "pa_core_new() nie powiodło się."
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:891
msgid "Failed to initialize daemon."
msgstr "Zainicjowanie demona nie powiodło się."
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:896
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "Uruchamianie demona bez żadnych wczytanych modułów, odmawianie pracy."
-#: ../src/daemon/main.c:911
+#: ../src/daemon/main.c:913
msgid "Daemon startup complete."
msgstr "Zakończono uruchamianie demona."
-#: ../src/daemon/main.c:917
+#: ../src/daemon/main.c:919
msgid "Daemon shutdown initiated."
msgstr "Zainicjowano wyłączenie demona."
-#: ../src/daemon/main.c:939
+#: ../src/daemon/main.c:941
msgid "Daemon terminated."
msgstr "Demon został zniszczony."
@@ -652,72 +657,72 @@ msgstr "OSTRZEŻENIE O PRZESTARZAŁOŚCI: %s\n"
msgid "Path: %s\n"
msgstr "Ścieżka: %s\n"
-#: ../src/daemon/daemon-conf.c:216
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Nieprawidłowy dziennik docelowy \"%s\"."
-#: ../src/daemon/daemon-conf.c:232
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Nieprawidłowy poziom dziennika \"%s\"."
-#: ../src/daemon/daemon-conf.c:248
+#: ../src/daemon/daemon-conf.c:264
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Nieprawidłowa metoda resamplingu \"%s\"."
-#: ../src/daemon/daemon-conf.c:271
+#: ../src/daemon/daemon-conf.c:287
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] Nieprawidłowy rlimit \"%s\"."
-#: ../src/daemon/daemon-conf.c:278
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit nie jest obsługiwany na tej platformie."
-#: ../src/daemon/daemon-conf.c:294
+#: ../src/daemon/daemon-conf.c:310
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Nieprawidłowy format próbki \"%s\"."
-#: ../src/daemon/daemon-conf.c:312
+#: ../src/daemon/daemon-conf.c:328
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Nieprawidłowa częstotliwość próbki \"%s\"."
-#: ../src/daemon/daemon-conf.c:336
+#: ../src/daemon/daemon-conf.c:352
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Nieprawidłowe kanały próbki \"%s\"."
-#: ../src/daemon/daemon-conf.c:354
+#: ../src/daemon/daemon-conf.c:370
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] Nieprawidłowa mapa kanałów \"%s\"."
-#: ../src/daemon/daemon-conf.c:372
+#: ../src/daemon/daemon-conf.c:388
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Nieprawidłowa liczba fragmentów \"%s\"."
-#: ../src/daemon/daemon-conf.c:390
+#: ../src/daemon/daemon-conf.c:406
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Nieprawidłowy rozmiar fragmentu \"%s\"."
-#: ../src/daemon/daemon-conf.c:408
+#: ../src/daemon/daemon-conf.c:424
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Nieprawidłowy poziom nice \"%s\"."
-#: ../src/daemon/daemon-conf.c:530
+#: ../src/daemon/daemon-conf.c:546
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Otwarcie pliku konfiguracji nie powiodło się: %s"
-#: ../src/daemon/daemon-conf.c:546
+#: ../src/daemon/daemon-conf.c:562
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -725,15 +730,14 @@ msgstr ""
"Podana domyślna mapa kanałów ma inną liczbę kanałów niż podana domyślna "
"liczba kanałów."
-#: ../src/daemon/daemon-conf.c:622
+#: ../src/daemon/daemon-conf.c:638
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### Odczytano z pliku konfiguracji: %s ###\n"
#: ../src/daemon/caps.c:62
-#, fuzzy
msgid "Cleaning up privileges."
-msgstr "Porzucanie uprawnień roota."
+msgstr "Czyszczenie uprawnień."
#: ../src/daemon/pulseaudio.desktop.in.h:1
msgid "PulseAudio Sound System"
@@ -2225,9 +2229,9 @@ msgid "Daemon not responding."
msgstr "Demon nie odpowiada."
#: ../src/utils/pacmd.c:161
-#, fuzzy, c-format
+#, c-format
msgid "poll(): %s"
-msgstr "fork(): %s"
+msgstr "poll(): %s"
#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
#, c-format
@@ -2293,64 +2297,3 @@ msgstr "Duplex telefoniczny (HSP/HFP)"
#: ../src/modules/reserve-wrap.c:151
msgid "PulseAudio Sound Server"
msgstr "Serwer dźwięku PulseAudio"
-
-#~ msgid "select(): %s"
-#~ msgstr "select(): %s"
-
-#~ msgid "Cannot connect to system bus: %s"
-#~ msgstr "Nie można połączyć się z magistralą systemową: %s"
-
-#~ msgid "Cannot get caller from PID: %s"
-#~ msgstr "Nie można uzyskać obiektu caller z PID: %s"
-
-#~ msgid "Cannot set UID on caller object."
-#~ msgstr "Nie można ustawić UID obiektu caller."
-
-#~ msgid "Failed to get CK session."
-#~ msgstr "Uzyskanie sesji CK nie powiodło się."
-
-#~ msgid "Cannot set UID on session object."
-#~ msgstr "Nie można ustawić UID obiektowi sesji."
-
-#~ msgid "Cannot allocate PolKitAction."
-#~ msgstr "Nie można przydzielić PolKitAction."
-
-#~ msgid "Cannot set action_id"
-#~ msgstr "Nie można ustawić action_id"
-
-#~ msgid "Cannot allocate PolKitContext."
-#~ msgstr "Nie można przydzielić PolKitContext."
-
-#~ msgid "Cannot initialize PolKitContext: %s"
-#~ msgstr "Nie można zainicjować PolKitContext: %s"
-
-#~ msgid "Could not determine whether caller is authorized: %s"
-#~ msgstr "Nie można ustalić, czy obiekt caller jest upoważniony: %s"
-
-#~ msgid "Cannot obtain auth: %s"
-#~ msgstr "Nie można uzyskać upoważnienia: %s"
-
-#~ msgid "PolicyKit responded with '%s'"
-#~ msgstr "PolicyKit zwróciło \"%s\""
-
-#~ msgid ""
-#~ "High-priority scheduling (negative Unix nice level) for the PulseAudio "
-#~ "daemon"
-#~ msgstr ""
-#~ "Szeregowanie o wysokim priorytecie (ujemny poziom nice Uniksa) dla demona "
-#~ "PulseAudio"
-
-#~ msgid "Real-time scheduling for the PulseAudio daemon"
-#~ msgstr "Szeregowanie w czasie rzeczywistym dla demona PulseAudio"
-
-#~ msgid ""
-#~ "System policy prevents PulseAudio from acquiring high-priority scheduling."
-#~ msgstr ""
-#~ "Polityka systemu uniemożliwia PulseAudio uzyskanie szeregowania o wysokim "
-#~ "priorytecie."
-
-#~ msgid ""
-#~ "System policy prevents PulseAudio from acquiring real-time scheduling."
-#~ msgstr ""
-#~ "Polityka systemu uniemożliwia PulseAudio uzyskanie szeregowania w czasie "
-#~ "rzeczywistym."
diff --git a/po/pt.po b/po/pt.po
index 0119905b..005fbd1c 100644
--- a/po/pt.po
+++ b/po/pt.po
@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-19 04:16+0200\n"
+"POT-Creation-Date: 2009-08-22 00:08+0200\n"
"PO-Revision-Date: \n"
"Last-Translator: Rui Gouveia <rui.gouveia@globaltek.pt>\n"
"Language-Team: pt <fedora-trans-pt@redhat.com>\n"
@@ -12,7 +12,7 @@ msgstr ""
"X-Poedit-Language: Portuguese\n"
"X-Poedit-Country: PORTUGAL\n"
-#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666
+#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2676
#, fuzzy, c-format
msgid "%s %s"
msgstr "%s %s"
@@ -70,11 +70,11 @@ msgid ""
"input control values>"
msgstr ""
-#: ../src/pulsecore/sink.c:2650
+#: ../src/pulsecore/sink.c:2660
msgid "Internal Audio"
msgstr "Áudio Interno"
-#: ../src/pulsecore/sink.c:2655
+#: ../src/pulsecore/sink.c:2665
msgid "Modem"
msgstr "Modem"
@@ -326,11 +326,16 @@ msgid "Using state directory %s."
msgstr "A manter o estado no directório %s."
#: ../src/daemon/main.c:777
+#, fuzzy, c-format
+msgid "Using modules directory %s."
+msgstr "Execução a utilizar o directório %s"
+
+#: ../src/daemon/main.c:779
#, c-format
msgid "Running in system mode: %s"
msgstr "Execução em modo de sistema: %s"
-#: ../src/daemon/main.c:780
+#: ../src/daemon/main.c:782
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -340,15 +345,15 @@ msgid ""
"explanation why system mode is usually a bad idea."
msgstr ""
-#: ../src/daemon/main.c:797
+#: ../src/daemon/main.c:799
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() falhou."
-#: ../src/daemon/main.c:807
+#: ../src/daemon/main.c:809
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Timer \"frescos\" de alta resolução disponíveis. Bom apetite!"
-#: ../src/daemon/main.c:809
+#: ../src/daemon/main.c:811
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -356,27 +361,27 @@ msgstr ""
"Oh pá, o teu kernel não presta! O prato do dia recomendado é Linux com "
"timers de alta resolução activos!"
-#: ../src/daemon/main.c:827
+#: ../src/daemon/main.c:829
msgid "pa_core_new() failed."
msgstr "pa_core_new() falhou."
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:891
msgid "Failed to initialize daemon."
msgstr "Falha ao inicializar serviço."
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:896
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "Serviço arrancou sem módulos carregados. A recusar trabalhar."
-#: ../src/daemon/main.c:911
+#: ../src/daemon/main.c:913
msgid "Daemon startup complete."
msgstr "Arranque do serviço completo."
-#: ../src/daemon/main.c:917
+#: ../src/daemon/main.c:919
msgid "Daemon shutdown initiated."
msgstr "Encerramento do serviço iniciado."
-#: ../src/daemon/main.c:939
+#: ../src/daemon/main.c:941
msgid "Daemon terminated."
msgstr "Serviço terminado."
@@ -646,72 +651,72 @@ msgstr "Aviso de Impressão"
msgid "Path: %s\n"
msgstr "Caminho: %s\n"
-#: ../src/daemon/daemon-conf.c:216
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] ficheiro registo de destino inválido '%s'."
-#: ../src/daemon/daemon-conf.c:232
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Nível do ficheiro de registo inválido '%s'."
-#: ../src/daemon/daemon-conf.c:248
+#: ../src/daemon/daemon-conf.c:264
#, fuzzy, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "nome do método de acesso"
-#: ../src/daemon/daemon-conf.c:271
+#: ../src/daemon/daemon-conf.c:287
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] rlimit inválido '%s'."
-#: ../src/daemon/daemon-conf.c:278
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit não é suportado nesta plataforma."
-#: ../src/daemon/daemon-conf.c:294
+#: ../src/daemon/daemon-conf.c:310
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Formato da amostra inválido '%s'."
-#: ../src/daemon/daemon-conf.c:312
+#: ../src/daemon/daemon-conf.c:328
#, fuzzy, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "Taxa de amostragem em kHz"
-#: ../src/daemon/daemon-conf.c:336
+#: ../src/daemon/daemon-conf.c:352
#, fuzzy, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "Número de canais de audio"
-#: ../src/daemon/daemon-conf.c:354
+#: ../src/daemon/daemon-conf.c:370
#, fuzzy, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "Activar mapa de _radar"
-#: ../src/daemon/daemon-conf.c:372
+#: ../src/daemon/daemon-conf.c:388
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Número inválido de fragmentos '%s'."
-#: ../src/daemon/daemon-conf.c:390
+#: ../src/daemon/daemon-conf.c:406
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Tamanho do fragmento inválido '%s'."
-#: ../src/daemon/daemon-conf.c:408
+#: ../src/daemon/daemon-conf.c:424
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] nível nice inválido '%s'."
-#: ../src/daemon/daemon-conf.c:530
+#: ../src/daemon/daemon-conf.c:546
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Falha ao abrir ficheiro de configuração: %s"
-#: ../src/daemon/daemon-conf.c:546
+#: ../src/daemon/daemon-conf.c:562
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -719,7 +724,7 @@ msgstr ""
"O mapa de canais especificado tem um número de canais diferente do número de "
"canais definido por omissão."
-#: ../src/daemon/daemon-conf.c:622
+#: ../src/daemon/daemon-conf.c:638
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### Ler configuração a partir do ficheiro: %s ###\n"
diff --git a/po/pt_BR.po b/po/pt_BR.po
index e48cc04d..3a56e0e7 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-19 04:16+0200\n"
-"PO-Revision-Date: 2009-08-08 19:02-0300\n"
+"POT-Creation-Date: 2009-08-22 00:08+0200\n"
+"PO-Revision-Date: 2009-08-21 11:25-0300\n"
"Last-Translator: Igor Pires Soares <igor@projetofedora.org>\n"
"Language-Team: Brazilian-Portuguese <fedora-trans-pt_br@redhat.com>\n"
"MIME-Version: 1.0\n"
@@ -19,7 +19,7 @@ msgstr ""
"X-Poedit-Language: Portuguese\n"
"X-Poedit-Country: Brazil\n"
-#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666
+#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2676
#, c-format
msgid "%s %s"
msgstr "%s %s"
@@ -81,11 +81,11 @@ msgstr ""
"canais> plugin=<nome do plugin ladspa> label=<rótulo do plugin ladspa> "
"control=<lista separada por vírgulas dos valores de controle da entrada>"
-#: ../src/pulsecore/sink.c:2650
+#: ../src/pulsecore/sink.c:2660
msgid "Internal Audio"
msgstr "Áudio interno"
-#: ../src/pulsecore/sink.c:2655
+#: ../src/pulsecore/sink.c:2665
msgid "Modem"
msgstr "Modem"
@@ -113,17 +113,17 @@ msgstr "Saindo."
#: ../src/daemon/main.c:186
#, c-format
msgid "Failed to find user '%s'."
-msgstr "Falha em encontrar o usuário '%s'."
+msgstr "Falha ao localizar o usuário \"%s\"."
#: ../src/daemon/main.c:191
#, c-format
msgid "Failed to find group '%s'."
-msgstr "Falha em encontrar o grupo '%s'."
+msgstr "Falha ao localizar o grupo \"%s\"."
#: ../src/daemon/main.c:195
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
-msgstr "Usuário '%s' (UID %lu) e grupo '%s' (GID %lu) encontrados."
+msgstr "Usuário \"%s\" (UID %lu) e grupo \"%s\" (GID %lu) localizados."
#: ../src/daemon/main.c:200
#, c-format
@@ -133,27 +133,27 @@ msgstr "O GID do usuário'%s' e do grupo '%s' não combinam."
#: ../src/daemon/main.c:205
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
-msgstr "O diretório Home do usuário '%s' não é '%s', ignorando."
+msgstr "O diretório pessoal do usuário \"%s\" não é \"%s\", ignorando."
#: ../src/daemon/main.c:208 ../src/daemon/main.c:213
#, c-format
msgid "Failed to create '%s': %s"
-msgstr "Falha em criar '%s': %s"
+msgstr "Falha ao criar \"%s\": %s"
#: ../src/daemon/main.c:220
#, c-format
msgid "Failed to change group list: %s"
-msgstr "Falha em alterar a lista de grupos: %s"
+msgstr "Falha ao alterar a lista de grupos: %s"
#: ../src/daemon/main.c:236
#, c-format
msgid "Failed to change GID: %s"
-msgstr "Falha em mudar o GID: %s"
+msgstr "Falha ao alterar o GID: %s"
#: ../src/daemon/main.c:252
#, c-format
msgid "Failed to change UID: %s"
-msgstr "Falha em mudar o UID: %s"
+msgstr "Falha ao alterar o UID: %s"
#: ../src/daemon/main.c:266
msgid "Successfully dropped root privileges."
@@ -337,11 +337,16 @@ msgid "Using state directory %s."
msgstr "Usando o diretório de estado %s."
#: ../src/daemon/main.c:777
+#, fuzzy, c-format
+msgid "Using modules directory %s."
+msgstr "Usando o diretório de runtime %s."
+
+#: ../src/daemon/main.c:779
#, c-format
msgid "Running in system mode: %s"
msgstr "Executando em modo do sistema: %s"
-#: ../src/daemon/main.c:780
+#: ../src/daemon/main.c:782
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -357,15 +362,15 @@ msgstr ""
"Por favor, leia o http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode para "
"obter um explicação sobre porque o modo de sistema é uma má idéia."
-#: ../src/daemon/main.c:797
+#: ../src/daemon/main.c:799
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() falhou."
-#: ../src/daemon/main.c:807
+#: ../src/daemon/main.c:809
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Timers de alta resolução frequinhos disponíveis! Bon appetit!"
-#: ../src/daemon/main.c:809
+#: ../src/daemon/main.c:811
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -373,28 +378,28 @@ msgstr ""
"Cara, teu kernel fede! A recomendação do chef hoje é Linux com timers de "
"alta resolução habilitados!"
-#: ../src/daemon/main.c:827
+#: ../src/daemon/main.c:829
msgid "pa_core_new() failed."
msgstr "pa_core_new() falhou."
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:891
msgid "Failed to initialize daemon."
msgstr "Falha em iniciar o daemon."
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:896
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr ""
"O Daemon iniciou sem qualquer módulo carregado, recusando-se a trabalhar."
-#: ../src/daemon/main.c:911
+#: ../src/daemon/main.c:913
msgid "Daemon startup complete."
msgstr "A partida dos Daemon está completa."
-#: ../src/daemon/main.c:917
+#: ../src/daemon/main.c:919
msgid "Daemon shutdown initiated."
msgstr "O encerramento do Daemon foi iniciado."
-#: ../src/daemon/main.c:939
+#: ../src/daemon/main.c:941
msgid "Daemon terminated."
msgstr "Daemon terminado."
@@ -661,72 +666,72 @@ msgstr "AVISO DE OBSOLESCÊNCIA: %s\n"
msgid "Path: %s\n"
msgstr "Caminho: %s\n"
-#: ../src/daemon/daemon-conf.c:216
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Alvo do log inválido '%s'."
-#: ../src/daemon/daemon-conf.c:232
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Nível de log inválido '%s'."
-#: ../src/daemon/daemon-conf.c:248
+#: ../src/daemon/daemon-conf.c:264
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Método de reamostragem inválido '%s'."
-#: ../src/daemon/daemon-conf.c:271
+#: ../src/daemon/daemon-conf.c:287
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] rlimit inválido '%s'."
-#: ../src/daemon/daemon-conf.c:278
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit não tem suporte nessa plataforma."
-#: ../src/daemon/daemon-conf.c:294
+#: ../src/daemon/daemon-conf.c:310
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Formato de amostragem inválido '%s'."
-#: ../src/daemon/daemon-conf.c:312
+#: ../src/daemon/daemon-conf.c:328
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Taxa de amostragem inválida '%s'."
-#: ../src/daemon/daemon-conf.c:336
+#: ../src/daemon/daemon-conf.c:352
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Canais de amostragem inválidos'%s'."
-#: ../src/daemon/daemon-conf.c:354
+#: ../src/daemon/daemon-conf.c:370
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] Mapa de canais \"%s\" inválido."
-#: ../src/daemon/daemon-conf.c:372
+#: ../src/daemon/daemon-conf.c:388
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Números de fragmentos inválidos '%s'."
-#: ../src/daemon/daemon-conf.c:390
+#: ../src/daemon/daemon-conf.c:406
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Tamanho de fragmentos inválido '%s'."
-#: ../src/daemon/daemon-conf.c:408
+#: ../src/daemon/daemon-conf.c:424
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Número de nice inválido'%s'."
-#: ../src/daemon/daemon-conf.c:530
+#: ../src/daemon/daemon-conf.c:546
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Falha em abrir o arquivo de configuração: %s"
-#: ../src/daemon/daemon-conf.c:546
+#: ../src/daemon/daemon-conf.c:562
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -734,15 +739,14 @@ msgstr ""
"O mapa padrão dos canais especificado tem um número diferente de canais do "
"que o número de canais padrão especificado."
-#: ../src/daemon/daemon-conf.c:622
+#: ../src/daemon/daemon-conf.c:638
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### Lido do arquivo de configuração: %s ###\n"
#: ../src/daemon/caps.c:62
-#, fuzzy
msgid "Cleaning up privileges."
-msgstr "Descartando os privilégios de root."
+msgstr "Limpando privilégios."
#: ../src/daemon/pulseaudio.desktop.in.h:1
msgid "PulseAudio Sound System"
@@ -2243,9 +2247,9 @@ msgid "Daemon not responding."
msgstr "O daemon não responde."
#: ../src/utils/pacmd.c:161
-#, fuzzy, c-format
+#, c-format
msgid "poll(): %s"
-msgstr "fork(): %s"
+msgstr "poll(): %s"
#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
#, c-format
diff --git a/po/sr.po b/po/sr.po
index e25dc24a..e038089e 100644
--- a/po/sr.po
+++ b/po/sr.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-19 04:16+0200\n"
+"POT-Creation-Date: 2009-08-22 00:08+0200\n"
"PO-Revision-Date: 2009-04-07 23:02+0100\n"
"Last-Translator: Miloš Komarčević <kmilos@gmail.com>\n"
"Language-Team: Serbian <fedora-trans-sr@redhat.com>\n"
@@ -19,7 +19,7 @@ msgstr ""
"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Lokalize 0.3\n"
-#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666
+#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2676
#, c-format
msgid "%s %s"
msgstr ""
@@ -76,11 +76,11 @@ msgid ""
"input control values>"
msgstr ""
-#: ../src/pulsecore/sink.c:2650
+#: ../src/pulsecore/sink.c:2660
msgid "Internal Audio"
msgstr "Унутрашњи звук"
-#: ../src/pulsecore/sink.c:2655
+#: ../src/pulsecore/sink.c:2665
msgid "Modem"
msgstr "Модем"
@@ -331,11 +331,16 @@ msgid "Using state directory %s."
msgstr "Користи се %s директоријум стања."
#: ../src/daemon/main.c:777
+#, fuzzy, c-format
+msgid "Using modules directory %s."
+msgstr "Користи се %s извршни директоријум."
+
+#: ../src/daemon/main.c:779
#, c-format
msgid "Running in system mode: %s"
msgstr "Покренуто у системском режиму: %s"
-#: ../src/daemon/main.c:780
+#: ../src/daemon/main.c:782
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -345,15 +350,15 @@ msgid ""
"explanation why system mode is usually a bad idea."
msgstr ""
-#: ../src/daemon/main.c:797
+#: ../src/daemon/main.c:799
msgid "pa_pid_file_create() failed."
msgstr "Неуспела функција pa_pid_file_create()."
-#: ../src/daemon/main.c:807
+#: ../src/daemon/main.c:809
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Доступни су нови бројачи високе резолуције! Пријатно!"
-#: ../src/daemon/main.c:809
+#: ../src/daemon/main.c:811
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -361,27 +366,27 @@ msgstr ""
"Ваше језгро није добро подешено за pulseaudio! Препоручује Вам се да "
"користите Linux језгро са омогућеним бројачима високе резолуције."
-#: ../src/daemon/main.c:827
+#: ../src/daemon/main.c:829
msgid "pa_core_new() failed."
msgstr "Неуспела функција pa_core_new()."
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:891
msgid "Failed to initialize daemon."
msgstr "Неуспешно покретање демона."
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:896
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "Демон је покренут без иједног учитаног модула, одбија да ради."
-#: ../src/daemon/main.c:911
+#: ../src/daemon/main.c:913
msgid "Daemon startup complete."
msgstr "Покретање демона успешно."
-#: ../src/daemon/main.c:917
+#: ../src/daemon/main.c:919
msgid "Daemon shutdown initiated."
msgstr "Покренуто гашење демона."
-#: ../src/daemon/main.c:939
+#: ../src/daemon/main.c:941
msgid "Daemon terminated."
msgstr "Рад демона је прекинут."
@@ -647,72 +652,72 @@ msgstr ""
msgid "Path: %s\n"
msgstr "Путања: %s\n"
-#: ../src/daemon/daemon-conf.c:216
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Неисправан циљни дневник „%s“."
-#: ../src/daemon/daemon-conf.c:232
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Неисправан ниво опширности у дневнику „%s“."
-#: ../src/daemon/daemon-conf.c:248
+#: ../src/daemon/daemon-conf.c:264
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Неисправан начин дискретизације „%s“."
-#: ../src/daemon/daemon-conf.c:271
+#: ../src/daemon/daemon-conf.c:287
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] Неисправан rlimit „%s“."
-#: ../src/daemon/daemon-conf.c:278
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit није подржан на овој платформи."
-#: ../src/daemon/daemon-conf.c:294
+#: ../src/daemon/daemon-conf.c:310
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Неисправан формат узорка „%s“."
-#: ../src/daemon/daemon-conf.c:312
+#: ../src/daemon/daemon-conf.c:328
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Неисправна учестаност дискретизације „%s“."
-#: ../src/daemon/daemon-conf.c:336
+#: ../src/daemon/daemon-conf.c:352
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Неисправни канали узорка „%s“."
-#: ../src/daemon/daemon-conf.c:354
+#: ../src/daemon/daemon-conf.c:370
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] Неисправна мапа канала „%s“."
-#: ../src/daemon/daemon-conf.c:372
+#: ../src/daemon/daemon-conf.c:388
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Неисправан број одломака „%s“."
-#: ../src/daemon/daemon-conf.c:390
+#: ../src/daemon/daemon-conf.c:406
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Неисправна величина одломка „%s“."
-#: ../src/daemon/daemon-conf.c:408
+#: ../src/daemon/daemon-conf.c:424
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Неисправан ниво приоритета „%s“."
-#: ../src/daemon/daemon-conf.c:530
+#: ../src/daemon/daemon-conf.c:546
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Неуспело отварање датотеке подешавања: %s"
-#: ../src/daemon/daemon-conf.c:546
+#: ../src/daemon/daemon-conf.c:562
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -720,7 +725,7 @@ msgstr ""
"Наведена мапа канала има нема исти број канала као што је наведено у "
"подразумеваном броју канала."
-#: ../src/daemon/daemon-conf.c:622
+#: ../src/daemon/daemon-conf.c:638
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### Прочитај из датотеке подешавања: %s ###\n"
diff --git a/po/sr@latin.po b/po/sr@latin.po
index 7db87349..b2aa721d 100644
--- a/po/sr@latin.po
+++ b/po/sr@latin.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-19 04:16+0200\n"
+"POT-Creation-Date: 2009-08-22 00:08+0200\n"
"PO-Revision-Date: 2009-04-07 23:02+0100\n"
"Last-Translator: Miloš Komarčević <kmilos@gmail.com>\n"
"Language-Team: Serbian <fedora-trans-sr@redhat.com>\n"
@@ -19,7 +19,7 @@ msgstr ""
"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Lokalize 0.3\n"
-#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666
+#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2676
#, c-format
msgid "%s %s"
msgstr ""
@@ -76,11 +76,11 @@ msgid ""
"input control values>"
msgstr ""
-#: ../src/pulsecore/sink.c:2650
+#: ../src/pulsecore/sink.c:2660
msgid "Internal Audio"
msgstr "Unutrašnji zvuk"
-#: ../src/pulsecore/sink.c:2655
+#: ../src/pulsecore/sink.c:2665
msgid "Modem"
msgstr "Modem"
@@ -332,11 +332,16 @@ msgid "Using state directory %s."
msgstr "Koristi se %s direktorijum stanja."
#: ../src/daemon/main.c:777
+#, fuzzy, c-format
+msgid "Using modules directory %s."
+msgstr "Koristi se %s izvršni direktorijum."
+
+#: ../src/daemon/main.c:779
#, c-format
msgid "Running in system mode: %s"
msgstr "Pokrenuto u sistemskom režimu: %s"
-#: ../src/daemon/main.c:780
+#: ../src/daemon/main.c:782
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -346,15 +351,15 @@ msgid ""
"explanation why system mode is usually a bad idea."
msgstr ""
-#: ../src/daemon/main.c:797
+#: ../src/daemon/main.c:799
msgid "pa_pid_file_create() failed."
msgstr "Neuspela funkcija pa_pid_file_create()."
-#: ../src/daemon/main.c:807
+#: ../src/daemon/main.c:809
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Dostupni su novi brojači visoke rezolucije! Prijatno!"
-#: ../src/daemon/main.c:809
+#: ../src/daemon/main.c:811
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -362,27 +367,27 @@ msgstr ""
"Vaše jezgro nije dobro podešeno za pulseaudio! Preporučuje Vam se da "
"koristite Linux jezgro sa omogućenim brojačima visoke rezolucije."
-#: ../src/daemon/main.c:827
+#: ../src/daemon/main.c:829
msgid "pa_core_new() failed."
msgstr "Neuspela funkcija pa_core_new()."
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:891
msgid "Failed to initialize daemon."
msgstr "Neuspešno pokretanje demona."
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:896
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "Demon je pokrenut bez ijednog učitanog modula, odbija da radi."
-#: ../src/daemon/main.c:911
+#: ../src/daemon/main.c:913
msgid "Daemon startup complete."
msgstr "Pokretanje demona uspešno."
-#: ../src/daemon/main.c:917
+#: ../src/daemon/main.c:919
msgid "Daemon shutdown initiated."
msgstr "Pokrenuto gašenje demona."
-#: ../src/daemon/main.c:939
+#: ../src/daemon/main.c:941
msgid "Daemon terminated."
msgstr "Rad demona je prekinut."
@@ -648,72 +653,72 @@ msgstr ""
msgid "Path: %s\n"
msgstr "Putanja: %s\n"
-#: ../src/daemon/daemon-conf.c:216
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Neispravan ciljni dnevnik „%s“."
-#: ../src/daemon/daemon-conf.c:232
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Neispravan nivo opširnosti u dnevniku „%s“."
-#: ../src/daemon/daemon-conf.c:248
+#: ../src/daemon/daemon-conf.c:264
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Neispravan način diskretizacije „%s“."
-#: ../src/daemon/daemon-conf.c:271
+#: ../src/daemon/daemon-conf.c:287
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] Neispravan rlimit „%s“."
-#: ../src/daemon/daemon-conf.c:278
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit nije podržan na ovoj platformi."
-#: ../src/daemon/daemon-conf.c:294
+#: ../src/daemon/daemon-conf.c:310
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Neispravan format uzorka „%s“."
-#: ../src/daemon/daemon-conf.c:312
+#: ../src/daemon/daemon-conf.c:328
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Neispravna učestanost diskretizacije „%s“."
-#: ../src/daemon/daemon-conf.c:336
+#: ../src/daemon/daemon-conf.c:352
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Neispravni kanali uzorka „%s“."
-#: ../src/daemon/daemon-conf.c:354
+#: ../src/daemon/daemon-conf.c:370
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] Neispravna mapa kanala „%s“."
-#: ../src/daemon/daemon-conf.c:372
+#: ../src/daemon/daemon-conf.c:388
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Neispravan broj odlomaka „%s“."
-#: ../src/daemon/daemon-conf.c:390
+#: ../src/daemon/daemon-conf.c:406
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Neispravna veličina odlomka „%s“."
-#: ../src/daemon/daemon-conf.c:408
+#: ../src/daemon/daemon-conf.c:424
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Neispravan nivo prioriteta „%s“."
-#: ../src/daemon/daemon-conf.c:530
+#: ../src/daemon/daemon-conf.c:546
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Neuspelo otvaranje datoteke podešavanja: %s"
-#: ../src/daemon/daemon-conf.c:546
+#: ../src/daemon/daemon-conf.c:562
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -721,7 +726,7 @@ msgstr ""
"Navedena mapa kanala ima nema isti broj kanala kao što je navedeno u "
"podrazumevanom broju kanala."
-#: ../src/daemon/daemon-conf.c:622
+#: ../src/daemon/daemon-conf.c:638
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### Pročitaj iz datoteke podešavanja: %s ###\n"
diff --git a/po/sv.po b/po/sv.po
index eb9ee47b..e9d0dae1 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-19 04:16+0200\n"
+"POT-Creation-Date: 2009-08-22 00:08+0200\n"
"PO-Revision-Date: 2008-09-05 18:24+0100\n"
"Last-Translator: Daniel Nylander <po@danielnylander.se>\n"
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
@@ -15,7 +15,7 @@ msgstr ""
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666
+#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2676
#, c-format
msgid "%s %s"
msgstr ""
@@ -60,12 +60,12 @@ msgid ""
"input control values>"
msgstr ""
-#: ../src/pulsecore/sink.c:2650
+#: ../src/pulsecore/sink.c:2660
#, fuzzy
msgid "Internal Audio"
msgstr "Internt fel"
-#: ../src/pulsecore/sink.c:2655
+#: ../src/pulsecore/sink.c:2665
msgid "Modem"
msgstr ""
@@ -316,10 +316,15 @@ msgstr ""
#: ../src/daemon/main.c:777
#, c-format
+msgid "Using modules directory %s."
+msgstr ""
+
+#: ../src/daemon/main.c:779
+#, c-format
msgid "Running in system mode: %s"
msgstr ""
-#: ../src/daemon/main.c:780
+#: ../src/daemon/main.c:782
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -329,41 +334,41 @@ msgid ""
"explanation why system mode is usually a bad idea."
msgstr ""
-#: ../src/daemon/main.c:797
+#: ../src/daemon/main.c:799
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() misslyckades."
-#: ../src/daemon/main.c:807
+#: ../src/daemon/main.c:809
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr ""
-#: ../src/daemon/main.c:809
+#: ../src/daemon/main.c:811
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
msgstr ""
-#: ../src/daemon/main.c:827
+#: ../src/daemon/main.c:829
msgid "pa_core_new() failed."
msgstr "pa_core_new() misslyckades."
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:891
msgid "Failed to initialize daemon."
msgstr ""
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:896
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr ""
-#: ../src/daemon/main.c:911
+#: ../src/daemon/main.c:913
msgid "Daemon startup complete."
msgstr ""
-#: ../src/daemon/main.c:917
+#: ../src/daemon/main.c:919
msgid "Daemon shutdown initiated."
msgstr ""
-#: ../src/daemon/main.c:939
+#: ../src/daemon/main.c:941
msgid "Daemon terminated."
msgstr ""
@@ -552,78 +557,78 @@ msgstr ""
msgid "Path: %s\n"
msgstr "Sökväg: %s\n"
-#: ../src/daemon/daemon-conf.c:216
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:232
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:248
+#: ../src/daemon/daemon-conf.c:264
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:271
+#: ../src/daemon/daemon-conf.c:287
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:278
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr ""
-#: ../src/daemon/daemon-conf.c:294
+#: ../src/daemon/daemon-conf.c:310
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:312
+#: ../src/daemon/daemon-conf.c:328
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:336
+#: ../src/daemon/daemon-conf.c:352
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:354
+#: ../src/daemon/daemon-conf.c:370
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:372
+#: ../src/daemon/daemon-conf.c:388
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:390
+#: ../src/daemon/daemon-conf.c:406
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:408
+#: ../src/daemon/daemon-conf.c:424
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:530
+#: ../src/daemon/daemon-conf.c:546
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Misslyckades med att öppna konfigurationsfil: %s"
-#: ../src/daemon/daemon-conf.c:546
+#: ../src/daemon/daemon-conf.c:562
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
msgstr ""
-#: ../src/daemon/daemon-conf.c:622
+#: ../src/daemon/daemon-conf.c:638
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr ""
diff --git a/po/ta.po b/po/ta.po
index b1cd2c59..7dba18d9 100644
--- a/po/ta.po
+++ b/po/ta.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio.master-tx.pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-19 04:16+0200\n"
+"POT-Creation-Date: 2009-08-22 00:08+0200\n"
"PO-Revision-Date: 2009-04-12 05:02+0530\n"
"Last-Translator: I. Felix <ifelix@redhat.com>\n"
"Language-Team: Tamil <fedora-trans-ta@redhat.com>\n"
@@ -34,7 +34,7 @@ msgstr ""
"\n"
"\n"
-#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666
+#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2676
#, c-format
msgid "%s %s"
msgstr ""
@@ -91,11 +91,11 @@ msgid ""
"input control values>"
msgstr ""
-#: ../src/pulsecore/sink.c:2650
+#: ../src/pulsecore/sink.c:2660
msgid "Internal Audio"
msgstr "உட்புற ஆடியோ"
-#: ../src/pulsecore/sink.c:2655
+#: ../src/pulsecore/sink.c:2665
msgid "Modem"
msgstr "மாதிரி"
@@ -342,11 +342,16 @@ msgid "Using state directory %s."
msgstr "%s நிலை அடைவினை பயன்படுத்துகிறது."
#: ../src/daemon/main.c:777
+#, fuzzy, c-format
+msgid "Using modules directory %s."
+msgstr "ஓடும்நேரம் %s அடைவை பயன்படுத்துகிறது."
+
+#: ../src/daemon/main.c:779
#, c-format
msgid "Running in system mode: %s"
msgstr "கணினியின் முறைமையில் இயங்குகிறது: %s"
-#: ../src/daemon/main.c:780
+#: ../src/daemon/main.c:782
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -356,15 +361,15 @@ msgid ""
"explanation why system mode is usually a bad idea."
msgstr ""
-#: ../src/daemon/main.c:797
+#: ../src/daemon/main.c:799
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() தோல்வியுற்றது."
-#: ../src/daemon/main.c:807
+#: ../src/daemon/main.c:809
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "உயர்ந்த திரைத்திறன் நேரம்காட்டி கிடைக்கிளது! Bon appetit!"
-#: ../src/daemon/main.c:809
+#: ../src/daemon/main.c:811
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -372,27 +377,27 @@ msgstr ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
-#: ../src/daemon/main.c:827
+#: ../src/daemon/main.c:829
msgid "pa_core_new() failed."
msgstr "pa_core_new() தோல்வியுற்றது."
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:891
msgid "Failed to initialize daemon."
msgstr "டோமோனை ஆரம்பிப்பதில் தோல்வி."
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:896
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "டீமான் துவக்கம் எந்த தொகுதிகளும் ஏற்றப்படாமல், வேலையை நிராகரிக்கிறது."
-#: ../src/daemon/main.c:911
+#: ../src/daemon/main.c:913
msgid "Daemon startup complete."
msgstr "டோமோன் துவக்குவது முடிவடைந்தது."
-#: ../src/daemon/main.c:917
+#: ../src/daemon/main.c:919
msgid "Daemon shutdown initiated."
msgstr "டோமோன் பணிநிறுத்தம் முனைகிறது."
-#: ../src/daemon/main.c:939
+#: ../src/daemon/main.c:941
msgid "Daemon terminated."
msgstr "டோமோன் நீக்கப்பட்டுது."
@@ -649,72 +654,72 @@ msgstr ""
msgid "Path: %s\n"
msgstr "பாதை: %s\n"
-#: ../src/daemon/daemon-conf.c:216
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] தவறான பதிவு இலக்கு '%s'."
-#: ../src/daemon/daemon-conf.c:232
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] தவறான பதிவு இலக்கு '%s'."
-#: ../src/daemon/daemon-conf.c:248
+#: ../src/daemon/daemon-conf.c:264
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] தவறான மறுமாதிரி முறை '%s'."
-#: ../src/daemon/daemon-conf.c:271
+#: ../src/daemon/daemon-conf.c:287
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] தவறான rlimit '%s'."
-#: ../src/daemon/daemon-conf.c:278
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit இந்த தளத்தில் துணைபுரியவில்லை."
-#: ../src/daemon/daemon-conf.c:294
+#: ../src/daemon/daemon-conf.c:310
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] தவறான மாதிரி முறை '%s'."
-#: ../src/daemon/daemon-conf.c:312
+#: ../src/daemon/daemon-conf.c:328
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] தவறான மாதிரி விலை '%s'."
-#: ../src/daemon/daemon-conf.c:336
+#: ../src/daemon/daemon-conf.c:352
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] தவறான மாதிரி சேனல்கள் '%s'."
-#: ../src/daemon/daemon-conf.c:354
+#: ../src/daemon/daemon-conf.c:370
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] தவறான சேனல் படம் '%s'."
-#: ../src/daemon/daemon-conf.c:372
+#: ../src/daemon/daemon-conf.c:388
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] பகுப்பு '%s'க்கு தவறான எண்"
-#: ../src/daemon/daemon-conf.c:390
+#: ../src/daemon/daemon-conf.c:406
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] தவறான பகுப்பு அளவு '%s'."
-#: ../src/daemon/daemon-conf.c:408
+#: ../src/daemon/daemon-conf.c:424
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] தவறான நல்ல நிலை '%s'."
-#: ../src/daemon/daemon-conf.c:530
+#: ../src/daemon/daemon-conf.c:546
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "கட்டமைக்கப்பட்ட கோப்பினை திறப்பதில் தோல்வி: %s"
-#: ../src/daemon/daemon-conf.c:546
+#: ../src/daemon/daemon-conf.c:562
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -722,7 +727,7 @@ msgstr ""
"குறிப்பிட்ட முன்னிருப்பு சேனல் மேப் வேறுபட்ட சேனல்களின் எண்ணிக்கையை குறிப்பிட்ட "
"முன்னிருப்பு சேனல்களின் எண்ணிக்கையை விட கொண்டுள்ளது"
-#: ../src/daemon/daemon-conf.c:622
+#: ../src/daemon/daemon-conf.c:638
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### கட்டமைப்பு கோப்பிலிருந்து வாசிக்கவும்: %s ###\n"
diff --git a/po/te.po b/po/te.po
index f28b689c..03252736 100644
--- a/po/te.po
+++ b/po/te.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio.master-tx.te\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-19 04:16+0200\n"
+"POT-Creation-Date: 2009-08-22 00:08+0200\n"
"PO-Revision-Date: 2009-04-08 18:21+0530\n"
"Last-Translator: Krishna Babu K <kkrothap@redhat.com>\n"
"Language-Team: Telugu <en@li.org>\n"
@@ -21,7 +21,7 @@ msgstr ""
"\n"
"\n"
-#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666
+#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2676
#, c-format
msgid "%s %s"
msgstr ""
@@ -74,11 +74,11 @@ msgid ""
"input control values>"
msgstr ""
-#: ../src/pulsecore/sink.c:2650
+#: ../src/pulsecore/sink.c:2660
msgid "Internal Audio"
msgstr "అంతర్గత ఆడియో"
-#: ../src/pulsecore/sink.c:2655
+#: ../src/pulsecore/sink.c:2665
msgid "Modem"
msgstr "మోడెమ్"
@@ -324,11 +324,16 @@ msgid "Using state directory %s."
msgstr "స్థితి డైరెక్టరీను వుపయోగించుచున్నది %s."
#: ../src/daemon/main.c:777
+#, fuzzy, c-format
+msgid "Using modules directory %s."
+msgstr "రన్‌టైమ్ డైరెక్టరీను వుపయోగించుచున్నది %s."
+
+#: ../src/daemon/main.c:779
#, c-format
msgid "Running in system mode: %s"
msgstr "సిస్టమ్ రీతినందు వుపయోగించుచున్నది: %s"
-#: ../src/daemon/main.c:780
+#: ../src/daemon/main.c:782
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -338,41 +343,41 @@ msgid ""
"explanation why system mode is usually a bad idea."
msgstr ""
-#: ../src/daemon/main.c:797
+#: ../src/daemon/main.c:799
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() విఫలమైంది."
-#: ../src/daemon/main.c:807
+#: ../src/daemon/main.c:809
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "తాజా అధిక-తీవ్రత కాలసూచికలు అందుబాటులో వున్నాయి! బాన్ ఎపటైట్!"
-#: ../src/daemon/main.c:809
+#: ../src/daemon/main.c:811
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
msgstr "మిత్రమా, నీ కెర్నల్ చెడిపోయింది! అధిక-తీవ్రత కాలసూచకిలను చేతనము చేయమని సూచించడమైనది!"
-#: ../src/daemon/main.c:827
+#: ../src/daemon/main.c:829
msgid "pa_core_new() failed."
msgstr "pa_core_new() విఫలమైంది."
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:891
msgid "Failed to initialize daemon."
msgstr "డెమోన్ సిద్దముచేయుటకు విఫలమైంది."
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:896
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "ఏవిధమైన మాడ్యూళ్ళు లోడవకుండా డెమోన్ ప్రారంభము, పనిచేయుటకు తిరస్కరించబడింది."
-#: ../src/daemon/main.c:911
+#: ../src/daemon/main.c:913
msgid "Daemon startup complete."
msgstr "డెమోన్ ప్రారంభము పూర్తైనది."
-#: ../src/daemon/main.c:917
+#: ../src/daemon/main.c:919
msgid "Daemon shutdown initiated."
msgstr "డెమోన్ మూసివేత సిద్దముచేయబడింది."
-#: ../src/daemon/main.c:939
+#: ../src/daemon/main.c:941
msgid "Daemon terminated."
msgstr "డెమోన్ అంతముచేయబడింది."
@@ -629,72 +634,72 @@ msgstr ""
msgid "Path: %s\n"
msgstr "పాత్: %s\n"
-#: ../src/daemon/daemon-conf.c:216
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] చెల్లని లాగ్ లక్ష్యము '%s'."
-#: ../src/daemon/daemon-conf.c:232
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] చెల్లని లాగ్ స్థాయి '%s'."
-#: ../src/daemon/daemon-conf.c:248
+#: ../src/daemon/daemon-conf.c:264
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] చెల్లని పునఃవుదాహరణ పద్దతి '%s'."
-#: ../src/daemon/daemon-conf.c:271
+#: ../src/daemon/daemon-conf.c:287
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] చెల్లని rlimit '%s'."
-#: ../src/daemon/daemon-conf.c:278
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit అనునది ఈ ప్లాట్‌ఫాం నందు మద్దతివ్వబడదు."
-#: ../src/daemon/daemon-conf.c:294
+#: ../src/daemon/daemon-conf.c:310
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] చెల్లని మాదిరి ఫార్మాట్ '%s'."
-#: ../src/daemon/daemon-conf.c:312
+#: ../src/daemon/daemon-conf.c:328
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] చెల్లని మాదిరి రేటు '%s'."
-#: ../src/daemon/daemon-conf.c:336
+#: ../src/daemon/daemon-conf.c:352
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] చెల్లని మాదిరి చానళ్ళు '%s'."
-#: ../src/daemon/daemon-conf.c:354
+#: ../src/daemon/daemon-conf.c:370
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] చెల్లని ఛానల్ మాప్ '%s'."
-#: ../src/daemon/daemon-conf.c:372
+#: ../src/daemon/daemon-conf.c:388
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] చెల్లని ముక్కలు సంఖ్య '%s'."
-#: ../src/daemon/daemon-conf.c:390
+#: ../src/daemon/daemon-conf.c:406
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] చెల్లని ముక్క పరిమాణము '%s'."
-#: ../src/daemon/daemon-conf.c:408
+#: ../src/daemon/daemon-conf.c:424
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] చెల్లని సాదా స్థాయి '%s'."
-#: ../src/daemon/daemon-conf.c:530
+#: ../src/daemon/daemon-conf.c:546
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "ఆకృతీకరణ దస్త్రమును తెరుచుటకు విఫలమైంది: %s"
-#: ../src/daemon/daemon-conf.c:546
+#: ../src/daemon/daemon-conf.c:562
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -702,7 +707,7 @@ msgstr ""
"తెలుపబడిన అప్రమేయ ప్రాసారమార్గం మాప్ తెలుపబడిన అప్రమేయ ప్రసారమార్గముల కన్నా విభిన్న ప్రసారమార్గముల "
"సంఖ్యను కలిగివుంది."
-#: ../src/daemon/daemon-conf.c:622
+#: ../src/daemon/daemon-conf.c:638
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### ఆకృతీకరణ దస్త్రమునుండి చదువుము: %s ###\n"
diff --git a/po/uk.po b/po/uk.po
index 2a543b30..76fcbcbf 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio.master-tx\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-19 04:16+0200\n"
+"POT-Creation-Date: 2009-08-22 00:08+0200\n"
"PO-Revision-Date: 2009-04-18 11:13+0300\n"
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
"Language-Team: Ukrainian <translation@linux.org.ua>\n"
@@ -17,7 +17,7 @@ msgstr ""
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666
+#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2676
#, c-format
msgid "%s %s"
msgstr ""
@@ -74,11 +74,11 @@ msgid ""
"input control values>"
msgstr ""
-#: ../src/pulsecore/sink.c:2650
+#: ../src/pulsecore/sink.c:2660
msgid "Internal Audio"
msgstr "Вбудоване аудіо"
-#: ../src/pulsecore/sink.c:2655
+#: ../src/pulsecore/sink.c:2665
msgid "Modem"
msgstr "Модем"
@@ -335,11 +335,16 @@ msgid "Using state directory %s."
msgstr "Каталог стану: %s."
#: ../src/daemon/main.c:777
+#, fuzzy, c-format
+msgid "Using modules directory %s."
+msgstr "Каталог запуску: %s."
+
+#: ../src/daemon/main.c:779
#, c-format
msgid "Running in system mode: %s"
msgstr "Запуску у загальносистемному режимі: %s"
-#: ../src/daemon/main.c:780
+#: ../src/daemon/main.c:782
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -349,15 +354,15 @@ msgid ""
"explanation why system mode is usually a bad idea."
msgstr ""
-#: ../src/daemon/main.c:797
+#: ../src/daemon/main.c:799
msgid "pa_pid_file_create() failed."
msgstr "Спроба виконання pa_pid_file_create() зазнала невдачі."
-#: ../src/daemon/main.c:807
+#: ../src/daemon/main.c:809
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Доступні свіжі високоточні таймери! Смачного!"
-#: ../src/daemon/main.c:809
+#: ../src/daemon/main.c:811
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -365,29 +370,29 @@ msgstr ""
"Чувак, твоє ядро — лайно! Круті пацани рекомендують Linux з увімкненими "
"високоточними таймерами!"
-#: ../src/daemon/main.c:827
+#: ../src/daemon/main.c:829
msgid "pa_core_new() failed."
msgstr "Спроба виконання pa_core_new() зазнала невдачі."
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:891
msgid "Failed to initialize daemon."
msgstr "Не вдалося ініціалізувати фонову службу."
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:896
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr ""
"Запуск фонової служби без жодного завантаженого модуля, служба не буде "
"працездатною."
-#: ../src/daemon/main.c:911
+#: ../src/daemon/main.c:913
msgid "Daemon startup complete."
msgstr "Запуск фонової служби завершено."
-#: ../src/daemon/main.c:917
+#: ../src/daemon/main.c:919
msgid "Daemon shutdown initiated."
msgstr "Ініційовано завершення роботи фонової служби."
-#: ../src/daemon/main.c:939
+#: ../src/daemon/main.c:941
msgid "Daemon terminated."
msgstr "Виконання фонової служби перервано."
@@ -661,72 +666,72 @@ msgstr ""
msgid "Path: %s\n"
msgstr "Шлях: %s\n"
-#: ../src/daemon/daemon-conf.c:216
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Некоректний журнал «%s»."
-#: ../src/daemon/daemon-conf.c:232
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Некоректний рівень журналювання «%s»."
-#: ../src/daemon/daemon-conf.c:248
+#: ../src/daemon/daemon-conf.c:264
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Некоректний метод зміни частотних характеристик «%s»."
-#: ../src/daemon/daemon-conf.c:271
+#: ../src/daemon/daemon-conf.c:287
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] Некоректне значення rlimit «%s»."
-#: ../src/daemon/daemon-conf.c:278
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit не підтримується на цій платформі."
-#: ../src/daemon/daemon-conf.c:294
+#: ../src/daemon/daemon-conf.c:310
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Некоректний формат фрагмента «%s»."
-#: ../src/daemon/daemon-conf.c:312
+#: ../src/daemon/daemon-conf.c:328
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Некоректна частота вибірки «%s»."
-#: ../src/daemon/daemon-conf.c:336
+#: ../src/daemon/daemon-conf.c:352
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Некоректні канали фрагмента «%s»."
-#: ../src/daemon/daemon-conf.c:354
+#: ../src/daemon/daemon-conf.c:370
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] Некоректна карта каналів «%s»'."
-#: ../src/daemon/daemon-conf.c:372
+#: ../src/daemon/daemon-conf.c:388
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Некоректна кількість фрагментів «%s»."
-#: ../src/daemon/daemon-conf.c:390
+#: ../src/daemon/daemon-conf.c:406
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Некоректний розмір фрагмента «%s»."
-#: ../src/daemon/daemon-conf.c:408
+#: ../src/daemon/daemon-conf.c:424
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Некоректний рівень nice «%s»."
-#: ../src/daemon/daemon-conf.c:530
+#: ../src/daemon/daemon-conf.c:546
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Не вдалося відкрити файл налаштувань: %s"
-#: ../src/daemon/daemon-conf.c:546
+#: ../src/daemon/daemon-conf.c:562
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -734,7 +739,7 @@ msgstr ""
"У вказаній типовій карті каналів визначається інша кількість каналів, ніж "
"типова кількість каналів."
-#: ../src/daemon/daemon-conf.c:622
+#: ../src/daemon/daemon-conf.c:638
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### Прочитано з файла налаштувань: %s ###\n"
diff --git a/po/zh_CN.po b/po/zh_CN.po
index a801f94b..6e64c826 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio.master-tx\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-19 04:16+0200\n"
+"POT-Creation-Date: 2009-08-22 00:08+0200\n"
"PO-Revision-Date: 2009-04-06 10:26+1000\n"
"Last-Translator: Leah Liu <lliu@redhat.com>\n"
"Language-Team: Simplified Chinese <zh@li.org>\n"
@@ -20,7 +20,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 1.11.4\n"
-#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666
+#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2676
#, c-format
msgid "%s %s"
msgstr ""
@@ -71,11 +71,11 @@ msgid ""
"input control values>"
msgstr ""
-#: ../src/pulsecore/sink.c:2650
+#: ../src/pulsecore/sink.c:2660
msgid "Internal Audio"
msgstr "内部音频"
-#: ../src/pulsecore/sink.c:2655
+#: ../src/pulsecore/sink.c:2665
msgid "Modem"
msgstr "调制解调器"
@@ -321,11 +321,16 @@ msgid "Using state directory %s."
msgstr "正在使用状态文件夹%s。"
#: ../src/daemon/main.c:777
+#, fuzzy, c-format
+msgid "Using modules directory %s."
+msgstr "正在使用运行时文件夹%s。"
+
+#: ../src/daemon/main.c:779
#, c-format
msgid "Running in system mode: %s"
msgstr "正在以系统模式运行:%s"
-#: ../src/daemon/main.c:780
+#: ../src/daemon/main.c:782
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -335,41 +340,41 @@ msgid ""
"explanation why system mode is usually a bad idea."
msgstr ""
-#: ../src/daemon/main.c:797
+#: ../src/daemon/main.c:799
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create()失败。"
-#: ../src/daemon/main.c:807
+#: ../src/daemon/main.c:809
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "新鲜的高分辨率计时器开锅了!吃个饱!"
-#: ../src/daemon/main.c:809
+#: ../src/daemon/main.c:811
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
msgstr "老兄,你的内核真臭!现在流行的是启用了高分辩率计分器的Linux!"
-#: ../src/daemon/main.c:827
+#: ../src/daemon/main.c:829
msgid "pa_core_new() failed."
msgstr "pa_core_new()失败。"
-#: ../src/daemon/main.c:889
+#: ../src/daemon/main.c:891
msgid "Failed to initialize daemon."
msgstr "后台程序初始化失败。"
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:896
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "后台程序启动未加载任何模块,拒绝工作。"
-#: ../src/daemon/main.c:911
+#: ../src/daemon/main.c:913
msgid "Daemon startup complete."
msgstr "后台程序启动完成。"
-#: ../src/daemon/main.c:917
+#: ../src/daemon/main.c:919
msgid "Daemon shutdown initiated."
msgstr "开始关闭后台程序。"
-#: ../src/daemon/main.c:939
+#: ../src/daemon/main.c:941
msgid "Daemon terminated."
msgstr "后台程序已终止。"
@@ -610,78 +615,78 @@ msgstr ""
msgid "Path: %s\n"
msgstr "路径:%s\n"
-#: ../src/daemon/daemon-conf.c:216
+#: ../src/daemon/daemon-conf.c:232
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] 无效的日志目标'%s'。"
-#: ../src/daemon/daemon-conf.c:232
+#: ../src/daemon/daemon-conf.c:248
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] 无效的日志级别'%s'。"
-#: ../src/daemon/daemon-conf.c:248
+#: ../src/daemon/daemon-conf.c:264
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] 无效的重采样方法'%s'。"
-#: ../src/daemon/daemon-conf.c:271
+#: ../src/daemon/daemon-conf.c:287
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] 无效的rlimit '%s'。"
-#: ../src/daemon/daemon-conf.c:278
+#: ../src/daemon/daemon-conf.c:294
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] 此平台不支持rlimit。"
-#: ../src/daemon/daemon-conf.c:294
+#: ../src/daemon/daemon-conf.c:310
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] 无效的样品格式'%s'。"
-#: ../src/daemon/daemon-conf.c:312
+#: ../src/daemon/daemon-conf.c:328
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] 无效的样品率'%s'。"
-#: ../src/daemon/daemon-conf.c:336
+#: ../src/daemon/daemon-conf.c:352
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] 无效的样品通道'%s'。"
-#: ../src/daemon/daemon-conf.c:354
+#: ../src/daemon/daemon-conf.c:370
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] 无效频道地图 '%s'。"
-#: ../src/daemon/daemon-conf.c:372
+#: ../src/daemon/daemon-conf.c:388
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] 无效的分段数'%s'。"
-#: ../src/daemon/daemon-conf.c:390
+#: ../src/daemon/daemon-conf.c:406
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] 无效的分段大小'%s'。"
-#: ../src/daemon/daemon-conf.c:408
+#: ../src/daemon/daemon-conf.c:424
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] 无效的nice level '%s'。"
-#: ../src/daemon/daemon-conf.c:530
+#: ../src/daemon/daemon-conf.c:546
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "打开配置文件失败:%s"
-#: ../src/daemon/daemon-conf.c:546
+#: ../src/daemon/daemon-conf.c:562
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
msgstr "指定的默认频道地图的频道数与指定的默认频道数不同。"
-#: ../src/daemon/daemon-conf.c:622
+#: ../src/daemon/daemon-conf.c:638
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### 从配置文件读取:%s ###\n"
diff --git a/src/.gitignore b/src/.gitignore
index 82331524..6cd173c0 100644
--- a/src/.gitignore
+++ b/src/.gitignore
@@ -1,3 +1,4 @@
+usergroup-test
sigbus-test
TAGS
alsa-time-test
diff --git a/src/Makefile.am b/src/Makefile.am
index ab91be83..2fd9a734 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -74,6 +74,7 @@ AM_CFLAGS = \
$(LIBSAMPLERATE_CFLAGS) \
$(LIBSNDFILE_CFLAGS) \
$(LIBSPEEX_CFLAGS) \
+ -DPA_BUILDDIR=\"$(abs_builddir)\" \
-DPA_DLSEARCHPATH=\"$(modlibexecdir)\" \
-DPA_DEFAULT_CONFIG_DIR=\"$(PA_DEFAULT_CONFIG_DIR)\" \
-DPA_BINARY=\"$(PA_BINARY)\" \
@@ -83,8 +84,8 @@ AM_CFLAGS = \
-DAO_REQUIRE_CAS \
-DPULSE_LOCALEDIR=\"$(pulselocaledir)\" \
-DPA_MACHINE_ID=\"$(localstatedir)/lib/dbus/machine-id\" \
- -DPA_ALSA_PATHS_DIR=\"$(alsapathsdir)\" \
- -DPA_ALSA_PROFILE_SETS_DIR=\"$(alsaprofilesetsdir)\"
+ -DPA_ALSA_PATHS_DIR=\"$(alsapathsdir)\" \
+ -DPA_ALSA_PROFILE_SETS_DIR=\"$(alsaprofilesetsdir)\"
AM_LIBADD = $(PTHREAD_LIBS) $(INTLLIBS)
AM_LDADD = $(PTHREAD_LIBS) $(INTLLIBS)
@@ -279,7 +280,8 @@ TESTS = \
proplist-test \
lock-autospawn-test \
prioq-test \
- sigbus-test
+ sigbus-test \
+ usergroup-test
TESTS_BINARIES = \
mainloop-test \
@@ -317,7 +319,8 @@ TESTS_BINARIES = \
stripnul \
lock-autospawn-test \
prioq-test \
- sigbus-test
+ sigbus-test \
+ usergroup-test
if HAVE_SIGXCPU
#TESTS += \
@@ -556,6 +559,11 @@ alsa_time_test_LDADD = $(AM_LDADD)
alsa_time_test_CFLAGS = $(AM_CFLAGS) $(ASOUNDLIB_CFLAGS)
alsa_time_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) $(ASOUNDLIB_LIBS)
+usergroup_test_SOURCES = tests/usergroup-test.c
+usergroup_test_LDADD = $(AM_LDADD) libpulsecore-@PA_MAJORMINORMICRO@.la
+usergroup_test_CFLAGS = $(AM_CFLAGS)
+usergroup_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS)
+
###################################
# Common library #
###################################
@@ -620,6 +628,7 @@ libpulsecommon_@PA_MAJORMINORMICRO@_la_SOURCES = \
pulsecore/tagstruct.c pulsecore/tagstruct.h \
pulsecore/time-smoother.c pulsecore/time-smoother.h \
pulsecore/tokenizer.c pulsecore/tokenizer.h \
+ pulsecore/usergroup.c pulsecore/usergroup.h \
pulsecore/sndfile-util.c pulsecore/sndfile-util.h \
pulsecore/winsock.h
diff --git a/src/daemon/cmdline.c b/src/daemon/cmdline.c
index ecb38486..f6cdcdc8 100644
--- a/src/daemon/cmdline.c
+++ b/src/daemon/cmdline.c
@@ -385,11 +385,6 @@ int pa_cmdline_parse(pa_daemon_conf *conf, int argc, char *const argv [], int *d
pa_xfree(conf->script_commands);
conf->script_commands = pa_strbuf_tostring_free(buf);
- if (!conf->script_commands) {
- pa_xfree(conf->script_commands);
- conf->script_commands = NULL;
- }
-
*d = optind;
return 0;
diff --git a/src/daemon/daemon-conf.c b/src/daemon/daemon-conf.c
index 9a87b555..ec1ec5ce 100644
--- a/src/daemon/daemon-conf.c
+++ b/src/daemon/daemon-conf.c
@@ -133,9 +133,25 @@ static const pa_daemon_conf default_conf = {
};
pa_daemon_conf* pa_daemon_conf_new(void) {
- pa_daemon_conf *c = pa_xnewdup(pa_daemon_conf, &default_conf, 1);
+ pa_daemon_conf *c;
+
+ c = pa_xnewdup(pa_daemon_conf, &default_conf, 1);
+
+#if defined(__linux__) && !defined(__OPTIMIZE__)
+
+ /* We abuse __OPTIMIZE__ as a check whether we are a debug build
+ * or not. If we are and are run from the build tree then we
+ * override the search path to point to our build tree */
+
+ if (pa_run_from_build_tree()) {
+ pa_log_notice("Detected that we are run from the build tree, fixing search path.");
+ c->dl_search_path = pa_xstrdup(PA_BUILDDIR "/.libs/");
+
+ } else
+
+#endif
+ c->dl_search_path = pa_xstrdup(PA_DLSEARCHPATH);
- c->dl_search_path = pa_xstrdup(PA_DLSEARCHPATH);
return c;
}
diff --git a/src/daemon/main.c b/src/daemon/main.c
index ec8ff400..b1d1109a 100644
--- a/src/daemon/main.c
+++ b/src/daemon/main.c
@@ -774,6 +774,8 @@ int main(int argc, char *argv[]) {
pa_log_info(_("Using state directory %s."), s);
pa_xfree(s);
+ pa_log_info(_("Using modules directory %s."), conf->dl_search_path);
+
pa_log_info(_("Running in system mode: %s"), pa_yes_no(pa_in_system_mode()));
if (pa_in_system_mode())
diff --git a/src/modules/alsa/alsa-mixer.c b/src/modules/alsa/alsa-mixer.c
index a4c2ee0f..61c92cd0 100644
--- a/src/modules/alsa/alsa-mixer.c
+++ b/src/modules/alsa/alsa-mixer.c
@@ -929,7 +929,7 @@ static int element_zero_volume(pa_alsa_element *e, snd_mixer_t *m) {
int pa_alsa_path_select(pa_alsa_path *p, snd_mixer_t *m) {
pa_alsa_element *e;
- int r;
+ int r = 0;
pa_assert(m);
pa_assert(p);
@@ -1849,7 +1849,12 @@ pa_alsa_path* pa_alsa_path_new(const char *fname, pa_alsa_direction_t direction)
items[1].data = &p->description;
items[2].data = &p->name;
- fn = pa_maybe_prefix_path(fname, PA_ALSA_PATHS_DIR);
+ fn = pa_maybe_prefix_path(fname,
+#if defined(__linux__) && !defined(__OPTIMIZE__)
+ pa_run_from_build_tree() ? PA_BUILDDIR "/modules/alsa/mixer/paths/" :
+#endif
+ PA_ALSA_PATHS_DIR);
+
r = pa_config_parse(fn, NULL, items, p);
pa_xfree(fn);
@@ -3110,7 +3115,12 @@ pa_alsa_profile_set* pa_alsa_profile_set_new(const char *fname, const pa_channel
if (!fname)
fname = "default.conf";
- fn = pa_maybe_prefix_path(fname, PA_ALSA_PROFILE_SETS_DIR);
+ fn = pa_maybe_prefix_path(fname,
+#if defined(__linux__) && !defined(__OPTIMIZE__)
+ pa_run_from_build_tree() ? PA_BUILDDIR "/modules/alsa/mixer/profile-sets/" :
+#endif
+ PA_ALSA_PROFILE_SETS_DIR);
+
r = pa_config_parse(fn, NULL, items, ps);
pa_xfree(fn);
diff --git a/src/modules/alsa/mixer/paths/analog-output-lfe-on-mono.conf b/src/modules/alsa/mixer/paths/analog-output-lfe-on-mono.conf
index 2db976a5..3457d4a2 100644
--- a/src/modules/alsa/mixer/paths/analog-output-lfe-on-mono.conf
+++ b/src/modules/alsa/mixer/paths/analog-output-lfe-on-mono.conf
@@ -41,9 +41,12 @@ volume = merge
override-map.1 = lfe
override-map.2 = lfe,lfe
+; This profile path is intended to control the speaker, not the
+; headphones. But it should not hurt if we leave the headphone jack
+; enabled nonetheless.
[Element Headphone]
-switch = off
-volume = off
+switch = mute
+volume = zero
[Element Speaker]
switch = mute
diff --git a/src/modules/alsa/mixer/paths/analog-output-mono.conf b/src/modules/alsa/mixer/paths/analog-output-mono.conf
index a58cc970..dc270cfe 100644
--- a/src/modules/alsa/mixer/paths/analog-output-mono.conf
+++ b/src/modules/alsa/mixer/paths/analog-output-mono.conf
@@ -38,9 +38,12 @@ volume = merge
override-map.1 = all
override-map.2 = all-left,all-right
+; This profile path is intended to control the speaker, not the
+; headphones. But it should not hurt if we leave the headphone jack
+; enabled nonetheless.
[Element Headphone]
-switch = off
-volume = off
+switch = mute
+volume = zero
[Element Speaker]
switch = mute
diff --git a/src/modules/alsa/mixer/paths/analog-output.conf b/src/modules/alsa/mixer/paths/analog-output.conf
index b412a437..f71a05a1 100644
--- a/src/modules/alsa/mixer/paths/analog-output.conf
+++ b/src/modules/alsa/mixer/paths/analog-output.conf
@@ -37,9 +37,12 @@ override-map.2 = all-left,all-right
switch = off
volume = off
+; This profile path is intended to control the speaker, not the
+; headphones. But it should not hurt if we leave the headphone jack
+; enabled nonetheless.
[Element Headphone]
-switch = off
-volume = off
+switch = mute
+volume = zero
[Element Speaker]
switch = mute
diff --git a/src/modules/gconf/module-gconf.c b/src/modules/gconf/module-gconf.c
index c01ebbf6..85523b39 100644
--- a/src/modules/gconf/module-gconf.c
+++ b/src/modules/gconf/module-gconf.c
@@ -52,9 +52,6 @@ PA_MODULE_LOAD_ONCE(TRUE);
#define MAX_MODULES 10
#define BUF_MAX 2048
-/* #undef PA_GCONF_HELPER */
-/* #define PA_GCONF_HELPER "/home/lennart/projects/pulseaudio/src/gconf-helper" */
-
struct module_item {
char *name;
char *args;
@@ -343,7 +340,11 @@ int pa__init(pa_module*m) {
u->io_event = NULL;
u->buf_fill = 0;
- if ((u->fd = pa_start_child_for_read(PA_GCONF_HELPER, NULL, &u->pid)) < 0)
+ if ((u->fd = pa_start_child_for_read(
+#if defined(__linux__) && !defined(__OPTIMIZE__)
+ pa_run_from_build_tree() ? PA_BUILDDIR "/.libs/gconf-helper" :
+#endif
+ PA_GCONF_HELPER, NULL, &u->pid)) < 0)
goto fail;
u->io_event = m->core->mainloop->io_new(
diff --git a/src/modules/module-combine.c b/src/modules/module-combine.c
index 582cbce1..e90ef11c 100644
--- a/src/modules/module-combine.c
+++ b/src/modules/module-combine.c
@@ -1161,6 +1161,8 @@ int pa__init(pa_module*m) {
pa_channel_map slaves_map;
pa_bool_t is_first_slave = TRUE;
+ pa_sample_spec_init(&slaves_spec);
+
while ((n = pa_split(slaves, ",", &split_state))) {
pa_sink *slave_sink;
diff --git a/src/modules/module-ladspa-sink.c b/src/modules/module-ladspa-sink.c
index f2d53d00..aa28f7fd 100644
--- a/src/modules/module-ladspa-sink.c
+++ b/src/modules/module-ladspa-sink.c
@@ -99,7 +99,7 @@ static const char* const valid_modargs[] = {
};
/* Called from I/O thread context */
-static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offset, pa_memchunk *chunk) {
+static int sink_process_msg_cb(pa_msgobject *o, int code, void *data, int64_t offset, pa_memchunk *chunk) {
struct userdata *u = PA_SINK(o)->userdata;
switch (code) {
@@ -130,7 +130,7 @@ static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offse
}
/* Called from main context */
-static int sink_set_state(pa_sink *s, pa_sink_state_t state) {
+static int sink_set_state_cb(pa_sink *s, pa_sink_state_t state) {
struct userdata *u;
pa_sink_assert_ref(s);
@@ -145,7 +145,7 @@ static int sink_set_state(pa_sink *s, pa_sink_state_t state) {
}
/* Called from I/O thread context */
-static void sink_request_rewind(pa_sink *s) {
+static void sink_request_rewind_cb(pa_sink *s) {
struct userdata *u;
pa_sink_assert_ref(s);
@@ -160,7 +160,7 @@ static void sink_request_rewind(pa_sink *s) {
}
/* Called from I/O thread context */
-static void sink_update_requested_latency(pa_sink *s) {
+static void sink_update_requested_latency_cb(pa_sink *s) {
struct userdata *u;
pa_sink_assert_ref(s);
@@ -176,6 +176,34 @@ static void sink_update_requested_latency(pa_sink *s) {
pa_sink_get_requested_latency_within_thread(s));
}
+/* Called from main context */
+static void sink_set_volume_cb(pa_sink *s) {
+ struct userdata *u;
+
+ pa_sink_assert_ref(s);
+ pa_assert_se(u = s->userdata);
+
+ if (!PA_SINK_IS_LINKED(pa_sink_get_state(s)) ||
+ !PA_SINK_INPUT_IS_LINKED(pa_sink_input_get_state(u->sink_input)))
+ return;
+
+ pa_sink_input_set_volume(u->sink_input, &s->real_volume, s->save_volume, TRUE);
+}
+
+/* Called from main context */
+static void sink_set_mute_cb(pa_sink *s) {
+ struct userdata *u;
+
+ pa_sink_assert_ref(s);
+ pa_assert_se(u = s->userdata);
+
+ if (!PA_SINK_IS_LINKED(pa_sink_get_state(s)) ||
+ !PA_SINK_INPUT_IS_LINKED(pa_sink_input_get_state(u->sink_input)))
+ return;
+
+ pa_sink_input_set_mute(u->sink_input, s->muted, s->save_muted);
+}
+
/* Called from I/O thread context */
static int sink_input_pop_cb(pa_sink_input *i, size_t nbytes, pa_memchunk *chunk) {
struct userdata *u;
@@ -390,8 +418,31 @@ static void sink_input_moving_cb(pa_sink_input *i, pa_sink *dest) {
pa_sink_input_assert_ref(i);
pa_assert_se(u = i->userdata);
- pa_sink_set_asyncmsgq(u->sink, dest->asyncmsgq);
- pa_sink_update_flags(u->sink, PA_SINK_LATENCY|PA_SINK_DYNAMIC_LATENCY, dest->flags);
+ if (dest) {
+ pa_sink_set_asyncmsgq(u->sink, dest->asyncmsgq);
+ pa_sink_update_flags(u->sink, PA_SINK_LATENCY|PA_SINK_DYNAMIC_LATENCY, dest->flags);
+ } else
+ pa_sink_set_asyncmsgq(u->sink, NULL);
+}
+
+/* Called from main context */
+static void sink_input_volume_changed_cb(pa_sink_input *i) {
+ struct userdata *u;
+
+ pa_sink_input_assert_ref(i);
+ pa_assert_se(u = i->userdata);
+
+ pa_sink_volume_changed(u->sink, &i->volume);
+}
+
+/* Called from main context */
+static void sink_input_mute_changed_cb(pa_sink_input *i) {
+ struct userdata *u;
+
+ pa_sink_input_assert_ref(i);
+ pa_assert_se(u = i->userdata);
+
+ pa_sink_mute_changed(u->sink, i->muted);
}
int pa__init(pa_module*m) {
@@ -731,7 +782,9 @@ int pa__init(pa_module*m) {
goto fail;
}
- u->sink = pa_sink_new(m->core, &sink_data, master->flags & (PA_SINK_LATENCY|PA_SINK_DYNAMIC_LATENCY));
+ u->sink = pa_sink_new(m->core, &sink_data,
+ PA_SINK_HW_MUTE_CTRL|PA_SINK_HW_VOLUME_CTRL|PA_SINK_DECIBEL_VOLUME|
+ (master->flags & (PA_SINK_LATENCY|PA_SINK_DYNAMIC_LATENCY)));
pa_sink_new_data_done(&sink_data);
if (!u->sink) {
@@ -739,10 +792,12 @@ int pa__init(pa_module*m) {
goto fail;
}
- u->sink->parent.process_msg = sink_process_msg;
- u->sink->set_state = sink_set_state;
- u->sink->update_requested_latency = sink_update_requested_latency;
- u->sink->request_rewind = sink_request_rewind;
+ u->sink->parent.process_msg = sink_process_msg_cb;
+ u->sink->set_state = sink_set_state_cb;
+ u->sink->update_requested_latency = sink_update_requested_latency_cb;
+ u->sink->request_rewind = sink_request_rewind_cb;
+ u->sink->set_volume = sink_set_volume_cb;
+ u->sink->set_mute = sink_set_mute_cb;
u->sink->userdata = u;
pa_sink_set_asyncmsgq(u->sink, master->asyncmsgq);
@@ -775,6 +830,8 @@ int pa__init(pa_module*m) {
u->sink_input->state_change = sink_input_state_change_cb;
u->sink_input->may_move_to = sink_input_may_move_to_cb;
u->sink_input->moving = sink_input_moving_cb;
+ u->sink_input->volume_changed = sink_input_volume_changed_cb;
+ u->sink_input->mute_changed = sink_input_mute_changed_cb;
u->sink_input->userdata = u;
pa_sink_put(u->sink);
diff --git a/src/modules/module-remap-sink.c b/src/modules/module-remap-sink.c
index 0b4fdc9b..becff55c 100644
--- a/src/modules/module-remap-sink.c
+++ b/src/modules/module-remap-sink.c
@@ -302,8 +302,11 @@ static void sink_input_moving_cb(pa_sink_input *i, pa_sink *dest) {
pa_sink_input_assert_ref(i);
pa_assert_se(u = i->userdata);
- pa_sink_set_asyncmsgq(u->sink, dest->asyncmsgq);
- pa_sink_update_flags(u->sink, PA_SINK_LATENCY|PA_SINK_DYNAMIC_LATENCY, dest->flags);
+ if (dest) {
+ pa_sink_set_asyncmsgq(u->sink, dest->asyncmsgq);
+ pa_sink_update_flags(u->sink, PA_SINK_LATENCY|PA_SINK_DYNAMIC_LATENCY, dest->flags);
+ } else
+ pa_sink_set_asyncmsgq(u->sink, NULL);
}
int pa__init(pa_module*m) {
diff --git a/src/modules/module-solaris.c b/src/modules/module-solaris.c
index 0920d25e..71f14071 100644
--- a/src/modules/module-solaris.c
+++ b/src/modules/module-solaris.c
@@ -60,6 +60,7 @@
#include <pulsecore/thread-mq.h>
#include <pulsecore/rtpoll.h>
#include <pulsecore/thread.h>
+#include <pulsecore/time-smoother.h>
#include "module-solaris-symdef.h"
@@ -110,6 +111,8 @@ struct userdata {
uint32_t prev_playback_samples, prev_record_samples;
int32_t minimum_request;
+
+ pa_smoother *smoother;
};
static const char* const valid_modargs[] = {
@@ -133,6 +136,9 @@ static const char* const valid_modargs[] = {
#define MAX_RENDER_HZ (300)
/* This render rate limit imposes a minimum latency, but without it we waste too much CPU time. */
+#define MAX_BUFFER_SIZE (128 * 1024)
+/* An attempt to buffer more than 128 KB causes write() to fail with errno == EAGAIN. */
+
static uint64_t get_playback_buffered_bytes(struct userdata *u) {
audio_info_t info;
uint64_t played_bytes;
@@ -145,7 +151,12 @@ static uint64_t get_playback_buffered_bytes(struct userdata *u) {
/* Handle wrap-around of the device's sample counter, which is a uint_32. */
if (u->prev_playback_samples > info.play.samples) {
- /* Unfortunately info.play.samples can sometimes go backwards, even before it wraps! */
+ /*
+ * Unfortunately info.play.samples can sometimes go backwards, even before it wraps!
+ * The bug seems to be absent on Solaris x86 nv117 with audio810 driver, at least on this (UP) machine.
+ * The bug is present on a different (SMP) machine running Solaris x86 nv103 with audioens driver.
+ * An earlier revision of this file mentions the same bug independently (unknown configuration).
+ */
if (u->prev_playback_samples + info.play.samples < 240000) {
++u->play_samples_msw;
} else {
@@ -155,6 +166,8 @@ static uint64_t get_playback_buffered_bytes(struct userdata *u) {
u->prev_playback_samples = info.play.samples;
played_bytes = (((uint64_t)u->play_samples_msw << 32) + info.play.samples) * u->frame_size;
+ pa_smoother_put(u->smoother, pa_rtclock_now(), pa_bytes_to_usec(played_bytes, &u->sink->sample_spec));
+
return u->written_bytes - played_bytes;
}
@@ -387,6 +400,8 @@ static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offse
pa_assert(PA_SINK_IS_OPENED(u->sink->thread_info.state));
+ pa_smoother_pause(u->smoother, pa_rtclock_now());
+
if (!u->source || u->source_suspended) {
if (suspend(u) < 0)
return -1;
@@ -398,6 +413,8 @@ static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offse
case PA_SINK_RUNNING:
if (u->sink->thread_info.state == PA_SINK_SUSPENDED) {
+ pa_smoother_resume(u->smoother, pa_rtclock_now(), TRUE);
+
if (!u->source || u->source_suspended) {
if (unsuspend(u) < 0)
return -1;
@@ -479,7 +496,7 @@ static void sink_set_volume(pa_sink *s) {
if (u->fd >= 0) {
AUDIO_INITINFO(&info);
- info.play.gain = pa_cvolume_max(&s->virtual_volume) * AUDIO_MAX_GAIN / PA_VOLUME_NORM;
+ info.play.gain = pa_cvolume_max(&s->real_volume) * AUDIO_MAX_GAIN / PA_VOLUME_NORM;
assert(info.play.gain <= AUDIO_MAX_GAIN);
if (ioctl(u->fd, AUDIO_SETINFO, &info) < 0) {
@@ -501,8 +518,7 @@ static void sink_get_volume(pa_sink *s) {
if (ioctl(u->fd, AUDIO_GETINFO, &info) < 0)
pa_log("AUDIO_SETINFO: %s", pa_cstrerror(errno));
else
- pa_cvolume_set(&s->virtual_volume, s->sample_spec.channels,
- info.play.gain * PA_VOLUME_NORM / AUDIO_MAX_GAIN);
+ pa_cvolume_set(&s->real_volume, s->sample_spec.channels, info.play.gain * PA_VOLUME_NORM / AUDIO_MAX_GAIN);
}
}
@@ -515,7 +531,7 @@ static void source_set_volume(pa_source *s) {
if (u->fd >= 0) {
AUDIO_INITINFO(&info);
- info.play.gain = pa_cvolume_max(&s->virtual_volume) * AUDIO_MAX_GAIN / PA_VOLUME_NORM;
+ info.play.gain = pa_cvolume_max(&s->volume) * AUDIO_MAX_GAIN / PA_VOLUME_NORM;
assert(info.play.gain <= AUDIO_MAX_GAIN);
if (ioctl(u->fd, AUDIO_SETINFO, &info) < 0) {
@@ -537,8 +553,7 @@ static void source_get_volume(pa_source *s) {
if (ioctl(u->fd, AUDIO_GETINFO, &info) < 0)
pa_log("AUDIO_SETINFO: %s", pa_cstrerror(errno));
else
- pa_cvolume_set(&s->virtual_volume, s->sample_spec.channels,
- info.play.gain * PA_VOLUME_NORM / AUDIO_MAX_GAIN);
+ pa_cvolume_set(&s->volume, s->sample_spec.channels, info.play.gain * PA_VOLUME_NORM / AUDIO_MAX_GAIN);
}
}
@@ -606,11 +621,13 @@ static void thread_func(void *userdata) {
pa_thread_mq_install(&u->thread_mq);
+ pa_smoother_set_time_offset(u->smoother, pa_rtclock_now());
+
for (;;) {
/* Render some data and write it to the dsp */
if (u->sink && PA_SINK_IS_OPENED(u->sink->thread_info.state)) {
- pa_usec_t xtime0;
+ pa_usec_t xtime0, ysleep_interval, xsleep_interval;
uint64_t buffered_bytes;
if (u->sink->thread_info.rewind_requested)
@@ -629,12 +646,15 @@ static void thread_func(void *userdata) {
info.play.error = 0;
if (ioctl(u->fd, AUDIO_SETINFO, &info) < 0)
pa_log("AUDIO_SETINFO: %s", pa_cstrerror(errno));
+
+ pa_smoother_reset(u->smoother, pa_rtclock_now(), TRUE);
}
for (;;) {
void *p;
ssize_t w;
size_t len;
+ int write_type = 1;
/*
* Since we cannot modify the size of the output buffer we fake it
@@ -652,38 +672,31 @@ static void thread_func(void *userdata) {
break;
if (u->memchunk.length < len)
- pa_sink_render(u->sink, u->sink->thread_info.max_request, &u->memchunk);
+ pa_sink_render(u->sink, len - u->memchunk.length, &u->memchunk);
+
+ len = PA_MIN(u->memchunk.length, len);
p = pa_memblock_acquire(u->memchunk.memblock);
- w = pa_write(u->fd, (uint8_t*) p + u->memchunk.index, u->memchunk.length, NULL);
+ w = pa_write(u->fd, (uint8_t*) p + u->memchunk.index, len, &write_type);
pa_memblock_release(u->memchunk.memblock);
if (w <= 0) {
- switch (errno) {
- case EINTR:
- continue;
- case EAGAIN:
- /* If the buffer_size is too big, we get EAGAIN. Avoiding that limit by trial and error
- * is not ideal, but I don't know how to get the system to tell me what the limit is.
- */
- u->buffer_size = u->buffer_size * 18 / 25;
- u->buffer_size -= u->buffer_size % u->frame_size;
- u->buffer_size = PA_MAX(u->buffer_size, 2 * u->minimum_request);
- pa_sink_set_max_request_within_thread(u->sink, u->buffer_size);
- pa_sink_set_max_rewind_within_thread(u->sink, u->buffer_size);
- pa_log("EAGAIN. Buffer size is now %u bytes (%llu buffered)", u->buffer_size, buffered_bytes);
- break;
- default:
- pa_log("Failed to write data to DSP: %s", pa_cstrerror(errno));
- goto fail;
+ if (errno == EINTR) {
+ continue;
+ } else if (errno == EAGAIN) {
+ /* We may have realtime priority so yield the CPU to ensure that fd can become writable again. */
+ pa_log_debug("EAGAIN with %llu bytes buffered.", buffered_bytes);
+ break;
+ } else {
+ pa_log("Failed to write data to DSP: %s", pa_cstrerror(errno));
+ goto fail;
}
} else {
pa_assert(w % u->frame_size == 0);
u->written_bytes += w;
- u->memchunk.length -= w;
-
u->memchunk.index += w;
+ u->memchunk.length -= w;
if (u->memchunk.length <= 0) {
pa_memblock_unref(u->memchunk.memblock);
pa_memchunk_reset(&u->memchunk);
@@ -691,7 +704,9 @@ static void thread_func(void *userdata) {
}
}
- pa_rtpoll_set_timer_absolute(u->rtpoll, xtime0 + pa_bytes_to_usec(buffered_bytes / 2, &u->sink->sample_spec));
+ ysleep_interval = pa_bytes_to_usec(buffered_bytes / 2, &u->sink->sample_spec);
+ xsleep_interval = pa_smoother_translate(u->smoother, xtime0, ysleep_interval);
+ pa_rtpoll_set_timer_absolute(u->rtpoll, xtime0 + PA_MIN(xsleep_interval, ysleep_interval));
} else
pa_rtpoll_set_timer_disabled(u->rtpoll);
@@ -797,7 +812,7 @@ static void sig_callback(pa_mainloop_api *api, pa_signal_event*e, int sig, void
pa_log_debug("caught signal");
if (u->sink) {
- pa_sink_get_volume(u->sink, TRUE, FALSE);
+ pa_sink_get_volume(u->sink, TRUE);
pa_sink_get_mute(u->sink, TRUE);
}
@@ -812,7 +827,7 @@ int pa__init(pa_module *m) {
pa_channel_map map;
pa_modargs *ma = NULL;
uint32_t buffer_length_msec;
- int fd;
+ int fd = -1;
pa_sink_new_data sink_new_data;
pa_source_new_data source_new_data;
char const *name;
@@ -838,6 +853,9 @@ int pa__init(pa_module *m) {
u = pa_xnew0(struct userdata, 1);
+ if (!(u->smoother = pa_smoother_new(PA_USEC_PER_SEC, PA_USEC_PER_SEC * 2, TRUE, TRUE, 10, pa_rtclock_now(), TRUE)))
+ goto fail;
+
/*
* For a process (or several processes) to use the same audio device for both
* record and playback at the same time, the device's mixer must be enabled.
@@ -861,7 +879,13 @@ int pa__init(pa_module *m) {
}
u->buffer_size = pa_usec_to_bytes(1000 * buffer_length_msec, &ss);
if (u->buffer_size < 2 * u->minimum_request) {
- pa_log("supplied buffer size argument is too small");
+ pa_log("buffer_length argument cannot be smaller than %u",
+ (unsigned)(pa_bytes_to_usec(2 * u->minimum_request, &ss) / 1000));
+ goto fail;
+ }
+ if (u->buffer_size > MAX_BUFFER_SIZE) {
+ pa_log("buffer_length argument cannot be greater than %u",
+ (unsigned)(pa_bytes_to_usec(MAX_BUFFER_SIZE, &ss) / 1000));
goto fail;
}
@@ -924,6 +948,7 @@ int pa__init(pa_module *m) {
pa_source_set_asyncmsgq(u->source, u->thread_mq.inq);
pa_source_set_rtpoll(u->source, u->rtpoll);
+ pa_source_set_fixed_latency(u->source, pa_bytes_to_usec(u->buffer_size, &u->source->sample_spec));
u->source->get_volume = source_get_volume;
u->source->set_volume = source_set_volume;
@@ -966,15 +991,15 @@ int pa__init(pa_module *m) {
pa_sink_set_asyncmsgq(u->sink, u->thread_mq.inq);
pa_sink_set_rtpoll(u->sink, u->rtpoll);
+ pa_sink_set_fixed_latency(u->sink, pa_bytes_to_usec(u->buffer_size, &u->sink->sample_spec));
+ pa_sink_set_max_request(u->sink, u->buffer_size);
+ pa_sink_set_max_rewind(u->sink, u->buffer_size);
u->sink->get_volume = sink_get_volume;
u->sink->set_volume = sink_set_volume;
u->sink->get_mute = sink_get_mute;
u->sink->set_mute = sink_set_mute;
u->sink->refresh_volume = u->sink->refresh_muted = TRUE;
-
- pa_sink_set_max_request(u->sink, u->buffer_size);
- pa_sink_set_max_rewind(u->sink, u->buffer_size);
} else
u->sink = NULL;
@@ -1075,6 +1100,9 @@ void pa__done(pa_module *m) {
if (u->fd >= 0)
close(u->fd);
+ if (u->smoother)
+ pa_smoother_free(u->smoother);
+
pa_xfree(u->device_name);
pa_xfree(u);
diff --git a/src/modules/module-udev-detect.c b/src/modules/module-udev-detect.c
index 0b30fd54..b41b9c0f 100644
--- a/src/modules/module-udev-detect.c
+++ b/src/modules/module-udev-detect.c
@@ -25,6 +25,7 @@
#include <errno.h>
#include <limits.h>
+#include <dirent.h>
#include <sys/inotify.h>
#include <libudev.h>
@@ -45,8 +46,9 @@ PA_MODULE_USAGE(
struct device {
char *path;
- pa_bool_t accessible;
+ pa_bool_t need_verify;
char *card_name;
+ char *args;
uint32_t module;
};
@@ -78,6 +80,7 @@ static void device_free(struct device *d) {
pa_xfree(d->path);
pa_xfree(d->card_name);
+ pa_xfree(d->args);
pa_xfree(d);
}
@@ -96,30 +99,166 @@ static const char *path_get_card_id(const char *path) {
return e + 5;
}
+static pa_bool_t is_card_busy(const char *id) {
+ char *card_path = NULL, *pcm_path = NULL, *sub_status = NULL;
+ DIR *card_dir = NULL, *pcm_dir = NULL;
+ FILE *status_file = NULL;
+ size_t len;
+ struct dirent *space = NULL, *de;
+ pa_bool_t busy = FALSE;
+ int r;
+
+ pa_assert(id);
+
+ card_path = pa_sprintf_malloc("/proc/asound/card%s", id);
+
+ if (!(card_dir = opendir(card_path))) {
+ pa_log_warn("Failed to open %s: %s", card_path, pa_cstrerror(errno));
+ goto fail;
+ }
+
+ len = offsetof(struct dirent, d_name) + fpathconf(dirfd(card_dir), _PC_NAME_MAX) + 1;
+ space = pa_xmalloc(len);
+
+ for (;;) {
+ de = NULL;
+
+ if ((r = readdir_r(card_dir, space, &de)) != 0) {
+ pa_log_warn("readdir_r() failed: %s", pa_cstrerror(r));
+ goto fail;
+ }
+
+ if (!de)
+ break;
+
+ if (!pa_startswith(de->d_name, "pcm"))
+ continue;
+
+ pa_xfree(pcm_path);
+ pcm_path = pa_sprintf_malloc("%s/%s", card_path, de->d_name);
+
+ if (pcm_dir)
+ closedir(pcm_dir);
+
+ if (!(pcm_dir = opendir(pcm_path))) {
+ pa_log_warn("Failed to open %s: %s", pcm_path, pa_cstrerror(errno));
+ continue;
+ }
+
+ for (;;) {
+ char line[32];
+
+ if ((r = readdir_r(pcm_dir, space, &de)) != 0) {
+ pa_log_warn("readdir_r() failed: %s", pa_cstrerror(r));
+ goto fail;
+ }
+
+ if (!de)
+ break;
+
+ if (!pa_startswith(de->d_name, "sub"))
+ continue;
+
+ pa_xfree(sub_status);
+ sub_status = pa_sprintf_malloc("%s/%s/status", pcm_path, de->d_name);
+
+ if (status_file)
+ fclose(status_file);
+
+ if (!(status_file = fopen(sub_status, "r"))) {
+ pa_log_warn("Failed to open %s: %s", sub_status, pa_cstrerror(errno));
+ continue;
+ }
+
+ if (!(fgets(line, sizeof(line)-1, status_file))) {
+ pa_log_warn("Failed to read from %s: %s", sub_status, pa_cstrerror(errno));
+ continue;
+ }
+
+ if (!pa_streq(line, "closed\n")) {
+ busy = TRUE;
+ break;
+ }
+ }
+ }
+
+fail:
+
+ pa_xfree(card_path);
+ pa_xfree(pcm_path);
+ pa_xfree(sub_status);
+ pa_xfree(space);
+
+ if (card_dir)
+ closedir(card_dir);
+
+ if (pcm_dir)
+ closedir(pcm_dir);
+
+ if (status_file)
+ fclose(status_file);
+
+ return busy;
+}
+
static void verify_access(struct userdata *u, struct device *d) {
char *cd;
pa_card *card;
+ pa_bool_t accessible;
pa_assert(u);
pa_assert(d);
- if (!(card = pa_namereg_get(u->core, d->card_name, PA_NAMEREG_CARD)))
- return;
-
cd = pa_sprintf_malloc("%s/snd/controlC%s", udev_get_dev_path(u->udev), path_get_card_id(d->path));
- d->accessible = access(cd, W_OK) >= 0;
- pa_log_info("%s is accessible: %s", cd, pa_yes_no(d->accessible));
+ accessible = access(cd, R_OK|W_OK) >= 0;
+ pa_log_debug("%s is accessible: %s", cd, pa_yes_no(accessible));
+
pa_xfree(cd);
- pa_card_suspend(card, !d->accessible, PA_SUSPEND_SESSION);
+ if (d->module == PA_INVALID_INDEX) {
+
+ /* If we are not loaded, try to load */
+
+ if (accessible) {
+ pa_module *m;
+ pa_bool_t busy;
+
+ /* Check if any of the PCM devices that belong to this
+ * card are currently busy. If they are, don't try to load
+ * right now, to make sure the probing phase can
+ * successfully complete. When the current user of the
+ * device closes it we will get another notification via
+ * inotify and can then recheck. */
+
+ busy = is_card_busy(path_get_card_id(d->path));
+ pa_log_debug("%s is busy: %s", d->path, pa_yes_no(busy));
+
+ if (!busy) {
+ pa_log_debug("Loading module-alsa-card with arguments '%s'", d->args);
+ m = pa_module_load(u->core, "module-alsa-card", d->args);
+
+ if (m) {
+ d->module = m->index;
+ pa_log_info("Card %s (%s) module loaded.", d->path, d->card_name);
+ } else
+ pa_log_info("Card %s (%s) failed to load module.", d->path, d->card_name);
+ }
+ }
+
+ } else {
+
+ /* If we are already loaded update suspend status with
+ * accessible boolean */
+
+ if ((card = pa_namereg_get(u->core, d->card_name, PA_NAMEREG_CARD)))
+ pa_card_suspend(card, !accessible, PA_SUSPEND_SESSION);
+ }
}
static void card_changed(struct userdata *u, struct udev_device *dev) {
struct device *d;
const char *path;
const char *t;
- char *card_name, *args;
- pa_module *m;
char *n;
pa_assert(u);
@@ -135,44 +274,33 @@ static void card_changed(struct userdata *u, struct udev_device *dev) {
return;
}
+ d = pa_xnew0(struct device, 1);
+ d->path = pa_xstrdup(path);
+ d->module = PA_INVALID_INDEX;
+
if (!(t = udev_device_get_property_value(dev, "PULSE_NAME")))
if (!(t = udev_device_get_property_value(dev, "ID_ID")))
if (!(t = udev_device_get_property_value(dev, "ID_PATH")))
t = path_get_card_id(path);
n = pa_namereg_make_valid_name(t);
+ d->card_name = pa_sprintf_malloc("alsa_card.%s", n);
+ d->args = pa_sprintf_malloc("device_id=\"%s\" "
+ "name=\"%s\" "
+ "card_name=\"%s\" "
+ "tsched=%s "
+ "ignore_dB=%s "
+ "card_properties=\"module-udev-detect.discovered=1\"",
+ path_get_card_id(path),
+ n,
+ d->card_name,
+ pa_yes_no(u->use_tsched),
+ pa_yes_no(u->ignore_dB));
+ pa_xfree(n);
- card_name = pa_sprintf_malloc("alsa_card.%s", n);
- args = pa_sprintf_malloc("device_id=\"%s\" "
- "name=\"%s\" "
- "card_name=\"%s\" "
- "tsched=%s "
- "ignore_dB=%s "
- "card_properties=\"module-udev-detect.discovered=1\"",
- path_get_card_id(path),
- n,
- card_name,
- pa_yes_no(u->use_tsched),
- pa_yes_no(u->ignore_dB));
-
- pa_log_debug("Loading module-alsa-card with arguments '%s'", args);
- m = pa_module_load(u->core, "module-alsa-card", args);
- pa_xfree(args);
-
- if (m) {
- pa_log_info("Card %s (%s) added.", path, n);
-
- d = pa_xnew(struct device, 1);
- d->path = pa_xstrdup(path);
- d->card_name = card_name;
- d->module = m->index;
- d->accessible = TRUE;
-
- pa_hashmap_put(u->devices, d->path, d);
- } else
- pa_xfree(card_name);
+ pa_hashmap_put(u->devices, d->path, d);
- pa_xfree(n);
+ verify_access(u, d);
}
static void remove_card(struct userdata *u, struct udev_device *dev) {
@@ -185,7 +313,10 @@ static void remove_card(struct userdata *u, struct udev_device *dev) {
return;
pa_log_info("Card %s removed.", d->path);
- pa_module_unload_request_by_index(u->core, d->module, TRUE);
+
+ if (d->module != PA_INVALID_INDEX)
+ pa_module_unload_request_by_index(u->core, d->module, TRUE);
+
device_free(d);
}
@@ -262,6 +393,34 @@ fail:
u->udev_io = NULL;
}
+static pa_bool_t pcm_node_belongs_to_device(
+ struct device *d,
+ const char *node) {
+
+ char *cd;
+ pa_bool_t b;
+
+ cd = pa_sprintf_malloc("pcmC%sD", path_get_card_id(d->path));
+ b = pa_startswith(node, cd);
+ pa_xfree(cd);
+
+ return b;
+}
+
+static pa_bool_t control_node_belongs_to_device(
+ struct device *d,
+ const char *node) {
+
+ char *cd;
+ pa_bool_t b;
+
+ cd = pa_sprintf_malloc("controlC%s", path_get_card_id(d->path));
+ b = pa_streq(node, cd);
+ pa_xfree(cd);
+
+ return b;
+}
+
static void inotify_cb(
pa_mainloop_api*a,
pa_io_event* e,
@@ -275,10 +434,13 @@ static void inotify_cb(
} buf;
struct userdata *u = userdata;
static int type = 0;
- pa_bool_t verify = FALSE, deleted = FALSE;
+ pa_bool_t deleted = FALSE;
+ struct device *d;
+ void *state;
for (;;) {
ssize_t r;
+ struct inotify_event *event;
pa_zero(buf);
if ((r = pa_read(fd, &buf, sizeof(buf), &type)) <= 0) {
@@ -290,22 +452,51 @@ static void inotify_cb(
goto fail;
}
- if ((buf.e.mask & IN_CLOSE_WRITE) && pa_startswith(buf.e.name, "pcmC"))
- verify = TRUE;
-
- if ((buf.e.mask & (IN_DELETE_SELF|IN_MOVE_SELF)))
- deleted = TRUE;
+ event = &buf.e;
+ while (r > 0) {
+ size_t len;
+
+ if ((size_t) r < sizeof(struct inotify_event)) {
+ pa_log("read() too short.");
+ goto fail;
+ }
+
+ len = sizeof(struct inotify_event) + event->len;
+
+ if ((size_t) r < len) {
+ pa_log("Payload missing.");
+ goto fail;
+ }
+
+ /* From udev we get the guarantee that the control
+ * device's ACL is changed last. To avoid races when ACLs
+ * are changed we hence watch only the control device */
+ if (((event->mask & IN_ATTRIB) && pa_startswith(event->name, "controlC")))
+ PA_HASHMAP_FOREACH(d, u->devices, state)
+ if (control_node_belongs_to_device(d, event->name))
+ d->need_verify = TRUE;
+
+ /* ALSA doesn't really give us any guarantee on the closing
+ * order, so let's simply hope */
+ if (((event->mask & IN_CLOSE_WRITE) && pa_startswith(event->name, "pcmC")))
+ PA_HASHMAP_FOREACH(d, u->devices, state)
+ if (pcm_node_belongs_to_device(d, event->name))
+ d->need_verify = TRUE;
+
+ /* /dev/snd/ might have been removed */
+ if ((event->mask & (IN_DELETE_SELF|IN_MOVE_SELF)))
+ deleted = TRUE;
+
+ event = (struct inotify_event*) ((uint8_t*) event + len);
+ r -= len;
+ }
}
- if (verify) {
- struct device *d;
- void *state;
-
- pa_log_debug("Verifying access.");
-
- PA_HASHMAP_FOREACH(d, u->devices, state)
+ PA_HASHMAP_FOREACH(d, u->devices, state)
+ if (d->need_verify) {
+ d->need_verify = FALSE;
verify_access(u, d);
- }
+ }
if (!deleted)
return;
@@ -335,7 +526,7 @@ static int setup_inotify(struct userdata *u) {
}
dev_snd = pa_sprintf_malloc("%s/snd", udev_get_dev_path(u->udev));
- r = inotify_add_watch(u->inotify_fd, dev_snd, IN_CLOSE_WRITE|IN_DELETE_SELF|IN_MOVE_SELF);
+ r = inotify_add_watch(u->inotify_fd, dev_snd, IN_ATTRIB|IN_CLOSE_WRITE|IN_DELETE_SELF|IN_MOVE_SELF);
pa_xfree(dev_snd);
if (r < 0) {
@@ -449,7 +640,7 @@ int pa__init(pa_module *m) {
udev_enumerate_unref(enumerate);
- pa_log_info("Loaded %u modules.", pa_hashmap_size(u->devices));
+ pa_log_info("Found %u cards.", pa_hashmap_size(u->devices));
pa_modargs_free(ma);
diff --git a/src/pulse/util.c b/src/pulse/util.c
index 6f1e40a9..9440f5de 100644
--- a/src/pulse/util.c
+++ b/src/pulse/util.c
@@ -61,38 +61,40 @@
#include <pulsecore/log.h>
#include <pulsecore/core-util.h>
#include <pulsecore/macro.h>
+#include <pulsecore/usergroup.h>
#include "util.h"
char *pa_get_user_name(char *s, size_t l) {
const char *p;
+ char *name = NULL;
+#ifdef OS_IS_WIN32
char buf[1024];
+#endif
#ifdef HAVE_PWD_H
- struct passwd pw, *r;
+ struct passwd *r;
#endif
pa_assert(s);
pa_assert(l > 0);
- if (!(p = (getuid() == 0 ? "root" : NULL)) &&
- !(p = getenv("USER")) &&
- !(p = getenv("LOGNAME")) &&
- !(p = getenv("USERNAME"))) {
+ if ((p = (getuid() == 0 ? "root" : NULL)) ||
+ (p = getenv("USER")) ||
+ (p = getenv("LOGNAME")) ||
+ (p = getenv("USERNAME")))
+ {
+ name = pa_strlcpy(s, p, l);
+ } else {
#ifdef HAVE_PWD_H
-#ifdef HAVE_GETPWUID_R
- if (getpwuid_r(getuid(), &pw, buf, sizeof(buf), &r) != 0 || !r) {
-#else
- /* XXX Not thread-safe, but needed on OSes (e.g. FreeBSD 4.X)
- * that do not support getpwuid_r. */
- if ((r = getpwuid(getuid())) == NULL) {
-#endif
+ if ((r = pa_getpwuid_malloc(getuid())) == NULL) {
pa_snprintf(s, l, "%lu", (unsigned long) getuid());
return s;
}
- p = r->pw_name;
+ name = pa_strlcpy(s, r->pw_name, l);
+ pa_getpwuid_free(r);
#elif defined(OS_IS_WIN32) /* HAVE_PWD_H */
DWORD size = sizeof(buf);
@@ -102,7 +104,7 @@ char *pa_get_user_name(char *s, size_t l) {
return NULL;
}
- p = buf;
+ name = pa_strlcpy(s, buf, l);
#else /* HAVE_PWD_H */
@@ -110,7 +112,7 @@ char *pa_get_user_name(char *s, size_t l) {
#endif /* HAVE_PWD_H */
}
- return pa_strlcpy(s, p, l);
+ return name;
}
char *pa_get_host_name(char *s, size_t l) {
@@ -126,11 +128,10 @@ char *pa_get_host_name(char *s, size_t l) {
}
char *pa_get_home_dir(char *s, size_t l) {
- char *e;
+ char *e, *dir;
#ifdef HAVE_PWD_H
- char buf[1024];
- struct passwd pw, *r;
+ struct passwd *r;
#endif
pa_assert(s);
@@ -143,22 +144,19 @@ char *pa_get_home_dir(char *s, size_t l) {
return pa_strlcpy(s, e, l);
#ifdef HAVE_PWD_H
-
errno = 0;
-#ifdef HAVE_GETPWUID_R
- if (getpwuid_r(getuid(), &pw, buf, sizeof(buf), &r) != 0 || !r) {
-#else
- /* XXX Not thread-safe, but needed on OSes (e.g. FreeBSD 4.X)
- * that do not support getpwuid_r. */
- if ((r = getpwuid(getuid())) == NULL) {
-#endif
+ if ((r = pa_getpwuid_malloc(getuid())) == NULL) {
if (!errno)
errno = ENOENT;
return NULL;
}
- return pa_strlcpy(s, r->pw_dir, l);
+ dir = pa_strlcpy(s, r->pw_dir, l);
+
+ pa_getpwuid_free(r);
+
+ return dir;
#else /* HAVE_PWD_H */
errno = ENOENT;
diff --git a/src/pulsecore/core-util.c b/src/pulsecore/core-util.c
index ef8c8472..0eb32cc4 100644
--- a/src/pulsecore/core-util.c
+++ b/src/pulsecore/core-util.c
@@ -115,6 +115,7 @@
#include <pulsecore/macro.h>
#include <pulsecore/thread.h>
#include <pulsecore/strbuf.h>
+#include <pulsecore/usergroup.h>
#include "core-util.h"
@@ -969,42 +970,24 @@ fail:
/* Check whether the specified GID and the group name match */
static int is_group(gid_t gid, const char *name) {
- struct group group, *result = NULL;
- long n;
- void *data;
+ struct group *group = NULL;
int r = -1;
-#ifdef HAVE_GETGRGID_R
-
-#ifdef _SC_GETGR_R_SIZE_MAX
- n = sysconf(_SC_GETGR_R_SIZE_MAX);
-#else
- n = -1;
-#endif
- if (n <= 0)
- n = 512;
-
- data = pa_xmalloc((size_t) n);
-
- if ((errno = getgrgid_r(gid, &group, data, (size_t) n, &result)) || !result)
-#else
errno = 0;
- if (!(result = getgrgid(gid)))
-#endif
+ if (!(group = pa_getgrgid_malloc(gid)))
{
if (!errno)
errno = ENOENT;
- pa_log("getgrgid(%u): %s", gid, pa_cstrerror(errno));
+ pa_log("pa_getgrgid_malloc(%u): %s", gid, pa_cstrerror(errno));
goto finish;
}
- r = strcmp(name, result->gr_name) == 0;
+ r = strcmp(name, group->gr_name) == 0;
finish:
-
- pa_xfree(data);
+ pa_getgrgid_free(group);
return r;
}
@@ -1053,69 +1036,37 @@ finish:
/* Check whether the specifc user id is a member of the specified group */
int pa_uid_in_group(uid_t uid, const char *name) {
- char *g_buf = NULL, *p_buf = NULL;
- long g_n, p_n;
- struct group grbuf, *gr = NULL;
+ struct group *group = NULL;
char **i;
int r = -1;
-#ifdef HAVE_GETGRNAM_R
-
-#ifdef _SC_GETGR_R_SIZE_MAX
- g_n = sysconf(_SC_GETGR_R_SIZE_MAX);
-#else
- g_n = -1;
-#endif
- if (g_n <= 0)
- g_n = 512;
-
- g_buf = pa_xmalloc((size_t) g_n);
-
- if ((errno = getgrnam_r(name, &grbuf, g_buf, (size_t) g_n, &gr)) != 0 || !gr)
-#else
errno = 0;
- if (!(gr = getgrnam(name)))
-#endif
+ if (!(group = pa_getgrnam_malloc(name)))
{
if (!errno)
errno = ENOENT;
goto finish;
}
-#ifdef HAVE_GETPWNAM_R
-
-#ifdef _SC_GETPW_R_SIZE_MAX
- p_n = sysconf(_SC_GETPW_R_SIZE_MAX);
-#else
- p_n = -1;
-#endif
- if (p_n <= 0)
- p_n = 512;
-
- p_buf = pa_xmalloc((size_t) p_n);
-#endif
-
r = 0;
- for (i = gr->gr_mem; *i; i++) {
- struct passwd pwbuf, *pw = NULL;
+ for (i = group->gr_mem; *i; i++) {
+ struct passwd *pw = NULL;
-#ifdef HAVE_GETPWNAM_R
- if ((errno = getpwnam_r(*i, &pwbuf, p_buf, (size_t) p_n, &pw)) != 0 || !pw)
-#else
errno = 0;
- if (!(pw = getpwnam(*i)))
-#endif
+ if (!(pw = pa_getpwnam_malloc(*i)))
continue;
- if (pw->pw_uid == uid) {
+ if (pw->pw_uid == uid)
r = 1;
+
+ pa_getpwnam_free(pw);
+
+ if (r == 1)
break;
- }
}
finish:
- pa_xfree(g_buf);
- pa_xfree(p_buf);
+ pa_getgrnam_free(group);
return r;
}
@@ -1123,27 +1074,10 @@ finish:
/* Get the GID of a gfiven group, return (gid_t) -1 on failure. */
gid_t pa_get_gid_of_group(const char *name) {
gid_t ret = (gid_t) -1;
- char *g_buf = NULL;
- long g_n;
- struct group grbuf, *gr = NULL;
-
-#ifdef HAVE_GETGRNAM_R
+ struct group *gr = NULL;
-#ifdef _SC_GETGR_R_SIZE_MAX
- g_n = sysconf(_SC_GETGR_R_SIZE_MAX);
-#else
- g_n = -1;
-#endif
- if (g_n <= 0)
- g_n = 512;
-
- g_buf = pa_xmalloc((size_t) g_n);
-
- if ((errno = getgrnam_r(name, &grbuf, g_buf, (size_t) g_n, &gr)) != 0 || !gr)
-#else
errno = 0;
- if (!(gr = getgrnam(name)))
-#endif
+ if (!(gr = pa_getgrnam_malloc(name)))
{
if (!errno)
errno = ENOENT;
@@ -1153,7 +1087,7 @@ gid_t pa_get_gid_of_group(const char *name) {
ret = gr->gr_gid;
finish:
- pa_xfree(g_buf);
+ pa_getgrnam_free(gr);
return ret;
}
@@ -2862,3 +2796,22 @@ void pa_reset_personality(void) {
#endif
}
+
+#if defined(__linux__) && !defined(__OPTIMIZE__)
+
+pa_bool_t pa_run_from_build_tree(void) {
+ char *rp;
+ pa_bool_t b = FALSE;
+
+ /* We abuse __OPTIMIZE__ as a check whether we are a debug build
+ * or not. */
+
+ if ((rp = pa_readlink("/proc/self/exe"))) {
+ b = pa_startswith(rp, PA_BUILDDIR);
+ pa_xfree(rp);
+ }
+
+ return b;
+}
+
+#endif
diff --git a/src/pulsecore/core-util.h b/src/pulsecore/core-util.h
index 3d3aec71..2551f794 100644
--- a/src/pulsecore/core-util.h
+++ b/src/pulsecore/core-util.h
@@ -243,4 +243,8 @@ size_t pa_pipe_buf(int fd);
void pa_reset_personality(void);
+#if defined(__linux__) && !defined(__OPTIMIZE__)
+pa_bool_t pa_run_from_build_tree(void);
+#endif
+
#endif
diff --git a/src/pulsecore/core.c b/src/pulsecore/core.c
index f5eb8352..f0726453 100644
--- a/src/pulsecore/core.c
+++ b/src/pulsecore/core.c
@@ -47,7 +47,7 @@
#include "core.h"
-static PA_DEFINE_CHECK_TYPE(pa_core, pa_msgobject);
+PA_DEFINE_PUBLIC_CLASS(pa_core, pa_msgobject);
static int core_process_msg(pa_msgobject *o, int code, void *userdata, int64_t offset, pa_memchunk *chunk) {
pa_core *c = PA_CORE(o);
diff --git a/src/pulsecore/core.h b/src/pulsecore/core.h
index f6ec7122..c1002f93 100644
--- a/src/pulsecore/core.h
+++ b/src/pulsecore/core.h
@@ -165,7 +165,7 @@ struct pa_core {
pa_hook hooks[PA_CORE_HOOK_MAX];
};
-PA_DECLARE_CLASS(pa_core);
+PA_DECLARE_PUBLIC_CLASS(pa_core);
#define PA_CORE(o) pa_core_cast(o)
enum {
diff --git a/src/pulsecore/msgobject.c b/src/pulsecore/msgobject.c
index 6a2a612d..075a28c5 100644
--- a/src/pulsecore/msgobject.c
+++ b/src/pulsecore/msgobject.c
@@ -26,22 +26,22 @@
#include "msgobject.h"
-PA_DEFINE_CHECK_TYPE(pa_msgobject, pa_object);
+PA_DEFINE_PUBLIC_CLASS(pa_msgobject, pa_object);
-pa_msgobject *pa_msgobject_new_internal(size_t size, const char *type_name, int (*check_type)(const char *type_name)) {
+pa_msgobject *pa_msgobject_new_internal(size_t size, const char *type_id, pa_bool_t (*check_type)(const char *type_name)) {
pa_msgobject *o;
pa_assert(size > sizeof(pa_msgobject));
- pa_assert(type_name);
+ pa_assert(type_id);
if (!check_type)
check_type = pa_msgobject_check_type;
- pa_assert(check_type(type_name));
- pa_assert(check_type("pa_object"));
- pa_assert(check_type("pa_msgobject"));
+ pa_assert(check_type(type_id));
+ pa_assert(check_type(pa_object_type_id));
+ pa_assert(check_type(pa_msgobject_type_id));
- o = PA_MSGOBJECT(pa_object_new_internal(size, type_name, check_type));
+ o = PA_MSGOBJECT(pa_object_new_internal(size, type_id, check_type));
o->process_msg = NULL;
return o;
}
diff --git a/src/pulsecore/msgobject.h b/src/pulsecore/msgobject.h
index a35a23b5..ee0ec1ed 100644
--- a/src/pulsecore/msgobject.h
+++ b/src/pulsecore/msgobject.h
@@ -38,15 +38,13 @@ struct pa_msgobject {
int (*process_msg)(pa_msgobject *o, int code, void *userdata, int64_t offset, pa_memchunk *chunk);
};
-pa_msgobject *pa_msgobject_new_internal(size_t size, const char *type_name, int (*check_type)(const char *type_name));
+pa_msgobject *pa_msgobject_new_internal(size_t size, const char *type_id, pa_bool_t (*check_type)(const char *type_name));
-int pa_msgobject_check_type(const char *type);
-
-#define pa_msgobject_new(type) ((type*) pa_msgobject_new_internal(sizeof(type), #type, type##_check_type))
+#define pa_msgobject_new(type) ((type*) pa_msgobject_new_internal(sizeof(type), type##_type_id, type##_check_type))
#define pa_msgobject_free ((void (*) (pa_msgobject* o)) pa_object_free)
#define PA_MSGOBJECT(o) pa_msgobject_cast(o)
-PA_DECLARE_CLASS(pa_msgobject);
+PA_DECLARE_PUBLIC_CLASS(pa_msgobject);
#endif
diff --git a/src/pulsecore/object.c b/src/pulsecore/object.c
index f3ead9c5..099d50d9 100644
--- a/src/pulsecore/object.c
+++ b/src/pulsecore/object.c
@@ -28,21 +28,23 @@
#include "object.h"
-pa_object *pa_object_new_internal(size_t size, const char *type_name, int (*check_type)(const char *type_name)) {
+const char pa_object_type_id[] = "pa_object";
+
+pa_object *pa_object_new_internal(size_t size, const char *type_id, pa_bool_t (*check_type)(const char *type_id)) {
pa_object *o;
pa_assert(size > sizeof(pa_object));
- pa_assert(type_name);
+ pa_assert(type_id);
if (!check_type)
check_type = pa_object_check_type;
- pa_assert(check_type(type_name));
- pa_assert(check_type("pa_object"));
+ pa_assert(check_type(type_id));
+ pa_assert(check_type(pa_object_type_id));
o = pa_xmalloc(size);
PA_REFCNT_INIT(o);
- o->type_name = type_name;
+ o->type_id = type_id;
o->free = pa_object_free;
o->check_type = check_type;
@@ -65,8 +67,8 @@ void pa_object_unref(pa_object *o) {
}
}
-int pa_object_check_type(const char *type_name) {
- pa_assert(type_name);
+pa_bool_t pa_object_check_type(const char *type_id) {
+ pa_assert(type_id);
- return pa_streq(type_name, "pa_object");
+ return type_id == pa_object_type_id;
}
diff --git a/src/pulsecore/object.h b/src/pulsecore/object.h
index 43e79327..4c120cd5 100644
--- a/src/pulsecore/object.h
+++ b/src/pulsecore/object.h
@@ -34,21 +34,23 @@ typedef struct pa_object pa_object;
struct pa_object {
PA_REFCNT_DECLARE;
- const char *type_name;
+ const char *type_id;
void (*free)(pa_object *o);
- int (*check_type)(const char *type_name);
+ pa_bool_t (*check_type)(const char *type_name);
};
-pa_object *pa_object_new_internal(size_t size, const char *type_name, int (*check_type)(const char *type_name));
-#define pa_object_new(type) ((type*) pa_object_new_internal(sizeof(type), #type, type##_check_type)
+pa_object *pa_object_new_internal(size_t size, const char *type_id, pa_bool_t (*check_type)(const char *type_id));
+#define pa_object_new(type) ((type*) pa_object_new_internal(sizeof(type), type##_type_id, type##_check_type)
#define pa_object_free ((void (*) (pa_object* _obj)) pa_xfree)
-int pa_object_check_type(const char *type);
+pa_bool_t pa_object_check_type(const char *type_id);
-static inline int pa_object_isinstance(void *o) {
+extern const char pa_object_type_id[];
+
+static inline pa_bool_t pa_object_isinstance(void *o) {
pa_object *obj = (pa_object*) o;
- return obj ? obj->check_type("pa_object") : 0;
+ return obj ? obj->check_type(pa_object_type_id) : TRUE;
}
pa_object *pa_object_ref(pa_object *o);
@@ -60,7 +62,7 @@ static inline int pa_object_refcnt(pa_object *o) {
static inline pa_object* pa_object_cast(void *o) {
pa_object *obj = (pa_object*) o;
- pa_assert(!obj || obj->check_type("pa_object"));
+ pa_assert(!obj || obj->check_type(pa_object_type_id));
return obj;
}
@@ -68,10 +70,10 @@ static inline pa_object* pa_object_cast(void *o) {
#define PA_OBJECT(o) pa_object_cast(o)
-#define PA_DECLARE_CLASS(c) \
- static inline int c##_isinstance(void *o) { \
+#define PA_DECLARE_CLASS_COMMON(c) \
+ static inline pa_bool_t c##_isinstance(void *o) { \
pa_object *obj = (pa_object*) o; \
- return obj ? obj->check_type(#c) : 1; \
+ return obj ? obj->check_type(c##_type_id) : TRUE; \
} \
static inline c* c##_cast(void *o) { \
pa_assert(c##_isinstance(o)); \
@@ -91,12 +93,27 @@ static inline pa_object* pa_object_cast(void *o) {
} \
struct __stupid_useless_struct_to_allow_trailing_semicolon
-#define PA_DEFINE_CHECK_TYPE(c, parent) \
- int c##_check_type(const char *type) { \
- pa_assert(type); \
- if (strcmp(type, #c) == 0) \
- return 1; \
- return parent##_check_type(type); \
+#define PA_DECLARE_PUBLIC_CLASS(c) \
+ extern const char c##_type_id[]; \
+ PA_DECLARE_CLASS_COMMON(c); \
+ pa_bool_t c##_check_type(const char *type_id)
+
+#define PA_DEFINE_PUBLIC_CLASS(c, parent) \
+ const char c##_type_id[] = #c; \
+ pa_bool_t c##_check_type(const char *type_id) { \
+ if (type_id == c##_type_id) \
+ return TRUE; \
+ return parent##_check_type(type_id); \
+ } \
+ struct __stupid_useless_struct_to_allow_trailing_semicolon
+
+#define PA_DEFINE_PRIVATE_CLASS(c, parent) \
+ static const char c##_type_id[] = #c; \
+ PA_DECLARE_CLASS_COMMON(c); \
+ static pa_bool_t c##_check_type(const char *type_id) { \
+ if (type_id == c##_type_id) \
+ return TRUE; \
+ return parent##_check_type(type_id); \
} \
struct __stupid_useless_struct_to_allow_trailing_semicolon
diff --git a/src/pulsecore/play-memblockq.c b/src/pulsecore/play-memblockq.c
index fceb2ca1..b0d76993 100644
--- a/src/pulsecore/play-memblockq.c
+++ b/src/pulsecore/play-memblockq.c
@@ -47,9 +47,8 @@ enum {
MEMBLOCKQ_STREAM_MESSAGE_UNLINK,
};
-PA_DECLARE_CLASS(memblockq_stream);
+PA_DEFINE_PRIVATE_CLASS(memblockq_stream, pa_msgobject);
#define MEMBLOCKQ_STREAM(o) (memblockq_stream_cast(o))
-static PA_DEFINE_CHECK_TYPE(memblockq_stream, pa_msgobject);
static void memblockq_stream_unlink(memblockq_stream *u) {
pa_assert(u);
diff --git a/src/pulsecore/protocol-esound.c b/src/pulsecore/protocol-esound.c
index f64552aa..cfbaee6f 100644
--- a/src/pulsecore/protocol-esound.c
+++ b/src/pulsecore/protocol-esound.c
@@ -120,9 +120,8 @@ typedef struct connection {
pa_time_event *auth_timeout_event;
} connection;
-PA_DECLARE_CLASS(connection);
+PA_DEFINE_PRIVATE_CLASS(connection, pa_msgobject);
#define CONNECTION(o) (connection_cast(o))
-static PA_DEFINE_CHECK_TYPE(connection, pa_msgobject);
struct pa_esound_protocol {
PA_REFCNT_DECLARE;
diff --git a/src/pulsecore/protocol-native.c b/src/pulsecore/protocol-native.c
index b1285e15..6678d847 100644
--- a/src/pulsecore/protocol-native.c
+++ b/src/pulsecore/protocol-native.c
@@ -98,17 +98,15 @@ typedef struct record_stream {
pa_usec_t current_source_latency;
} record_stream;
-PA_DECLARE_CLASS(record_stream);
#define RECORD_STREAM(o) (record_stream_cast(o))
-static PA_DEFINE_CHECK_TYPE(record_stream, pa_msgobject);
+PA_DEFINE_PRIVATE_CLASS(record_stream, pa_msgobject);
typedef struct output_stream {
pa_msgobject parent;
} output_stream;
-PA_DECLARE_CLASS(output_stream);
#define OUTPUT_STREAM(o) (output_stream_cast(o))
-static PA_DEFINE_CHECK_TYPE(output_stream, pa_msgobject);
+PA_DEFINE_PRIVATE_CLASS(output_stream, pa_msgobject);
typedef struct playback_stream {
output_stream parent;
@@ -138,9 +136,8 @@ typedef struct playback_stream {
uint64_t playing_for, underrun_for;
} playback_stream;
-PA_DECLARE_CLASS(playback_stream);
#define PLAYBACK_STREAM(o) (playback_stream_cast(o))
-static PA_DEFINE_CHECK_TYPE(playback_stream, output_stream);
+PA_DEFINE_PRIVATE_CLASS(playback_stream, output_stream);
typedef struct upload_stream {
output_stream parent;
@@ -156,9 +153,8 @@ typedef struct upload_stream {
pa_proplist *proplist;
} upload_stream;
-PA_DECLARE_CLASS(upload_stream);
#define UPLOAD_STREAM(o) (upload_stream_cast(o))
-static PA_DEFINE_CHECK_TYPE(upload_stream, output_stream);
+PA_DEFINE_PRIVATE_CLASS(upload_stream, output_stream);
struct pa_native_connection {
pa_msgobject parent;
@@ -176,9 +172,8 @@ struct pa_native_connection {
pa_time_event *auth_timeout_event;
};
-PA_DECLARE_CLASS(pa_native_connection);
#define PA_NATIVE_CONNECTION(o) (pa_native_connection_cast(o))
-static PA_DEFINE_CHECK_TYPE(pa_native_connection, pa_msgobject);
+PA_DEFINE_PRIVATE_CLASS(pa_native_connection, pa_msgobject);
struct pa_native_protocol {
PA_REFCNT_DECLARE;
diff --git a/src/pulsecore/protocol-simple.c b/src/pulsecore/protocol-simple.c
index 776d74b6..95ec6ac8 100644
--- a/src/pulsecore/protocol-simple.c
+++ b/src/pulsecore/protocol-simple.c
@@ -69,9 +69,8 @@ typedef struct connection {
} playback;
} connection;
-PA_DECLARE_CLASS(connection);
+PA_DEFINE_PRIVATE_CLASS(connection, pa_msgobject);
#define CONNECTION(o) (connection_cast(o))
-static PA_DEFINE_CHECK_TYPE(connection, pa_msgobject);
struct pa_simple_protocol {
PA_REFCNT_DECLARE;
diff --git a/src/pulsecore/sink-input.c b/src/pulsecore/sink-input.c
index a29334f9..0ad95e6f 100644
--- a/src/pulsecore/sink-input.c
+++ b/src/pulsecore/sink-input.c
@@ -44,7 +44,7 @@
#define MEMBLOCKQ_MAXLENGTH (32*1024*1024)
#define CONVERT_BUFFER_LENGTH (PA_PAGE_SIZE)
-static PA_DEFINE_CHECK_TYPE(pa_sink_input, pa_msgobject);
+PA_DEFINE_PUBLIC_CLASS(pa_sink_input, pa_msgobject);
static void sink_input_free(pa_object *o);
static void set_real_ratio(pa_sink_input *i, const pa_cvolume *v);
@@ -126,6 +126,8 @@ static void reset_callbacks(pa_sink_input *i) {
i->state_change = NULL;
i->may_move_to = NULL;
i->send_event = NULL;
+ i->volume_changed = NULL;
+ i->mute_changed = NULL;
}
/* Called from main context */
@@ -485,7 +487,10 @@ static void sink_input_free(pa_object *o) {
pa_log_info("Freeing input %u \"%s\"", i->index, pa_strnull(pa_proplist_gets(i->proplist, PA_PROP_MEDIA_NAME)));
- pa_assert(!i->thread_info.attached);
+ /* Side note: this function must be able to destruct properly any
+ * kind of sink input in any state, even those which are
+ * "half-moved" or are connected to sinks that have no asyncmsgq
+ * and are hence half-destructed themselves! */
if (i->thread_info.render_memblockq)
pa_memblockq_free(i->thread_info.render_memblockq);
@@ -968,7 +973,10 @@ void pa_sink_input_set_volume(pa_sink_input *i, const pa_cvolume *volume, pa_boo
pa_assert_se(pa_asyncmsgq_send(i->sink->asyncmsgq, PA_MSGOBJECT(i), PA_SINK_INPUT_MESSAGE_SET_SOFT_VOLUME, NULL, 0, NULL) == 0);
}
- /* The virtual volume changed, let's tell people so */
+ /* The volume changed, let's tell people so */
+ if (i->volume_changed)
+ i->volume_changed(i);
+
pa_subscription_post(i->core, PA_SUBSCRIPTION_EVENT_SINK_INPUT|PA_SUBSCRIPTION_EVENT_CHANGE, i->index);
}
@@ -999,6 +1007,11 @@ void pa_sink_input_set_mute(pa_sink_input *i, pa_bool_t mute, pa_bool_t save) {
i->save_muted = save;
pa_assert_se(pa_asyncmsgq_send(i->sink->asyncmsgq, PA_MSGOBJECT(i), PA_SINK_INPUT_MESSAGE_SET_SOFT_MUTE, NULL, 0, NULL) == 0);
+
+ /* The mute status changed, let's tell people so */
+ if (i->mute_changed)
+ i->mute_changed(i);
+
pa_subscription_post(i->core, PA_SUBSCRIPTION_EVENT_SINK_INPUT|PA_SUBSCRIPTION_EVENT_CHANGE, i->index);
}
@@ -1263,6 +1276,10 @@ int pa_sink_input_finish_move(pa_sink_input *i, pa_sink *dest, pa_bool_t save) {
/* Notify everyone */
pa_hook_fire(&i->core->hooks[PA_CORE_HOOK_SINK_INPUT_MOVE_FINISH], i);
+
+ if (i->volume_changed)
+ i->volume_changed(i);
+
pa_subscription_post(i->core, PA_SUBSCRIPTION_EVENT_SINK_INPUT|PA_SUBSCRIPTION_EVENT_CHANGE, i->index);
return 0;
diff --git a/src/pulsecore/sink-input.h b/src/pulsecore/sink-input.h
index ea0f8c0e..fe6cf75c 100644
--- a/src/pulsecore/sink-input.h
+++ b/src/pulsecore/sink-input.h
@@ -192,8 +192,16 @@ struct pa_sink_input {
pa_bool_t (*may_move_to) (pa_sink_input *i, pa_sink *s); /* may be NULL */
/* If non-NULL this function is used to dispatch asynchronous
- * control events. */
- void (*send_event)(pa_sink_input *i, const char *event, pa_proplist* data);
+ * control events. Called from main context. */
+ void (*send_event)(pa_sink_input *i, const char *event, pa_proplist* data); /* may be NULL */
+
+ /* If non-NULL this function is called whenever the sink input
+ * volume changes. Called from main context */
+ void (*volume_changed)(pa_sink_input *i); /* may be NULL */
+
+ /* If non-NULL this function is called whenever the sink input
+ * mute status changes. Called from main context */
+ void (*mute_changed)(pa_sink_input *i); /* may be NULL */
struct {
pa_sink_input_state_t state;
@@ -227,7 +235,7 @@ struct pa_sink_input {
void *userdata;
};
-PA_DECLARE_CLASS(pa_sink_input);
+PA_DECLARE_PUBLIC_CLASS(pa_sink_input);
#define PA_SINK_INPUT(o) pa_sink_input_cast(o)
enum {
diff --git a/src/pulsecore/sink.c b/src/pulsecore/sink.c
index 1cce8e6b..5cec7747 100644
--- a/src/pulsecore/sink.c
+++ b/src/pulsecore/sink.c
@@ -52,7 +52,7 @@
#define ABSOLUTE_MAX_LATENCY (10*PA_USEC_PER_SEC)
#define DEFAULT_FIXED_LATENCY (250*PA_USEC_PER_MSEC)
-static PA_DEFINE_CHECK_TYPE(pa_sink, pa_msgobject);
+PA_DEFINE_PUBLIC_CLASS(pa_sink, pa_msgobject);
static void sink_free(pa_object *s);
@@ -1380,9 +1380,14 @@ static void propagate_reference_volume(pa_sink *s) {
pa_cvolume_remap(&remapped, &s->channel_map, &i->channel_map);
pa_sw_cvolume_multiply(&i->volume, &remapped, &i->reference_ratio);
- /* The reference volume changed, let's tell people so */
- if (!pa_cvolume_equal(&old_volume, &i->volume))
+ /* The volume changed, let's tell people so */
+ if (!pa_cvolume_equal(&old_volume, &i->volume)) {
+
+ if (i->volume_changed)
+ i->volume_changed(i);
+
pa_subscription_post(i->core, PA_SUBSCRIPTION_EVENT_SINK_INPUT|PA_SUBSCRIPTION_EVENT_CHANGE, i->index);
+ }
}
}
@@ -1522,8 +1527,13 @@ static void propagate_real_volume(pa_sink *s, const pa_cvolume *old_real_volume)
pa_sw_cvolume_multiply(&i->volume, &remapped, &i->reference_ratio);
/* Notify if something changed */
- if (!pa_cvolume_equal(&old_volume, &i->volume))
+ if (!pa_cvolume_equal(&old_volume, &i->volume)) {
+
+ if (i->volume_changed)
+ i->volume_changed(i);
+
pa_subscription_post(i->core, PA_SUBSCRIPTION_EVENT_SINK_INPUT|PA_SUBSCRIPTION_EVENT_CHANGE, i->index);
+ }
}
}
diff --git a/src/pulsecore/sink.h b/src/pulsecore/sink.h
index 936d1c2a..b5284b71 100644
--- a/src/pulsecore/sink.h
+++ b/src/pulsecore/sink.h
@@ -191,7 +191,7 @@ struct pa_sink {
void *userdata;
};
-PA_DECLARE_CLASS(pa_sink);
+PA_DECLARE_PUBLIC_CLASS(pa_sink);
#define PA_SINK(s) (pa_sink_cast(s))
typedef enum pa_sink_message {
diff --git a/src/pulsecore/sound-file-stream.c b/src/pulsecore/sound-file-stream.c
index 502e5c69..f41c53f3 100644
--- a/src/pulsecore/sound-file-stream.c
+++ b/src/pulsecore/sound-file-stream.c
@@ -64,9 +64,8 @@ enum {
FILE_STREAM_MESSAGE_UNLINK
};
-PA_DECLARE_CLASS(file_stream);
+PA_DEFINE_PRIVATE_CLASS(file_stream, pa_msgobject);
#define FILE_STREAM(o) (file_stream_cast(o))
-static PA_DEFINE_CHECK_TYPE(file_stream, pa_msgobject);
/* Called from main context */
static void file_stream_unlink(file_stream *u) {
diff --git a/src/pulsecore/source-output.c b/src/pulsecore/source-output.c
index 3803a6cc..43733400 100644
--- a/src/pulsecore/source-output.c
+++ b/src/pulsecore/source-output.c
@@ -41,7 +41,7 @@
#define MEMBLOCKQ_MAXLENGTH (32*1024*1024)
-static PA_DEFINE_CHECK_TYPE(pa_source_output, pa_msgobject);
+PA_DEFINE_PUBLIC_CLASS(pa_source_output, pa_msgobject);
static void source_output_free(pa_object* mo);
@@ -359,8 +359,6 @@ static void source_output_free(pa_object* mo) {
pa_log_info("Freeing output %u \"%s\"", o->index, pa_strnull(pa_proplist_gets(o->proplist, PA_PROP_MEDIA_NAME)));
- pa_assert(!o->thread_info.attached);
-
if (o->thread_info.delay_memblockq)
pa_memblockq_free(o->thread_info.delay_memblockq);
diff --git a/src/pulsecore/source-output.h b/src/pulsecore/source-output.h
index a70a3fdb..aca9ddf2 100644
--- a/src/pulsecore/source-output.h
+++ b/src/pulsecore/source-output.h
@@ -182,7 +182,7 @@ struct pa_source_output {
void *userdata;
};
-PA_DECLARE_CLASS(pa_source_output);
+PA_DECLARE_PUBLIC_CLASS(pa_source_output);
#define PA_SOURCE_OUTPUT(o) pa_source_output_cast(o)
enum {
diff --git a/src/pulsecore/source.c b/src/pulsecore/source.c
index 8aa07f5e..3026654e 100644
--- a/src/pulsecore/source.c
+++ b/src/pulsecore/source.c
@@ -46,7 +46,7 @@
#define ABSOLUTE_MAX_LATENCY (10*PA_USEC_PER_SEC)
#define DEFAULT_FIXED_LATENCY (250*PA_USEC_PER_MSEC)
-static PA_DEFINE_CHECK_TYPE(pa_source, pa_msgobject);
+PA_DEFINE_PUBLIC_CLASS(pa_source, pa_msgobject);
static void source_free(pa_object *o);
diff --git a/src/pulsecore/source.h b/src/pulsecore/source.h
index 7b3e4953..df3f99df 100644
--- a/src/pulsecore/source.h
+++ b/src/pulsecore/source.h
@@ -158,7 +158,7 @@ struct pa_source {
void *userdata;
};
-PA_DECLARE_CLASS(pa_source);
+PA_DECLARE_PUBLIC_CLASS(pa_source);
#define PA_SOURCE(s) pa_source_cast(s)
typedef enum pa_source_message {
diff --git a/src/pulsecore/usergroup.c b/src/pulsecore/usergroup.c
new file mode 100644
index 00000000..71b13bca
--- /dev/null
+++ b/src/pulsecore/usergroup.c
@@ -0,0 +1,372 @@
+/***
+ This file is part of PulseAudio.
+
+ Copyright 2009 Ted Percival
+
+ PulseAudio is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as
+ published by the Free Software Foundation; either version 2.1 of the
+ License, or (at your option) any later version.
+
+ PulseAudio is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with PulseAudio; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ USA.
+***/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <sys/types.h>
+#include <errno.h>
+
+#ifdef HAVE_PWD_H
+#include <pwd.h>
+#endif
+
+#ifdef HAVE_GRP_H
+#include <grp.h>
+#endif
+
+#include <pulse/xmalloc.h>
+#include <pulsecore/macro.h>
+
+#include "usergroup.h"
+
+#ifdef HAVE_GRP_H
+
+/* Returns a suitable starting size for a getgrnam_r() or getgrgid_r() buffer,
+ plus the size of a struct group.
+ */
+static size_t starting_getgr_buflen(void) {
+ size_t full_size;
+ long n;
+#ifdef _SC_GETGR_R_SIZE_MAX
+ n = sysconf(_SC_GETGR_R_SIZE_MAX);
+#else
+ n = -1;
+#endif
+ if (n <= 0)
+ n = 512;
+
+ full_size = (size_t) n + sizeof(struct group);
+
+ if (full_size < (size_t) n) /* check for integer overflow */
+ return (size_t) n;
+
+ return full_size;
+}
+
+/* Returns a suitable starting size for a getpwnam_r() or getpwuid_r() buffer,
+ plus the size of a struct passwd.
+ */
+static size_t starting_getpw_buflen(void) {
+ long n;
+ size_t full_size;
+
+#ifdef _SC_GETPW_R_SIZE_MAX
+ n = sysconf(_SC_GETPW_R_SIZE_MAX);
+#else
+ n = -1;
+#endif
+ if (n <= 0)
+ n = 512;
+
+ full_size = (size_t) n + sizeof(struct passwd);
+
+ if (full_size < (size_t) n) /* check for integer overflow */
+ return (size_t) n;
+
+ return full_size;
+}
+
+/* Given a memory allocation (*bufptr) and its length (*buflenptr),
+ double the size of the allocation, updating the given buffer and length
+ arguments. This function should be used in conjunction with the pa_*alloc
+ and pa_xfree functions.
+
+ Unlike realloc(), this function does *not* retain the original buffer's
+ contents.
+
+ Returns 0 on success, nonzero on error. The error cause is indicated by
+ errno.
+ */
+static int expand_buffer_trashcontents(void **bufptr, size_t *buflenptr) {
+ size_t newlen;
+
+ if (!bufptr || !*bufptr || !buflenptr) {
+ errno = EINVAL;
+ return -1;
+ }
+
+ newlen = *buflenptr * 2;
+
+ if (newlen < *buflenptr) {
+ errno = EOVERFLOW;
+ return -1;
+ }
+
+ /* Don't bother retaining memory contents; free & alloc anew */
+ pa_xfree(*bufptr);
+
+ *bufptr = pa_xmalloc(newlen);
+ *buflenptr = newlen;
+
+ return 0;
+}
+
+#ifdef HAVE_GETGRGID_R
+/* Thread-safe getgrgid() replacement.
+ Returned value should be freed using pa_getgrgid_free() when the caller is
+ finished with the returned group data.
+
+ API is the same as getgrgid(), errors are indicated by a NULL return;
+ consult errno for the error cause (zero it before calling).
+ */
+struct group *pa_getgrgid_malloc(gid_t gid) {
+ size_t buflen, getgr_buflen;
+ int err;
+ void *buf;
+ void *getgr_buf;
+ struct group *result = NULL;
+
+ buflen = starting_getgr_buflen();
+ buf = pa_xmalloc(buflen);
+
+ getgr_buflen = buflen - sizeof(struct group);
+ getgr_buf = (char *)buf + sizeof(struct group);
+
+ while ((err = getgrgid_r(gid, (struct group *)buf, getgr_buf,
+ getgr_buflen, &result)) == ERANGE)
+ {
+ if (expand_buffer_trashcontents(&buf, &buflen))
+ break;
+
+ getgr_buflen = buflen - sizeof(struct group);
+ getgr_buf = (char *)buf + sizeof(struct group);
+ }
+
+ if (err || !result) {
+ result = NULL;
+ if (buf) {
+ pa_xfree(buf);
+ buf = NULL;
+ }
+ }
+
+ pa_assert(result == buf || result == NULL);
+
+ return result;
+}
+
+void pa_getgrgid_free(struct group *grp) {
+ pa_xfree(grp);
+}
+
+#else /* !HAVE_GETGRGID_R */
+
+struct group *pa_getgrgid_malloc(gid_t gid) {
+ return getgrgid(gid);
+}
+
+void pa_getgrgid_free(struct group *grp) {
+ /* nothing */
+ return;
+}
+
+#endif /* !HAVE_GETGRGID_R */
+
+#ifdef HAVE_GETGRNAM_R
+/* Thread-safe getgrnam() function.
+ Returned value should be freed using pa_getgrnam_free() when the caller is
+ finished with the returned group data.
+
+ API is the same as getgrnam(), errors are indicated by a NULL return;
+ consult errno for the error cause (zero it before calling).
+ */
+struct group *pa_getgrnam_malloc(const char *name) {
+ size_t buflen, getgr_buflen;
+ int err;
+ void *buf;
+ void *getgr_buf;
+ struct group *result = NULL;
+
+ buflen = starting_getgr_buflen();
+ buf = pa_xmalloc(buflen);
+
+ getgr_buflen = buflen - sizeof(struct group);
+ getgr_buf = (char *)buf + sizeof(struct group);
+
+ while ((err = getgrnam_r(name, (struct group *)buf, getgr_buf,
+ getgr_buflen, &result)) == ERANGE)
+ {
+ if (expand_buffer_trashcontents(&buf, &buflen))
+ break;
+
+ getgr_buflen = buflen - sizeof(struct group);
+ getgr_buf = (char *)buf + sizeof(struct group);
+ }
+
+ if (err || !result) {
+ result = NULL;
+ if (buf) {
+ pa_xfree(buf);
+ buf = NULL;
+ }
+ }
+
+ pa_assert(result == buf || result == NULL);
+
+ return result;
+}
+
+void pa_getgrnam_free(struct group *group) {
+ pa_xfree(group);
+}
+
+#else /* !HAVE_GETGRNAM_R */
+
+struct group *pa_getgrnam_malloc(const char *name) {
+ return getgrnam(name);
+}
+
+void pa_getgrnam_free(struct group *group) {
+ /* nothing */
+ return;
+}
+
+#endif /* HAVE_GETGRNAM_R */
+
+#endif /* HAVE_GRP_H */
+
+#ifdef HAVE_PWD_H
+
+#ifdef HAVE_GETPWNAM_R
+/* Thread-safe getpwnam() function.
+ Returned value should be freed using pa_getpwnam_free() when the caller is
+ finished with the returned passwd data.
+
+ API is the same as getpwnam(), errors are indicated by a NULL return;
+ consult errno for the error cause (zero it before calling).
+ */
+struct passwd *pa_getpwnam_malloc(const char *name) {
+ size_t buflen, getpw_buflen;
+ int err;
+ void *buf;
+ void *getpw_buf;
+ struct passwd *result = NULL;
+
+ buflen = starting_getpw_buflen();
+ buf = pa_xmalloc(buflen);
+
+ getpw_buflen = buflen - sizeof(struct passwd);
+ getpw_buf = (char *)buf + sizeof(struct passwd);
+
+ while ((err = getpwnam_r(name, (struct passwd *)buf, getpw_buf,
+ getpw_buflen, &result)) == ERANGE)
+ {
+ if (expand_buffer_trashcontents(&buf, &buflen))
+ break;
+
+ getpw_buflen = buflen - sizeof(struct passwd);
+ getpw_buf = (char *)buf + sizeof(struct passwd);
+ }
+
+ if (err || !result) {
+ result = NULL;
+ if (buf) {
+ pa_xfree(buf);
+ buf = NULL;
+ }
+ }
+
+ pa_assert(result == buf || result == NULL);
+
+ return result;
+}
+
+void pa_getpwnam_free(struct passwd *passwd) {
+ pa_xfree(passwd);
+}
+
+#else /* !HAVE_GETPWNAM_R */
+
+struct passwd *pa_getpwnam_malloc(const char *name) {
+ return getpwnam(name);
+}
+
+void pa_getpwnam_free(struct passwd *passwd) {
+ /* nothing */
+ return;
+}
+
+#endif /* !HAVE_GETPWNAM_R */
+
+#ifdef HAVE_GETPWUID_R
+/* Thread-safe getpwuid() function.
+ Returned value should be freed using pa_getpwuid_free() when the caller is
+ finished with the returned group data.
+
+ API is the same as getpwuid(), errors are indicated by a NULL return;
+ consult errno for the error cause (zero it before calling).
+ */
+struct passwd *pa_getpwuid_malloc(uid_t uid) {
+ size_t buflen, getpw_buflen;
+ int err;
+ void *buf;
+ void *getpw_buf;
+ struct passwd *result = NULL;
+
+ buflen = starting_getpw_buflen();
+ buf = pa_xmalloc(buflen);
+
+ getpw_buflen = buflen - sizeof(struct passwd);
+ getpw_buf = (char *)buf + sizeof(struct passwd);
+
+ while ((err = getpwuid_r(uid, (struct passwd *)buf, getpw_buf,
+ getpw_buflen, &result)) == ERANGE)
+ {
+ if (expand_buffer_trashcontents(&buf, &buflen))
+ break;
+
+ getpw_buflen = buflen - sizeof(struct passwd);
+ getpw_buf = (char *)buf + sizeof(struct passwd);
+ }
+
+ if (err || !result) {
+ result = NULL;
+ if (buf) {
+ pa_xfree(buf);
+ buf = NULL;
+ }
+ }
+
+ pa_assert(result == buf || result == NULL);
+
+ return result;
+}
+
+void pa_getpwuid_free(struct passwd *passwd) {
+ pa_xfree(passwd);
+}
+
+#else /* !HAVE_GETPWUID_R */
+
+struct passwd *pa_getpwuid_malloc(uid_t uid) {
+ return getpwuid(uid);
+}
+
+void pa_getpwuid_free(struct passwd *passwd) {
+ /* nothing */
+ return;
+}
+
+#endif /* !HAVE_GETPWUID_R */
+
+#endif /* HAVE_PWD_H */
diff --git a/src/pulsecore/usergroup.h b/src/pulsecore/usergroup.h
new file mode 100644
index 00000000..1c091638
--- /dev/null
+++ b/src/pulsecore/usergroup.h
@@ -0,0 +1,51 @@
+#ifndef foousergrouphfoo
+#define foousergrouphfoo
+
+/***
+ This file is part of PulseAudio.
+
+ Copyright 2009 Ted Percival
+
+ PulseAudio is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as
+ published by the Free Software Foundation; either version 2.1 of the
+ License, or (at your option) any later version.
+
+ PulseAudio is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with PulseAudio; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ USA.
+***/
+
+#include <sys/types.h>
+
+#ifndef PACKAGE
+#error "Please include config.h before including this file!"
+#endif
+
+#ifdef HAVE_GRP_H
+
+struct group *pa_getgrgid_malloc(gid_t gid);
+void pa_getgrgid_free(struct group *grp);
+
+struct group *pa_getgrnam_malloc(const char *name);
+void pa_getgrnam_free(struct group *group);
+
+#endif /* HAVE_GRP_H */
+
+#ifdef HAVE_PWD_H
+
+struct passwd *pa_getpwuid_malloc(uid_t uid);
+void pa_getpwuid_free(struct passwd *passwd);
+
+struct passwd *pa_getpwnam_malloc(const char *name);
+void pa_getpwnam_free(struct passwd *passwd);
+
+#endif /* HAVE_PWD_H */
+
+#endif /* foousergrouphfoo */
diff --git a/src/tests/usergroup-test.c b/src/tests/usergroup-test.c
new file mode 100644
index 00000000..a48b016d
--- /dev/null
+++ b/src/tests/usergroup-test.c
@@ -0,0 +1,161 @@
+/***
+ This file is part of PulseAudio.
+
+ Copyright 2009 Ted Percival
+
+ PulseAudio is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as
+ published by the Free Software Foundation; either version 2.1 of the
+ License, or (at your option) any later version.
+
+ PulseAudio is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with PulseAudio; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ USA.
+***/
+
+#include <config.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/types.h>
+#include <pwd.h>
+#include <grp.h>
+#include <errno.h>
+
+#include <pulsecore/usergroup.h>
+
+static int load_reference_structs(struct group **gr, struct passwd **pw) {
+ setpwent();
+ *pw = getpwent();
+ endpwent();
+
+ setgrent();
+ *gr = getgrent();
+ endgrent();
+
+ return (*gr && *pw) ? 0 : 1;
+}
+
+static int compare_group(const struct group *a, const struct group *b) {
+ char **amem, **bmem;
+
+ if (strcmp(a->gr_name, b->gr_name)) {
+ fprintf(stderr, "Group name mismatch: [%s] [%s]\n",
+ a->gr_name, b->gr_name);
+ return 1;
+ }
+
+ if (strcmp(a->gr_passwd, b->gr_passwd)) {
+ fprintf(stderr, "Group password mismatch: [%s] [%s]\n",
+ a->gr_passwd, b->gr_passwd);
+ return 1;
+ }
+
+ if (a->gr_gid != b->gr_gid) {
+ fprintf(stderr, "Gid mismatch: [%lu] [%lu]\n",
+ (unsigned long) a->gr_gid, (unsigned long) b->gr_gid);
+ return 1;
+ }
+
+ /* XXX: Assuming the group ordering is identical. */
+ for (amem = a->gr_mem, bmem = b->gr_mem; *amem && *bmem; ++amem, ++bmem) {
+ if (strcmp(*amem, *bmem)) {
+ fprintf(stderr, "Group member mismatch: [%s] [%s]\n",
+ *amem, *bmem);
+ return 1;
+ }
+ }
+
+ if (*amem || *bmem) {
+ fprintf(stderr, "Mismatched group count\n");
+ return 1;
+ }
+
+ return 0;
+}
+
+static int compare_passwd(const struct passwd *a, const struct passwd *b) {
+ if (strcmp(a->pw_name, b->pw_name)) {
+ fprintf(stderr, "pw_name mismatch: [%s] [%s]\n", a->pw_name, b->pw_name);
+ return 1;
+ }
+
+ if (strcmp(a->pw_passwd, b->pw_passwd)) {
+ fprintf(stderr, "pw_passwd mismatch: [%s] [%s]\n", a->pw_passwd, b->pw_passwd);
+ return 1;
+ }
+
+ if (a->pw_uid != b->pw_uid) {
+ fprintf(stderr, "pw_uid mismatch: [%lu] [%lu]\n",
+ (unsigned long) a->pw_uid, (unsigned long) b->pw_uid);
+ return 1;
+ }
+
+ if (a->pw_gid != b->pw_gid) {
+ fprintf(stderr, "pw_gid mismatch: [%lu] [%lu]\n",
+ (unsigned long) a->pw_gid, (unsigned long) b->pw_gid);
+ return 1;
+ }
+
+ if (strcmp(a->pw_gecos, b->pw_gecos)) {
+ fprintf(stderr, "pw_gecos mismatch: [%s] [%s]\n", a->pw_gecos, b->pw_gecos);
+ return 1;
+ }
+
+ if (strcmp(a->pw_dir, b->pw_dir)) {
+ fprintf(stderr, "pw_dir mismatch: [%s] [%s]\n", a->pw_dir, b->pw_dir);
+ return 1;
+ }
+
+ if (strcmp(a->pw_shell, b->pw_shell)) {
+ fprintf(stderr, "pw_shell mismatch: [%s] [%s]\n", a->pw_shell, b->pw_shell);
+ return 1;
+ }
+
+ return 0;
+}
+
+int main(int argc, char *argv[]) {
+ struct group *gr;
+ struct passwd *pw;
+ int err;
+ struct group *reference_group = NULL;
+ struct passwd *reference_passwd = NULL;
+
+ err = load_reference_structs(&reference_group, &reference_passwd);
+ if (err)
+ return 77;
+
+ errno = 0;
+ gr = pa_getgrgid_malloc(reference_group->gr_gid);
+ if (compare_group(reference_group, gr))
+ return 1;
+ pa_getgrgid_free(gr);
+
+ errno = 0;
+ gr = pa_getgrnam_malloc(reference_group->gr_name);
+ if (compare_group(reference_group, gr))
+ return 1;
+ pa_getgrnam_free(gr);
+
+ errno = 0;
+ pw = pa_getpwuid_malloc(reference_passwd->pw_uid);
+ if (compare_passwd(reference_passwd, pw))
+ return 1;
+ pa_getpwuid_free(pw);
+
+ errno = 0;
+ pw = pa_getpwnam_malloc(reference_passwd->pw_name);
+ if (compare_passwd(reference_passwd, pw))
+ return 1;
+ pa_getpwnam_free(pw);
+
+ return 0;
+}