diff options
author | Luo Jinghua <sunmoon1997@gmail.com> | 2009-09-21 22:58:52 +0800 |
---|---|---|
committer | Luo Jinghua <sunmoon1997@gmail.com> | 2009-09-21 22:59:31 +0800 |
commit | 559dd68cf9a0e9bfd1a6ac4e76a52f76cb21d2d8 (patch) | |
tree | a08f5e3b06da5ba7e65bfb9002b58f274afb9f8f | |
parent | 094fd5ac0e0135d14e9a2a0d5bb225e64d2e98d9 (diff) |
build: add back gettext support
-rw-r--r-- | Makefile.am | 2 | ||||
-rw-r--r-- | configure.ac | 2 | ||||
-rw-r--r-- | po/ChangeLog | 0 | ||||
-rw-r--r-- | po/LINGUAS | 0 | ||||
-rw-r--r-- | po/Makefile.in.in | 432 | ||||
-rw-r--r-- | po/Makevars | 46 | ||||
-rw-r--r-- | po/Makevars.template | 41 | ||||
-rw-r--r-- | po/POTFILES.in | 1 | ||||
-rw-r--r-- | po/Rules-quot | 47 | ||||
-rw-r--r-- | po/boldquot.sed | 10 | ||||
-rw-r--r-- | po/en@boldquot.header | 25 | ||||
-rw-r--r-- | po/en@quot.header | 22 | ||||
-rw-r--r-- | po/gst-plugins-sopcast.pot | 24 | ||||
-rw-r--r-- | po/insert-header.sin | 23 | ||||
-rw-r--r-- | po/quot.sed | 6 | ||||
-rw-r--r-- | po/remove-potcdate.sin | 19 | ||||
-rw-r--r-- | po/stamp-it | 0 | ||||
-rw-r--r-- | po/stamp-po | 1 | ||||
-rw-r--r-- | src/gstscsrc.c | 136 |
19 files changed, 766 insertions, 71 deletions
diff --git a/Makefile.am b/Makefile.am index 538a4b1..ade0953 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,3 +1,3 @@ -SUBDIRS = m4 src +SUBDIRS = m4 src po EXTRA_DIST = autogen.sh diff --git a/configure.ac b/configure.ac index d451c54..01e413b 100644 --- a/configure.ac +++ b/configure.ac @@ -110,6 +110,6 @@ AC_LANG(C) AC_OUTPUT(Makefile m4/Makefile -dnl po/Makefile.in + po/Makefile.in src/Makefile) diff --git a/po/ChangeLog b/po/ChangeLog new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/po/ChangeLog diff --git a/po/LINGUAS b/po/LINGUAS new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/po/LINGUAS diff --git a/po/Makefile.in.in b/po/Makefile.in.in new file mode 100644 index 0000000..1283c32 --- /dev/null +++ b/po/Makefile.in.in @@ -0,0 +1,432 @@ +# Makefile for PO directory in any package using GNU gettext. +# Copyright (C) 1995-1997, 2000-2007 by Ulrich Drepper <drepper@gnu.ai.mit.edu> +# +# This file can be copied and used freely without restrictions. It can +# be used in projects which are not available under the GNU General Public +# License but which still want to provide support for the GNU gettext +# functionality. +# Please note that the actual code of GNU gettext is covered by the GNU +# General Public License and is *not* in the public domain. +# +# Origin: gettext-0.17 +GETTEXT_MACRO_VERSION = 0.17 + +PACKAGE = @PACKAGE@ +VERSION = @VERSION@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + +# thomas: add GETTEXT_PACKAGE substitution as used in Makevars +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ + +SHELL = /bin/sh +@SET_MAKE@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ + +prefix = @prefix@ +exec_prefix = @exec_prefix@ +datarootdir = @datarootdir@ +datadir = @datadir@ +localedir = @localedir@ +gettextsrcdir = $(datadir)/gettext/po + +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ + +# We use $(mkdir_p). +# In automake <= 1.9.x, $(mkdir_p) is defined either as "mkdir -p --" or as +# "$(mkinstalldirs)" or as "$(install_sh) -d". For these automake versions, +# @install_sh@ does not start with $(SHELL), so we add it. +# In automake >= 1.10, @mkdir_p@ is derived from ${MKDIR_P}, which is defined +# either as "/path/to/mkdir -p" or ".../install-sh -c -d". For these automake +# versions, $(mkinstalldirs) and $(install_sh) are unused. +mkinstalldirs = $(SHELL) @install_sh@ -d +install_sh = $(SHELL) @install_sh@ +MKDIR_P = @MKDIR_P@ +mkdir_p = @mkdir_p@ + +GMSGFMT_ = @GMSGFMT@ +GMSGFMT_no = @GMSGFMT@ +GMSGFMT_yes = @GMSGFMT_015@ +GMSGFMT = $(GMSGFMT_$(USE_MSGCTXT)) +MSGFMT_ = @MSGFMT@ +MSGFMT_no = @MSGFMT@ +MSGFMT_yes = @MSGFMT_015@ +MSGFMT = $(MSGFMT_$(USE_MSGCTXT)) +XGETTEXT_ = @XGETTEXT@ +XGETTEXT_no = @XGETTEXT@ +XGETTEXT_yes = @XGETTEXT_015@ +XGETTEXT = $(XGETTEXT_$(USE_MSGCTXT)) +MSGMERGE = msgmerge +MSGMERGE_UPDATE = @MSGMERGE@ --update +MSGINIT = msginit +MSGCONV = msgconv +MSGFILTER = msgfilter + +POFILES = @POFILES@ +GMOFILES = @GMOFILES@ +UPDATEPOFILES = @UPDATEPOFILES@ +DUMMYPOFILES = @DUMMYPOFILES@ +DISTFILES.common = Makefile.in.in remove-potcdate.sin \ +$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3) +DISTFILES = $(DISTFILES.common) Makevars POTFILES.in \ +$(POFILES) $(GMOFILES) \ +$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3) + +POTFILES = \ + +CATALOGS = @CATALOGS@ + +# Makevars gets inserted here. (Don't remove this line!) + +.SUFFIXES: +.SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update + +.po.mo: + @echo "$(MSGFMT) -c -o $@ $<"; \ + $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@ + +.po.gmo: + @lang=`echo $* | sed -e 's,.*/,,'`; \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o $${lang}.gmo $${lang}.po"; \ + cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo + +.sin.sed: + sed -e '/^#/d' $< > t-$@ + mv t-$@ $@ + + +all: check-macro-version all-@USE_NLS@ + +all-yes: stamp-po +all-no: + +# Ensure that the gettext macros and this Makefile.in.in are in sync. +check-macro-version: + @test "$(GETTEXT_MACRO_VERSION)" = "@GETTEXT_MACRO_VERSION@" \ + || { echo "*** error: gettext infrastructure mismatch: using a Makefile.in.in from gettext version $(GETTEXT_MACRO_VERSION) but the autoconf macros are from gettext version @GETTEXT_MACRO_VERSION@" 1>&2; \ + exit 1; \ + } + +# $(srcdir)/$(DOMAIN).pot is only created when needed. When xgettext finds no +# internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because +# we don't want to bother translators with empty POT files). We assume that +# LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty. +# In this case, stamp-po is a nop (i.e. a phony target). + +# stamp-po is a timestamp denoting the last time at which the CATALOGS have +# been loosely updated. Its purpose is that when a developer or translator +# checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS, +# "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent +# invocations of "make" will do nothing. This timestamp would not be necessary +# if updating the $(CATALOGS) would always touch them; however, the rule for +# $(POFILES) has been designed to not touch files that don't need to be +# changed. +stamp-po: $(srcdir)/$(DOMAIN).pot + test ! -f $(srcdir)/$(DOMAIN).pot || \ + test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES) + @test ! -f $(srcdir)/$(DOMAIN).pot || { \ + echo "touch stamp-po" && \ + echo timestamp > stamp-poT && \ + mv stamp-poT stamp-po; \ + } + +# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update', +# otherwise packages like GCC can not be built if only parts of the source +# have been downloaded. + +# This target rebuilds $(DOMAIN).pot; it is an expensive operation. +# Note that $(DOMAIN).pot is not touched if it doesn't need to be changed. +$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed + if LC_ALL=C grep 'GNU @PACKAGE@' $(top_srcdir)/* 2>/dev/null | grep -v 'libtool:' >/dev/null; then \ + package_gnu='GNU '; \ + else \ + package_gnu=''; \ + fi; \ + if test -n '$(MSGID_BUGS_ADDRESS)' || test '$(PACKAGE_BUGREPORT)' = '@'PACKAGE_BUGREPORT'@'; then \ + msgid_bugs_address='$(MSGID_BUGS_ADDRESS)'; \ + else \ + msgid_bugs_address='$(PACKAGE_BUGREPORT)'; \ + fi; \ + case `$(XGETTEXT) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].* | 0.16 | 0.16.[0-1]*) \ + $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ + --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \ + --files-from=$(srcdir)/POTFILES.in \ + --copyright-holder='$(COPYRIGHT_HOLDER)' \ + --msgid-bugs-address="$$msgid_bugs_address" \ + ;; \ + *) \ + $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ + --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \ + --files-from=$(srcdir)/POTFILES.in \ + --copyright-holder='$(COPYRIGHT_HOLDER)' \ + --package-name="$${package_gnu}@PACKAGE@" \ + --package-version='@VERSION@' \ + --msgid-bugs-address="$$msgid_bugs_address" \ + ;; \ + esac + test ! -f $(DOMAIN).po || { \ + if test -f $(srcdir)/$(DOMAIN).pot; then \ + sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \ + sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \ + if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \ + rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \ + else \ + rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \ + mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ + fi; \ + else \ + mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ + fi; \ + } + +# This rule has no dependencies: we don't need to update $(DOMAIN).pot at +# every "make" invocation, only create it when it is missing. +# Only "make $(DOMAIN).pot-update" or "make dist" will force an update. +$(srcdir)/$(DOMAIN).pot: + $(MAKE) $(DOMAIN).pot-update + +# This target rebuilds a PO file if $(DOMAIN).pot has changed. +# Note that a PO file is not touched if it doesn't need to be changed. +$(POFILES): $(srcdir)/$(DOMAIN).pot + @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \ + if test -f "$(srcdir)/$${lang}.po"; then \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}$(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot"; \ + cd $(srcdir) && $(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot; \ + else \ + $(MAKE) $${lang}.po-create; \ + fi + + +install: install-exec install-data +install-exec: +install-data: install-data-@USE_NLS@ + if test "$(PACKAGE)" = "gettext-tools"; then \ + $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ + for file in $(DISTFILES.common) Makevars.template; do \ + $(INSTALL_DATA) $(srcdir)/$$file \ + $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + for file in Makevars; do \ + rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi +install-data-no: all +install-data-yes: all + $(mkdir_p) $(DESTDIR)$(datadir) + @catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + dir=$(localedir)/$$lang/LC_MESSAGES; \ + $(mkdir_p) $(DESTDIR)$$dir; \ + if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \ + $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \ + echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \ + for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ + if test -n "$$lc"; then \ + if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ + link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ + mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ + for file in *; do \ + if test -f $$file; then \ + ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ + fi; \ + done); \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + else \ + if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ + :; \ + else \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + fi; \ + fi; \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ + ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ + cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \ + fi; \ + done; \ + done + +install-strip: install + +installdirs: installdirs-exec installdirs-data +installdirs-exec: +installdirs-data: installdirs-data-@USE_NLS@ + if test "$(PACKAGE)" = "gettext-tools"; then \ + $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ + else \ + : ; \ + fi +installdirs-data-no: +installdirs-data-yes: + $(mkdir_p) $(DESTDIR)$(datadir) + @catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + dir=$(localedir)/$$lang/LC_MESSAGES; \ + $(mkdir_p) $(DESTDIR)$$dir; \ + for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ + if test -n "$$lc"; then \ + if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ + link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ + mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ + for file in *; do \ + if test -f $$file; then \ + ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ + fi; \ + done); \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + else \ + if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ + :; \ + else \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + fi; \ + fi; \ + fi; \ + done; \ + done + +# Define this as empty until I found a useful application. +installcheck: + +uninstall: uninstall-exec uninstall-data +uninstall-exec: +uninstall-data: uninstall-data-@USE_NLS@ + if test "$(PACKAGE)" = "gettext-tools"; then \ + for file in $(DISTFILES.common) Makevars.template; do \ + rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi +uninstall-data-no: +uninstall-data-yes: + catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + done; \ + done + +check: all + +info dvi ps pdf html tags TAGS ctags CTAGS ID: + +mostlyclean: + rm -f remove-potcdate.sed + rm -f stamp-poT + rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po + rm -fr *.o + +clean: mostlyclean + +distclean: clean + rm -f Makefile Makefile.in POTFILES *.mo + +maintainer-clean: distclean + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + rm -f stamp-po $(GMOFILES) + +distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) +dist distdir: + $(MAKE) update-po + @$(MAKE) dist2 +# This is a separate target because 'update-po' must be executed before. +dist2: stamp-po $(DISTFILES) + dists="$(DISTFILES)"; \ + if test "$(PACKAGE)" = "gettext-tools"; then \ + dists="$$dists Makevars.template"; \ + fi; \ + if test -f $(srcdir)/$(DOMAIN).pot; then \ + dists="$$dists $(DOMAIN).pot stamp-po"; \ + fi; \ + if test -f $(srcdir)/ChangeLog; then \ + dists="$$dists ChangeLog"; \ + fi; \ + for i in 0 1 2 3 4 5 6 7 8 9; do \ + if test -f $(srcdir)/ChangeLog.$$i; then \ + dists="$$dists ChangeLog.$$i"; \ + fi; \ + done; \ + if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \ + for file in $$dists; do \ + if test -f $$file; then \ + cp -p $$file $(distdir) || exit 1; \ + else \ + cp -p $(srcdir)/$$file $(distdir) || exit 1; \ + fi; \ + done + +update-po: Makefile + $(MAKE) $(DOMAIN).pot-update + test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES) + $(MAKE) update-gmo + +# General rule for creating PO files. + +.nop.po-create: + @lang=`echo $@ | sed -e 's/\.po-create$$//'`; \ + echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \ + exit 1 + +# General rule for updating PO files. + +.nop.po-update: + @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \ + if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; fi; \ + tmpdir=`pwd`; \ + echo "$$lang:"; \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}$(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \ + cd $(srcdir); \ + if $(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$tmpdir/$$lang.new.po; then \ + if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ + rm -f $$tmpdir/$$lang.new.po; \ + else \ + if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ + :; \ + else \ + echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ + exit 1; \ + fi; \ + fi; \ + else \ + echo "msgmerge for $$lang.po failed!" 1>&2; \ + rm -f $$tmpdir/$$lang.new.po; \ + fi + +$(DUMMYPOFILES): + +update-gmo: Makefile $(GMOFILES) + @: + +Makefile: Makefile.in.in Makevars $(top_builddir)/config.status @POMAKEFILEDEPS@ + cd $(top_builddir) \ + && $(SHELL) ./config.status $(subdir)/$@.in po-directories + +force: + +# Tell versions [3.59,3.63) of GNU make not to export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/po/Makevars b/po/Makevars new file mode 100644 index 0000000..d743fb3 --- /dev/null +++ b/po/Makevars @@ -0,0 +1,46 @@ +# Makefile variables for PO directory in any package using GNU gettext. + +# Usually the message domain is the same as the package name. +DOMAIN = $(GETTEXT_PACKAGE) + +# These two variables depend on the location of this directory. +subdir = po +top_builddir = .. + +# These options get passed to xgettext. +XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ + +# This is the copyright holder that gets inserted into the header of the +# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding +# package. (Note that the msgstr strings, extracted from the package's +# sources, belong to the copyright holder of the package.) Translators are +# expected to transfer the copyright for their translations to this person +# or entity, or to disclaim their copyright. The empty string stands for +# the public domain; in this case the translators are expected to disclaim +# their copyright. +COPYRIGHT_HOLDER = + +# This is the email address or URL to which the translators shall report +# bugs in the untranslated strings: +# - Strings which are not entire sentences, see the maintainer guidelines +# in the GNU gettext documentation, section 'Preparing Strings'. +# - Strings which use unclear terms or require additional context to be +# understood. +# - Strings which make invalid assumptions about notation of date, time or +# money. +# - Pluralisation problems. +# - Incorrect English spelling. +# - Incorrect formatting. +# It can be your email address, or a mailing list address where translators +# can write to without being subscribed, or the URL of a web page through +# which the translators can contact you. +MSGID_BUGS_ADDRESS = http://people.freedesktop.org/~jinghua + +# This is the list of locale categories, beyond LC_MESSAGES, for which the +# message catalogs shall be used. It is usually empty. +EXTRA_LOCALE_CATEGORIES = + +# Avoid line numbers in *.po, but keep them in *.pot. +MSGMERGE = msgmerge --no-location +MSGMERGE_UPDATE = msgmerge --no-location --update +MSGFILTER = msgfilter --no-location diff --git a/po/Makevars.template b/po/Makevars.template new file mode 100644 index 0000000..32692ab --- /dev/null +++ b/po/Makevars.template @@ -0,0 +1,41 @@ +# Makefile variables for PO directory in any package using GNU gettext. + +# Usually the message domain is the same as the package name. +DOMAIN = $(PACKAGE) + +# These two variables depend on the location of this directory. +subdir = po +top_builddir = .. + +# These options get passed to xgettext. +XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ + +# This is the copyright holder that gets inserted into the header of the +# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding +# package. (Note that the msgstr strings, extracted from the package's +# sources, belong to the copyright holder of the package.) Translators are +# expected to transfer the copyright for their translations to this person +# or entity, or to disclaim their copyright. The empty string stands for +# the public domain; in this case the translators are expected to disclaim +# their copyright. +COPYRIGHT_HOLDER = Free Software Foundation, Inc. + +# This is the email address or URL to which the translators shall report +# bugs in the untranslated strings: +# - Strings which are not entire sentences, see the maintainer guidelines +# in the GNU gettext documentation, section 'Preparing Strings'. +# - Strings which use unclear terms or require additional context to be +# understood. +# - Strings which make invalid assumptions about notation of date, time or +# money. +# - Pluralisation problems. +# - Incorrect English spelling. +# - Incorrect formatting. +# It can be your email address, or a mailing list address where translators +# can write to without being subscribed, or the URL of a web page through +# which the translators can contact you. +MSGID_BUGS_ADDRESS = + +# This is the list of locale categories, beyond LC_MESSAGES, for which the +# message catalogs shall be used. It is usually empty. +EXTRA_LOCALE_CATEGORIES = diff --git a/po/POTFILES.in b/po/POTFILES.in new file mode 100644 index 0000000..fe8a582 --- /dev/null +++ b/po/POTFILES.in @@ -0,0 +1 @@ +src/gstscsrc.c diff --git a/po/Rules-quot b/po/Rules-quot new file mode 100644 index 0000000..9c2a995 --- /dev/null +++ b/po/Rules-quot @@ -0,0 +1,47 @@ +# Special Makefile rules for English message catalogs with quotation marks. + +DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot + +.SUFFIXES: .insert-header .po-update-en + +en@quot.po-create: + $(MAKE) en@quot.po-update +en@boldquot.po-create: + $(MAKE) en@boldquot.po-update + +en@quot.po-update: en@quot.po-update-en +en@boldquot.po-update: en@boldquot.po-update-en + +.insert-header.po-update-en: + @lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \ + if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \ + tmpdir=`pwd`; \ + echo "$$lang:"; \ + ll=`echo $$lang | sed -e 's/@.*//'`; \ + LC_ALL=C; export LC_ALL; \ + cd $(srcdir); \ + if $(MSGINIT) -i $(DOMAIN).pot --no-translator -l $$ll -o - 2>/dev/null | sed -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | $(MSGFILTER) sed -f `echo $$lang | sed -e 's/.*@//'`.sed 2>/dev/null > $$tmpdir/$$lang.new.po; then \ + if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ + rm -f $$tmpdir/$$lang.new.po; \ + else \ + if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ + :; \ + else \ + echo "creation of $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ + exit 1; \ + fi; \ + fi; \ + else \ + echo "creation of $$lang.po failed!" 1>&2; \ + rm -f $$tmpdir/$$lang.new.po; \ + fi + +en@quot.insert-header: insert-header.sin + sed -e '/^#/d' -e 's/HEADER/en@quot.header/g' $(srcdir)/insert-header.sin > en@quot.insert-header + +en@boldquot.insert-header: insert-header.sin + sed -e '/^#/d' -e 's/HEADER/en@boldquot.header/g' $(srcdir)/insert-header.sin > en@boldquot.insert-header + +mostlyclean: mostlyclean-quot +mostlyclean-quot: + rm -f *.insert-header diff --git a/po/boldquot.sed b/po/boldquot.sed new file mode 100644 index 0000000..4b937aa --- /dev/null +++ b/po/boldquot.sed @@ -0,0 +1,10 @@ +s/"\([^"]*\)"/“\1”/g +s/`\([^`']*\)'/‘\1’/g +s/ '\([^`']*\)' / ‘\1’ /g +s/ '\([^`']*\)'$/ ‘\1’/g +s/^'\([^`']*\)' /‘\1’ /g +s/“”/""/g +s/“/“[1m/g +s/”/[0m”/g +s/‘/‘[1m/g +s/’/[0m’/g diff --git a/po/en@boldquot.header b/po/en@boldquot.header new file mode 100644 index 0000000..fedb6a0 --- /dev/null +++ b/po/en@boldquot.header @@ -0,0 +1,25 @@ +# All this catalog "translates" are quotation characters. +# The msgids must be ASCII and therefore cannot contain real quotation +# characters, only substitutes like grave accent (0x60), apostrophe (0x27) +# and double quote (0x22). These substitutes look strange; see +# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html +# +# This catalog translates grave accent (0x60) and apostrophe (0x27) to +# left single quotation mark (U+2018) and right single quotation mark (U+2019). +# It also translates pairs of apostrophe (0x27) to +# left single quotation mark (U+2018) and right single quotation mark (U+2019) +# and pairs of quotation mark (0x22) to +# left double quotation mark (U+201C) and right double quotation mark (U+201D). +# +# When output to an UTF-8 terminal, the quotation characters appear perfectly. +# When output to an ISO-8859-1 terminal, the single quotation marks are +# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to +# grave/acute accent (by libiconv), and the double quotation marks are +# transliterated to 0x22. +# When output to an ASCII terminal, the single quotation marks are +# transliterated to apostrophes, and the double quotation marks are +# transliterated to 0x22. +# +# This catalog furthermore displays the text between the quotation marks in +# bold face, assuming the VT100/XTerm escape sequences. +# diff --git a/po/en@quot.header b/po/en@quot.header new file mode 100644 index 0000000..a9647fc --- /dev/null +++ b/po/en@quot.header @@ -0,0 +1,22 @@ +# All this catalog "translates" are quotation characters. +# The msgids must be ASCII and therefore cannot contain real quotation +# characters, only substitutes like grave accent (0x60), apostrophe (0x27) +# and double quote (0x22). These substitutes look strange; see +# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html +# +# This catalog translates grave accent (0x60) and apostrophe (0x27) to +# left single quotation mark (U+2018) and right single quotation mark (U+2019). +# It also translates pairs of apostrophe (0x27) to +# left single quotation mark (U+2018) and right single quotation mark (U+2019) +# and pairs of quotation mark (0x22) to +# left double quotation mark (U+201C) and right double quotation mark (U+201D). +# +# When output to an UTF-8 terminal, the quotation characters appear perfectly. +# When output to an ISO-8859-1 terminal, the single quotation marks are +# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to +# grave/acute accent (by libiconv), and the double quotation marks are +# transliterated to 0x22. +# When output to an ASCII terminal, the single quotation marks are +# transliterated to apostrophes, and the double quotation marks are +# transliterated to 0x22. +# diff --git a/po/gst-plugins-sopcast.pot b/po/gst-plugins-sopcast.pot new file mode 100644 index 0000000..682acd7 --- /dev/null +++ b/po/gst-plugins-sopcast.pot @@ -0,0 +1,24 @@ +# SOME DESCRIPTIVE TITLE. +# This file is put in the public domain. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: gst-plugins-sopcast 0.0.3\n" +"Report-Msgid-Bugs-To: http://people.freedesktop.org/~jinghua\n" +"POT-Creation-Date: 2009-09-21 22:56+0800\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" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/gstscsrc.c:786 +msgid "Failed to allocate two tcp ports." +msgstr "" + +#: src/gstscsrc.c:793 +msgid "Failed to fork the monitor subprocess." +msgstr "" diff --git a/po/insert-header.sin b/po/insert-header.sin new file mode 100644 index 0000000..b26de01 --- /dev/null +++ b/po/insert-header.sin @@ -0,0 +1,23 @@ +# Sed script that inserts the file called HEADER before the header entry. +# +# At each occurrence of a line starting with "msgid ", we execute the following +# commands. At the first occurrence, insert the file. At the following +# occurrences, do nothing. The distinction between the first and the following +# occurrences is achieved by looking at the hold space. +/^msgid /{ +x +# Test if the hold space is empty. +s/m/m/ +ta +# Yes it was empty. First occurrence. Read the file. +r HEADER +# Output the file's contents by reading the next line. But don't lose the +# current line while doing this. +g +N +bb +:a +# The hold space was nonempty. Following occurrences. Do nothing. +x +:b +} diff --git a/po/quot.sed b/po/quot.sed new file mode 100644 index 0000000..0122c46 --- /dev/null +++ b/po/quot.sed @@ -0,0 +1,6 @@ +s/"\([^"]*\)"/“\1”/g +s/`\([^`']*\)'/‘\1’/g +s/ '\([^`']*\)' / ‘\1’ /g +s/ '\([^`']*\)'$/ ‘\1’/g +s/^'\([^`']*\)' /‘\1’ /g +s/“”/""/g diff --git a/po/remove-potcdate.sin b/po/remove-potcdate.sin new file mode 100644 index 0000000..2436c49 --- /dev/null +++ b/po/remove-potcdate.sin @@ -0,0 +1,19 @@ +# Sed script that remove the POT-Creation-Date line in the header entry +# from a POT file. +# +# The distinction between the first and the following occurrences of the +# pattern is achieved by looking at the hold space. +/^"POT-Creation-Date: .*"$/{ +x +# Test if the hold space is empty. +s/P/P/ +ta +# Yes it was empty. First occurrence. Remove the line. +g +d +bb +:a +# The hold space was nonempty. Following occurrences. Do nothing. +x +:b +} diff --git a/po/stamp-it b/po/stamp-it new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/po/stamp-it diff --git a/po/stamp-po b/po/stamp-po new file mode 100644 index 0000000..9788f70 --- /dev/null +++ b/po/stamp-po @@ -0,0 +1 @@ +timestamp diff --git a/src/gstscsrc.c b/src/gstscsrc.c index f7ed0e9..23d89f7 100644 --- a/src/gstscsrc.c +++ b/src/gstscsrc.c @@ -39,8 +39,9 @@ #include <arpa/inet.h> #include <gst/gstelement.h> -//#include <gst/gst-i18n-plugin.h> #include <gst/base/gsttypefindhelper.h> + +#include "gst-i18n-plugin.h" #include "gstscsrc.h" GST_DEBUG_CATEGORY_STATIC (sopcastsrc_debug); @@ -76,7 +77,8 @@ static void gst_sopcast_src_set_property (GObject * object, guint prop_id, static void gst_sopcast_src_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec); -static GstFlowReturn gst_sopcast_src_create (GstPushSrc * src, GstBuffer ** buffer); +static GstFlowReturn gst_sopcast_src_create (GstPushSrc * src, + GstBuffer ** buffer); static gboolean gst_sopcast_src_start (GstBaseSrc * bsrc); @@ -147,7 +149,7 @@ gst_sopcast_src_class_init (GstSopcastSrcClass * klass) g_object_class_install_property (gobject_class, PROP_LOCATION, g_param_spec_string ("location", "Location", - "Location to read from", "", G_PARAM_READWRITE)); + "Location to read from", "", G_PARAM_READWRITE)); gstbasesrc_class->start = GST_DEBUG_FUNCPTR (gst_sopcast_src_start); gstbasesrc_class->stop = GST_DEBUG_FUNCPTR (gst_sopcast_src_stop); @@ -160,7 +162,8 @@ gst_sopcast_src_class_init (GstSopcastSrcClass * klass) gstbasesrc_class->do_seek = GST_DEBUG_FUNCPTR (gst_sopcast_src_do_seek); gstpushsrc_class->create = GST_DEBUG_FUNCPTR (gst_sopcast_src_create); - gstelement_class->change_state = GST_DEBUG_FUNCPTR (gst_sopcast_src_change_state); + gstelement_class->change_state = + GST_DEBUG_FUNCPTR (gst_sopcast_src_change_state); GST_DEBUG_CATEGORY_INIT (sopcastsrc_debug, "sopcastsrc", 0, "Sopcast stream Source"); @@ -241,7 +244,7 @@ gst_sopcast_src_get_property (GObject * object, guint prop_id, } static gboolean -gst_sopcast_src_connect_server (GstSopcastSrc *src) +gst_sopcast_src_connect_server (GstSopcastSrc * src) { struct sockaddr_in sockaddr; int sock; @@ -258,14 +261,14 @@ gst_sopcast_src_connect_server (GstSopcastSrc *src) return FALSE; } - memset (&sockaddr, 0, sizeof(sockaddr)); + memset (&sockaddr, 0, sizeof (sockaddr)); sockaddr.sin_family = AF_INET; sockaddr.sin_port = htons (src->ports[1]); inet_aton ("127.0.0.1", &sockaddr.sin_addr); GST_DEBUG_OBJECT (src, "Connecting to http://127.0.0.1:%d", src->ports[1]); - if (connect (sock, (const struct sockaddr*)&sockaddr, - sizeof(sockaddr)) < 0) { + if (connect (sock, (const struct sockaddr *) &sockaddr, + sizeof (sockaddr)) < 0) { close (sock); return FALSE; } @@ -276,7 +279,7 @@ gst_sopcast_src_connect_server (GstSopcastSrc *src) } static gboolean -gst_sopcast_src_send_get_request (GstSopcastSrc *src) +gst_sopcast_src_send_get_request (GstSopcastSrc * src) { gchar request[1024]; gchar reply[1024]; @@ -284,11 +287,10 @@ gst_sopcast_src_send_get_request (GstSopcastSrc *src) int n; snprintf (request, sizeof (request), - "GET / HTTP/1.1\r\n" - "Host: 127.0.0.1:%d\r\n" - "Connection: close\r\n" - "User-Agent: Gstreamer sopcastsrc\r\n" - "\r\n", src->ports[1]); + "GET / HTTP/1.1\r\n" + "Host: 127.0.0.1:%d\r\n" + "Connection: close\r\n" + "User-Agent: Gstreamer sopcastsrc\r\n" "\r\n", src->ports[1]); ret = send (src->sock, request, strlen (request), 0); if (ret < 0) { @@ -315,8 +317,8 @@ gst_sopcast_src_send_get_request (GstSopcastSrc *src) return FALSE; } -static gchar* -gst_sopcast_src_get_stats (GstSopcastSrc *src) +static gchar * +gst_sopcast_src_get_stats (GstSopcastSrc * src) { struct sockaddr_in sockaddr; gchar request[] = "state\ns\n"; @@ -333,16 +335,17 @@ gst_sopcast_src_get_stats (GstSopcastSrc *src) return NULL; } - memset (&sockaddr, 0, sizeof(sockaddr)); + memset (&sockaddr, 0, sizeof (sockaddr)); sockaddr.sin_family = AF_INET; sockaddr.sin_port = htons (src->ports[1]); inet_aton ("127.0.0.1", &sockaddr.sin_addr); - if (connect (sock, (const struct sockaddr*)&sockaddr, - sizeof(sockaddr)) < 0) + if (connect (sock, (const struct sockaddr *) &sockaddr, + sizeof (sockaddr)) < 0) goto failed; - GST_LOG_OBJECT (src, "Connected to server tcp://127.0.0.1:%d.", src->ports[0]); + GST_LOG_OBJECT (src, "Connected to server tcp://127.0.0.1:%d.", + src->ports[0]); for (n = 0; n < 2; n++) { ret = send (sock, request, strlen (request), 0); @@ -369,7 +372,7 @@ gst_sopcast_src_get_stats (GstSopcastSrc *src) do { errno = 0; - ret = recv (sock, &reply[n], sizeof(reply) - n, 0); + ret = recv (sock, &reply[n], sizeof (reply) - n, 0); } while (ret < 0 && errno == EINTR); if (ret < 0) { perror ("Failed to receive a reply from server"); @@ -382,10 +385,10 @@ gst_sopcast_src_get_stats (GstSopcastSrc *src) for (i = 0; i < ret; i++) { if (reply[n + i] == '\n') { - close (sock); - reply[n + i + 1] = '\0'; - GST_LOG_OBJECT (src, "stats: %s", reply); - return g_strdup (reply); + close (sock); + reply[n + i + 1] = '\0'; + GST_LOG_OBJECT (src, "stats: %s", reply); + return g_strdup (reply); } } } @@ -396,7 +399,7 @@ failed: } static gboolean -gst_sopcast_src_helper_is_running (GstSopcastSrc *src) +gst_sopcast_src_helper_is_running (GstSopcastSrc * src) { int ret; @@ -411,7 +414,7 @@ gst_sopcast_src_helper_is_running (GstSopcastSrc *src) } static int -gst_src_src_get_buffering_level (GstSopcastSrc *src) +gst_src_src_get_buffering_level (GstSopcastSrc * src) { gchar *stats; gint percent = 0; @@ -433,7 +436,7 @@ gst_src_src_get_buffering_level (GstSopcastSrc *src) } static void -gst_sopcast_src_update_buffering_progress (GstSopcastSrc *src, gint percent) +gst_sopcast_src_update_buffering_progress (GstSopcastSrc * src, gint percent) { GstMessage *message; @@ -443,8 +446,7 @@ gst_sopcast_src_update_buffering_progress (GstSopcastSrc *src, gint percent) src->percent = percent; message = gst_message_new_element (GST_OBJECT_CAST (src), - gst_structure_new ("progress", "percent", - G_TYPE_INT, percent, NULL)); + gst_structure_new ("progress", "percent", G_TYPE_INT, percent, NULL)); gst_element_post_message (GST_ELEMENT_CAST (src), message); } @@ -468,15 +470,15 @@ gst_sopcast_src_create (GstPushSrc * psrc, GstBuffer ** buffer) percent = gst_src_src_get_buffering_level (src); if (src->interrupted || !gst_sopcast_src_helper_is_running (src)) - return GST_FLOW_ERROR; + return GST_FLOW_ERROR; if (percent > 50) - break; + break; if (percent == src->percent) { - if (++times > 5) - src->percent = -1; + if (++times > 5) + src->percent = -1; } else { - times = 0; + times = 0; } gst_sopcast_src_update_buffering_progress (src, percent); @@ -486,9 +488,9 @@ gst_sopcast_src_create (GstPushSrc * psrc, GstBuffer ** buffer) /* connect to server */ do { if (gst_sopcast_src_connect_server (src)) - break; + break; if (src->interrupted || !gst_sopcast_src_helper_is_running (src)) - return GST_FLOW_ERROR; + return GST_FLOW_ERROR; g_usleep (500000); } while (1); @@ -525,7 +527,7 @@ gst_sopcast_src_create (GstPushSrc * psrc, GstBuffer ** buffer) struct timeval tv; int sock = src->sock; - if (src->interrupted /* || !gst_sopcast_src_helper_is_running (src) */) + if (src->interrupted /* || !gst_sopcast_src_helper_is_running (src) */ ) goto could_not_read; FD_ZERO (&rfs); @@ -545,8 +547,7 @@ gst_sopcast_src_create (GstPushSrc * psrc, GstBuffer ** buffer) if (!ret || !FD_ISSET (sock, &rfs)) continue; - ret = recv (sock, GST_BUFFER_DATA (buf), - GST_BUFFER_SIZE (buf), 0); + ret = recv (sock, GST_BUFFER_DATA (buf), GST_BUFFER_SIZE (buf), 0); if (ret < 0 && errno != EINTR) goto could_not_read; @@ -597,12 +598,12 @@ gst_sopcast_src_allocate_port (void) port = g_random_int_range (3000, 65535); sock = socket (AF_INET, SOCK_STREAM, 0); - memset (&sockaddr, 0, sizeof(sockaddr)); + memset (&sockaddr, 0, sizeof (sockaddr)); sockaddr.sin_family = AF_INET; - sockaddr.sin_port = htons(port); + sockaddr.sin_port = htons (port); inet_aton ("127.0.0.1", &sockaddr.sin_addr); - if (connect (sock, (const struct sockaddr*)&sockaddr, - sizeof(sockaddr)) != 0) { + if (connect (sock, (const struct sockaddr *) &sockaddr, + sizeof (sockaddr)) != 0) { close (sock); break; } @@ -626,13 +627,13 @@ gst_sopcast_src_allocate_ports (GstSopcastSrc * src) static gboolean gst_sopcast_src_spawn_helper (GstSopcastSrc * src) { - gchar* argv[12]; - gchar ports[2][20]; + gchar *argv[12]; + gchar ports[2][20]; int argc; gboolean ret; - snprintf (ports[0], sizeof(ports[0]), "%d", src->ports[0]); - snprintf (ports[1], sizeof(ports[1]), "%d", src->ports[1]); + snprintf (ports[0], sizeof (ports[0]), "%d", src->ports[0]); + snprintf (ports[1], sizeof (ports[1]), "%d", src->ports[1]); argc = 0; argv[argc++] = "sp-sc"; @@ -642,17 +643,15 @@ gst_sopcast_src_spawn_helper (GstSopcastSrc * src) argv[argc++] = NULL; ret = g_spawn_async ("/tmp", argv, NULL, - G_SPAWN_SEARCH_PATH | G_SPAWN_STDOUT_TO_DEV_NULL, - NULL, NULL, &src->helper_pid, - NULL); + G_SPAWN_SEARCH_PATH | G_SPAWN_STDOUT_TO_DEV_NULL, + NULL, NULL, &src->helper_pid, NULL); if (ret) return TRUE; argv[0] = "sp-sc-auth"; return g_spawn_async ("/tmp", argv, NULL, - G_SPAWN_SEARCH_PATH | G_SPAWN_STDOUT_TO_DEV_NULL, - NULL, NULL, &src->helper_pid, - NULL); + G_SPAWN_SEARCH_PATH | G_SPAWN_STDOUT_TO_DEV_NULL, + NULL, NULL, &src->helper_pid, NULL); } static void @@ -665,7 +664,7 @@ gst_sopcast_src_monitor_main (GstSopcastSrc * src, pid_t ppid, int sock) char buf[1024]; /* cleanup fds */ - max = sysconf(_SC_OPEN_MAX); + max = sysconf (_SC_OPEN_MAX); for (i = 3; i < max; i++) if (i != sock) close (i); @@ -681,8 +680,8 @@ gst_sopcast_src_monitor_main (GstSopcastSrc * src, pid_t ppid, int sock) int error; if (getppid () != ppid) { - GST_DEBUG_OBJECT (src, "ppid changed %d -> %d", ppid, getppid ()); - break; + GST_DEBUG_OBJECT (src, "ppid changed %d -> %d", ppid, getppid ()); + break; } if (!gst_sopcast_src_helper_is_running (src)) { @@ -708,17 +707,17 @@ gst_sopcast_src_monitor_main (GstSopcastSrc * src, pid_t ppid, int sock) continue; if (FD_ISSET (sock, &efs)) { - GST_DEBUG_OBJECT (src, "player closed the sock."); - break; + GST_DEBUG_OBJECT (src, "player closed the sock."); + break; } if (FD_ISSET (sock, &rfs)) { do { - ret = recv (sock, buf, sizeof (buf), 0); + ret = recv (sock, buf, sizeof (buf), 0); } while (ret < 0 && errno == EINTR); if (ret < 0 || buf[0] == 'b') { - GST_DEBUG_OBJECT (src, "player said goodbye to me."); - break; + GST_DEBUG_OBJECT (src, "player said goodbye to me."); + break; } } } @@ -782,14 +781,15 @@ gst_sopcast_src_start (GstBaseSrc * bsrc) src = GST_SOPCAST_SRC (bsrc); if (!gst_sopcast_src_allocate_ports (src)) { - GST_ERROR_OBJECT (src, "Coudn't allocate two ports."); + GST_ERROR_OBJECT (src, _("Failed to allocate two tcp ports.")); return FALSE; } - GST_DEBUG_OBJECT (src, "localport: %d playerport: %d.", src->ports[0], src->ports[1]); + GST_DEBUG_OBJECT (src, "localport: %d playerport: %d.", src->ports[0], + src->ports[1]); src->heatebeat_fd = -1; if (!gst_sopcast_src_start_monitor (src)) { - GST_ERROR_OBJECT (src, "Coudn't fork the monitor subprocess."); + GST_ERROR_OBJECT (src, _("Failed to fork the monitor subprocess.")); return FALSE; } @@ -923,7 +923,7 @@ gst_sopcast_src_change_state (GstElement * element, GstStateChange transition) GST_DEBUG_OBJECT (scsrc, "NULL->READY"); break; case GST_STATE_CHANGE_READY_TO_PAUSED: - GST_DEBUG_OBJECT (scsrc, "READY->PAUSED"); + GST_DEBUG_OBJECT (scsrc, "READY->PAUSED"); break; case GST_STATE_CHANGE_PAUSED_TO_PLAYING: GST_DEBUG_OBJECT (scsrc, "PAUSED->PLAYING"); @@ -1019,6 +1019,4 @@ plugin_init (GstPlugin * plugin) GST_PLUGIN_DEFINE (GST_VERSION_MAJOR, GST_VERSION_MINOR, - "sopcast", - "sopcast stream src", - plugin_init, VERSION, "LGPL", PACKAGE, "") + "sopcast", "sopcast stream src", plugin_init, VERSION, "LGPL", PACKAGE, "") |