diff options
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 @@ -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" @@ -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" @@ -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" @@ -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" @@ -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 "" @@ -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 @@ -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" @@ -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" @@ -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" @@ -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" @@ -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" @@ -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" @@ -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 "" @@ -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" @@ -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 "" @@ -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" @@ -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" @@ -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." @@ -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 @@ -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" @@ -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 "" @@ -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" @@ -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" @@ -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; +} |