Installation Instructions
*************************
-Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
-2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+Copyright (C) 1994-1996, 1999-2002, 2004-2011 Free Software Foundation,
+Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
and if that doesn't work, install pre-built binaries of GCC for HP-UX.
+ HP-UX `make' updates targets which have the same time stamps as
+their prerequisites, which makes it generally unusable when shipped
+generated files such as `configure' are involved. Use GNU `make'
+instead.
+
On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
parse its `<wchar.h>' header file. The option `-nodtk' can be used as
a workaround. If GNU CC is not installed, it is therefore recommended
-SUBDIRS = po\
- src\
- icons/hicolor/scalable\
- icons/hicolor/14x14\
- icons/hicolor/16x16\
- icons/hicolor/22x22\
- icons/hicolor/24x24\
- icons/hicolor/32x32\
- icons/hicolor/48x48\
- icons/hicolor/64x64\
- icons/ubuntu-mono-dark/status/22\
- icons/ubuntu-mono-light/status/22\
- icons/ubuntu-mono-dark/apps/22\
- www\
- tests
+SUBDIRS = doc \
+ po \
+ src \
+ icons/hicolor/scalable \
+ icons/hicolor/14x14 \
+ icons/hicolor/16x16 \
+ icons/hicolor/22x22 \
+ icons/hicolor/24x24 \
+ icons/hicolor/32x32 \
+ icons/hicolor/48x48 \
+ icons/hicolor/64x64 \
+ icons/ubuntu-mono-dark/status/22 \
+ icons/ubuntu-mono-light/status/22 \
+ icons/ubuntu-mono-dark/apps/22 \
+ www \
+ tests
-dist_doc_DATA = README COPYING NEWS AUTHORS INSTALL
+dist_doc_DATA = AUTHORS \
+ COPYING \
+ INSTALL \
+ NEWS \
+ README \
+ README.html
autostartdir = $(sysconfdir)/xdg/autostart
autostart_DATA = psensor.desktop
EXTRA_DIST = $(desktop_DATA) $(autostart_DATA)
-
+README.html: README www/style.css
+ asciidoc --theme style -a themedir=`pwd`/www -n -a toc README
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@SET_MAKE@
VPATH = @srcdir@
+am__make_dryrun = \
+ { \
+ am__dry=no; \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
+ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+ *) \
+ for am__flg in $$MAKEFLAGS; do \
+ case $$am__flg in \
+ *=*|--*) ;; \
+ *n*) am__dry=yes; break;; \
+ esac; \
+ done;; \
+ esac; \
+ test $$am__dry = yes; \
+ }
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
DIST_COMMON = README $(am__configure_deps) $(dist_doc_DATA) \
$(srcdir)/Makefile.am $(srcdir)/Makefile.in \
$(srcdir)/config.h.in $(top_srcdir)/configure ABOUT-NLS \
- AUTHORS COPYING ChangeLog INSTALL NEWS compile config.guess \
- config.rpath config.sub depcomp install-sh missing
+ AUTHORS COPYING ChangeLog INSTALL NEWS ar-lib compile \
+ config.guess config.rpath config.sub depcomp install-sh \
+ missing
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
install-pdf-recursive install-ps-recursive install-recursive \
installcheck-recursive installdirs-recursive pdf-recursive \
ps-recursive uninstall-recursive
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
am__installdirs = "$(DESTDIR)$(autostartdir)" \
"$(DESTDIR)$(desktopdir)" "$(DESTDIR)$(docdir)"
DATA = $(autostart_DATA) $(desktop_DATA) $(dist_doc_DATA)
distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir)
am__remove_distdir = \
- { test ! -d "$(distdir)" \
- || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
- && rm -fr "$(distdir)"; }; }
+ if test -d "$(distdir)"; then \
+ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+ && rm -rf "$(distdir)" \
+ || { sleep 5 && rm -rf "$(distdir)"; }; \
+ else :; fi
am__relativize = \
dir0=`pwd`; \
sed_first='s,^\([^/]*\)/.*$$,\1,'; \
DIST_ARCHIVES = $(distdir).tar.gz
GZIP_ENV = --best
distuninstallcheck_listfiles = find . -type f -print
+am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
+ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
distcleancheck_listfiles = find . -type f -print
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
APPINDICATOR_CFLAGS = @APPINDICATOR_CFLAGS@
APPINDICATOR_LIBS = @APPINDICATOR_LIBS@
+AR = @AR@
+ATASMART_CFLAGS = @ATASMART_CFLAGS@
+ATASMART_LIBS = @ATASMART_LIBS@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+GCONFTOOL = @GCONFTOOL@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
+GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
+GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GTK_LIBS = @GTK_LIBS@
GTOP_CFLAGS = @GTOP_CFLAGS@
GTOP_LIBS = @GTOP_LIBS@
+HAVE_CPPCHECK = @HAVE_CPPCHECK@
HELP2MAN = @HELP2MAN@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
POSUB = @POSUB@
+PTHREAD_LIBS = @PTHREAD_LIBS@
RANLIB = @RANLIB@
SENSORS_LIBS = @SENSORS_LIBS@
SET_MAKE = @SET_MAKE@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
-SUBDIRS = po\
- src\
- icons/hicolor/scalable\
- icons/hicolor/14x14\
- icons/hicolor/16x16\
- icons/hicolor/22x22\
- icons/hicolor/24x24\
- icons/hicolor/32x32\
- icons/hicolor/48x48\
- icons/hicolor/64x64\
- icons/ubuntu-mono-dark/status/22\
- icons/ubuntu-mono-light/status/22\
- icons/ubuntu-mono-dark/apps/22\
- www\
- tests
-
-dist_doc_DATA = README COPYING NEWS AUTHORS INSTALL
+SUBDIRS = doc \
+ po \
+ src \
+ icons/hicolor/scalable \
+ icons/hicolor/14x14 \
+ icons/hicolor/16x16 \
+ icons/hicolor/22x22 \
+ icons/hicolor/24x24 \
+ icons/hicolor/32x32 \
+ icons/hicolor/48x48 \
+ icons/hicolor/64x64 \
+ icons/ubuntu-mono-dark/status/22 \
+ icons/ubuntu-mono-light/status/22 \
+ icons/ubuntu-mono-dark/apps/22 \
+ www \
+ tests
+
+dist_doc_DATA = AUTHORS \
+ COPYING \
+ INSTALL \
+ NEWS \
+ README \
+ README.html
+
autostartdir = $(sysconfdir)/xdg/autostart
autostart_DATA = psensor.desktop
desktopdir = $(datadir)/applications
$(MAKE) $(AM_MAKEFLAGS) all-recursive
.SUFFIXES:
-am--refresh:
+am--refresh: Makefile
@:
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
$(am__aclocal_m4_deps):
config.h: stamp-h1
- @if test ! -f $@; then \
- rm -f stamp-h1; \
- $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
- else :; fi
+ @if test ! -f $@; then rm -f stamp-h1; else :; fi
+ @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi
stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
@rm -f stamp-h1
-rm -f config.h stamp-h1
install-autostartDATA: $(autostart_DATA)
@$(NORMAL_INSTALL)
- test -z "$(autostartdir)" || $(MKDIR_P) "$(DESTDIR)$(autostartdir)"
@list='$(autostart_DATA)'; test -n "$(autostartdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(autostartdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(autostartdir)" || exit 1; \
+ fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
@$(NORMAL_UNINSTALL)
@list='$(autostart_DATA)'; test -n "$(autostartdir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
- test -n "$$files" || exit 0; \
- echo " ( cd '$(DESTDIR)$(autostartdir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(autostartdir)" && rm -f $$files
+ dir='$(DESTDIR)$(autostartdir)'; $(am__uninstall_files_from_dir)
install-desktopDATA: $(desktop_DATA)
@$(NORMAL_INSTALL)
- test -z "$(desktopdir)" || $(MKDIR_P) "$(DESTDIR)$(desktopdir)"
@list='$(desktop_DATA)'; test -n "$(desktopdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(desktopdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(desktopdir)" || exit 1; \
+ fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
@$(NORMAL_UNINSTALL)
@list='$(desktop_DATA)'; test -n "$(desktopdir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
- test -n "$$files" || exit 0; \
- echo " ( cd '$(DESTDIR)$(desktopdir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(desktopdir)" && rm -f $$files
+ dir='$(DESTDIR)$(desktopdir)'; $(am__uninstall_files_from_dir)
install-dist_docDATA: $(dist_doc_DATA)
@$(NORMAL_INSTALL)
- test -z "$(docdir)" || $(MKDIR_P) "$(DESTDIR)$(docdir)"
@list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(docdir)" || exit 1; \
+ fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
@$(NORMAL_UNINSTALL)
@list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
- test -n "$$files" || exit 0; \
- echo " ( cd '$(DESTDIR)$(docdir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(docdir)" && rm -f $$files
+ dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir)
# This directory's subdirectories are mostly independent; you can cd
# into them and run `make' without going through this Makefile.
done
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
- test -d "$(distdir)/$$subdir" \
- || $(MKDIR_P) "$(distdir)/$$subdir" \
- || exit 1; \
- fi; \
- done
- @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
- if test "$$subdir" = .; then :; else \
+ $(am__make_dryrun) \
+ || test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
$(am__relativize); \
new_distdir=$$reldir; \
$(am__remove_distdir)
dist-bzip2: distdir
- tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
+ tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
+ $(am__remove_distdir)
+
+dist-lzip: distdir
+ tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
$(am__remove_distdir)
dist-lzma: distdir
$(am__remove_distdir)
dist-xz: distdir
- tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz
+ tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
$(am__remove_distdir)
dist-tarZ: distdir
bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
*.tar.lzma*) \
lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
+ *.tar.lz*) \
+ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
*.tar.xz*) \
xz -dc $(distdir).tar.xz | $(am__untar) ;;\
*.tar.Z*) \
*.zip*) \
unzip $(distdir).zip ;;\
esac
- chmod -R a-w $(distdir); chmod a+w $(distdir)
+ chmod -R a-w $(distdir); chmod u+w $(distdir)
mkdir $(distdir)/_build
mkdir $(distdir)/_inst
chmod a-w $(distdir)
&& am__cwd=`pwd` \
&& $(am__cd) $(distdir)/_build \
&& ../configure --srcdir=.. --prefix="$$dc_install_base" \
+ $(AM_DISTCHECK_CONFIGURE_FLAGS) \
$(DISTCHECK_CONFIGURE_FLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
distuninstallcheck:
- @$(am__cd) '$(distuninstallcheck_dir)' \
- && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
+ @test -n '$(distuninstallcheck_dir)' || { \
+ echo 'ERROR: trying to run $@ with an empty' \
+ '$$(distuninstallcheck_dir)' >&2; \
+ exit 1; \
+ }; \
+ $(am__cd) '$(distuninstallcheck_dir)' || { \
+ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
+ exit 1; \
+ }; \
+ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
|| { echo "ERROR: files left after uninstall:" ; \
if test -n "$(DESTDIR)"; then \
echo " (check DESTDIR support)"; \
installcheck: installcheck-recursive
install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
mostlyclean-generic:
clean-generic:
.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
all all-am am--refresh check check-am clean clean-generic \
ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \
- dist-lzma dist-shar dist-tarZ dist-xz dist-zip distcheck \
- distclean distclean-generic distclean-hdr distclean-tags \
- distcleancheck distdir distuninstallcheck dvi dvi-am html \
- html-am info info-am install install-am install-autostartDATA \
- install-data install-data-am install-desktopDATA \
- install-dist_docDATA install-dvi install-dvi-am install-exec \
- install-exec-am install-html install-html-am install-info \
- install-info-am install-man install-pdf install-pdf-am \
- install-ps install-ps-am install-strip installcheck \
- installcheck-am installdirs installdirs-am maintainer-clean \
- maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
- pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \
- uninstall-autostartDATA uninstall-desktopDATA \
- uninstall-dist_docDATA
-
+ dist-lzip dist-lzma dist-shar dist-tarZ dist-xz dist-zip \
+ distcheck distclean distclean-generic distclean-hdr \
+ distclean-tags distcleancheck distdir distuninstallcheck dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-autostartDATA install-data install-data-am \
+ install-desktopDATA install-dist_docDATA install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ installdirs-am maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \
+ tags-recursive uninstall uninstall-am uninstall-autostartDATA \
+ uninstall-desktopDATA uninstall-dist_docDATA
+
+
+README.html: README www/style.css
+ asciidoc --theme style -a themedir=`pwd`/www -n -a toc README
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
+* v0.8.0.4
+
+** Added calling script when an alarm is raised.
+** Reordering of the list of sensors.
+** Added keywords in .desktop file.
+** Added LFS support.
+** Fixed compilation issue for x32 architecture on 64bits systems.
+** Merged German translation from LP (Dennis Baudys).
+** Merged Spanish translation from LP (Javier).
+** Merged French translation from LP (londumas).
+** Merged Brazilian translation from LP (Celio Alves).
+
+* v0.8.0.3
+
+** Switched to GtkColorChooserDialog instead of the
+ deprecated widget GtkColorSelectionDialog. (LP: #1184442)
+** psensor-server: fixed compilation without gtop2 lib.
+
+* v0.8.0.2
+
+** GConf2/GTK/XEXT/X11 lib optional to allow psensor-server
+ compilation without them.
+** Added support of libjson-c.
+** merged German translation from LP (Dennis Baudys).
+** merged Latvian translation from LP (tuxmaniack).
+
+* v0.8.0.1
+
+** added AMD GPU usage sensor (Contribution from MestreLion).
+** added support of sensors log interval.
+** psensor-server: protocole changes, API version incremented.
+** fixed cpu load when fahrenheit is enabled.
+** list of sensors can be reordered using the sensor preferences
+ dialog.
+** merged Spanish translation from LP (Javier) and Tomeu R. .
+** merged French translation from LP (Hélion du Mas des Bourboux).
+** merged Italian translation from LP (Diego Pierotto).
+** merged Brazillian Portugues translation from LP (MestreLion).
+** fixed the quit menu of the application indicator which was
+ not translatable.
+
+* v07.0.5
+
+** fixed cpu load when fahrenheit is enabled.
+
+* v0.7.0.4
+
+** added Spanish translation from LP (Javier and Eduardo Alberto
+ Calvo).
+** merged German translation from LP (Dennis Baudys).
+** merged French translation from LP (Alain-OIivier Breysse).
+** merged Hungarian from translation LP (Bence Lukács).
+** merged Latvian translation from LP (tuxmaniack).
+** merged Portuguese translation from LP (Daniel Serafim).
+** merged Russian translation from LP (Ilya Volchanetskiy).
+** merged Ukrainian translation from LP (Ilya Volchanetskiy).
+** merged Chinese translation from LP (Wang Dianjin).
+** psensor: fixed 'appindicator enabled' option not working correctly
+ for cpu usage. The option was inversed each time it is displayed in
+ the preference dialog.
+** psensor: added an option to enable logging of sensors
+ ($HOME/.psensor/sensors.log).
+** psensor-server: added sensors logging (--sensor-log-file).
+** psensor: display the name of chip in sensor preferences.
+** psensor: moved the sensor id into a expendable frame of the sensor
+ preferences.
+** test target is now running cppcheck if available.
+** fixed cppcheck reported errors (realloc and not freed var).
+** fixed cppcheck (old values not used).
+** added faq (requires asciidoc to build the html version).
+** check target is now running cppcheck if installed.
+** display a message if no graphs are enabled (Closes #689355).
+** psensor: when 'hide window on startup' is set, it will
+ hide the window only if psensor can register to application
+ indicator or systray. Waiting 30s before trying to do it
+ in order to have better chance that systray is running during
+ session startup.
+** fixed displaying of the fahrenheit temperature in the main
+ window.
+** fixed compilation error in amd.c (hdll not used).
+
+* v0.7.0.3
+
+** psensor: removed gettext_domain in psensor.schemas causing
+ warnings.
+** merged italian and russian translation from LP.
+
+* v0.7.0.2
+
+** psensor: added latvian translation file.
+** psensor: added gconf schema. (LP: #1026807)
+** psensor: hide sensors in the application indicator.
+** psensor: removed hicolor/48x48/psensor_hot.png. (LP: #1029065)
+** merge chinese translation from LP.
+
+* v0.7.0.1
+
+** psensor: minimum GTK version is now 3.0, GTK v2.x is no more
+ supported.
+** psensor: fixed sensor type displayed in sensor preferences
+ dialog. (Closes LP: #968912)
+** psensor: not calling g_thread_init when compiled with glib >= 2.31.
+** psensor: added basic instruction in the README for compiling psensor
+ with the ATI/AMD GPU support.
+** psensor: fixed compilation error on 64bits with ATI/AMD GPU support.
+** psensor: added capability to use libatasmart for sata disk monitoring.
+** psensor: added option --use-libatasmart.
+** changed copyright dates to 2012.
+** psensor: fixed systray and application indicator visible at the
+ same time. (Closes LP: #971098)
+** psensor: fixed wrong background color, get the background color of
+ the window and not the canvas widget. (Closes LP: #973122)
+** psensor: used the foreground color defined by the theme for the
+ font of the graph legend.
+** psensor: used tab layout for psensor preferences.
+** psensor: temperature unit choice (celcius/fahrenheit).
+** psensor-server: fixed --wdir option.
+** psensor-server: added log level to -d option.
+** psensor-server: added --log-file option.
+** psensor-server: logged measures when log level is 3.
+** psensor: fixed many memory leaks in cfg.c (gconf2 keys).
+** psensor: fixed memory leak (sensor name when specified by the
+ configuration).
+** psensor: implemented the psensor uniquess, non-primary psensor
+ instances show the window of the primary psensor instance and
+ exits.
+** many code quality improvements.
+** psensor: added --new-instance option to allow the creation of
+ multiple instances of Psensor.
+** psensor: added the degree sign before the temperature symbols
+ (Closes LP: #1021900).
+** psensor: alarm limit edition using the temperature unit set in the
+ global pref.
+** psensor: improved notification (added psensor icon and value of the
+ sensor).
+** full french and hungarian translation.
+** merged some chinese translation provided by LP.
+** added translation files for Brazilian Portuguese, and Italian.
+** partial translations for Russian, Serbian, Ukrainian, Slovenian and
+ German.
+** psensor: fixed i18n support for the application indicator menu.
+** psensor: fixed i18n support for the application menu.
+** psensor: added low thresold support for alerts.
+** psensor: added fan alert support.
+** psensor: fixed hide window on startup for gnome-shell (Closes:
+ #676361).
+
+* v0.6.2.19
+
+** psensor: fixed size of the icon hicolor/48x48/psensor_hot.png.
+ (LP: #1029065)
+
+* v0.6.2.18
+
+** added degree sign for celcius (Closes LP: #1021900).
+** added russian, brazilian, hungarian, serbian, slovenian,
+ italian, ukrainian and german translation files.
+** merged translations from LP.
+** psensor: fixed hide window on startup for gnome-shell (Closes:
+ #676361).
+
* v0.6.2.17
-** psensor: fixed sensor type displayed in sensor preferences dialog.
+** psensor: fixed sensor type displayed in sensor preferences
+ dialog. (Closes LP: #968912)
** psensor: fixed compilation error on 64bits with ATI/AMD GPU support.
** psensor: not calling g_thread_init when compiled with glib >= 2.31.
** changed copyright dates to 2012.
-Psensor - Temperature Monitoring For Linux
-------------------------------------------
+Psensor README
+==============
-Psensor is a graphical temperature monitor for Linux.
+Introduction
+------------
+
+Psensor is a graphical hardware monitoring application for Linux.
-It can monitor:
+It draws realtime charts and raises alerts about:
* the temperature of the motherboard and CPU sensors (using
lm-sensors).
* the temperature of the NVidia GPUs (using XNVCtrl).
- * the temperature of the Hard Disk Drives (using hddtemp).
+ * the temperature of the Hard Disk Drives (using hddtemp or libatasmart).
* the rotation speed of the fans (using lm-sensors).
* the temperature of a remote computer.
* the cpu load.
-Alarms using Desktop Notification can be set to each sensor to notify
-high temperatures.
+Alerts are using Desktop Notification and a specific GTK+ status icon.
-For Ubuntu users, Psensor is providing an Application Indicator to
-alert users when a temperature is too high.
+For Ubuntu users, Psensor is providing an Application Indicator which turns
+red under alert and a menu for quickly check all sensors.
-To monitor the temperature of a remote computer:
+It is possible to monitor remotely a computer:
- * start psensor-server on the remote computer. The default port is
- 3131 and can be changed by using the '--port=PORT' command line
- option.
+ * start +psensor-server+ on the remote computer.
- * start psensor with the '--url' option: psensor
- --url=http://hostname:3131
+ * start +psensor+ using: +psensor --url=http://hostname:3131+.
-WARNING:
-psensor-server does not provide any way to restrict the connection to
-the HTTP server, worst, no effort has been made against malicious HTTP
-attacks. You should make the psensor-server port available only to a
-network or computer you trust by using the usual network security
-tools of the system (for example, iptables).
++psensor-server+ is a minimal Web server, a Web browser can be used to
+monitor the remote computer by opening the URL:
++http://hostname:3131+.
+[WARNING]
++psensor-server+ does not provide any way to restrict the connection
+to the HTTP server, worst, no effort has been made against malicious
+HTTP attacks. You should make the +psensor-server+ port available
+only to a network or computer you trust by using the usual network
+security tools of the system (for example:
+http://www.netfilter.org/projects/iptables/index.html[iptables]).
-Installation
-------------
-
-Psensor can be compiled and installed on any modern linux
-distribution.
+Installation Using Distribution Packages
+----------------------------------------
Debian
-------
+~~~~~~
-For Debian, the binary and source packages are available in the wheezy
-(testing) and sid (unstable) repositories.
+For Debian, the binary and source packages are available in the
+Wheezy, unstable and testing repositories.
-Debian package information are available at:
-http://packages.qa.debian.org/p/psensor.html
+Debian package information is available at:
+http://packages.qa.debian.org/p/psensor.html.
-Compilation requires the following packages:
-
-gettext libgtk-3-dev libgconf2-dev libnotify-dev libsensors4-dev
-help2man libcurl4-openssl-dev libjson0-dev libmicrohttpd-dev
-libgtop2-dev
-
-Debian kfreebsd
----------------
-
-Compilation requires the following packages:
-gcc libgtk2.0-dev libsensors4-dev libgconf2-dev help2man
-libcurl4-openssl-dev libjson0-dev libmicrohttpd-dev libgtop2-dev
+To do the installation:
+--------------------------------------------
+sudo apt-get install psensor psensor-server
+--------------------------------------------
Ubuntu
-------
-
-Notes about installation on Ubuntu is available at:
-http://wpitchoune.net/blog/psensor/ubuntu-integration
+~~~~~~
Since Ubuntu Oneiric (11.10), psensor is available in the universe
repository of Ubuntu.
-For other Ubuntu releases, the easy way to install Psensor and
-Psensor-server is to use the dedicated PPA.
+To install +psensor+ or +psensor-server+:
+------------------------------------
+sudo apt-get install psensor
+sudo apt-get install psensor-server
+------------------------------------
+
+Or search them in the Ubuntu Software Center.
-For the last stable version:
+For other Ubuntu releases or user the more recent release, the easiest
+way is to use the dedicated PPA.
+
+Last stable version:
+-------------------------------------------------
sudo apt-get apt-add-repository ppa:/jfi/psensor
sudo apt-get update
sudo apt-get install psensor
+sudo apt-get install psensor-server
+-------------------------------------------------
-For the last development version:
+Last development version which should not contain major bugs:
+----------------------------------------------------------
sudo apt-get apt-add-repository ppa:/jfi/psensor-unstable
sudo apt-get update
sudo apt-get install psensor
sudo apt-get install psensor-server
+----------------------------------------------------------
-Alternatively, you can download Ubuntu binary packages from:
-http://wpitchoune.net/psensor/files/ubuntu/
-The manual installation of the psensor and psensor-server packages
-requires also the installation of psensor-common which contains
-the multiple languages support.
-
-Centos 6
---------
+Daily trunk build which may contain major bugs and partialy
+implemented features:
+-------------------------------------------------------------
+sudo apt-get apt-add-repository ppa:/jfi/psensor-daily-trunk
+sudo apt-get update
+sudo apt-get install psensor
+sudo apt-get install psensor-server
+-------------------------------------------------------------
-psensor can be compiled on Centos 6.0, by installing the following
-packages:
-gcc gtk2-devel GConf2-devel help2man gettext-devel libnotify-deval
-lm_sensors-devel libgtop2-devel
+Installation From Source Archive
+--------------------------------
-As microhttpd and json-c libraries are not available in the standard centos
-repository, psensor-server cannot be compiled and the remote
-monitoring feature of psensor will not be available.
++psensor+ and +psensor-server+ can be compiled and installed on any
+modern GNU/Linux distribution.
-Installation from source archive
---------------------------------
+Compilation Prerequisites
+~~~~~~~~~~~~~~~~~~~~~~~~~
-Psensor compilation requires:
+The compilation of +psensor+ requires:
- * make/gcc
+ * make
+ * gcc (or llvm)
* lm-sensors
* library sensors4
- * library gtk2 (>= 2.18)
+ * library gtk3 >=3.4
* library gconf2
* help2man
+ * asciidoc (optional, required to produce the html version of the
+ faq)
+ * cppcheck (optional, static source checker)
* library libnotify (optional)
* library libappindicator (optional)
* library libXNVCtrl (optional)
* library json0 and curl (optional, required for remote monitoring)
* library unity (>=v3.4.2, optional)
* library gtop2 (optional, required for CPU usage)
+ * library atasmart (optional, for disk monitoring)
+
+The specific requirements for +psensor-server+:
-Psensor-server compilation requires:
- * make/gcc
- * lm-sensors
- * library sensors4
- * help2man
* library libmicrohttpd
* library json0
- * library gtop2 (optional, required for CPU usage)
+
+For Debian 7.0:
+-----------------------------------------------------------------
+sudo apt-get install asciidoc cppcheck gcc gettext libgtk-3-dev
+libgconf2-dev libnotify-dev libsensors4-dev help2man
+libcurl4-openssl-dev libjson0-dev libmicrohttpd-dev libgtop2-dev
+libatasmart-dev make
+-----------------------------------------------------------------
+
+For Fedora 17:
+-----------------------------------------------------------------------
+sudo yum install gcc gtk3-devel GConf2-devel lm_sensors-devel cppcheck
+libatasmart-devel libcurl-devel json-c-devel libmicrohttpd-devel
+help2man libnotify-devel libgtop2-devel make
+-----------------------------------------------------------------------
+
+For Ubuntu 12.10:
+-------------------------------------------------------------------------
+sudo apt-get install asciidoc autoconf automake autopoint
+debhelper (>= 9) cppcheck gettext help2man libappindicator3-dev
+libatasmart-dev libcurl4-gnutls-dev libgconf2-dev libgtk-3-dev
+libgtop2-dev libjson0-dev libmicrohttpd-dev libnotify-dev
+libsensors4-dev libunity-dev nvidia-settings perl
+
+-------------------------------------------------------------------------
Compilation and Installation Steps
-----------------------------------
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+1. download the source archive from: http://wpitchoune.net/psensor/files
+2. Extract files from the source archive
+3. Compilation: +./configure;make clean all+
+4. Installation: +make install+ (require to have root permission)
+5. Start the sensor detection script: +sensors-detect+ and follows the
+instructions. Reboot or activate the kernel modules which have
+been found.
+6. To monitor HDDs, the +hddtemp+ daemon must be installed and running.
+7. Run: +psensor+
- * Extract files from the source archive
- * Compilation:
- ./configure
- make clean all
-
- * Installation:
- make install
+ATI/AMD GPU Support
+~~~~~~~~~~~~~~~~~~~
- * Start the sensor detection script: 'sensors-detect' and follows the
- instructions
+When the OpenSource ATI driver is used, the monitoring
+information is available throw lm-sensors and does not require the
+following instructions.
- * Verify the sensor detection by running: 'sensors'
+When the proprietary ATI driver(Catalyst) is used, the build is
+requiring an additional library.
- * Run 'psensor'
+Download the
+http://developer.amd.com/sdks/ADLSDK/Pages/default.aspx[ATI ADL SDK]
+and extracts the files of the archive into a directory [dir].
+
+Replace the step 3. of the above section by +./configure
+--with-libatiadl=[dir]+ where +[dir]+ must be the directory where you
+have extracted the ATI ADL SDK. Other steps are indentical.
Contact
-------
-Bugs and comments can be sent to jeanfi@gmail.com
+
+Bugs and comments can be sent to jeanfi@gmail.com.
+
Home page: http://wpitchoune.net/psensor
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 8.6.7" />\r
+<title>Psensor README</title>\r
+<style type="text/css">\r
+body {\r
+ padding: 1em 1em 1em 1em;\r
+ font-family: "Ubuntu", sans-serif;\r
+ font-size: 100%;\r
+ font-style: normal;\r
+ font-weight: normal;\r
+ color: #000;\r
+ background-color: #fff;\r
+ margin: 0 0 0 0;\r
+}\r
+\r
+a {\r
+ color: #1982D1;\r
+ font-style: normal;\r
+ text-decoration: none;\r
+}\r
+\r
+a:hover {\r
+ text-decoration: underline;\r
+}\r
+\r
+h1 {\r
+ font-size: 140%;\r
+ font-style: normal;\r
+ font-weight: bold;\r
+ text-transform: uppercase;\r
+ margin: 0 0 1em 0;\r
+ padding: 0 0 0 0;\r
+}\r
+\r
+\r
+h2, #toctitle{\r
+ font-size: 110%;\r
+ font-style: normal;\r
+ font-weight: bold;\r
+ text-transform: uppercase;\r
+ margin: 2em 0em 1em 0em;\r
+ padding: 0 0 0 0;\r
+}\r
+\r
+#footer {\r
+ padding-top: 2em;\r
+ color: #666;\r
+ clear: both;\r
+ text-align: right;\r
+ font-size: 75%;\r
+}\r
+\r
+p {\r
+ font-size: 100%;\r
+ margin-bottom: 8px;\r
+}\r
+\r
+table {\r
+ text-align: left;\r
+ padding: 0 0 0 0;\r
+ min-width: 50%;\r
+ border-spacing: 0;\r
+ border: 0;\r
+}\r
+\r
+thead {\r
+ background-color: #000;\r
+ color: #fff;\r
+ padding: 0 0 0 0;\r
+}\r
+\r
+tbody {\r
+ padding: 0 0 0 0;\r
+}\r
+\r
+th {\r
+ padding: 0.25em 0.5em 0.25em 0.5em;\r
+ font-style: normal;\r
+ font-weight: normal;\r
+}\r
+\r
+td {\r
+ padding: 0.25em 0.25em 0em 0.25em;\r
+}\r
+\r
+#chart {\r
+ color: #000;\r
+ font-style: normal;\r
+ font-weight: normal;\r
+ width: 100%;\r
+ height: 300px;\r
+}\r
+\r
+ul#menu-list li {\r
+ list-style: none;\r
+}\r
+\r
+#menu-list {\r
+ padding: 0 0 0 0;\r
+ margin: 0 0 0 0;\r
+}\r
+\r
+#menu {\r
+ float: left;\r
+ width: 20%;\r
+ padding: 0 0 0 0;\r
+ margin: 0 0 0 0;\r
+}\r
+\r
+#main {\r
+ float: right;\r
+ width: 80%;\r
+ padding: 0 0 0 0;\r
+ margin: 0 0em 0 0;\r
+}\r
+\r
+em {\r
+ font-weight: bold;\r
+ font-style: normal;\r
+}\r
+\r
+#uptime {\r
+ font-weight: normal;\r
+}\r
+\r
+#menu-list em {\r
+ text-transform: uppercase;\r
+}\r
+\r
+#menu ul li {\r
+ padding-bottom: 1em;\r
+}\r
+\r
+#menu-list ul li {\r
+ padding: 0 0 0 0em;\r
+}\r
+\r
+</style>\r
+<script type="text/javascript">\r
+/*<![CDATA[*/\r
+var asciidoc = { // Namespace.\r
+\r
+/////////////////////////////////////////////////////////////////////\r
+// Table Of Contents generator\r
+/////////////////////////////////////////////////////////////////////\r
+\r
+/* Author: Mihai Bazon, September 2002\r
+ * http://students.infoiasi.ro/~mishoo\r
+ *\r
+ * Table Of Content generator\r
+ * Version: 0.4\r
+ *\r
+ * Feel free to use this script under the terms of the GNU General Public\r
+ * License, as long as you do not remove or alter this notice.\r
+ */\r
+\r
+ /* modified by Troy D. Hanson, September 2006. License: GPL */\r
+ /* modified by Stuart Rackham, 2006, 2009. License: GPL */\r
+\r
+// toclevels = 1..4.\r
+toc: function (toclevels) {\r
+\r
+ function getText(el) {\r
+ var text = "";\r
+ for (var i = el.firstChild; i != null; i = i.nextSibling) {\r
+ if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.\r
+ text += i.data;\r
+ else if (i.firstChild != null)\r
+ text += getText(i);\r
+ }\r
+ return text;\r
+ }\r
+\r
+ function TocEntry(el, text, toclevel) {\r
+ this.element = el;\r
+ this.text = text;\r
+ this.toclevel = toclevel;\r
+ }\r
+\r
+ function tocEntries(el, toclevels) {\r
+ var result = new Array;\r
+ var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');\r
+ // Function that scans the DOM tree for header elements (the DOM2\r
+ // nodeIterator API would be a better technique but not supported by all\r
+ // browsers).\r
+ var iterate = function (el) {\r
+ for (var i = el.firstChild; i != null; i = i.nextSibling) {\r
+ if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {\r
+ var mo = re.exec(i.tagName);\r
+ if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {\r
+ result[result.length] = new TocEntry(i, getText(i), mo[1]-1);\r
+ }\r
+ iterate(i);\r
+ }\r
+ }\r
+ }\r
+ iterate(el);\r
+ return result;\r
+ }\r
+\r
+ var toc = document.getElementById("toc");\r
+ if (!toc) {\r
+ return;\r
+ }\r
+\r
+ // Delete existing TOC entries in case we're reloading the TOC.\r
+ var tocEntriesToRemove = [];\r
+ var i;\r
+ for (i = 0; i < toc.childNodes.length; i++) {\r
+ var entry = toc.childNodes[i];\r
+ if (entry.nodeName.toLowerCase() == 'div'\r
+ && entry.getAttribute("class")\r
+ && entry.getAttribute("class").match(/^toclevel/))\r
+ tocEntriesToRemove.push(entry);\r
+ }\r
+ for (i = 0; i < tocEntriesToRemove.length; i++) {\r
+ toc.removeChild(tocEntriesToRemove[i]);\r
+ }\r
+\r
+ // Rebuild TOC entries.\r
+ var entries = tocEntries(document.getElementById("content"), toclevels);\r
+ for (var i = 0; i < entries.length; ++i) {\r
+ var entry = entries[i];\r
+ if (entry.element.id == "")\r
+ entry.element.id = "_toc_" + i;\r
+ var a = document.createElement("a");\r
+ a.href = "#" + entry.element.id;\r
+ a.appendChild(document.createTextNode(entry.text));\r
+ var div = document.createElement("div");\r
+ div.appendChild(a);\r
+ div.className = "toclevel" + entry.toclevel;\r
+ toc.appendChild(div);\r
+ }\r
+ if (entries.length == 0)\r
+ toc.parentNode.removeChild(toc);\r
+},\r
+\r
+\r
+/////////////////////////////////////////////////////////////////////\r
+// Footnotes generator\r
+/////////////////////////////////////////////////////////////////////\r
+\r
+/* Based on footnote generation code from:\r
+ * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html\r
+ */\r
+\r
+footnotes: function () {\r
+ // Delete existing footnote entries in case we're reloading the footnodes.\r
+ var i;\r
+ var noteholder = document.getElementById("footnotes");\r
+ if (!noteholder) {\r
+ return;\r
+ }\r
+ var entriesToRemove = [];\r
+ for (i = 0; i < noteholder.childNodes.length; i++) {\r
+ var entry = noteholder.childNodes[i];\r
+ if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")\r
+ entriesToRemove.push(entry);\r
+ }\r
+ for (i = 0; i < entriesToRemove.length; i++) {\r
+ noteholder.removeChild(entriesToRemove[i]);\r
+ }\r
+\r
+ // Rebuild footnote entries.\r
+ var cont = document.getElementById("content");\r
+ var spans = cont.getElementsByTagName("span");\r
+ var refs = {};\r
+ var n = 0;\r
+ for (i=0; i<spans.length; i++) {\r
+ if (spans[i].className == "footnote") {\r
+ n++;\r
+ var note = spans[i].getAttribute("data-note");\r
+ if (!note) {\r
+ // Use [\s\S] in place of . so multi-line matches work.\r
+ // Because JavaScript has no s (dotall) regex flag.\r
+ note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];\r
+ spans[i].innerHTML =\r
+ "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +\r
+ "' title='View footnote' class='footnote'>" + n + "</a>]";\r
+ spans[i].setAttribute("data-note", note);\r
+ }\r
+ noteholder.innerHTML +=\r
+ "<div class='footnote' id='_footnote_" + n + "'>" +\r
+ "<a href='#_footnoteref_" + n + "' title='Return to text'>" +\r
+ n + "</a>. " + note + "</div>";\r
+ var id =spans[i].getAttribute("id");\r
+ if (id != null) refs["#"+id] = n;\r
+ }\r
+ }\r
+ if (n == 0)\r
+ noteholder.parentNode.removeChild(noteholder);\r
+ else {\r
+ // Process footnoterefs.\r
+ for (i=0; i<spans.length; i++) {\r
+ if (spans[i].className == "footnoteref") {\r
+ var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");\r
+ href = href.match(/#.*/)[0]; // Because IE return full URL.\r
+ n = refs[href];\r
+ spans[i].innerHTML =\r
+ "[<a href='#_footnote_" + n +\r
+ "' title='View footnote' class='footnote'>" + n + "</a>]";\r
+ }\r
+ }\r
+ }\r
+},\r
+\r
+install: function(toclevels) {\r
+ var timerId;\r
+\r
+ function reinstall() {\r
+ asciidoc.footnotes();\r
+ if (toclevels) {\r
+ asciidoc.toc(toclevels);\r
+ }\r
+ }\r
+\r
+ function reinstallAndRemoveTimer() {\r
+ clearInterval(timerId);\r
+ reinstall();\r
+ }\r
+\r
+ timerId = setInterval(reinstall, 500);\r
+ if (document.addEventListener)\r
+ document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);\r
+ else\r
+ window.onload = reinstallAndRemoveTimer;\r
+}\r
+\r
+}\r
+asciidoc.install(2);\r
+/*]]>*/\r
+</script>\r
+</head>\r
+<body class="article">\r
+<div id="header">\r
+<h1>Psensor README</h1>\r
+<div id="toc">
+ <div id="toctitle">Table of Contents</div>
+ <noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript>
+</div>\r
+</div>\r
+<div id="content">\r
+<div class="sect1">\r
+<h2 id="_introduction">1. Introduction</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Psensor is a graphical hardware monitoring application for Linux.</p></div>\r
+<div class="paragraph"><p>It draws realtime charts and raises alerts about:</p></div>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+the temperature of the motherboard and CPU sensors (using\r
+ lm-sensors).\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+the temperature of the NVidia GPUs (using XNVCtrl).\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+the temperature of the Hard Disk Drives (using hddtemp or libatasmart).\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+the rotation speed of the fans (using lm-sensors).\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+the temperature of a remote computer.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+the cpu load.\r
+</p>\r
+</li>\r
+</ul></div>\r
+<div class="paragraph"><p>Alerts are using Desktop Notification and a specific GTK+ status icon.</p></div>\r
+<div class="paragraph"><p>For Ubuntu users, Psensor is providing an Application Indicator which turns\r
+red under alert and a menu for quickly check all sensors.</p></div>\r
+<div class="paragraph"><p>It is possible to monitor remotely a computer:</p></div>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+start <tt>psensor-server</tt> on the remote computer.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+start <tt>psensor</tt> using: <tt>psensor --url=http://hostname:3131</tt>.\r
+</p>\r
+</li>\r
+</ul></div>\r
+<div class="paragraph"><p><tt>psensor-server</tt> is a minimal Web server, a Web browser can be used to\r
+monitor the remote computer by opening the URL:\r
+<tt>http://hostname:3131</tt>.</p></div>\r
+<div class="admonitionblock">\r
+<table><tr>\r
+<td class="icon">\r
+<div class="title">Warning</div>\r
+</td>\r
+<td class="content"><tt>psensor-server</tt> does not provide any way to restrict the connection\r
+to the HTTP server, worst, no effort has been made against malicious\r
+HTTP attacks. You should make the <tt>psensor-server</tt> port available\r
+only to a network or computer you trust by using the usual network\r
+security tools of the system (for example:\r
+<a href="http://www.netfilter.org/projects/iptables/index.html">iptables</a>).</td>\r
+</tr></table>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_installation_using_distribution_packages">2. Installation Using Distribution Packages</h2>\r
+<div class="sectionbody">\r
+<div class="sect2">\r
+<h3 id="_debian">2.1. Debian</h3>\r
+<div class="paragraph"><p>For Debian, the binary and source packages are available in the\r
+Wheezy, unstable and testing repositories.</p></div>\r
+<div class="paragraph"><p>Debian package information is available at:\r
+<a href="http://packages.qa.debian.org/p/psensor.html">http://packages.qa.debian.org/p/psensor.html</a>.</p></div>\r
+<div class="paragraph"><p>To do the installation:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>sudo apt-get install psensor psensor-server</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_ubuntu">2.2. Ubuntu</h3>\r
+<div class="paragraph"><p>Since Ubuntu Oneiric (11.10), psensor is available in the universe\r
+repository of Ubuntu.</p></div>\r
+<div class="paragraph"><p>To install <tt>psensor</tt> or <tt>psensor-server</tt>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>sudo apt-get install psensor\r
+sudo apt-get install psensor-server</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Or search them in the Ubuntu Software Center.</p></div>\r
+<div class="paragraph"><p>For other Ubuntu releases or user the more recent release, the easiest\r
+way is to use the dedicated PPA.</p></div>\r
+<div class="paragraph"><p>Last stable version:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>sudo apt-get apt-add-repository ppa:/jfi/psensor\r
+sudo apt-get update\r
+sudo apt-get install psensor\r
+sudo apt-get install psensor-server</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Last development version which should not contain major bugs:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>sudo apt-get apt-add-repository ppa:/jfi/psensor-unstable\r
+sudo apt-get update\r
+sudo apt-get install psensor\r
+sudo apt-get install psensor-server</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Daily trunk build which may contain major bugs and partialy\r
+implemented features:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>sudo apt-get apt-add-repository ppa:/jfi/psensor-daily-trunk\r
+sudo apt-get update\r
+sudo apt-get install psensor\r
+sudo apt-get install psensor-server</tt></pre>\r
+</div></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_installation_from_source_archive">3. Installation From Source Archive</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p><tt>psensor</tt> and <tt>psensor-server</tt> can be compiled and installed on any\r
+modern GNU/Linux distribution.</p></div>\r
+<div class="sect2">\r
+<h3 id="_compilation_prerequisites">3.1. Compilation Prerequisites</h3>\r
+<div class="paragraph"><p>The compilation of <tt>psensor</tt> requires:</p></div>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+make\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+gcc (or llvm)\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+lm-sensors\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+library sensors4\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+library gtk3 >=3.4\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+library gconf2\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+help2man\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+asciidoc (optional, required to produce the html version of the\r
+ faq)\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+cppcheck (optional, static source checker)\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+library libnotify (optional)\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+library libappindicator (optional)\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+library libXNVCtrl (optional)\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+library json0 and curl (optional, required for remote monitoring)\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+library unity (>=v3.4.2, optional)\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+library gtop2 (optional, required for CPU usage)\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+library atasmart (optional, for disk monitoring)\r
+</p>\r
+</li>\r
+</ul></div>\r
+<div class="paragraph"><p>The specific requirements for <tt>psensor-server</tt>:</p></div>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+library libmicrohttpd\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+library json0\r
+</p>\r
+</li>\r
+</ul></div>\r
+<div class="paragraph"><p>For Debian 7.0:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>sudo apt-get install asciidoc cppcheck gcc gettext libgtk-3-dev\r
+libgconf2-dev libnotify-dev libsensors4-dev help2man\r
+libcurl4-openssl-dev libjson0-dev libmicrohttpd-dev libgtop2-dev\r
+libatasmart-dev make</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>For Fedora 17:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>sudo yum install gcc gtk3-devel GConf2-devel lm_sensors-devel cppcheck\r
+libatasmart-devel libcurl-devel json-c-devel libmicrohttpd-devel\r
+help2man libnotify-devel libgtop2-devel make</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>For Ubuntu 12.10:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>sudo apt-get install asciidoc autoconf automake autopoint\r
+debhelper (>= 9) cppcheck gettext help2man libappindicator3-dev\r
+libatasmart-dev libcurl4-gnutls-dev libgconf2-dev libgtk-3-dev\r
+libgtop2-dev libjson0-dev libmicrohttpd-dev libnotify-dev\r
+libsensors4-dev libunity-dev nvidia-settings perl</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_compilation_and_installation_steps">3.2. Compilation and Installation Steps</h3>\r
+<div class="olist arabic"><ol class="arabic">\r
+<li>\r
+<p>\r
+download the source archive from: <a href="http://wpitchoune.net/psensor/files">http://wpitchoune.net/psensor/files</a>\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Extract files from the source archive\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Compilation: <tt>./configure;make clean all</tt>\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Installation: <tt>make install</tt> (require to have root permission)\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Start the sensor detection script: <tt>sensors-detect</tt> and follows the\r
+instructions. Reboot or activate the kernel modules which have\r
+been found.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+To monitor HDDs, the <tt>hddtemp</tt> daemon must be installed and running.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Run: <tt>psensor</tt>\r
+</p>\r
+</li>\r
+</ol></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_ati_amd_gpu_support">3.3. ATI/AMD GPU Support</h3>\r
+<div class="paragraph"><p>When the OpenSource ATI driver is used, the monitoring\r
+information is available throw lm-sensors and does not require the\r
+following instructions.</p></div>\r
+<div class="paragraph"><p>When the proprietary ATI driver(Catalyst) is used, the build is\r
+requiring an additional library.</p></div>\r
+<div class="paragraph"><p>Download the\r
+<a href="http://developer.amd.com/sdks/ADLSDK/Pages/default.aspx">ATI ADL SDK</a>\r
+and extracts the files of the archive into a directory [dir].</p></div>\r
+<div class="paragraph"><p>Replace the step 3. of the above section by <tt>./configure\r
+--with-libatiadl=[dir]</tt> where <tt>[dir]</tt> must be the directory where you\r
+have extracted the ATI ADL SDK. Other steps are indentical.</p></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_contact">4. Contact</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Bugs and comments can be sent to <a href="mailto:jeanfi@gmail.com">jeanfi@gmail.com</a>.</p></div>\r
+<div class="paragraph"><p>Home page: <a href="http://wpitchoune.net/psensor">http://wpitchoune.net/psensor</a></p></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div id="footnotes"><hr /></div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 2013-05-26 19:23:21 CEST\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
-# generated automatically by aclocal 1.11.1 -*- Autoconf -*-
+# generated automatically by aclocal 1.11.6 -*- Autoconf -*-
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+# 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation,
+# Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.68],,
-[m4_warning([this file was generated for autoconf 2.68.
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
+[m4_warning([this file was generated for autoconf 2.69.
You have another version of autoconf. It may work, but is not guaranteed to.
If you have problems, you may need to regenerate the build system entirely.
To do so, use the procedure documented by the package, typically `autoreconf'.])])
+dnl AM_GCONF_SOURCE_2
+dnl Defines GCONF_SCHEMA_CONFIG_SOURCE which is where you should install schemas
+dnl (i.e. pass to gconftool-2
+dnl Defines GCONF_SCHEMA_FILE_DIR which is a filesystem directory where
+dnl you should install foo.schemas files
+dnl
+
+AC_DEFUN([AM_GCONF_SOURCE_2],
+[
+ if test "x$GCONF_SCHEMA_INSTALL_SOURCE" = "x"; then
+ GCONF_SCHEMA_CONFIG_SOURCE=`gconftool-2 --get-default-source`
+ else
+ GCONF_SCHEMA_CONFIG_SOURCE=$GCONF_SCHEMA_INSTALL_SOURCE
+ fi
+
+ AC_ARG_WITH([gconf-source],
+ AC_HELP_STRING([--with-gconf-source=sourceaddress],
+ [Config database for installing schema files.]),
+ [GCONF_SCHEMA_CONFIG_SOURCE="$withval"],)
+
+ AC_SUBST(GCONF_SCHEMA_CONFIG_SOURCE)
+ AC_MSG_RESULT([Using config source $GCONF_SCHEMA_CONFIG_SOURCE for schema installation])
+
+ if test "x$GCONF_SCHEMA_FILE_DIR" = "x"; then
+ GCONF_SCHEMA_FILE_DIR='$(sysconfdir)/gconf/schemas'
+ fi
+
+ AC_ARG_WITH([gconf-schema-file-dir],
+ AC_HELP_STRING([--with-gconf-schema-file-dir=dir],
+ [Directory for installing schema files.]),
+ [GCONF_SCHEMA_FILE_DIR="$withval"],)
+
+ AC_SUBST(GCONF_SCHEMA_FILE_DIR)
+ AC_MSG_RESULT([Using $GCONF_SCHEMA_FILE_DIR as install directory for schema files])
+
+ AC_ARG_ENABLE(schemas-install,
+ AC_HELP_STRING([--disable-schemas-install],
+ [Disable the schemas installation]),
+ [case ${enableval} in
+ yes|no) ;;
+ *) AC_MSG_ERROR([bad value ${enableval} for --enable-schemas-install]) ;;
+ esac])
+ AM_CONDITIONAL([GCONF_SCHEMAS_INSTALL], [test "$enable_schemas_install" != no])
+])
+
# gettext.m4 serial 63 (gettext-0.18)
dnl Copyright (C) 1995-2010 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
AC_SUBST([$1])dnl
])
-# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008, 2011 Free Software
+# Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
+# serial 1
+
# AM_AUTOMAKE_VERSION(VERSION)
# ----------------------------
# Automake X.Y traces this macro to ensure aclocal.m4 has been
[am__api_version='1.11'
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
dnl require some minimum version. Point them to the right macro.
-m4_if([$1], [1.11.1], [],
+m4_if([$1], [1.11.6], [],
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
])
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.11.1])dnl
+[AM_AUTOMAKE_VERSION([1.11.6])dnl
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
+# Copyright (C) 2011 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 1
+
+# AM_PROG_AR([ACT-IF-FAIL])
+# -------------------------
+# Try to determine the archiver interface, and trigger the ar-lib wrapper
+# if it is needed. If the detection of archiver interface fails, run
+# ACT-IF-FAIL (default is to abort configure with a proper error message).
+AC_DEFUN([AM_PROG_AR],
+[AC_BEFORE([$0], [LT_INIT])dnl
+AC_BEFORE([$0], [AC_PROG_LIBTOOL])dnl
+AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([ar-lib])dnl
+AC_CHECK_TOOLS([AR], [ar lib "link -lib"], [false])
+: ${AR=ar}
+
+AC_CACHE_CHECK([the archiver ($AR) interface], [am_cv_ar_interface],
+ [am_cv_ar_interface=ar
+ AC_COMPILE_IFELSE([AC_LANG_SOURCE([[int some_variable = 0;]])],
+ [am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&AS_MESSAGE_LOG_FD'
+ AC_TRY_EVAL([am_ar_try])
+ if test "$ac_status" -eq 0; then
+ am_cv_ar_interface=ar
+ else
+ am_ar_try='$AR -NOLOGO -OUT:conftest.lib conftest.$ac_objext >&AS_MESSAGE_LOG_FD'
+ AC_TRY_EVAL([am_ar_try])
+ if test "$ac_status" -eq 0; then
+ am_cv_ar_interface=lib
+ else
+ am_cv_ar_interface=unknown
+ fi
+ fi
+ rm -f conftest.lib libconftest.a
+ ])
+ ])
+
+case $am_cv_ar_interface in
+ar)
+ ;;
+lib)
+ # Microsoft lib, so override with the ar-lib wrapper script.
+ # FIXME: It is wrong to rewrite AR.
+ # But if we don't then we get into trouble of one sort or another.
+ # A longer-term fix would be to have automake use am__AR in this case,
+ # and then we could set am__AR="$am_aux_dir/ar-lib \$(AR)" or something
+ # similar.
+ AR="$am_aux_dir/ar-lib $AR"
+ ;;
+unknown)
+ m4_default([$1],
+ [AC_MSG_ERROR([could not determine $AR interface])])
+ ;;
+esac
+AC_SUBST([AR])dnl
+])
+
# AM_AUX_DIR_EXPAND -*- Autoconf -*-
-# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
+# serial 1
+
# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
Usually this means the macro was only invoked conditionally.]])
fi])])
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009
-# Free Software Foundation, Inc.
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009,
+# 2010, 2011 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 10
+# serial 12
# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
# written in clear, in which case automake, when reading aclocal.m4,
# instance it was reported that on HP-UX the gcc test will end up
# making a dummy file named `D' -- because `-MD' means `put the output
# in D'.
+ rm -rf conftest.dir
mkdir conftest.dir
# Copy depcomp to subdir because otherwise we won't find it if we're
# using a relative directory.
break
fi
;;
- msvisualcpp | msvcmsys)
+ msvc7 | msvc7msys | msvisualcpp | msvcmsys)
# This compiler won't grok `-c -o', but also, the minuso test has
# not run yet. These depmodes are late enough in the game, and
# so weak that their functioning should not be impacted.
if test "x$enable_dependency_tracking" != xno; then
am_depcomp="$ac_aux_dir/depcomp"
AMDEPBACKSLASH='\'
+ am__nodep='_no'
fi
AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
AC_SUBST([AMDEPBACKSLASH])dnl
_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+AC_SUBST([am__nodep])dnl
+_AM_SUBST_NOTMAKE([am__nodep])dnl
])
# Generate code to set up dependency tracking. -*- Autoconf -*-
done
echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
-# Copyright (C) 2001, 2003, 2005, 2008 Free Software Foundation, Inc.
+# Copyright (C) 2001, 2003, 2005, 2008, 2011 Free Software Foundation,
+# Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
+# serial 1
+
# AM_PROG_INSTALL_SH
# ------------------
# Define $install_sh.
fi
])
-# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# Copyright (C) 2003, 2004, 2005, 2006, 2011 Free Software Foundation,
+# Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
+# serial 1
+
# AM_PROG_MKDIR_P
# ---------------
# Check for `mkdir -p'.
# Helper functions for option handling. -*- Autoconf -*-
-# Copyright (C) 2001, 2002, 2003, 2005, 2008 Free Software Foundation, Inc.
+# Copyright (C) 2001, 2002, 2003, 2005, 2008, 2010 Free Software
+# Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 4
+# serial 5
# _AM_MANGLE_OPTION(NAME)
# -----------------------
[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
# _AM_SET_OPTION(NAME)
-# ------------------------------
+# --------------------
# Set option NAME. Presently that only means defining a flag for this option.
AC_DEFUN([_AM_SET_OPTION],
[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
# _AM_SET_OPTIONS(OPTIONS)
-# ----------------------------------
+# ------------------------
# OPTIONS is a space-separated list of Automake options.
AC_DEFUN([_AM_SET_OPTIONS],
[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
fi
AC_MSG_RESULT(yes)])
-# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
+# serial 1
+
# AM_PROG_INSTALL_STRIP
# ---------------------
# One issue with vendor `install' (even GNU) is that you can't
INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
AC_SUBST([INSTALL_STRIP_PROGRAM])])
-# Copyright (C) 2006, 2008 Free Software Foundation, Inc.
+# Copyright (C) 2006, 2008, 2010 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 2
+# serial 3
# _AM_SUBST_NOTMAKE(VARIABLE)
# ---------------------------
AC_DEFUN([_AM_SUBST_NOTMAKE])
# AM_SUBST_NOTMAKE(VARIABLE)
-# ---------------------------
+# --------------------------
# Public sister of _AM_SUBST_NOTMAKE.
AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
# Check how to create a tarball. -*- Autoconf -*-
-# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
+# Copyright (C) 2004, 2005, 2012 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# a tarball read from stdin.
# $(am__untar) < result.tar
AC_DEFUN([_AM_PROG_TAR],
-[# Always define AMTAR for backward compatibility.
-AM_MISSING_PROG([AMTAR], [tar])
+[# Always define AMTAR for backward compatibility. Yes, it's still used
+# in the wild :-( We should find a proper way to deprecate it ...
+AC_SUBST([AMTAR], ['$${TAR-tar}'])
m4_if([$1], [v7],
- [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
+ [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
[m4_case([$1], [ustar],, [pax],,
[m4_fatal([Unknown tar format])])
AC_MSG_CHECKING([how to create a $1 tar archive])
--- /dev/null
+#! /bin/sh
+# Wrapper for Microsoft lib.exe
+
+me=ar-lib
+scriptversion=2012-03-01.08; # UTC
+
+# Copyright (C) 2010, 2012 Free Software Foundation, Inc.
+# Written by Peter Rosin <peda@lysator.liu.se>.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program 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 General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+
+# func_error message
+func_error ()
+{
+ echo "$me: $1" 1>&2
+ exit 1
+}
+
+file_conv=
+
+# func_file_conv build_file
+# Convert a $build file to $host form and store it in $file
+# Currently only supports Windows hosts.
+func_file_conv ()
+{
+ file=$1
+ case $file in
+ / | /[!/]*) # absolute file, and not a UNC file
+ if test -z "$file_conv"; then
+ # lazily determine how to convert abs files
+ case `uname -s` in
+ MINGW*)
+ file_conv=mingw
+ ;;
+ CYGWIN*)
+ file_conv=cygwin
+ ;;
+ *)
+ file_conv=wine
+ ;;
+ esac
+ fi
+ case $file_conv in
+ mingw)
+ file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
+ ;;
+ cygwin)
+ file=`cygpath -m "$file" || echo "$file"`
+ ;;
+ wine)
+ file=`winepath -w "$file" || echo "$file"`
+ ;;
+ esac
+ ;;
+ esac
+}
+
+# func_at_file at_file operation archive
+# Iterate over all members in AT_FILE performing OPERATION on ARCHIVE
+# for each of them.
+# When interpreting the content of the @FILE, do NOT use func_file_conv,
+# since the user would need to supply preconverted file names to
+# binutils ar, at least for MinGW.
+func_at_file ()
+{
+ operation=$2
+ archive=$3
+ at_file_contents=`cat "$1"`
+ eval set x "$at_file_contents"
+ shift
+
+ for member
+ do
+ $AR -NOLOGO $operation:"$member" "$archive" || exit $?
+ done
+}
+
+case $1 in
+ '')
+ func_error "no command. Try '$0 --help' for more information."
+ ;;
+ -h | --h*)
+ cat <<EOF
+Usage: $me [--help] [--version] PROGRAM ACTION ARCHIVE [MEMBER...]
+
+Members may be specified in a file named with @FILE.
+EOF
+ exit $?
+ ;;
+ -v | --v*)
+ echo "$me, version $scriptversion"
+ exit $?
+ ;;
+esac
+
+if test $# -lt 3; then
+ func_error "you must specify a program, an action and an archive"
+fi
+
+AR=$1
+shift
+while :
+do
+ if test $# -lt 2; then
+ func_error "you must specify a program, an action and an archive"
+ fi
+ case $1 in
+ -lib | -LIB \
+ | -ltcg | -LTCG \
+ | -machine* | -MACHINE* \
+ | -subsystem* | -SUBSYSTEM* \
+ | -verbose | -VERBOSE \
+ | -wx* | -WX* )
+ AR="$AR $1"
+ shift
+ ;;
+ *)
+ action=$1
+ shift
+ break
+ ;;
+ esac
+done
+orig_archive=$1
+shift
+func_file_conv "$orig_archive"
+archive=$file
+
+# strip leading dash in $action
+action=${action#-}
+
+delete=
+extract=
+list=
+quick=
+replace=
+index=
+create=
+
+while test -n "$action"
+do
+ case $action in
+ d*) delete=yes ;;
+ x*) extract=yes ;;
+ t*) list=yes ;;
+ q*) quick=yes ;;
+ r*) replace=yes ;;
+ s*) index=yes ;;
+ S*) ;; # the index is always updated implicitly
+ c*) create=yes ;;
+ u*) ;; # TODO: don't ignore the update modifier
+ v*) ;; # TODO: don't ignore the verbose modifier
+ *)
+ func_error "unknown action specified"
+ ;;
+ esac
+ action=${action#?}
+done
+
+case $delete$extract$list$quick$replace,$index in
+ yes,* | ,yes)
+ ;;
+ yesyes*)
+ func_error "more than one action specified"
+ ;;
+ *)
+ func_error "no action specified"
+ ;;
+esac
+
+if test -n "$delete"; then
+ if test ! -f "$orig_archive"; then
+ func_error "archive not found"
+ fi
+ for member
+ do
+ case $1 in
+ @*)
+ func_at_file "${1#@}" -REMOVE "$archive"
+ ;;
+ *)
+ func_file_conv "$1"
+ $AR -NOLOGO -REMOVE:"$file" "$archive" || exit $?
+ ;;
+ esac
+ done
+
+elif test -n "$extract"; then
+ if test ! -f "$orig_archive"; then
+ func_error "archive not found"
+ fi
+ if test $# -gt 0; then
+ for member
+ do
+ case $1 in
+ @*)
+ func_at_file "${1#@}" -EXTRACT "$archive"
+ ;;
+ *)
+ func_file_conv "$1"
+ $AR -NOLOGO -EXTRACT:"$file" "$archive" || exit $?
+ ;;
+ esac
+ done
+ else
+ $AR -NOLOGO -LIST "$archive" | sed -e 's/\\/\\\\/g' | while read member
+ do
+ $AR -NOLOGO -EXTRACT:"$member" "$archive" || exit $?
+ done
+ fi
+
+elif test -n "$quick$replace"; then
+ if test ! -f "$orig_archive"; then
+ if test -z "$create"; then
+ echo "$me: creating $orig_archive"
+ fi
+ orig_archive=
+ else
+ orig_archive=$archive
+ fi
+
+ for member
+ do
+ case $1 in
+ @*)
+ func_file_conv "${1#@}"
+ set x "$@" "@$file"
+ ;;
+ *)
+ func_file_conv "$1"
+ set x "$@" "$file"
+ ;;
+ esac
+ shift
+ shift
+ done
+
+ if test -n "$orig_archive"; then
+ $AR -NOLOGO -OUT:"$archive" "$orig_archive" "$@" || exit $?
+ else
+ $AR -NOLOGO -OUT:"$archive" "$@" || exit $?
+ fi
+
+elif test -n "$list"; then
+ if test ! -f "$orig_archive"; then
+ func_error "archive not found"
+ fi
+ $AR -NOLOGO -LIST "$archive" || exit $?
+fi
#! /bin/sh
-# Wrapper for compilers which do not understand `-c -o'.
+# Wrapper for compilers which do not understand '-c -o'.
-scriptversion=2009-10-06.20; # UTC
+scriptversion=2012-03-05.13; # UTC
-# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2009 Free Software
-# Foundation, Inc.
+# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2009, 2010, 2012 Free
+# Software Foundation, Inc.
# Written by Tom Tromey <tromey@cygnus.com>.
#
# This program is free software; you can redistribute it and/or modify
# bugs to <bug-automake@gnu.org> or send patches to
# <automake-patches@gnu.org>.
+nl='
+'
+
+# We need space, tab and new line, in precisely that order. Quoting is
+# there to prevent tools from complaining about whitespace usage.
+IFS=" "" $nl"
+
+file_conv=
+
+# func_file_conv build_file lazy
+# Convert a $build file to $host form and store it in $file
+# Currently only supports Windows hosts. If the determined conversion
+# type is listed in (the comma separated) LAZY, no conversion will
+# take place.
+func_file_conv ()
+{
+ file=$1
+ case $file in
+ / | /[!/]*) # absolute file, and not a UNC file
+ if test -z "$file_conv"; then
+ # lazily determine how to convert abs files
+ case `uname -s` in
+ MINGW*)
+ file_conv=mingw
+ ;;
+ CYGWIN*)
+ file_conv=cygwin
+ ;;
+ *)
+ file_conv=wine
+ ;;
+ esac
+ fi
+ case $file_conv/,$2, in
+ *,$file_conv,*)
+ ;;
+ mingw/*)
+ file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
+ ;;
+ cygwin/*)
+ file=`cygpath -m "$file" || echo "$file"`
+ ;;
+ wine/*)
+ file=`winepath -w "$file" || echo "$file"`
+ ;;
+ esac
+ ;;
+ esac
+}
+
+# func_cl_dashL linkdir
+# Make cl look for libraries in LINKDIR
+func_cl_dashL ()
+{
+ func_file_conv "$1"
+ if test -z "$lib_path"; then
+ lib_path=$file
+ else
+ lib_path="$lib_path;$file"
+ fi
+ linker_opts="$linker_opts -LIBPATH:$file"
+}
+
+# func_cl_dashl library
+# Do a library search-path lookup for cl
+func_cl_dashl ()
+{
+ lib=$1
+ found=no
+ save_IFS=$IFS
+ IFS=';'
+ for dir in $lib_path $LIB
+ do
+ IFS=$save_IFS
+ if $shared && test -f "$dir/$lib.dll.lib"; then
+ found=yes
+ lib=$dir/$lib.dll.lib
+ break
+ fi
+ if test -f "$dir/$lib.lib"; then
+ found=yes
+ lib=$dir/$lib.lib
+ break
+ fi
+ done
+ IFS=$save_IFS
+
+ if test "$found" != yes; then
+ lib=$lib.lib
+ fi
+}
+
+# func_cl_wrapper cl arg...
+# Adjust compile command to suit cl
+func_cl_wrapper ()
+{
+ # Assume a capable shell
+ lib_path=
+ shared=:
+ linker_opts=
+ for arg
+ do
+ if test -n "$eat"; then
+ eat=
+ else
+ case $1 in
+ -o)
+ # configure might choose to run compile as 'compile cc -o foo foo.c'.
+ eat=1
+ case $2 in
+ *.o | *.[oO][bB][jJ])
+ func_file_conv "$2"
+ set x "$@" -Fo"$file"
+ shift
+ ;;
+ *)
+ func_file_conv "$2"
+ set x "$@" -Fe"$file"
+ shift
+ ;;
+ esac
+ ;;
+ -I)
+ eat=1
+ func_file_conv "$2" mingw
+ set x "$@" -I"$file"
+ shift
+ ;;
+ -I*)
+ func_file_conv "${1#-I}" mingw
+ set x "$@" -I"$file"
+ shift
+ ;;
+ -l)
+ eat=1
+ func_cl_dashl "$2"
+ set x "$@" "$lib"
+ shift
+ ;;
+ -l*)
+ func_cl_dashl "${1#-l}"
+ set x "$@" "$lib"
+ shift
+ ;;
+ -L)
+ eat=1
+ func_cl_dashL "$2"
+ ;;
+ -L*)
+ func_cl_dashL "${1#-L}"
+ ;;
+ -static)
+ shared=false
+ ;;
+ -Wl,*)
+ arg=${1#-Wl,}
+ save_ifs="$IFS"; IFS=','
+ for flag in $arg; do
+ IFS="$save_ifs"
+ linker_opts="$linker_opts $flag"
+ done
+ IFS="$save_ifs"
+ ;;
+ -Xlinker)
+ eat=1
+ linker_opts="$linker_opts $2"
+ ;;
+ -*)
+ set x "$@" "$1"
+ shift
+ ;;
+ *.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
+ func_file_conv "$1"
+ set x "$@" -Tp"$file"
+ shift
+ ;;
+ *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
+ func_file_conv "$1" mingw
+ set x "$@" "$file"
+ shift
+ ;;
+ *)
+ set x "$@" "$1"
+ shift
+ ;;
+ esac
+ fi
+ shift
+ done
+ if test -n "$linker_opts"; then
+ linker_opts="-link$linker_opts"
+ fi
+ exec "$@" $linker_opts
+ exit 1
+}
+
+eat=
+
case $1 in
'')
- echo "$0: No command. Try \`$0 --help' for more information." 1>&2
+ echo "$0: No command. Try '$0 --help' for more information." 1>&2
exit 1;
;;
-h | --h*)
cat <<\EOF
Usage: compile [--help] [--version] PROGRAM [ARGS]
-Wrapper for compilers which do not understand `-c -o'.
-Remove `-o dest.o' from ARGS, run PROGRAM with the remaining
+Wrapper for compilers which do not understand '-c -o'.
+Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
arguments, and rename the output as expected.
If you are trying to build a whole package this is not the
-right script to run: please start by reading the file `INSTALL'.
+right script to run: please start by reading the file 'INSTALL'.
Report bugs to <bug-automake@gnu.org>.
EOF
echo "compile $scriptversion"
exit $?
;;
+ cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
+ func_cl_wrapper "$@" # Doesn't return...
+ ;;
esac
ofile=
cfile=
-eat=
for arg
do
else
case $1 in
-o)
- # configure might choose to run compile as `compile cc -o foo foo.c'.
- # So we strip `-o arg' only if arg is an object.
+ # configure might choose to run compile as 'compile cc -o foo foo.c'.
+ # So we strip '-o arg' only if arg is an object.
eat=1
case $2 in
*.o | *.obj)
done
if test -z "$ofile" || test -z "$cfile"; then
- # If no `-o' option was seen then we might have been invoked from a
+ # If no '-o' option was seen then we might have been invoked from a
# pattern rule where we don't need one. That is ok -- this is a
# normal compilation that the losing compiler can handle. If no
- # `.c' file was seen then we are probably linking. That is also
+ # '.c' file was seen then we are probably linking. That is also
# ok.
exec "$@"
fi
cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
# Create the lock directory.
-# Note: use `[/\\:.-]' here to ensure that we don't use the same name
+# Note: use '[/\\:.-]' here to ensure that we don't use the same name
# that we are using for the .o file. Also, base the name on the expected
# object file name, since that is what matters with a parallel build.
lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
#! /bin/sh
# Attempt to guess a canonical system name.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-# Free Software Foundation, Inc.
+# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+# 2011, 2012 Free Software Foundation, Inc.
-timestamp='2009-12-30'
+timestamp='2012-02-10'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
-# 02110-1301, USA.
+# along with this program; if not, see <http://www.gnu.org/licenses/>.
#
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
Originally written by Per Bothner.
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
-Software Foundation, Inc.
+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
+Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
*:NetBSD:*:*)
# NetBSD (nbsd) targets should (where applicable) match one or
- # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
+ # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
# *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
# switched to ELF, *-*-netbsd* would select the old
# object file format. This provides both forward
fi
;;
*)
- os=netbsd
+ os=netbsd
;;
esac
# The OS release
UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
;;
*5.*)
- UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
;;
esac
# According to Compaq, /usr/sbin/psrinfo has been available on
# A Xn.n version is an unreleased experimental baselevel.
# 1.2 uses "1.2" for uname -r.
echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- exit ;;
+ # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
+ exitcode=$?
+ trap '' 0
+ exit $exitcode ;;
Alpha\ *:Windows_NT*:*)
# How do we know it's Interix rather than the generic POSIX subsystem?
# Should we change UNAME_MACHINE based on the output of uname instead
echo s390-ibm-zvmoe
exit ;;
*:OS400:*:*)
- echo powerpc-ibm-os400
+ echo powerpc-ibm-os400
exit ;;
arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
echo arm-acorn-riscix${UNAME_RELEASE}
# MiNT. But MiNT is downward compatible to TOS, so this should
# be no problem.
atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
+ echo m68k-atari-mint${UNAME_RELEASE}
exit ;;
atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
echo m68k-atari-mint${UNAME_RELEASE}
- exit ;;
+ exit ;;
*falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
+ echo m68k-atari-mint${UNAME_RELEASE}
exit ;;
milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
- echo m68k-milan-mint${UNAME_RELEASE}
- exit ;;
+ echo m68k-milan-mint${UNAME_RELEASE}
+ exit ;;
hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
- echo m68k-hades-mint${UNAME_RELEASE}
- exit ;;
+ echo m68k-hades-mint${UNAME_RELEASE}
+ exit ;;
*:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
- echo m68k-unknown-mint${UNAME_RELEASE}
- exit ;;
+ echo m68k-unknown-mint${UNAME_RELEASE}
+ exit ;;
m68k:machten:*:*)
echo m68k-apple-machten${UNAME_RELEASE}
exit ;;
echo m88k-motorola-sysv3
exit ;;
AViiON:dgux:*:*)
- # DG/UX returns AViiON for all architectures
- UNAME_PROCESSOR=`/usr/bin/uname -p`
+ # DG/UX returns AViiON for all architectures
+ UNAME_PROCESSOR=`/usr/bin/uname -p`
if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
then
if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
else
echo i586-dg-dgux${UNAME_RELEASE}
fi
- exit ;;
+ exit ;;
M88*:DolphinOS:*:*) # DolphinOS (SVR3)
echo m88k-dolphin-sysv3
exit ;;
echo rs6000-ibm-aix3.2
fi
exit ;;
- *:AIX:*:[456])
+ *:AIX:*:[4567])
IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
IBM_ARCH=rs6000
9000/[678][0-9][0-9])
if [ -x /usr/bin/getconf ]; then
sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
- sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
- case "${sc_cpu_version}" in
- 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
- 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
- 532) # CPU_PA_RISC2_0
- case "${sc_kernel_bits}" in
- 32) HP_ARCH="hppa2.0n" ;;
- 64) HP_ARCH="hppa2.0w" ;;
+ sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+ case "${sc_cpu_version}" in
+ 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+ 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+ 532) # CPU_PA_RISC2_0
+ case "${sc_kernel_bits}" in
+ 32) HP_ARCH="hppa2.0n" ;;
+ 64) HP_ARCH="hppa2.0w" ;;
'') HP_ARCH="hppa2.0" ;; # HP-UX 10.20
- esac ;;
- esac
+ esac ;;
+ esac
fi
if [ "${HP_ARCH}" = "" ]; then
eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
+ sed 's/^ //' << EOF >$dummy.c
- #define _HPUX_SOURCE
- #include <stdlib.h>
- #include <unistd.h>
+ #define _HPUX_SOURCE
+ #include <stdlib.h>
+ #include <unistd.h>
- int main ()
- {
- #if defined(_SC_KERNEL_BITS)
- long bits = sysconf(_SC_KERNEL_BITS);
- #endif
- long cpu = sysconf (_SC_CPU_VERSION);
+ int main ()
+ {
+ #if defined(_SC_KERNEL_BITS)
+ long bits = sysconf(_SC_KERNEL_BITS);
+ #endif
+ long cpu = sysconf (_SC_CPU_VERSION);
- switch (cpu)
- {
- case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
- case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
- case CPU_PA_RISC2_0:
- #if defined(_SC_KERNEL_BITS)
- switch (bits)
- {
- case 64: puts ("hppa2.0w"); break;
- case 32: puts ("hppa2.0n"); break;
- default: puts ("hppa2.0"); break;
- } break;
- #else /* !defined(_SC_KERNEL_BITS) */
- puts ("hppa2.0"); break;
- #endif
- default: puts ("hppa1.0"); break;
- }
- exit (0);
- }
+ switch (cpu)
+ {
+ case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+ case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+ case CPU_PA_RISC2_0:
+ #if defined(_SC_KERNEL_BITS)
+ switch (bits)
+ {
+ case 64: puts ("hppa2.0w"); break;
+ case 32: puts ("hppa2.0n"); break;
+ default: puts ("hppa2.0"); break;
+ } break;
+ #else /* !defined(_SC_KERNEL_BITS) */
+ puts ("hppa2.0"); break;
+ #endif
+ default: puts ("hppa1.0"); break;
+ }
+ exit (0);
+ }
EOF
(CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
test -z "$HP_ARCH" && HP_ARCH=hppa
exit ;;
C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
echo c1-convex-bsd
- exit ;;
+ exit ;;
C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
if getsysinfo -f scalar_acc
then echo c32-convex-bsd
else echo c2-convex-bsd
fi
- exit ;;
+ exit ;;
C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
echo c34-convex-bsd
- exit ;;
+ exit ;;
C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
echo c38-convex-bsd
- exit ;;
+ exit ;;
C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
echo c4-convex-bsd
- exit ;;
+ exit ;;
CRAY*Y-MP:*:*:*)
echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
exit ;;
exit ;;
F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
- FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
- echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
- exit ;;
+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+ FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+ echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+ exit ;;
5000:UNIX_System_V:4.*:*)
- FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
- FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
- echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+ FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+ echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
exit ;;
i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
exit ;;
*:FreeBSD:*:*)
- case ${UNAME_MACHINE} in
- pc98)
- echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+ UNAME_PROCESSOR=`/usr/bin/uname -p`
+ case ${UNAME_PROCESSOR} in
amd64)
echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
*)
- echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+ echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
esac
exit ;;
i*:CYGWIN*:*)
*:MINGW*:*)
echo ${UNAME_MACHINE}-pc-mingw32
exit ;;
+ i*:MSYS*:*)
+ echo ${UNAME_MACHINE}-pc-msys
+ exit ;;
i*:windows32*:*)
- # uname -m includes "-pc" on this system.
- echo ${UNAME_MACHINE}-mingw32
+ # uname -m includes "-pc" on this system.
+ echo ${UNAME_MACHINE}-mingw32
exit ;;
i*:PW*:*)
echo ${UNAME_MACHINE}-pc-pw32
exit ;;
*:Interix*:*)
- case ${UNAME_MACHINE} in
+ case ${UNAME_MACHINE} in
x86)
echo i586-pc-interix${UNAME_RELEASE}
exit ;;
i*86:Minix:*:*)
echo ${UNAME_MACHINE}-pc-minix
exit ;;
+ aarch64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ aarch64_be:Linux:*:*)
+ UNAME_MACHINE=aarch64_be
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
alpha:Linux:*:*)
case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
EV5) UNAME_MACHINE=alphaev5 ;;
EV6) UNAME_MACHINE=alphaev6 ;;
EV67) UNAME_MACHINE=alphaev67 ;;
EV68*) UNAME_MACHINE=alphaev68 ;;
- esac
+ esac
objdump --private-headers /bin/sh | grep -q ld.so.1
if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
then
echo ${UNAME_MACHINE}-unknown-linux-gnu
else
- echo ${UNAME_MACHINE}-unknown-linux-gnueabi
+ if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep -q __ARM_PCS_VFP
+ then
+ echo ${UNAME_MACHINE}-unknown-linux-gnueabi
+ else
+ echo ${UNAME_MACHINE}-unknown-linux-gnueabihf
+ fi
fi
exit ;;
avr32*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
cris:Linux:*:*)
- echo cris-axis-linux-gnu
+ echo ${UNAME_MACHINE}-axis-linux-gnu
exit ;;
crisv32:Linux:*:*)
- echo crisv32-axis-linux-gnu
+ echo ${UNAME_MACHINE}-axis-linux-gnu
exit ;;
frv:Linux:*:*)
- echo frv-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ hexagon:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
i*86:Linux:*:*)
LIBC=gnu
test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
;;
or32:Linux:*:*)
- echo or32-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
padre:Linux:*:*)
echo sparc-unknown-linux-gnu
echo ${UNAME_MACHINE}-ibm-linux
exit ;;
sh64*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
sh*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
sparc:Linux:*:* | sparc64:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
+ tile*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
vax:Linux:*:*)
echo ${UNAME_MACHINE}-dec-linux-gnu
exit ;;
x86_64:Linux:*:*)
- echo x86_64-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
xtensa*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
i*86:DYNIX/ptx:4*:*)
# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
echo i386-sequent-sysv4
exit ;;
i*86:UNIX_SV:4.2MP:2.*)
- # Unixware is an offshoot of SVR4, but it has its own version
- # number series starting with 2...
- # I am not positive that other SVR4 systems won't match this,
+ # Unixware is an offshoot of SVR4, but it has its own version
+ # number series starting with 2...
+ # I am not positive that other SVR4 systems won't match this,
# I just have to hope. -- rms.
- # Use sysv4.2uw... so that sysv4* matches it.
+ # Use sysv4.2uw... so that sysv4* matches it.
echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
exit ;;
i*86:OS/2:*:*)
fi
exit ;;
i*86:*:5:[678]*)
- # UnixWare 7.x, OpenUNIX and OpenServer 6.
+ # UnixWare 7.x, OpenUNIX and OpenServer 6.
case `/bin/uname -X | grep "^Machine"` in
*486*) UNAME_MACHINE=i486 ;;
*Pentium) UNAME_MACHINE=i586 ;;
exit ;;
pc:*:*:*)
# Left here for compatibility:
- # uname -m prints for DJGPP always 'pc', but it prints nothing about
- # the processor, so we play safe by assuming i586.
+ # uname -m prints for DJGPP always 'pc', but it prints nothing about
+ # the processor, so we play safe by assuming i586.
# Note: whatever this is, it MUST be the same as what config.sub
# prints for the "djgpp" host, or else GDB configury will decide that
# this is a cross-build.
echo i586-pc-msdosdjgpp
- exit ;;
+ exit ;;
Intel:Mach:3*:*)
echo i386-pc-mach3
exit ;;
/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
&& { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
- /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
- && { echo i486-ncr-sysv4; exit; } ;;
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && { echo i486-ncr-sysv4; exit; } ;;
NCR*:*:4.2:* | MPRAS*:*:4.2:*)
OS_REL='.3'
test -r /etc/.relid \
echo ns32k-sni-sysv
fi
exit ;;
- PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
- # says <Richard.M.Bartel@ccMail.Census.GOV>
- echo i586-unisys-sysv4
- exit ;;
+ PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+ # says <Richard.M.Bartel@ccMail.Census.GOV>
+ echo i586-unisys-sysv4
+ exit ;;
*:UNIX_System_V:4*:FTX*)
# From Gerald Hewes <hewes@openmarket.com>.
# How about differentiating between stratus architectures? -djm
exit ;;
R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
if [ -d /usr/nec ]; then
- echo mips-nec-sysv${UNAME_RELEASE}
+ echo mips-nec-sysv${UNAME_RELEASE}
else
- echo mips-unknown-sysv${UNAME_RELEASE}
+ echo mips-unknown-sysv${UNAME_RELEASE}
fi
- exit ;;
+ exit ;;
BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
echo powerpc-be-beos
exit ;;
*:QNX:*:4*)
echo i386-pc-qnx
exit ;;
+ NEO-?:NONSTOP_KERNEL:*:*)
+ echo neo-tandem-nsk${UNAME_RELEASE}
+ exit ;;
NSE-?:NONSTOP_KERNEL:*:*)
echo nse-tandem-nsk${UNAME_RELEASE}
exit ;;
echo pdp10-unknown-its
exit ;;
SEI:*:*:SEIUX)
- echo mips-sei-seiux${UNAME_RELEASE}
+ echo mips-sei-seiux${UNAME_RELEASE}
exit ;;
*:DragonFly:*:*)
echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
exit ;;
*:*VMS:*:*)
- UNAME_MACHINE=`(uname -p) 2>/dev/null`
+ UNAME_MACHINE=`(uname -p) 2>/dev/null`
case "${UNAME_MACHINE}" in
A*) echo alpha-dec-vms ; exit ;;
I*) echo ia64-dec-vms ; exit ;;
i*86:AROS:*:*)
echo ${UNAME_MACHINE}-pc-aros
exit ;;
+ x86_64:VMkernel:*:*)
+ echo ${UNAME_MACHINE}-unknown-esx
+ exit ;;
esac
#echo '(No uname command or uname output not recognized.)' 1>&2
#include <sys/param.h>
printf ("m68k-sony-newsos%s\n",
#ifdef NEWSOS4
- "4"
+ "4"
#else
- ""
+ ""
#endif
- ); exit (0);
+ ); exit (0);
#endif
#endif
/* Use AppIndicator 0.2.9 */
#undef HAVE_APPINDICATOR_029
-/* Define to 1 if you have the <arpa/inet.h> header file. */
-#undef HAVE_ARPA_INET_H
+/* Use libatasmart */
+#undef HAVE_ATASMART
/* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the
CoreFoundation framework. */
*/
#undef HAVE_DCGETTEXT
-/* Define to 1 if you have the <getopt.h> header file. */
-#undef HAVE_GETOPT_H
+/* Use gconf2 */
+#undef HAVE_GCONF2
/* Define if the GNU gettext() function is already present or preinstalled. */
#undef HAVE_GETTEXT
/* Define to 1 if you have the `gettimeofday' function. */
#undef HAVE_GETTIMEOFDAY
-/* Use GTK3 */
-#undef HAVE_GTK3
-
/* Use GTOP */
#undef HAVE_GTOP
/* Use JSON */
#undef HAVE_JSON
+/* Use JSON0 */
+#undef HAVE_JSON_0
+
/* libatiadl is available */
#undef HAVE_LIBATIADL
/* Use desktop notification */
#undef HAVE_LIBNOTIFY
+/* Define to 1 if you have the `pthread' library (-lpthread). */
+#undef HAVE_LIBPTHREAD
+
/* Define to 1 if you have the `sensors' library (-lsensors). */
#undef HAVE_LIBSENSORS
/* Define to 1 if you have the <memory.h> header file. */
#undef HAVE_MEMORY_H
-/* Define to 1 if you have the <netinet/in.h> header file. */
-#undef HAVE_NETINET_IN_H
-
/* Define to 1 if you have the <NVCtrl/NVCtrlLib.h> header file. */
#undef HAVE_NVCTRL_NVCTRLLIB_H
/* Define to 1 if you have the `socket' function. */
#undef HAVE_SOCKET
+/* Define to 1 if you have the <stdbool.h> header file. */
+#undef HAVE_STDBOOL_H
+
/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H
/* Define to 1 if you have the `strtol' function. */
#undef HAVE_STRTOL
-/* Define to 1 if you have the <sys/socket.h> header file. */
-#undef HAVE_SYS_SOCKET_H
-
/* Define to 1 if you have the <sys/stat.h> header file. */
#undef HAVE_SYS_STAT_H
-/* Define to 1 if you have the <sys/time.h> header file. */
-#undef HAVE_SYS_TIME_H
-
/* Define to 1 if you have the <sys/types.h> header file. */
#undef HAVE_SYS_TYPES_H
/* Version number of package */
#undef VERSION
+/* Enable large inode numbers on Mac OS X 10.5. */
+#ifndef _DARWIN_USE_64_BIT_INODE
+# define _DARWIN_USE_64_BIT_INODE 1
+#endif
+
+/* Number of bits in a file offset, on hosts where this is settable. */
+#undef _FILE_OFFSET_BITS
+
+/* Define for large files, on AIX-style hosts. */
+#undef _LARGE_FILES
+
/* Define to rpl_malloc if the replacement function should be used. */
#undef malloc
#! /bin/sh
# Configuration validation subroutine script.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-# Free Software Foundation, Inc.
+# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+# 2011, 2012 Free Software Foundation, Inc.
-timestamp='2010-01-22'
+timestamp='2012-04-18'
# This file is (in principle) common to ALL GNU software.
# The presence of a machine in this file suggests that SOME GNU software
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
-# 02110-1301, USA.
+# along with this program; if not, see <http://www.gnu.org/licenses/>.
#
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
GNU config.sub ($timestamp)
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
-Software Foundation, Inc.
+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
+Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
# Here we must recognize all the valid KERNEL-OS combinations.
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
case $maybe_os in
- nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
- uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
+ nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
+ linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
+ knetbsd*-gnu* | netbsd*-gnu* | \
kopensolaris*-gnu* | \
storm-chaos* | os2-emx* | rtmk-nova*)
os=-$maybe_os
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
;;
+ android-linux)
+ os=-linux-android
+ basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
+ ;;
*)
basic_machine=`echo $1 | sed 's/-[^-]*$//'`
if [ $basic_machine != $1 ]
os=
basic_machine=$1
;;
- -bluegene*)
- os=-cnk
+ -bluegene*)
+ os=-cnk
;;
-sim | -cisco | -oki | -wec | -winbond)
os=
os=-chorusos
basic_machine=$1
;;
- -chorusrdb)
- os=-chorusrdb
+ -chorusrdb)
+ os=-chorusrdb
basic_machine=$1
- ;;
+ ;;
-hiux*)
os=-hiuxwe2
;;
-isc*)
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
+ -lynx*178)
+ os=-lynxos178
+ ;;
+ -lynx*5)
+ os=-lynxos5
+ ;;
-lynx*)
os=-lynxos
;;
# Some are omitted here because they have special meanings below.
1750a | 580 \
| a29k \
+ | aarch64 | aarch64_be \
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
| am33_2.0 \
| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
+ | be32 | be64 \
| bfin \
| c4x | clipper \
| d10v | d30v | dlx | dsp16xx \
+ | epiphany \
| fido | fr30 | frv \
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+ | hexagon \
| i370 | i860 | i960 | ia64 \
| ip2k | iq2000 \
+ | le32 | le64 \
| lm32 \
| m32c | m32r | m32rle | m68000 | m68k | m88k \
| maxq | mb | microblaze | mcore | mep | metag \
| moxie \
| mt \
| msp430 \
+ | nds32 | nds32le | nds32be \
| nios | nios2 \
| ns16k | ns32k \
+ | open8 \
| or32 \
| pdp10 | pdp11 | pj | pjl \
- | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
+ | powerpc | powerpc64 | powerpc64le | powerpcle \
| pyramid \
- | rx \
+ | rl78 | rx \
| score \
| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
| sh64 | sh64le \
| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
- | spu | strongarm \
- | tahoe | thumb | tic4x | tic80 | tron \
+ | spu \
+ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
| ubicom32 \
- | v850 | v850e \
+ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
| we32k \
- | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
+ | x86 | xc16x | xstormy16 | xtensa \
| z8k | z80)
basic_machine=$basic_machine-unknown
;;
- m6811 | m68hc11 | m6812 | m68hc12 | picochip)
- # Motorola 68HC11/12.
+ c54x)
+ basic_machine=tic54x-unknown
+ ;;
+ c55x)
+ basic_machine=tic55x-unknown
+ ;;
+ c6x)
+ basic_machine=tic6x-unknown
+ ;;
+ m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip)
basic_machine=$basic_machine-unknown
os=-none
;;
basic_machine=mt-unknown
;;
+ strongarm | thumb | xscale)
+ basic_machine=arm-unknown
+ ;;
+ xgate)
+ basic_machine=$basic_machine-unknown
+ os=-none
+ ;;
+ xscaleeb)
+ basic_machine=armeb-unknown
+ ;;
+
+ xscaleel)
+ basic_machine=armel-unknown
+ ;;
+
# We use `pc' rather than `unknown'
# because (1) that's what they normally are, and
# (2) the word "unknown" tends to confuse beginning users.
# Recognize the basic CPU types with company name.
580-* \
| a29k-* \
+ | aarch64-* | aarch64_be-* \
| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \
| avr-* | avr32-* \
+ | be32-* | be64-* \
| bfin-* | bs2000-* \
- | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
+ | c[123]* | c30-* | [cjt]90-* | c4x-* \
| clipper-* | craynv-* | cydra-* \
| d10v-* | d30v-* | dlx-* \
| elxsi-* \
| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
| h8300-* | h8500-* \
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+ | hexagon-* \
| i*86-* | i860-* | i960-* | ia64-* \
| ip2k-* | iq2000-* \
+ | le32-* | le64-* \
| lm32-* \
| m32c-* | m32r-* | m32rle-* \
| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
| mmix-* \
| mt-* \
| msp430-* \
+ | nds32-* | nds32le-* | nds32be-* \
| nios-* | nios2-* \
| none-* | np1-* | ns16k-* | ns32k-* \
+ | open8-* \
| orion-* \
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
- | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
+ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
| pyramid-* \
- | romp-* | rs6000-* | rx-* \
+ | rl78-* | romp-* | rs6000-* | rx-* \
| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
| sparclite-* \
- | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
- | tahoe-* | thumb-* \
+ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
+ | tahoe-* \
| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
- | tile-* | tilegx-* \
+ | tile*-* \
| tron-* \
| ubicom32-* \
- | v850-* | v850e-* | vax-* \
+ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
+ | vax-* \
| we32k-* \
- | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
+ | x86-* | x86_64-* | xc16x-* | xps100-* \
| xstormy16-* | xtensa*-* \
| ymp-* \
| z8k-* | z80-*)
basic_machine=a29k-amd
os=-udi
;;
- abacus)
+ abacus)
basic_machine=abacus-unknown
;;
adobe68k)
basic_machine=powerpc-ibm
os=-cnk
;;
+ c54x-*)
+ basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ c55x-*)
+ basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ c6x-*)
+ basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
c90)
basic_machine=c90-cray
os=-unicos
;;
- cegcc)
+ cegcc)
basic_machine=arm-unknown
os=-cegcc
;;
basic_machine=craynv-cray
os=-unicosmp
;;
- cr16)
+ cr16 | cr16-*)
basic_machine=cr16-unknown
os=-elf
;;
i370-ibm* | ibm*)
basic_machine=i370-ibm
;;
-# I'm not sure what "Sysv32" means. Should this be sysv3.2?
i*86v32)
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
os=-sysv32
basic_machine=ns32k-utek
os=-sysv
;;
- microblaze)
+ microblaze)
basic_machine=microblaze-xilinx
;;
mingw32)
ms1-*)
basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
;;
+ msys)
+ basic_machine=i386-pc
+ os=-msys
+ ;;
mvs)
basic_machine=i370-ibm
os=-mvs
;;
+ nacl)
+ basic_machine=le32-unknown
+ os=-nacl
+ ;;
ncr3000)
basic_machine=i486-ncr
os=-sysv4
np1)
basic_machine=np1-gould
;;
+ neo-tandem)
+ basic_machine=neo-tandem
+ ;;
+ nse-tandem)
+ basic_machine=nse-tandem
+ ;;
nsr-tandem)
basic_machine=nsr-tandem
;;
;;
power) basic_machine=power-ibm
;;
- ppc) basic_machine=powerpc-unknown
+ ppc | ppcbe) basic_machine=powerpc-unknown
;;
- ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ppc-* | ppcbe-*)
+ basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
ppcle | powerpclittle | ppc-le | powerpc-little)
basic_machine=powerpcle-unknown
basic_machine=i860-stratus
os=-sysv4
;;
+ strongarm-* | thumb-*)
+ basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
sun2)
basic_machine=m68000-sun
;;
basic_machine=t90-cray
os=-unicos
;;
- tic54x | c54x*)
- basic_machine=tic54x-unknown
- os=-coff
- ;;
- tic55x | c55x*)
- basic_machine=tic55x-unknown
- os=-coff
- ;;
- tic6x | c6x*)
- basic_machine=tic6x-unknown
- os=-coff
- ;;
- # This must be matched before tile*.
- tilegx*)
- basic_machine=tilegx-unknown
- os=-linux-gnu
- ;;
tile*)
- basic_machine=tile-unknown
+ basic_machine=$basic_machine-unknown
os=-linux-gnu
;;
tx39)
xps | xps100)
basic_machine=xps100-honeywell
;;
+ xscale-* | xscalee[bl]-*)
+ basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
+ ;;
ymp)
basic_machine=ymp-cray
os=-unicos
if [ x"$os" != x"" ]
then
case $os in
- # First match some system type aliases
- # that might get confused with valid system types.
+ # First match some system type aliases
+ # that might get confused with valid system types.
# -solaris* is a basic system type, with this one exception.
- -auroraux)
- os=-auroraux
+ -auroraux)
+ os=-auroraux
;;
-solaris1 | -solaris1.*)
os=`echo $os | sed -e 's|solaris1|sunos4|'`
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
| -chorusos* | -chorusrdb* | -cegcc* \
- | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
- | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
+ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+ | -mingw32* | -linux-gnu* | -linux-android* \
+ | -linux-newlib* | -linux-uclibc* \
| -uxpv* | -beos* | -mpeix* | -udk* \
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
-opened*)
os=-openedition
;;
- -os400*)
+ -os400*)
os=-os400
;;
-wince*)
-sinix*)
os=-sysv4
;;
- -tpf*)
+ -tpf*)
os=-tpf
;;
-triton*)
-dicos*)
os=-dicos
;;
- -nacl*)
- ;;
+ -nacl*)
+ ;;
-none)
;;
*)
# system, and we'll never get to this point.
case $basic_machine in
- score-*)
+ score-*)
os=-elf
;;
- spu-*)
+ spu-*)
os=-elf
;;
*-acorn)
arm*-semi)
os=-aout
;;
- c4x-* | tic4x-*)
- os=-coff
+ c4x-* | tic4x-*)
+ os=-coff
+ ;;
+ hexagon-*)
+ os=-elf
+ ;;
+ tic54x-*)
+ os=-coff
+ ;;
+ tic55x-*)
+ os=-coff
+ ;;
+ tic6x-*)
+ os=-coff
;;
# This must come before the *-dec entry.
pdp10-*)
;;
m68000-sun)
os=-sunos3
- # This also exists in the configure program, but was not the
- # default.
- # os=-sunos4
;;
m68*-cisco)
os=-aout
;;
- mep-*)
+ mep-*)
os=-elf
;;
mips*-cisco)
*-ibm)
os=-aix
;;
- *-knuth)
+ *-knuth)
os=-mmixware
;;
*-wec)
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.68 for psensor 0.6.2.17.
+# Generated by GNU Autoconf 2.69 for psensor 0.8.0.4.
#
# Report bugs to <jeanfi@gmail.com>.
#
#
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
-# Foundation, Inc.
+# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
#
#
# This configure script is free software; the Free Software Foundation
# CDPATH.
(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+# Use a proper internal environment variable to ensure we don't fall
+ # into an infinite loop, continuously re-executing ourselves.
+ if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
+ _as_can_reexec=no; export _as_can_reexec;
+ # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+ *v*x* | *x*v* ) as_opts=-vx ;;
+ *v* ) as_opts=-v ;;
+ *x* ) as_opts=-x ;;
+ * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+as_fn_exit 255
+ fi
+ # We don't want this to propagate to other subprocesses.
+ { _as_can_reexec=; unset _as_can_reexec;}
if test "x$CONFIG_SHELL" = x; then
as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
emulate sh
else
exitcode=1; echo positional parameters were not saved.
fi
-test x\$exitcode = x0 || exit 1"
+test x\$exitcode = x0 || exit 1
+test -x / || exit 1"
as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
if test "x$CONFIG_SHELL" != x; then :
- # We cannot yet assume a decent shell, so we have to provide a
- # neutralization value for shells without unset; and this also
- # works around shells that cannot unset nonexistent variables.
- # Preserve -v and -x to the replacement shell.
- BASH_ENV=/dev/null
- ENV=/dev/null
- (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
- export CONFIG_SHELL
- case $- in # ((((
- *v*x* | *x*v* ) as_opts=-vx ;;
- *v* ) as_opts=-v ;;
- *x* ) as_opts=-x ;;
- * ) as_opts= ;;
- esac
- exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"}
+ export CONFIG_SHELL
+ # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+ *v*x* | *x*v* ) as_opts=-vx ;;
+ *v* ) as_opts=-v ;;
+ *x* ) as_opts=-x ;;
+ * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
fi
if test x$as_have_required = xno; then :
} # as_fn_mkdir_p
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+ test -f "$1" && test -x "$1"
+} # as_fn_executable_p
# as_fn_append VAR VALUE
# ----------------------
# Append the text in VALUE to the end of the definition contained in VAR. Take
chmod +x "$as_me.lineno" ||
{ $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+ # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
+ # already done that, so ensure we don't try to do so again and fall
+ # in an infinite loop. This has already happened in practice.
+ _as_can_reexec=no; export _as_can_reexec
# Don't try to exec as it changes $[0], causing all sort of problems
# (the dirname of $[0] is not the place where we might find the
# original and so on. Autoconf is especially sensitive to this).
# ... but there are two gotchas:
# 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
# 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
- # In both cases, we have to default to `cp -p'.
+ # In both cases, we have to default to `cp -pR'.
ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
elif ln conf$$.file conf$$ 2>/dev/null; then
as_ln_s=ln
else
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
fi
else
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
fi
rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
rmdir conf$$.dir 2>/dev/null
as_mkdir_p=false
fi
-if test -x / >/dev/null 2>&1; then
- as_test_x='test -x'
-else
- if ls -dL / >/dev/null 2>&1; then
- as_ls_L_option=L
- else
- as_ls_L_option=
- fi
- as_test_x='
- eval sh -c '\''
- if test -d "$1"; then
- test -d "$1/.";
- else
- case $1 in #(
- -*)set "./$1";;
- esac;
- case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
- ???[sx]*):;;*)false;;esac;fi
- '\'' sh
- '
-fi
-as_executable_p=$as_test_x
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
# Sed expression to map a string onto a valid CPP name.
as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
# Identity of this package.
PACKAGE_NAME='psensor'
PACKAGE_TARNAME='psensor'
-PACKAGE_VERSION='0.6.2.17'
-PACKAGE_STRING='psensor 0.6.2.17'
+PACKAGE_VERSION='0.8.0.4'
+PACKAGE_STRING='psensor 0.8.0.4'
PACKAGE_BUGREPORT='jeanfi@gmail.com'
PACKAGE_URL='http://wpitchoune.net/psensor'
-ac_unique_file="src/compat.h"
+ac_unique_file="src/ui.c"
# Factoring default headers for most tests.
ac_includes_default="\
#include <stdio.h>
ac_subst_vars='am__EXEEXT_FALSE
am__EXEEXT_TRUE
LTLIBOBJS
+CPPCHECK_FALSE
+CPPCHECK_TRUE
+HAVE_CPPCHECK
HELP2MAN
GTOP_FALSE
GTOP_TRUE
LIBNOTIFY_TRUE
LIBNOTIFY_LIBS
LIBNOTIFY_CFLAGS
+ATASMART_FALSE
+ATASMART_TRUE
+ATASMART_LIBS
+ATASMART_CFLAGS
+GCONF_FALSE
+GCONF_TRUE
GCONF_LIBS
GCONF_CFLAGS
GTK_FALSE
GTK_TRUE
GTK_LIBS
GTK_CFLAGS
+XEXT_FALSE
+XEXT_TRUE
XEXT_LIBS
XEXT_CFLAGS
+X11_FALSE
+X11_TRUE
X11_LIBS
X11_CFLAGS
PKG_CONFIG_LIBDIR
PKG_CONFIG_PATH
PKG_CONFIG
SENSORS_LIBS
+PTHREAD_LIBS
+GCONF_SCHEMAS_INSTALL_FALSE
+GCONF_SCHEMAS_INSTALL_TRUE
+GCONF_SCHEMA_FILE_DIR
+GCONF_SCHEMA_CONFIG_SOURCE
+GCONFTOOL
POSUB
LTLIBINTL
LIBINTL
GREP
CPP
XMKMF
+ac_ct_AR
+AR
RANLIB
am__fastdepCC_FALSE
am__fastdepCC_TRUE
CCDEPMODE
+am__nodep
AMDEPBACKSLASH
AMDEP_FALSE
AMDEP_TRUE
ac_user_opts='
enable_option_checking
enable_dependency_tracking
+enable_largefile
with_x
enable_nls
with_gnu_ld
enable_rpath
with_libiconv_prefix
with_libintl_prefix
+with_gconf_source
+with_gconf_schema_file_dir
+enable_schemas_install
with_libatiadl
with_gtop
'
GTK_LIBS
GCONF_CFLAGS
GCONF_LIBS
+ATASMART_CFLAGS
+ATASMART_LIBS
LIBNOTIFY_CFLAGS
LIBNOTIFY_LIBS
APPINDICATOR_CFLAGS
if test "x$host_alias" != x; then
if test "x$build_alias" = x; then
cross_compiling=maybe
- $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host.
- If a cross compiler is detected then cross compile mode will be used" >&2
elif test "x$build_alias" != "x$host_alias"; then
cross_compiling=yes
fi
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures psensor 0.6.2.17 to adapt to many kinds of systems.
+\`configure' configures psensor 0.8.0.4 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of psensor 0.6.2.17:";;
+ short | recursive ) echo "Configuration of psensor 0.8.0.4:";;
esac
cat <<\_ACEOF
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
--disable-dependency-tracking speeds up one-time build
--enable-dependency-tracking do not reject slow dependency extractors
+ --disable-largefile omit support for large files
--disable-nls do not use Native Language Support
--disable-rpath do not hardcode runtime library paths
+ --disable-schemas-install
+ Disable the schemas installation
Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
--without-libiconv-prefix don't search for libiconv in includedir and libdir
--with-libintl-prefix[=DIR] search for libintl in DIR/include and DIR/lib
--without-libintl-prefix don't search for libintl in includedir and libdir
+ --with-gconf-source=sourceaddress
+ Config database for installing schema files.
+ --with-gconf-schema-file-dir=dir
+ Directory for installing schema files.
--with-libatiadl=DIR use libatiadlxx in DIR
--with-gtop=yes|no use gtop
GCONF_CFLAGS
C compiler flags for GCONF, overriding pkg-config
GCONF_LIBS linker flags for GCONF, overriding pkg-config
+ ATASMART_CFLAGS
+ C compiler flags for ATASMART, overriding pkg-config
+ ATASMART_LIBS
+ linker flags for ATASMART, overriding pkg-config
LIBNOTIFY_CFLAGS
C compiler flags for LIBNOTIFY, overriding pkg-config
LIBNOTIFY_LIBS
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-psensor configure 0.6.2.17
-generated by GNU Autoconf 2.68
+psensor configure 0.8.0.4
+generated by GNU Autoconf 2.69
-Copyright (C) 2010 Free Software Foundation, Inc.
+Copyright (C) 2012 Free Software Foundation, Inc.
This configure script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it.
_ACEOF
test ! -s conftest.err
} && test -s conftest$ac_exeext && {
test "$cross_compiling" = yes ||
- $as_test_x conftest$ac_exeext
+ test -x conftest$ac_exeext
}; then :
ac_retval=0
else
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by psensor $as_me 0.6.2.17, which was
-generated by GNU Autoconf 2.68. Invocation command line was
+It was created by psensor $as_me 0.8.0.4, which was
+generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
# by default.
for ac_prog in ginstall scoinst install; do
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
if test $ac_prog = install &&
grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
# AIX install. It has an incompatible calling convention.
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_STRIP="${ac_tool_prefix}strip"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_STRIP="strip"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
test -z "$as_dir" && as_dir=.
for ac_prog in mkdir gmkdir; do
for ac_exec_ext in '' $ac_executable_extensions; do
- { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue
+ as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
'mkdir (GNU coreutils) '* | \
'mkdir (coreutils) '* | \
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_AWK="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
# Define the identity of the package.
PACKAGE='psensor'
- VERSION='0.6.2.17'
+ VERSION='0.8.0.4'
cat >>confdefs.h <<_ACEOF
# We need awk for the "check" target. The system "awk" is bad on
# some platforms.
-# Always define AMTAR for backward compatibility.
-
-AMTAR=${AMTAR-"${am_missing_run}tar"}
+# Always define AMTAR for backward compatibility. Yes, it's still used
+# in the wild :-( We should find a proper way to deprecate it ...
+AMTAR='$${TAR-tar}'
-am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
+am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
ac_config_headers="$ac_config_headers config.h"
+# m4
+
+
# Checks for programs.
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="${ac_tool_prefix}gcc"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_CC="gcc"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="${ac_tool_prefix}cc"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
ac_prog_rejected=yes
continue
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_CC="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
/* end confdefs.h. */
#include <stdarg.h>
#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
+struct stat;
/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
struct buf { int x; };
FILE * (*rcsopen) (struct buf *, struct stat *, int);
if test "x$enable_dependency_tracking" != xno; then
am_depcomp="$ac_aux_dir/depcomp"
AMDEPBACKSLASH='\'
+ am__nodep='_no'
fi
if test "x$enable_dependency_tracking" != xno; then
AMDEP_TRUE=
# instance it was reported that on HP-UX the gcc test will end up
# making a dummy file named `D' -- because `-MD' means `put the output
# in D'.
+ rm -rf conftest.dir
mkdir conftest.dir
# Copy depcomp to subdir because otherwise we won't find it if we're
# using a relative directory.
break
fi
;;
- msvisualcpp | msvcmsys)
+ msvc7 | msvc7msys | msvisualcpp | msvcmsys)
# This compiler won't grok `-c -o', but also, the minuso test has
# not run yet. These depmodes are late enough in the game, and
# so weak that their functioning should not be impacted.
+
+# Check whether --enable-largefile was given.
+if test "${enable_largefile+set}" = set; then :
+ enableval=$enable_largefile;
+fi
+
+if test "$enable_largefile" != no; then
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5
+$as_echo_n "checking for special C compiler options needed for large files... " >&6; }
+if ${ac_cv_sys_largefile_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_sys_largefile_CC=no
+ if test "$GCC" != yes; then
+ ac_save_CC=$CC
+ while :; do
+ # IRIX 6.2 and later do not support large files by default,
+ # so use the C compiler's -n32 option if that helps.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+ if ac_fn_c_try_compile "$LINENO"; then :
+ break
+fi
+rm -f core conftest.err conftest.$ac_objext
+ CC="$CC -n32"
+ if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_sys_largefile_CC=' -n32'; break
+fi
+rm -f core conftest.err conftest.$ac_objext
+ break
+ done
+ CC=$ac_save_CC
+ rm -f conftest.$ac_ext
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5
+$as_echo "$ac_cv_sys_largefile_CC" >&6; }
+ if test "$ac_cv_sys_largefile_CC" != no; then
+ CC=$CC$ac_cv_sys_largefile_CC
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5
+$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; }
+if ${ac_cv_sys_file_offset_bits+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ while :; do
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_sys_file_offset_bits=no; break
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#define _FILE_OFFSET_BITS 64
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_sys_file_offset_bits=64; break
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_cv_sys_file_offset_bits=unknown
+ break
+done
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5
+$as_echo "$ac_cv_sys_file_offset_bits" >&6; }
+case $ac_cv_sys_file_offset_bits in #(
+ no | unknown) ;;
+ *)
+cat >>confdefs.h <<_ACEOF
+#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
+_ACEOF
+;;
+esac
+rm -rf conftest*
+ if test $ac_cv_sys_file_offset_bits = unknown; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5
+$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; }
+if ${ac_cv_sys_large_files+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ while :; do
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_sys_large_files=no; break
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#define _LARGE_FILES 1
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_sys_large_files=1; break
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_cv_sys_large_files=unknown
+ break
+done
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5
+$as_echo "$ac_cv_sys_large_files" >&6; }
+case $ac_cv_sys_large_files in #(
+ no | unknown) ;;
+ *)
+cat >>confdefs.h <<_ACEOF
+#define _LARGE_FILES $ac_cv_sys_large_files
+_ACEOF
+;;
+esac
+rm -rf conftest*
+ fi
+
+
+fi
+
+
# Checks lib build
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_RANLIB="ranlib"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
RANLIB="$ac_cv_prog_RANLIB"
fi
+if test -n "$ac_tool_prefix"; then
+ for ac_prog in ar lib "link -lib"
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AR+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$AR"; then
+ ac_cv_prog_AR="$AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+AR=$ac_cv_prog_AR
+if test -n "$AR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
+$as_echo "$AR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$AR" && break
+ done
+fi
+if test -z "$AR"; then
+ ac_ct_AR=$AR
+ for ac_prog in ar lib "link -lib"
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_AR+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_AR"; then
+ ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_AR="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_AR=$ac_cv_prog_ac_ct_AR
+if test -n "$ac_ct_AR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
+$as_echo "$ac_ct_AR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_AR" && break
+done
+
+ if test "x$ac_ct_AR" = x; then
+ AR="false"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ AR=$ac_ct_AR
+ fi
+fi
+
+: ${AR=ar}
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the archiver ($AR) interface" >&5
+$as_echo_n "checking the archiver ($AR) interface... " >&6; }
+if ${am_cv_ar_interface+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ am_cv_ar_interface=ar
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+int some_variable = 0;
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&5'
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$am_ar_try\""; } >&5
+ (eval $am_ar_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+ if test "$ac_status" -eq 0; then
+ am_cv_ar_interface=ar
+ else
+ am_ar_try='$AR -NOLOGO -OUT:conftest.lib conftest.$ac_objext >&5'
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$am_ar_try\""; } >&5
+ (eval $am_ar_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+ if test "$ac_status" -eq 0; then
+ am_cv_ar_interface=lib
+ else
+ am_cv_ar_interface=unknown
+ fi
+ fi
+ rm -f conftest.lib libconftest.a
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_ar_interface" >&5
+$as_echo "$am_cv_ar_interface" >&6; }
+
+case $am_cv_ar_interface in
+ar)
+ ;;
+lib)
+ # Microsoft lib, so override with the ar-lib wrapper script.
+ # FIXME: It is wrong to rewrite AR.
+ # But if we don't then we get into trouble of one sort or another.
+ # A longer-term fix would be to have automake use am__AR in this case,
+ # and then we could set am__AR="$am_aux_dir/ar-lib \$(AR)" or something
+ # similar.
+ AR="$am_aux_dir/ar-lib $AR"
+ ;;
+unknown)
+ as_fn_error $? "could not determine $AR interface" "$LINENO" 5
+ ;;
+esac
-# Checks for header files.
+# Checks for header files.
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
for ac_prog in grep ggrep; do
for ac_exec_ext in '' $ac_executable_extensions; do
ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
- { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
+ as_fn_executable_p "$ac_path_GREP" || continue
# Check for GNU ac_path_GREP and select it if it is found.
# Check for GNU $ac_path_GREP
case `"$ac_path_GREP" --version 2>&1` in
for ac_prog in egrep; do
for ac_exec_ext in '' $ac_executable_extensions; do
ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
- { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
+ as_fn_executable_p "$ac_path_EGREP" || continue
# Check for GNU ac_path_EGREP and select it if it is found.
# Check for GNU $ac_path_EGREP
case `"$ac_path_EGREP" --version 2>&1` in
done
-for ac_header in arpa/inet.h netinet/in.h stdint.h stdlib.h string.h sys/socket.h sys/time.h unistd.h getopt.h
+for ac_header in stdbool.h
do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+ ac_fn_c_check_header_mongrel "$LINENO" "stdbool.h" "ac_cv_header_stdbool_h" "$ac_includes_default"
+if test "x$ac_cv_header_stdbool_h" = xyes; then :
cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+#define HAVE_STDBOOL_H 1
_ACEOF
fi
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
-############### common
-
-# Checks sensors, required by psensor and psensor-server
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sensors_init in -lsensors" >&5
-$as_echo_n "checking for sensors_init in -lsensors... " >&6; }
-if ${ac_cv_lib_sensors_sensors_init+:} false; then :
+# Gconf
+# Extract the first word of "gconftool-2", so it can be a program name with args.
+set dummy gconftool-2; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_GCONFTOOL+:} false; then :
$as_echo_n "(cached) " >&6
else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lsensors $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char sensors_init ();
-int
-main ()
-{
-return sensors_init ();
- ;
+ case $GCONFTOOL in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_GCONFTOOL="$GCONFTOOL" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_GCONFTOOL="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ test -z "$ac_cv_path_GCONFTOOL" && ac_cv_path_GCONFTOOL="no"
+ ;;
+esac
+fi
+GCONFTOOL=$ac_cv_path_GCONFTOOL
+if test -n "$GCONFTOOL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GCONFTOOL" >&5
+$as_echo "$GCONFTOOL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+ if test "x$GCONF_SCHEMA_INSTALL_SOURCE" = "x"; then
+ GCONF_SCHEMA_CONFIG_SOURCE=`gconftool-2 --get-default-source`
+ else
+ GCONF_SCHEMA_CONFIG_SOURCE=$GCONF_SCHEMA_INSTALL_SOURCE
+ fi
+
+
+# Check whether --with-gconf-source was given.
+if test "${with_gconf_source+set}" = set; then :
+ withval=$with_gconf_source; GCONF_SCHEMA_CONFIG_SOURCE="$withval"
+fi
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: Using config source $GCONF_SCHEMA_CONFIG_SOURCE for schema installation" >&5
+$as_echo "Using config source $GCONF_SCHEMA_CONFIG_SOURCE for schema installation" >&6; }
+
+ if test "x$GCONF_SCHEMA_FILE_DIR" = "x"; then
+ GCONF_SCHEMA_FILE_DIR='$(sysconfdir)/gconf/schemas'
+ fi
+
+
+# Check whether --with-gconf-schema-file-dir was given.
+if test "${with_gconf_schema_file_dir+set}" = set; then :
+ withval=$with_gconf_schema_file_dir; GCONF_SCHEMA_FILE_DIR="$withval"
+fi
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: Using $GCONF_SCHEMA_FILE_DIR as install directory for schema files" >&5
+$as_echo "Using $GCONF_SCHEMA_FILE_DIR as install directory for schema files" >&6; }
+
+ # Check whether --enable-schemas-install was given.
+if test "${enable_schemas_install+set}" = set; then :
+ enableval=$enable_schemas_install; case ${enableval} in
+ yes|no) ;;
+ *) as_fn_error $? "bad value ${enableval} for --enable-schemas-install" "$LINENO" 5 ;;
+ esac
+fi
+
+ if test "$enable_schemas_install" != no; then
+ GCONF_SCHEMAS_INSTALL_TRUE=
+ GCONF_SCHEMAS_INSTALL_FALSE='#'
+else
+ GCONF_SCHEMAS_INSTALL_TRUE='#'
+ GCONF_SCHEMAS_INSTALL_FALSE=
+fi
+
+
+
+############### common
+
+# Checks pthread
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_create in -lpthread" >&5
+$as_echo_n "checking for pthread_create in -lpthread... " >&6; }
+if ${ac_cv_lib_pthread_pthread_create+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lpthread $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char pthread_create ();
+int
+main ()
+{
+return pthread_create ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_pthread_pthread_create=yes
+else
+ ac_cv_lib_pthread_pthread_create=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_create" >&5
+$as_echo "$ac_cv_lib_pthread_pthread_create" >&6; }
+if test "x$ac_cv_lib_pthread_pthread_create" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBPTHREAD 1
+_ACEOF
+
+ LIBS="-lpthread $LIBS"
+
+fi
+
+PTHREAD_LIBS=-pthread
+
+
+# Checks sensors, required by psensor and psensor-server
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sensors_init in -lsensors" >&5
+$as_echo_n "checking for sensors_init in -lsensors... " >&6; }
+if ${ac_cv_lib_sensors_sensors_init+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsensors $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char sensors_init ();
+int
+main ()
+{
+return sensors_init ();
+ ;
return 0;
}
_ACEOF
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
# Put the nasty error message in config.log where it belongs
echo "$X11_PKG_ERRORS" >&5
- as_fn_error $? "Package requirements (x11) were not met:
-
-$X11_PKG_ERRORS
-
-Consider adjusting the PKG_CONFIG_PATH environment variable if you
-installed software in a non-standard prefix.
-
-Alternatively, you may set the environment variables X11_CFLAGS
-and X11_LIBS to avoid the need to call pkg-config.
-See the pkg-config man page for more details." "$LINENO" 5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \"x11 missing psensor will not be built\"" >&5
+$as_echo "$as_me: WARNING: \"x11 missing psensor will not be built\"" >&2;}
elif test $pkg_failed = untried; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it
-is in your PATH or set the PKG_CONFIG environment variable to the full
-path to pkg-config.
-
-Alternatively, you may set the environment variables X11_CFLAGS
-and X11_LIBS to avoid the need to call pkg-config.
-See the pkg-config man page for more details.
-
-To get pkg-config, see <http://pkg-config.freedesktop.org/>.
-See \`config.log' for more details" "$LINENO" 5; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \"x11 missing psensor will not be built\"" >&5
+$as_echo "$as_me: WARNING: \"x11 missing psensor will not be built\"" >&2;}
else
X11_CFLAGS=$pkg_cv_X11_CFLAGS
X11_LIBS=$pkg_cv_X11_LIBS
$as_echo "yes" >&6; }
fi
+ if test -n "$X11_LIBS"; then
+ X11_TRUE=
+ X11_FALSE='#'
+else
+ X11_TRUE='#'
+ X11_FALSE=
+fi
+
# Put the nasty error message in config.log where it belongs
echo "$XEXT_PKG_ERRORS" >&5
- as_fn_error $? "Package requirements (xext) were not met:
-
-$XEXT_PKG_ERRORS
-
-Consider adjusting the PKG_CONFIG_PATH environment variable if you
-installed software in a non-standard prefix.
-
-Alternatively, you may set the environment variables XEXT_CFLAGS
-and XEXT_LIBS to avoid the need to call pkg-config.
-See the pkg-config man page for more details." "$LINENO" 5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \"xext missing psensor will not be built\"" >&5
+$as_echo "$as_me: WARNING: \"xext missing psensor will not be built\"" >&2;}
elif test $pkg_failed = untried; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it
-is in your PATH or set the PKG_CONFIG environment variable to the full
-path to pkg-config.
-
-Alternatively, you may set the environment variables XEXT_CFLAGS
-and XEXT_LIBS to avoid the need to call pkg-config.
-See the pkg-config man page for more details.
-
-To get pkg-config, see <http://pkg-config.freedesktop.org/>.
-See \`config.log' for more details" "$LINENO" 5; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \"xext missing psensor will not be built\"" >&5
+$as_echo "$as_me: WARNING: \"xext missing psensor will not be built\"" >&2;}
else
XEXT_CFLAGS=$pkg_cv_XEXT_CFLAGS
XEXT_LIBS=$pkg_cv_XEXT_LIBS
$as_echo "yes" >&6; }
fi
+ if test -n "$XEXT_LIBS"; then
+ XEXT_TRUE=
+ XEXT_FALSE='#'
+else
+ XEXT_TRUE='#'
+ XEXT_FALSE=
+fi
+
-# Checks GTK
-GTK_LIBS=
+# Checks GTK+ 3.0
pkg_failed=no
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTK" >&5
# Put the nasty error message in config.log where it belongs
echo "$GTK_PKG_ERRORS" >&5
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \"GTK+ 3 not present\"" >&5
-$as_echo "$as_me: WARNING: \"GTK+ 3 not present\"" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \"gtk missing psensor will not be built\"" >&5
+$as_echo "$as_me: WARNING: \"gtk missing psensor will not be built\"" >&2;}
elif test $pkg_failed = untried; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \"GTK+ 3 not present\"" >&5
-$as_echo "$as_me: WARNING: \"GTK+ 3 not present\"" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \"gtk missing psensor will not be built\"" >&5
+$as_echo "$as_me: WARNING: \"gtk missing psensor will not be built\"" >&2;}
else
GTK_CFLAGS=$pkg_cv_GTK_CFLAGS
GTK_LIBS=$pkg_cv_GTK_LIBS
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
-$as_echo "#define HAVE_GTK3 1" >>confdefs.h
-
fi
if test -n "$GTK_LIBS"; then
GTK_TRUE=
GTK_FALSE=
fi
+# ensure that only allowed headers are included
+GTK_CFLAGS+=" -DGTK_DISABLE_SINGLE_INCLUDES "
+# ensure that no gtk deprecated symbols are used
+GTK_CFLAGS+=" -DGDK_DISABLE_DEPRECATED "
+GTK_CFLAGS+=" -DGTK_DISABLE_DEPRECATED "
+# ensure use of accessors
+GTK_CFLAGS+=" -DGSEAL_ENABLE "
-if test "$GTK_LIBS" == ""; then
+# Check GCONF
pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTK" >&5
-$as_echo_n "checking for GTK... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GCONF" >&5
+$as_echo_n "checking for GCONF... " >&6; }
-if test -n "$GTK_CFLAGS"; then
- pkg_cv_GTK_CFLAGS="$GTK_CFLAGS"
+if test -n "$GCONF_CFLAGS"; then
+ pkg_cv_GCONF_CFLAGS="$GCONF_CFLAGS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk+-2.0 >= 2.18\""; } >&5
- ($PKG_CONFIG --exists --print-errors "gtk+-2.0 >= 2.18") 2>&5
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gconf-2.0\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "gconf-2.0") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
- pkg_cv_GTK_CFLAGS=`$PKG_CONFIG --cflags "gtk+-2.0 >= 2.18" 2>/dev/null`
+ pkg_cv_GCONF_CFLAGS=`$PKG_CONFIG --cflags "gconf-2.0" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
else
pkg_failed=yes
else
pkg_failed=untried
fi
-if test -n "$GTK_LIBS"; then
- pkg_cv_GTK_LIBS="$GTK_LIBS"
+if test -n "$GCONF_LIBS"; then
+ pkg_cv_GCONF_LIBS="$GCONF_LIBS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk+-2.0 >= 2.18\""; } >&5
- ($PKG_CONFIG --exists --print-errors "gtk+-2.0 >= 2.18") 2>&5
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gconf-2.0\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "gconf-2.0") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
- pkg_cv_GTK_LIBS=`$PKG_CONFIG --libs "gtk+-2.0 >= 2.18" 2>/dev/null`
+ pkg_cv_GCONF_LIBS=`$PKG_CONFIG --libs "gconf-2.0" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
else
pkg_failed=yes
_pkg_short_errors_supported=no
fi
if test $_pkg_short_errors_supported = yes; then
- GTK_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gtk+-2.0 >= 2.18" 2>&1`
+ GCONF_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gconf-2.0" 2>&1`
else
- GTK_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gtk+-2.0 >= 2.18" 2>&1`
+ GCONF_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gconf-2.0" 2>&1`
fi
# Put the nasty error message in config.log where it belongs
- echo "$GTK_PKG_ERRORS" >&5
-
- as_fn_error $? "Package requirements (gtk+-2.0 >= 2.18) were not met:
-
-$GTK_PKG_ERRORS
-
-Consider adjusting the PKG_CONFIG_PATH environment variable if you
-installed software in a non-standard prefix.
+ echo "$GCONF_PKG_ERRORS" >&5
-Alternatively, you may set the environment variables GTK_CFLAGS
-and GTK_LIBS to avoid the need to call pkg-config.
-See the pkg-config man page for more details." "$LINENO" 5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \"gconf2 missing psensor will not be built\"" >&5
+$as_echo "$as_me: WARNING: \"gconf2 missing psensor will not be built\"" >&2;}
elif test $pkg_failed = untried; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it
-is in your PATH or set the PKG_CONFIG environment variable to the full
-path to pkg-config.
-
-Alternatively, you may set the environment variables GTK_CFLAGS
-and GTK_LIBS to avoid the need to call pkg-config.
-See the pkg-config man page for more details.
-
-To get pkg-config, see <http://pkg-config.freedesktop.org/>.
-See \`config.log' for more details" "$LINENO" 5; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \"gconf2 missing psensor will not be built\"" >&5
+$as_echo "$as_me: WARNING: \"gconf2 missing psensor will not be built\"" >&2;}
else
- GTK_CFLAGS=$pkg_cv_GTK_CFLAGS
- GTK_LIBS=$pkg_cv_GTK_LIBS
+ GCONF_CFLAGS=$pkg_cv_GCONF_CFLAGS
+ GCONF_LIBS=$pkg_cv_GCONF_LIBS
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
+$as_echo "#define HAVE_GCONF2 1" >>confdefs.h
+
fi
- if test -n "$GTK_LIBS"; then
- GTK_TRUE=
- GTK_FALSE='#'
+ if test -n "$GCONF_LIBS"; then
+ GCONF_TRUE=
+ GCONF_FALSE='#'
else
- GTK_TRUE='#'
- GTK_FALSE=
+ GCONF_TRUE='#'
+ GCONF_FALSE=
fi
-fi
-# Check GCONF
+### Optional
+
+# check libatasmart
pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GCONF" >&5
-$as_echo_n "checking for GCONF... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ATASMART" >&5
+$as_echo_n "checking for ATASMART... " >&6; }
-if test -n "$GCONF_CFLAGS"; then
- pkg_cv_GCONF_CFLAGS="$GCONF_CFLAGS"
+if test -n "$ATASMART_CFLAGS"; then
+ pkg_cv_ATASMART_CFLAGS="$ATASMART_CFLAGS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gconf-2.0\""; } >&5
- ($PKG_CONFIG --exists --print-errors "gconf-2.0") 2>&5
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libatasmart\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "libatasmart") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
- pkg_cv_GCONF_CFLAGS=`$PKG_CONFIG --cflags "gconf-2.0" 2>/dev/null`
+ pkg_cv_ATASMART_CFLAGS=`$PKG_CONFIG --cflags "libatasmart" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
else
pkg_failed=yes
else
pkg_failed=untried
fi
-if test -n "$GCONF_LIBS"; then
- pkg_cv_GCONF_LIBS="$GCONF_LIBS"
+if test -n "$ATASMART_LIBS"; then
+ pkg_cv_ATASMART_LIBS="$ATASMART_LIBS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gconf-2.0\""; } >&5
- ($PKG_CONFIG --exists --print-errors "gconf-2.0") 2>&5
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libatasmart\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "libatasmart") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
- pkg_cv_GCONF_LIBS=`$PKG_CONFIG --libs "gconf-2.0" 2>/dev/null`
+ pkg_cv_ATASMART_LIBS=`$PKG_CONFIG --libs "libatasmart" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
else
pkg_failed=yes
_pkg_short_errors_supported=no
fi
if test $_pkg_short_errors_supported = yes; then
- GCONF_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gconf-2.0" 2>&1`
+ ATASMART_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libatasmart" 2>&1`
else
- GCONF_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gconf-2.0" 2>&1`
+ ATASMART_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libatasmart" 2>&1`
fi
# Put the nasty error message in config.log where it belongs
- echo "$GCONF_PKG_ERRORS" >&5
-
- as_fn_error $? "Package requirements (gconf-2.0) were not met:
-
-$GCONF_PKG_ERRORS
+ echo "$ATASMART_PKG_ERRORS" >&5
-Consider adjusting the PKG_CONFIG_PATH environment variable if you
-installed software in a non-standard prefix.
-
-Alternatively, you may set the environment variables GCONF_CFLAGS
-and GCONF_LIBS to avoid the need to call pkg-config.
-See the pkg-config man page for more details." "$LINENO" 5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \"Library atasmart not present\"" >&5
+$as_echo "$as_me: WARNING: \"Library atasmart not present\"" >&2;}
elif test $pkg_failed = untried; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it
-is in your PATH or set the PKG_CONFIG environment variable to the full
-path to pkg-config.
-
-Alternatively, you may set the environment variables GCONF_CFLAGS
-and GCONF_LIBS to avoid the need to call pkg-config.
-See the pkg-config man page for more details.
-
-To get pkg-config, see <http://pkg-config.freedesktop.org/>.
-See \`config.log' for more details" "$LINENO" 5; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \"Library atasmart not present\"" >&5
+$as_echo "$as_me: WARNING: \"Library atasmart not present\"" >&2;}
else
- GCONF_CFLAGS=$pkg_cv_GCONF_CFLAGS
- GCONF_LIBS=$pkg_cv_GCONF_LIBS
+ ATASMART_CFLAGS=$pkg_cv_ATASMART_CFLAGS
+ ATASMART_LIBS=$pkg_cv_ATASMART_LIBS
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
+$as_echo "#define HAVE_ATASMART 1" >>confdefs.h
+
+fi
+
+ if test -n "$ATASMART_LIBS"; then
+ ATASMART_TRUE=
+ ATASMART_FALSE='#'
+else
+ ATASMART_TRUE='#'
+ ATASMART_FALSE=
fi
-### Optional
# Check libnotify
LIBNOTIFY_LIBS=
pkg_cv_JSON_CFLAGS="$JSON_CFLAGS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"json-c\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "json-c") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_JSON_CFLAGS=`$PKG_CONFIG --cflags "json-c" 2>/dev/null`
+ test "x$?" != "x0" && pkg_failed=yes
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+if test -n "$JSON_LIBS"; then
+ pkg_cv_JSON_LIBS="$JSON_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"json-c\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "json-c") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_JSON_LIBS=`$PKG_CONFIG --libs "json-c" 2>/dev/null`
+ test "x$?" != "x0" && pkg_failed=yes
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi
+ if test $_pkg_short_errors_supported = yes; then
+ JSON_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "json-c" 2>&1`
+ else
+ JSON_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "json-c" 2>&1`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$JSON_PKG_ERRORS" >&5
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \"json-c missing\"" >&5
+$as_echo "$as_me: WARNING: \"json-c missing\"" >&2;}
+elif test $pkg_failed = untried; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \"json-c missing\"" >&5
+$as_echo "$as_me: WARNING: \"json-c missing\"" >&2;}
+else
+ JSON_CFLAGS=$pkg_cv_JSON_CFLAGS
+ JSON_LIBS=$pkg_cv_JSON_LIBS
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+$as_echo "#define HAVE_JSON 1" >>confdefs.h
+
+fi
+
+if test "$JSON_LIBS" == ""; then
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for JSON" >&5
+$as_echo_n "checking for JSON... " >&6; }
+
+if test -n "$JSON_CFLAGS"; then
+ pkg_cv_JSON_CFLAGS="$JSON_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
{ { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"json\""; } >&5
($PKG_CONFIG --exists --print-errors "json") 2>&5
ac_status=$?
# Put the nasty error message in config.log where it belongs
echo "$JSON_PKG_ERRORS" >&5
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \"Remote monitoring disabled" >&5
-$as_echo "$as_me: WARNING: \"Remote monitoring disabled" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \"json0 missing\"" >&5
+$as_echo "$as_me: WARNING: \"json0 missing\"" >&2;}
elif test $pkg_failed = untried; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \"Remote monitoring disabled" >&5
-$as_echo "$as_me: WARNING: \"Remote monitoring disabled" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \"json0 missing\"" >&5
+$as_echo "$as_me: WARNING: \"json0 missing\"" >&2;}
else
JSON_CFLAGS=$pkg_cv_JSON_CFLAGS
JSON_LIBS=$pkg_cv_JSON_LIBS
$as_echo "#define HAVE_JSON 1" >>confdefs.h
+
+$as_echo "#define HAVE_JSON_0 1" >>confdefs.h
+
+fi
fi
+
if test -n "$JSON_LIBS"; then
JSON_TRUE=
JSON_FALSE='#'
-ac_config_files="$ac_config_files Makefile src/Makefile src/glade/Makefile src/lib/Makefile src/server/Makefile icons/hicolor/scalable/Makefile icons/hicolor/14x14/Makefile icons/hicolor/16x16/Makefile icons/hicolor/22x22/Makefile icons/hicolor/24x24/Makefile icons/hicolor/32x32/Makefile icons/hicolor/48x48/Makefile icons/hicolor/64x64/Makefile icons/ubuntu-mono-dark/status/22/Makefile icons/ubuntu-mono-light/status/22/Makefile icons/ubuntu-mono-dark/apps/22/Makefile www/Makefile po/Makefile.in tests/Makefile"
+ac_config_files="$ac_config_files Makefile doc/Makefile src/Makefile src/glade/Makefile src/lib/Makefile src/server/Makefile icons/hicolor/scalable/Makefile icons/hicolor/14x14/Makefile icons/hicolor/16x16/Makefile icons/hicolor/22x22/Makefile icons/hicolor/24x24/Makefile icons/hicolor/32x32/Makefile icons/hicolor/48x48/Makefile icons/hicolor/64x64/Makefile icons/ubuntu-mono-dark/status/22/Makefile icons/ubuntu-mono-light/status/22/Makefile icons/ubuntu-mono-dark/apps/22/Makefile www/Makefile po/Makefile.in tests/Makefile"
for ac_prog in help2man
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_HELP2MAN="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
done
+# Extract the first word of "cppcheck", so it can be a program name with args.
+set dummy cppcheck; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_HAVE_CPPCHECK+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$HAVE_CPPCHECK"; then
+ ac_cv_prog_HAVE_CPPCHECK="$HAVE_CPPCHECK" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_HAVE_CPPCHECK="yes"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+HAVE_CPPCHECK=$ac_cv_prog_HAVE_CPPCHECK
+if test -n "$HAVE_CPPCHECK"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HAVE_CPPCHECK" >&5
+$as_echo "$HAVE_CPPCHECK" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test -n "$HAVE_CPPCHECK"; then
+ CPPCHECK_TRUE=
+ CPPCHECK_FALSE='#'
+else
+ CPPCHECK_TRUE='#'
+ CPPCHECK_FALSE=
+fi
+
+
cat >confcache <<\_ACEOF
# This file is a shell script that caches the results of configure
# tests run on this system so they can be shared between configure
as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
-if test -z "${GTK_TRUE}" && test -z "${GTK_FALSE}"; then
- as_fn_error $? "conditional \"GTK\" was never defined.
+if test -z "${GCONF_SCHEMAS_INSTALL_TRUE}" && test -z "${GCONF_SCHEMAS_INSTALL_FALSE}"; then
+ as_fn_error $? "conditional \"GCONF_SCHEMAS_INSTALL\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${X11_TRUE}" && test -z "${X11_FALSE}"; then
+ as_fn_error $? "conditional \"X11\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${XEXT_TRUE}" && test -z "${XEXT_FALSE}"; then
+ as_fn_error $? "conditional \"XEXT\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${GTK_TRUE}" && test -z "${GTK_FALSE}"; then
as_fn_error $? "conditional \"GTK\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
+if test -z "${GCONF_TRUE}" && test -z "${GCONF_FALSE}"; then
+ as_fn_error $? "conditional \"GCONF\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${ATASMART_TRUE}" && test -z "${ATASMART_FALSE}"; then
+ as_fn_error $? "conditional \"ATASMART\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
if test -z "${LIBNOTIFY_TRUE}" && test -z "${LIBNOTIFY_FALSE}"; then
as_fn_error $? "conditional \"LIBNOTIFY\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
as_fn_error $? "conditional \"GTOP\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
+if test -z "${CPPCHECK_TRUE}" && test -z "${CPPCHECK_FALSE}"; then
+ as_fn_error $? "conditional \"CPPCHECK\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
: "${CONFIG_STATUS=./config.status}"
ac_write_fail=0
# ... but there are two gotchas:
# 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
# 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
- # In both cases, we have to default to `cp -p'.
+ # In both cases, we have to default to `cp -pR'.
ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
elif ln conf$$.file conf$$ 2>/dev/null; then
as_ln_s=ln
else
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
fi
else
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
fi
rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
rmdir conf$$.dir 2>/dev/null
as_mkdir_p=false
fi
-if test -x / >/dev/null 2>&1; then
- as_test_x='test -x'
-else
- if ls -dL / >/dev/null 2>&1; then
- as_ls_L_option=L
- else
- as_ls_L_option=
- fi
- as_test_x='
- eval sh -c '\''
- if test -d "$1"; then
- test -d "$1/.";
- else
- case $1 in #(
- -*)set "./$1";;
- esac;
- case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
- ???[sx]*):;;*)false;;esac;fi
- '\'' sh
- '
-fi
-as_executable_p=$as_test_x
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+ test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
# Sed expression to map a string onto a valid CPP name.
as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by psensor $as_me 0.6.2.17, which was
-generated by GNU Autoconf 2.68. Invocation command line was
+This file was extended by psensor $as_me 0.8.0.4, which was
+generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
CONFIG_HEADERS = $CONFIG_HEADERS
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-psensor config.status 0.6.2.17
-configured by $0, generated by GNU Autoconf 2.68,
+psensor config.status 0.8.0.4
+configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
-Copyright (C) 2010 Free Software Foundation, Inc.
+Copyright (C) 2012 Free Software Foundation, Inc.
This config.status script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it."
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
if \$ac_cs_recheck; then
- set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+ set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
shift
\$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
CONFIG_SHELL='$SHELL'
"depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
"po-directories") CONFIG_COMMANDS="$CONFIG_COMMANDS po-directories" ;;
"Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+ "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
"src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
"src/glade/Makefile") CONFIG_FILES="$CONFIG_FILES src/glade/Makefile" ;;
"src/lib/Makefile") CONFIG_FILES="$CONFIG_FILES src/lib/Makefile" ;;
# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
-AC_PREREQ([2.64])
-AC_INIT([psensor], [0.6.2.17],[jeanfi@gmail.com],[psensor],[http://wpitchoune.net/psensor])
+AC_PREREQ([2.69])
+AC_INIT([psensor], [0.8.0.4],[jeanfi@gmail.com],[psensor],[http://wpitchoune.net/psensor])
AM_INIT_AUTOMAKE([-Wall -Werror gnu])
-AC_CONFIG_SRCDIR([src/compat.h])
+AC_CONFIG_SRCDIR([src/ui.c])
AC_CONFIG_HEADERS([config.h])
+# m4
+AC_CONFIG_MACRO_DIR([m4])
+
# Checks for programs.
AC_PROG_CC
AM_PROG_CC_C_O
+AC_SYS_LARGEFILE
+
# Checks lib build
AC_PROG_RANLIB
+AM_PROG_AR
# Checks for header files.
AC_PATH_X
-AC_CHECK_HEADERS([arpa/inet.h netinet/in.h stdint.h stdlib.h string.h sys/socket.h sys/time.h unistd.h getopt.h])
+AC_CHECK_HEADERS([stdbool.h])
# Checks for typedefs, structures, and compiler characteristics.
AC_TYPE_SIZE_T
AM_GNU_GETTEXT_VERSION([0.16])
AM_GNU_GETTEXT([external])
+# Gconf
+AC_PATH_PROG(GCONFTOOL, gconftool-2, no)
+AM_GCONF_SOURCE_2
+
############### common
+# Checks pthread
+AC_CHECK_LIB(pthread, pthread_create)
+PTHREAD_LIBS=-pthread
+AC_SUBST(PTHREAD_LIBS)
+
# Checks sensors, required by psensor and psensor-server
AC_CHECK_LIB(sensors, sensors_init)
AC_CHECK_HEADERS([sensors/sensors.h sensors/errors.h])
### Required
-PKG_CHECK_MODULES(X11, x11)
+PKG_CHECK_MODULES(X11, x11,,[AC_MSG_WARN("x11 missing psensor will not be built")])
+AM_CONDITIONAL(X11, test -n "$X11_LIBS")
AC_SUBST(X11_CFLAGS)
AC_SUBST(X11_LIBS)
-PKG_CHECK_MODULES(XEXT, xext)
+PKG_CHECK_MODULES(XEXT, xext,,[AC_MSG_WARN("xext missing psensor will not be built")])
+AM_CONDITIONAL(XEXT, test -n "$XEXT_LIBS")
AC_SUBST(XEXT_CFLAGS)
AC_SUBST(XEXT_LIBS)
-# Checks GTK
-GTK_LIBS=
-PKG_CHECK_MODULES(GTK,
- gtk+-3.0,
- [AC_DEFINE([HAVE_GTK3],[1],[Use GTK3])],
- [AC_MSG_WARN("GTK+ 3 not present")])
+# Checks GTK+ 3.0
+PKG_CHECK_MODULES(GTK, gtk+-3.0,,[AC_MSG_WARN("gtk missing psensor will not be built")])
AM_CONDITIONAL(GTK, test -n "$GTK_LIBS")
+# ensure that only allowed headers are included
+GTK_CFLAGS+=" -DGTK_DISABLE_SINGLE_INCLUDES "
+# ensure that no gtk deprecated symbols are used
+GTK_CFLAGS+=" -DGDK_DISABLE_DEPRECATED "
+GTK_CFLAGS+=" -DGTK_DISABLE_DEPRECATED "
+# ensure use of accessors
+GTK_CFLAGS+=" -DGSEAL_ENABLE "
AC_SUBST(GTK_CFLAGS)
AC_SUBST(GTK_LIBS)
-if test "$GTK_LIBS" == ""; then
- PKG_CHECK_MODULES(GTK, gtk+-2.0 >= 2.18)
- AM_CONDITIONAL(GTK, test -n "$GTK_LIBS")
- AC_SUBST(GTK_CFLAGS)
- AC_SUBST(GTK_LIBS)
-fi
-
# Check GCONF
-PKG_CHECK_MODULES(GCONF, gconf-2.0)
+PKG_CHECK_MODULES(GCONF, gconf-2.0,
+ [AC_DEFINE([HAVE_GCONF2],[1],[Use gconf2])],
+ [AC_MSG_WARN("gconf2 missing psensor will not be built")])
+AM_CONDITIONAL(GCONF, test -n "$GCONF_LIBS")
AC_SUBST(GCONF_CFLAGS)
AC_SUBST(GCONF_LIBS)
### Optional
+# check libatasmart
+PKG_CHECK_MODULES(ATASMART, libatasmart,
+ [AC_DEFINE([HAVE_ATASMART],[1],[Use libatasmart])],
+ [AC_MSG_WARN("Library atasmart not present")])
+
+AM_CONDITIONAL(ATASMART, test -n "$ATASMART_LIBS")
+AC_SUBST(ATASMART_CFLAGS)
+AC_SUBST(ATASMART_LIBS)
+
# Check libnotify
LIBNOTIFY_LIBS=
PKG_CHECK_MODULES(LIBNOTIFY,
# Check JSON, needed for remote monitoring
JSON_LIBS=
PKG_CHECK_MODULES(JSON,
- json,
- [AC_DEFINE([HAVE_JSON],[1],[Use JSON])],
- [AC_MSG_WARN("Remote monitoring disabled, json missing")])
+ json-c,
+ [AC_DEFINE([HAVE_JSON],[1],[Use JSON])],
+ [AC_MSG_WARN("json-c missing")])
+
+if test "$JSON_LIBS" == ""; then
+PKG_CHECK_MODULES(JSON,
+ json,
+ [AC_DEFINE([HAVE_JSON],[1],[Use JSON])
+ AC_DEFINE([HAVE_JSON_0],[1],[Use JSON0])],
+ [AC_MSG_WARN("json0 missing")])
+fi
+
AM_CONDITIONAL(JSON, test -n "$JSON_LIBS")
AC_SUBST(JSON_CFLAGS)
AC_SUBST(JSON_LIBS)
AC_CONFIG_FILES([
Makefile
+ doc/Makefile
src/Makefile
src/glade/Makefile
src/lib/Makefile
AC_CHECK_PROGS([HELP2MAN], [help2man])
+AC_CHECK_PROG(HAVE_CPPCHECK, cppcheck, yes)
+AM_CONDITIONAL(CPPCHECK, test -n "$HAVE_CPPCHECK")
+
AC_OUTPUT
+psensor (0.8.0.4-1) unstable; urgency=low
+
+ * New upstream release.
+ * debian/control
+ + added dep to autotools-dev to regenerate config.{guess,sub}.
+ + added vcs fields.
+ + fixed ordering of build-deps.
+ + longer description for psensor-common.
+ * debian/copyright
+ + copyright end date set to 2013.
+ * debian/psensor*.lintian-overrides
+ + ignored no-upstream-change lintian warnings as
+ upstream does not provide it.
+ * removed debian/docs because there are multiple bin packages.
+ * debian/psensor-common.install
+ + added README.
+ * debian/psensor-common.doc-base.manual
+ + registered to doc-base.
+ * debian/rules
+ + regenerate config.{guess,sub} automatically. (Closes: #727950)
+
+ -- Jean-Philippe Orsini <jeanfi@gmail.com> Fri, 20 Sep 2013 19:39:45 -0400
+
+psensor (0.8.0.3-2) unstable; urgency=low
+
+ * debian/control
+ + exclude build dep to atasmart lib for hurd and kfreebsd.
+
+ -- Jean-Philippe Orsini <jeanfi@gmail.com> Sun, 08 Sep 2013 06:36:33 -0400
+
+psensor (0.8.0.3-1) unstable; urgency=low
+
+ * New upstream release.
+ + fixed realloc null returned value not handled in amd.c.
+ + fixed url var in main function not freed.
+ + added message when no sensor graphs are enabled. (Closes: #689355)
+ + replaced deprecated GtkColorSelectionDialog by GtkColorChooserDialog.
+ to avoid build failure with recent GTK releases. (LP: #1184442)
+ * debian/control
+ + added builddep to cppcheck.
+ + added builddep to asciidoc.
+ + added mention of FAQ in the psensor-common description.
+ + added mention of libatasmart support in psensor description.
+ + replaced builddep libjson0-dev by libjson-c-dev.
+ + switched to Standards-Version 3.9.4.
+ * debian/psensor-common.install
+ + added faq.txt and faq.html.
+ * debian/psensor.install
+ + added psensor.glade.
+
+ -- Jean-Philippe Orsini <jeanfi@gmail.com> Sat, 25 May 2013 04:16:57 -0400
+
+psensor (0.7.0.3-1) unstable; urgency=low
+
+ * New upstream release.
+ + added gconf schema. (LP: #1026807)
+ + fixed systray and application indicator visible at the
+ same time. (LP: #971098)
+ + fixed wrong background color, get the background color of
+ the window and not the canvas widget. (LP: #973122)
+ + removed hicolor/48x48/psensor_hot.png. (LP: #1029065)
+ + added degree sign for celcius. (LP: #1021900)
+ + fixed hide window on startup for gnome-shell. (Closes: #676361)
+ * debian/control
+ + added builddep to libatasmart-dev.
+ + switched to debhelper 9.
+ * debian/psensor.install
+ + added gconf schema.
+ * debian/rules
+ + set GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL to 1 to avoid gconf
+ schema installation during package build.
+ * debian/compat
+ + switched to debhelper 9, fixes hardening-no-relro and
+ hardening-no-fortify-functions lintian warnings.
+
+ -- Jean-Philippe Orsini <jeanfi@gmail.com> Sun, 19 Aug 2012 04:26:27 -0400
+
psensor (0.6.2.17-2) unstable; urgency=low
* debian/control
psensor (0.6.2.17-1) unstable; urgency=low
- * New upstream release
+ * New upstream release.
- Fixed sensor type displayed in sensor preferences. (Closes LP: #968912)
* debian/control
- Switched to Standards-Version 3.9.3.
psensor (0.6.2.16-1) unstable; urgency=low
- * New upstream release
+ * New upstream release.
- removed -pedantic compilation option. (Closes LP: #905893)
* debian/control, debian/psensor.install, debian/psensor-server.install:
- applied wrap-and-sort. (Closes: #652531)
psensor (0.6.2.15-1) unstable; urgency=low
- * New upstream release
+ * New upstream release.
- fct sysinfo is replaced by gtop2 calls. (Closes: #650533)
* debian/control
- set priority to 'extra' instead of 'optional' due to dependence
psensor (0.6.2.14-1) unstable; urgency=low
- * New upstream release
+ * New upstream release.
- monochrome icons for Ubuntu themes. (Closes LP: #811003)
* debian/copyright:
- replaced email with my personnal one
psensor (0.6.1.9-1) unstable; urgency=low
- * New upstream release
+ * New upstream release.
* debian/control:
- Fixed Lintian warning: newer-standards-version.
psensor (0.6.1.8-1) unstable; urgency=low
- * New upstream release
+ * New upstream release.
* debian/control:
- removed empty paragraphs. (Closes: #624236)
- added build-dep to autoconf,automake,gettext,autopoint
psensor (0.6.1.7-1) unstable; urgency=low
- * New upstream release
+ * New upstream release.
-- Jean-Philippe Orsini <jeanfi@gmail.com> Tue, 19 Apr 2011 14:43:17 +0200
psensor (0.6.1.6-1) unstable; urgency=low
- * New upstream release
+ * New upstream release.
* debian/control: fixed capitalization-error-in-description
-- Jean-Philippe Orsini <jeanfi@gmail.com> Thu, 14 Apr 2011 23:57:35 +0200
psensor (0.6.1.5-1) unstable; urgency=low
- * First official Debian package.
+ * Initial release.
-- Jean-Philippe Orsini <jeanfi@gmail.com> Sun, 20 Feb 2011 15:15:30 +0100
-
-psensor (0.6.1.5-0ubuntu1) maverick; urgency=low
-
- * New upstream release
-
- -- Jean-Philippe Orsini <jeanfi@gmail.com> Thu, 17 Feb 2011 02:15:50 +0100
-
-psensor (0.6.1.4-0ubuntu1) maverick; urgency=low
-
- * New upstream release
-
- -- Jean-Philippe Orsini <jeanfi@gmail.com> Wed, 16 Feb 2011 19:17:18 +0100
-
-psensor (0.6.1.3-1) maverick; urgency=low
-
- * upgrade upstream
- * removed debian/tmp in .install files
- * improved long description of the packages
- * fixed debian/copyright(add real name and license preamble)
- * use dh_installman
- * added debian/watch file
-
- -- Jean-Philippe Orsini <jeanfi@gmail.com> Wed, 16 Feb 2011 09:56:05 +0100
-
-psensor (0.6.1.1-3) lucid; urgency=low
-
- * bump lucid
-
- -- jeanfi <jeanfi@gmail.com> Tue, 15 Feb 2011 12:10:08 +0100
-
-psensor (0.6.1.1-2) natty; urgency=low
-
- * bump natty
-
- -- jeanfi <jeanfi@gmail.com> Tue, 15 Feb 2011 12:09:19 +0100
-
-psensor (0.6.1.1-1) maverick; urgency=low
-
- * upgrade upstream
-
- -- jeanfi <jeanfi@gmail.com> Tue, 15 Feb 2011 11:41:38 +0100
-
-psensor (0.6.1-4) natty; urgency=low
-
- * bump natty
-
- -- jeanfi <jeanfi@gmail.com> Mon, 14 Feb 2011 12:18:28 +0100
-
-psensor (0.6.1-3) lucid; urgency=low
-
- * bump lucid
-
- -- jeanfi <jeanfi@gmail.com> Mon, 14 Feb 2011 12:17:37 +0100
-
-psensor (0.6.1-2) maverick; urgency=low
-
- * fixed file conflicts concerning doc dir
-
- -- jeanfi <jeanfi@gmail.com> Mon, 14 Feb 2011 11:47:16 +0100
-
-psensor (0.6.1-1) maverick; urgency=low
-
- * upgrade upstream
-
- -- jeanfi <jeanfi@gmail.com> Mon, 14 Feb 2011 10:52:24 +0100
-
-psensor (0.6.0.14-5) karmic; urgency=low
-
- * bump karmic
-
- -- jeanfi <jeanfi@gmail.com> Sun, 13 Feb 2011 14:05:07 +0100
-
-psensor (0.6.0.14-4) maverick; urgency=low
-
- * www/index.lua in the psensor-server package
-
- -- jeanfi <jeanfi@gmail.com> Sun, 13 Feb 2011 13:30:30 +0100
-
-psensor (0.6.0.14-3) lucid; urgency=low
-
- * bump lucid
-
- -- jeanfi <jeanfi@gmail.com> Sat, 12 Feb 2011 21:18:22 +0100
-
-psensor (0.6.0.14-2) natty; urgency=low
-
- * bump natty
-
- -- jeanfi <jeanfi@gmail.com> Sat, 12 Feb 2011 21:16:38 +0100
-
-psensor (0.6.0.14-1) maverick; urgency=low
-
- * upgrade upstream
-
- -- jeanfi <jeanfi@gmail.com> Sat, 12 Feb 2011 14:34:42 +0100
Section: utils
Priority: extra
Maintainer: Jean-Philippe Orsini <jeanfi@gmail.com>
-Build-Depends: autoconf,
+Build-Depends: asciidoc,
+ autoconf,
automake,
autopoint,
- debhelper (>= 7.0.50~),
+ autotools-dev,
+ cppcheck,
+ debhelper (>= 9),
gettext,
help2man,
+ libatasmart-dev [!hurd-any !kfreebsd-any],
libcurl4-gnutls-dev,
libgconf2-dev,
libgtk-3-dev,
libgtop2-dev,
- libjson0-dev,
+ libjson-c-dev,
libmicrohttpd-dev,
libnotify-dev,
libsensors4-dev,
perl
-Standards-Version: 3.9.3
+Standards-Version: 3.9.4
+Vcs-Browser: http://wpitchoune.net/svnpub/packages/debian/psensor/trunk
+Vcs-Svn: http://wpitchoune.net/svnpub/packages/debian/psensor/trunk
Homepage: http://wpitchoune.net/psensor
Package: psensor
It can monitor:
* the temperature of the motherboard and CPU sensors (using lm-sensors).
* the temperature of the NVidia GPUs (using XNVCtrl).
- * the temperature of the Hard Disk Drives (using hddtemp).
+ * the temperature of the Hard Disk Drives (using hddtemp or atasmart lib).
* the rotation speed of the fans (using lm-sensors).
* the sensors of a remote computer (using psensor-server).
.
Architecture: all
Depends: ${misc:Depends}
Description: common files for Psensor and Psensor server
- It contains languages packs for both Psensor and Psensor server.
+ It contains:
+ * the languages packs,
+ * the README,
+ * and the FAQ.
+ This package is required by psensor and psensor-server packages.
.
Upstream Author: Jean-Philippe Orsini <jeanfi@gmail.com>
Copyright:
- Copyright (C) 2010-2012 by Jean-Philippe Orsini <jeanfi@gmail.com>
+ Copyright (C) 2010-2013 by Jean-Philippe Orsini <jeanfi@gmail.com>
License:
License can be found in `/usr/share/common-licenses/GPL-2'.
Packaging:
- Copyright (C) 2010-2012 by Jean-Philippe Orsini <jeanfi@gmail.com>
+ Copyright (C) 2010-2013 by Jean-Philippe Orsini <jeanfi@gmail.com>
released under GNU General Public License version 2.
--- /dev/null
+Document: psensor
+Title: Psensor Manual
+Author: Jean-Philippe Orsini
+Abstract: This manual describes what psensor is and how it can be used
+Section: System/Monitoring
+
+Format: HTML
+Index: /usr/share/doc/psensor/README.html
+Files: /usr/share/doc/psensor/README.html
/usr/share/locale
+/usr/share/doc/psensor/faq.txt
+/usr/share/doc/psensor/faq.html
+/usr/share/doc/psensor/README
+/usr/share/doc/psensor/README.html
--- /dev/null
+# Upstream does not provide changelog
+psensor-common: no-upstream-changelog
--- /dev/null
+# Upstream does not provide changelog
+psensor-server: no-upstream-changelog
/etc/xdg/autostart
+/etc/gconf/schemas/psensor.schemas
/usr/bin/psensor
/usr/share/applications
/usr/share/icons
/usr/share/psensor/psensor-pref.glade
/usr/share/psensor/sensor-edit.glade
+/usr/share/psensor/psensor.glade
--- /dev/null
+# Upstream does not provide changelog
+psensor: no-upstream-changelog
debian/tmp/usr/share/man/man1/psensor.1
-
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
+export GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1
%:
- dh $@
+ dh $@ --with=autotools_dev
version=3
-
-http://wpitchoune.net/psensor/files/psensor-(\d.*)\.tar\.gz
\ No newline at end of file
+http://wpitchoune.net/psensor/files/psensor-(\d.*)\.tar\.gz
#! /bin/sh
# depcomp - compile a program generating dependencies as side-effects
-scriptversion=2009-04-28.21; # UTC
+scriptversion=2012-03-27.16; # UTC
-# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free
-# Software Foundation, Inc.
+# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010,
+# 2011, 2012 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
case $1 in
'')
- echo "$0: No command. Try \`$0 --help' for more information." 1>&2
+ echo "$0: No command. Try '$0 --help' for more information." 1>&2
exit 1;
;;
-h | --h*)
Environment variables:
depmode Dependency tracking mode.
- source Source file read by `PROGRAMS ARGS'.
- object Object file output by `PROGRAMS ARGS'.
+ source Source file read by 'PROGRAMS ARGS'.
+ object Object file output by 'PROGRAMS ARGS'.
DEPDIR directory where to store dependencies.
depfile Dependency file to output.
- tmpdepfile Temporary file to use when outputing dependencies.
+ tmpdepfile Temporary file to use when outputting dependencies.
libtool Whether libtool is used (yes/no).
Report bugs to <bug-automake@gnu.org>.
;;
esac
+# A tabulation character.
+tab=' '
+# A newline character.
+nl='
+'
+
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
echo "depcomp: Variables source, object and depmode must be set" 1>&2
exit 1
# This is just like msvisualcpp but w/o cygpath translation.
# Just convert the backslash-escaped backslashes to single forward
# slashes to satisfy depend.m4
- cygpath_u="sed s,\\\\\\\\,/,g"
+ cygpath_u='sed s,\\\\,/,g'
depmode=msvisualcpp
fi
+if test "$depmode" = msvc7msys; then
+ # This is just like msvc7 but w/o cygpath translation.
+ # Just convert the backslash-escaped backslashes to single forward
+ # slashes to satisfy depend.m4
+ cygpath_u='sed s,\\\\,/,g'
+ depmode=msvc7
+fi
+
+if test "$depmode" = xlc; then
+ # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency informations.
+ gccflag=-qmakedep=gcc,-MF
+ depmode=gcc
+fi
+
case "$depmode" in
gcc3)
## gcc 3 implements dependency tracking that does exactly what
## The second -e expression handles DOS-style file names with drive letters.
sed -e 's/^[^:]*: / /' \
-e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
-## This next piece of magic avoids the `deleted header file' problem.
+## This next piece of magic avoids the "deleted header file" problem.
## The problem is that when a header file which appears in a .P file
## is deleted, the dependency causes make to die (because there is
## typically no way to rebuild the header). We avoid this by adding
## dummy dependencies for each header file. Too bad gcc doesn't do
## this for us directly.
- tr ' ' '
-' < "$tmpdepfile" |
-## Some versions of gcc put a space before the `:'. On the theory
+ tr ' ' "$nl" < "$tmpdepfile" |
+## Some versions of gcc put a space before the ':'. On the theory
## that the space means something, we add a space to the output as
-## well.
+## well. hp depmode also adds that space, but also prefixes the VPATH
+## to the object. Take care to not repeat it in the output.
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
- sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+ sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
+ | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
# clever and replace this with sed code, as IRIX sed won't handle
# lines with more than a fixed number of characters (4096 in
# IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
- # the IRIX cc adds comments like `#:fec' to the end of the
+ # the IRIX cc adds comments like '#:fec' to the end of the
# dependency line.
- tr ' ' '
-' < "$tmpdepfile" \
+ tr ' ' "$nl" < "$tmpdepfile" \
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
- tr '
-' ' ' >> "$depfile"
+ tr "$nl" ' ' >> "$depfile"
echo >> "$depfile"
# The second pass generates a dummy entry for each header file.
- tr ' ' '
-' < "$tmpdepfile" \
+ tr ' ' "$nl" < "$tmpdepfile" \
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
>> "$depfile"
else
rm -f "$tmpdepfile"
;;
+xlc)
+ # This case exists only to let depend.m4 do its work. It works by
+ # looking at the text of this script. This case will never be run,
+ # since it is checked for above.
+ exit 1
+ ;;
+
aix)
# The C for AIX Compiler uses -M and outputs the dependencies
# in a .u file. In older versions, this file always lives in the
- # current directory. Also, the AIX compiler puts `$object:' at the
+ # current directory. Also, the AIX compiler puts '$object:' at the
# start of each line; $object doesn't have directory information.
# Version 6 uses the directory in both cases.
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
test -f "$tmpdepfile" && break
done
if test -f "$tmpdepfile"; then
- # Each line is of the form `foo.o: dependent.h'.
+ # Each line is of the form 'foo.o: dependent.h'.
# Do two passes, one to just change these to
- # `$object: dependent.h' and one to simply `dependent.h:'.
+ # '$object: dependent.h' and one to simply 'dependent.h:'.
sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
- # That's a tab and a space in the [].
- sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+ sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
else
# The sourcefile does not contain any dependencies, so just
# store a dummy comment line, to avoid errors with the Makefile
;;
icc)
- # Intel's C compiler understands `-MD -MF file'. However on
- # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
+ # Intel's C compiler anf tcc (Tiny C Compiler) understand '-MD -MF file'.
+ # However on
+ # $CC -MD -MF foo.d -c -o sub/foo.o sub/foo.c
# ICC 7.0 will fill foo.d with something like
# foo.o: sub/foo.c
# foo.o: sub/foo.h
- # which is wrong. We want:
+ # which is wrong. We want
# sub/foo.o: sub/foo.c
# sub/foo.o: sub/foo.h
# sub/foo.c:
# sub/foo.h:
# ICC 7.1 will output
# foo.o: sub/foo.c sub/foo.h
- # and will wrap long lines using \ :
+ # and will wrap long lines using '\':
# foo.o: sub/foo.c ... \
# sub/foo.h ... \
# ...
-
+ # tcc 0.9.26 (FIXME still under development at the moment of writing)
+ # will emit a similar output, but also prepend the continuation lines
+ # with horizontal tabulation characters.
"$@" -MD -MF "$tmpdepfile"
stat=$?
if test $stat -eq 0; then :
exit $stat
fi
rm -f "$depfile"
- # Each line is of the form `foo.o: dependent.h',
- # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
+ # Each line is of the form 'foo.o: dependent.h',
+ # or 'foo.o: dep1.h dep2.h \', or ' dep3.h dep4.h \'.
# Do two passes, one to just change these to
- # `$object: dependent.h' and one to simply `dependent.h:'.
- sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
- # Some versions of the HPUX 10.20 sed can't process this invocation
- # correctly. Breaking it into two sed invocations is a workaround.
- sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
- sed -e 's/$/ :/' >> "$depfile"
+ # '$object: dependent.h' and one to simply 'dependent.h:'.
+ sed -e "s/^[ $tab][ $tab]*/ /" -e "s,^[^:]*:,$object :," \
+ < "$tmpdepfile" > "$depfile"
+ sed '
+ s/[ '"$tab"'][ '"$tab"']*/ /g
+ s/^ *//
+ s/ *\\*$//
+ s/^[^:]*: *//
+ /^$/d
+ /:$/d
+ s/$/ :/
+ ' < "$tmpdepfile" >> "$depfile"
rm -f "$tmpdepfile"
;;
done
if test -f "$tmpdepfile"; then
sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
- # Add `dependent.h:' lines.
+ # Add 'dependent.h:' lines.
sed -ne '2,${
s/^ *//
s/ \\*$//
tru64)
# The Tru64 compiler uses -MD to generate dependencies as a side
- # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
+ # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
# At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
- # dependencies in `foo.d' instead, so we check for that too.
+ # dependencies in 'foo.d' instead, so we check for that too.
# Subdirectories are respected.
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
test "x$dir" = "x$object" && dir=
done
if test -f "$tmpdepfile"; then
sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
- # That's a tab and a space in the [].
- sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+ sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
else
echo "#dummy" > "$depfile"
fi
rm -f "$tmpdepfile"
;;
+msvc7)
+ if test "$libtool" = yes; then
+ showIncludes=-Wc,-showIncludes
+ else
+ showIncludes=-showIncludes
+ fi
+ "$@" $showIncludes > "$tmpdepfile"
+ stat=$?
+ grep -v '^Note: including file: ' "$tmpdepfile"
+ if test "$stat" = 0; then :
+ else
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ rm -f "$depfile"
+ echo "$object : \\" > "$depfile"
+ # The first sed program below extracts the file names and escapes
+ # backslashes for cygpath. The second sed program outputs the file
+ # name when reading, but also accumulates all include files in the
+ # hold buffer in order to output them again at the end. This only
+ # works with sed implementations that can handle large buffers.
+ sed < "$tmpdepfile" -n '
+/^Note: including file: *\(.*\)/ {
+ s//\1/
+ s/\\/\\\\/g
+ p
+}' | $cygpath_u | sort -u | sed -n '
+s/ /\\ /g
+s/\(.*\)/'"$tab"'\1 \\/p
+s/.\(.*\) \\/\1:/
+H
+$ {
+ s/.*/'"$tab"'/
+ G
+ p
+}' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+msvc7msys)
+ # This case exists only to let depend.m4 do its work. It works by
+ # looking at the text of this script. This case will never be run,
+ # since it is checked for above.
+ exit 1
+ ;;
+
#nosideeffect)
# This comment above is used by automake to tell side-effect
# dependency tracking mechanisms from slower ones.
shift
fi
- # Remove `-o $object'.
+ # Remove '-o $object'.
IFS=" "
for arg
do
done
test -z "$dashmflag" && dashmflag=-M
- # Require at least two characters before searching for `:'
+ # Require at least two characters before searching for ':'
# in the target name. This is to cope with DOS-style filenames:
- # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
+ # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
"$@" $dashmflag |
- sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
+ sed 's:^['"$tab"' ]*[^:'"$tab"' ][^:][^:]*\:['"$tab"' ]*:'"$object"'\: :' > "$tmpdepfile"
rm -f "$depfile"
cat < "$tmpdepfile" > "$depfile"
- tr ' ' '
-' < "$tmpdepfile" | \
+ tr ' ' "$nl" < "$tmpdepfile" | \
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
touch "$tmpdepfile"
${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
rm -f "$depfile"
- cat < "$tmpdepfile" > "$depfile"
- sed '1,2d' "$tmpdepfile" | tr ' ' '
-' | \
+ # makedepend may prepend the VPATH from the source file name to the object.
+ # No need to regex-escape $object, excess matching of '.' is harmless.
+ sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
+ sed '1,2d' "$tmpdepfile" | tr ' ' "$nl" | \
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
shift
fi
- # Remove `-o $object'.
+ # Remove '-o $object'.
IFS=" "
for arg
do
sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
rm -f "$depfile"
echo "$object : \\" > "$depfile"
- sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
- echo " " >> "$depfile"
+ sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
+ echo "$tab" >> "$depfile"
sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
rm -f "$tmpdepfile"
;;
--- /dev/null
+dist_doc_DATA = faq.html faq.txt
+
+faq.html: faq.txt ../www/style.css
+ asciidoc --theme style -a themedir=`pwd`/../www -n -a toc faq.txt
\ No newline at end of file
--- /dev/null
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+am__make_dryrun = \
+ { \
+ am__dry=no; \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
+ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+ *) \
+ for am__flg in $$MAKEFLAGS; do \
+ case $$am__flg in \
+ *=*|--*) ;; \
+ *n*) am__dry=yes; break;; \
+ esac; \
+ done;; \
+ esac; \
+ test $$am__dry = yes; \
+ }
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = doc
+DIST_COMMON = $(dist_doc_DATA) $(srcdir)/Makefile.am \
+ $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+am__installdirs = "$(DESTDIR)$(docdir)"
+DATA = $(dist_doc_DATA)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+APPINDICATOR_CFLAGS = @APPINDICATOR_CFLAGS@
+APPINDICATOR_LIBS = @APPINDICATOR_LIBS@
+AR = @AR@
+ATASMART_CFLAGS = @ATASMART_CFLAGS@
+ATASMART_LIBS = @ATASMART_LIBS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CURL_CFLAGS = @CURL_CFLAGS@
+CURL_LIBS = @CURL_LIBS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+GCONFTOOL = @GCONFTOOL@
+GCONF_CFLAGS = @GCONF_CFLAGS@
+GCONF_LIBS = @GCONF_LIBS@
+GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
+GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GREP = @GREP@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LIBS = @GTK_LIBS@
+GTOP_CFLAGS = @GTOP_CFLAGS@
+GTOP_LIBS = @GTOP_LIBS@
+HAVE_CPPCHECK = @HAVE_CPPCHECK@
+HELP2MAN = @HELP2MAN@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+JSON_CFLAGS = @JSON_CFLAGS@
+JSON_LIBS = @JSON_LIBS@
+LDFLAGS = @LDFLAGS@
+LIBATIADL_CFLAGS = @LIBATIADL_CFLAGS@
+LIBATIADL_LIBS = @LIBATIADL_LIBS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBMICROHTTPD_CFLAGS = @LIBMICROHTTPD_CFLAGS@
+LIBMICROHTTPD_LIBS = @LIBMICROHTTPD_LIBS@
+LIBNOTIFY_CFLAGS = @LIBNOTIFY_CFLAGS@
+LIBNOTIFY_LIBS = @LIBNOTIFY_LIBS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NVIDIA_CFLAGS = @NVIDIA_CFLAGS@
+NVIDIA_LIBS = @NVIDIA_LIBS@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POSUB = @POSUB@
+PTHREAD_LIBS = @PTHREAD_LIBS@
+RANLIB = @RANLIB@
+SENSORS_LIBS = @SENSORS_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+UNITY_CFLAGS = @UNITY_CFLAGS@
+UNITY_LIBS = @UNITY_LIBS@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+X11_CFLAGS = @X11_CFLAGS@
+X11_LIBS = @X11_LIBS@
+XEXT_CFLAGS = @XEXT_CFLAGS@
+XEXT_LIBS = @XEXT_LIBS@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+XMKMF = @XMKMF@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+dist_doc_DATA = faq.html faq.txt
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu doc/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-dist_docDATA: $(dist_doc_DATA)
+ @$(NORMAL_INSTALL)
+ @list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(docdir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \
+ done
+
+uninstall-dist_docDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir)
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(DATA)
+installdirs:
+ for dir in "$(DESTDIR)$(docdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-dist_docDATA
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-dist_docDATA
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic distclean \
+ distclean-generic distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am \
+ install-dist_docDATA install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
+ pdf-am ps ps-am uninstall uninstall-am uninstall-dist_docDATA
+
+
+faq.html: faq.txt ../www/style.css
+ asciidoc --theme style -a themedir=`pwd`/../www -n -a toc faq.txt
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 8.6.7" />\r
+<title>Psensor Frequently Asked Questions</title>\r
+<style type="text/css">\r
+body {\r
+ padding: 1em 1em 1em 1em;\r
+ font-family: "Ubuntu", sans-serif;\r
+ font-size: 100%;\r
+ font-style: normal;\r
+ font-weight: normal;\r
+ color: #000;\r
+ background-color: #fff;\r
+ margin: 0 0 0 0;\r
+}\r
+\r
+a {\r
+ color: #1982D1;\r
+ font-style: normal;\r
+ text-decoration: none;\r
+}\r
+\r
+a:hover {\r
+ text-decoration: underline;\r
+}\r
+\r
+h1 {\r
+ font-size: 140%;\r
+ font-style: normal;\r
+ font-weight: bold;\r
+ text-transform: uppercase;\r
+ margin: 0 0 1em 0;\r
+ padding: 0 0 0 0;\r
+}\r
+\r
+\r
+h2, #toctitle{\r
+ font-size: 110%;\r
+ font-style: normal;\r
+ font-weight: bold;\r
+ text-transform: uppercase;\r
+ margin: 2em 0em 1em 0em;\r
+ padding: 0 0 0 0;\r
+}\r
+\r
+#footer {\r
+ padding-top: 2em;\r
+ color: #666;\r
+ clear: both;\r
+ text-align: right;\r
+ font-size: 75%;\r
+}\r
+\r
+p {\r
+ font-size: 100%;\r
+ margin-bottom: 8px;\r
+}\r
+\r
+table {\r
+ text-align: left;\r
+ padding: 0 0 0 0;\r
+ min-width: 50%;\r
+ border-spacing: 0;\r
+ border: 0;\r
+}\r
+\r
+thead {\r
+ background-color: #000;\r
+ color: #fff;\r
+ padding: 0 0 0 0;\r
+}\r
+\r
+tbody {\r
+ padding: 0 0 0 0;\r
+}\r
+\r
+th {\r
+ padding: 0.25em 0.5em 0.25em 0.5em;\r
+ font-style: normal;\r
+ font-weight: normal;\r
+}\r
+\r
+td {\r
+ padding: 0.25em 0.25em 0em 0.25em;\r
+}\r
+\r
+#chart {\r
+ color: #000;\r
+ font-style: normal;\r
+ font-weight: normal;\r
+ width: 100%;\r
+ height: 300px;\r
+}\r
+\r
+ul#menu-list li {\r
+ list-style: none;\r
+}\r
+\r
+#menu-list {\r
+ padding: 0 0 0 0;\r
+ margin: 0 0 0 0;\r
+}\r
+\r
+#menu {\r
+ float: left;\r
+ width: 20%;\r
+ padding: 0 0 0 0;\r
+ margin: 0 0 0 0;\r
+}\r
+\r
+#main {\r
+ float: right;\r
+ width: 80%;\r
+ padding: 0 0 0 0;\r
+ margin: 0 0em 0 0;\r
+}\r
+\r
+em {\r
+ font-weight: bold;\r
+ font-style: normal;\r
+}\r
+\r
+#uptime {\r
+ font-weight: normal;\r
+}\r
+\r
+#menu-list em {\r
+ text-transform: uppercase;\r
+}\r
+\r
+#menu ul li {\r
+ padding-bottom: 1em;\r
+}\r
+\r
+#menu-list ul li {\r
+ padding: 0 0 0 0em;\r
+}\r
+\r
+</style>\r
+<script type="text/javascript">\r
+/*<![CDATA[*/\r
+var asciidoc = { // Namespace.\r
+\r
+/////////////////////////////////////////////////////////////////////\r
+// Table Of Contents generator\r
+/////////////////////////////////////////////////////////////////////\r
+\r
+/* Author: Mihai Bazon, September 2002\r
+ * http://students.infoiasi.ro/~mishoo\r
+ *\r
+ * Table Of Content generator\r
+ * Version: 0.4\r
+ *\r
+ * Feel free to use this script under the terms of the GNU General Public\r
+ * License, as long as you do not remove or alter this notice.\r
+ */\r
+\r
+ /* modified by Troy D. Hanson, September 2006. License: GPL */\r
+ /* modified by Stuart Rackham, 2006, 2009. License: GPL */\r
+\r
+// toclevels = 1..4.\r
+toc: function (toclevels) {\r
+\r
+ function getText(el) {\r
+ var text = "";\r
+ for (var i = el.firstChild; i != null; i = i.nextSibling) {\r
+ if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.\r
+ text += i.data;\r
+ else if (i.firstChild != null)\r
+ text += getText(i);\r
+ }\r
+ return text;\r
+ }\r
+\r
+ function TocEntry(el, text, toclevel) {\r
+ this.element = el;\r
+ this.text = text;\r
+ this.toclevel = toclevel;\r
+ }\r
+\r
+ function tocEntries(el, toclevels) {\r
+ var result = new Array;\r
+ var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');\r
+ // Function that scans the DOM tree for header elements (the DOM2\r
+ // nodeIterator API would be a better technique but not supported by all\r
+ // browsers).\r
+ var iterate = function (el) {\r
+ for (var i = el.firstChild; i != null; i = i.nextSibling) {\r
+ if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {\r
+ var mo = re.exec(i.tagName);\r
+ if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {\r
+ result[result.length] = new TocEntry(i, getText(i), mo[1]-1);\r
+ }\r
+ iterate(i);\r
+ }\r
+ }\r
+ }\r
+ iterate(el);\r
+ return result;\r
+ }\r
+\r
+ var toc = document.getElementById("toc");\r
+ if (!toc) {\r
+ return;\r
+ }\r
+\r
+ // Delete existing TOC entries in case we're reloading the TOC.\r
+ var tocEntriesToRemove = [];\r
+ var i;\r
+ for (i = 0; i < toc.childNodes.length; i++) {\r
+ var entry = toc.childNodes[i];\r
+ if (entry.nodeName.toLowerCase() == 'div'\r
+ && entry.getAttribute("class")\r
+ && entry.getAttribute("class").match(/^toclevel/))\r
+ tocEntriesToRemove.push(entry);\r
+ }\r
+ for (i = 0; i < tocEntriesToRemove.length; i++) {\r
+ toc.removeChild(tocEntriesToRemove[i]);\r
+ }\r
+\r
+ // Rebuild TOC entries.\r
+ var entries = tocEntries(document.getElementById("content"), toclevels);\r
+ for (var i = 0; i < entries.length; ++i) {\r
+ var entry = entries[i];\r
+ if (entry.element.id == "")\r
+ entry.element.id = "_toc_" + i;\r
+ var a = document.createElement("a");\r
+ a.href = "#" + entry.element.id;\r
+ a.appendChild(document.createTextNode(entry.text));\r
+ var div = document.createElement("div");\r
+ div.appendChild(a);\r
+ div.className = "toclevel" + entry.toclevel;\r
+ toc.appendChild(div);\r
+ }\r
+ if (entries.length == 0)\r
+ toc.parentNode.removeChild(toc);\r
+},\r
+\r
+\r
+/////////////////////////////////////////////////////////////////////\r
+// Footnotes generator\r
+/////////////////////////////////////////////////////////////////////\r
+\r
+/* Based on footnote generation code from:\r
+ * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html\r
+ */\r
+\r
+footnotes: function () {\r
+ // Delete existing footnote entries in case we're reloading the footnodes.\r
+ var i;\r
+ var noteholder = document.getElementById("footnotes");\r
+ if (!noteholder) {\r
+ return;\r
+ }\r
+ var entriesToRemove = [];\r
+ for (i = 0; i < noteholder.childNodes.length; i++) {\r
+ var entry = noteholder.childNodes[i];\r
+ if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")\r
+ entriesToRemove.push(entry);\r
+ }\r
+ for (i = 0; i < entriesToRemove.length; i++) {\r
+ noteholder.removeChild(entriesToRemove[i]);\r
+ }\r
+\r
+ // Rebuild footnote entries.\r
+ var cont = document.getElementById("content");\r
+ var spans = cont.getElementsByTagName("span");\r
+ var refs = {};\r
+ var n = 0;\r
+ for (i=0; i<spans.length; i++) {\r
+ if (spans[i].className == "footnote") {\r
+ n++;\r
+ var note = spans[i].getAttribute("data-note");\r
+ if (!note) {\r
+ // Use [\s\S] in place of . so multi-line matches work.\r
+ // Because JavaScript has no s (dotall) regex flag.\r
+ note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];\r
+ spans[i].innerHTML =\r
+ "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +\r
+ "' title='View footnote' class='footnote'>" + n + "</a>]";\r
+ spans[i].setAttribute("data-note", note);\r
+ }\r
+ noteholder.innerHTML +=\r
+ "<div class='footnote' id='_footnote_" + n + "'>" +\r
+ "<a href='#_footnoteref_" + n + "' title='Return to text'>" +\r
+ n + "</a>. " + note + "</div>";\r
+ var id =spans[i].getAttribute("id");\r
+ if (id != null) refs["#"+id] = n;\r
+ }\r
+ }\r
+ if (n == 0)\r
+ noteholder.parentNode.removeChild(noteholder);\r
+ else {\r
+ // Process footnoterefs.\r
+ for (i=0; i<spans.length; i++) {\r
+ if (spans[i].className == "footnoteref") {\r
+ var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");\r
+ href = href.match(/#.*/)[0]; // Because IE return full URL.\r
+ n = refs[href];\r
+ spans[i].innerHTML =\r
+ "[<a href='#_footnote_" + n +\r
+ "' title='View footnote' class='footnote'>" + n + "</a>]";\r
+ }\r
+ }\r
+ }\r
+},\r
+\r
+install: function(toclevels) {\r
+ var timerId;\r
+\r
+ function reinstall() {\r
+ asciidoc.footnotes();\r
+ if (toclevels) {\r
+ asciidoc.toc(toclevels);\r
+ }\r
+ }\r
+\r
+ function reinstallAndRemoveTimer() {\r
+ clearInterval(timerId);\r
+ reinstall();\r
+ }\r
+\r
+ timerId = setInterval(reinstall, 500);\r
+ if (document.addEventListener)\r
+ document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);\r
+ else\r
+ window.onload = reinstallAndRemoveTimer;\r
+}\r
+\r
+}\r
+asciidoc.install(2);\r
+/*]]>*/\r
+</script>\r
+</head>\r
+<body class="article">\r
+<div id="header">\r
+<h1>Psensor Frequently Asked Questions</h1>\r
+<div id="toc">
+ <div id="toctitle">Table of Contents</div>
+ <noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript>
+</div>\r
+</div>\r
+<div id="content">\r
+<div class="sect1">\r
+<h2 id="S_NoSensors">1. No sensors or only cpu usage is displayed</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Psensor is relying on few libraries or softwares for retrieving the information about the computer:</p></div>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+motherboard and CPUs sensors: the information is retrieved\r
+ from the lm-sensors library, it requires that\r
+ ‘sensors-detect’ has been run and the kernel module\r
+ correctly installed. ‘sensors’ can be used for checking.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+GPUs: it depends on which driver you are using:\r
+</p>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+Opensource drivers (nouveau for Nvidia GPUs or\r
+ radeon/ati for ATI GPUs) is used and support sensor\r
+ monitoring for your GPU, the information is using\r
+ lm-sensors, same steps than above.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+proprietary driver Nvidia: run ‘nvidia-settings’ to\r
+ check that it supports sensors monitoring.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+proprietary driver Catalyst/fglx: use ‘aticonfig’ to\r
+ check that it supports sensors monitoring. Important\r
+ note: it requires that you are using a Psensor\r
+ binary compiled with the ATI support.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</li>\r
+<li>\r
+<p>\r
+HDDs: it uses the hddtemp daemon. Verifies that it is\r
+ correctly reporting temperature by using the ‘sudo hddtemp\r
+ /dev/sd?’ command. If hddtemp does not support your disk,\r
+ you may want to try using the libatasmart support instead\r
+ (option –use-libatasmart option).\r
+</p>\r
+</li>\r
+</ul></div>\r
+<div class="paragraph"><p>If the underlying software is reporting sensors which are not\r
+displayed by Psensor, it is probably a bug in Psensor, so please\r
+report it. Otherwise, the issue is on the underlying software itself\r
+and you should contact the corresponding development team or refer to\r
+its documentation.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="S_ATIMonitoring">2. How to monitor an ATI card using the Catalyst driver?</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>For monitoring ATI card using the proprietary Catalyst driver, Psensor\r
+must be compiled with a proprietary library which is not packaged in\r
+any Linux distribution.</p></div>\r
+<div class="paragraph"><p>Unfortunely, due to the license of this library, I cannot provide a\r
+compiled version of Psensor, even in a Ubuntu PPA or Ubuntu/Debian\r
+standard repositories. You have to compile Psensor sensor. You can\r
+find the instructions in the section “ATI/AMD GPU Support” of the\r
+README file available in the Psensor source archives.</p></div>\r
+<div class="paragraph"><p>If you are using the ATI OpenSource driver, it is not needed to\r
+compile Psensor with this proprietary library.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="S_WrongTemperature">3. The reported temperature is obviously wrong</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>If the reported temperature is obviously wrong (never change, lower\r
+than the ambiant temperature, negative, higher than the sun\r
+temperature, etc):</p></div>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+most of the time it is not a bug in Psensor nor in the\r
+ underlying monitoring libraries:\r
+</p>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+if the temperature does not change, it might be due\r
+ to an existent sensor not wired by the hardware\r
+ manufacturer.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+the goal of the sensor is to allow the system to\r
+ detect critical temperature and NOT to report an\r
+ exact temperature. Most sensors report a relative\r
+ temperature. The more it differs from the critical\r
+ temperature , the more it is wrong.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</li>\r
+<li>\r
+<p>\r
+It is only a bug in Psensor if the underlying libraries\r
+ report a different information than Psensor (use the\r
+ appropriate command or software: ‘sensors’, ‘aticonfig’ or\r
+ ‘hddtemp’ to check). In this case, please report a bug.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="S_WhatIsTheSensor">4. What is the sensors XXXX?</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Since Psensor v0.7.0.4, open the preferences of the sensor (click on\r
+its name in the main window and select the menu item Preferences), and\r
+look at the Chip field.</p></div>\r
+<div class="paragraph"><p>For older Psensor releases, look at the Id field, if the string is\r
+starting with:</p></div>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+‘lmsensor coretemp’: Intel CPU.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+‘lmsensor k10temp’,'lmsensor k8temp’,'lmsensor fam15h_power’: AMD CPU.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+‘nvidia’ or ‘lmsensor nouveau’: NVIDIA GPU.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+‘hdd’: hard disk drive.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+‘amd’: AMD GPU.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+‘lmsensor C B’: C is the name of the chip, B the name of the adapter.\r
+</p>\r
+</li>\r
+</ul></div>\r
+<div class="paragraph"><p>For more information about lmsensor devices, see\r
+<a href="http://lm-sensors.org/wiki/Devices">http://lm-sensors.org/wiki/Devices</a>.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="S_BugReport">5. How to report a bug?</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Please use <a href="https://bugs.launchpad.net/psensor/+filebug">https://bugs.launchpad.net/psensor/+filebug</a> to report bugs\r
+even if it can only reproduced with a non-Ubuntu distribution or a\r
+release not available in the standard Ubuntu repositories.</p></div>\r
+<div class="paragraph"><p>You can also use\r
+<a href="https://bugs.launchpad.net/ubuntu/+source/psensor/+filebug">https://bugs.launchpad.net/ubuntu/+source/psensor/+filebug</a> if the bug\r
+can be reproduced with a package from the standard Ubuntu\r
+repositories.</p></div>\r
+<div class="paragraph"><p>If you don’t want to use the launchpad, you can send the report by\r
+email to:</p></div>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+<a href="mailto:psensor-users@googlegroups.com">psensor-users@googlegroups.com</a> (require registration at:\r
+ <a href="https://groups.google.com/forum/?fromgroups&hl=en#!forum/psensor-users">https://groups.google.com/forum/?fromgroups&hl=en#!forum/psensor-users</a>)\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+or <a href="mailto:jeanfi@gmail.com">jeanfi@gmail.com</a>.\r
+</p>\r
+</li>\r
+</ul></div>\r
+<div class="paragraph"><p>If the bug is concerning Debian or Ubuntu derivatives distribution,\r
+please add in its description the output of the command ‘apt-cache\r
+policy psensor’.</p></div>\r
+<div class="paragraph"><p>If it is related to the Psensor source compilation, please add the\r
+full output of the ‘configure’ command.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="S_SubmitIdea">6. How to send ideas, questions or comments?</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Check the FAQ or the TODO pages.</p></div>\r
+<div class="paragraph"><p>If you don’t find the information, you can send an email to the public\r
+mailing-list <a href="mailto:psensor-users@googlegroups.com">psensor-users@googlegroups.com</a> (require registration at:\r
+<a href="https://groups.google.com/forum/?fromgroups&hl=en#!forum/psensor-users">https://groups.google.com/forum/?fromgroups&hl=en#!forum/psensor-users</a>)\r
+or send an email directly to me: <a href="mailto:jeanfi@gmail.com">jeanfi@gmail.com</a>.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="S_Contribute">7. How to contribute?</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>See <a href="http://wpitchoune.net/blog/psensor/how-to-contribute/">http://wpitchoune.net/blog/psensor/how-to-contribute/</a>.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="S_UbuntuInstall">8. How to install Psensor on Ubuntu?</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Psensor is in the official repository, search “psensor” in the software center and install it. More information at: <a href="http://wpitchoune.net/blog/psensor/ubuntu-integration/">http://wpitchoune.net/blog/psensor/ubuntu-integration/</a>.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="S_DebianInstall">9. How to install Psensor on Debian?</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Psensor will be in the official repository since Debian 7.0. You can get the last packaged version from the sid repository. More information at: <a href="http://packages.qa.debian.org/p/psensor.html">http://packages.qa.debian.org/p/psensor.html</a>.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="S_PPA">10. What is the difference between the 3 Ubuntu PPAs?</h2>\r
+<div class="sectionbody">\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+ppa:jfi/ppa: last stable version.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+ppa:jfi/psensor-unstable: last development version, no major\r
+ bug is expected.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+ppa:jfi/psensor-daily-trunk: build each day directly from\r
+ the SVN source repository. It may contain major bugs or\r
+ incomplete features. Useful for contributors or testing\r
+ whether a bug is fixed.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="S_ArchLinuxInstall">11. How to install Psensor on ArchLinux?</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>See <a href="http://aur.archlinux.org/packages.php?ID=37807">http://aur.archlinux.org/packages.php?ID=37807</a>.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="S_OtherInstall">12. How to install Psensor on my Linux distribution?</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Psensor packages are available in the standard repositories of Ubuntu\r
+(since Oneiric) and Debian (since v7) distributions.</p></div>\r
+<div class="paragraph"><p>For other distributions, you will find the compilation and\r
+installation instructions in the section ‘Installation from source\r
+archive’ in the README file of the source archive. Psensor should\r
+compile in any modern distribution.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="S_LOG">13. How to log sensors temperatures?</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>The best way is probably to use sensord or a custom script based on\r
+the output of the different commands like sensors.</p></div>\r
+<div class="paragraph"><p>Anyway, as I received several requests about such feature, since the\r
+0.7.0.4 release it is implemented in both psensor ( menu preferences >\r
+sensors > enable log of measures) and psensor-server (–sensor-log-file\r
+option).</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="S_NO_GRAPH_DISPLAYED">14. No graphs are displayed, but the table of the main window is displaying sensors</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>In the sensors table of the main window, switch on the checkbox of the last\r
+column (named "Enabled" or "Graph" depending on the Psensor version).</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="S_SimilarSoft">15. Is there any other similar softwares?</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Here is a list of few well-known sensors monitoring softwares:</p></div>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+for X11: <a href="http://freecode.com/projects/xsensors">http://freecode.com/projects/xsensors</a>\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+for GNOME2: <a href="http://sensors-applet.sourceforge.net/">http://sensors-applet.sourceforge.net/</a>\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+for Ubuntu Unity: <a href="https://launchpad.net/indicator-sensors">https://launchpad.net/indicator-sensors</a>\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+more general, but can be configured to display sensors\r
+ information: <a href="http://conky.sourceforge.net/">http://conky.sourceforge.net/</a>\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div id="footnotes"><hr /></div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 2013-05-12 17:54:35 CEST\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
--- /dev/null
+Psensor Frequently Asked Questions
+==================================
+
+[[S_NoSensors]]
+No sensors or only cpu usage is displayed
+-----------------------------------------
+
+Psensor is relying on few libraries or softwares for retrieving the information about the computer:
+
+ - motherboard and CPUs sensors: the information is retrieved
+ from the lm-sensors library, it requires that
+ ‘sensors-detect’ has been run and the kernel module
+ correctly installed. ‘sensors’ can be used for checking.
+
+ - GPUs: it depends on which driver you are using:
+
+ * Opensource drivers (nouveau for Nvidia GPUs or
+ radeon/ati for ATI GPUs) is used and support sensor
+ monitoring for your GPU, the information is using
+ lm-sensors, same steps than above.
+
+ * proprietary driver Nvidia: run ‘nvidia-settings’ to
+ check that it supports sensors monitoring.
+
+ * proprietary driver Catalyst/fglx: use ‘aticonfig’ to
+ check that it supports sensors monitoring. Important
+ note: it requires that you are using a Psensor
+ binary compiled with the ATI support.
+
+ - HDDs: it uses the hddtemp daemon. Verifies that it is
+ correctly reporting temperature by using the ‘sudo hddtemp
+ /dev/sd?’ command. If hddtemp does not support your disk,
+ you may want to try using the libatasmart support instead
+ (option –use-libatasmart option).
+
+If the underlying software is reporting sensors which are not
+displayed by Psensor, it is probably a bug in Psensor, so please
+report it. Otherwise, the issue is on the underlying software itself
+and you should contact the corresponding development team or refer to
+its documentation.
+
+[[S_ATIMonitoring]]
+How to monitor an ATI card using the Catalyst driver?
+-----------------------------------------------------
+
+For monitoring ATI card using the proprietary Catalyst driver, Psensor
+must be compiled with a proprietary library which is not packaged in
+any Linux distribution.
+
+Unfortunely, due to the license of this library, I cannot provide a
+compiled version of Psensor, even in a Ubuntu PPA or Ubuntu/Debian
+standard repositories. You have to compile Psensor sensor. You can
+find the instructions in the section “ATI/AMD GPU Support” of the
+README file available in the Psensor source archives.
+
+If you are using the ATI OpenSource driver, it is not needed to
+compile Psensor with this proprietary library.
+
+[[S_WrongTemperature]]
+The reported temperature is obviously wrong
+-------------------------------------------
+
+If the reported temperature is obviously wrong (never change, lower
+than the ambiant temperature, negative, higher than the sun
+temperature, etc):
+
+ - most of the time it is not a bug in Psensor nor in the
+ underlying monitoring libraries:
+
+ * if the temperature does not change, it might be due
+ to an existent sensor not wired by the hardware
+ manufacturer.
+
+ * the goal of the sensor is to allow the system to
+ detect critical temperature and NOT to report an
+ exact temperature. Most sensors report a relative
+ temperature. The more it differs from the critical
+ temperature , the more it is wrong.
+
+ - It is only a bug in Psensor if the underlying libraries
+ report a different information than Psensor (use the
+ appropriate command or software: ‘sensors’, ‘aticonfig’ or
+ ‘hddtemp’ to check). In this case, please report a bug.
+
+[[S_WhatIsTheSensor]]
+What is the sensors XXXX?
+-------------------------
+
+Since Psensor v0.7.0.4, open the preferences of the sensor (click on
+its name in the main window and select the menu item Preferences), and
+look at the Chip field.
+
+For older Psensor releases, look at the Id field, if the string is
+starting with:
+
+ - ‘lmsensor coretemp’: Intel CPU.
+ - ‘lmsensor k10temp’,'lmsensor k8temp’,'lmsensor fam15h_power’: AMD CPU.
+ - ‘nvidia’ or ‘lmsensor nouveau’: NVIDIA GPU.
+ - ‘hdd’: hard disk drive.
+ - ‘amd’: AMD GPU.
+ - ‘lmsensor C B’: C is the name of the chip, B the name of the adapter.
+
+For more information about lmsensor devices, see
+http://lm-sensors.org/wiki/Devices.
+
+[[S_BugReport]]
+How to report a bug?
+--------------------
+
+Please use https://bugs.launchpad.net/psensor/+filebug to report bugs
+even if it can only reproduced with a non-Ubuntu distribution or a
+release not available in the standard Ubuntu repositories.
+
+You can also use
+https://bugs.launchpad.net/ubuntu/+source/psensor/+filebug if the bug
+can be reproduced with a package from the standard Ubuntu
+repositories.
+
+If you don’t want to use the launchpad, you can send the report by
+email to:
+
+ - psensor-users@googlegroups.com (require registration at:
+ https://groups.google.com/forum/?fromgroups&hl=en#!forum/psensor-users)
+ - or jeanfi@gmail.com.
+
+If the bug is concerning Debian or Ubuntu derivatives distribution,
+please add in its description the output of the command ‘apt-cache
+policy psensor’.
+
+If it is related to the Psensor source compilation, please add the
+full output of the ‘configure’ command.
+
+[[S_SubmitIdea]]
+How to send ideas, questions or comments?
+-----------------------------------------
+
+Check the FAQ or the TODO pages.
+
+If you don’t find the information, you can send an email to the public
+mailing-list psensor-users@googlegroups.com (require registration at:
+https://groups.google.com/forum/?fromgroups&hl=en#!forum/psensor-users)
+or send an email directly to me: jeanfi@gmail.com.
+
+
+[[S_Contribute]]
+How to contribute?
+------------------
+
+See http://wpitchoune.net/blog/psensor/how-to-contribute/.
+
+[[S_UbuntuInstall]]
+How to install Psensor on Ubuntu?
+---------------------------------
+
+Psensor is in the official repository, search “psensor” in the software center and install it. More information at: http://wpitchoune.net/blog/psensor/ubuntu-integration/.
+
+[[S_DebianInstall]]
+How to install Psensor on Debian?
+---------------------------------
+
+Psensor will be in the official repository since Debian 7.0. You can get the last packaged version from the sid repository. More information at: http://packages.qa.debian.org/p/psensor.html.
+
+[[S_PPA]]
+What is the difference between the 3 Ubuntu PPAs?
+-------------------------------------------------
+
+ - ppa:jfi/ppa: last stable version.
+
+ - ppa:jfi/psensor-unstable: last development version, no major
+ bug is expected.
+
+ - ppa:jfi/psensor-daily-trunk: build each day directly from
+ the SVN source repository. It may contain major bugs or
+ incomplete features. Useful for contributors or testing
+ whether a bug is fixed.
+
+[[S_ArchLinuxInstall]]
+How to install Psensor on ArchLinux?
+------------------------------------
+
+See http://aur.archlinux.org/packages.php?ID=37807.
+
+[[S_OtherInstall]]
+How to install Psensor on my Linux distribution?
+------------------------------------------------
+
+Psensor packages are available in the standard repositories of Ubuntu
+(since Oneiric) and Debian (since v7) distributions.
+
+For other distributions, you will find the compilation and
+installation instructions in the section ‘Installation from source
+archive’ in the README file of the source archive. Psensor should
+compile in any modern distribution.
+
+[[S_LOG]]
+How to log sensors temperatures?
+--------------------------------
+
+The best way is probably to use sensord or a custom script based on
+the output of the different commands like sensors.
+
+Anyway, as I received several requests about such feature, since the
+0.7.0.4 release it is implemented in both psensor ( menu preferences >
+sensors > enable log of measures) and psensor-server (–sensor-log-file
+option).
+
+[[S_NO_GRAPH_DISPLAYED]]
+
+No graphs are displayed, but the table of the main window is displaying sensors
+-------------------------------------------------------------------------------
+
+In the sensors table of the main window, switch on the checkbox of the last
+column (named "Enabled" or "Graph" depending on the Psensor version).
+
+[[S_SimilarSoft]]
+Is there any other similar softwares?
+-------------------------------------
+
+Here is a list of few well-known sensors monitoring softwares:
+
+ - for X11: http://freecode.com/projects/xsensors
+
+ - for GNOME2: http://sensors-applet.sourceforge.net/
+
+ - for Ubuntu Unity: https://launchpad.net/indicator-sensors
+
+ - more general, but can be configured to display sensors
+ information: http://conky.sourceforge.net/
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@SET_MAKE@
VPATH = @srcdir@
+am__make_dryrun = \
+ { \
+ am__dry=no; \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
+ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+ *) \
+ for am__flg in $$MAKEFLAGS; do \
+ case $$am__flg in \
+ *=*|--*) ;; \
+ *n*) am__dry=yes; break;; \
+ esac; \
+ done;; \
+ esac; \
+ test $$am__dry = yes; \
+ }
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
CONFIG_CLEAN_VPATH_FILES =
SOURCES =
DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
am__installdirs = "$(DESTDIR)$(psensordistpixdir)"
DATA = $(psensordistpix_DATA)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
AMTAR = @AMTAR@
APPINDICATOR_CFLAGS = @APPINDICATOR_CFLAGS@
APPINDICATOR_LIBS = @APPINDICATOR_LIBS@
+AR = @AR@
+ATASMART_CFLAGS = @ATASMART_CFLAGS@
+ATASMART_LIBS = @ATASMART_LIBS@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+GCONFTOOL = @GCONFTOOL@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
+GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
+GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GTK_LIBS = @GTK_LIBS@
GTOP_CFLAGS = @GTOP_CFLAGS@
GTOP_LIBS = @GTOP_LIBS@
+HAVE_CPPCHECK = @HAVE_CPPCHECK@
HELP2MAN = @HELP2MAN@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
POSUB = @POSUB@
+PTHREAD_LIBS = @PTHREAD_LIBS@
RANLIB = @RANLIB@
SENSORS_LIBS = @SENSORS_LIBS@
SET_MAKE = @SET_MAKE@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
$(am__aclocal_m4_deps):
install-psensordistpixDATA: $(psensordistpix_DATA)
@$(NORMAL_INSTALL)
- test -z "$(psensordistpixdir)" || $(MKDIR_P) "$(DESTDIR)$(psensordistpixdir)"
@list='$(psensordistpix_DATA)'; test -n "$(psensordistpixdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(psensordistpixdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(psensordistpixdir)" || exit 1; \
+ fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
@$(NORMAL_UNINSTALL)
@list='$(psensordistpix_DATA)'; test -n "$(psensordistpixdir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
- test -n "$$files" || exit 0; \
- echo " ( cd '$(DESTDIR)$(psensordistpixdir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(psensordistpixdir)" && rm -f $$files
+ dir='$(DESTDIR)$(psensordistpixdir)'; $(am__uninstall_files_from_dir)
tags: TAGS
TAGS:
installcheck: installcheck-am
install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
mostlyclean-generic:
clean-generic:
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@SET_MAKE@
VPATH = @srcdir@
+am__make_dryrun = \
+ { \
+ am__dry=no; \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
+ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+ *) \
+ for am__flg in $$MAKEFLAGS; do \
+ case $$am__flg in \
+ *=*|--*) ;; \
+ *n*) am__dry=yes; break;; \
+ esac; \
+ done;; \
+ esac; \
+ test $$am__dry = yes; \
+ }
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
CONFIG_CLEAN_VPATH_FILES =
SOURCES =
DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
am__installdirs = "$(DESTDIR)$(psensordistpixdir)"
DATA = $(psensordistpix_DATA)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
AMTAR = @AMTAR@
APPINDICATOR_CFLAGS = @APPINDICATOR_CFLAGS@
APPINDICATOR_LIBS = @APPINDICATOR_LIBS@
+AR = @AR@
+ATASMART_CFLAGS = @ATASMART_CFLAGS@
+ATASMART_LIBS = @ATASMART_LIBS@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+GCONFTOOL = @GCONFTOOL@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
+GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
+GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GTK_LIBS = @GTK_LIBS@
GTOP_CFLAGS = @GTOP_CFLAGS@
GTOP_LIBS = @GTOP_LIBS@
+HAVE_CPPCHECK = @HAVE_CPPCHECK@
HELP2MAN = @HELP2MAN@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
POSUB = @POSUB@
+PTHREAD_LIBS = @PTHREAD_LIBS@
RANLIB = @RANLIB@
SENSORS_LIBS = @SENSORS_LIBS@
SET_MAKE = @SET_MAKE@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
$(am__aclocal_m4_deps):
install-psensordistpixDATA: $(psensordistpix_DATA)
@$(NORMAL_INSTALL)
- test -z "$(psensordistpixdir)" || $(MKDIR_P) "$(DESTDIR)$(psensordistpixdir)"
@list='$(psensordistpix_DATA)'; test -n "$(psensordistpixdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(psensordistpixdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(psensordistpixdir)" || exit 1; \
+ fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
@$(NORMAL_UNINSTALL)
@list='$(psensordistpix_DATA)'; test -n "$(psensordistpixdir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
- test -n "$$files" || exit 0; \
- echo " ( cd '$(DESTDIR)$(psensordistpixdir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(psensordistpixdir)" && rm -f $$files
+ dir='$(DESTDIR)$(psensordistpixdir)'; $(am__uninstall_files_from_dir)
tags: TAGS
TAGS:
installcheck: installcheck-am
install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
mostlyclean-generic:
clean-generic:
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@SET_MAKE@
VPATH = @srcdir@
+am__make_dryrun = \
+ { \
+ am__dry=no; \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
+ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+ *) \
+ for am__flg in $$MAKEFLAGS; do \
+ case $$am__flg in \
+ *=*|--*) ;; \
+ *n*) am__dry=yes; break;; \
+ esac; \
+ done;; \
+ esac; \
+ test $$am__dry = yes; \
+ }
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
CONFIG_CLEAN_VPATH_FILES =
SOURCES =
DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
am__installdirs = "$(DESTDIR)$(psensordistpixdir)"
DATA = $(psensordistpix_DATA)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
AMTAR = @AMTAR@
APPINDICATOR_CFLAGS = @APPINDICATOR_CFLAGS@
APPINDICATOR_LIBS = @APPINDICATOR_LIBS@
+AR = @AR@
+ATASMART_CFLAGS = @ATASMART_CFLAGS@
+ATASMART_LIBS = @ATASMART_LIBS@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+GCONFTOOL = @GCONFTOOL@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
+GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
+GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GTK_LIBS = @GTK_LIBS@
GTOP_CFLAGS = @GTOP_CFLAGS@
GTOP_LIBS = @GTOP_LIBS@
+HAVE_CPPCHECK = @HAVE_CPPCHECK@
HELP2MAN = @HELP2MAN@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
POSUB = @POSUB@
+PTHREAD_LIBS = @PTHREAD_LIBS@
RANLIB = @RANLIB@
SENSORS_LIBS = @SENSORS_LIBS@
SET_MAKE = @SET_MAKE@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
$(am__aclocal_m4_deps):
install-psensordistpixDATA: $(psensordistpix_DATA)
@$(NORMAL_INSTALL)
- test -z "$(psensordistpixdir)" || $(MKDIR_P) "$(DESTDIR)$(psensordistpixdir)"
@list='$(psensordistpix_DATA)'; test -n "$(psensordistpixdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(psensordistpixdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(psensordistpixdir)" || exit 1; \
+ fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
@$(NORMAL_UNINSTALL)
@list='$(psensordistpix_DATA)'; test -n "$(psensordistpixdir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
- test -n "$$files" || exit 0; \
- echo " ( cd '$(DESTDIR)$(psensordistpixdir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(psensordistpixdir)" && rm -f $$files
+ dir='$(DESTDIR)$(psensordistpixdir)'; $(am__uninstall_files_from_dir)
tags: TAGS
TAGS:
installcheck: installcheck-am
install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
mostlyclean-generic:
clean-generic:
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@SET_MAKE@
VPATH = @srcdir@
+am__make_dryrun = \
+ { \
+ am__dry=no; \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
+ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+ *) \
+ for am__flg in $$MAKEFLAGS; do \
+ case $$am__flg in \
+ *=*|--*) ;; \
+ *n*) am__dry=yes; break;; \
+ esac; \
+ done;; \
+ esac; \
+ test $$am__dry = yes; \
+ }
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
CONFIG_CLEAN_VPATH_FILES =
SOURCES =
DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
am__installdirs = "$(DESTDIR)$(psensordistpixdir)"
DATA = $(psensordistpix_DATA)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
AMTAR = @AMTAR@
APPINDICATOR_CFLAGS = @APPINDICATOR_CFLAGS@
APPINDICATOR_LIBS = @APPINDICATOR_LIBS@
+AR = @AR@
+ATASMART_CFLAGS = @ATASMART_CFLAGS@
+ATASMART_LIBS = @ATASMART_LIBS@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+GCONFTOOL = @GCONFTOOL@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
+GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
+GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GTK_LIBS = @GTK_LIBS@
GTOP_CFLAGS = @GTOP_CFLAGS@
GTOP_LIBS = @GTOP_LIBS@
+HAVE_CPPCHECK = @HAVE_CPPCHECK@
HELP2MAN = @HELP2MAN@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
POSUB = @POSUB@
+PTHREAD_LIBS = @PTHREAD_LIBS@
RANLIB = @RANLIB@
SENSORS_LIBS = @SENSORS_LIBS@
SET_MAKE = @SET_MAKE@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
$(am__aclocal_m4_deps):
install-psensordistpixDATA: $(psensordistpix_DATA)
@$(NORMAL_INSTALL)
- test -z "$(psensordistpixdir)" || $(MKDIR_P) "$(DESTDIR)$(psensordistpixdir)"
@list='$(psensordistpix_DATA)'; test -n "$(psensordistpixdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(psensordistpixdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(psensordistpixdir)" || exit 1; \
+ fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
@$(NORMAL_UNINSTALL)
@list='$(psensordistpix_DATA)'; test -n "$(psensordistpixdir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
- test -n "$$files" || exit 0; \
- echo " ( cd '$(DESTDIR)$(psensordistpixdir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(psensordistpixdir)" && rm -f $$files
+ dir='$(DESTDIR)$(psensordistpixdir)'; $(am__uninstall_files_from_dir)
tags: TAGS
TAGS:
installcheck: installcheck-am
install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
mostlyclean-generic:
clean-generic:
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@SET_MAKE@
VPATH = @srcdir@
+am__make_dryrun = \
+ { \
+ am__dry=no; \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
+ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+ *) \
+ for am__flg in $$MAKEFLAGS; do \
+ case $$am__flg in \
+ *=*|--*) ;; \
+ *n*) am__dry=yes; break;; \
+ esac; \
+ done;; \
+ esac; \
+ test $$am__dry = yes; \
+ }
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
CONFIG_CLEAN_VPATH_FILES =
SOURCES =
DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
am__installdirs = "$(DESTDIR)$(psensordistpixdir)"
DATA = $(psensordistpix_DATA)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
AMTAR = @AMTAR@
APPINDICATOR_CFLAGS = @APPINDICATOR_CFLAGS@
APPINDICATOR_LIBS = @APPINDICATOR_LIBS@
+AR = @AR@
+ATASMART_CFLAGS = @ATASMART_CFLAGS@
+ATASMART_LIBS = @ATASMART_LIBS@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+GCONFTOOL = @GCONFTOOL@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
+GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
+GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GTK_LIBS = @GTK_LIBS@
GTOP_CFLAGS = @GTOP_CFLAGS@
GTOP_LIBS = @GTOP_LIBS@
+HAVE_CPPCHECK = @HAVE_CPPCHECK@
HELP2MAN = @HELP2MAN@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
POSUB = @POSUB@
+PTHREAD_LIBS = @PTHREAD_LIBS@
RANLIB = @RANLIB@
SENSORS_LIBS = @SENSORS_LIBS@
SET_MAKE = @SET_MAKE@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
$(am__aclocal_m4_deps):
install-psensordistpixDATA: $(psensordistpix_DATA)
@$(NORMAL_INSTALL)
- test -z "$(psensordistpixdir)" || $(MKDIR_P) "$(DESTDIR)$(psensordistpixdir)"
@list='$(psensordistpix_DATA)'; test -n "$(psensordistpixdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(psensordistpixdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(psensordistpixdir)" || exit 1; \
+ fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
@$(NORMAL_UNINSTALL)
@list='$(psensordistpix_DATA)'; test -n "$(psensordistpixdir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
- test -n "$$files" || exit 0; \
- echo " ( cd '$(DESTDIR)$(psensordistpixdir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(psensordistpixdir)" && rm -f $$files
+ dir='$(DESTDIR)$(psensordistpixdir)'; $(am__uninstall_files_from_dir)
tags: TAGS
TAGS:
installcheck: installcheck-am
install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
mostlyclean-generic:
clean-generic:
themedir = $(datadir)/icons/hicolor
size = 48x48
context = apps
-EXTRA_DIST = psensor.png psensor_hot.png
+EXTRA_DIST = psensor.png
psensordistpixdir = $(themedir)/$(size)/$(context)
psensordistpix_DATA = $(EXTRA_DIST)
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@SET_MAKE@
VPATH = @srcdir@
+am__make_dryrun = \
+ { \
+ am__dry=no; \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
+ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+ *) \
+ for am__flg in $$MAKEFLAGS; do \
+ case $$am__flg in \
+ *=*|--*) ;; \
+ *n*) am__dry=yes; break;; \
+ esac; \
+ done;; \
+ esac; \
+ test $$am__dry = yes; \
+ }
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
CONFIG_CLEAN_VPATH_FILES =
SOURCES =
DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
am__installdirs = "$(DESTDIR)$(psensordistpixdir)"
DATA = $(psensordistpix_DATA)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
AMTAR = @AMTAR@
APPINDICATOR_CFLAGS = @APPINDICATOR_CFLAGS@
APPINDICATOR_LIBS = @APPINDICATOR_LIBS@
+AR = @AR@
+ATASMART_CFLAGS = @ATASMART_CFLAGS@
+ATASMART_LIBS = @ATASMART_LIBS@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+GCONFTOOL = @GCONFTOOL@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
+GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
+GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GTK_LIBS = @GTK_LIBS@
GTOP_CFLAGS = @GTOP_CFLAGS@
GTOP_LIBS = @GTOP_LIBS@
+HAVE_CPPCHECK = @HAVE_CPPCHECK@
HELP2MAN = @HELP2MAN@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
POSUB = @POSUB@
+PTHREAD_LIBS = @PTHREAD_LIBS@
RANLIB = @RANLIB@
SENSORS_LIBS = @SENSORS_LIBS@
SET_MAKE = @SET_MAKE@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
themedir = $(datadir)/icons/hicolor
size = 48x48
context = apps
-EXTRA_DIST = psensor.png psensor_hot.png
+EXTRA_DIST = psensor.png
psensordistpixdir = $(themedir)/$(size)/$(context)
psensordistpix_DATA = $(EXTRA_DIST)
all: all-am
$(am__aclocal_m4_deps):
install-psensordistpixDATA: $(psensordistpix_DATA)
@$(NORMAL_INSTALL)
- test -z "$(psensordistpixdir)" || $(MKDIR_P) "$(DESTDIR)$(psensordistpixdir)"
@list='$(psensordistpix_DATA)'; test -n "$(psensordistpixdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(psensordistpixdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(psensordistpixdir)" || exit 1; \
+ fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
@$(NORMAL_UNINSTALL)
@list='$(psensordistpix_DATA)'; test -n "$(psensordistpixdir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
- test -n "$$files" || exit 0; \
- echo " ( cd '$(DESTDIR)$(psensordistpixdir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(psensordistpixdir)" && rm -f $$files
+ dir='$(DESTDIR)$(psensordistpixdir)'; $(am__uninstall_files_from_dir)
tags: TAGS
TAGS:
installcheck: installcheck-am
install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
mostlyclean-generic:
clean-generic:
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@SET_MAKE@
VPATH = @srcdir@
+am__make_dryrun = \
+ { \
+ am__dry=no; \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
+ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+ *) \
+ for am__flg in $$MAKEFLAGS; do \
+ case $$am__flg in \
+ *=*|--*) ;; \
+ *n*) am__dry=yes; break;; \
+ esac; \
+ done;; \
+ esac; \
+ test $$am__dry = yes; \
+ }
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
CONFIG_CLEAN_VPATH_FILES =
SOURCES =
DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
am__installdirs = "$(DESTDIR)$(psensordistpixdir)"
DATA = $(psensordistpix_DATA)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
AMTAR = @AMTAR@
APPINDICATOR_CFLAGS = @APPINDICATOR_CFLAGS@
APPINDICATOR_LIBS = @APPINDICATOR_LIBS@
+AR = @AR@
+ATASMART_CFLAGS = @ATASMART_CFLAGS@
+ATASMART_LIBS = @ATASMART_LIBS@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+GCONFTOOL = @GCONFTOOL@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
+GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
+GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GTK_LIBS = @GTK_LIBS@
GTOP_CFLAGS = @GTOP_CFLAGS@
GTOP_LIBS = @GTOP_LIBS@
+HAVE_CPPCHECK = @HAVE_CPPCHECK@
HELP2MAN = @HELP2MAN@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
POSUB = @POSUB@
+PTHREAD_LIBS = @PTHREAD_LIBS@
RANLIB = @RANLIB@
SENSORS_LIBS = @SENSORS_LIBS@
SET_MAKE = @SET_MAKE@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
$(am__aclocal_m4_deps):
install-psensordistpixDATA: $(psensordistpix_DATA)
@$(NORMAL_INSTALL)
- test -z "$(psensordistpixdir)" || $(MKDIR_P) "$(DESTDIR)$(psensordistpixdir)"
@list='$(psensordistpix_DATA)'; test -n "$(psensordistpixdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(psensordistpixdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(psensordistpixdir)" || exit 1; \
+ fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
@$(NORMAL_UNINSTALL)
@list='$(psensordistpix_DATA)'; test -n "$(psensordistpixdir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
- test -n "$$files" || exit 0; \
- echo " ( cd '$(DESTDIR)$(psensordistpixdir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(psensordistpixdir)" && rm -f $$files
+ dir='$(DESTDIR)$(psensordistpixdir)'; $(am__uninstall_files_from_dir)
tags: TAGS
TAGS:
installcheck: installcheck-am
install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
mostlyclean-generic:
clean-generic:
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@SET_MAKE@
VPATH = @srcdir@
+am__make_dryrun = \
+ { \
+ am__dry=no; \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
+ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+ *) \
+ for am__flg in $$MAKEFLAGS; do \
+ case $$am__flg in \
+ *=*|--*) ;; \
+ *n*) am__dry=yes; break;; \
+ esac; \
+ done;; \
+ esac; \
+ test $$am__dry = yes; \
+ }
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
CONFIG_CLEAN_VPATH_FILES =
SOURCES =
DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
am__installdirs = "$(DESTDIR)$(psensordistpixdir)"
DATA = $(psensordistpix_DATA)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
AMTAR = @AMTAR@
APPINDICATOR_CFLAGS = @APPINDICATOR_CFLAGS@
APPINDICATOR_LIBS = @APPINDICATOR_LIBS@
+AR = @AR@
+ATASMART_CFLAGS = @ATASMART_CFLAGS@
+ATASMART_LIBS = @ATASMART_LIBS@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+GCONFTOOL = @GCONFTOOL@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
+GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
+GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GTK_LIBS = @GTK_LIBS@
GTOP_CFLAGS = @GTOP_CFLAGS@
GTOP_LIBS = @GTOP_LIBS@
+HAVE_CPPCHECK = @HAVE_CPPCHECK@
HELP2MAN = @HELP2MAN@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
POSUB = @POSUB@
+PTHREAD_LIBS = @PTHREAD_LIBS@
RANLIB = @RANLIB@
SENSORS_LIBS = @SENSORS_LIBS@
SET_MAKE = @SET_MAKE@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
$(am__aclocal_m4_deps):
install-psensordistpixDATA: $(psensordistpix_DATA)
@$(NORMAL_INSTALL)
- test -z "$(psensordistpixdir)" || $(MKDIR_P) "$(DESTDIR)$(psensordistpixdir)"
@list='$(psensordistpix_DATA)'; test -n "$(psensordistpixdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(psensordistpixdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(psensordistpixdir)" || exit 1; \
+ fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
@$(NORMAL_UNINSTALL)
@list='$(psensordistpix_DATA)'; test -n "$(psensordistpixdir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
- test -n "$$files" || exit 0; \
- echo " ( cd '$(DESTDIR)$(psensordistpixdir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(psensordistpixdir)" && rm -f $$files
+ dir='$(DESTDIR)$(psensordistpixdir)'; $(am__uninstall_files_from_dir)
tags: TAGS
TAGS:
installcheck: installcheck-am
install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
mostlyclean-generic:
clean-generic:
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@SET_MAKE@
VPATH = @srcdir@
+am__make_dryrun = \
+ { \
+ am__dry=no; \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
+ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+ *) \
+ for am__flg in $$MAKEFLAGS; do \
+ case $$am__flg in \
+ *=*|--*) ;; \
+ *n*) am__dry=yes; break;; \
+ esac; \
+ done;; \
+ esac; \
+ test $$am__dry = yes; \
+ }
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
CONFIG_CLEAN_VPATH_FILES =
SOURCES =
DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
am__installdirs = "$(DESTDIR)$(psensordistpixdir)"
DATA = $(psensordistpix_DATA)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
AMTAR = @AMTAR@
APPINDICATOR_CFLAGS = @APPINDICATOR_CFLAGS@
APPINDICATOR_LIBS = @APPINDICATOR_LIBS@
+AR = @AR@
+ATASMART_CFLAGS = @ATASMART_CFLAGS@
+ATASMART_LIBS = @ATASMART_LIBS@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+GCONFTOOL = @GCONFTOOL@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
+GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
+GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GTK_LIBS = @GTK_LIBS@
GTOP_CFLAGS = @GTOP_CFLAGS@
GTOP_LIBS = @GTOP_LIBS@
+HAVE_CPPCHECK = @HAVE_CPPCHECK@
HELP2MAN = @HELP2MAN@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
POSUB = @POSUB@
+PTHREAD_LIBS = @PTHREAD_LIBS@
RANLIB = @RANLIB@
SENSORS_LIBS = @SENSORS_LIBS@
SET_MAKE = @SET_MAKE@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
$(am__aclocal_m4_deps):
install-psensordistpixDATA: $(psensordistpix_DATA)
@$(NORMAL_INSTALL)
- test -z "$(psensordistpixdir)" || $(MKDIR_P) "$(DESTDIR)$(psensordistpixdir)"
@list='$(psensordistpix_DATA)'; test -n "$(psensordistpixdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(psensordistpixdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(psensordistpixdir)" || exit 1; \
+ fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
@$(NORMAL_UNINSTALL)
@list='$(psensordistpix_DATA)'; test -n "$(psensordistpixdir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
- test -n "$$files" || exit 0; \
- echo " ( cd '$(DESTDIR)$(psensordistpixdir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(psensordistpixdir)" && rm -f $$files
+ dir='$(DESTDIR)$(psensordistpixdir)'; $(am__uninstall_files_from_dir)
tags: TAGS
TAGS:
installcheck: installcheck-am
install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
mostlyclean-generic:
clean-generic:
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@SET_MAKE@
VPATH = @srcdir@
+am__make_dryrun = \
+ { \
+ am__dry=no; \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
+ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+ *) \
+ for am__flg in $$MAKEFLAGS; do \
+ case $$am__flg in \
+ *=*|--*) ;; \
+ *n*) am__dry=yes; break;; \
+ esac; \
+ done;; \
+ esac; \
+ test $$am__dry = yes; \
+ }
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
CONFIG_CLEAN_VPATH_FILES =
SOURCES =
DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
am__installdirs = "$(DESTDIR)$(psensordistpixdir)"
DATA = $(psensordistpix_DATA)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
AMTAR = @AMTAR@
APPINDICATOR_CFLAGS = @APPINDICATOR_CFLAGS@
APPINDICATOR_LIBS = @APPINDICATOR_LIBS@
+AR = @AR@
+ATASMART_CFLAGS = @ATASMART_CFLAGS@
+ATASMART_LIBS = @ATASMART_LIBS@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+GCONFTOOL = @GCONFTOOL@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
+GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
+GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GTK_LIBS = @GTK_LIBS@
GTOP_CFLAGS = @GTOP_CFLAGS@
GTOP_LIBS = @GTOP_LIBS@
+HAVE_CPPCHECK = @HAVE_CPPCHECK@
HELP2MAN = @HELP2MAN@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
POSUB = @POSUB@
+PTHREAD_LIBS = @PTHREAD_LIBS@
RANLIB = @RANLIB@
SENSORS_LIBS = @SENSORS_LIBS@
SET_MAKE = @SET_MAKE@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
$(am__aclocal_m4_deps):
install-psensordistpixDATA: $(psensordistpix_DATA)
@$(NORMAL_INSTALL)
- test -z "$(psensordistpixdir)" || $(MKDIR_P) "$(DESTDIR)$(psensordistpixdir)"
@list='$(psensordistpix_DATA)'; test -n "$(psensordistpixdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(psensordistpixdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(psensordistpixdir)" || exit 1; \
+ fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
@$(NORMAL_UNINSTALL)
@list='$(psensordistpix_DATA)'; test -n "$(psensordistpixdir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
- test -n "$$files" || exit 0; \
- echo " ( cd '$(DESTDIR)$(psensordistpixdir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(psensordistpixdir)" && rm -f $$files
+ dir='$(DESTDIR)$(psensordistpixdir)'; $(am__uninstall_files_from_dir)
tags: TAGS
TAGS:
installcheck: installcheck-am
install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
mostlyclean-generic:
clean-generic:
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@SET_MAKE@
VPATH = @srcdir@
+am__make_dryrun = \
+ { \
+ am__dry=no; \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
+ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+ *) \
+ for am__flg in $$MAKEFLAGS; do \
+ case $$am__flg in \
+ *=*|--*) ;; \
+ *n*) am__dry=yes; break;; \
+ esac; \
+ done;; \
+ esac; \
+ test $$am__dry = yes; \
+ }
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
CONFIG_CLEAN_VPATH_FILES =
SOURCES =
DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
am__installdirs = "$(DESTDIR)$(psensordistpixdir)"
DATA = $(psensordistpix_DATA)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
AMTAR = @AMTAR@
APPINDICATOR_CFLAGS = @APPINDICATOR_CFLAGS@
APPINDICATOR_LIBS = @APPINDICATOR_LIBS@
+AR = @AR@
+ATASMART_CFLAGS = @ATASMART_CFLAGS@
+ATASMART_LIBS = @ATASMART_LIBS@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+GCONFTOOL = @GCONFTOOL@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
+GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
+GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GTK_LIBS = @GTK_LIBS@
GTOP_CFLAGS = @GTOP_CFLAGS@
GTOP_LIBS = @GTOP_LIBS@
+HAVE_CPPCHECK = @HAVE_CPPCHECK@
HELP2MAN = @HELP2MAN@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
POSUB = @POSUB@
+PTHREAD_LIBS = @PTHREAD_LIBS@
RANLIB = @RANLIB@
SENSORS_LIBS = @SENSORS_LIBS@
SET_MAKE = @SET_MAKE@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
$(am__aclocal_m4_deps):
install-psensordistpixDATA: $(psensordistpix_DATA)
@$(NORMAL_INSTALL)
- test -z "$(psensordistpixdir)" || $(MKDIR_P) "$(DESTDIR)$(psensordistpixdir)"
@list='$(psensordistpix_DATA)'; test -n "$(psensordistpixdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(psensordistpixdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(psensordistpixdir)" || exit 1; \
+ fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
@$(NORMAL_UNINSTALL)
@list='$(psensordistpix_DATA)'; test -n "$(psensordistpixdir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
- test -n "$$files" || exit 0; \
- echo " ( cd '$(DESTDIR)$(psensordistpixdir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(psensordistpixdir)" && rm -f $$files
+ dir='$(DESTDIR)$(psensordistpixdir)'; $(am__uninstall_files_from_dir)
tags: TAGS
TAGS:
installcheck: installcheck-am
install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
mostlyclean-generic:
clean-generic:
#!/bin/sh
# install - install a program, script, or datafile
-scriptversion=2009-04-28.21; # UTC
+scriptversion=2011-01-19.21; # UTC
# This originates from X11R5 (mit/util/scripts/install.sh), which was
# later released in X11R6 (xc/config/util/install.sh) with the
-s) stripcmd=$stripprog;;
-t) dst_arg=$2
+ # Protect names problematic for `test' and other utilities.
+ case $dst_arg in
+ -* | [=\(\)!]) dst_arg=./$dst_arg;;
+ esac
shift;;
-T) no_target_directory=true;;
fi
shift # arg
dst_arg=$arg
+ # Protect names problematic for `test' and other utilities.
+ case $dst_arg in
+ -* | [=\(\)!]) dst_arg=./$dst_arg;;
+ esac
done
fi
fi
if test -z "$dir_arg"; then
- trap '(exit $?); exit' 1 2 13 15
+ do_exit='(exit $ret); exit $ret'
+ trap "ret=129; $do_exit" 1
+ trap "ret=130; $do_exit" 2
+ trap "ret=141; $do_exit" 13
+ trap "ret=143; $do_exit" 15
# Set umask so as not to create temps with too-generous modes.
# However, 'strip' requires both read and write access to temps.
for src
do
- # Protect names starting with `-'.
+ # Protect names problematic for `test' and other utilities.
case $src in
- -*) src=./$src;;
+ -* | [=\(\)!]) src=./$src;;
esac
if test -n "$dir_arg"; then
echo "$0: no destination specified." >&2
exit 1
fi
-
dst=$dst_arg
- # Protect names starting with `-'.
- case $dst in
- -*) dst=./$dst;;
- esac
# If destination is a directory, append the input filename; won't work
# if double slashes aren't ignored.
case $dstdir in
/*) prefix='/';;
- -*) prefix='./';;
+ [-=\(\)!]*) prefix='./';;
*) prefix='';;
esac
for d
do
- test -z "$d" && continue
+ test X"$d" = X && continue
prefix=$prefix$d
if test -d "$prefix"; then
#! /bin/sh
# Common stub for a few missing GNU programs while installing.
-scriptversion=2009-04-28.21; # UTC
+scriptversion=2012-01-06.13; # UTC
# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
-# 2008, 2009 Free Software Foundation, Inc.
+# 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
# This program is free software; you can redistribute it and/or modify
help2man touch the output file
lex create \`lex.yy.c', if possible, from existing .c
makeinfo touch the output file
- tar try tar, gnutar, gtar, then tar without non-portable flags
yacc create \`y.tab.[ch]', if possible, from existing .[ch]
Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
# Not GNU programs, they don't have --version.
;;
- tar*)
- if test -n "$run"; then
- echo 1>&2 "ERROR: \`tar' requires --run"
- exit 1
- elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
- exit 1
- fi
- ;;
-
*)
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
# We have it, but it failed.
\`Bison' from any GNU archive site."
rm -f y.tab.c y.tab.h
if test $# -ne 1; then
- eval LASTARG="\${$#}"
+ eval LASTARG=\${$#}
case $LASTARG in
*.y)
SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
\`Flex' from any GNU archive site."
rm -f lex.yy.c
if test $# -ne 1; then
- eval LASTARG="\${$#}"
+ eval LASTARG=\${$#}
case $LASTARG in
*.l)
SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
touch $file
;;
- tar*)
- shift
-
- # We have already tried tar in the generic part.
- # Look for gnutar/gtar before invocation to avoid ugly error
- # messages.
- if (gnutar --version > /dev/null 2>&1); then
- gnutar "$@" && exit 0
- fi
- if (gtar --version > /dev/null 2>&1); then
- gtar "$@" && exit 0
- fi
- firstarg="$1"
- if shift; then
- case $firstarg in
- *o*)
- firstarg=`echo "$firstarg" | sed s/o//`
- tar "$firstarg" "$@" && exit 0
- ;;
- esac
- case $firstarg in
- *h*)
- firstarg=`echo "$firstarg" | sed s/h//`
- tar "$firstarg" "$@" && exit 0
- ;;
- esac
- fi
-
- echo 1>&2 "\
-WARNING: I can't seem to be able to run \`tar' with the given arguments.
- You may want to install GNU tar or Free paxutils, or check the
- command line arguments."
- exit 1
- ;;
-
*)
echo 1>&2 "\
WARNING: \`$1' is needed, and is $msg.
# Copying and distribution of this file, with or without modification,
# are permitted in any medium without royalty provided the copyright
# notice and this notice are preserved.
+de
+es
fr
-zh_CN
+hu
+it
+lv
+pt_BR
+ru
+sl
+sr
tr
+uk
+zh_CN
+src/glade/psensor.glade
+src/glade/psensor-pref.glade
+src/glade/sensor-edit.glade
+src/lib/amd.c
+src/lib/cpu.c
+src/lib/hdd_atasmart.c
+src/lib/hdd_hddtemp.c
+src/lib/lmsensor.c
+src/lib/log.c
+src/lib/nvidia.c
+src/lib/psensor.c
+src/lib/slog.c
src/main.c
+src/rsensor.c
+src/server/server.c
src/ui.c
src/ui_sensorlist.c
src/ui_appindicator.c
src/ui_color.c
+src/ui_graph.c
src/ui_notify.c
src/ui_pref.c
+src/ui_sensorlist.c
src/ui_sensorpref.c
-src/rsensor.c
-src/server/server.c
-src/lib/amd.c
-src/lib/hdd.c
-src/lib/log.c
-src/lib/nvidia.c
-src/lib/lmsensor.c
-src/lib/psensor.c
-src/glade/psensor-pref.glade
-src/glade/sensor-edit.glade
+tests/test_psensor_type_to_unit_str.c
\ No newline at end of file
--- /dev/null
+# German translations for psensor package.
+# Copyright (C) 2012 Free Software Foundation, Inc.
+# This file is distributed under the same license as the psensor package.
+# <jeanfi@gmail.com>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: psensor 0.7.0.x\n"
+"Report-Msgid-Bugs-To: jeanfi@gmail.com\n"
+"POT-Creation-Date: 2013-10-16 09:19+0200\n"
+"PO-Revision-Date: 2013-05-20 21:13+0000\n"
+"Last-Translator: Dennis Baudys <Unknown>\n"
+"Language-Team: German\n"
+"Language: de\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2013-10-18 06:32+0000\n"
+"X-Generator: Launchpad (build 16799)\n"
+
+#: src/glade/psensor.glade:5 src/ui_appindicator.c:124
+msgid "About"
+msgstr "Info"
+
+#: src/glade/psensor.glade:9 src/ui_sensorlist.c:209 src/ui_appindicator.c:112
+msgid "Preferences"
+msgstr "Einstellungen"
+
+#: src/glade/psensor.glade:13 src/ui_appindicator.c:130
+msgid "Quit"
+msgstr "Beenden"
+
+#: src/glade/psensor.glade:17
+msgid "Sensor Preferences"
+msgstr "Sensoreinstellungen"
+
+#: src/glade/psensor.glade:96
+msgid "Psensor - Temperature Monitor"
+msgstr "Psensor – Temperaturüberwachung"
+
+#: src/glade/psensor.glade:111
+msgid "_Psensor"
+msgstr "_Psensor"
+
+#: src/glade/psensor.glade:158
+msgid "_Help"
+msgstr "_Hilfe"
+
+#: src/glade/psensor-pref.glade:7
+msgid "Edit Preferences"
+msgstr "Einstellungen bearbeiten"
+
+#: src/glade/psensor-pref.glade:72
+msgid "Position of sensors table:"
+msgstr "Position der Sensorentabelle:"
+
+#: src/glade/psensor-pref.glade:81
+msgid "Hide window decoration"
+msgstr "Keine Fensterdekorationen verwenden"
+
+#: src/glade/psensor-pref.glade:98
+msgid "Keep window below"
+msgstr "Fenster unterhalb anheften"
+
+#: src/glade/psensor-pref.glade:115
+msgid "Enable menu"
+msgstr "Menü aktivieren"
+
+#: src/glade/psensor-pref.glade:132
+msgid "Enable Unity Launcher counter"
+msgstr "Wert im Starter von Unity anzeigen"
+
+#: src/glade/psensor-pref.glade:149
+msgid "Hide window on startup"
+msgstr "Fenster beim Programmstart ausblenden"
+
+#: src/glade/psensor-pref.glade:166
+msgid "Restore window position and size"
+msgstr "Fensterposition und -größe merken"
+
+#: src/glade/psensor-pref.glade:186
+msgid "Temperature unit:"
+msgstr "Temperatureinheit:"
+
+#: src/glade/psensor-pref.glade:238
+msgid "Interface"
+msgstr "Benutzeroberfläche"
+
+#: src/glade/psensor-pref.glade:276
+msgid "Foreground:"
+msgstr "Vordergrund:"
+
+#: src/glade/psensor-pref.glade:291
+msgid "Background:"
+msgstr "Hintergrund:"
+
+#: src/glade/psensor-pref.glade:325
+msgid "Background opacity:"
+msgstr "Hintergrunddeckkraft:"
+
+#: src/glade/psensor-pref.glade:348
+msgid "<i>Min</i>"
+msgstr "<i>Min.</i>"
+
+#: src/glade/psensor-pref.glade:375
+msgid "<i>Max</i>"
+msgstr "<i>Max.</i>"
+
+#: src/glade/psensor-pref.glade:401
+msgid "Colors"
+msgstr "Farben"
+
+#: src/glade/psensor-pref.glade:419
+msgid "Monitoring duration:"
+msgstr "Überwachungszeitraum:"
+
+#: src/glade/psensor-pref.glade:457
+msgid "minute(s)"
+msgstr "Minute(n)"
+
+#: src/glade/psensor-pref.glade:474 src/glade/psensor-pref.glade:626
+msgid "second(s)"
+msgstr "Sekunde(n)"
+
+#: src/glade/psensor-pref.glade:510
+msgid "Update interval:"
+msgstr "Aktualisierungsintervall:"
+
+#: src/glade/psensor-pref.glade:528
+msgid "Measures"
+msgstr "Messungen"
+
+#: src/glade/psensor-pref.glade:564 src/glade/sensor-edit.glade:169
+#: src/ui_sensorlist.c:334
+msgid "Graph"
+msgstr "Graph"
+
+#: src/glade/psensor-pref.glade:588
+msgid "Measure update interval:"
+msgstr "Messintervall:"
+
+#: src/glade/psensor-pref.glade:637
+msgid "Enable sensors logging"
+msgstr "Sensorenprotokollierung aktivieren"
+
+#: src/glade/psensor-pref.glade:684
+msgid "Sensors logging interval"
+msgstr "Sensoren-Protokollierungsintervall"
+
+#: src/glade/psensor-pref.glade:701
+msgid "seconds(s)"
+msgstr "Sekunde(n)"
+
+#: src/glade/psensor-pref.glade:718
+msgid "Script executed when an alarm is raised"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:751
+msgid "Sensors"
+msgstr "Sensoren"
+
+#: src/glade/sensor-edit.glade:19
+msgid "Edit Sensor Preferences"
+msgstr "Sensoreinstellungen bearbeiten"
+
+#: src/glade/sensor-edit.glade:87
+msgid "Name"
+msgstr "Name"
+
+#: src/glade/sensor-edit.glade:138
+msgid "Type:"
+msgstr "Typ:"
+
+#: src/glade/sensor-edit.glade:153 src/glade/sensor-edit.glade:294
+#: src/glade/sensor-edit.glade:388 src/glade/sensor-edit.glade:459
+#: src/glade/sensor-edit.glade:508 src/lib/psensor.c:486 src/ui_notify.c:81
+msgid "N/A"
+msgstr "N/V"
+
+#: src/glade/sensor-edit.glade:187
+msgid "Color:"
+msgstr "Farbe:"
+
+#: src/glade/sensor-edit.glade:201
+msgid "Alarm"
+msgstr "Alarm"
+
+#: src/glade/sensor-edit.glade:216
+msgid "Activate desktop notifications"
+msgstr "Benachrichtigungen aktivieren"
+
+#: src/glade/sensor-edit.glade:236
+msgid "Sensor Information"
+msgstr "Sensorinformationen"
+
+#: src/glade/sensor-edit.glade:249
+msgid "Draw sensor curve"
+msgstr "Sensorgraphen darstellen"
+
+#: src/glade/sensor-edit.glade:333
+msgid "High threshold:"
+msgstr "Obere Grenze:"
+
+#: src/glade/sensor-edit.glade:348
+msgid "Low threshold:"
+msgstr "Untere Grenze:"
+
+#: src/glade/sensor-edit.glade:409
+msgid "Ubuntu Application Indicator"
+msgstr "Ubuntu-Anwendungsindikator"
+
+#: src/glade/sensor-edit.glade:424
+msgid "Display sensor in the Application Indicator menu"
+msgstr "Sensor im Indikatormenü für Anwendungen zeigen"
+
+#: src/glade/sensor-edit.glade:444
+msgid "Chip:"
+msgstr "Chip:"
+
+#: src/glade/sensor-edit.glade:489
+msgid "Id:"
+msgstr "Id:"
+
+#: src/glade/sensor-edit.glade:523
+msgid "Details"
+msgstr "Details"
+
+#: src/glade/sensor-edit.glade:541
+msgid "Name:"
+msgstr "Name:"
+
+#: src/lib/amd.c:170
+msgid "AMD: cannot found ADL library."
+msgstr "AMD: ADL-Bibliothek konnte nicht gefunden werden."
+
+#: src/lib/amd.c:197
+msgid "AMD: missing ADL's API."
+msgstr "AMD: API der ADL-Bibliothek fehlt."
+
+#: src/lib/amd.c:207
+msgid "AMD: failed to initialize ADL."
+msgstr "AMD: ADL-Bibliothek konnte nicht initialisiert werden."
+
+#: src/lib/amd.c:213
+msgid "AMD: cannot get the number of adapters."
+msgstr "AMD: Anzahl der Adapter konnte nicht ermittelt werden."
+
+#: src/lib/amd.c:252
+#, c-format
+msgid "Number of AMD/ATI adapters: %d"
+msgstr "Anzahl der AMD/ATI-Adapter: %d"
+
+#: src/lib/amd.c:253
+#, c-format
+msgid "Number of active AMD/ATI adapters: %d"
+msgstr "Anzahl der aktiven AMD/ATI-Adapter: %d"
+
+#: src/lib/hdd_atasmart.c:152
+#, c-format
+msgid "atasmart: sk_disk_open() failure: %s."
+msgstr "atasmart: sk_disk_open() gescheitert: %s."
+
+#: src/lib/hdd_hddtemp.c:59
+msgid "hddtemp: failed to open socket."
+msgstr "hddtemp: Öffnen des Sockets gescheitert."
+
+#: src/lib/hdd_hddtemp.c:72
+msgid "hddtemp: failed to open connection."
+msgstr "hddtemp: Öffnen der Verbindung gescheitert."
+
+#: src/lib/hdd_hddtemp.c:186 src/lib/hdd_hddtemp.c:256
+#, c-format
+msgid "hddtemp: wrong string: %s."
+msgstr "hddtemp: Falsche Zeichenkette: %s."
+
+#: src/lib/lmsensor.c:42
+#, c-format
+msgid "lmsensor: cannot get value of subfeature %s: %s."
+msgstr "lmsensor: Wert der Unterfunktion %s kann nicht ermittelt werden: %s."
+
+#: src/lib/lmsensor.c:123
+msgid "lmsensor: lmsensor_psensor_create failure: wrong feature type."
+msgstr "lmsensor: lmsensor_psensor_create gescheitert: Falscher Funktionstyp."
+
+#: src/lib/lmsensor.c:218
+#, c-format
+msgid "lmsensor: initialization failure: %s."
+msgstr "lmsensor: Initialisierung gescheitert: %s."
+
+#: src/lib/log.c:43
+#, c-format
+msgid "Cannot open log file: %s"
+msgstr "Protokolldatei kann nicht geöffnet werden: %s"
+
+#: src/lib/nvidia.c:54
+msgid ""
+"NVIDIA proprietary driver not used or cannot retrieve NVIDIA GPU temperature."
+msgstr ""
+"Entweder wird kein proprietärer NVIDIA-Treiber verwendet oder die NVIDIA-GPU-"
+"Temperatur kann nicht ermittelt werden."
+
+#: src/lib/nvidia.c:97
+msgid "Cannot open connection to X11 server."
+msgstr "Verbindung zum X11-Server konnte nicht hergestellt werden."
+
+#: src/lib/nvidia.c:105
+msgid "Failed to retrieve NVIDIA information."
+msgstr "Ermittlung der NVIDIA-Informationen gescheitert."
+
+#: src/lib/psensor.c:482 tests/test_psensor_type_to_unit_str.c:62
+msgid "RPM"
+msgstr "U/min"
+
+#: src/lib/psensor.c:484
+msgid "%"
+msgstr "%"
+
+#: src/lib/slog.c:68
+msgid "HOME variable not set."
+msgstr "HOME-Variable ist nicht festgelegt."
+
+#: src/lib/slog.c:78
+msgid "Sensor log file already open."
+msgstr "Sensorprotokolldatei ist bereits geöffnet."
+
+#: src/lib/slog.c:87
+#, fuzzy, c-format
+msgid "Cannot open sensor log file: %s."
+msgstr "Sensorprotokolldatei kann nicht geöffnet werden: %s."
+
+#: src/lib/slog.c:118
+msgid "Sensor log file not open."
+msgstr "Sensorprotokolldatei ist nicht geöffnet."
+
+#: src/lib/slog.c:174
+msgid "Sensor log not open, cannot close."
+msgstr ""
+"Sensorprotokolldatei ist nicht geöffnet und kann deswegen nicht geschlossen "
+"werden."
+
+#: src/main.c:77
+#, c-format
+msgid ""
+"Copyright (C) %s jeanfi@gmail.com\n"
+"License GPLv2: GNU GPL version 2 or later <http://www.gnu.org/licenses/old-"
+"licenses/gpl-2.0.html>\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"Copyright © %s jeanfi@gmail.com\n"
+"Lizenz GPLv2: GNU GPL Version 2 oder neuer <http://www.gnu.org/licenses/old-"
+"licenses/gpl-2.0.html>\n"
+"Dies ist freie Software: Sie können Sie beliebig ändern und "
+"weiterverbreiten.\n"
+"Sie wird OHNE JEGLICHE GEWÄHRLEISTUNG zur Verfügung gestellt.\n"
+
+#: src/main.c:88 src/server/server.c:94
+#, c-format
+msgid "Usage: %s [OPTION]...\n"
+msgstr "Aufruf: %s [OPTION] …\n"
+
+#: src/main.c:90
+msgid ""
+"Psensor is a GTK+ application for monitoring hardware sensors, including "
+"temperatures and fan speeds."
+msgstr ""
+"Psensor ist eine GTK+-Anwendung zur Überwachung von Hardware-Sensoren, "
+"inklusive Temperaturen und Lüftergeschwindigkeiten."
+
+#: src/main.c:94
+msgid "Options:"
+msgstr "Optionen:"
+
+#: src/main.c:95
+msgid ""
+" -h, --help display this help and exit\n"
+" -v, --version display version information and exit"
+msgstr ""
+" -h, --help Diese Hilfe anzeigen und beenden\n"
+" -v, --version Versionsinformationen anzeigen und beenden"
+
+#: src/main.c:101
+msgid ""
+" -u, --url=URL the URL of the psensor-server,\n"
+" example: http://hostname:3131"
+msgstr ""
+" -u, --url=URL Die Adresse (URL) von psensor-server,\n"
+" Beispiel: http://hostname:3131"
+
+#: src/main.c:104
+msgid ""
+" --use-libatasmart use atasmart library for disk monitoring instead of\n"
+" hddtemp daemon"
+msgstr ""
+" --use-libatasmart atasmart-Bibliothek zur Festplattenüberwachung\n"
+" anstelle des hddtemp-Dienstes nutzen"
+
+#: src/main.c:107
+msgid " -n, --new-instance force the creation of a new Psensor application"
+msgstr ""
+" -n, --new-instance Erzeugung einer neuen Psensor-Anwendung erzwingen"
+
+#: src/main.c:110
+msgid " -d, --debug=LEVEL set the debug level, integer between 0 and 3"
+msgstr ""
+" -d, --debug=STUFE Fehlerdiagnosestufe festlegen, Ganzzahl zwischen 0 und "
+"3"
+
+#: src/main.c:115 src/server/server.c:117
+#, c-format
+msgid "Report bugs to: %s\n"
+msgstr "Programmfehler melden an: %s\n"
+
+#: src/main.c:117 src/server/server.c:119
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "%s-Website: <%s>\n"
+
+#: src/main.c:454
+msgid "Psensor has not been compiled with remote sensor support."
+msgstr "Psensor wurde ohne Unterstützung für entfernte Sensoren kompiliert."
+
+#: src/main.c:517
+msgid "Enables debug mode."
+msgstr "Fehlerdiagnosemodus wird aktiviert."
+
+#: src/main.c:529 src/server/server.c:380
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "Rufen Sie »%s --help« auf, um weitere Informationen zu erhalten.\n"
+
+#: src/main.c:542
+msgid "A Psensor instance already exists."
+msgstr "Es existiert bereits eine Psensor-Instanz."
+
+#: src/rsensor.c:107
+#, c-format
+msgid "Fail to connect to: %s"
+msgstr "Herstellen der Verbindung gescheitert: %s"
+
+#: src/rsensor.c:144
+#, c-format
+msgid "Invalid content: %s"
+msgstr "Ungültiger Inhalt: %s"
+
+#: src/rsensor.c:184
+#, c-format
+msgid "Invalid JSON: %s"
+msgstr "Ungültiges JSON: %s"
+
+#: src/server/server.c:54
+msgid "<html><body><p>Server stop requested</p></body></html>"
+msgstr "<html><body><p>Anhalten des Servers angefordert</p></body></html>"
+
+#: src/server/server.c:60
+msgid ""
+"<html><body><p>Page not found - Go to <a href='/'>Main page</a></p></body>"
+msgstr ""
+"<html><body><p>Seite nicht gefunden – Gehen Sie zurück zur <a "
+"href='/'>Startseite</a></p></body>"
+
+#: src/server/server.c:84
+#, c-format
+msgid ""
+"Copyright (C) %s jeanfi@gmail.com\n"
+"License GPLv2: GNU GPL version 2 or later <http://www.gnu.org/licenses/old-"
+"licenses/gpl-2.0.html>\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"Copyright © %s jeanfi@gmail.com\n"
+"Lizenz GPLv2: GNU GPL Version 2 oder neuer <http://www.gnu.org/licenses/old-"
+"licenses/gpl-2.0.html>\n"
+"Dies ist freie Software: Sie können Sie beliebig ändern und "
+"weiterverbreiten.\n"
+"Sie wird OHNE JEGLICHE GEWÄHRLEISTUNG zur Verfügung gestellt.\n"
+
+#: src/server/server.c:96
+msgid ""
+"psensor-server is an HTTP server for monitoring hardware sensors remotely."
+msgstr ""
+"psensor-server ist ein HTTP-Server zur Fernüberwachung von Hardware-Sensoren."
+
+#: src/server/server.c:101
+msgid ""
+" -h, --help\t\tdisplay this help and exit\n"
+" -v, --version\t\tdisplay version information and exit"
+msgstr ""
+" -h, --help\t\tDiese Hilfe anzeigen und beenden\n"
+" -v, --version\t\tVersionsinformationen anzeigen und beenden"
+
+#: src/server/server.c:105
+msgid ""
+" -p,--port=PORT\twebserver port\n"
+" -w,--wdir=DIR\t\tdirectory containing webserver pages"
+msgstr ""
+" -p,--port=PORT\tWebserver-Port\n"
+" -w,--wdir=DIR\t\tOrdner, der Webserver-Seiten enthält"
+
+#: src/server/server.c:109
+msgid " -d, --debug=LEVEL set the debug level, integer between 0 and 3"
+msgstr ""
+" -d, --debug=LEVEL Fehlerdiagnoseebene festlegen, Ganzzahl zwischen 0 "
+"und 3"
+
+#: src/server/server.c:111
+msgid " -l, --log-file=PATH set the log file to PATH"
+msgstr " -l, --log-file=PATH Protokolldatei auf PATH festlegen"
+
+#: src/server/server.c:112
+msgid " --sensor-log-file=PATH set the sensor log file to PATH"
+msgstr " --sensor-log-file=PATH Sensorenprotokolldatei auf PATH festlegen"
+
+#: src/server/server.c:113
+msgid " --sensor-log-interval=S set the sensor log interval to S (seconds)"
+msgstr ""
+" --sensor-log-interval=S Sensorenprotokollierungsintervall auf S (Sekunden) "
+"festlegen"
+
+#: src/server/server.c:297
+#, c-format
+msgid "HTTP Request: %s"
+msgstr "HTTP Abfrage: %s"
+
+#: src/server/server.c:360
+#, c-format
+msgid "Enables debug mode: %d"
+msgstr "Aktiviert den Fehlerdiagnosemodus: %d"
+
+#: src/server/server.c:402
+msgid "No sensors detected."
+msgstr "Keine Sensoren erkannt."
+
+#: src/server/server.c:409
+msgid "Failed to create Web server."
+msgstr "Erzeugen des Webservers ist gescheitert."
+
+#: src/server/server.c:413
+#, c-format
+msgid "Web server started on port: %d"
+msgstr "Web-Server wurde gestartet auf Port: %d"
+
+#: src/server/server.c:414
+#, c-format
+msgid "WWW directory: %s"
+msgstr "WWW-Ordner: %s"
+
+#: src/server/server.c:415
+#, c-format
+msgid "URL: http://localhost:%d"
+msgstr "Adresse: http://localhost:%d"
+
+#: src/server/server.c:425
+msgid "Failed to activate logging of sensors."
+msgstr "Aktivieren der Sensorenprotokollierung ist gescheitert."
+
+#: src/ui.c:84
+msgid "Psensor is a GTK+ application for monitoring hardware sensors"
+msgstr "Psensor ist eine GTK-Anwendung zur Überwachung von Hardware-Sensoren"
+
+#: src/ui.c:87
+msgid ""
+"Copyright(c) 2010-2013\n"
+"jeanfi@gmail.com"
+msgstr ""
+"Copyright © 2010-2013\n"
+"jeanfi@gmail.com"
+
+#: src/ui.c:90
+msgid "About Psensor"
+msgstr "Info zu Psensor"
+
+#: src/ui.c:93
+msgid "Psensor Homepage"
+msgstr "Psensor-Website"
+
+#: src/ui.c:217
+msgid "Failed to load Psensor icon."
+msgstr "Laden des Psensor-Symbols ist gescheitert."
+
+#: src/ui_sensorlist.c:245
+msgid "Select foreground color"
+msgstr "Wählen Sie eine Vordergrundfarbe"
+
+#: src/ui_sensorlist.c:297
+msgid "Sensor"
+msgstr "Sensor"
+
+#: src/ui_sensorlist.c:303
+msgid "Value"
+msgstr "Wert"
+
+#: src/ui_sensorlist.c:309
+msgid "Min"
+msgstr "Min."
+
+#: src/ui_sensorlist.c:315
+msgid "Max"
+msgstr "Max."
+
+#: src/ui_sensorlist.c:322
+msgid "Color"
+msgstr "Farbe"
+
+#: src/ui_appindicator.c:106
+msgid "_Show"
+msgstr "_Anzeigen"
+
+#: src/ui_appindicator.c:107
+msgid "Show"
+msgstr "Anzeigen"
+
+#: src/ui_appindicator.c:111
+msgid "_Preferences"
+msgstr "_Einstellungen"
+
+#: src/ui_appindicator.c:116
+msgid "S_ensor Preferences"
+msgstr "_Sensoreinstellungen"
+
+#: src/ui_appindicator.c:118
+msgid "SensorPreferences"
+msgstr "Sensoreinstellungen"
+
+#: src/ui_appindicator.c:122
+msgid "_About"
+msgstr "_Info"
+
+#: src/ui_appindicator.c:129
+msgid "_Quit"
+msgstr "_Beenden"
+
+#: src/ui_appindicator.c:220
+#, c-format
+msgid "building menus failed: %s"
+msgstr "Erstellen der Menüs ist gescheitert: %s"
+
+#: src/ui_notify.c:48
+msgid "gettimeofday failed."
+msgstr "gettimeofday ist gescheitert."
+
+#: src/ui_notify.c:77
+msgid "Temperature alert"
+msgstr "Temperaturalarm"
+
+#: src/ui_notify.c:79
+msgid "Fan alert"
+msgstr "Lüfteralarm"
+
+#: src/ui_sensorpref.c:248
+msgid "Unknown"
+msgstr "Unbekannt"
+
+#~ msgid "Sensor Name"
+#~ msgstr "Sensor-Name"
+
+#~ msgid "Enabled"
+#~ msgstr "Aktiviert"
+
+#, fuzzy
+#~ msgid "Enable log of measures"
+#~ msgstr "Menü aktivieren"
+
+#, fuzzy
+#~ msgid "slog_init: cannot open sensor log file: %s"
+#~ msgstr "Protokolldatei kann nicht geöffnet werden: %s"
+
+#, fuzzy
+#~ msgid "Enable indicator"
+#~ msgstr "Aktiviert"
--- /dev/null
+# Spanish translation for psensor
+# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
+# This file is distributed under the same license as the psensor package.
+# Jean-Philippe Orsini <jeanfi@gmail.com> 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: psensor\n"
+"Report-Msgid-Bugs-To: jeanfi@gmail.com\n"
+"POT-Creation-Date: 2013-10-16 09:19+0200\n"
+"PO-Revision-Date: 2013-05-12 22:16+0000\n"
+"Last-Translator: Javier <buik8roadmaster@hotmail.com>\n"
+"Language-Team: Spanish <es@li.org>\n"
+"Language: es\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2013-10-18 06:32+0000\n"
+"X-Generator: Launchpad (build 16799)\n"
+
+#: src/glade/psensor.glade:5 src/ui_appindicator.c:124
+msgid "About"
+msgstr "Acerca de"
+
+#: src/glade/psensor.glade:9 src/ui_sensorlist.c:209 src/ui_appindicator.c:112
+msgid "Preferences"
+msgstr "Ajustes"
+
+#: src/glade/psensor.glade:13 src/ui_appindicator.c:130
+msgid "Quit"
+msgstr "Salir"
+
+#: src/glade/psensor.glade:17
+msgid "Sensor Preferences"
+msgstr "Ajustes de los Sensores"
+
+#: src/glade/psensor.glade:96
+msgid "Psensor - Temperature Monitor"
+msgstr "Psensor - Monitor de temperatura"
+
+#: src/glade/psensor.glade:111
+msgid "_Psensor"
+msgstr "_Psensor"
+
+#: src/glade/psensor.glade:158
+msgid "_Help"
+msgstr "_Ayuda"
+
+#: src/glade/psensor-pref.glade:7
+msgid "Edit Preferences"
+msgstr "Editar Ajustes"
+
+#: src/glade/psensor-pref.glade:72
+msgid "Position of sensors table:"
+msgstr "Ubicación de los valores"
+
+#: src/glade/psensor-pref.glade:81
+msgid "Hide window decoration"
+msgstr "Ocultar el marco de la ventana"
+
+#: src/glade/psensor-pref.glade:98
+msgid "Keep window below"
+msgstr "Mantener debajo del resto de ventanas"
+
+#: src/glade/psensor-pref.glade:115
+msgid "Enable menu"
+msgstr "Activar menú"
+
+#: src/glade/psensor-pref.glade:132
+msgid "Enable Unity Launcher counter"
+msgstr "Inicio retardado al abrir sesión"
+
+#: src/glade/psensor-pref.glade:149
+msgid "Hide window on startup"
+msgstr "Ocultar la ventana de gráficas al iniciar sesión."
+
+#: src/glade/psensor-pref.glade:166
+msgid "Restore window position and size"
+msgstr "Restaurar tamaño y posición de la ventana"
+
+#: src/glade/psensor-pref.glade:186
+msgid "Temperature unit:"
+msgstr "Unidad de temperatura"
+
+#: src/glade/psensor-pref.glade:238
+msgid "Interface"
+msgstr "Interfaz"
+
+#: src/glade/psensor-pref.glade:276
+msgid "Foreground:"
+msgstr "Escalas y cuadrícula"
+
+#: src/glade/psensor-pref.glade:291
+msgid "Background:"
+msgstr "Fondo de gráfica"
+
+#: src/glade/psensor-pref.glade:325
+msgid "Background opacity:"
+msgstr "Opacidad del fondo:"
+
+#: src/glade/psensor-pref.glade:348
+msgid "<i>Min</i>"
+msgstr "<i>Mín</i>"
+
+#: src/glade/psensor-pref.glade:375
+msgid "<i>Max</i>"
+msgstr "<i>Máx</i>"
+
+#: src/glade/psensor-pref.glade:401
+msgid "Colors"
+msgstr "Colores"
+
+#: src/glade/psensor-pref.glade:419
+msgid "Monitoring duration:"
+msgstr "Intervalo de la gráfica"
+
+#: src/glade/psensor-pref.glade:457
+msgid "minute(s)"
+msgstr "minuto(s)"
+
+#: src/glade/psensor-pref.glade:474 src/glade/psensor-pref.glade:626
+msgid "second(s)"
+msgstr "segundo(s)"
+
+#: src/glade/psensor-pref.glade:510
+msgid "Update interval:"
+msgstr "Intervalo de actualización:"
+
+#: src/glade/psensor-pref.glade:528
+msgid "Measures"
+msgstr "Medidas"
+
+#: src/glade/psensor-pref.glade:564 src/glade/sensor-edit.glade:169
+#: src/ui_sensorlist.c:334
+msgid "Graph"
+msgstr "Gráfica"
+
+#: src/glade/psensor-pref.glade:588
+msgid "Measure update interval:"
+msgstr "Medir sensores cada:"
+
+#: src/glade/psensor-pref.glade:637
+msgid "Enable sensors logging"
+msgstr "Activar registro de sensores"
+
+#: src/glade/psensor-pref.glade:684
+msgid "Sensors logging interval"
+msgstr "Intervalo de registro de sensores"
+
+#: src/glade/psensor-pref.glade:701
+msgid "seconds(s)"
+msgstr "segundo(s)"
+
+#: src/glade/psensor-pref.glade:718
+msgid "Script executed when an alarm is raised"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:751
+msgid "Sensors"
+msgstr "Sensores"
+
+#: src/glade/sensor-edit.glade:19
+msgid "Edit Sensor Preferences"
+msgstr "Editar Ajustes Sensores"
+
+#: src/glade/sensor-edit.glade:87
+msgid "Name"
+msgstr "Nombre"
+
+#: src/glade/sensor-edit.glade:138
+msgid "Type:"
+msgstr "Tipo:"
+
+#: src/glade/sensor-edit.glade:153 src/glade/sensor-edit.glade:294
+#: src/glade/sensor-edit.glade:388 src/glade/sensor-edit.glade:459
+#: src/glade/sensor-edit.glade:508 src/lib/psensor.c:486 src/ui_notify.c:81
+msgid "N/A"
+msgstr "No disponible"
+
+#: src/glade/sensor-edit.glade:187
+msgid "Color:"
+msgstr "Color:"
+
+#: src/glade/sensor-edit.glade:201
+msgid "Alarm"
+msgstr "Alarma"
+
+#: src/glade/sensor-edit.glade:216
+msgid "Activate desktop notifications"
+msgstr "Activar notificaciones en el escritorio"
+
+#: src/glade/sensor-edit.glade:236
+msgid "Sensor Information"
+msgstr "Información del sensor"
+
+#: src/glade/sensor-edit.glade:249
+msgid "Draw sensor curve"
+msgstr "Representar el sensor en la gráfica"
+
+#: src/glade/sensor-edit.glade:333
+msgid "High threshold:"
+msgstr "Límite superior"
+
+#: src/glade/sensor-edit.glade:348
+msgid "Low threshold:"
+msgstr "Límite inferior"
+
+#: src/glade/sensor-edit.glade:409
+msgid "Ubuntu Application Indicator"
+msgstr "Indicador de aplicación de Ubuntu"
+
+#: src/glade/sensor-edit.glade:424
+msgid "Display sensor in the Application Indicator menu"
+msgstr "Mostrar sensor en el menú de aplicaciones"
+
+#: src/glade/sensor-edit.glade:444
+msgid "Chip:"
+msgstr "Chip:"
+
+#: src/glade/sensor-edit.glade:489
+msgid "Id:"
+msgstr "Identificativo:"
+
+#: src/glade/sensor-edit.glade:523
+msgid "Details"
+msgstr "Detalles"
+
+#: src/glade/sensor-edit.glade:541
+msgid "Name:"
+msgstr "Nombre:"
+
+#: src/lib/amd.c:170
+msgid "AMD: cannot found ADL library."
+msgstr "AMD: no se ha encontrado la librería ADL"
+
+#: src/lib/amd.c:197
+msgid "AMD: missing ADL's API."
+msgstr "AMD: ADL's API perdidos"
+
+#: src/lib/amd.c:207
+msgid "AMD: failed to initialize ADL."
+msgstr "AMD: error al iniciar ADL"
+
+#: src/lib/amd.c:213
+msgid "AMD: cannot get the number of adapters."
+msgstr "AMD: imposible listar el número de adaptadores"
+
+#: src/lib/amd.c:252
+#, c-format
+msgid "Number of AMD/ATI adapters: %d"
+msgstr "Numero de adaptadores AMD/ATI: %d"
+
+#: src/lib/amd.c:253
+#, c-format
+msgid "Number of active AMD/ATI adapters: %d"
+msgstr "Numero de adaptadores AMD/ATI: %d"
+
+#: src/lib/hdd_atasmart.c:152
+#, c-format
+msgid "atasmart: sk_disk_open() failure: %s."
+msgstr "atasmart: sk_disk_open() Error: %s"
+
+#: src/lib/hdd_hddtemp.c:59
+msgid "hddtemp: failed to open socket."
+msgstr "hddtemp: fallo al desplegar el conector"
+
+#: src/lib/hdd_hddtemp.c:72
+msgid "hddtemp: failed to open connection."
+msgstr "hddtemp: fallo al establecer conexión"
+
+#: src/lib/hdd_hddtemp.c:186 src/lib/hdd_hddtemp.c:256
+#, c-format
+msgid "hddtemp: wrong string: %s."
+msgstr "hddtemp: argumento erróneo:%s."
+
+#: src/lib/lmsensor.c:42
+#, c-format
+msgid "lmsensor: cannot get value of subfeature %s: %s."
+msgstr "lmsensor: imposible obtener el valor de subcaracterística %s:%s"
+
+#: src/lib/lmsensor.c:123
+msgid "lmsensor: lmsensor_psensor_create failure: wrong feature type."
+msgstr "lmsensor: lmsensor_psensor_create Fallo: tipo de funcion equivocada."
+
+#: src/lib/lmsensor.c:218
+#, c-format
+msgid "lmsensor: initialization failure: %s."
+msgstr "lmsensor: Fallo de inicialización:%s."
+
+#: src/lib/log.c:43
+#, c-format
+msgid "Cannot open log file: %s"
+msgstr "Imposible abrir el archivo de registro: %s"
+
+#: src/lib/nvidia.c:54
+msgid ""
+"NVIDIA proprietary driver not used or cannot retrieve NVIDIA GPU temperature."
+msgstr ""
+"Controlador propietario de NVIDIA no activado ó incapaz de obtener la "
+"temperatura de la GPU"
+
+#: src/lib/nvidia.c:97
+msgid "Cannot open connection to X11 server."
+msgstr "Imposible establecer conexión con el servidor X11."
+
+#: src/lib/nvidia.c:105
+msgid "Failed to retrieve NVIDIA information."
+msgstr "Error al obtener la información de NVIDIA"
+
+#: src/lib/psensor.c:482 tests/test_psensor_type_to_unit_str.c:62
+msgid "RPM"
+msgstr "RPM"
+
+#: src/lib/psensor.c:484
+msgid "%"
+msgstr "%"
+
+#: src/lib/slog.c:68
+msgid "HOME variable not set."
+msgstr "La variable HOME no ha sido definida"
+
+#: src/lib/slog.c:78
+msgid "Sensor log file already open."
+msgstr "Ya existe un registro de sensores abierto"
+
+#: src/lib/slog.c:87
+#, fuzzy, c-format
+msgid "Cannot open sensor log file: %s."
+msgstr "No se puede abrir el archivo de registro: %s."
+
+#: src/lib/slog.c:118
+msgid "Sensor log file not open."
+msgstr "No se abrió el archivo de registro."
+
+#: src/lib/slog.c:174
+msgid "Sensor log not open, cannot close."
+msgstr "¡No existe archivo que cerrar!"
+
+#: src/main.c:77
+#, c-format
+msgid ""
+"Copyright (C) %s jeanfi@gmail.com\n"
+"License GPLv2: GNU GPL version 2 or later <http://www.gnu.org/licenses/old-"
+"licenses/gpl-2.0.html>\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"Copyright (C) %s jeanfi@gmail.com\n"
+"Licencia GPLv2: GNU GPL versión 2 o posterior <http://www.gnu.org/licenses/"
+"old-licenses/gpl-2.0.html>\n"
+"Este programa es software libre: su modificación y difusión está autorizada "
+"y apoyada por su autor.\n"
+"No existe NINGUNA GARANTÍA hasta donde la ley lo permita.\n"
+
+#: src/main.c:88 src/server/server.c:94
+#, c-format
+msgid "Usage: %s [OPTION]...\n"
+msgstr "Uso: %s [OPTION]...\n"
+
+#: src/main.c:90
+msgid ""
+"Psensor is a GTK+ application for monitoring hardware sensors, including "
+"temperatures and fan speeds."
+msgstr ""
+"Psensor es un programa GTK+ que muestra datos de temperatura y ventiladores "
+"a través de los sensores de su hardware."
+
+#: src/main.c:94
+msgid "Options:"
+msgstr "Opciones"
+
+#: src/main.c:95
+msgid ""
+" -h, --help display this help and exit\n"
+" -v, --version display version information and exit"
+msgstr ""
+" -h, --help Muestra esta ayuda. \n"
+" -v, --versión Muestra información sobre la versión."
+
+#: src/main.c:101
+msgid ""
+" -u, --url=URL the URL of the psensor-server,\n"
+" example: http://hostname:3131"
+msgstr ""
+" -u, --url=URL La URL del servidor psensor,\n"
+" ejemplo: http://hostname:3131"
+
+#: src/main.c:104
+msgid ""
+" --use-libatasmart use atasmart library for disk monitoring instead of\n"
+" hddtemp daemon"
+msgstr ""
+" --usar-libatasmart usar librería atasmart para leer el sensor del disco\n"
+" duro en lugar de hddtemp daemon"
+
+#: src/main.c:107
+msgid " -n, --new-instance force the creation of a new Psensor application"
+msgstr " -n, --new-instance Fuerza el inicio de otro Psensor paralelo"
+
+#: src/main.c:110
+msgid " -d, --debug=LEVEL set the debug level, integer between 0 and 3"
+msgstr ""
+" -d, --debug=NIVEL Establece el nivel de depuración con un valor entre 0 y "
+"3"
+
+#: src/main.c:115 src/server/server.c:117
+#, c-format
+msgid "Report bugs to: %s\n"
+msgstr "Comunicar fallos: %s\n"
+
+#: src/main.c:117 src/server/server.c:119
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "%s Página Oficial: <%s>\n"
+
+#: src/main.c:454
+msgid "Psensor has not been compiled with remote sensor support."
+msgstr "Psensor no ha sido compilado con soporte para sensores remotos."
+
+#: src/main.c:517
+msgid "Enables debug mode."
+msgstr "Activa el modo de depuración"
+
+#: src/main.c:529 src/server/server.c:380
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "Introducir `%s --ayuda' para obtener más información\n"
+
+#: src/main.c:542
+msgid "A Psensor instance already exists."
+msgstr "Ya existe un Psensor en ejecución."
+
+#: src/rsensor.c:107
+#, c-format
+msgid "Fail to connect to: %s"
+msgstr "Error al conectar a:%s"
+
+#: src/rsensor.c:144
+#, c-format
+msgid "Invalid content: %s"
+msgstr "Contenido no válido:%s"
+
+#: src/rsensor.c:184
+#, c-format
+msgid "Invalid JSON: %s"
+msgstr "JSON no válido:%s"
+
+#: src/server/server.c:54
+msgid "<html><body><p>Server stop requested</p></body></html>"
+msgstr "<html><body><p>El servidor solicitó detenerse</p></body></html>"
+
+#: src/server/server.c:60
+msgid ""
+"<html><body><p>Page not found - Go to <a href='/'>Main page</a></p></body>"
+msgstr ""
+"<html><body><p>Página no encontrada- Ir a <a href='/'>Página Principal</a></"
+"p></body>"
+
+#: src/server/server.c:84
+#, c-format
+msgid ""
+"Copyright (C) %s jeanfi@gmail.com\n"
+"License GPLv2: GNU GPL version 2 or later <http://www.gnu.org/licenses/old-"
+"licenses/gpl-2.0.html>\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"Copyright (C) %s jeanfi@gmail.com\n"
+"Licencia GPLv2: GNU GPL versión 2 o posterior <http://www.gnu.org/licenses/"
+"old-licenses/gpl-2.0.html>\n"
+"Este programa es software libre: su modificación y difusión está aprobada y "
+"apoyada por el autor. \n"
+"No existe NINGUNA GARANTÍA hasta donde la ley lo permita.\n"
+
+#: src/server/server.c:96
+msgid ""
+"psensor-server is an HTTP server for monitoring hardware sensors remotely."
+msgstr ""
+"psensor-server es un servidor HTTP para obtener información de los sensores "
+"de forma remota."
+
+#: src/server/server.c:101
+msgid ""
+" -h, --help\t\tdisplay this help and exit\n"
+" -v, --version\t\tdisplay version information and exit"
+msgstr ""
+" -h, --help\t\tMuestra esta ayuda.\n"
+" -v, --version\t\tMuestra la versión."
+
+#: src/server/server.c:105
+msgid ""
+" -p,--port=PORT\twebserver port\n"
+" -w,--wdir=DIR\t\tdirectory containing webserver pages"
+msgstr ""
+" -p,--port=PORT\tPuerto del servidor web. \n"
+" -w,--wdir=DIR\t\tDirectorio de servidores web."
+
+#: src/server/server.c:109
+msgid " -d, --debug=LEVEL set the debug level, integer between 0 and 3"
+msgstr ""
+" -d, --debug=NIVEL Establece el nivel de depuración con un número de 0 "
+"a 3"
+
+#: src/server/server.c:111
+msgid " -l, --log-file=PATH set the log file to PATH"
+msgstr " -l, --log-file=PATH establece el archivo de registro en PATH"
+
+#: src/server/server.c:112
+msgid " --sensor-log-file=PATH set the sensor log file to PATH"
+msgstr " --sensor-log-file=PATH establecer el archivo de registro en PATH"
+
+#: src/server/server.c:113
+#, fuzzy
+msgid " --sensor-log-interval=S set the sensor log interval to S (seconds)"
+msgstr " --sensor-log-interval=S registrar sensores cada S (seconds)"
+
+#: src/server/server.c:297
+#, c-format
+msgid "HTTP Request: %s"
+msgstr "Petición HTTP:%s"
+
+#: src/server/server.c:360
+#, c-format
+msgid "Enables debug mode: %d"
+msgstr "Activa el modo de depuración:%d"
+
+#: src/server/server.c:402
+msgid "No sensors detected."
+msgstr "No se han detectado sensores."
+
+#: src/server/server.c:409
+msgid "Failed to create Web server."
+msgstr "Fallo al crear el servidor Web"
+
+#: src/server/server.c:413
+#, c-format
+msgid "Web server started on port: %d"
+msgstr "Servidor web iniciado en el puerto:%d"
+
+#: src/server/server.c:414
+#, c-format
+msgid "WWW directory: %s"
+msgstr "directorio WWW:%s"
+
+#: src/server/server.c:415
+#, c-format
+msgid "URL: http://localhost:%d"
+msgstr "URL: http://localhost:%d"
+
+#: src/server/server.c:425
+msgid "Failed to activate logging of sensors."
+msgstr "Error al activar el registro de sensores"
+
+#: src/ui.c:84
+msgid "Psensor is a GTK+ application for monitoring hardware sensors"
+msgstr ""
+"Psensor es una aplicación GTK+ que recoge y muestra información de los "
+"sensores del hardware."
+
+#: src/ui.c:87
+msgid ""
+"Copyright(c) 2010-2013\n"
+"jeanfi@gmail.com"
+msgstr ""
+"Copyright(c) 2010-2013\n"
+"jeanfi@gmail.com"
+
+#: src/ui.c:90
+msgid "About Psensor"
+msgstr "Sobre Psensor"
+
+#: src/ui.c:93
+msgid "Psensor Homepage"
+msgstr "Web de Psensor"
+
+#: src/ui.c:217
+msgid "Failed to load Psensor icon."
+msgstr "Error al cargar el icono de Psensor"
+
+#: src/ui_sensorlist.c:245
+msgid "Select foreground color"
+msgstr "Seleccionar el color del primer plano"
+
+#: src/ui_sensorlist.c:297
+msgid "Sensor"
+msgstr "Sensor"
+
+#: src/ui_sensorlist.c:303
+msgid "Value"
+msgstr "Valor"
+
+#: src/ui_sensorlist.c:309
+msgid "Min"
+msgstr "Mín"
+
+#: src/ui_sensorlist.c:315
+msgid "Max"
+msgstr "Máx"
+
+#: src/ui_sensorlist.c:322
+msgid "Color"
+msgstr "Color"
+
+#: src/ui_appindicator.c:106
+msgid "_Show"
+msgstr "_Mostrar"
+
+#: src/ui_appindicator.c:107
+msgid "Show"
+msgstr "Mostrar"
+
+#: src/ui_appindicator.c:111
+msgid "_Preferences"
+msgstr "_Ajustes"
+
+#: src/ui_appindicator.c:116
+msgid "S_ensor Preferences"
+msgstr "Ajust_es del sensores"
+
+#: src/ui_appindicator.c:118
+msgid "SensorPreferences"
+msgstr "Ajustes del sensor"
+
+#: src/ui_appindicator.c:122
+msgid "_About"
+msgstr "_Acerca de"
+
+#: src/ui_appindicator.c:129
+msgid "_Quit"
+msgstr "_Salir"
+
+#: src/ui_appindicator.c:220
+#, c-format
+msgid "building menus failed: %s"
+msgstr "Error al construir los menús :%s"
+
+#: src/ui_notify.c:48
+msgid "gettimeofday failed."
+msgstr "Error en la adquisición del horario."
+
+#: src/ui_notify.c:77
+msgid "Temperature alert"
+msgstr "Alarma por temperatura."
+
+#: src/ui_notify.c:79
+msgid "Fan alert"
+msgstr "Alarma por parada de ventilador."
+
+#: src/ui_sensorpref.c:248
+msgid "Unknown"
+msgstr "Desconocido"
# Oriya translations for psensor package.
# Copyright (C) 2011 Free Software Foundation, Inc.
# This file is distributed under the same license as the psensor package.
-# Jean-Philippe Orsini <jeanfi@gmail.com>, 2011.
+# Jean-Philippe Orsini <jeanfi@gmail.com>, 2011, 2012.
#
msgid ""
msgstr ""
-"Project-Id-Version: psensor 0.6.0.9\n"
+"Project-Id-Version: psensor\n"
"Report-Msgid-Bugs-To: jeanfi@gmail.com\n"
-"POT-Creation-Date: 2012-03-26 10:30+0200\n"
-"PO-Revision-Date: 2011-02-07 21:18+0100\n"
-"Last-Translator: Jean-Philippe Orsini <jeanfi@gmail.com>\n"
-"Language-Team: Oriya\n"
-"Language: or\n"
+"POT-Creation-Date: 2013-10-16 09:19+0200\n"
+"PO-Revision-Date: 2013-06-29 15:14+0000\n"
+"Last-Translator: londumas <helion331990@gmail.com>\n"
+"Language-Team: French <>\n"
+"Language: fr_FR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8-bit\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2013-10-18 06:32+0000\n"
+"X-Generator: Launchpad (build 16799)\n"
-#: src/main.c:77
+#: src/glade/psensor.glade:5 src/ui_appindicator.c:124
+msgid "About"
+msgstr "À propos"
+
+#: src/glade/psensor.glade:9 src/ui_sensorlist.c:209 src/ui_appindicator.c:112
+msgid "Preferences"
+msgstr "Préférences"
+
+#: src/glade/psensor.glade:13 src/ui_appindicator.c:130
+msgid "Quit"
+msgstr "Quitter"
+
+#: src/glade/psensor.glade:17
+msgid "Sensor Preferences"
+msgstr "Préférences des capteurs"
+
+#: src/glade/psensor.glade:96
+msgid "Psensor - Temperature Monitor"
+msgstr "Psensor - Surveillance Des Températures"
+
+#: src/glade/psensor.glade:111
+msgid "_Psensor"
+msgstr ""
+
+#: src/glade/psensor.glade:158
+msgid "_Help"
+msgstr "_Aide"
+
+#: src/glade/psensor-pref.glade:7
+msgid "Edit Preferences"
+msgstr "Modifier les préférences"
+
+#: src/glade/psensor-pref.glade:72
+msgid "Position of sensors table:"
+msgstr "Position de la table des capteurs:"
+
+#: src/glade/psensor-pref.glade:81
+msgid "Hide window decoration"
+msgstr "Cacher les décorations de la fenêtre"
+
+#: src/glade/psensor-pref.glade:98
+msgid "Keep window below"
+msgstr "Garder la fenêtre en arrière-plan"
+
+#: src/glade/psensor-pref.glade:115
+msgid "Enable menu"
+msgstr "Activer le menu"
+
+#: src/glade/psensor-pref.glade:132
+msgid "Enable Unity Launcher counter"
+msgstr "Activer le compteur du lanceur de Unity"
+
+#: src/glade/psensor-pref.glade:149
+msgid "Hide window on startup"
+msgstr "Cacher la fenêtre au lancement"
+
+#: src/glade/psensor-pref.glade:166
+msgid "Restore window position and size"
+msgstr "Rétablir la position et la taille de la fenêtre"
+
+#: src/glade/psensor-pref.glade:186
+msgid "Temperature unit:"
+msgstr "Unité de température:"
+
+#: src/glade/psensor-pref.glade:238
+msgid "Interface"
+msgstr "Interface"
+
+#: src/glade/psensor-pref.glade:276
+msgid "Foreground:"
+msgstr "Avant-plan:"
+
+#: src/glade/psensor-pref.glade:291
+msgid "Background:"
+msgstr "Arrière-plan:"
+
+#: src/glade/psensor-pref.glade:325
+msgid "Background opacity:"
+msgstr "Opacité de l'arrière-plan :"
+
+#: src/glade/psensor-pref.glade:348
+msgid "<i>Min</i>"
+msgstr "<i>Min</i>"
+
+#: src/glade/psensor-pref.glade:375
+msgid "<i>Max</i>"
+msgstr "<i>Max</i>"
+
+#: src/glade/psensor-pref.glade:401
+msgid "Colors"
+msgstr "Couleurs"
+
+#: src/glade/psensor-pref.glade:419
+msgid "Monitoring duration:"
+msgstr "Durée de surveillance:"
+
+#: src/glade/psensor-pref.glade:457
+msgid "minute(s)"
+msgstr "minutes(s)"
+
+#: src/glade/psensor-pref.glade:474 src/glade/psensor-pref.glade:626
+msgid "second(s)"
+msgstr "seconde(s)"
+
+#: src/glade/psensor-pref.glade:510
+msgid "Update interval:"
+msgstr "Intervalle de mise à jour:"
+
+#: src/glade/psensor-pref.glade:528
+msgid "Measures"
+msgstr "Mesures"
+
+#: src/glade/psensor-pref.glade:564 src/glade/sensor-edit.glade:169
+#: src/ui_sensorlist.c:334
+msgid "Graph"
+msgstr "Graphe"
+
+#: src/glade/psensor-pref.glade:588
+msgid "Measure update interval:"
+msgstr "Intervalle de mise à jour des mesures:"
+
+#: src/glade/psensor-pref.glade:637
+msgid "Enable sensors logging"
+msgstr "Activer la journalisation des capteurs"
+
+#: src/glade/psensor-pref.glade:684
+msgid "Sensors logging interval"
+msgstr "Intervalle de journallisation des capteurs"
+
+#: src/glade/psensor-pref.glade:701
+msgid "seconds(s)"
+msgstr "seconde(s)"
+
+#: src/glade/psensor-pref.glade:718
+msgid "Script executed when an alarm is raised"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:751
+msgid "Sensors"
+msgstr "Capteurs"
+
+#: src/glade/sensor-edit.glade:19
+msgid "Edit Sensor Preferences"
+msgstr "Préférences des capteurs"
+
+#: src/glade/sensor-edit.glade:87
+msgid "Name"
+msgstr "Nom :"
+
+#: src/glade/sensor-edit.glade:138
+msgid "Type:"
+msgstr "Type :"
+
+#: src/glade/sensor-edit.glade:153 src/glade/sensor-edit.glade:294
+#: src/glade/sensor-edit.glade:388 src/glade/sensor-edit.glade:459
+#: src/glade/sensor-edit.glade:508 src/lib/psensor.c:486 src/ui_notify.c:81
+msgid "N/A"
+msgstr "N/A"
+
+#: src/glade/sensor-edit.glade:187
+msgid "Color:"
+msgstr "Couleur:"
+
+#: src/glade/sensor-edit.glade:201
+msgid "Alarm"
+msgstr "Alarme"
+
+#: src/glade/sensor-edit.glade:216
+msgid "Activate desktop notifications"
+msgstr "Activer les notifications du bureau"
+
+#: src/glade/sensor-edit.glade:236
+msgid "Sensor Information"
+msgstr "Informations du capteur"
+
+#: src/glade/sensor-edit.glade:249
+msgid "Draw sensor curve"
+msgstr "Dessiner la courbe du capteur"
+
+#: src/glade/sensor-edit.glade:333
+msgid "High threshold:"
+msgstr "Seuil supérieur:"
+
+#: src/glade/sensor-edit.glade:348
+msgid "Low threshold:"
+msgstr "Seuil inférieur:"
+
+#: src/glade/sensor-edit.glade:409
+msgid "Ubuntu Application Indicator"
+msgstr "Indicateur d'application d'Ubuntu"
+
+#: src/glade/sensor-edit.glade:424
+msgid "Display sensor in the Application Indicator menu"
+msgstr "Afficher le capteur dans le menu de l'indicateur d'application"
+
+#: src/glade/sensor-edit.glade:444
+msgid "Chip:"
+msgstr "Puce :"
+
+#: src/glade/sensor-edit.glade:489
+msgid "Id:"
+msgstr "Id:"
+
+#: src/glade/sensor-edit.glade:523
+msgid "Details"
+msgstr "Détails"
+
+#: src/glade/sensor-edit.glade:541
+msgid "Name:"
+msgstr "Nom:"
+
+#: src/lib/amd.c:170
+msgid "AMD: cannot found ADL library."
+msgstr "AMD: impossible de trouver la bibliothèque ADL."
+
+#: src/lib/amd.c:197
+msgid "AMD: missing ADL's API."
+msgstr "AMD: L'interface de programmation ADL est manquante."
+
+#: src/lib/amd.c:207
+msgid "AMD: failed to initialize ADL."
+msgstr "AMD: échec de l'initialisation d'ADL."
+
+#: src/lib/amd.c:213
+msgid "AMD: cannot get the number of adapters."
+msgstr "AMD: impossible de récupérer le nombre d'adaptateurs."
+
+#: src/lib/amd.c:252
+#, c-format
+msgid "Number of AMD/ATI adapters: %d"
+msgstr ""
+
+#: src/lib/amd.c:253
+#, c-format
+msgid "Number of active AMD/ATI adapters: %d"
+msgstr ""
+
+#: src/lib/hdd_atasmart.c:152
+#, c-format
+msgid "atasmart: sk_disk_open() failure: %s."
+msgstr "atasmart: échec de sk_disk_open(): %s."
+
+#: src/lib/hdd_hddtemp.c:59
+msgid "hddtemp: failed to open socket."
+msgstr "hddtemp: échec d'ouverture de l'interface de connexion."
+
+#: src/lib/hdd_hddtemp.c:72
+msgid "hddtemp: failed to open connection."
+msgstr "hddtemp: échec de l'ouverture de la connexion."
+
+#: src/lib/hdd_hddtemp.c:186 src/lib/hdd_hddtemp.c:256
+#, c-format
+msgid "hddtemp: wrong string: %s."
+msgstr "hddtemp: mauvaise chaîne: %s."
+
+#: src/lib/lmsensor.c:42
+#, c-format
+msgid "lmsensor: cannot get value of subfeature %s: %s."
+msgstr ""
+"lmsensor: impossible de récupérer la valeur de la sous-fonction %s: %s."
+
+#: src/lib/lmsensor.c:123
+msgid "lmsensor: lmsensor_psensor_create failure: wrong feature type."
+msgstr "lmsensor: échec de lmsensor_psensor_create : mauvais type de fonction."
+
+#: src/lib/lmsensor.c:218
+#, c-format
+msgid "lmsensor: initialization failure: %s."
+msgstr "lmsensor: échec de l'initialisation: %s."
+
+#: src/lib/log.c:43
+#, c-format
+msgid "Cannot open log file: %s"
+msgstr "Impossible d'ouvrir le journal: %s"
+
+#: src/lib/nvidia.c:54
+msgid ""
+"NVIDIA proprietary driver not used or cannot retrieve NVIDIA GPU temperature."
+msgstr "Échec de la récupération des températures NVIDIA."
+
+#: src/lib/nvidia.c:97
+msgid "Cannot open connection to X11 server."
+msgstr "Impossible d'ouvrir la connexion au serveur X11."
+
+#: src/lib/nvidia.c:105
+msgid "Failed to retrieve NVIDIA information."
+msgstr "Échec de la récupération des information NVIDIA."
+
+#: src/lib/psensor.c:482 tests/test_psensor_type_to_unit_str.c:62
+msgid "RPM"
+msgstr "Tr/min"
+
+#: src/lib/psensor.c:484
+msgid "%"
+msgstr "%"
+
+#: src/lib/slog.c:68
+msgid "HOME variable not set."
+msgstr "Variable home non définie."
+
+#: src/lib/slog.c:78
+msgid "Sensor log file already open."
+msgstr "Le journal des capteurs est déjà ouvert."
+
+#: src/lib/slog.c:87
#, fuzzy, c-format
+msgid "Cannot open sensor log file: %s."
+msgstr "Ne peut ouvrir le journal : %s."
+
+#: src/lib/slog.c:118
+msgid "Sensor log file not open."
+msgstr "Le journal des capteurs n'est pas ouvert."
+
+#: src/lib/slog.c:174
+msgid "Sensor log not open, cannot close."
+msgstr "Le journal des capteurs n'est pas ouvert, il ne peut être fermé."
+
+#: src/main.c:77
+#, c-format
msgid ""
"Copyright (C) %s jeanfi@gmail.com\n"
"License GPLv2: GNU GPL version 2 or later <http://www.gnu.org/licenses/old-"
"This is free software: you are free to change and redistribute it.\n"
"There is NO WARRANTY, to the extent permitted by law.\n"
msgstr ""
-"Copyright (C) %s wpitchoune@gmail.com\n"
-"License GPLv2: GNU GPL version 3 ou ultérieure<http://www.gnu.org/licenses/"
+"Copyright © %s wpitchoune@gmail.com\n"
+"Licence GPLv2 : GNU GPL version 3 ou ultérieure <http://www.gnu.org/licenses/"
"old-licenses/gpl-2.0.html>\n"
-"Ceci est un logiciel libre, vous êtes libre de le modifier et de le \n"
+"Ceci est un logiciel libre, vous êtes libre de le modifier et de le\n"
"redistribuer.\n"
-"Ce logiciel n'est accompagné d'ABSOLUMENT AUCUNE GARANTIE, dans les limites\n"
-"autorisees par la loi applicable.\n"
+"Ce logiciel n'est accompagné d’ABSOLUMENT AUCUNE GARANTIE, dans les limites\n"
+"autorisées par la loi.\n"
-#: src/main.c:88 src/server/server.c:86
+#: src/main.c:88 src/server/server.c:94
#, c-format
msgid "Usage: %s [OPTION]...\n"
msgstr "Utilisation: %s [OPTION]...\n"
#: src/main.c:90
msgid ""
-"psensor is a GTK application for monitoring hardware sensors, including "
+"Psensor is a GTK+ application for monitoring hardware sensors, including "
"temperatures and fan speeds."
msgstr ""
-"psensor est une application GTK pour surveiller les sondes matérielles "
-"thermiques et les ventilateurs."
+"Psensor est une application GTK+ pour surveiller les capteurs thermiques et "
+"les vitesses de ventilateurs."
#: src/main.c:94
msgid "Options:"
" -h, --help afficher cette aide et quitter\n"
" -v, --version afficher les informations de version et quitter"
-#: src/main.c:100
+#: src/main.c:101
msgid ""
-" -u, --url=URL the URL of the psensor-server, example: http://"
-"hostname:3131"
+" -u, --url=URL the URL of the psensor-server,\n"
+" example: http://hostname:3131"
msgstr ""
" -u, --url=URL l'URL de psensor-server, example: http://hostname:3131"
-#: src/main.c:105
-msgid " -d, --debug=LEVEL set the debug level, integer between 0 and 3"
-msgstr ""
-
-#: src/main.c:110 src/server/server.c:104
-#, c-format
-msgid "Report bugs to: %s\n"
-msgstr "Signaler les bugs à: %s\n"
-
-#: src/main.c:112 src/server/server.c:106
-#, c-format
-msgid "%s home page: <%s>\n"
-msgstr "%s page d'acceuil: <%s>\n"
-
-#: src/main.c:425
-#, fuzzy
-msgid "Enables debug mode."
-msgstr "Activée"
-
-#: src/main.c:434 src/server/server.c:352
-#, c-format
-msgid "Try `%s --help' for more information.\n"
-msgstr "Essayez `%s --help' pour plus d'informations.\n"
-
-#: src/main.c:469
-#, c-format
-msgid "ERROR: Not compiled with remote sensor support.\n"
-msgstr ""
-"ERREUR: Psensor n'a pas ete compilé avec le support de surveillance à "
-"distance.\n"
-
-#: src/ui.c:80
-#, fuzzy
-msgid "Psensor is a GTK+ application for monitoring hardware sensors"
-msgstr ""
-"psensor est une application GTK pour surveiller les sondes matérielles "
-"thermiques et les ventilateurs."
-
-#: src/ui.c:83
+#: src/main.c:104
msgid ""
-"Copyright(c) 2010-2012\n"
-"jeanfi@gmail.com"
+" --use-libatasmart use atasmart library for disk monitoring instead of\n"
+" hddtemp daemon"
msgstr ""
+" --use-libatasmart utiliser la librairie atasmart pour la surveillance\n"
+" des disks a la place du serveur hddtemp"
-#: src/ui.c:86
-msgid "About Psensor"
+#: src/main.c:107
+msgid " -n, --new-instance force the creation of a new Psensor application"
msgstr ""
+" -n, --new-instance forcer la création d'une nouvelle occurrence de "
+"l'application Psensor"
-#: src/ui.c:89
-msgid "Psensor Homepage"
+#: src/main.c:110
+msgid " -d, --debug=LEVEL set the debug level, integer between 0 and 3"
msgstr ""
+" -d, --debug=LEVEL assigner le niveau de débogage, nombre entier entre 0 "
+"et 3"
-#: src/ui.c:144
-#, fuzzy
-msgid "_Preferences"
-msgstr "Configuration"
-
-#: src/ui.c:145 src/ui_sensorlist.c:200
-msgid "Preferences"
-msgstr "Configuration"
-
-#: src/ui.c:149
-#, fuzzy
-msgid "_Sensor Preferences"
-msgstr "Editer La Configuration Des Sondes"
-
-#: src/ui.c:150
-#, fuzzy
-msgid "Sensor Preferences"
-msgstr "Editer La Configuration Des Sondes"
-
-#: src/ui.c:154
-#, fuzzy
-msgid "_Quit"
-msgstr "Quitter"
+#: src/main.c:115 src/server/server.c:117
+#, c-format
+msgid "Report bugs to: %s\n"
+msgstr "Signaler les bogues à: %s\n"
-#: src/ui.c:154
-msgid "Quit"
-msgstr "Quitter"
+#: src/main.c:117 src/server/server.c:119
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "%s page d’accueil: <%s>\n"
-#: src/ui.c:160
-msgid "_About"
+#: src/main.c:454
+msgid "Psensor has not been compiled with remote sensor support."
msgstr ""
+"Psensor n'a pas été compilé avec le support de surveillance à distance."
-#: src/ui.c:161
-msgid "About"
-msgstr ""
+#: src/main.c:517
+msgid "Enables debug mode."
+msgstr "Active le mode de débogage."
-#: src/ui.c:183 src/ui_appindicator.c:176
+#: src/main.c:529 src/server/server.c:380
#, c-format
-msgid "building menus failed: %s"
-msgstr ""
-
-#: src/ui.c:231
-msgid "Psensor - Temperature Monitor"
-msgstr "Psensor - Surveillance Des Temperatures"
-
-#: src/ui.c:248
-#, fuzzy, c-format
-msgid "ERROR: Failed to load psensor icon.\n"
-msgstr "ERREUR: Echec de l'initialisation de 'lm-sensors'\n"
-
-#: src/ui_sensorlist.c:231
-msgid "Select foreground color"
-msgstr "Selectionner la couleur d'avant-plan"
-
-#: src/ui_sensorlist.c:308 src/glade/psensor-pref.glade:241
-msgid "Sensor"
-msgstr "Sonde"
-
-#: src/ui_sensorlist.c:314
-msgid "Value"
-msgstr "Valeur"
-
-#: src/ui_sensorlist.c:320
-msgid "Min"
-msgstr "Min"
-
-#: src/ui_sensorlist.c:326
-msgid "Max"
-msgstr "Max"
-
-#: src/ui_sensorlist.c:333
-msgid "Color"
-msgstr "Couleur"
-
-#: src/ui_sensorlist.c:345
-msgid "Enabled"
-msgstr "Activée"
-
-#: src/ui_sensorlist.c:374 src/ui_sensorlist.c:375 src/ui_sensorlist.c:376
-#: src/glade/sensor-edit.glade:87 src/glade/sensor-edit.glade:153
-msgid "N/A"
-msgstr "N/A"
-
-#: src/ui_notify.c:45
-msgid "gettimeofday failed"
-msgstr ""
-
-#: src/ui_notify.c:67 src/ui_notify.c:69
-msgid "Temperature alert"
-msgstr "Alerte thermique"
+msgid "Try `%s --help' for more information.\n"
+msgstr "Essayez « %s --help » pour plus d'informations.\n"
-#: src/ui_sensorpref.c:397
-#, fuzzy
-msgid "Sensor Name"
-msgstr "Sonde"
+#: src/main.c:542
+msgid "A Psensor instance already exists."
+msgstr "Une instance de Psensor existe déjà."
#: src/rsensor.c:107
-#, fuzzy, c-format
+#, c-format
msgid "Fail to connect to: %s"
-msgstr "ERREUR: Echer de la connectio à: %s\n"
+msgstr "Échec de la connexion à: %s"
#: src/rsensor.c:144
-#, fuzzy, c-format
+#, c-format
msgid "Invalid content: %s"
-msgstr "ERREUR: Contenu invalide: %s\n"
+msgstr "Contenu invalide: %s"
#: src/rsensor.c:184
-#, fuzzy, c-format
+#, c-format
msgid "Invalid JSON: %s"
-msgstr "ERREUR: Invalide JSON: %s\n"
+msgstr "JSON invalide: %s"
+
+#: src/server/server.c:54
+msgid "<html><body><p>Server stop requested</p></body></html>"
+msgstr "<html><body><p>L’arrêt du serveur a été demandé</p></body></html>"
-#: src/server/server.c:53
+#: src/server/server.c:60
msgid ""
"<html><body><p>Page not found - Go to <a href='/'>Main page</a></p></body>"
msgstr ""
+"<html><body><p>Page introuvable - Allez à <a href='/'>Main page</a></p></"
+"body>"
-#: src/server/server.c:76
-#, fuzzy, c-format
+#: src/server/server.c:84
+#, c-format
msgid ""
"Copyright (C) %s jeanfi@gmail.com\n"
"License GPLv2: GNU GPL version 2 or later <http://www.gnu.org/licenses/old-"
"This is free software: you are free to change and redistribute it.\n"
"There is NO WARRANTY, to the extent permitted by law.\n"
msgstr ""
-"Copyright (C) %s wpitchoune@gmail.com\n"
-"License GPLv2: GNU GPL version 3 ou ultérieure<http://www.gnu.org/licenses/"
+"Copyright © %s wpitchoune@gmail.com\n"
+"License GPLv2 : GNU GPL version 3 ou ultérieure <http://www.gnu.org/licenses/"
"old-licenses/gpl-2.0.html>\n"
"Ceci est un logiciel libre, vous êtes libre de le modifier et de le \n"
"redistribuer.\n"
"Ce logiciel n'est accompagné d'ABSOLUMENT AUCUNE GARANTIE, dans les limites\n"
-"autorisees par la loi applicable.\n"
+"autorisées par la loi.\n"
-#: src/server/server.c:88
+#: src/server/server.c:96
msgid ""
"psensor-server is an HTTP server for monitoring hardware sensors remotely."
msgstr ""
-"psensor-server est un serveur HTTP pour surveiller à distance les sondes "
+"psensor-server est un serveur HTTP pour surveiller à distance les capteurs "
"matérielles."
-#: src/server/server.c:93
-#, fuzzy
+#: src/server/server.c:101
msgid ""
" -h, --help\t\tdisplay this help and exit\n"
" -v, --version\t\tdisplay version information and exit"
msgstr ""
-" -h, --help afficher cette aide et quitter\n"
-" -v, --version afficher les informations de version et quitter"
+" -h, --help\t\tafficher cette aide et quitter\n"
+" -v, --version\t\tafficher les informations de version et quitter"
-#: src/server/server.c:98
-#, fuzzy
+#: src/server/server.c:105
msgid ""
-" -d,--debug\t\trun in debug mode\n"
" -p,--port=PORT\twebserver port\n"
" -w,--wdir=DIR\t\tdirectory containing webserver pages"
msgstr ""
-" -p,--port=PORT port du serveur Web\n"
-" -w,--wdir=DIR répertoire contenant les pages du serveur Web"
+" -p,--port=PORT\tport du serveur Web\n"
+" -w,--wdir=DIR\t\trépertoire contenant les pages du serveur Web"
-#: src/server/server.c:175
-msgid "<html><body><p>Server stop requested</p></body></html>"
+#: src/server/server.c:109
+msgid " -d, --debug=LEVEL set the debug level, integer between 0 and 3"
msgstr ""
+" -d, --debug=LEVEL assigne le niveau de débogage, nombre entier entre 0 "
+"et 3"
-#: src/server/server.c:290
-#, c-format
-msgid "HTTP Request: %s\n"
-msgstr "Requete HTTP: %s\n"
+#: src/server/server.c:111
+msgid " -l, --log-file=PATH set the log file to PATH"
+msgstr " -l, --log-file=PATH assigner le chemin d’accès au journal"
-#: src/server/server.c:366
-#, c-format
-msgid "ERROR: no sensors detected\n"
-msgstr "ERREUR: Aucune sonde detectee\n"
+#: src/server/server.c:112
+msgid " --sensor-log-file=PATH set the sensor log file to PATH"
+msgstr " --sensor-log-file=PATH assigne le journal du capteur vers PATH"
-#: src/server/server.c:373
-#, c-format
-msgid "ERROR: Fail to create web server\n"
-msgstr "ERREUR: Echec de la creation du serveur Web\n"
-
-#: src/server/server.c:377
-#, fuzzy, c-format
-msgid "Web server started on port: %d"
-msgstr "Server Web demarre sur le port: %d\n"
-
-#: src/server/server.c:378
-#, fuzzy, c-format
-msgid "WWW directory: %s"
-msgstr "WWW repertoire: %s\n"
-
-#: src/server/server.c:379
-#, fuzzy, c-format
-msgid "URL: http://localhost:%d"
-msgstr "URL: http://localhost:%d\n"
-
-#: src/lib/amd.c:151
-#, c-format
-msgid "ERROR: ADL library not found!\n"
+#: src/server/server.c:113
+msgid " --sensor-log-interval=S set the sensor log interval to S (seconds)"
msgstr ""
+" --sensor-log-interval=S assigne l'intervalle de journalisation du capteur "
+"à S (secondes)"
-#: src/lib/amd.c:176
+#: src/server/server.c:297
#, c-format
-msgid "ERROR: ADL's API is missing!\n"
-msgstr ""
-
-#: src/lib/amd.c:185
-#, fuzzy, c-format
-msgid "ERROR: ADL Initialization Error!\n"
-msgstr "ERREUR: échec de l'initialisation nvidia\n"
-
-#: src/lib/amd.c:193
-#, fuzzy, c-format
-msgid "ERROR: Cannot get the number of adapters!\n"
-msgstr ""
-"ERREUR: Impossible de récuperer la valeur de la sous-fonctionnalité %s: %s\n"
+msgid "HTTP Request: %s"
+msgstr "Requête HTTP: %s"
-#: src/lib/hdd.c:58
-#, fuzzy, c-format
-msgid "ERROR: hdd fetch, failed to open socket\n"
-msgstr "ERREUR: hdd_fetch, écher d'ouverture de la socket\n"
-
-#: src/lib/hdd.c:72
-#, fuzzy, c-format
-msgid "ERROR: hdd fetch, failed to open connection\n"
-msgstr "ERREUR: hdd_fetch, écher de l'ouverture de la connection\n"
-
-#: src/lib/hdd.c:182
-#, c-format
-msgid "ERROR: wrong hdd string: %s"
-msgstr "ERREUR: mauvaise chaine hdd: %s"
-
-#: src/lib/hdd.c:252
-#, c-format
-msgid "ERROR: wrong hdd string: %s\n"
-msgstr "ERREUR: mauvaise chaine hdd: %s\n"
-
-#: src/lib/log.c:37
-#, c-format
-msgid "Cannot open log file: %s"
-msgstr ""
-
-#: src/lib/nvidia.c:54
+#: src/server/server.c:360
#, c-format
-msgid "ERROR: failed to retrieve nvidia temperature\n"
-msgstr "ERREUR: échec de la récupération des températures nvidia\n"
+msgid "Enables debug mode: %d"
+msgstr "Activation du mode de déboguage: %d"
-#: src/lib/nvidia.c:91
-#, fuzzy, c-format
-msgid "ERROR: Cannot open connection to X Server\n"
-msgstr "ERREUR: Echer de la connectio à: %s\n"
+#: src/server/server.c:402
+msgid "No sensors detected."
+msgstr "Aucun capteur détecté."
-#: src/lib/nvidia.c:99
-#, fuzzy, c-format
-msgid "ERROR: Cannot retrieve NVidia information\n"
-msgstr "ERREUR: échec de la récupération des températures nvidia\n"
+#: src/server/server.c:409
+msgid "Failed to create Web server."
+msgstr "Échec de la création du serveur Web."
-#: src/lib/lmsensor.c:43
+#: src/server/server.c:413
#, c-format
-msgid "ERROR: Can't get value of subfeature %s: %s\n"
-msgstr ""
-"ERREUR: Impossible de récuperer la valeur de la sous-fonctionnalité %s: %s\n"
+msgid "Web server started on port: %d"
+msgstr "Le serveur Web a été démarré sur le port: %d"
-#: src/lib/lmsensor.c:125
+#: src/server/server.c:414
#, c-format
-msgid "ERROR: create_sensor, wrong feature type\n"
-msgstr "ERREUR: create_sensor, mauvais type de fonctionnalité\n"
+msgid "WWW directory: %s"
+msgstr "WWW répertoire: %s"
-#: src/lib/lmsensor.c:208
+#: src/server/server.c:415
#, c-format
-msgid "ERROR: lm-sensors initialization failure: %s\n"
-msgstr "ERREUR: échec de l'initialisation de lm-sensors: %s\n"
+msgid "URL: http://localhost:%d"
+msgstr "URL: http://localhost:%d"
-#: src/lib/psensor.c:430
-msgid "C"
-msgstr ""
+#: src/server/server.c:425
+msgid "Failed to activate logging of sensors."
+msgstr "Échec de l'activation de la journalisation des capteurs."
-#: src/lib/psensor.c:433
-msgid "RPM"
+#: src/ui.c:84
+msgid "Psensor is a GTK+ application for monitoring hardware sensors"
msgstr ""
+"Psensor est une application GTK+ pour surveiller les capteurs thermiques et "
+"les ventilateurs."
-#: src/lib/psensor.c:436
-msgid "%"
+#: src/ui.c:87
+msgid ""
+"Copyright(c) 2010-2013\n"
+"jeanfi@gmail.com"
msgstr ""
+"Copyright © 2010-2013\n"
+"jeanfi@gmail.com"
-#: src/glade/psensor-pref.glade:7
-msgid "Edit Preferences"
-msgstr "Editer la configuration"
-
-#: src/glade/psensor-pref.glade:70
-msgid "Graph Colors"
-msgstr "Couleurs du graphe"
-
-#: src/glade/psensor-pref.glade:86
-msgid "Foreground:"
-msgstr "Avant-plan:"
+#: src/ui.c:90
+msgid "About Psensor"
+msgstr "À propos de Psensor"
-#: src/glade/psensor-pref.glade:100
-msgid "Background:"
-msgstr "Arrière-plan :"
+#: src/ui.c:93
+msgid "Psensor Homepage"
+msgstr "Site internet de Psensor"
-#: src/glade/psensor-pref.glade:114
-msgid "Background opacity:"
-msgstr "Opacité du fond:"
+#: src/ui.c:217
+msgid "Failed to load Psensor icon."
+msgstr "Échec du chargement de l’icône de Psensor."
-#: src/glade/psensor-pref.glade:165 src/glade/sensor-edit.glade:184
-msgid "Graph"
-msgstr "Graphe"
+#: src/ui_sensorlist.c:245
+msgid "Select foreground color"
+msgstr "Sélectionner la couleur d'avant-plan"
-#: src/glade/psensor-pref.glade:183
-#, fuzzy
-msgid "Update interval:"
-msgstr "Interval de mise à jour du graphe:"
+#: src/ui_sensorlist.c:297
+msgid "Sensor"
+msgstr "Capteur"
-#: src/glade/psensor-pref.glade:197
-#, fuzzy
-msgid "Monitoring duration:"
-msgstr "Durée de surveillance du graphe:"
+#: src/ui_sensorlist.c:303
+msgid "Value"
+msgstr "Valeur"
-#: src/glade/psensor-pref.glade:210 src/glade/psensor-pref.glade:272
-msgid "second(s)"
-msgstr "seconde(s)"
+#: src/ui_sensorlist.c:309
+msgid "Min"
+msgstr "Min"
-#: src/glade/psensor-pref.glade:225
-msgid "minute(s)"
-msgstr "minutes(s)"
+#: src/ui_sensorlist.c:315
+msgid "Max"
+msgstr "Max"
-#: src/glade/psensor-pref.glade:259
-msgid "Measure update interval:"
-msgstr "Interval de mise à jour des mesures:"
+#: src/ui_sensorlist.c:322
+msgid "Color"
+msgstr "Couleur"
-#: src/glade/psensor-pref.glade:288
-msgid "Interface"
-msgstr "Interface"
+#: src/ui_appindicator.c:106
+msgid "_Show"
+msgstr "_Afficher"
-#: src/glade/psensor-pref.glade:306
-msgid "Position of sensors table:"
-msgstr "Position de la table des sondes:"
+#: src/ui_appindicator.c:107
+msgid "Show"
+msgstr "Afficher"
-#: src/glade/psensor-pref.glade:317
-msgid "Hide window decoration"
-msgstr "Cacher les décorations de la fenêtre"
+#: src/ui_appindicator.c:111
+msgid "_Preferences"
+msgstr "_Préférences"
-#: src/glade/psensor-pref.glade:335
-msgid "Keep window below"
-msgstr "Garder la fenêtre en arrière-plan"
+#: src/ui_appindicator.c:116
+msgid "S_ensor Preferences"
+msgstr "Préférences des capteurs"
-#: src/glade/psensor-pref.glade:436
-msgid "<i>Min</i>"
-msgstr "<i>Min</i>"
+#: src/ui_appindicator.c:118
+msgid "SensorPreferences"
+msgstr "Configuration des capteurs"
-#: src/glade/psensor-pref.glade:463
-msgid "<i>Max</i>"
-msgstr "<i>Max</i>"
+#: src/ui_appindicator.c:122
+msgid "_About"
+msgstr "À _propos"
-#: src/glade/psensor-pref.glade:483
-#, fuzzy
-msgid "Enable menu"
-msgstr "Activée"
+#: src/ui_appindicator.c:129
+msgid "_Quit"
+msgstr "_Quitter"
-#: src/glade/psensor-pref.glade:500
-msgid "Enable Unity Launcher counter"
-msgstr "Activer le compteur du lanceur de Unity"
+#: src/ui_appindicator.c:220
+#, c-format
+msgid "building menus failed: %s"
+msgstr "La construction des menus a échouée: %s"
-#: src/glade/psensor-pref.glade:518
-#, fuzzy
-msgid "Hide window on startup"
-msgstr "Cacher les décorations de la fenêtre"
+#: src/ui_notify.c:48
+msgid "gettimeofday failed."
+msgstr "Échec de gettimeofday."
-#: src/glade/psensor-pref.glade:535
-msgid "Restore window position and size"
-msgstr ""
+#: src/ui_notify.c:77
+msgid "Temperature alert"
+msgstr "Alerte thermique"
-#: src/glade/sensor-edit.glade:8
-msgid "Edit Sensor Preferences"
-msgstr "Editer La Configuration Des Sondes"
+#: src/ui_notify.c:79
+msgid "Fan alert"
+msgstr "Alerte ventilateur"
-#: src/glade/sensor-edit.glade:104
-msgid "Name:"
-msgstr "Nom:"
+#: src/ui_sensorpref.c:248
+msgid "Unknown"
+msgstr "Inconnu"
-#: src/glade/sensor-edit.glade:139
-msgid "Type:"
-msgstr "Type:"
+#~ msgid "Sensor Name"
+#~ msgstr "Nom de la Sonde"
-#: src/glade/sensor-edit.glade:169
-msgid "Id:"
-msgstr "Id:"
+#~ msgid "Enabled"
+#~ msgstr "Activé"
-#: src/glade/sensor-edit.glade:202
#, fuzzy
-msgid "Color:"
-msgstr "Couleur:"
-
-#: src/glade/sensor-edit.glade:216
-msgid "Alarm"
-msgstr "Alarme"
-
-#: src/glade/sensor-edit.glade:231
-msgid "Activate desktop notifications"
-msgstr "Activer les notifications du bureau"
-
-#: src/glade/sensor-edit.glade:251
-msgid "Temperature limit:"
-msgstr "Limite de température:"
-
-#: src/glade/sensor-edit.glade:266
-msgid "Sensor Information"
-msgstr "Information sonde"
-
-#: src/glade/sensor-edit.glade:279
-msgid "Draw sensor curve"
-msgstr "Dessiner la courbe de la sonde"
-
-#: src/glade/sensor-edit.glade:327
-msgid "°C"
-msgstr "°C"
-
-#~ msgid "ERROR: failed gettimeofday\n"
-#~ msgstr "ERREUR: échec gettimeofday\n"
-
-#~ msgid "Current"
-#~ msgstr "Actuelle"
-
-#~ msgid "ERROR: failed to init lm-sensors\n"
-#~ msgstr "ERREUR: Echec de l'initialisation de 'lm-sensors'\n"
+#~ msgid "Enable log of measures"
+#~ msgstr "Activer le menu"
#, fuzzy
-#~ msgid "ERROR: lmsensor init failure: %s\n"
-#~ msgstr "ERREUR: Echec de l'initialisation de 'lm-sensors'\n"
-
-#~ msgid "LUATPL Error: failed to load Lua script: %s.\n"
-#~ msgstr "LUATPL Erreur: échec du chargement du script LUA: %s.\n"
-
-#~ msgid "LUATPL Error: failed to call init function: %s.\n"
-#~ msgstr "LUATPL Erreur: échec du lancement de la fonction init: %s.\n"
+#~ msgid "slog_init: cannot open sensor log file: %s"
+#~ msgstr "Impossible d'ouvrir le journal: %s"
-#~ msgid "LUATPL Error:failed to execute Lua script (%s): %s.\n"
-#~ msgstr "LUATP Erreur: échec de l'exécution du script Lua (%s): %s.\n"
-
-#~ msgid "LUATPL Error:lua script (%s) returned a wrong type.\n"
-#~ msgstr "LUATPL Errur: le script Lua (%s) a retourné le mauvais type.\n"
-
-#~ msgid "LUATPL Error:failed to open lua state.\n"
-#~ msgstr "LUATPL Errur: écher de creation du Lua state.\n"
-
-#~ msgid "LUATPL Error: code: %d.\n"
-#~ msgstr "LUATPL Erreur: code: %d.\n"
-
-#~ msgid "ERROR: nvidia initialization failure: %d\n"
-#~ msgstr "ERREUR: échec de l'initialisation nvidia: %d\n"
-
-#~ msgid "ERROR: no nvidia chips or initialization failure\n"
-#~ msgstr "ERREUR: aucunes puces nvidia ou échec de l'initialisation\n"
-
-#~ msgid "Show"
-#~ msgstr "Montrer"
-
-#~ msgid "Right"
-#~ msgstr "Droite"
-
-#~ msgid "Left"
-#~ msgstr "Gauche"
-
-#~ msgid "Top"
-#~ msgstr "Haut"
+#, fuzzy
+#~ msgid "slog_init: gettimeofday failed."
+#~ msgstr "Échec de gettimeofday."
-#~ msgid "Bottom"
-#~ msgstr "Bas"
+#, fuzzy
+#~ msgid "slog_write_sensors: gettimeofday failed."
+#~ msgstr "Échec de gettimeofday."
-#~ msgid "ERROR: Lua support not enabled\n"
-#~ msgstr "ERREUR: Le support de Lua n'est pas activé\n"
+#, fuzzy
+#~ msgid "Enable indicator"
+#~ msgstr "Activée"
--- /dev/null
+# Hungarian translation for psensor
+# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
+# This file is distributed under the same license as the psensor package.
+#
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
+# Lukács Bence <lukacs.bence1 at gmail dot com>, 2012.
+msgid ""
+msgstr ""
+"Project-Id-Version: psensor\n"
+"Report-Msgid-Bugs-To: jeanfi@gmail.com\n"
+"POT-Creation-Date: 2013-10-16 09:19+0200\n"
+"PO-Revision-Date: 2012-10-29 09:41+0000\n"
+"Last-Translator: Bence Lukács <Unknown>\n"
+"Language-Team: Hungarian <gnome-hu-list-request@gnome.org>\n"
+"Language: hu\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2013-01-21 09:32+0000\n"
+"X-Generator: Launchpad (build 16430)\n"
+
+#: src/glade/psensor.glade:5 src/ui_appindicator.c:124
+msgid "About"
+msgstr "Névjegy"
+
+#: src/glade/psensor.glade:9 src/ui_sensorlist.c:209 src/ui_appindicator.c:112
+msgid "Preferences"
+msgstr "Beállítások"
+
+#: src/glade/psensor.glade:13 src/ui_appindicator.c:130
+msgid "Quit"
+msgstr "Kilépés"
+
+#: src/glade/psensor.glade:17
+msgid "Sensor Preferences"
+msgstr "Érzékelő beállításai"
+
+#: src/glade/psensor.glade:96
+msgid "Psensor - Temperature Monitor"
+msgstr "Psensor - hőmérsékletfigyelő"
+
+#: src/glade/psensor.glade:111
+msgid "_Psensor"
+msgstr ""
+
+#: src/glade/psensor.glade:158
+msgid "_Help"
+msgstr "_Súgó"
+
+#: src/glade/psensor-pref.glade:7
+msgid "Edit Preferences"
+msgstr "Beállítások szerkesztése"
+
+#: src/glade/psensor-pref.glade:72
+msgid "Position of sensors table:"
+msgstr "Érzékelőtábla pozíciója:"
+
+#: src/glade/psensor-pref.glade:81
+msgid "Hide window decoration"
+msgstr "Ablakdíszítés elrejtése"
+
+#: src/glade/psensor-pref.glade:98
+msgid "Keep window below"
+msgstr "Ablak alul tartása"
+
+#: src/glade/psensor-pref.glade:115
+msgid "Enable menu"
+msgstr "Menü engedélyezése"
+
+#: src/glade/psensor-pref.glade:132
+msgid "Enable Unity Launcher counter"
+msgstr "Unity indítón lévő számláló engedélyezése"
+
+#: src/glade/psensor-pref.glade:149
+msgid "Hide window on startup"
+msgstr "Ablak elrejtése induláskor"
+
+#: src/glade/psensor-pref.glade:166
+msgid "Restore window position and size"
+msgstr "Ablak pozíciójának és méretének visszaállítása"
+
+#: src/glade/psensor-pref.glade:186
+msgid "Temperature unit:"
+msgstr "Hőmérséklet mértékegysége:"
+
+#: src/glade/psensor-pref.glade:238
+msgid "Interface"
+msgstr "Felület"
+
+#: src/glade/psensor-pref.glade:276
+msgid "Foreground:"
+msgstr "Előtér:"
+
+#: src/glade/psensor-pref.glade:291
+msgid "Background:"
+msgstr "Háttér:"
+
+#: src/glade/psensor-pref.glade:325
+msgid "Background opacity:"
+msgstr "Háttér átlátszósága:"
+
+#: src/glade/psensor-pref.glade:348
+msgid "<i>Min</i>"
+msgstr "<i>Min</i>"
+
+#: src/glade/psensor-pref.glade:375
+msgid "<i>Max</i>"
+msgstr "<i>Max</i>"
+
+#: src/glade/psensor-pref.glade:401
+msgid "Colors"
+msgstr "Színek"
+
+#: src/glade/psensor-pref.glade:419
+msgid "Monitoring duration:"
+msgstr "Figyelés hossza:"
+
+#: src/glade/psensor-pref.glade:457
+msgid "minute(s)"
+msgstr "perc"
+
+#: src/glade/psensor-pref.glade:474 src/glade/psensor-pref.glade:626
+msgid "second(s)"
+msgstr "s"
+
+#: src/glade/psensor-pref.glade:510
+msgid "Update interval:"
+msgstr "Frissítési időköz:"
+
+#: src/glade/psensor-pref.glade:528
+msgid "Measures"
+msgstr "Mérések"
+
+#: src/glade/psensor-pref.glade:564 src/glade/sensor-edit.glade:169
+#: src/ui_sensorlist.c:334
+msgid "Graph"
+msgstr "Grafikon"
+
+#: src/glade/psensor-pref.glade:588
+msgid "Measure update interval:"
+msgstr "Mérések frissítési időköze:"
+
+#: src/glade/psensor-pref.glade:637
+msgid "Enable sensors logging"
+msgstr "Érzékelők naplózásának engedélyezése"
+
+#: src/glade/psensor-pref.glade:684
+msgid "Sensors logging interval"
+msgstr "Naplózás időköze"
+
+#: src/glade/psensor-pref.glade:701
+msgid "seconds(s)"
+msgstr "másodperc(ek)"
+
+#: src/glade/psensor-pref.glade:718
+msgid "Script executed when an alarm is raised"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:751
+msgid "Sensors"
+msgstr "Érzékelők"
+
+#: src/glade/sensor-edit.glade:19
+msgid "Edit Sensor Preferences"
+msgstr "Érzékelő beállításainak szerkesztése"
+
+#: src/glade/sensor-edit.glade:87
+msgid "Name"
+msgstr ""
+
+#: src/glade/sensor-edit.glade:138
+msgid "Type:"
+msgstr "Típus:"
+
+#: src/glade/sensor-edit.glade:153 src/glade/sensor-edit.glade:294
+#: src/glade/sensor-edit.glade:388 src/glade/sensor-edit.glade:459
+#: src/glade/sensor-edit.glade:508 src/lib/psensor.c:486 src/ui_notify.c:81
+msgid "N/A"
+msgstr "---"
+
+#: src/glade/sensor-edit.glade:187
+msgid "Color:"
+msgstr "Szín:"
+
+#: src/glade/sensor-edit.glade:201
+msgid "Alarm"
+msgstr "Riasztás"
+
+#: src/glade/sensor-edit.glade:216
+msgid "Activate desktop notifications"
+msgstr "Asztali értesítések bekapcsolása"
+
+#: src/glade/sensor-edit.glade:236
+msgid "Sensor Information"
+msgstr "Érzékelő információi"
+
+#: src/glade/sensor-edit.glade:249
+msgid "Draw sensor curve"
+msgstr "Érzékelő görbéjének rajzolása"
+
+#: src/glade/sensor-edit.glade:333
+msgid "High threshold:"
+msgstr "Felső küszöbérték:"
+
+#: src/glade/sensor-edit.glade:348
+msgid "Low threshold:"
+msgstr "Alsó küszöbérték:"
+
+#: src/glade/sensor-edit.glade:409
+msgid "Ubuntu Application Indicator"
+msgstr "Ubuntu Alkalmazásmenü"
+
+#: src/glade/sensor-edit.glade:424
+msgid "Display sensor in the Application Indicator menu"
+msgstr "Érzékelők megjelenítése az alkalmazásmenüben"
+
+#: src/glade/sensor-edit.glade:444
+msgid "Chip:"
+msgstr "Chip:"
+
+#: src/glade/sensor-edit.glade:489
+msgid "Id:"
+msgstr "Id:"
+
+#: src/glade/sensor-edit.glade:523
+msgid "Details"
+msgstr "Részletek"
+
+#: src/glade/sensor-edit.glade:541
+msgid "Name:"
+msgstr "Név:"
+
+#: src/lib/amd.c:170
+msgid "AMD: cannot found ADL library."
+msgstr "AMD: Nem sikerült betölteni az ADL programkönyvtárat."
+
+#: src/lib/amd.c:197
+msgid "AMD: missing ADL's API."
+msgstr "AMD: hiányzó ADL API."
+
+#: src/lib/amd.c:207
+msgid "AMD: failed to initialize ADL."
+msgstr "AMD: az ADL előkészítése meghiúsult."
+
+#: src/lib/amd.c:213
+msgid "AMD: cannot get the number of adapters."
+msgstr "AMD: adapterek számainak lekérése meghiúsult"
+
+#: src/lib/amd.c:252
+#, c-format
+msgid "Number of AMD/ATI adapters: %d"
+msgstr ""
+
+#: src/lib/amd.c:253
+#, c-format
+msgid "Number of active AMD/ATI adapters: %d"
+msgstr ""
+
+#: src/lib/hdd_atasmart.c:152
+#, c-format
+msgid "atasmart: sk_disk_open() failure: %s."
+msgstr "atasmart: sk_disk_open() hiba: %s."
+
+#: src/lib/hdd_hddtemp.c:59
+msgid "hddtemp: failed to open socket."
+msgstr "hddtemp: foglalat megnyitása meghiúsult."
+
+#: src/lib/hdd_hddtemp.c:72
+msgid "hddtemp: failed to open connection."
+msgstr "hddtemp: a kapcsolat megnyitása nem sikerült."
+
+#: src/lib/hdd_hddtemp.c:186 src/lib/hdd_hddtemp.c:256
+#, c-format
+msgid "hddtemp: wrong string: %s."
+msgstr "hddtemp: rossz karakterlánc: %s."
+
+#: src/lib/lmsensor.c:42
+#, c-format
+msgid "lmsensor: cannot get value of subfeature %s: %s."
+msgstr "lmsensor: alfunkció értékének lekérdezése meghiúsult %s: %s."
+
+#: src/lib/lmsensor.c:123
+msgid "lmsensor: lmsensor_psensor_create failure: wrong feature type."
+msgstr "lmsensor: lmsensor_psensor_create hiba: rossz funkciótípus."
+
+#: src/lib/lmsensor.c:218
+#, c-format
+msgid "lmsensor: initialization failure: %s."
+msgstr "lmsensor: előkészítési hiba: %s."
+
+#: src/lib/log.c:43
+#, c-format
+msgid "Cannot open log file: %s"
+msgstr "A naplófájl megnyitása sikertelen: %s"
+
+#: src/lib/nvidia.c:54
+msgid ""
+"NVIDIA proprietary driver not used or cannot retrieve NVIDIA GPU temperature."
+msgstr ""
+
+#: src/lib/nvidia.c:97
+msgid "Cannot open connection to X11 server."
+msgstr "Nem lehet létrehozni a kapcsolatot az X11 kiszolgálóval."
+
+#: src/lib/nvidia.c:105
+msgid "Failed to retrieve NVIDIA information."
+msgstr "NVIDIA információinak lekérése meghiúsult."
+
+#: src/lib/psensor.c:482 tests/test_psensor_type_to_unit_str.c:62
+msgid "RPM"
+msgstr "RPM"
+
+#: src/lib/psensor.c:484
+msgid "%"
+msgstr "%"
+
+#: src/lib/slog.c:68
+msgid "HOME variable not set."
+msgstr "HOME változó nincs beállítva."
+
+#: src/lib/slog.c:78
+msgid "Sensor log file already open."
+msgstr "Az érzékelő naplófájlja már meg van nyitva."
+
+#: src/lib/slog.c:87
+#, c-format
+msgid "Cannot open sensor log file: %s."
+msgstr "%s érzékelő naplófájlját nem lehet megnyitni"
+
+#: src/lib/slog.c:118
+msgid "Sensor log file not open."
+msgstr "Az érzékelő naplófájlja nincs nyitva."
+
+#: src/lib/slog.c:174
+msgid "Sensor log not open, cannot close."
+msgstr "Az érzékelő naplófájlja nincs nyitva, nem lehet bezárni."
+
+#: src/main.c:77
+#, c-format
+msgid ""
+"Copyright (C) %s jeanfi@gmail.com\n"
+"License GPLv2: GNU GPL version 2 or later <http://www.gnu.org/licenses/old-"
+"licenses/gpl-2.0.html>\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"Copyright (C) %s jeanfi@gmail.com\n"
+"Licenc: GNU General Public License második (vagy bármely későbbi) változata\n"
+"<http://www.gnu.org/licenses/old-licenses/gpl-2.0.html>\n"
+"Ez egy szabad szoftver: szabadon terjesztheti és/vagy módosíthatja\n"
+"NINCS GARANCIA, a jogszabályok által megengedett mértékben.\n"
+
+#: src/main.c:88 src/server/server.c:94
+#, c-format
+msgid "Usage: %s [OPTION]...\n"
+msgstr "Használat: %s [KAPCSOLÓK]...\n"
+
+#: src/main.c:90
+msgid ""
+"Psensor is a GTK+ application for monitoring hardware sensors, including "
+"temperatures and fan speeds."
+msgstr ""
+"A Psensor egy GTK+ alkalmazás a hardver érzékelőinek figyelésére, beleértve "
+"a hőmérsékleteket és a ventilátor sebességét."
+
+#: src/main.c:94
+msgid "Options:"
+msgstr "Kapcsolók:"
+
+#: src/main.c:95
+msgid ""
+" -h, --help display this help and exit\n"
+" -v, --version display version information and exit"
+msgstr ""
+" -h, --help ezen súgó megjelenítése, majd kilépés\n"
+" -v, --version verzióinformációk megjelenítése, majd kilépés"
+
+#: src/main.c:101
+msgid ""
+" -u, --url=URL the URL of the psensor-server,\n"
+" example: http://hostname:3131"
+msgstr ""
+" -u, --url=URL a psensor-server URL-címe,\n"
+" például: http://gepnev:3131"
+
+#: src/main.c:104
+msgid ""
+" --use-libatasmart use atasmart library for disk monitoring instead of\n"
+" hddtemp daemon"
+msgstr ""
+" --use-libatasmart atasmart függvénykönyvtár használata a lemezek "
+"figyelésére a\n"
+" hddtemp démon helyett"
+
+#: src/main.c:107
+msgid " -n, --new-instance force the creation of a new Psensor application"
+msgstr " -n, --new-instance új Psensor alkalmazás indításának kényszerítése"
+
+#: src/main.c:110
+msgid " -d, --debug=LEVEL set the debug level, integer between 0 and 3"
+msgstr ""
+" -d, --debug=LEVEL hibakeresési szint beállítása, egész 0 és 3 között"
+
+#: src/main.c:115 src/server/server.c:117
+#, c-format
+msgid "Report bugs to: %s\n"
+msgstr "A talált hibákat itt jelentse be: %s\n"
+
+#: src/main.c:117 src/server/server.c:119
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "%s honlap: <%s>\n"
+
+#: src/main.c:454
+msgid "Psensor has not been compiled with remote sensor support."
+msgstr "A Psensor távoli érzékelők támogatása nélkül lett lefordítva."
+
+#: src/main.c:517
+msgid "Enables debug mode."
+msgstr "Hibakeresési mód engedélyezése."
+
+#: src/main.c:529 src/server/server.c:380
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "További információkért adja ki a „%s --help” parancsot.\n"
+
+#: src/main.c:542
+msgid "A Psensor instance already exists."
+msgstr "A Psensors egy példánya már létezik."
+
+#: src/rsensor.c:107
+#, c-format
+msgid "Fail to connect to: %s"
+msgstr "Nem sikerül kapcsolódni a következőhöz: %s"
+
+#: src/rsensor.c:144
+#, c-format
+msgid "Invalid content: %s"
+msgstr "Érvénytelen tartalom: %s"
+
+#: src/rsensor.c:184
+#, c-format
+msgid "Invalid JSON: %s"
+msgstr "Érvénytelen JSON: %s"
+
+#: src/server/server.c:54
+msgid "<html><body><p>Server stop requested</p></body></html>"
+msgstr "<html><body><p>A kiszolgáló leállítást kért</p></body></html>"
+
+#: src/server/server.c:60
+msgid ""
+"<html><body><p>Page not found - Go to <a href='/'>Main page</a></p></body>"
+msgstr ""
+"<html><body><p>Az oldal nem található - Ugrás a <a href='/'>Főoldalra</a></"
+"p></body>"
+
+#: src/server/server.c:84
+#, c-format
+msgid ""
+"Copyright (C) %s jeanfi@gmail.com\n"
+"License GPLv2: GNU GPL version 2 or later <http://www.gnu.org/licenses/old-"
+"licenses/gpl-2.0.html>\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"Copyright (C) %s jeanfi@gmail.com\n"
+"Licenc: GNU General Public License második (vagy bármely későbbi) változata\n"
+"<http://www.gnu.org/licenses/old-licenses/gpl-2.0.html>\n"
+"Ez egy szabad szoftver: szabadon terjesztheti és/vagy módosíthatja\n"
+"NINCS GARANCIA, a jogszabályok által megengedett mértékben.\n"
+
+#: src/server/server.c:96
+msgid ""
+"psensor-server is an HTTP server for monitoring hardware sensors remotely."
+msgstr ""
+"A psensor-server egy HTTP kiszolgáló a hardver érzékelőinek figyelésére "
+"távolról."
+
+#: src/server/server.c:101
+msgid ""
+" -h, --help\t\tdisplay this help and exit\n"
+" -v, --version\t\tdisplay version information and exit"
+msgstr ""
+" -h, --help\t\tezen súgó megjelenítése, majd kilépés\n"
+" -v, --version\t\tverzióinformáció megjelenítése, majd kilépés"
+
+#: src/server/server.c:105
+msgid ""
+" -p,--port=PORT\twebserver port\n"
+" -w,--wdir=DIR\t\tdirectory containing webserver pages"
+msgstr ""
+" -p,--port=PORT\twebkiszolgáló portja\n"
+" -w,--wdir=DIR\t\ta webkiszolgáló oldalait tartalmazó mappa"
+
+#: src/server/server.c:109
+msgid " -d, --debug=LEVEL set the debug level, integer between 0 and 3"
+msgstr ""
+" -d, --debug=LEVEL hibakeresési szint beállítása, egész 0 és 3 között"
+
+#: src/server/server.c:111
+msgid " -l, --log-file=PATH set the log file to PATH"
+msgstr " -l, --log-file=ÚTVONAL a naplófájl ÚTVONALÁNAK beállítása"
+
+#: src/server/server.c:112
+msgid " --sensor-log-file=PATH set the sensor log file to PATH"
+msgstr ""
+" --sensor-log-file=ÚTVONAL érzékelők naplójának beállítása az ÚTVONALRA"
+
+#: src/server/server.c:113
+msgid " --sensor-log-interval=S set the sensor log interval to S (seconds)"
+msgstr ""
+" --sensor-log-interval=S érzékelő naplózási gyakoriságának beállítása S "
+"másodpercre"
+
+#: src/server/server.c:297
+#, c-format
+msgid "HTTP Request: %s"
+msgstr "HTTP-kérés: %s"
+
+#: src/server/server.c:360
+#, c-format
+msgid "Enables debug mode: %d"
+msgstr "Hibakeresési mód engedélyezése: %d"
+
+#: src/server/server.c:402
+msgid "No sensors detected."
+msgstr "Nem találhatók érzékelők."
+
+#: src/server/server.c:409
+msgid "Failed to create Web server."
+msgstr "Nem sikerült létrehozni a webkiszolgálót."
+
+#: src/server/server.c:413
+#, c-format
+msgid "Web server started on port: %d"
+msgstr "A webkiszolgáló elindult ezen a porton: %d"
+
+#: src/server/server.c:414
+#, c-format
+msgid "WWW directory: %s"
+msgstr "WWW könyvtár: %s"
+
+#: src/server/server.c:415
+#, c-format
+msgid "URL: http://localhost:%d"
+msgstr "URL: http://localhost:%d"
+
+#: src/server/server.c:425
+msgid "Failed to activate logging of sensors."
+msgstr "Érzékelők naplózásának aktiválása meghiúsult."
+
+#: src/ui.c:84
+msgid "Psensor is a GTK+ application for monitoring hardware sensors"
+msgstr "A Psensor egy GTK+ alkalmazás a hardver érzékelőinek figyelésére"
+
+#: src/ui.c:87
+msgid ""
+"Copyright(c) 2010-2013\n"
+"jeanfi@gmail.com"
+msgstr ""
+"Copyright(c) 2010-2013\n"
+"jeanfi@gmail.com"
+
+#: src/ui.c:90
+msgid "About Psensor"
+msgstr "A Psensor névjegye"
+
+#: src/ui.c:93
+msgid "Psensor Homepage"
+msgstr "A Psensor honlapja"
+
+#: src/ui.c:217
+msgid "Failed to load Psensor icon."
+msgstr "Nem sikerült betölteni a Psensor ikont."
+
+#: src/ui_sensorlist.c:245
+msgid "Select foreground color"
+msgstr "Előtérszín kiválasztása"
+
+#: src/ui_sensorlist.c:297
+msgid "Sensor"
+msgstr "Érzékelő"
+
+#: src/ui_sensorlist.c:303
+msgid "Value"
+msgstr "Érték"
+
+#: src/ui_sensorlist.c:309
+msgid "Min"
+msgstr "Minimum"
+
+#: src/ui_sensorlist.c:315
+msgid "Max"
+msgstr "Maximum"
+
+#: src/ui_sensorlist.c:322
+msgid "Color"
+msgstr "Szín"
+
+#: src/ui_appindicator.c:106
+msgid "_Show"
+msgstr "_Megjelenítés"
+
+#: src/ui_appindicator.c:107
+msgid "Show"
+msgstr "Megjelenítés"
+
+#: src/ui_appindicator.c:111
+msgid "_Preferences"
+msgstr "_Beállítások"
+
+#: src/ui_appindicator.c:116
+msgid "S_ensor Preferences"
+msgstr "_Érzékelő beállításai"
+
+#: src/ui_appindicator.c:118
+msgid "SensorPreferences"
+msgstr "Érzékelőbeállítások"
+
+#: src/ui_appindicator.c:122
+msgid "_About"
+msgstr "_Névjegy"
+
+#: src/ui_appindicator.c:129
+msgid "_Quit"
+msgstr "_Kilépés"
+
+#: src/ui_appindicator.c:220
+#, c-format
+msgid "building menus failed: %s"
+msgstr "menük építése meghiúsult: %s"
+
+#: src/ui_notify.c:48
+msgid "gettimeofday failed."
+msgstr "gettimeofday meghiúsult."
+
+#: src/ui_notify.c:77
+msgid "Temperature alert"
+msgstr "Hőmérséklet riasztás"
+
+#: src/ui_notify.c:79
+msgid "Fan alert"
+msgstr "Ventilátor riasztás"
+
+#: src/ui_sensorpref.c:248
+msgid "Unknown"
+msgstr "Ismeretlen"
+
+#~ msgid "Sensor Name"
+#~ msgstr "Érzékelő neve"
+
+#~ msgid "Enabled"
+#~ msgstr "Engedélyezés"
+
+#, fuzzy
+#~ msgid "Enable log of measures"
+#~ msgstr "Menü engedélyezése"
+
+#, fuzzy
+#~ msgid "slog_init: cannot open sensor log file: %s"
+#~ msgstr "A naplófájl megnyitása sikertelen: %s"
+
+#, fuzzy
+#~ msgid "slog_init: gettimeofday failed."
+#~ msgstr "gettimeofday meghiúsult."
+
+#, fuzzy
+#~ msgid "slog_write_sensors: gettimeofday failed."
+#~ msgstr "gettimeofday meghiúsult."
+
+#, fuzzy
+#~ msgid "Enable indicator"
+#~ msgstr "Engedélyezés"
--- /dev/null
+# Italian translations for psensor package.
+# Copyright (C) 2012 Free Software Foundation, Inc.
+# This file is distributed under the same license as the psensor package.
+# <jeanfi@gmail.com>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: psensor 0.7.0.x\n"
+"Report-Msgid-Bugs-To: jeanfi@gmail.com\n"
+"POT-Creation-Date: 2013-10-16 09:19+0200\n"
+"PO-Revision-Date: 2013-04-14 16:06+0000\n"
+"Last-Translator: Diego Pierotto <Unknown>\n"
+"Language-Team: Italian\n"
+"Language: it\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2013-04-20 08:36+0000\n"
+"X-Generator: Launchpad (build 16567)\n"
+
+#: src/glade/psensor.glade:5 src/ui_appindicator.c:124
+msgid "About"
+msgstr "Informazioni su..."
+
+#: src/glade/psensor.glade:9 src/ui_sensorlist.c:209 src/ui_appindicator.c:112
+msgid "Preferences"
+msgstr "Preferenze"
+
+#: src/glade/psensor.glade:13 src/ui_appindicator.c:130
+msgid "Quit"
+msgstr "Esci"
+
+#: src/glade/psensor.glade:17
+msgid "Sensor Preferences"
+msgstr "Sensor Preferenze"
+
+#: src/glade/psensor.glade:96
+msgid "Psensor - Temperature Monitor"
+msgstr "Psensor - Monitor temperatura"
+
+#: src/glade/psensor.glade:111
+msgid "_Psensor"
+msgstr "_Psensor"
+
+#: src/glade/psensor.glade:158
+msgid "_Help"
+msgstr "_Aiuto"
+
+#: src/glade/psensor-pref.glade:7
+msgid "Edit Preferences"
+msgstr "Modifica le preferenze"
+
+#: src/glade/psensor-pref.glade:72
+msgid "Position of sensors table:"
+msgstr "Posizione della tabella dei sensori"
+
+#: src/glade/psensor-pref.glade:81
+msgid "Hide window decoration"
+msgstr "Nascondi le decorazioni della finestra"
+
+#: src/glade/psensor-pref.glade:98
+msgid "Keep window below"
+msgstr "Mantieni la finestra sotto"
+
+#: src/glade/psensor-pref.glade:115
+msgid "Enable menu"
+msgstr "Abilita il menù"
+
+#: src/glade/psensor-pref.glade:132
+msgid "Enable Unity Launcher counter"
+msgstr "Abilita contatore nel Launcher Unity"
+
+#: src/glade/psensor-pref.glade:149
+msgid "Hide window on startup"
+msgstr "Nascondi la finestra all'avvio"
+
+#: src/glade/psensor-pref.glade:166
+msgid "Restore window position and size"
+msgstr "Ripristina posizione e dimensione della finestra"
+
+#: src/glade/psensor-pref.glade:186
+msgid "Temperature unit:"
+msgstr "Unità di misura della temperatura"
+
+#: src/glade/psensor-pref.glade:238
+msgid "Interface"
+msgstr "Interfaccia"
+
+#: src/glade/psensor-pref.glade:276
+msgid "Foreground:"
+msgstr "Primo piano:"
+
+#: src/glade/psensor-pref.glade:291
+msgid "Background:"
+msgstr "Sfondo:"
+
+#: src/glade/psensor-pref.glade:325
+msgid "Background opacity:"
+msgstr "Opacità dello sfondo:"
+
+#: src/glade/psensor-pref.glade:348
+msgid "<i>Min</i>"
+msgstr "<i>Minimo</i>"
+
+#: src/glade/psensor-pref.glade:375
+msgid "<i>Max</i>"
+msgstr "<i>Massimo</i>"
+
+#: src/glade/psensor-pref.glade:401
+msgid "Colors"
+msgstr "Colori"
+
+#: src/glade/psensor-pref.glade:419
+msgid "Monitoring duration:"
+msgstr "Durata del monitoraggio:"
+
+#: src/glade/psensor-pref.glade:457
+msgid "minute(s)"
+msgstr "minuto/i"
+
+#: src/glade/psensor-pref.glade:474 src/glade/psensor-pref.glade:626
+msgid "second(s)"
+msgstr "secondo/i"
+
+#: src/glade/psensor-pref.glade:510
+msgid "Update interval:"
+msgstr "Intervallo di aggiornamento:"
+
+#: src/glade/psensor-pref.glade:528
+msgid "Measures"
+msgstr "Misure"
+
+#: src/glade/psensor-pref.glade:564 src/glade/sensor-edit.glade:169
+#: src/ui_sensorlist.c:334
+msgid "Graph"
+msgstr "Grafico"
+
+#: src/glade/psensor-pref.glade:588
+msgid "Measure update interval:"
+msgstr "Intervallo di aggiornamento delle misure"
+
+#: src/glade/psensor-pref.glade:637
+msgid "Enable sensors logging"
+msgstr "Abilita registrazione sensori"
+
+#: src/glade/psensor-pref.glade:684
+msgid "Sensors logging interval"
+msgstr "Intervallo registrazione sensori"
+
+#: src/glade/psensor-pref.glade:701
+msgid "seconds(s)"
+msgstr "secondo(i)"
+
+#: src/glade/psensor-pref.glade:718
+msgid "Script executed when an alarm is raised"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:751
+msgid "Sensors"
+msgstr "Sensori"
+
+#: src/glade/sensor-edit.glade:19
+msgid "Edit Sensor Preferences"
+msgstr "Modifica preferenze del sensore"
+
+#: src/glade/sensor-edit.glade:87
+msgid "Name"
+msgstr "Nome"
+
+#: src/glade/sensor-edit.glade:138
+msgid "Type:"
+msgstr "Tipo:"
+
+#: src/glade/sensor-edit.glade:153 src/glade/sensor-edit.glade:294
+#: src/glade/sensor-edit.glade:388 src/glade/sensor-edit.glade:459
+#: src/glade/sensor-edit.glade:508 src/lib/psensor.c:486 src/ui_notify.c:81
+msgid "N/A"
+msgstr "N/A"
+
+#: src/glade/sensor-edit.glade:187
+msgid "Color:"
+msgstr "Colore:"
+
+#: src/glade/sensor-edit.glade:201
+msgid "Alarm"
+msgstr "Avviso"
+
+#: src/glade/sensor-edit.glade:216
+msgid "Activate desktop notifications"
+msgstr "Attiva le notifiche sul desktop"
+
+#: src/glade/sensor-edit.glade:236
+msgid "Sensor Information"
+msgstr "Informazioni sul Sensore"
+
+#: src/glade/sensor-edit.glade:249
+msgid "Draw sensor curve"
+msgstr "Disegna curva"
+
+#: src/glade/sensor-edit.glade:333
+msgid "High threshold:"
+msgstr "Soglia verso l'alto"
+
+#: src/glade/sensor-edit.glade:348
+msgid "Low threshold:"
+msgstr "Soglia verso il basso"
+
+#: src/glade/sensor-edit.glade:409
+msgid "Ubuntu Application Indicator"
+msgstr "Indicatore Applicazione Ubuntu"
+
+#: src/glade/sensor-edit.glade:424
+msgid "Display sensor in the Application Indicator menu"
+msgstr "Mostra sensore nel menu indicatore Applicazione"
+
+#: src/glade/sensor-edit.glade:444
+msgid "Chip:"
+msgstr "Processore:"
+
+#: src/glade/sensor-edit.glade:489
+msgid "Id:"
+msgstr "Id:"
+
+#: src/glade/sensor-edit.glade:523
+msgid "Details"
+msgstr "Dettagli"
+
+#: src/glade/sensor-edit.glade:541
+msgid "Name:"
+msgstr "Nome:"
+
+#: src/lib/amd.c:170
+msgid "AMD: cannot found ADL library."
+msgstr "AMD: impossibile trovare la libreria ADL"
+
+#: src/lib/amd.c:197
+msgid "AMD: missing ADL's API."
+msgstr "AMD: impossibile trovare l'API di ADL"
+
+#: src/lib/amd.c:207
+msgid "AMD: failed to initialize ADL."
+msgstr "AMD: impossibile inizializzare ADL"
+
+#: src/lib/amd.c:213
+msgid "AMD: cannot get the number of adapters."
+msgstr "AMD: impossibile rilevare il numero di adattatori."
+
+#: src/lib/amd.c:252
+#, c-format
+msgid "Number of AMD/ATI adapters: %d"
+msgstr ""
+
+#: src/lib/amd.c:253
+#, c-format
+msgid "Number of active AMD/ATI adapters: %d"
+msgstr ""
+
+#: src/lib/hdd_atasmart.c:152
+#, c-format
+msgid "atasmart: sk_disk_open() failure: %s."
+msgstr "atasmart: errore sk_disk_open(): %s."
+
+#: src/lib/hdd_hddtemp.c:59
+msgid "hddtemp: failed to open socket."
+msgstr "hddtemp: impossibile aprire il socket."
+
+#: src/lib/hdd_hddtemp.c:72
+msgid "hddtemp: failed to open connection."
+msgstr "hddtemp: impossibile aprire la connessione."
+
+#: src/lib/hdd_hddtemp.c:186 src/lib/hdd_hddtemp.c:256
+#, c-format
+msgid "hddtemp: wrong string: %s."
+msgstr "hddtemp: errore di stringa: %s"
+
+#: src/lib/lmsensor.c:42
+#, c-format
+msgid "lmsensor: cannot get value of subfeature %s: %s."
+msgstr "lmsensor: impossibile rilevare il valore della sotto funzione %s: %s."
+
+#: src/lib/lmsensor.c:123
+msgid "lmsensor: lmsensor_psensor_create failure: wrong feature type."
+msgstr "lmsensor: lmsensor_psensor_create fallito: tipo di funzione errata."
+
+#: src/lib/lmsensor.c:218
+#, c-format
+msgid "lmsensor: initialization failure: %s."
+msgstr "lmsensor: inizializzazione fallita: %s"
+
+#: src/lib/log.c:43
+#, c-format
+msgid "Cannot open log file: %s"
+msgstr "Impossibile aprire il file di log: %s"
+
+#: src/lib/nvidia.c:54
+msgid ""
+"NVIDIA proprietary driver not used or cannot retrieve NVIDIA GPU temperature."
+msgstr ""
+"Driver proprietario NVIDIA non usato o impossibile rilevare la temperatura "
+"della GPU NVIDIA."
+
+#: src/lib/nvidia.c:97
+msgid "Cannot open connection to X11 server."
+msgstr "Impossibile connettersi al server X11."
+
+#: src/lib/nvidia.c:105
+msgid "Failed to retrieve NVIDIA information."
+msgstr "Impossibile recuperare informazioni da NVIDIA"
+
+#: src/lib/psensor.c:482 tests/test_psensor_type_to_unit_str.c:62
+msgid "RPM"
+msgstr "RPM"
+
+#: src/lib/psensor.c:484
+msgid "%"
+msgstr "%"
+
+#: src/lib/slog.c:68
+msgid "HOME variable not set."
+msgstr "Variabile HOME non impostata."
+
+#: src/lib/slog.c:78
+#, fuzzy
+msgid "Sensor log file already open."
+msgstr "File di registazione sensori già aperto."
+
+#: src/lib/slog.c:87
+#, fuzzy, c-format
+msgid "Cannot open sensor log file: %s."
+msgstr "Impossibile aprire il file di registrazione sensori: %s."
+
+#: src/lib/slog.c:118
+msgid "Sensor log file not open."
+msgstr "File di registazione sensori non aperto."
+
+#: src/lib/slog.c:174
+msgid "Sensor log not open, cannot close."
+msgstr "Registro sensori non aperto, impossibile chiuderlo."
+
+#: src/main.c:77
+#, c-format
+msgid ""
+"Copyright (C) %s jeanfi@gmail.com\n"
+"License GPLv2: GNU GPL version 2 or later <http://www.gnu.org/licenses/old-"
+"licenses/gpl-2.0.html>\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"Copyright (C) %s jeanfi@gmail.com\n"
+"Licenza GPLv2: GNU GPL versione 2 o successiva <http://www.gnu.org/licenses/"
+"old-licenses/gpl-2.0.html>\n"
+"Questo è software libero: sei libero di modificarlo e ridistribuirlo.\n"
+"NON esiste GARANZIA, per gli scopi permessi dalla legge.\n"
+
+#: src/main.c:88 src/server/server.c:94
+#, c-format
+msgid "Usage: %s [OPTION]...\n"
+msgstr "Uso: %s [OPZIONE]...\n"
+
+#: src/main.c:90
+msgid ""
+"Psensor is a GTK+ application for monitoring hardware sensors, including "
+"temperatures and fan speeds."
+msgstr ""
+"Psensor è un'applicazione GTK+ per monitorare i sensori dell'hardware, "
+"incluse temperature e velocità delle ventole."
+
+#: src/main.c:94
+msgid "Options:"
+msgstr "Opzioni:"
+
+#: src/main.c:95
+msgid ""
+" -h, --help display this help and exit\n"
+" -v, --version display version information and exit"
+msgstr ""
+" -h, --help mostra questo help ed esce\n"
+" -v, --version mostra le informazioni sulla versione ed esce"
+
+#: src/main.c:101
+msgid ""
+" -u, --url=URL the URL of the psensor-server,\n"
+" example: http://hostname:3131"
+msgstr ""
+" -u, --url=URL URL del server psensor,\n"
+" esempio: http://hostname:3131"
+
+#: src/main.c:104
+msgid ""
+" --use-libatasmart use atasmart library for disk monitoring instead of\n"
+" hddtemp daemon"
+msgstr ""
+" --use-libatasmart usa la libreria atasmart library per il monitoraggio "
+"dell'hard disk invece del \n"
+" servizio hddtemp"
+
+#: src/main.c:107
+msgid " -n, --new-instance force the creation of a new Psensor application"
+msgstr ""
+" -n, --new-instance forza la creazione di una nuova applicazione Psensor"
+
+#: src/main.c:110
+msgid " -d, --debug=LEVEL set the debug level, integer between 0 and 3"
+msgstr ""
+" -d, --debug=LEVEL imposta il livello di debug, un intero compreso tra 0 e 3"
+
+#: src/main.c:115 src/server/server.c:117
+#, c-format
+msgid "Report bugs to: %s\n"
+msgstr "Segnalare i bug a: %s\n"
+
+#: src/main.c:117 src/server/server.c:119
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "%s home page: <%s>\n"
+
+#: src/main.c:454
+msgid "Psensor has not been compiled with remote sensor support."
+msgstr "Psensor è stato compilato senza il supporto per sensori remoti."
+
+#: src/main.c:517
+msgid "Enables debug mode."
+msgstr "Abilita la modalità debug."
+
+#: src/main.c:529 src/server/server.c:380
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "Usare '%s --help' per maggiori informazioni.\n"
+
+#: src/main.c:542
+msgid "A Psensor instance already exists."
+msgstr "Esiste già un'istanza di Psensor"
+
+#: src/rsensor.c:107
+#, c-format
+msgid "Fail to connect to: %s"
+msgstr "Impossibile connettersi a: %s"
+
+#: src/rsensor.c:144
+#, c-format
+msgid "Invalid content: %s"
+msgstr "Conenuto non valido: %s"
+
+#: src/rsensor.c:184
+#, c-format
+msgid "Invalid JSON: %s"
+msgstr "JSON non valido: %s"
+
+#: src/server/server.c:54
+msgid "<html><body><p>Server stop requested</p></body></html>"
+msgstr "<html><body><p>Arresto del server richiesto</p></body></html>"
+
+#: src/server/server.c:60
+msgid ""
+"<html><body><p>Page not found - Go to <a href='/'>Main page</a></p></body>"
+msgstr ""
+"<html><body><p>Pagina non trovata - Vai a <a href='/'>Pagina principale</a></"
+"p></body>"
+
+#: src/server/server.c:84
+#, c-format
+msgid ""
+"Copyright (C) %s jeanfi@gmail.com\n"
+"License GPLv2: GNU GPL version 2 or later <http://www.gnu.org/licenses/old-"
+"licenses/gpl-2.0.html>\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"Copyright (C) %s jeanfi@gmail.com\n"
+"Licenza GPLv2: GNU GPL versione 2 o successiva <http://www.gnu.org/licenses/"
+"old-licenses/gpl-2.0.html>\n"
+"Questo è software libero: sei libero di modificarlo e redistribuirlo.\n"
+"NON esiste GARANZIA, per gli scopi permessi dalla legge.\n"
+
+#: src/server/server.c:96
+msgid ""
+"psensor-server is an HTTP server for monitoring hardware sensors remotely."
+msgstr ""
+"psensor-server è un server HTTP per il monitoraggio remoto di sensori "
+"hardware."
+
+#: src/server/server.c:101
+msgid ""
+" -h, --help\t\tdisplay this help and exit\n"
+" -v, --version\t\tdisplay version information and exit"
+msgstr ""
+" -h, --help\t\tmostra questo help ed esce\n"
+" -v, --version\t\tmostra le informazioni sulla versione ed esce"
+
+#: src/server/server.c:105
+msgid ""
+" -p,--port=PORT\twebserver port\n"
+" -w,--wdir=DIR\t\tdirectory containing webserver pages"
+msgstr ""
+" -p,--port=PORT\tporta del server web\n"
+" -w,--wdir=DIR\t\tdirectory che contiene le pagine web"
+
+#: src/server/server.c:109
+msgid " -d, --debug=LEVEL set the debug level, integer between 0 and 3"
+msgstr ""
+" -d, --debug=LEVEL imposta il livello di debug, un intero compreso tra 0 e 3"
+
+#: src/server/server.c:111
+msgid " -l, --log-file=PATH set the log file to PATH"
+msgstr " -l, --log-file=PATH imposta il file di log su PATH"
+
+#: src/server/server.c:112
+msgid " --sensor-log-file=PATH set the sensor log file to PATH"
+msgstr ""
+" --sensor-log-file=PATH imposta il file di registro dei sensori come PATH"
+
+#: src/server/server.c:113
+msgid " --sensor-log-interval=S set the sensor log interval to S (seconds)"
+msgstr ""
+" --sensor-log-interval=S imposta l'intervallo del registro di sensori come "
+"S (secondi)"
+
+#: src/server/server.c:297
+#, c-format
+msgid "HTTP Request: %s"
+msgstr "HTTP Request: %s"
+
+#: src/server/server.c:360
+#, c-format
+msgid "Enables debug mode: %d"
+msgstr "Abilita modalità di debug: %d"
+
+#: src/server/server.c:402
+msgid "No sensors detected."
+msgstr "Nessun sensore rilevato."
+
+#: src/server/server.c:409
+msgid "Failed to create Web server."
+msgstr "Impossibile creare il Web server."
+
+#: src/server/server.c:413
+#, c-format
+msgid "Web server started on port: %d"
+msgstr "Web server inizializzato sulla porta: %d"
+
+#: src/server/server.c:414
+#, c-format
+msgid "WWW directory: %s"
+msgstr "WWW directory: %s"
+
+#: src/server/server.c:415
+#, c-format
+msgid "URL: http://localhost:%d"
+msgstr "URL: http://localhost:%d"
+
+#: src/server/server.c:425
+msgid "Failed to activate logging of sensors."
+msgstr "Attivazione registro dei sensori fallita."
+
+#: src/ui.c:84
+msgid "Psensor is a GTK+ application for monitoring hardware sensors"
+msgstr "Psensor è un'applicazione GTK+ per monitorare i sensori hardware"
+
+#: src/ui.c:87
+msgid ""
+"Copyright(c) 2010-2013\n"
+"jeanfi@gmail.com"
+msgstr ""
+"Copyright(c) 2010-2013\n"
+"jeanfi@gmail.com"
+
+#: src/ui.c:90
+msgid "About Psensor"
+msgstr "Informazioni su Psensor"
+
+#: src/ui.c:93
+msgid "Psensor Homepage"
+msgstr "Psensor Homepage"
+
+#: src/ui.c:217
+msgid "Failed to load Psensor icon."
+msgstr "Impossibile caricare l'icona di Psensor."
+
+#: src/ui_sensorlist.c:245
+msgid "Select foreground color"
+msgstr "Colore di primo piano:"
+
+#: src/ui_sensorlist.c:297
+msgid "Sensor"
+msgstr "Sensore"
+
+#: src/ui_sensorlist.c:303
+msgid "Value"
+msgstr "Valore"
+
+#: src/ui_sensorlist.c:309
+msgid "Min"
+msgstr "Minimo"
+
+#: src/ui_sensorlist.c:315
+msgid "Max"
+msgstr "Massimo"
+
+#: src/ui_sensorlist.c:322
+msgid "Color"
+msgstr "Colore"
+
+#: src/ui_appindicator.c:106
+msgid "_Show"
+msgstr "_Mostra"
+
+#: src/ui_appindicator.c:107
+msgid "Show"
+msgstr "Mostra"
+
+#: src/ui_appindicator.c:111
+msgid "_Preferences"
+msgstr "_Preferenze"
+
+#: src/ui_appindicator.c:116
+msgid "S_ensor Preferences"
+msgstr "S_ensor Preferenze"
+
+#: src/ui_appindicator.c:118
+msgid "SensorPreferences"
+msgstr "SensorPreferenze"
+
+#: src/ui_appindicator.c:122
+msgid "_About"
+msgstr "_Informazioni"
+
+#: src/ui_appindicator.c:129
+msgid "_Quit"
+msgstr "_Esci"
+
+#: src/ui_appindicator.c:220
+#, c-format
+msgid "building menus failed: %s"
+msgstr "costruzione dei menù fallita: %s"
+
+#: src/ui_notify.c:48
+msgid "gettimeofday failed."
+msgstr "gettimeofday fallito."
+
+#: src/ui_notify.c:77
+msgid "Temperature alert"
+msgstr "Allarme temperatura"
+
+#: src/ui_notify.c:79
+msgid "Fan alert"
+msgstr "Allarme ventola"
+
+#: src/ui_sensorpref.c:248
+msgid "Unknown"
+msgstr "Sconosciuto"
+
+#~ msgid "Sensor Name"
+#~ msgstr "Nome sensore"
+
+#~ msgid "Enabled"
+#~ msgstr "Abilitato"
+
+#, fuzzy
+#~ msgid "Enable log of measures"
+#~ msgstr "Abilita il menù"
+
+#, fuzzy
+#~ msgid "slog_init: cannot open sensor log file: %s"
+#~ msgstr "Impossibile aprire il file di log: %s"
+
+#, fuzzy
+#~ msgid "slog_init: gettimeofday failed."
+#~ msgstr "gettimeofday fallito."
+
+#, fuzzy
+#~ msgid "slog_write_sensors: gettimeofday failed."
+#~ msgstr "gettimeofday fallito."
--- /dev/null
+# Latvian translation for psensor
+# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
+# This file is distributed under the same license as the psensor package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: psensor\n"
+"Report-Msgid-Bugs-To: jeanfi@gmail.com\n"
+"POT-Creation-Date: 2013-10-16 09:19+0200\n"
+"PO-Revision-Date: 2013-05-01 09:48+0000\n"
+"Last-Translator: tuxmaniack <Unknown>\n"
+"Language-Team: Latvian <lv@li.org>\n"
+"Language: lv\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2013-05-20 08:44+0000\n"
+"X-Generator: Launchpad (build 16626)\n"
+
+#: src/glade/psensor.glade:5 src/ui_appindicator.c:124
+msgid "About"
+msgstr "Par"
+
+#: src/glade/psensor.glade:9 src/ui_sensorlist.c:209 src/ui_appindicator.c:112
+msgid "Preferences"
+msgstr "Iestatījumi"
+
+#: src/glade/psensor.glade:13 src/ui_appindicator.c:130
+msgid "Quit"
+msgstr "Iziet"
+
+#: src/glade/psensor.glade:17
+msgid "Sensor Preferences"
+msgstr "Sensoru iestatījumi"
+
+#: src/glade/psensor.glade:96
+msgid "Psensor - Temperature Monitor"
+msgstr "Psensor - temperatūras pārraugs"
+
+#: src/glade/psensor.glade:111
+msgid "_Psensor"
+msgstr "_Psensor"
+
+#: src/glade/psensor.glade:158
+msgid "_Help"
+msgstr "_Palīdzība"
+
+#: src/glade/psensor-pref.glade:7
+msgid "Edit Preferences"
+msgstr "Rediģēt iestatījumus"
+
+#: src/glade/psensor-pref.glade:72
+msgid "Position of sensors table:"
+msgstr "Sensoru tabulas novietojums:"
+
+#: src/glade/psensor-pref.glade:81
+msgid "Hide window decoration"
+msgstr "Slēpt loga apdari"
+
+#: src/glade/psensor-pref.glade:98
+msgid "Keep window below"
+msgstr "Turēt logu apakšā"
+
+#: src/glade/psensor-pref.glade:115
+msgid "Enable menu"
+msgstr "Aktivizēt izvēlni"
+
+#: src/glade/psensor-pref.glade:132
+msgid "Enable Unity Launcher counter"
+msgstr "Aktivizēt Unity palaidēja skaitītāju"
+
+#: src/glade/psensor-pref.glade:149
+msgid "Hide window on startup"
+msgstr "Slēpt logu pieteicoties sistēmā"
+
+#: src/glade/psensor-pref.glade:166
+msgid "Restore window position and size"
+msgstr "Atjaunot loga pozīciju un izmēru"
+
+#: src/glade/psensor-pref.glade:186
+msgid "Temperature unit:"
+msgstr "Temperatūras mērvienība:"
+
+#: src/glade/psensor-pref.glade:238
+msgid "Interface"
+msgstr "Saskarne"
+
+#: src/glade/psensor-pref.glade:276
+msgid "Foreground:"
+msgstr "Priekšplāns:"
+
+#: src/glade/psensor-pref.glade:291
+msgid "Background:"
+msgstr "Fons:"
+
+#: src/glade/psensor-pref.glade:325
+msgid "Background opacity:"
+msgstr "Fona necaurspīdība:"
+
+#: src/glade/psensor-pref.glade:348
+msgid "<i>Min</i>"
+msgstr "<i>Min.</i>"
+
+#: src/glade/psensor-pref.glade:375
+msgid "<i>Max</i>"
+msgstr "<i>Maks.</i>"
+
+#: src/glade/psensor-pref.glade:401
+msgid "Colors"
+msgstr "Krāsas"
+
+#: src/glade/psensor-pref.glade:419
+msgid "Monitoring duration:"
+msgstr "Pārraudzības ilgums:"
+
+#: src/glade/psensor-pref.glade:457
+msgid "minute(s)"
+msgstr "minūte(s)"
+
+#: src/glade/psensor-pref.glade:474 src/glade/psensor-pref.glade:626
+msgid "second(s)"
+msgstr "sekunde(s)"
+
+#: src/glade/psensor-pref.glade:510
+msgid "Update interval:"
+msgstr "Atjaunināšanas intervāls:"
+
+#: src/glade/psensor-pref.glade:528
+msgid "Measures"
+msgstr "Mērījumi"
+
+#: src/glade/psensor-pref.glade:564 src/glade/sensor-edit.glade:169
+#: src/ui_sensorlist.c:334
+msgid "Graph"
+msgstr "Grafiks"
+
+#: src/glade/psensor-pref.glade:588
+msgid "Measure update interval:"
+msgstr "Mērījumu atjaunināšanas intervāls:"
+
+#: src/glade/psensor-pref.glade:637
+msgid "Enable sensors logging"
+msgstr "Aktivizēt sensora žurnalēšanu"
+
+#: src/glade/psensor-pref.glade:684
+msgid "Sensors logging interval"
+msgstr "Sensoru žurnalēšanas intervāls"
+
+#: src/glade/psensor-pref.glade:701
+msgid "seconds(s)"
+msgstr "sekunde(s)"
+
+#: src/glade/psensor-pref.glade:718
+msgid "Script executed when an alarm is raised"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:751
+msgid "Sensors"
+msgstr "Sensori"
+
+#: src/glade/sensor-edit.glade:19
+msgid "Edit Sensor Preferences"
+msgstr "Rediģēt sensoru iestatījumus"
+
+#: src/glade/sensor-edit.glade:87
+msgid "Name"
+msgstr "Nosaukums"
+
+#: src/glade/sensor-edit.glade:138
+msgid "Type:"
+msgstr "Tips:"
+
+#: src/glade/sensor-edit.glade:153 src/glade/sensor-edit.glade:294
+#: src/glade/sensor-edit.glade:388 src/glade/sensor-edit.glade:459
+#: src/glade/sensor-edit.glade:508 src/lib/psensor.c:486 src/ui_notify.c:81
+msgid "N/A"
+msgstr "N/P"
+
+#: src/glade/sensor-edit.glade:187
+msgid "Color:"
+msgstr "Krāsa:"
+
+#: src/glade/sensor-edit.glade:201
+msgid "Alarm"
+msgstr "Trauksme"
+
+#: src/glade/sensor-edit.glade:216
+msgid "Activate desktop notifications"
+msgstr "Aktivizēt darbvirsmas paziņojumus"
+
+#: src/glade/sensor-edit.glade:236
+msgid "Sensor Information"
+msgstr "Sensora informācija"
+
+#: src/glade/sensor-edit.glade:249
+msgid "Draw sensor curve"
+msgstr "Zīmēt sensora līkni"
+
+#: src/glade/sensor-edit.glade:333
+msgid "High threshold:"
+msgstr "Augsts slieksnis:"
+
+#: src/glade/sensor-edit.glade:348
+msgid "Low threshold:"
+msgstr "Zems slieksnis:"
+
+#: src/glade/sensor-edit.glade:409
+msgid "Ubuntu Application Indicator"
+msgstr "Ubuntu aplikāciju indikators"
+
+#: src/glade/sensor-edit.glade:424
+msgid "Display sensor in the Application Indicator menu"
+msgstr "Rādīt sensoru aplikāciju indikatora izvēlnē"
+
+#: src/glade/sensor-edit.glade:444
+msgid "Chip:"
+msgstr "Mikroshēma:"
+
+#: src/glade/sensor-edit.glade:489
+msgid "Id:"
+msgstr "Id:"
+
+#: src/glade/sensor-edit.glade:523
+msgid "Details"
+msgstr "Detaļas"
+
+#: src/glade/sensor-edit.glade:541
+msgid "Name:"
+msgstr "Nosaukums:"
+
+#: src/lib/amd.c:170
+msgid "AMD: cannot found ADL library."
+msgstr "AMD: nevar atrast ADL bibliotēku."
+
+#: src/lib/amd.c:197
+msgid "AMD: missing ADL's API."
+msgstr "AMD: trūkst ADL programmatūras saskarne."
+
+#: src/lib/amd.c:207
+msgid "AMD: failed to initialize ADL."
+msgstr "AMD: neizdevās inicializēt ADL."
+
+#: src/lib/amd.c:213
+msgid "AMD: cannot get the number of adapters."
+msgstr "AMD: nevar saņemt adapteru skaitu."
+
+#: src/lib/amd.c:252
+#, c-format
+msgid "Number of AMD/ATI adapters: %d"
+msgstr ""
+
+#: src/lib/amd.c:253
+#, c-format
+msgid "Number of active AMD/ATI adapters: %d"
+msgstr ""
+
+#: src/lib/hdd_atasmart.c:152
+#, c-format
+msgid "atasmart: sk_disk_open() failure: %s."
+msgstr "atasmart: sk_disk_open() atteice: %s."
+
+#: src/lib/hdd_hddtemp.c:59
+msgid "hddtemp: failed to open socket."
+msgstr "hddtemp: neizdevās atvērt ligzdu."
+
+#: src/lib/hdd_hddtemp.c:72
+msgid "hddtemp: failed to open connection."
+msgstr "hddtemp: neizdevās atvērt savienojumu."
+
+#: src/lib/hdd_hddtemp.c:186 src/lib/hdd_hddtemp.c:256
+#, c-format
+msgid "hddtemp: wrong string: %s."
+msgstr "hddtemp: nepareiza virkne: %s."
+
+#: src/lib/lmsensor.c:42
+#, c-format
+msgid "lmsensor: cannot get value of subfeature %s: %s."
+msgstr "lmsensor: nevar iegūt vērtību no apakšīpašības %s: %s."
+
+#: src/lib/lmsensor.c:123
+msgid "lmsensor: lmsensor_psensor_create failure: wrong feature type."
+msgstr "lmsensor: lmsensor_psensor_create atteice: nepareis īpašības tips."
+
+#: src/lib/lmsensor.c:218
+#, c-format
+msgid "lmsensor: initialization failure: %s."
+msgstr "lmsensor: inicializācijas kļūda: %s."
+
+#: src/lib/log.c:43
+#, c-format
+msgid "Cannot open log file: %s"
+msgstr "Nevar atvērt žurnāla failu: %s"
+
+#: src/lib/nvidia.c:54
+msgid ""
+"NVIDIA proprietary driver not used or cannot retrieve NVIDIA GPU temperature."
+msgstr ""
+
+#: src/lib/nvidia.c:97
+msgid "Cannot open connection to X11 server."
+msgstr "Nevar atvērt savienojumu ar X11 server."
+
+#: src/lib/nvidia.c:105
+msgid "Failed to retrieve NVIDIA information."
+msgstr "Neizdevās saņemt NVIDIA informāciju."
+
+#: src/lib/psensor.c:482 tests/test_psensor_type_to_unit_str.c:62
+msgid "RPM"
+msgstr "RPM"
+
+#: src/lib/psensor.c:484
+msgid "%"
+msgstr "%"
+
+#: src/lib/slog.c:68
+msgid "HOME variable not set."
+msgstr "HOME mainīgais nav iestatīts."
+
+#: src/lib/slog.c:78
+msgid "Sensor log file already open."
+msgstr "Sensora žurnāla fails jau ir atvērts."
+
+#: src/lib/slog.c:87
+#, c-format
+msgid "Cannot open sensor log file: %s."
+msgstr "Nevar atvērt sensora žurnāla failu: %s."
+
+#: src/lib/slog.c:118
+msgid "Sensor log file not open."
+msgstr "Sensora žurnāla fails nav atvērts."
+
+#: src/lib/slog.c:174
+msgid "Sensor log not open, cannot close."
+msgstr "Sensora žurnāls nav atvērts, nevar aizvērt."
+
+#: src/main.c:77
+#, c-format
+msgid ""
+"Copyright (C) %s jeanfi@gmail.com\n"
+"License GPLv2: GNU GPL version 2 or later <http://www.gnu.org/licenses/old-"
+"licenses/gpl-2.0.html>\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+
+#: src/main.c:88 src/server/server.c:94
+#, c-format
+msgid "Usage: %s [OPTION]...\n"
+msgstr ""
+
+#: src/main.c:90
+msgid ""
+"Psensor is a GTK+ application for monitoring hardware sensors, including "
+"temperatures and fan speeds."
+msgstr ""
+"Psensor ir GTK+ lietotne aparatūras sensoru pārraudzībai, ieskaitot "
+"temperatūras un ventilatoru ātrumus."
+
+#: src/main.c:94
+msgid "Options:"
+msgstr "Opcijas:"
+
+#: src/main.c:95
+msgid ""
+" -h, --help display this help and exit\n"
+" -v, --version display version information and exit"
+msgstr ""
+" -h, --help rādīt šo palīdzību un iziet\n"
+" -v, --version rādīt versijas informāciju un iziet"
+
+#: src/main.c:101
+msgid ""
+" -u, --url=URL the URL of the psensor-server,\n"
+" example: http://hostname:3131"
+msgstr ""
+" -u, --url=SAITE psensor-server adrese,\n"
+" piemērs: http://saimniekdatoravārds:3131"
+
+#: src/main.c:104
+msgid ""
+" --use-libatasmart use atasmart library for disk monitoring instead of\n"
+" hddtemp daemon"
+msgstr ""
+" --use-libatasmart izmantot atasmart bibliotēku disku pārraudzībai\n"
+" hddtemp dēmona vietā"
+
+#: src/main.c:107
+msgid " -n, --new-instance force the creation of a new Psensor application"
+msgstr " -n, --new-instance piespiest izveidot jaunu Psensor lietotni"
+
+#: src/main.c:110
+msgid " -d, --debug=LEVEL set the debug level, integer between 0 and 3"
+msgstr " -d, --debug=LĪMENIS iestatīt atkļūdošanas līmeni, starp 0 un 3"
+
+#: src/main.c:115 src/server/server.c:117
+#, c-format
+msgid "Report bugs to: %s\n"
+msgstr "Ziņojiet kļūdas uz: %s.\n"
+
+#: src/main.c:117 src/server/server.c:119
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "%s mājas lapa: <%s>\n"
+
+#: src/main.c:454
+msgid "Psensor has not been compiled with remote sensor support."
+msgstr "Psensor nav kompilēts ar attālināto sensoru atbalstu."
+
+#: src/main.c:517
+msgid "Enables debug mode."
+msgstr "Aktivizēt atkļūdošanas režīmu."
+
+#: src/main.c:529 src/server/server.c:380
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "Mēģiniet `%s --help', lai iegūtu vairāk informācijas.\n"
+
+#: src/main.c:542
+msgid "A Psensor instance already exists."
+msgstr "Psensor instance jau eksistē."
+
+#: src/rsensor.c:107
+#, c-format
+msgid "Fail to connect to: %s"
+msgstr "Neizdevās savienoties ar: %s"
+
+#: src/rsensor.c:144
+#, c-format
+msgid "Invalid content: %s"
+msgstr "Nederīgs saturs: %s"
+
+#: src/rsensor.c:184
+#, c-format
+msgid "Invalid JSON: %s"
+msgstr "Nederīgs JSON: %s"
+
+#: src/server/server.c:54
+msgid "<html><body><p>Server stop requested</p></body></html>"
+msgstr "<html><body><p>Servera apturēšana pieprasīta</p></body></html>"
+
+#: src/server/server.c:60
+msgid ""
+"<html><body><p>Page not found - Go to <a href='/'>Main page</a></p></body>"
+msgstr ""
+"<html><body><p>Lapa nav atrasta - dodieties uz <a href='/'>galveno lapu</a></"
+"p></body>"
+
+#: src/server/server.c:84
+#, c-format
+msgid ""
+"Copyright (C) %s jeanfi@gmail.com\n"
+"License GPLv2: GNU GPL version 2 or later <http://www.gnu.org/licenses/old-"
+"licenses/gpl-2.0.html>\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+
+#: src/server/server.c:96
+msgid ""
+"psensor-server is an HTTP server for monitoring hardware sensors remotely."
+msgstr ""
+"psensor-server ir HTTP serveris aparatūras sensoru attālinātai pārraudzībai."
+
+#: src/server/server.c:101
+msgid ""
+" -h, --help\t\tdisplay this help and exit\n"
+" -v, --version\t\tdisplay version information and exit"
+msgstr ""
+" -h, --help\t\trādīt šo palīdzību un iziet\n"
+" -v, --version\t\trādīt versijas informāciju un iziet"
+
+#: src/server/server.c:105
+msgid ""
+" -p,--port=PORT\twebserver port\n"
+" -w,--wdir=DIR\t\tdirectory containing webserver pages"
+msgstr ""
+" -p,--port=PORTS\ttīmekļa servera ports\n"
+" -w,--wdir=DIR\t\tmape ar tīmekļa servera lapām"
+
+#: src/server/server.c:109
+msgid " -d, --debug=LEVEL set the debug level, integer between 0 and 3"
+msgstr ""
+" -d, --debug=LĪMENIS iestatīt atkļūdošanas līmeni, vesels skaitlis "
+"starp 0 un 3"
+
+#: src/server/server.c:111
+msgid " -l, --log-file=PATH set the log file to PATH"
+msgstr " -l, --log-file=CEĻŠ žurnalēšanas faila ceļš"
+
+#: src/server/server.c:112
+msgid " --sensor-log-file=PATH set the sensor log file to PATH"
+msgstr " --sensor-log-file=CEĻŠ sensora žurnāla faila ceļš"
+
+#: src/server/server.c:113
+msgid " --sensor-log-interval=S set the sensor log interval to S (seconds)"
+msgstr ""
+" --sensor-log-interval=S iestata sensora žurnāla intervālu uz S (sekundēm)"
+
+#: src/server/server.c:297
+#, c-format
+msgid "HTTP Request: %s"
+msgstr "HTTP pieprasījums: %s"
+
+#: src/server/server.c:360
+#, c-format
+msgid "Enables debug mode: %d"
+msgstr "Aktivizē atkļūdošanas režīmu: %d"
+
+#: src/server/server.c:402
+msgid "No sensors detected."
+msgstr "Sensori nav atklāti."
+
+#: src/server/server.c:409
+msgid "Failed to create Web server."
+msgstr "Neizdevās izveidot tīmekļa serveri."
+
+#: src/server/server.c:413
+#, c-format
+msgid "Web server started on port: %d"
+msgstr "Tīmekļa serveris sākts uz porta: %d"
+
+#: src/server/server.c:414
+#, c-format
+msgid "WWW directory: %s"
+msgstr "WWW mape: %s"
+
+#: src/server/server.c:415
+#, c-format
+msgid "URL: http://localhost:%d"
+msgstr "Saite: http://localhost:%d"
+
+#: src/server/server.c:425
+msgid "Failed to activate logging of sensors."
+msgstr "Neizdevās aktivizēt sensoru žurnalēšanu."
+
+#: src/ui.c:84
+msgid "Psensor is a GTK+ application for monitoring hardware sensors"
+msgstr "Psensor ir GTK+ lietotne aparatūras sensoru pārraudzībai"
+
+#: src/ui.c:87
+msgid ""
+"Copyright(c) 2010-2013\n"
+"jeanfi@gmail.com"
+msgstr ""
+"Autortiesības(c) 2010-2013\n"
+"jeanfi@gmail.com"
+
+#: src/ui.c:90
+msgid "About Psensor"
+msgstr "Par Psensor"
+
+#: src/ui.c:93
+msgid "Psensor Homepage"
+msgstr "Psensor mājas lapa"
+
+#: src/ui.c:217
+msgid "Failed to load Psensor icon."
+msgstr "Neizdevās ielādēt Psensor ikonu."
+
+#: src/ui_sensorlist.c:245
+msgid "Select foreground color"
+msgstr "Izvēlieties priekšplāna krāsu"
+
+#: src/ui_sensorlist.c:297
+msgid "Sensor"
+msgstr "Sensors"
+
+#: src/ui_sensorlist.c:303
+msgid "Value"
+msgstr "Vērtība"
+
+#: src/ui_sensorlist.c:309
+msgid "Min"
+msgstr "Min."
+
+#: src/ui_sensorlist.c:315
+msgid "Max"
+msgstr "Maks."
+
+#: src/ui_sensorlist.c:322
+msgid "Color"
+msgstr "Krāsa"
+
+#: src/ui_appindicator.c:106
+msgid "_Show"
+msgstr "_Rādīt"
+
+#: src/ui_appindicator.c:107
+msgid "Show"
+msgstr "Rādīt"
+
+#: src/ui_appindicator.c:111
+msgid "_Preferences"
+msgstr "_Iestatījumi"
+
+#: src/ui_appindicator.c:116
+msgid "S_ensor Preferences"
+msgstr "S_ensoru iestatījumi"
+
+#: src/ui_appindicator.c:118
+msgid "SensorPreferences"
+msgstr "SensoraIestatījumi"
+
+#: src/ui_appindicator.c:122
+msgid "_About"
+msgstr "P_ar"
+
+#: src/ui_appindicator.c:129
+msgid "_Quit"
+msgstr "_Iziet"
+
+#: src/ui_appindicator.c:220
+#, c-format
+msgid "building menus failed: %s"
+msgstr "neizdevās izveidot izvēlnes: %s"
+
+#: src/ui_notify.c:48
+msgid "gettimeofday failed."
+msgstr "gettimeofday neizdevās."
+
+#: src/ui_notify.c:77
+msgid "Temperature alert"
+msgstr "Temperatūras trauksme"
+
+#: src/ui_notify.c:79
+msgid "Fan alert"
+msgstr "Ventilatora trauksme"
+
+#: src/ui_sensorpref.c:248
+msgid "Unknown"
+msgstr "Nezināms"
+
+#~ msgid "Sensor Name"
+#~ msgstr "Sensora nosaukums"
+
+#~ msgid "Enabled"
+#~ msgstr "Aktivizēts"
+
+#, fuzzy
+#~ msgid "Enable log of measures"
+#~ msgstr "Aktivizēt izvēlni"
+
+#, fuzzy
+#~ msgid "Enable indicator"
+#~ msgstr "Aktivizēts"
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: jeanfi@gmail.com\n"
-"POT-Creation-Date: 2012-03-26 10:30+0200\n"
+"POT-Creation-Date: 2013-10-16 09:19+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"
"Language: \n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
-#: src/main.c:77
-#, c-format
-msgid ""
-"Copyright (C) %s jeanfi@gmail.com\n"
-"License GPLv2: GNU GPL version 2 or later <http://www.gnu.org/licenses/old-"
-"licenses/gpl-2.0.html>\n"
-"This is free software: you are free to change and redistribute it.\n"
-"There is NO WARRANTY, to the extent permitted by law.\n"
+#: src/glade/psensor.glade:5 src/ui_appindicator.c:124
+msgid "About"
msgstr ""
-#: src/main.c:88 src/server/server.c:86
-#, c-format
-msgid "Usage: %s [OPTION]...\n"
+#: src/glade/psensor.glade:9 src/ui_sensorlist.c:209 src/ui_appindicator.c:112
+msgid "Preferences"
msgstr ""
-#: src/main.c:90
-msgid ""
-"psensor is a GTK application for monitoring hardware sensors, including "
-"temperatures and fan speeds."
+#: src/glade/psensor.glade:13 src/ui_appindicator.c:130
+msgid "Quit"
msgstr ""
-#: src/main.c:94
-msgid "Options:"
+#: src/glade/psensor.glade:17
+msgid "Sensor Preferences"
msgstr ""
-#: src/main.c:95
-msgid ""
-" -h, --help display this help and exit\n"
-" -v, --version display version information and exit"
+#: src/glade/psensor.glade:96
+msgid "Psensor - Temperature Monitor"
msgstr ""
-#: src/main.c:100
-msgid ""
-" -u, --url=URL the URL of the psensor-server, example: http://"
-"hostname:3131"
+#: src/glade/psensor.glade:111
+msgid "_Psensor"
msgstr ""
-#: src/main.c:105
-msgid " -d, --debug=LEVEL set the debug level, integer between 0 and 3"
+#: src/glade/psensor.glade:158
+msgid "_Help"
msgstr ""
-#: src/main.c:110 src/server/server.c:104
-#, c-format
-msgid "Report bugs to: %s\n"
+#: src/glade/psensor-pref.glade:7
+msgid "Edit Preferences"
msgstr ""
-#: src/main.c:112 src/server/server.c:106
-#, c-format
-msgid "%s home page: <%s>\n"
+#: src/glade/psensor-pref.glade:72
+msgid "Position of sensors table:"
msgstr ""
-#: src/main.c:425
-msgid "Enables debug mode."
+#: src/glade/psensor-pref.glade:81
+msgid "Hide window decoration"
msgstr ""
-#: src/main.c:434 src/server/server.c:352
-#, c-format
-msgid "Try `%s --help' for more information.\n"
+#: src/glade/psensor-pref.glade:98
+msgid "Keep window below"
msgstr ""
-#: src/main.c:469
-#, c-format
-msgid "ERROR: Not compiled with remote sensor support.\n"
+#: src/glade/psensor-pref.glade:115
+msgid "Enable menu"
msgstr ""
-#: src/ui.c:80
-msgid "Psensor is a GTK+ application for monitoring hardware sensors"
+#: src/glade/psensor-pref.glade:132
+msgid "Enable Unity Launcher counter"
msgstr ""
-#: src/ui.c:83
-msgid ""
-"Copyright(c) 2010-2012\n"
-"jeanfi@gmail.com"
+#: src/glade/psensor-pref.glade:149
+msgid "Hide window on startup"
msgstr ""
-#: src/ui.c:86
-msgid "About Psensor"
+#: src/glade/psensor-pref.glade:166
+msgid "Restore window position and size"
msgstr ""
-#: src/ui.c:89
-msgid "Psensor Homepage"
+#: src/glade/psensor-pref.glade:186
+msgid "Temperature unit:"
msgstr ""
-#: src/ui.c:144
-msgid "_Preferences"
+#: src/glade/psensor-pref.glade:238
+msgid "Interface"
msgstr ""
-#: src/ui.c:145 src/ui_sensorlist.c:200
-msgid "Preferences"
+#: src/glade/psensor-pref.glade:276
+msgid "Foreground:"
msgstr ""
-#: src/ui.c:149
-msgid "_Sensor Preferences"
+#: src/glade/psensor-pref.glade:291
+msgid "Background:"
msgstr ""
-#: src/ui.c:150
-msgid "Sensor Preferences"
+#: src/glade/psensor-pref.glade:325
+msgid "Background opacity:"
msgstr ""
-#: src/ui.c:154
-msgid "_Quit"
+#: src/glade/psensor-pref.glade:348
+msgid "<i>Min</i>"
msgstr ""
-#: src/ui.c:154
-msgid "Quit"
+#: src/glade/psensor-pref.glade:375
+msgid "<i>Max</i>"
msgstr ""
-#: src/ui.c:160
-msgid "_About"
+#: src/glade/psensor-pref.glade:401
+msgid "Colors"
msgstr ""
-#: src/ui.c:161
-msgid "About"
+#: src/glade/psensor-pref.glade:419
+msgid "Monitoring duration:"
msgstr ""
-#: src/ui.c:183 src/ui_appindicator.c:176
-#, c-format
-msgid "building menus failed: %s"
+#: src/glade/psensor-pref.glade:457
+msgid "minute(s)"
msgstr ""
-#: src/ui.c:231
-msgid "Psensor - Temperature Monitor"
+#: src/glade/psensor-pref.glade:474 src/glade/psensor-pref.glade:626
+msgid "second(s)"
msgstr ""
-#: src/ui.c:248
-#, c-format
-msgid "ERROR: Failed to load psensor icon.\n"
+#: src/glade/psensor-pref.glade:510
+msgid "Update interval:"
msgstr ""
-#: src/ui_sensorlist.c:231
-msgid "Select foreground color"
+#: src/glade/psensor-pref.glade:528
+msgid "Measures"
msgstr ""
-#: src/ui_sensorlist.c:308 src/glade/psensor-pref.glade:241
-msgid "Sensor"
+#: src/glade/psensor-pref.glade:564 src/glade/sensor-edit.glade:169
+#: src/ui_sensorlist.c:334
+msgid "Graph"
msgstr ""
-#: src/ui_sensorlist.c:314
-msgid "Value"
+#: src/glade/psensor-pref.glade:588
+msgid "Measure update interval:"
msgstr ""
-#: src/ui_sensorlist.c:320
-msgid "Min"
+#: src/glade/psensor-pref.glade:637
+msgid "Enable sensors logging"
msgstr ""
-#: src/ui_sensorlist.c:326
-msgid "Max"
+#: src/glade/psensor-pref.glade:684
+msgid "Sensors logging interval"
msgstr ""
-#: src/ui_sensorlist.c:333
-msgid "Color"
+#: src/glade/psensor-pref.glade:701
+msgid "seconds(s)"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:718
+msgid "Script executed when an alarm is raised"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:751
+msgid "Sensors"
msgstr ""
-#: src/ui_sensorlist.c:345
-msgid "Enabled"
+#: src/glade/sensor-edit.glade:19
+msgid "Edit Sensor Preferences"
msgstr ""
-#: src/ui_sensorlist.c:374 src/ui_sensorlist.c:375 src/ui_sensorlist.c:376
-#: src/glade/sensor-edit.glade:87 src/glade/sensor-edit.glade:153
+#: src/glade/sensor-edit.glade:87
+msgid "Name"
+msgstr ""
+
+#: src/glade/sensor-edit.glade:138
+msgid "Type:"
+msgstr ""
+
+#: src/glade/sensor-edit.glade:153 src/glade/sensor-edit.glade:294
+#: src/glade/sensor-edit.glade:388 src/glade/sensor-edit.glade:459
+#: src/glade/sensor-edit.glade:508 src/lib/psensor.c:486 src/ui_notify.c:81
msgid "N/A"
msgstr ""
-#: src/ui_notify.c:45
-msgid "gettimeofday failed"
+#: src/glade/sensor-edit.glade:187
+msgid "Color:"
msgstr ""
-#: src/ui_notify.c:67 src/ui_notify.c:69
-msgid "Temperature alert"
+#: src/glade/sensor-edit.glade:201
+msgid "Alarm"
msgstr ""
-#: src/ui_sensorpref.c:397
-msgid "Sensor Name"
+#: src/glade/sensor-edit.glade:216
+msgid "Activate desktop notifications"
msgstr ""
-#: src/rsensor.c:107
-#, c-format
-msgid "Fail to connect to: %s"
+#: src/glade/sensor-edit.glade:236
+msgid "Sensor Information"
msgstr ""
-#: src/rsensor.c:144
-#, c-format
-msgid "Invalid content: %s"
+#: src/glade/sensor-edit.glade:249
+msgid "Draw sensor curve"
msgstr ""
-#: src/rsensor.c:184
-#, c-format
-msgid "Invalid JSON: %s"
+#: src/glade/sensor-edit.glade:333
+msgid "High threshold:"
msgstr ""
-#: src/server/server.c:53
-msgid ""
-"<html><body><p>Page not found - Go to <a href='/'>Main page</a></p></body>"
+#: src/glade/sensor-edit.glade:348
+msgid "Low threshold:"
msgstr ""
-#: src/server/server.c:76
-#, c-format
-msgid ""
-"Copyright (C) %s jeanfi@gmail.com\n"
-"License GPLv2: GNU GPL version 2 or later <http://www.gnu.org/licenses/old-"
-"licenses/gpl-2.0.html>\n"
-"This is free software: you are free to change and redistribute it.\n"
-"There is NO WARRANTY, to the extent permitted by law.\n"
+#: src/glade/sensor-edit.glade:409
+msgid "Ubuntu Application Indicator"
msgstr ""
-#: src/server/server.c:88
-msgid ""
-"psensor-server is an HTTP server for monitoring hardware sensors remotely."
+#: src/glade/sensor-edit.glade:424
+msgid "Display sensor in the Application Indicator menu"
msgstr ""
-#: src/server/server.c:93
-msgid ""
-" -h, --help\t\tdisplay this help and exit\n"
-" -v, --version\t\tdisplay version information and exit"
+#: src/glade/sensor-edit.glade:444
+msgid "Chip:"
msgstr ""
-#: src/server/server.c:98
-msgid ""
-" -d,--debug\t\trun in debug mode\n"
-" -p,--port=PORT\twebserver port\n"
-" -w,--wdir=DIR\t\tdirectory containing webserver pages"
+#: src/glade/sensor-edit.glade:489
+msgid "Id:"
msgstr ""
-#: src/server/server.c:175
-msgid "<html><body><p>Server stop requested</p></body></html>"
+#: src/glade/sensor-edit.glade:523
+msgid "Details"
msgstr ""
-#: src/server/server.c:290
-#, c-format
-msgid "HTTP Request: %s\n"
+#: src/glade/sensor-edit.glade:541
+msgid "Name:"
msgstr ""
-#: src/server/server.c:366
-#, c-format
-msgid "ERROR: no sensors detected\n"
+#: src/lib/amd.c:170
+msgid "AMD: cannot found ADL library."
msgstr ""
-#: src/server/server.c:373
-#, c-format
-msgid "ERROR: Fail to create web server\n"
+#: src/lib/amd.c:197
+msgid "AMD: missing ADL's API."
msgstr ""
-#: src/server/server.c:377
-#, c-format
-msgid "Web server started on port: %d"
+#: src/lib/amd.c:207
+msgid "AMD: failed to initialize ADL."
+msgstr ""
+
+#: src/lib/amd.c:213
+msgid "AMD: cannot get the number of adapters."
msgstr ""
-#: src/server/server.c:378
+#: src/lib/amd.c:252
#, c-format
-msgid "WWW directory: %s"
+msgid "Number of AMD/ATI adapters: %d"
msgstr ""
-#: src/server/server.c:379
+#: src/lib/amd.c:253
#, c-format
-msgid "URL: http://localhost:%d"
+msgid "Number of active AMD/ATI adapters: %d"
msgstr ""
-#: src/lib/amd.c:151
+#: src/lib/hdd_atasmart.c:152
#, c-format
-msgid "ERROR: ADL library not found!\n"
+msgid "atasmart: sk_disk_open() failure: %s."
+msgstr ""
+
+#: src/lib/hdd_hddtemp.c:59
+msgid "hddtemp: failed to open socket."
+msgstr ""
+
+#: src/lib/hdd_hddtemp.c:72
+msgid "hddtemp: failed to open connection."
msgstr ""
-#: src/lib/amd.c:176
+#: src/lib/hdd_hddtemp.c:186 src/lib/hdd_hddtemp.c:256
#, c-format
-msgid "ERROR: ADL's API is missing!\n"
+msgid "hddtemp: wrong string: %s."
msgstr ""
-#: src/lib/amd.c:185
+#: src/lib/lmsensor.c:42
#, c-format
-msgid "ERROR: ADL Initialization Error!\n"
+msgid "lmsensor: cannot get value of subfeature %s: %s."
msgstr ""
-#: src/lib/amd.c:193
+#: src/lib/lmsensor.c:123
+msgid "lmsensor: lmsensor_psensor_create failure: wrong feature type."
+msgstr ""
+
+#: src/lib/lmsensor.c:218
#, c-format
-msgid "ERROR: Cannot get the number of adapters!\n"
+msgid "lmsensor: initialization failure: %s."
msgstr ""
-#: src/lib/hdd.c:58
+#: src/lib/log.c:43
#, c-format
-msgid "ERROR: hdd fetch, failed to open socket\n"
+msgid "Cannot open log file: %s"
+msgstr ""
+
+#: src/lib/nvidia.c:54
+msgid ""
+"NVIDIA proprietary driver not used or cannot retrieve NVIDIA GPU temperature."
+msgstr ""
+
+#: src/lib/nvidia.c:97
+msgid "Cannot open connection to X11 server."
+msgstr ""
+
+#: src/lib/nvidia.c:105
+msgid "Failed to retrieve NVIDIA information."
+msgstr ""
+
+#: src/lib/psensor.c:482 tests/test_psensor_type_to_unit_str.c:62
+msgid "RPM"
+msgstr ""
+
+#: src/lib/psensor.c:484
+msgid "%"
+msgstr ""
+
+#: src/lib/slog.c:68
+msgid "HOME variable not set."
+msgstr ""
+
+#: src/lib/slog.c:78
+msgid "Sensor log file already open."
msgstr ""
-#: src/lib/hdd.c:72
+#: src/lib/slog.c:87
#, c-format
-msgid "ERROR: hdd fetch, failed to open connection\n"
+msgid "Cannot open sensor log file: %s."
+msgstr ""
+
+#: src/lib/slog.c:118
+msgid "Sensor log file not open."
msgstr ""
-#: src/lib/hdd.c:182
+#: src/lib/slog.c:174
+msgid "Sensor log not open, cannot close."
+msgstr ""
+
+#: src/main.c:77
#, c-format
-msgid "ERROR: wrong hdd string: %s"
+msgid ""
+"Copyright (C) %s jeanfi@gmail.com\n"
+"License GPLv2: GNU GPL version 2 or later <http://www.gnu.org/licenses/old-"
+"licenses/gpl-2.0.html>\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
msgstr ""
-#: src/lib/hdd.c:252
+#: src/main.c:88 src/server/server.c:94
#, c-format
-msgid "ERROR: wrong hdd string: %s\n"
+msgid "Usage: %s [OPTION]...\n"
+msgstr ""
+
+#: src/main.c:90
+msgid ""
+"Psensor is a GTK+ application for monitoring hardware sensors, including "
+"temperatures and fan speeds."
+msgstr ""
+
+#: src/main.c:94
+msgid "Options:"
+msgstr ""
+
+#: src/main.c:95
+msgid ""
+" -h, --help display this help and exit\n"
+" -v, --version display version information and exit"
+msgstr ""
+
+#: src/main.c:101
+msgid ""
+" -u, --url=URL the URL of the psensor-server,\n"
+" example: http://hostname:3131"
msgstr ""
-#: src/lib/log.c:37
+#: src/main.c:104
+msgid ""
+" --use-libatasmart use atasmart library for disk monitoring instead of\n"
+" hddtemp daemon"
+msgstr ""
+
+#: src/main.c:107
+msgid " -n, --new-instance force the creation of a new Psensor application"
+msgstr ""
+
+#: src/main.c:110
+msgid " -d, --debug=LEVEL set the debug level, integer between 0 and 3"
+msgstr ""
+
+#: src/main.c:115 src/server/server.c:117
#, c-format
-msgid "Cannot open log file: %s"
+msgid "Report bugs to: %s\n"
msgstr ""
-#: src/lib/nvidia.c:54
+#: src/main.c:117 src/server/server.c:119
#, c-format
-msgid "ERROR: failed to retrieve nvidia temperature\n"
+msgid "%s home page: <%s>\n"
msgstr ""
-#: src/lib/nvidia.c:91
+#: src/main.c:454
+msgid "Psensor has not been compiled with remote sensor support."
+msgstr ""
+
+#: src/main.c:517
+msgid "Enables debug mode."
+msgstr ""
+
+#: src/main.c:529 src/server/server.c:380
#, c-format
-msgid "ERROR: Cannot open connection to X Server\n"
+msgid "Try `%s --help' for more information.\n"
msgstr ""
-#: src/lib/nvidia.c:99
+#: src/main.c:542
+msgid "A Psensor instance already exists."
+msgstr ""
+
+#: src/rsensor.c:107
#, c-format
-msgid "ERROR: Cannot retrieve NVidia information\n"
+msgid "Fail to connect to: %s"
msgstr ""
-#: src/lib/lmsensor.c:43
+#: src/rsensor.c:144
#, c-format
-msgid "ERROR: Can't get value of subfeature %s: %s\n"
+msgid "Invalid content: %s"
msgstr ""
-#: src/lib/lmsensor.c:125
+#: src/rsensor.c:184
#, c-format
-msgid "ERROR: create_sensor, wrong feature type\n"
+msgid "Invalid JSON: %s"
+msgstr ""
+
+#: src/server/server.c:54
+msgid "<html><body><p>Server stop requested</p></body></html>"
+msgstr ""
+
+#: src/server/server.c:60
+msgid ""
+"<html><body><p>Page not found - Go to <a href='/'>Main page</a></p></body>"
msgstr ""
-#: src/lib/lmsensor.c:208
+#: src/server/server.c:84
#, c-format
-msgid "ERROR: lm-sensors initialization failure: %s\n"
+msgid ""
+"Copyright (C) %s jeanfi@gmail.com\n"
+"License GPLv2: GNU GPL version 2 or later <http://www.gnu.org/licenses/old-"
+"licenses/gpl-2.0.html>\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
msgstr ""
-#: src/lib/psensor.c:430
-msgid "C"
+#: src/server/server.c:96
+msgid ""
+"psensor-server is an HTTP server for monitoring hardware sensors remotely."
msgstr ""
-#: src/lib/psensor.c:433
-msgid "RPM"
+#: src/server/server.c:101
+msgid ""
+" -h, --help\t\tdisplay this help and exit\n"
+" -v, --version\t\tdisplay version information and exit"
msgstr ""
-#: src/lib/psensor.c:436
-msgid "%"
+#: src/server/server.c:105
+msgid ""
+" -p,--port=PORT\twebserver port\n"
+" -w,--wdir=DIR\t\tdirectory containing webserver pages"
msgstr ""
-#: src/glade/psensor-pref.glade:7
-msgid "Edit Preferences"
+#: src/server/server.c:109
+msgid " -d, --debug=LEVEL set the debug level, integer between 0 and 3"
msgstr ""
-#: src/glade/psensor-pref.glade:70
-msgid "Graph Colors"
+#: src/server/server.c:111
+msgid " -l, --log-file=PATH set the log file to PATH"
msgstr ""
-#: src/glade/psensor-pref.glade:86
-msgid "Foreground:"
+#: src/server/server.c:112
+msgid " --sensor-log-file=PATH set the sensor log file to PATH"
msgstr ""
-#: src/glade/psensor-pref.glade:100
-msgid "Background:"
+#: src/server/server.c:113
+msgid " --sensor-log-interval=S set the sensor log interval to S (seconds)"
msgstr ""
-#: src/glade/psensor-pref.glade:114
-msgid "Background opacity:"
+#: src/server/server.c:297
+#, c-format
+msgid "HTTP Request: %s"
msgstr ""
-#: src/glade/psensor-pref.glade:165 src/glade/sensor-edit.glade:184
-msgid "Graph"
+#: src/server/server.c:360
+#, c-format
+msgid "Enables debug mode: %d"
msgstr ""
-#: src/glade/psensor-pref.glade:183
-msgid "Update interval:"
+#: src/server/server.c:402
+msgid "No sensors detected."
msgstr ""
-#: src/glade/psensor-pref.glade:197
-msgid "Monitoring duration:"
+#: src/server/server.c:409
+msgid "Failed to create Web server."
msgstr ""
-#: src/glade/psensor-pref.glade:210 src/glade/psensor-pref.glade:272
-msgid "second(s)"
+#: src/server/server.c:413
+#, c-format
+msgid "Web server started on port: %d"
msgstr ""
-#: src/glade/psensor-pref.glade:225
-msgid "minute(s)"
+#: src/server/server.c:414
+#, c-format
+msgid "WWW directory: %s"
msgstr ""
-#: src/glade/psensor-pref.glade:259
-msgid "Measure update interval:"
+#: src/server/server.c:415
+#, c-format
+msgid "URL: http://localhost:%d"
msgstr ""
-#: src/glade/psensor-pref.glade:288
-msgid "Interface"
+#: src/server/server.c:425
+msgid "Failed to activate logging of sensors."
msgstr ""
-#: src/glade/psensor-pref.glade:306
-msgid "Position of sensors table:"
+#: src/ui.c:84
+msgid "Psensor is a GTK+ application for monitoring hardware sensors"
msgstr ""
-#: src/glade/psensor-pref.glade:317
-msgid "Hide window decoration"
+#: src/ui.c:87
+msgid ""
+"Copyright(c) 2010-2013\n"
+"jeanfi@gmail.com"
msgstr ""
-#: src/glade/psensor-pref.glade:335
-msgid "Keep window below"
+#: src/ui.c:90
+msgid "About Psensor"
msgstr ""
-#: src/glade/psensor-pref.glade:436
-msgid "<i>Min</i>"
+#: src/ui.c:93
+msgid "Psensor Homepage"
msgstr ""
-#: src/glade/psensor-pref.glade:463
-msgid "<i>Max</i>"
+#: src/ui.c:217
+msgid "Failed to load Psensor icon."
msgstr ""
-#: src/glade/psensor-pref.glade:483
-msgid "Enable menu"
+#: src/ui_sensorlist.c:245
+msgid "Select foreground color"
msgstr ""
-#: src/glade/psensor-pref.glade:500
-msgid "Enable Unity Launcher counter"
+#: src/ui_sensorlist.c:297
+msgid "Sensor"
msgstr ""
-#: src/glade/psensor-pref.glade:518
-msgid "Hide window on startup"
+#: src/ui_sensorlist.c:303
+msgid "Value"
msgstr ""
-#: src/glade/psensor-pref.glade:535
-msgid "Restore window position and size"
+#: src/ui_sensorlist.c:309
+msgid "Min"
msgstr ""
-#: src/glade/sensor-edit.glade:8
-msgid "Edit Sensor Preferences"
+#: src/ui_sensorlist.c:315
+msgid "Max"
msgstr ""
-#: src/glade/sensor-edit.glade:104
-msgid "Name:"
+#: src/ui_sensorlist.c:322
+msgid "Color"
msgstr ""
-#: src/glade/sensor-edit.glade:139
-msgid "Type:"
+#: src/ui_appindicator.c:106
+msgid "_Show"
msgstr ""
-#: src/glade/sensor-edit.glade:169
-msgid "Id:"
+#: src/ui_appindicator.c:107
+msgid "Show"
msgstr ""
-#: src/glade/sensor-edit.glade:202
-msgid "Color:"
+#: src/ui_appindicator.c:111
+msgid "_Preferences"
msgstr ""
-#: src/glade/sensor-edit.glade:216
-msgid "Alarm"
+#: src/ui_appindicator.c:116
+msgid "S_ensor Preferences"
msgstr ""
-#: src/glade/sensor-edit.glade:231
-msgid "Activate desktop notifications"
+#: src/ui_appindicator.c:118
+msgid "SensorPreferences"
msgstr ""
-#: src/glade/sensor-edit.glade:251
-msgid "Temperature limit:"
+#: src/ui_appindicator.c:122
+msgid "_About"
msgstr ""
-#: src/glade/sensor-edit.glade:266
-msgid "Sensor Information"
+#: src/ui_appindicator.c:129
+msgid "_Quit"
msgstr ""
-#: src/glade/sensor-edit.glade:279
-msgid "Draw sensor curve"
+#: src/ui_appindicator.c:220
+#, c-format
+msgid "building menus failed: %s"
+msgstr ""
+
+#: src/ui_notify.c:48
+msgid "gettimeofday failed."
+msgstr ""
+
+#: src/ui_notify.c:77
+msgid "Temperature alert"
+msgstr ""
+
+#: src/ui_notify.c:79
+msgid "Fan alert"
msgstr ""
-#: src/glade/sensor-edit.glade:327
-msgid "°C"
+#: src/ui_sensorpref.c:248
+msgid "Unknown"
msgstr ""
--- /dev/null
+# Portuguese translations for psensor package.
+# Copyright (C) 2012 Free Software Foundation, Inc.
+# This file is distributed under the same license as the psensor package.
+# <jeanfi@gmail.com>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: psensor 0.7.0.x\n"
+"Report-Msgid-Bugs-To: jeanfi@gmail.com\n"
+"POT-Creation-Date: 2013-10-16 09:19+0200\n"
+"PO-Revision-Date: 2013-09-01 18:54+0000\n"
+"Last-Translator: Celio Alves <Unknown>\n"
+"Language-Team: Brazilian Portuguese\n"
+"Language: pt_BR\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2013-10-18 06:32+0000\n"
+"X-Generator: Launchpad (build 16799)\n"
+
+#: src/glade/psensor.glade:5 src/ui_appindicator.c:124
+msgid "About"
+msgstr "Sobre"
+
+#: src/glade/psensor.glade:9 src/ui_sensorlist.c:209 src/ui_appindicator.c:112
+msgid "Preferences"
+msgstr "Preferências"
+
+#: src/glade/psensor.glade:13 src/ui_appindicator.c:130
+msgid "Quit"
+msgstr "Sair"
+
+#: src/glade/psensor.glade:17
+msgid "Sensor Preferences"
+msgstr "Preferências de sensores"
+
+#: src/glade/psensor.glade:96
+msgid "Psensor - Temperature Monitor"
+msgstr "Psensor - Monitor de temperatura"
+
+#: src/glade/psensor.glade:111
+msgid "_Psensor"
+msgstr "_Psensor"
+
+#: src/glade/psensor.glade:158
+msgid "_Help"
+msgstr "Ajuda"
+
+#: src/glade/psensor-pref.glade:7
+msgid "Edit Preferences"
+msgstr "Editar Preferências"
+
+#: src/glade/psensor-pref.glade:72
+msgid "Position of sensors table:"
+msgstr "Posição da tabela de sensores:"
+
+#: src/glade/psensor-pref.glade:81
+msgid "Hide window decoration"
+msgstr "Ocultar decoração da janela"
+
+#: src/glade/psensor-pref.glade:98
+msgid "Keep window below"
+msgstr "Manter janela abaixo"
+
+#: src/glade/psensor-pref.glade:115
+msgid "Enable menu"
+msgstr "Habilitar menu"
+
+#: src/glade/psensor-pref.glade:132
+msgid "Enable Unity Launcher counter"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:149
+msgid "Hide window on startup"
+msgstr "Ocultar janela na inicialização"
+
+#: src/glade/psensor-pref.glade:166
+msgid "Restore window position and size"
+msgstr "Restaurar posição e tamanho da janela"
+
+#: src/glade/psensor-pref.glade:186
+msgid "Temperature unit:"
+msgstr "Unidade de temperatura:"
+
+#: src/glade/psensor-pref.glade:238
+msgid "Interface"
+msgstr "Interface"
+
+#: src/glade/psensor-pref.glade:276
+msgid "Foreground:"
+msgstr "Primeiro plano:"
+
+#: src/glade/psensor-pref.glade:291
+msgid "Background:"
+msgstr "Plano de fundo:"
+
+#: src/glade/psensor-pref.glade:325
+msgid "Background opacity:"
+msgstr "Opacidade do plano de fundo:"
+
+#: src/glade/psensor-pref.glade:348
+msgid "<i>Min</i>"
+msgstr "<i>Min</i>"
+
+#: src/glade/psensor-pref.glade:375
+msgid "<i>Max</i>"
+msgstr "<i>Max</i>"
+
+#: src/glade/psensor-pref.glade:401
+msgid "Colors"
+msgstr "Cores"
+
+#: src/glade/psensor-pref.glade:419
+msgid "Monitoring duration:"
+msgstr "Duração do monitoramento:"
+
+#: src/glade/psensor-pref.glade:457
+msgid "minute(s)"
+msgstr "minuto(s)"
+
+#: src/glade/psensor-pref.glade:474 src/glade/psensor-pref.glade:626
+msgid "second(s)"
+msgstr "segundo(s)"
+
+#: src/glade/psensor-pref.glade:510
+msgid "Update interval:"
+msgstr "Intervalo de atualização:"
+
+#: src/glade/psensor-pref.glade:528
+msgid "Measures"
+msgstr "Medidas"
+
+#: src/glade/psensor-pref.glade:564 src/glade/sensor-edit.glade:169
+#: src/ui_sensorlist.c:334
+msgid "Graph"
+msgstr "Grafo"
+
+#: src/glade/psensor-pref.glade:588
+msgid "Measure update interval:"
+msgstr "Intervalo de atualização das medições:"
+
+#: src/glade/psensor-pref.glade:637
+msgid "Enable sensors logging"
+msgstr "Habilitar registro (log) de sensores"
+
+#: src/glade/psensor-pref.glade:684
+msgid "Sensors logging interval"
+msgstr "Intervalo de registro dos sensores"
+
+#: src/glade/psensor-pref.glade:701
+msgid "seconds(s)"
+msgstr "segundo(s)"
+
+#: src/glade/psensor-pref.glade:718
+msgid "Script executed when an alarm is raised"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:751
+msgid "Sensors"
+msgstr "Sensores"
+
+#: src/glade/sensor-edit.glade:19
+msgid "Edit Sensor Preferences"
+msgstr "Editar preferências do sensor"
+
+#: src/glade/sensor-edit.glade:87
+msgid "Name"
+msgstr "Nome"
+
+#: src/glade/sensor-edit.glade:138
+msgid "Type:"
+msgstr "Tipo:"
+
+#: src/glade/sensor-edit.glade:153 src/glade/sensor-edit.glade:294
+#: src/glade/sensor-edit.glade:388 src/glade/sensor-edit.glade:459
+#: src/glade/sensor-edit.glade:508 src/lib/psensor.c:486 src/ui_notify.c:81
+msgid "N/A"
+msgstr "N/D"
+
+#: src/glade/sensor-edit.glade:187
+msgid "Color:"
+msgstr "Cor:"
+
+#: src/glade/sensor-edit.glade:201
+msgid "Alarm"
+msgstr "Alarme"
+
+#: src/glade/sensor-edit.glade:216
+msgid "Activate desktop notifications"
+msgstr "Ativar notificações de desktop"
+
+#: src/glade/sensor-edit.glade:236
+msgid "Sensor Information"
+msgstr "Informações do sensor"
+
+#: src/glade/sensor-edit.glade:249
+msgid "Draw sensor curve"
+msgstr "Desenhar curva do sensor"
+
+#: src/glade/sensor-edit.glade:333
+msgid "High threshold:"
+msgstr "Limite superior:"
+
+#: src/glade/sensor-edit.glade:348
+msgid "Low threshold:"
+msgstr "Limite inferior:"
+
+#: src/glade/sensor-edit.glade:409
+msgid "Ubuntu Application Indicator"
+msgstr ""
+
+#: src/glade/sensor-edit.glade:424
+msgid "Display sensor in the Application Indicator menu"
+msgstr ""
+
+#: src/glade/sensor-edit.glade:444
+msgid "Chip:"
+msgstr "Chip:"
+
+#: src/glade/sensor-edit.glade:489
+msgid "Id:"
+msgstr "ID:"
+
+#: src/glade/sensor-edit.glade:523
+msgid "Details"
+msgstr "Detalhes"
+
+#: src/glade/sensor-edit.glade:541
+msgid "Name:"
+msgstr "Nome:"
+
+#: src/lib/amd.c:170
+msgid "AMD: cannot found ADL library."
+msgstr "AMD: não foi possível encontrar a biblioteca ADL."
+
+#: src/lib/amd.c:197
+msgid "AMD: missing ADL's API."
+msgstr "AMD: está faltando a API da ADL."
+
+#: src/lib/amd.c:207
+msgid "AMD: failed to initialize ADL."
+msgstr "AMD: falha ao iniciar ADL."
+
+#: src/lib/amd.c:213
+msgid "AMD: cannot get the number of adapters."
+msgstr "AMD: não foi possível obter número de adaptadores."
+
+#: src/lib/amd.c:252
+#, c-format
+msgid "Number of AMD/ATI adapters: %d"
+msgstr "Número de adaptadores AMD/ATI: %d"
+
+#: src/lib/amd.c:253
+#, c-format
+msgid "Number of active AMD/ATI adapters: %d"
+msgstr "Número de adaptadores AMD/ATI ativos: %d"
+
+#: src/lib/hdd_atasmart.c:152
+#, c-format
+msgid "atasmart: sk_disk_open() failure: %s."
+msgstr "atasmart: falha em sk_disk_open(): %s."
+
+#: src/lib/hdd_hddtemp.c:59
+msgid "hddtemp: failed to open socket."
+msgstr ""
+
+#: src/lib/hdd_hddtemp.c:72
+msgid "hddtemp: failed to open connection."
+msgstr "hddtemp: falha em abrir conexão."
+
+#: src/lib/hdd_hddtemp.c:186 src/lib/hdd_hddtemp.c:256
+#, c-format
+msgid "hddtemp: wrong string: %s."
+msgstr ""
+
+#: src/lib/lmsensor.c:42
+#, c-format
+msgid "lmsensor: cannot get value of subfeature %s: %s."
+msgstr "lmsensor: não foi possível obter valor do sub-recurso %s: %s."
+
+#: src/lib/lmsensor.c:123
+msgid "lmsensor: lmsensor_psensor_create failure: wrong feature type."
+msgstr ""
+
+#: src/lib/lmsensor.c:218
+#, c-format
+msgid "lmsensor: initialization failure: %s."
+msgstr "lmsensor: falha na inicialização: %s."
+
+#: src/lib/log.c:43
+#, c-format
+msgid "Cannot open log file: %s"
+msgstr "Não é possível abrir arquivo de log: %s"
+
+#: src/lib/nvidia.c:54
+msgid ""
+"NVIDIA proprietary driver not used or cannot retrieve NVIDIA GPU temperature."
+msgstr ""
+
+#: src/lib/nvidia.c:97
+msgid "Cannot open connection to X11 server."
+msgstr "Não é possível abrir conexão com o servidor X11."
+
+#: src/lib/nvidia.c:105
+msgid "Failed to retrieve NVIDIA information."
+msgstr "Falha ao recuperar informações de NVIDIA."
+
+#: src/lib/psensor.c:482 tests/test_psensor_type_to_unit_str.c:62
+msgid "RPM"
+msgstr "RPM"
+
+#: src/lib/psensor.c:484
+msgid "%"
+msgstr "%"
+
+#: src/lib/slog.c:68
+msgid "HOME variable not set."
+msgstr "Variável HOME não configurada."
+
+#: src/lib/slog.c:78
+msgid "Sensor log file already open."
+msgstr "Arquivo de registro do sensor já está aberto."
+
+#: src/lib/slog.c:87
+#, c-format
+msgid "Cannot open sensor log file: %s."
+msgstr "Não é possível abrir arquivo de log do sensor: %s."
+
+#: src/lib/slog.c:118
+msgid "Sensor log file not open."
+msgstr "Arquivo de registros do sensor não foi aberto."
+
+#: src/lib/slog.c:174
+msgid "Sensor log not open, cannot close."
+msgstr ""
+
+#: src/main.c:77
+#, c-format
+msgid ""
+"Copyright (C) %s jeanfi@gmail.com\n"
+"License GPLv2: GNU GPL version 2 or later <http://www.gnu.org/licenses/old-"
+"licenses/gpl-2.0.html>\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"Copyright (C) %s jeanfi@gmail.com\n"
+"Licença GPLv2: GNU GPL versão 2 ou superior <http://www.gnu.org/licenses/old-"
+"licenses/gpl-2.0.html>\n"
+"Este é um software livre: você é livre para modificar e redistribuir.\n"
+"Não há NENHUMA GARANTIA, na medida do permitido por lei.\n"
+
+#: src/main.c:88 src/server/server.c:94
+#, c-format
+msgid "Usage: %s [OPTION]...\n"
+msgstr "Uso: %s [OPÇÃO]...\n"
+
+#: src/main.c:90
+msgid ""
+"Psensor is a GTK+ application for monitoring hardware sensors, including "
+"temperatures and fan speeds."
+msgstr ""
+"Psensor é um aplicativo GTK+ para monitoramento de sensores de hardware, "
+"incluindo temperatura e velocidade de ventoinhas."
+
+#: src/main.c:94
+msgid "Options:"
+msgstr "Opções:"
+
+#: src/main.c:95
+msgid ""
+" -h, --help display this help and exit\n"
+" -v, --version display version information and exit"
+msgstr ""
+" -h, --help exibir esta ajuda e sair\n"
+" -v, --version exibir informação de versão e sair"
+
+#: src/main.c:101
+msgid ""
+" -u, --url=URL the URL of the psensor-server,\n"
+" example: http://hostname:3131"
+msgstr ""
+" -u, --url=URL a URL do psensor-server,\n"
+" exemplo: http://hostname:3131"
+
+#: src/main.c:104
+msgid ""
+" --use-libatasmart use atasmart library for disk monitoring instead of\n"
+" hddtemp daemon"
+msgstr ""
+
+#: src/main.c:107
+msgid " -n, --new-instance force the creation of a new Psensor application"
+msgstr ""
+
+#: src/main.c:110
+msgid " -d, --debug=LEVEL set the debug level, integer between 0 and 3"
+msgstr ""
+
+#: src/main.c:115 src/server/server.c:117
+#, c-format
+msgid "Report bugs to: %s\n"
+msgstr "Relatar falhas para: %s\n"
+
+#: src/main.c:117 src/server/server.c:119
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "Página inicial de %s: <%s>\n"
+
+#: src/main.c:454
+msgid "Psensor has not been compiled with remote sensor support."
+msgstr ""
+
+#: src/main.c:517
+msgid "Enables debug mode."
+msgstr "Ativar o modo de depuração"
+
+#: src/main.c:529 src/server/server.c:380
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "Utilize `%s --help' para mais informações.\n"
+
+#: src/main.c:542
+msgid "A Psensor instance already exists."
+msgstr "Uma instancia de Psensor já existe."
+
+#: src/rsensor.c:107
+#, c-format
+msgid "Fail to connect to: %s"
+msgstr "Falha ao conectar: %s"
+
+#: src/rsensor.c:144
+#, c-format
+msgid "Invalid content: %s"
+msgstr "Conteúdo inválido: %s"
+
+#: src/rsensor.c:184
+#, c-format
+msgid "Invalid JSON: %s"
+msgstr "JSON inválido: %s"
+
+#: src/server/server.c:54
+msgid "<html><body><p>Server stop requested</p></body></html>"
+msgstr ""
+
+#: src/server/server.c:60
+msgid ""
+"<html><body><p>Page not found - Go to <a href='/'>Main page</a></p></body>"
+msgstr ""
+"<html><body><p>Página não encontrada - Ir para a <a href='/'>página inicial</"
+"a></p></body>"
+
+#: src/server/server.c:84
+#, c-format
+msgid ""
+"Copyright (C) %s jeanfi@gmail.com\n"
+"License GPLv2: GNU GPL version 2 or later <http://www.gnu.org/licenses/old-"
+"licenses/gpl-2.0.html>\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+
+#: src/server/server.c:96
+msgid ""
+"psensor-server is an HTTP server for monitoring hardware sensors remotely."
+msgstr ""
+"psensor-server é um servidor HTTP para monitoramento remoto de sensores de "
+"hardware."
+
+#: src/server/server.c:101
+msgid ""
+" -h, --help\t\tdisplay this help and exit\n"
+" -v, --version\t\tdisplay version information and exit"
+msgstr ""
+
+#: src/server/server.c:105
+msgid ""
+" -p,--port=PORT\twebserver port\n"
+" -w,--wdir=DIR\t\tdirectory containing webserver pages"
+msgstr ""
+
+#: src/server/server.c:109
+msgid " -d, --debug=LEVEL set the debug level, integer between 0 and 3"
+msgstr ""
+
+#: src/server/server.c:111
+msgid " -l, --log-file=PATH set the log file to PATH"
+msgstr ""
+
+#: src/server/server.c:112
+msgid " --sensor-log-file=PATH set the sensor log file to PATH"
+msgstr ""
+
+#: src/server/server.c:113
+msgid " --sensor-log-interval=S set the sensor log interval to S (seconds)"
+msgstr ""
+
+#: src/server/server.c:297
+#, c-format
+msgid "HTTP Request: %s"
+msgstr "Requisição HTTP: %s"
+
+#: src/server/server.c:360
+#, c-format
+msgid "Enables debug mode: %d"
+msgstr "Habilita modo de depuração: %d"
+
+#: src/server/server.c:402
+msgid "No sensors detected."
+msgstr "Nenhum sensor detectado"
+
+#: src/server/server.c:409
+msgid "Failed to create Web server."
+msgstr "Falhou ao criar servidor web."
+
+#: src/server/server.c:413
+#, c-format
+msgid "Web server started on port: %d"
+msgstr "Servidor web iniciado na porta: %d"
+
+#: src/server/server.c:414
+#, c-format
+msgid "WWW directory: %s"
+msgstr "Diretório WWW: %s"
+
+#: src/server/server.c:415
+#, c-format
+msgid "URL: http://localhost:%d"
+msgstr "URL: http://localhost:%d"
+
+#: src/server/server.c:425
+msgid "Failed to activate logging of sensors."
+msgstr ""
+
+#: src/ui.c:84
+msgid "Psensor is a GTK+ application for monitoring hardware sensors"
+msgstr "Psensor é uma aplicação GTK+ para monitorar sensores de hardware"
+
+#: src/ui.c:87
+msgid ""
+"Copyright(c) 2010-2013\n"
+"jeanfi@gmail.com"
+msgstr ""
+"Copyright(c) 2010-2013\n"
+"jeanfi@gmail.com"
+
+#: src/ui.c:90
+msgid "About Psensor"
+msgstr "Sobre o Psensor"
+
+#: src/ui.c:93
+msgid "Psensor Homepage"
+msgstr "Site do Psensor"
+
+#: src/ui.c:217
+msgid "Failed to load Psensor icon."
+msgstr "Falha ao carregar o ícone do Psensor."
+
+#: src/ui_sensorlist.c:245
+msgid "Select foreground color"
+msgstr "Selecionar cor do primeiro plano"
+
+#: src/ui_sensorlist.c:297
+msgid "Sensor"
+msgstr "Sensor"
+
+#: src/ui_sensorlist.c:303
+msgid "Value"
+msgstr "Valor"
+
+#: src/ui_sensorlist.c:309
+msgid "Min"
+msgstr "Min"
+
+#: src/ui_sensorlist.c:315
+msgid "Max"
+msgstr "Max"
+
+#: src/ui_sensorlist.c:322
+msgid "Color"
+msgstr "Cor"
+
+#: src/ui_appindicator.c:106
+msgid "_Show"
+msgstr "Mo_strar"
+
+#: src/ui_appindicator.c:107
+msgid "Show"
+msgstr "Mostrar"
+
+#: src/ui_appindicator.c:111
+msgid "_Preferences"
+msgstr "_Preferências"
+
+#: src/ui_appindicator.c:116
+msgid "S_ensor Preferences"
+msgstr ""
+
+#: src/ui_appindicator.c:118
+msgid "SensorPreferences"
+msgstr "Preferências do Sensor"
+
+#: src/ui_appindicator.c:122
+msgid "_About"
+msgstr "Sobre"
+
+#: src/ui_appindicator.c:129
+msgid "_Quit"
+msgstr "Sair"
+
+#: src/ui_appindicator.c:220
+#, c-format
+msgid "building menus failed: %s"
+msgstr "falha na montagem dos menus: %s"
+
+#: src/ui_notify.c:48
+msgid "gettimeofday failed."
+msgstr "falha em gettimeofday."
+
+#: src/ui_notify.c:77
+msgid "Temperature alert"
+msgstr "Alerta de temperatura"
+
+#: src/ui_notify.c:79
+msgid "Fan alert"
+msgstr "Alenta do ventilador"
+
+#: src/ui_sensorpref.c:248
+msgid "Unknown"
+msgstr "Desconhecido"
+
+#~ msgid "Sensor Name"
+#~ msgstr "Nome do sensor"
+
+#~ msgid "Enabled"
+#~ msgstr "Habilitado"
+
+#, fuzzy
+#~ msgid "Enable log of measures"
+#~ msgstr "Habilitar menu"
+
+#, fuzzy
+#~ msgid "Enable indicator"
+#~ msgstr "Habilitado"
--- /dev/null
+# Russian translations for psensor package.
+# Copyright (C) 2012 Free Software Foundation, Inc.
+# This file is distributed under the same license as the psensor package.
+# <jeanfi@gmail.com>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: psensor 0.7.0.x\n"
+"Report-Msgid-Bugs-To: jeanfi@gmail.com\n"
+"POT-Creation-Date: 2013-10-16 09:19+0200\n"
+"PO-Revision-Date: 2012-12-25 06:05+0000\n"
+"Last-Translator: Ilya Volchanetskiy <Unknown>\n"
+"Language-Team: Russian\n"
+"Language: ru\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2013-01-21 09:32+0000\n"
+"X-Generator: Launchpad (build 16430)\n"
+
+#: src/glade/psensor.glade:5 src/ui_appindicator.c:124
+msgid "About"
+msgstr "О программе"
+
+#: src/glade/psensor.glade:9 src/ui_sensorlist.c:209 src/ui_appindicator.c:112
+msgid "Preferences"
+msgstr "Параметры"
+
+#: src/glade/psensor.glade:13 src/ui_appindicator.c:130
+msgid "Quit"
+msgstr "Выход"
+
+#: src/glade/psensor.glade:17
+msgid "Sensor Preferences"
+msgstr "Параметры датчиков"
+
+#: src/glade/psensor.glade:96
+msgid "Psensor - Temperature Monitor"
+msgstr "Psensor - монитор температуры"
+
+#: src/glade/psensor.glade:111
+msgid "_Psensor"
+msgstr ""
+
+#: src/glade/psensor.glade:158
+msgid "_Help"
+msgstr "_Справка"
+
+#: src/glade/psensor-pref.glade:7
+msgid "Edit Preferences"
+msgstr "Изменить параметры"
+
+#: src/glade/psensor-pref.glade:72
+msgid "Position of sensors table:"
+msgstr "Положение таблицы датчиков:"
+
+#: src/glade/psensor-pref.glade:81
+msgid "Hide window decoration"
+msgstr "Спрятать рамку окна"
+
+#: src/glade/psensor-pref.glade:98
+msgid "Keep window below"
+msgstr "Держать окно позади"
+
+#: src/glade/psensor-pref.glade:115
+msgid "Enable menu"
+msgstr "Включить меню"
+
+#: src/glade/psensor-pref.glade:132
+msgid "Enable Unity Launcher counter"
+msgstr "Включить счётчик в панеле запуска Unity"
+
+#: src/glade/psensor-pref.glade:149
+msgid "Hide window on startup"
+msgstr "Скрыть окно при запуске"
+
+#: src/glade/psensor-pref.glade:166
+msgid "Restore window position and size"
+msgstr "Восстанавливать положение и размер окна"
+
+#: src/glade/psensor-pref.glade:186
+msgid "Temperature unit:"
+msgstr "Единица измерения температуры:"
+
+#: src/glade/psensor-pref.glade:238
+msgid "Interface"
+msgstr "Внешний вид"
+
+#: src/glade/psensor-pref.glade:276
+msgid "Foreground:"
+msgstr "Передний план:"
+
+#: src/glade/psensor-pref.glade:291
+msgid "Background:"
+msgstr "Фон:"
+
+#: src/glade/psensor-pref.glade:325
+msgid "Background opacity:"
+msgstr "Непрозрачность фона:"
+
+#: src/glade/psensor-pref.glade:348
+msgid "<i>Min</i>"
+msgstr "<i>Мин.</i>"
+
+#: src/glade/psensor-pref.glade:375
+msgid "<i>Max</i>"
+msgstr "<i>Макс.</i>"
+
+#: src/glade/psensor-pref.glade:401
+msgid "Colors"
+msgstr "Цвета"
+
+#: src/glade/psensor-pref.glade:419
+msgid "Monitoring duration:"
+msgstr "Время мониторинга:"
+
+#: src/glade/psensor-pref.glade:457
+msgid "minute(s)"
+msgstr "мин."
+
+#: src/glade/psensor-pref.glade:474 src/glade/psensor-pref.glade:626
+msgid "second(s)"
+msgstr "сек."
+
+#: src/glade/psensor-pref.glade:510
+msgid "Update interval:"
+msgstr "Интервал обновления:"
+
+#: src/glade/psensor-pref.glade:528
+msgid "Measures"
+msgstr "Замеры"
+
+#: src/glade/psensor-pref.glade:564 src/glade/sensor-edit.glade:169
+#: src/ui_sensorlist.c:334
+msgid "Graph"
+msgstr "Диаграмма"
+
+#: src/glade/psensor-pref.glade:588
+msgid "Measure update interval:"
+msgstr "Интервал обновления замеров:"
+
+#: src/glade/psensor-pref.glade:637
+msgid "Enable sensors logging"
+msgstr "Вести журнал событий датчиков"
+
+#: src/glade/psensor-pref.glade:684
+msgid "Sensors logging interval"
+msgstr "Интервал ведения журнала событий датчиков"
+
+#: src/glade/psensor-pref.glade:701
+msgid "seconds(s)"
+msgstr "секунд(с)"
+
+#: src/glade/psensor-pref.glade:718
+msgid "Script executed when an alarm is raised"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:751
+msgid "Sensors"
+msgstr "Датчики"
+
+#: src/glade/sensor-edit.glade:19
+msgid "Edit Sensor Preferences"
+msgstr "Изменить параметры датчика"
+
+#: src/glade/sensor-edit.glade:87
+msgid "Name"
+msgstr ""
+
+#: src/glade/sensor-edit.glade:138
+msgid "Type:"
+msgstr "Тип:"
+
+#: src/glade/sensor-edit.glade:153 src/glade/sensor-edit.glade:294
+#: src/glade/sensor-edit.glade:388 src/glade/sensor-edit.glade:459
+#: src/glade/sensor-edit.glade:508 src/lib/psensor.c:486 src/ui_notify.c:81
+msgid "N/A"
+msgstr "Н/Д"
+
+#: src/glade/sensor-edit.glade:187
+msgid "Color:"
+msgstr "Цвет:"
+
+#: src/glade/sensor-edit.glade:201
+msgid "Alarm"
+msgstr "Уведомление"
+
+#: src/glade/sensor-edit.glade:216
+msgid "Activate desktop notifications"
+msgstr "Включить уведомления"
+
+#: src/glade/sensor-edit.glade:236
+msgid "Sensor Information"
+msgstr "Информация датчика"
+
+#: src/glade/sensor-edit.glade:249
+msgid "Draw sensor curve"
+msgstr "Рисовать график датчика"
+
+#: src/glade/sensor-edit.glade:333
+msgid "High threshold:"
+msgstr "Высший порог:"
+
+#: src/glade/sensor-edit.glade:348
+msgid "Low threshold:"
+msgstr "Нижний порог:"
+
+#: src/glade/sensor-edit.glade:409
+msgid "Ubuntu Application Indicator"
+msgstr "Индикатор приложения"
+
+#: src/glade/sensor-edit.glade:424
+msgid "Display sensor in the Application Indicator menu"
+msgstr "Показать датчик в индикаторе меню приложений"
+
+#: src/glade/sensor-edit.glade:444
+msgid "Chip:"
+msgstr "Микросхема:"
+
+#: src/glade/sensor-edit.glade:489
+msgid "Id:"
+msgstr "Идентификатор:"
+
+#: src/glade/sensor-edit.glade:523
+msgid "Details"
+msgstr "Сведения"
+
+#: src/glade/sensor-edit.glade:541
+msgid "Name:"
+msgstr "Название:"
+
+#: src/lib/amd.c:170
+msgid "AMD: cannot found ADL library."
+msgstr "AMD: библиотека ADL не найдена."
+
+#: src/lib/amd.c:197
+msgid "AMD: missing ADL's API."
+msgstr "AMD: отсутствует API ADL."
+
+#: src/lib/amd.c:207
+msgid "AMD: failed to initialize ADL."
+msgstr "AMD: не удалось инициализировать ADL."
+
+#: src/lib/amd.c:213
+msgid "AMD: cannot get the number of adapters."
+msgstr "AMD: ошибка определения количества адаптеров."
+
+#: src/lib/amd.c:252
+#, c-format
+msgid "Number of AMD/ATI adapters: %d"
+msgstr ""
+
+#: src/lib/amd.c:253
+#, c-format
+msgid "Number of active AMD/ATI adapters: %d"
+msgstr ""
+
+#: src/lib/hdd_atasmart.c:152
+#, c-format
+msgid "atasmart: sk_disk_open() failure: %s."
+msgstr "atasmart: ошибка sk_disk_open(): %s."
+
+#: src/lib/hdd_hddtemp.c:59
+msgid "hddtemp: failed to open socket."
+msgstr "hddtemp: не удалось открыть сокет."
+
+#: src/lib/hdd_hddtemp.c:72
+msgid "hddtemp: failed to open connection."
+msgstr "hddtemp: не удалось открыть соединение."
+
+#: src/lib/hdd_hddtemp.c:186 src/lib/hdd_hddtemp.c:256
+#, c-format
+msgid "hddtemp: wrong string: %s."
+msgstr "hddtemp: неправильная строка: %s."
+
+#: src/lib/lmsensor.c:42
+#, c-format
+msgid "lmsensor: cannot get value of subfeature %s: %s."
+msgstr ""
+
+#: src/lib/lmsensor.c:123
+msgid "lmsensor: lmsensor_psensor_create failure: wrong feature type."
+msgstr ""
+
+#: src/lib/lmsensor.c:218
+#, c-format
+msgid "lmsensor: initialization failure: %s."
+msgstr "lmsensor: ошибка инициализации: %s."
+
+#: src/lib/log.c:43
+#, c-format
+msgid "Cannot open log file: %s"
+msgstr "Ошибка открытия файла журнала: %s"
+
+#: src/lib/nvidia.c:54
+msgid ""
+"NVIDIA proprietary driver not used or cannot retrieve NVIDIA GPU temperature."
+msgstr ""
+
+#: src/lib/nvidia.c:97
+msgid "Cannot open connection to X11 server."
+msgstr "Ошибка открытия соединения к серверу X11."
+
+#: src/lib/nvidia.c:105
+msgid "Failed to retrieve NVIDIA information."
+msgstr "Не удалось получить информацию NVIDIA."
+
+#: src/lib/psensor.c:482 tests/test_psensor_type_to_unit_str.c:62
+msgid "RPM"
+msgstr "об/мин"
+
+#: src/lib/psensor.c:484
+msgid "%"
+msgstr "%"
+
+#: src/lib/slog.c:68
+msgid "HOME variable not set."
+msgstr "Переменная HOME не установлена."
+
+#: src/lib/slog.c:78
+msgid "Sensor log file already open."
+msgstr "Файл журнала датчика уже открыт."
+
+#: src/lib/slog.c:87
+#, fuzzy, c-format
+msgid "Cannot open sensor log file: %s."
+msgstr "Не удалось открыть файл журнала датчика: %s."
+
+#: src/lib/slog.c:118
+msgid "Sensor log file not open."
+msgstr "Файл журнала датчика не открыт."
+
+#: src/lib/slog.c:174
+msgid "Sensor log not open, cannot close."
+msgstr "Файл журнала датчика не открыт, не удалось закрыть."
+
+#: src/main.c:77
+#, c-format
+msgid ""
+"Copyright (C) %s jeanfi@gmail.com\n"
+"License GPLv2: GNU GPL version 2 or later <http://www.gnu.org/licenses/old-"
+"licenses/gpl-2.0.html>\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+
+#: src/main.c:88 src/server/server.c:94
+#, c-format
+msgid "Usage: %s [OPTION]...\n"
+msgstr "Использование: %s [КЛЮЧ]...\n"
+
+#: src/main.c:90
+msgid ""
+"Psensor is a GTK+ application for monitoring hardware sensors, including "
+"temperatures and fan speeds."
+msgstr ""
+"Psensor — это GTK+ приложение для мониторинга аппаратных датчиков, включая "
+"температуру и скорость вентилятора."
+
+#: src/main.c:94
+msgid "Options:"
+msgstr "Опции:"
+
+#: src/main.c:95
+msgid ""
+" -h, --help display this help and exit\n"
+" -v, --version display version information and exit"
+msgstr ""
+" -h, --help показать эту справку и выйти\n"
+" -v, --version показать версию и выйти"
+
+#: src/main.c:101
+msgid ""
+" -u, --url=URL the URL of the psensor-server,\n"
+" example: http://hostname:3131"
+msgstr ""
+" -u, --url=URL URL psensor-сервера, пример: http://hostname:3131"
+
+#: src/main.c:104
+msgid ""
+" --use-libatasmart use atasmart library for disk monitoring instead of\n"
+" hddtemp daemon"
+msgstr ""
+" --use-libatasmart использовать библиотеку atasmart для мониторинга "
+"дисков вместо демона hddtemp"
+
+#: src/main.c:107
+msgid " -n, --new-instance force the creation of a new Psensor application"
+msgstr ""
+" -n, --new-instance принудительно запускает новую копию программы Psensor"
+
+#: src/main.c:110
+msgid " -d, --debug=LEVEL set the debug level, integer between 0 and 3"
+msgstr " -d, --debug=УРОВЕНЬ установить уровень отладки, целое между 0 и 3"
+
+#: src/main.c:115 src/server/server.c:117
+#, c-format
+msgid "Report bugs to: %s\n"
+msgstr "Сообщайте об ошибках на: %s\n"
+
+#: src/main.c:117 src/server/server.c:119
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "%s домашняя страница: <%s>\n"
+
+#: src/main.c:454
+msgid "Psensor has not been compiled with remote sensor support."
+msgstr "Psensor не был собран с поддержкой удалённых датчиков."
+
+#: src/main.c:517
+msgid "Enables debug mode."
+msgstr "Включает режим отладки."
+
+#: src/main.c:529 src/server/server.c:380
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "Попробуйте `%s --help' для дополнительной информации.↵\n"
+
+#: src/main.c:542
+msgid "A Psensor instance already exists."
+msgstr "Копия Psensor уже запущена."
+
+#: src/rsensor.c:107
+#, c-format
+msgid "Fail to connect to: %s"
+msgstr "Ошибка подключения к: %s"
+
+#: src/rsensor.c:144
+#, c-format
+msgid "Invalid content: %s"
+msgstr "Неправильное содержимое: %s"
+
+#: src/rsensor.c:184
+#, c-format
+msgid "Invalid JSON: %s"
+msgstr "Неправильный JSON: %s"
+
+#: src/server/server.c:54
+msgid "<html><body><p>Server stop requested</p></body></html>"
+msgstr "<html><body><p>Запрошена остановка сервера</p></body></html>"
+
+#: src/server/server.c:60
+msgid ""
+"<html><body><p>Page not found - Go to <a href='/'>Main page</a></p></body>"
+msgstr ""
+"<html><body><p>Страница не найдена - Перейти к <a href='/'>Главной странице</"
+"a></p></body>"
+
+#: src/server/server.c:84
+#, c-format
+msgid ""
+"Copyright (C) %s jeanfi@gmail.com\n"
+"License GPLv2: GNU GPL version 2 or later <http://www.gnu.org/licenses/old-"
+"licenses/gpl-2.0.html>\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+
+#: src/server/server.c:96
+msgid ""
+"psensor-server is an HTTP server for monitoring hardware sensors remotely."
+msgstr ""
+"psensor-server — это HTTP-сервер для удалённого мониторинга аппаратных "
+"датчиков."
+
+#: src/server/server.c:101
+msgid ""
+" -h, --help\t\tdisplay this help and exit\n"
+" -v, --version\t\tdisplay version information and exit"
+msgstr ""
+" -h, --help\t\tпоказать эту справку и выйти\n"
+" -v, --version\t\tпоказать версию и выйти"
+
+#: src/server/server.c:105
+msgid ""
+" -p,--port=PORT\twebserver port\n"
+" -w,--wdir=DIR\t\tdirectory containing webserver pages"
+msgstr ""
+" -p,--port=PORT\tпорт веб-сервера\n"
+" -w,--wdir=DIR\t\tдиректория для страниц веб-сервера"
+
+#: src/server/server.c:109
+msgid " -d, --debug=LEVEL set the debug level, integer between 0 and 3"
+msgstr " -d, --debug=LEVEL установить уровень отладки, целое между 0 и 3"
+
+#: src/server/server.c:111
+msgid " -l, --log-file=PATH set the log file to PATH"
+msgstr " -l, --log-file=ПУТЬ установить ПУТЬ к файлу журнала"
+
+#: src/server/server.c:112
+msgid " --sensor-log-file=PATH set the sensor log file to PATH"
+msgstr " --sensor-log-file=ПУТЬ установить ПУТЬ к файлу журнала датчика"
+
+#: src/server/server.c:113
+msgid " --sensor-log-interval=S set the sensor log interval to S (seconds)"
+msgstr ""
+" --sensor-log-interval=ПЕРИОД установить ПЕРИОД журналирования датчиков (в "
+"секундах)"
+
+#: src/server/server.c:297
+#, c-format
+msgid "HTTP Request: %s"
+msgstr "HTTP запрос: %s"
+
+#: src/server/server.c:360
+#, c-format
+msgid "Enables debug mode: %d"
+msgstr "Включает режим отладки: %d"
+
+#: src/server/server.c:402
+msgid "No sensors detected."
+msgstr "Датчики не обнаружены."
+
+#: src/server/server.c:409
+msgid "Failed to create Web server."
+msgstr "Не удалось создать веб-сервер."
+
+#: src/server/server.c:413
+#, c-format
+msgid "Web server started on port: %d"
+msgstr "Веб-сервер запущен на порту: %d"
+
+#: src/server/server.c:414
+#, c-format
+msgid "WWW directory: %s"
+msgstr "WWW-каталог: %s"
+
+#: src/server/server.c:415
+#, c-format
+msgid "URL: http://localhost:%d"
+msgstr "URL: http://localhost:%d"
+
+#: src/server/server.c:425
+msgid "Failed to activate logging of sensors."
+msgstr "Не удалось включить журналирование датчиков."
+
+#: src/ui.c:84
+msgid "Psensor is a GTK+ application for monitoring hardware sensors"
+msgstr "Psensor — это GTK+ приложения для мониторинга аппаратных серсоров"
+
+#: src/ui.c:87
+msgid ""
+"Copyright(c) 2010-2013\n"
+"jeanfi@gmail.com"
+msgstr ""
+
+#: src/ui.c:90
+msgid "About Psensor"
+msgstr "О Psensor"
+
+#: src/ui.c:93
+msgid "Psensor Homepage"
+msgstr "Домашняя страница Psensor"
+
+#: src/ui.c:217
+msgid "Failed to load Psensor icon."
+msgstr "Не удалось загрузить значок Psensor."
+
+#: src/ui_sensorlist.c:245
+msgid "Select foreground color"
+msgstr "Выберите цвет переднего плана"
+
+#: src/ui_sensorlist.c:297
+msgid "Sensor"
+msgstr "Датчик"
+
+#: src/ui_sensorlist.c:303
+msgid "Value"
+msgstr "Значение"
+
+#: src/ui_sensorlist.c:309
+msgid "Min"
+msgstr "Мин."
+
+#: src/ui_sensorlist.c:315
+msgid "Max"
+msgstr "Макс."
+
+#: src/ui_sensorlist.c:322
+msgid "Color"
+msgstr "Цвет"
+
+#: src/ui_appindicator.c:106
+msgid "_Show"
+msgstr "_Показать"
+
+#: src/ui_appindicator.c:107
+msgid "Show"
+msgstr "Показать"
+
+#: src/ui_appindicator.c:111
+msgid "_Preferences"
+msgstr "_Параметры"
+
+#: src/ui_appindicator.c:116
+msgid "S_ensor Preferences"
+msgstr "Параметры д_атчика"
+
+#: src/ui_appindicator.c:118
+msgid "SensorPreferences"
+msgstr ""
+
+#: src/ui_appindicator.c:122
+msgid "_About"
+msgstr "_О программе"
+
+#: src/ui_appindicator.c:129
+msgid "_Quit"
+msgstr "_Выход"
+
+#: src/ui_appindicator.c:220
+#, c-format
+msgid "building menus failed: %s"
+msgstr "не удалось создать меню: %s"
+
+#: src/ui_notify.c:48
+msgid "gettimeofday failed."
+msgstr "ошибка gettimeofday."
+
+#: src/ui_notify.c:77
+msgid "Temperature alert"
+msgstr "Уведомление температуры"
+
+#: src/ui_notify.c:79
+msgid "Fan alert"
+msgstr "Уведомление вентилятора"
+
+#: src/ui_sensorpref.c:248
+msgid "Unknown"
+msgstr ""
+
+#~ msgid "Sensor Name"
+#~ msgstr "Название датчика"
+
+#~ msgid "Enabled"
+#~ msgstr "Включён"
+
+#, fuzzy
+#~ msgid "Enable log of measures"
+#~ msgstr "Включить меню"
+
+#, fuzzy
+#~ msgid "slog_init: cannot open sensor log file: %s"
+#~ msgstr "Ошибка открытия файла журнала: %s"
+
+#, fuzzy
+#~ msgid "slog_init: gettimeofday failed."
+#~ msgstr "ошибка gettimeofday."
+
+#, fuzzy
+#~ msgid "slog_write_sensors: gettimeofday failed."
+#~ msgstr "ошибка gettimeofday."
+
+#, fuzzy
+#~ msgid "Enable indicator"
+#~ msgstr "Включён"
--- /dev/null
+# Slovenian translation for psensor
+# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
+# This file is distributed under the same license as the psensor package.
+# Maintained by Jean-Philippe Orsini <jeanfi@gmail.com>
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: psensor\n"
+"Report-Msgid-Bugs-To: jeanfi@gmail.com\n"
+"POT-Creation-Date: 2013-10-16 09:19+0200\n"
+"PO-Revision-Date: 2012-04-14 21:02+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Slovenian <sl@li.org>\n"
+"Language: sl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2012-07-02 08:28+0000\n"
+"X-Generator: Launchpad (build 15520)\n"
+
+#: src/glade/psensor.glade:5 src/ui_appindicator.c:124
+msgid "About"
+msgstr ""
+
+#: src/glade/psensor.glade:9 src/ui_sensorlist.c:209 src/ui_appindicator.c:112
+msgid "Preferences"
+msgstr ""
+
+#: src/glade/psensor.glade:13 src/ui_appindicator.c:130
+msgid "Quit"
+msgstr ""
+
+#: src/glade/psensor.glade:17
+msgid "Sensor Preferences"
+msgstr ""
+
+#: src/glade/psensor.glade:96
+msgid "Psensor - Temperature Monitor"
+msgstr ""
+
+#: src/glade/psensor.glade:111
+msgid "_Psensor"
+msgstr ""
+
+#: src/glade/psensor.glade:158
+msgid "_Help"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:7
+msgid "Edit Preferences"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:72
+msgid "Position of sensors table:"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:81
+msgid "Hide window decoration"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:98
+msgid "Keep window below"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:115
+msgid "Enable menu"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:132
+msgid "Enable Unity Launcher counter"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:149
+msgid "Hide window on startup"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:166
+msgid "Restore window position and size"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:186
+msgid "Temperature unit:"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:238
+msgid "Interface"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:276
+msgid "Foreground:"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:291
+msgid "Background:"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:325
+msgid "Background opacity:"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:348
+msgid "<i>Min</i>"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:375
+msgid "<i>Max</i>"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:401
+msgid "Colors"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:419
+msgid "Monitoring duration:"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:457
+msgid "minute(s)"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:474 src/glade/psensor-pref.glade:626
+msgid "second(s)"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:510
+msgid "Update interval:"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:528
+msgid "Measures"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:564 src/glade/sensor-edit.glade:169
+#: src/ui_sensorlist.c:334
+msgid "Graph"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:588
+msgid "Measure update interval:"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:637
+msgid "Enable sensors logging"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:684
+msgid "Sensors logging interval"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:701
+msgid "seconds(s)"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:718
+msgid "Script executed when an alarm is raised"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:751
+msgid "Sensors"
+msgstr ""
+
+#: src/glade/sensor-edit.glade:19
+msgid "Edit Sensor Preferences"
+msgstr ""
+
+#: src/glade/sensor-edit.glade:87
+msgid "Name"
+msgstr ""
+
+#: src/glade/sensor-edit.glade:138
+msgid "Type:"
+msgstr ""
+
+#: src/glade/sensor-edit.glade:153 src/glade/sensor-edit.glade:294
+#: src/glade/sensor-edit.glade:388 src/glade/sensor-edit.glade:459
+#: src/glade/sensor-edit.glade:508 src/lib/psensor.c:486 src/ui_notify.c:81
+msgid "N/A"
+msgstr ""
+
+#: src/glade/sensor-edit.glade:187
+msgid "Color:"
+msgstr ""
+
+#: src/glade/sensor-edit.glade:201
+msgid "Alarm"
+msgstr ""
+
+#: src/glade/sensor-edit.glade:216
+msgid "Activate desktop notifications"
+msgstr ""
+
+#: src/glade/sensor-edit.glade:236
+msgid "Sensor Information"
+msgstr ""
+
+#: src/glade/sensor-edit.glade:249
+msgid "Draw sensor curve"
+msgstr ""
+
+#: src/glade/sensor-edit.glade:333
+msgid "High threshold:"
+msgstr ""
+
+#: src/glade/sensor-edit.glade:348
+msgid "Low threshold:"
+msgstr ""
+
+#: src/glade/sensor-edit.glade:409
+msgid "Ubuntu Application Indicator"
+msgstr ""
+
+#: src/glade/sensor-edit.glade:424
+msgid "Display sensor in the Application Indicator menu"
+msgstr ""
+
+#: src/glade/sensor-edit.glade:444
+msgid "Chip:"
+msgstr ""
+
+#: src/glade/sensor-edit.glade:489
+msgid "Id:"
+msgstr ""
+
+#: src/glade/sensor-edit.glade:523
+msgid "Details"
+msgstr ""
+
+#: src/glade/sensor-edit.glade:541
+msgid "Name:"
+msgstr ""
+
+#: src/lib/amd.c:170
+msgid "AMD: cannot found ADL library."
+msgstr ""
+
+#: src/lib/amd.c:197
+msgid "AMD: missing ADL's API."
+msgstr ""
+
+#: src/lib/amd.c:207
+msgid "AMD: failed to initialize ADL."
+msgstr ""
+
+#: src/lib/amd.c:213
+msgid "AMD: cannot get the number of adapters."
+msgstr ""
+
+#: src/lib/amd.c:252
+#, c-format
+msgid "Number of AMD/ATI adapters: %d"
+msgstr ""
+
+#: src/lib/amd.c:253
+#, c-format
+msgid "Number of active AMD/ATI adapters: %d"
+msgstr ""
+
+#: src/lib/hdd_atasmart.c:152
+#, c-format
+msgid "atasmart: sk_disk_open() failure: %s."
+msgstr ""
+
+#: src/lib/hdd_hddtemp.c:59
+msgid "hddtemp: failed to open socket."
+msgstr ""
+
+#: src/lib/hdd_hddtemp.c:72
+msgid "hddtemp: failed to open connection."
+msgstr ""
+
+#: src/lib/hdd_hddtemp.c:186 src/lib/hdd_hddtemp.c:256
+#, c-format
+msgid "hddtemp: wrong string: %s."
+msgstr ""
+
+#: src/lib/lmsensor.c:42
+#, c-format
+msgid "lmsensor: cannot get value of subfeature %s: %s."
+msgstr ""
+
+#: src/lib/lmsensor.c:123
+msgid "lmsensor: lmsensor_psensor_create failure: wrong feature type."
+msgstr ""
+
+#: src/lib/lmsensor.c:218
+#, c-format
+msgid "lmsensor: initialization failure: %s."
+msgstr ""
+
+#: src/lib/log.c:43
+#, c-format
+msgid "Cannot open log file: %s"
+msgstr ""
+
+#: src/lib/nvidia.c:54
+msgid ""
+"NVIDIA proprietary driver not used or cannot retrieve NVIDIA GPU temperature."
+msgstr ""
+
+#: src/lib/nvidia.c:97
+msgid "Cannot open connection to X11 server."
+msgstr ""
+
+#: src/lib/nvidia.c:105
+msgid "Failed to retrieve NVIDIA information."
+msgstr ""
+
+#: src/lib/psensor.c:482 tests/test_psensor_type_to_unit_str.c:62
+msgid "RPM"
+msgstr ""
+
+#: src/lib/psensor.c:484
+msgid "%"
+msgstr ""
+
+#: src/lib/slog.c:68
+msgid "HOME variable not set."
+msgstr ""
+
+#: src/lib/slog.c:78
+msgid "Sensor log file already open."
+msgstr ""
+
+#: src/lib/slog.c:87
+#, c-format
+msgid "Cannot open sensor log file: %s."
+msgstr ""
+
+#: src/lib/slog.c:118
+msgid "Sensor log file not open."
+msgstr ""
+
+#: src/lib/slog.c:174
+msgid "Sensor log not open, cannot close."
+msgstr ""
+
+#: src/main.c:77
+#, c-format
+msgid ""
+"Copyright (C) %s jeanfi@gmail.com\n"
+"License GPLv2: GNU GPL version 2 or later <http://www.gnu.org/licenses/old-"
+"licenses/gpl-2.0.html>\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+
+#: src/main.c:88 src/server/server.c:94
+#, c-format
+msgid "Usage: %s [OPTION]...\n"
+msgstr ""
+
+#: src/main.c:90
+msgid ""
+"Psensor is a GTK+ application for monitoring hardware sensors, including "
+"temperatures and fan speeds."
+msgstr ""
+
+#: src/main.c:94
+msgid "Options:"
+msgstr ""
+
+#: src/main.c:95
+msgid ""
+" -h, --help display this help and exit\n"
+" -v, --version display version information and exit"
+msgstr ""
+
+#: src/main.c:101
+msgid ""
+" -u, --url=URL the URL of the psensor-server,\n"
+" example: http://hostname:3131"
+msgstr ""
+
+#: src/main.c:104
+msgid ""
+" --use-libatasmart use atasmart library for disk monitoring instead of\n"
+" hddtemp daemon"
+msgstr ""
+
+#: src/main.c:107
+msgid " -n, --new-instance force the creation of a new Psensor application"
+msgstr ""
+
+#: src/main.c:110
+msgid " -d, --debug=LEVEL set the debug level, integer between 0 and 3"
+msgstr ""
+
+#: src/main.c:115 src/server/server.c:117
+#, c-format
+msgid "Report bugs to: %s\n"
+msgstr ""
+
+#: src/main.c:117 src/server/server.c:119
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr ""
+
+#: src/main.c:454
+msgid "Psensor has not been compiled with remote sensor support."
+msgstr ""
+
+#: src/main.c:517
+msgid "Enables debug mode."
+msgstr ""
+
+#: src/main.c:529 src/server/server.c:380
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr ""
+
+#: src/main.c:542
+msgid "A Psensor instance already exists."
+msgstr ""
+
+#: src/rsensor.c:107
+#, c-format
+msgid "Fail to connect to: %s"
+msgstr ""
+
+#: src/rsensor.c:144
+#, c-format
+msgid "Invalid content: %s"
+msgstr ""
+
+#: src/rsensor.c:184
+#, c-format
+msgid "Invalid JSON: %s"
+msgstr ""
+
+#: src/server/server.c:54
+msgid "<html><body><p>Server stop requested</p></body></html>"
+msgstr ""
+
+#: src/server/server.c:60
+msgid ""
+"<html><body><p>Page not found - Go to <a href='/'>Main page</a></p></body>"
+msgstr ""
+
+#: src/server/server.c:84
+#, c-format
+msgid ""
+"Copyright (C) %s jeanfi@gmail.com\n"
+"License GPLv2: GNU GPL version 2 or later <http://www.gnu.org/licenses/old-"
+"licenses/gpl-2.0.html>\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+
+#: src/server/server.c:96
+msgid ""
+"psensor-server is an HTTP server for monitoring hardware sensors remotely."
+msgstr ""
+
+#: src/server/server.c:101
+msgid ""
+" -h, --help\t\tdisplay this help and exit\n"
+" -v, --version\t\tdisplay version information and exit"
+msgstr ""
+
+#: src/server/server.c:105
+msgid ""
+" -p,--port=PORT\twebserver port\n"
+" -w,--wdir=DIR\t\tdirectory containing webserver pages"
+msgstr ""
+
+#: src/server/server.c:109
+msgid " -d, --debug=LEVEL set the debug level, integer between 0 and 3"
+msgstr ""
+
+#: src/server/server.c:111
+msgid " -l, --log-file=PATH set the log file to PATH"
+msgstr ""
+
+#: src/server/server.c:112
+msgid " --sensor-log-file=PATH set the sensor log file to PATH"
+msgstr ""
+
+#: src/server/server.c:113
+msgid " --sensor-log-interval=S set the sensor log interval to S (seconds)"
+msgstr ""
+
+#: src/server/server.c:297
+#, c-format
+msgid "HTTP Request: %s"
+msgstr ""
+
+#: src/server/server.c:360
+#, c-format
+msgid "Enables debug mode: %d"
+msgstr ""
+
+#: src/server/server.c:402
+msgid "No sensors detected."
+msgstr ""
+
+#: src/server/server.c:409
+msgid "Failed to create Web server."
+msgstr ""
+
+#: src/server/server.c:413
+#, c-format
+msgid "Web server started on port: %d"
+msgstr ""
+
+#: src/server/server.c:414
+#, c-format
+msgid "WWW directory: %s"
+msgstr ""
+
+#: src/server/server.c:415
+#, c-format
+msgid "URL: http://localhost:%d"
+msgstr ""
+
+#: src/server/server.c:425
+msgid "Failed to activate logging of sensors."
+msgstr ""
+
+#: src/ui.c:84
+msgid "Psensor is a GTK+ application for monitoring hardware sensors"
+msgstr ""
+
+#: src/ui.c:87
+msgid ""
+"Copyright(c) 2010-2013\n"
+"jeanfi@gmail.com"
+msgstr ""
+
+#: src/ui.c:90
+msgid "About Psensor"
+msgstr ""
+
+#: src/ui.c:93
+msgid "Psensor Homepage"
+msgstr ""
+
+#: src/ui.c:217
+msgid "Failed to load Psensor icon."
+msgstr ""
+
+#: src/ui_sensorlist.c:245
+msgid "Select foreground color"
+msgstr ""
+
+#: src/ui_sensorlist.c:297
+msgid "Sensor"
+msgstr ""
+
+#: src/ui_sensorlist.c:303
+msgid "Value"
+msgstr ""
+
+#: src/ui_sensorlist.c:309
+msgid "Min"
+msgstr ""
+
+#: src/ui_sensorlist.c:315
+msgid "Max"
+msgstr ""
+
+#: src/ui_sensorlist.c:322
+msgid "Color"
+msgstr ""
+
+#: src/ui_appindicator.c:106
+msgid "_Show"
+msgstr ""
+
+#: src/ui_appindicator.c:107
+msgid "Show"
+msgstr ""
+
+#: src/ui_appindicator.c:111
+msgid "_Preferences"
+msgstr ""
+
+#: src/ui_appindicator.c:116
+msgid "S_ensor Preferences"
+msgstr ""
+
+#: src/ui_appindicator.c:118
+msgid "SensorPreferences"
+msgstr ""
+
+#: src/ui_appindicator.c:122
+msgid "_About"
+msgstr ""
+
+#: src/ui_appindicator.c:129
+msgid "_Quit"
+msgstr ""
+
+#: src/ui_appindicator.c:220
+#, c-format
+msgid "building menus failed: %s"
+msgstr ""
+
+#: src/ui_notify.c:48
+msgid "gettimeofday failed."
+msgstr ""
+
+#: src/ui_notify.c:77
+msgid "Temperature alert"
+msgstr ""
+
+#: src/ui_notify.c:79
+msgid "Fan alert"
+msgstr ""
+
+#: src/ui_sensorpref.c:248
+msgid "Unknown"
+msgstr ""
--- /dev/null
+# Serbian translation for psensor
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the psensor package.
+# Maintained by Jean-Philippe Orsini <jeanfi@gmail.com>
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: psensor\n"
+"Report-Msgid-Bugs-To: jeanfi@gmail.com\n"
+"POT-Creation-Date: 2013-10-16 09:19+0200\n"
+"PO-Revision-Date: 2012-05-03 02:31+0000\n"
+"Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
+"Language-Team: Serbian <sr@li.org>\n"
+"Language: sr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2012-07-02 08:28+0000\n"
+"X-Generator: Launchpad (build 15520)\n"
+
+#: src/glade/psensor.glade:5 src/ui_appindicator.c:124
+msgid "About"
+msgstr "О програму"
+
+#: src/glade/psensor.glade:9 src/ui_sensorlist.c:209 src/ui_appindicator.c:112
+msgid "Preferences"
+msgstr "Поставке"
+
+#: src/glade/psensor.glade:13 src/ui_appindicator.c:130
+msgid "Quit"
+msgstr "Изађи"
+
+#: src/glade/psensor.glade:17
+msgid "Sensor Preferences"
+msgstr ""
+
+#: src/glade/psensor.glade:96
+msgid "Psensor - Temperature Monitor"
+msgstr ""
+
+#: src/glade/psensor.glade:111
+msgid "_Psensor"
+msgstr ""
+
+#: src/glade/psensor.glade:158
+msgid "_Help"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:7
+msgid "Edit Preferences"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:72
+msgid "Position of sensors table:"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:81
+msgid "Hide window decoration"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:98
+msgid "Keep window below"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:115
+msgid "Enable menu"
+msgstr "Укључено"
+
+#: src/glade/psensor-pref.glade:132
+msgid "Enable Unity Launcher counter"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:149
+msgid "Hide window on startup"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:166
+msgid "Restore window position and size"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:186
+msgid "Temperature unit:"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:238
+msgid "Interface"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:276
+msgid "Foreground:"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:291
+msgid "Background:"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:325
+msgid "Background opacity:"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:348
+msgid "<i>Min</i>"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:375
+msgid "<i>Max</i>"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:401
+msgid "Colors"
+msgstr "У боји"
+
+#: src/glade/psensor-pref.glade:419
+msgid "Monitoring duration:"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:457
+msgid "minute(s)"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:474 src/glade/psensor-pref.glade:626
+msgid "second(s)"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:510
+msgid "Update interval:"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:528
+msgid "Measures"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:564 src/glade/sensor-edit.glade:169
+#: src/ui_sensorlist.c:334
+msgid "Graph"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:588
+msgid "Measure update interval:"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:637
+msgid "Enable sensors logging"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:684
+msgid "Sensors logging interval"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:701
+msgid "seconds(s)"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:718
+msgid "Script executed when an alarm is raised"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:751
+msgid "Sensors"
+msgstr "Сензор"
+
+#: src/glade/sensor-edit.glade:19
+msgid "Edit Sensor Preferences"
+msgstr ""
+
+#: src/glade/sensor-edit.glade:87
+msgid "Name"
+msgstr ""
+
+#: src/glade/sensor-edit.glade:138
+msgid "Type:"
+msgstr ""
+
+#: src/glade/sensor-edit.glade:153 src/glade/sensor-edit.glade:294
+#: src/glade/sensor-edit.glade:388 src/glade/sensor-edit.glade:459
+#: src/glade/sensor-edit.glade:508 src/lib/psensor.c:486 src/ui_notify.c:81
+msgid "N/A"
+msgstr "Недоступно"
+
+#: src/glade/sensor-edit.glade:187
+msgid "Color:"
+msgstr ""
+
+#: src/glade/sensor-edit.glade:201
+msgid "Alarm"
+msgstr ""
+
+#: src/glade/sensor-edit.glade:216
+msgid "Activate desktop notifications"
+msgstr ""
+
+#: src/glade/sensor-edit.glade:236
+msgid "Sensor Information"
+msgstr ""
+
+#: src/glade/sensor-edit.glade:249
+msgid "Draw sensor curve"
+msgstr ""
+
+#: src/glade/sensor-edit.glade:333
+msgid "High threshold:"
+msgstr ""
+
+#: src/glade/sensor-edit.glade:348
+msgid "Low threshold:"
+msgstr ""
+
+#: src/glade/sensor-edit.glade:409
+msgid "Ubuntu Application Indicator"
+msgstr ""
+
+#: src/glade/sensor-edit.glade:424
+msgid "Display sensor in the Application Indicator menu"
+msgstr ""
+
+#: src/glade/sensor-edit.glade:444
+msgid "Chip:"
+msgstr ""
+
+#: src/glade/sensor-edit.glade:489
+msgid "Id:"
+msgstr ""
+
+#: src/glade/sensor-edit.glade:523
+msgid "Details"
+msgstr ""
+
+#: src/glade/sensor-edit.glade:541
+msgid "Name:"
+msgstr ""
+
+#: src/lib/amd.c:170
+msgid "AMD: cannot found ADL library."
+msgstr ""
+
+#: src/lib/amd.c:197
+msgid "AMD: missing ADL's API."
+msgstr ""
+
+#: src/lib/amd.c:207
+msgid "AMD: failed to initialize ADL."
+msgstr ""
+
+#: src/lib/amd.c:213
+msgid "AMD: cannot get the number of adapters."
+msgstr ""
+
+#: src/lib/amd.c:252
+#, c-format
+msgid "Number of AMD/ATI adapters: %d"
+msgstr ""
+
+#: src/lib/amd.c:253
+#, c-format
+msgid "Number of active AMD/ATI adapters: %d"
+msgstr ""
+
+#: src/lib/hdd_atasmart.c:152
+#, c-format
+msgid "atasmart: sk_disk_open() failure: %s."
+msgstr ""
+
+#: src/lib/hdd_hddtemp.c:59
+msgid "hddtemp: failed to open socket."
+msgstr ""
+
+#: src/lib/hdd_hddtemp.c:72
+msgid "hddtemp: failed to open connection."
+msgstr ""
+
+#: src/lib/hdd_hddtemp.c:186 src/lib/hdd_hddtemp.c:256
+#, c-format
+msgid "hddtemp: wrong string: %s."
+msgstr ""
+
+#: src/lib/lmsensor.c:42
+#, c-format
+msgid "lmsensor: cannot get value of subfeature %s: %s."
+msgstr ""
+
+#: src/lib/lmsensor.c:123
+msgid "lmsensor: lmsensor_psensor_create failure: wrong feature type."
+msgstr ""
+
+#: src/lib/lmsensor.c:218
+#, c-format
+msgid "lmsensor: initialization failure: %s."
+msgstr ""
+
+#: src/lib/log.c:43
+#, c-format
+msgid "Cannot open log file: %s"
+msgstr ""
+
+#: src/lib/nvidia.c:54
+msgid ""
+"NVIDIA proprietary driver not used or cannot retrieve NVIDIA GPU temperature."
+msgstr ""
+
+#: src/lib/nvidia.c:97
+msgid "Cannot open connection to X11 server."
+msgstr ""
+
+#: src/lib/nvidia.c:105
+msgid "Failed to retrieve NVIDIA information."
+msgstr ""
+
+#: src/lib/psensor.c:482 tests/test_psensor_type_to_unit_str.c:62
+msgid "RPM"
+msgstr ""
+
+#: src/lib/psensor.c:484
+msgid "%"
+msgstr ""
+
+#: src/lib/slog.c:68
+msgid "HOME variable not set."
+msgstr ""
+
+#: src/lib/slog.c:78
+msgid "Sensor log file already open."
+msgstr ""
+
+#: src/lib/slog.c:87
+#, c-format
+msgid "Cannot open sensor log file: %s."
+msgstr ""
+
+#: src/lib/slog.c:118
+msgid "Sensor log file not open."
+msgstr ""
+
+#: src/lib/slog.c:174
+msgid "Sensor log not open, cannot close."
+msgstr ""
+
+#: src/main.c:77
+#, c-format
+msgid ""
+"Copyright (C) %s jeanfi@gmail.com\n"
+"License GPLv2: GNU GPL version 2 or later <http://www.gnu.org/licenses/old-"
+"licenses/gpl-2.0.html>\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+
+#: src/main.c:88 src/server/server.c:94
+#, c-format
+msgid "Usage: %s [OPTION]...\n"
+msgstr "Употреба: %s [ОПЦИЈА]...\n"
+
+#: src/main.c:90
+msgid ""
+"Psensor is a GTK+ application for monitoring hardware sensors, including "
+"temperatures and fan speeds."
+msgstr ""
+
+#: src/main.c:94
+msgid "Options:"
+msgstr "Опције:"
+
+#: src/main.c:95
+msgid ""
+" -h, --help display this help and exit\n"
+" -v, --version display version information and exit"
+msgstr ""
+
+#: src/main.c:101
+msgid ""
+" -u, --url=URL the URL of the psensor-server,\n"
+" example: http://hostname:3131"
+msgstr ""
+
+#: src/main.c:104
+msgid ""
+" --use-libatasmart use atasmart library for disk monitoring instead of\n"
+" hddtemp daemon"
+msgstr ""
+
+#: src/main.c:107
+msgid " -n, --new-instance force the creation of a new Psensor application"
+msgstr ""
+
+#: src/main.c:110
+msgid " -d, --debug=LEVEL set the debug level, integer between 0 and 3"
+msgstr ""
+
+#: src/main.c:115 src/server/server.c:117
+#, c-format
+msgid "Report bugs to: %s\n"
+msgstr "Пријавите грешку на: %s\n"
+
+#: src/main.c:117 src/server/server.c:119
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "%s матична страна: <%s>\n"
+
+#: src/main.c:454
+msgid "Psensor has not been compiled with remote sensor support."
+msgstr ""
+
+#: src/main.c:517
+msgid "Enables debug mode."
+msgstr ""
+
+#: src/main.c:529 src/server/server.c:380
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "Покушајте„%s --help“ за више информација.\n"
+
+#: src/main.c:542
+msgid "A Psensor instance already exists."
+msgstr ""
+
+#: src/rsensor.c:107
+#, c-format
+msgid "Fail to connect to: %s"
+msgstr ""
+
+#: src/rsensor.c:144
+#, c-format
+msgid "Invalid content: %s"
+msgstr ""
+
+#: src/rsensor.c:184
+#, c-format
+msgid "Invalid JSON: %s"
+msgstr ""
+
+#: src/server/server.c:54
+msgid "<html><body><p>Server stop requested</p></body></html>"
+msgstr ""
+
+#: src/server/server.c:60
+msgid ""
+"<html><body><p>Page not found - Go to <a href='/'>Main page</a></p></body>"
+msgstr ""
+
+#: src/server/server.c:84
+#, c-format
+msgid ""
+"Copyright (C) %s jeanfi@gmail.com\n"
+"License GPLv2: GNU GPL version 2 or later <http://www.gnu.org/licenses/old-"
+"licenses/gpl-2.0.html>\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+
+#: src/server/server.c:96
+msgid ""
+"psensor-server is an HTTP server for monitoring hardware sensors remotely."
+msgstr ""
+
+#: src/server/server.c:101
+msgid ""
+" -h, --help\t\tdisplay this help and exit\n"
+" -v, --version\t\tdisplay version information and exit"
+msgstr ""
+
+#: src/server/server.c:105
+msgid ""
+" -p,--port=PORT\twebserver port\n"
+" -w,--wdir=DIR\t\tdirectory containing webserver pages"
+msgstr ""
+
+#: src/server/server.c:109
+msgid " -d, --debug=LEVEL set the debug level, integer between 0 and 3"
+msgstr ""
+
+#: src/server/server.c:111
+msgid " -l, --log-file=PATH set the log file to PATH"
+msgstr ""
+
+#: src/server/server.c:112
+msgid " --sensor-log-file=PATH set the sensor log file to PATH"
+msgstr ""
+
+#: src/server/server.c:113
+msgid " --sensor-log-interval=S set the sensor log interval to S (seconds)"
+msgstr ""
+
+#: src/server/server.c:297
+#, c-format
+msgid "HTTP Request: %s"
+msgstr ""
+
+#: src/server/server.c:360
+#, c-format
+msgid "Enables debug mode: %d"
+msgstr ""
+
+#: src/server/server.c:402
+msgid "No sensors detected."
+msgstr ""
+
+#: src/server/server.c:409
+msgid "Failed to create Web server."
+msgstr ""
+
+#: src/server/server.c:413
+#, c-format
+msgid "Web server started on port: %d"
+msgstr ""
+
+#: src/server/server.c:414
+#, c-format
+msgid "WWW directory: %s"
+msgstr ""
+
+#: src/server/server.c:415
+#, c-format
+msgid "URL: http://localhost:%d"
+msgstr ""
+
+#: src/server/server.c:425
+msgid "Failed to activate logging of sensors."
+msgstr ""
+
+#: src/ui.c:84
+msgid "Psensor is a GTK+ application for monitoring hardware sensors"
+msgstr ""
+
+#: src/ui.c:87
+msgid ""
+"Copyright(c) 2010-2013\n"
+"jeanfi@gmail.com"
+msgstr ""
+
+#: src/ui.c:90
+msgid "About Psensor"
+msgstr "О Псензору"
+
+#: src/ui.c:93
+msgid "Psensor Homepage"
+msgstr "Матична страница Псензора"
+
+#: src/ui.c:217
+msgid "Failed to load Psensor icon."
+msgstr ""
+
+#: src/ui_sensorlist.c:245
+msgid "Select foreground color"
+msgstr "Одаберите боју текста"
+
+#: src/ui_sensorlist.c:297
+msgid "Sensor"
+msgstr "Сензор"
+
+#: src/ui_sensorlist.c:303
+msgid "Value"
+msgstr ""
+
+#: src/ui_sensorlist.c:309
+msgid "Min"
+msgstr "Најмање"
+
+#: src/ui_sensorlist.c:315
+msgid "Max"
+msgstr "Највише"
+
+#: src/ui_sensorlist.c:322
+msgid "Color"
+msgstr "У боји"
+
+#: src/ui_appindicator.c:106
+msgid "_Show"
+msgstr ""
+
+#: src/ui_appindicator.c:107
+msgid "Show"
+msgstr ""
+
+#: src/ui_appindicator.c:111
+msgid "_Preferences"
+msgstr "_Поставке"
+
+#: src/ui_appindicator.c:116
+msgid "S_ensor Preferences"
+msgstr ""
+
+#: src/ui_appindicator.c:118
+msgid "SensorPreferences"
+msgstr ""
+
+#: src/ui_appindicator.c:122
+msgid "_About"
+msgstr "О _програму"
+
+#: src/ui_appindicator.c:129
+msgid "_Quit"
+msgstr "_Изађи"
+
+#: src/ui_appindicator.c:220
+#, c-format
+msgid "building menus failed: %s"
+msgstr ""
+
+#: src/ui_notify.c:48
+msgid "gettimeofday failed."
+msgstr ""
+
+#: src/ui_notify.c:77
+msgid "Temperature alert"
+msgstr ""
+
+#: src/ui_notify.c:79
+msgid "Fan alert"
+msgstr ""
+
+#: src/ui_sensorpref.c:248
+msgid "Unknown"
+msgstr ""
+
+#~ msgid "Sensor Name"
+#~ msgstr "Назив сензора"
+
+#~ msgid "Enabled"
+#~ msgstr "Укључено"
+
+#, fuzzy
+#~ msgid "Enable log of measures"
+#~ msgstr "Укључено"
+
+#, fuzzy
+#~ msgid "Enable indicator"
+#~ msgstr "Укључено"
msgstr ""
"Project-Id-Version: psensor\n"
"Report-Msgid-Bugs-To: jeanfi@gmail.com\n"
-"POT-Creation-Date: 2012-03-26 10:30+0200\n"
-"PO-Revision-Date: 2011-04-10 13:11+0000\n"
+"POT-Creation-Date: 2013-10-16 09:19+0200\n"
+"PO-Revision-Date: 2012-04-28 11:24+0000\n"
"Last-Translator: zeugma <Unknown>\n"
"Language-Team: Turkish <tr@li.org>\n"
"Language: tr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-04-11 05:41+0000\n"
-"X-Generator: Launchpad (build 12735)\n"
+"X-Launchpad-Export-Date: 2012-07-02 08:28+0000\n"
+"X-Generator: Launchpad (build 15520)\n"
-#: src/main.c:77
-#, c-format
-msgid ""
-"Copyright (C) %s jeanfi@gmail.com\n"
-"License GPLv2: GNU GPL version 2 or later <http://www.gnu.org/licenses/old-"
-"licenses/gpl-2.0.html>\n"
-"This is free software: you are free to change and redistribute it.\n"
-"There is NO WARRANTY, to the extent permitted by law.\n"
+#: src/glade/psensor.glade:5 src/ui_appindicator.c:124
+msgid "About"
msgstr ""
-#: src/main.c:88 src/server/server.c:86
-#, c-format
-msgid "Usage: %s [OPTION]...\n"
-msgstr "Kullanım: %s [SEÇENEK]...\n"
+#: src/glade/psensor.glade:9 src/ui_sensorlist.c:209 src/ui_appindicator.c:112
+msgid "Preferences"
+msgstr "Tercihler"
-#: src/main.c:90
-msgid ""
-"psensor is a GTK application for monitoring hardware sensors, including "
-"temperatures and fan speeds."
+#: src/glade/psensor.glade:13 src/ui_appindicator.c:130
+msgid "Quit"
msgstr ""
-#: src/main.c:94
-msgid "Options:"
-msgstr ""
+#: src/glade/psensor.glade:17
+msgid "Sensor Preferences"
+msgstr "Tercihleri düzenle"
-#: src/main.c:95
-msgid ""
-" -h, --help display this help and exit\n"
-" -v, --version display version information and exit"
+#: src/glade/psensor.glade:96
+msgid "Psensor - Temperature Monitor"
msgstr ""
-#: src/main.c:100
-msgid ""
-" -u, --url=URL the URL of the psensor-server, example: http://"
-"hostname:3131"
+#: src/glade/psensor.glade:111
+msgid "_Psensor"
msgstr ""
-#: src/main.c:105
-msgid " -d, --debug=LEVEL set the debug level, integer between 0 and 3"
+#: src/glade/psensor.glade:158
+msgid "_Help"
msgstr ""
-#: src/main.c:110 src/server/server.c:104
-#, c-format
-msgid "Report bugs to: %s\n"
-msgstr "Hataları rapor et:%s\n"
+#: src/glade/psensor-pref.glade:7
+msgid "Edit Preferences"
+msgstr "Tercihleri düzenle"
-#: src/main.c:112 src/server/server.c:106
-#, c-format
-msgid "%s home page: <%s>\n"
-msgstr "%s ana sayfa: <%s>\n"
+#: src/glade/psensor-pref.glade:72
+msgid "Position of sensors table:"
+msgstr ""
-#: src/main.c:425
-msgid "Enables debug mode."
+#: src/glade/psensor-pref.glade:81
+msgid "Hide window decoration"
msgstr ""
-#: src/main.c:434 src/server/server.c:352
-#, c-format
-msgid "Try `%s --help' for more information.\n"
-msgstr "Daha fazla bilgi için `%s --help' yazın.\n"
+#: src/glade/psensor-pref.glade:98
+msgid "Keep window below"
+msgstr ""
-#: src/main.c:469
-#, c-format
-msgid "ERROR: Not compiled with remote sensor support.\n"
+#: src/glade/psensor-pref.glade:115
+msgid "Enable menu"
msgstr ""
-#: src/ui.c:80
-msgid "Psensor is a GTK+ application for monitoring hardware sensors"
+#: src/glade/psensor-pref.glade:132
+msgid "Enable Unity Launcher counter"
msgstr ""
-#: src/ui.c:83
-msgid ""
-"Copyright(c) 2010-2012\n"
-"jeanfi@gmail.com"
+#: src/glade/psensor-pref.glade:149
+msgid "Hide window on startup"
msgstr ""
-#: src/ui.c:86
-msgid "About Psensor"
+#: src/glade/psensor-pref.glade:166
+msgid "Restore window position and size"
msgstr ""
-#: src/ui.c:89
-msgid "Psensor Homepage"
+#: src/glade/psensor-pref.glade:186
+msgid "Temperature unit:"
msgstr ""
-#: src/ui.c:144
-#, fuzzy
-msgid "_Preferences"
-msgstr "Tercihler"
+#: src/glade/psensor-pref.glade:238
+msgid "Interface"
+msgstr "Arayüz"
-#: src/ui.c:145 src/ui_sensorlist.c:200
-msgid "Preferences"
-msgstr "Tercihler"
+#: src/glade/psensor-pref.glade:276
+msgid "Foreground:"
+msgstr ""
-#: src/ui.c:149
-#, fuzzy
-msgid "_Sensor Preferences"
-msgstr "Tercihleri düzenle"
+#: src/glade/psensor-pref.glade:291
+msgid "Background:"
+msgstr "Arkaplan:"
-#: src/ui.c:150
-#, fuzzy
-msgid "Sensor Preferences"
-msgstr "Tercihleri düzenle"
+#: src/glade/psensor-pref.glade:325
+msgid "Background opacity:"
+msgstr "Arkaplan belirginliği:"
-#: src/ui.c:154
-msgid "_Quit"
+#: src/glade/psensor-pref.glade:348
+msgid "<i>Min</i>"
msgstr ""
-#: src/ui.c:154
-msgid "Quit"
+#: src/glade/psensor-pref.glade:375
+msgid "<i>Max</i>"
msgstr ""
-#: src/ui.c:160
-msgid "_About"
+#: src/glade/psensor-pref.glade:401
+msgid "Colors"
+msgstr "Renk"
+
+#: src/glade/psensor-pref.glade:419
+msgid "Monitoring duration:"
msgstr ""
-#: src/ui.c:161
-msgid "About"
+#: src/glade/psensor-pref.glade:457
+msgid "minute(s)"
msgstr ""
-#: src/ui.c:183 src/ui_appindicator.c:176
-#, c-format
-msgid "building menus failed: %s"
+#: src/glade/psensor-pref.glade:474 src/glade/psensor-pref.glade:626
+msgid "second(s)"
msgstr ""
-#: src/ui.c:231
-msgid "Psensor - Temperature Monitor"
+#: src/glade/psensor-pref.glade:510
+msgid "Update interval:"
msgstr ""
-#: src/ui.c:248
-#, c-format
-msgid "ERROR: Failed to load psensor icon.\n"
+#: src/glade/psensor-pref.glade:528
+msgid "Measures"
msgstr ""
-#: src/ui_sensorlist.c:231
-msgid "Select foreground color"
+#: src/glade/psensor-pref.glade:564 src/glade/sensor-edit.glade:169
+#: src/ui_sensorlist.c:334
+msgid "Graph"
+msgstr "Grafik"
+
+#: src/glade/psensor-pref.glade:588
+msgid "Measure update interval:"
msgstr ""
-#: src/ui_sensorlist.c:308 src/glade/psensor-pref.glade:241
-msgid "Sensor"
-msgstr "Algılayıcı"
+#: src/glade/psensor-pref.glade:637
+msgid "Enable sensors logging"
+msgstr ""
-#: src/ui_sensorlist.c:314
-msgid "Value"
+#: src/glade/psensor-pref.glade:684
+msgid "Sensors logging interval"
msgstr ""
-#: src/ui_sensorlist.c:320
-msgid "Min"
+#: src/glade/psensor-pref.glade:701
+msgid "seconds(s)"
msgstr ""
-#: src/ui_sensorlist.c:326
-msgid "Max"
+#: src/glade/psensor-pref.glade:718
+msgid "Script executed when an alarm is raised"
msgstr ""
-#: src/ui_sensorlist.c:333
-msgid "Color"
-msgstr "Renk"
+#: src/glade/psensor-pref.glade:751
+msgid "Sensors"
+msgstr "Algılayıcı"
-#: src/ui_sensorlist.c:345
-msgid "Enabled"
+#: src/glade/sensor-edit.glade:19
+msgid "Edit Sensor Preferences"
+msgstr "Tercihleri düzenle"
+
+#: src/glade/sensor-edit.glade:87
+msgid "Name"
msgstr ""
-#: src/ui_sensorlist.c:374 src/ui_sensorlist.c:375 src/ui_sensorlist.c:376
-#: src/glade/sensor-edit.glade:87 src/glade/sensor-edit.glade:153
+#: src/glade/sensor-edit.glade:138
+msgid "Type:"
+msgstr "Tür:"
+
+#: src/glade/sensor-edit.glade:153 src/glade/sensor-edit.glade:294
+#: src/glade/sensor-edit.glade:388 src/glade/sensor-edit.glade:459
+#: src/glade/sensor-edit.glade:508 src/lib/psensor.c:486 src/ui_notify.c:81
msgid "N/A"
msgstr ""
-#: src/ui_notify.c:45
-msgid "gettimeofday failed"
+#: src/glade/sensor-edit.glade:187
+msgid "Color:"
+msgstr "Renk :"
+
+#: src/glade/sensor-edit.glade:201
+msgid "Alarm"
+msgstr "Alarm"
+
+#: src/glade/sensor-edit.glade:216
+msgid "Activate desktop notifications"
msgstr ""
-#: src/ui_notify.c:67 src/ui_notify.c:69
-msgid "Temperature alert"
+#: src/glade/sensor-edit.glade:236
+msgid "Sensor Information"
msgstr ""
-#: src/ui_sensorpref.c:397
-#, fuzzy
-msgid "Sensor Name"
-msgstr "Algılayıcı"
+#: src/glade/sensor-edit.glade:249
+msgid "Draw sensor curve"
+msgstr ""
-#: src/rsensor.c:107
-#, c-format
-msgid "Fail to connect to: %s"
+#: src/glade/sensor-edit.glade:333
+msgid "High threshold:"
msgstr ""
-#: src/rsensor.c:144
-#, c-format
-msgid "Invalid content: %s"
+#: src/glade/sensor-edit.glade:348
+msgid "Low threshold:"
msgstr ""
-#: src/rsensor.c:184
-#, c-format
-msgid "Invalid JSON: %s"
+#: src/glade/sensor-edit.glade:409
+msgid "Ubuntu Application Indicator"
msgstr ""
-#: src/server/server.c:53
-msgid ""
-"<html><body><p>Page not found - Go to <a href='/'>Main page</a></p></body>"
+#: src/glade/sensor-edit.glade:424
+msgid "Display sensor in the Application Indicator menu"
msgstr ""
-#: src/server/server.c:76
-#, c-format
-msgid ""
-"Copyright (C) %s jeanfi@gmail.com\n"
-"License GPLv2: GNU GPL version 2 or later <http://www.gnu.org/licenses/old-"
-"licenses/gpl-2.0.html>\n"
-"This is free software: you are free to change and redistribute it.\n"
-"There is NO WARRANTY, to the extent permitted by law.\n"
+#: src/glade/sensor-edit.glade:444
+msgid "Chip:"
msgstr ""
-#: src/server/server.c:88
-msgid ""
-"psensor-server is an HTTP server for monitoring hardware sensors remotely."
+#: src/glade/sensor-edit.glade:489
+msgid "Id:"
msgstr ""
-#: src/server/server.c:93
-msgid ""
-" -h, --help\t\tdisplay this help and exit\n"
-" -v, --version\t\tdisplay version information and exit"
+#: src/glade/sensor-edit.glade:523
+msgid "Details"
msgstr ""
-#: src/server/server.c:98
-msgid ""
-" -d,--debug\t\trun in debug mode\n"
-" -p,--port=PORT\twebserver port\n"
-" -w,--wdir=DIR\t\tdirectory containing webserver pages"
+#: src/glade/sensor-edit.glade:541
+msgid "Name:"
+msgstr "İsim:"
+
+#: src/lib/amd.c:170
+msgid "AMD: cannot found ADL library."
msgstr ""
-#: src/server/server.c:175
-msgid "<html><body><p>Server stop requested</p></body></html>"
+#: src/lib/amd.c:197
+msgid "AMD: missing ADL's API."
msgstr ""
-#: src/server/server.c:290
-#, c-format
-msgid "HTTP Request: %s\n"
+#: src/lib/amd.c:207
+msgid "AMD: failed to initialize ADL."
msgstr ""
-#: src/server/server.c:366
-#, c-format
-msgid "ERROR: no sensors detected\n"
+#: src/lib/amd.c:213
+msgid "AMD: cannot get the number of adapters."
msgstr ""
-#: src/server/server.c:373
+#: src/lib/amd.c:252
#, c-format
-msgid "ERROR: Fail to create web server\n"
+msgid "Number of AMD/ATI adapters: %d"
msgstr ""
-#: src/server/server.c:377
+#: src/lib/amd.c:253
#, c-format
-msgid "Web server started on port: %d"
+msgid "Number of active AMD/ATI adapters: %d"
msgstr ""
-#: src/server/server.c:378
+#: src/lib/hdd_atasmart.c:152
#, c-format
-msgid "WWW directory: %s"
+msgid "atasmart: sk_disk_open() failure: %s."
msgstr ""
-#: src/server/server.c:379
-#, c-format
-msgid "URL: http://localhost:%d"
+#: src/lib/hdd_hddtemp.c:59
+msgid "hddtemp: failed to open socket."
msgstr ""
-#: src/lib/amd.c:151
-#, c-format
-msgid "ERROR: ADL library not found!\n"
+#: src/lib/hdd_hddtemp.c:72
+msgid "hddtemp: failed to open connection."
msgstr ""
-#: src/lib/amd.c:176
+#: src/lib/hdd_hddtemp.c:186 src/lib/hdd_hddtemp.c:256
#, c-format
-msgid "ERROR: ADL's API is missing!\n"
+msgid "hddtemp: wrong string: %s."
msgstr ""
-#: src/lib/amd.c:185
+#: src/lib/lmsensor.c:42
#, c-format
-msgid "ERROR: ADL Initialization Error!\n"
+msgid "lmsensor: cannot get value of subfeature %s: %s."
msgstr ""
-#: src/lib/amd.c:193
-#, c-format
-msgid "ERROR: Cannot get the number of adapters!\n"
+#: src/lib/lmsensor.c:123
+msgid "lmsensor: lmsensor_psensor_create failure: wrong feature type."
msgstr ""
-#: src/lib/hdd.c:58
+#: src/lib/lmsensor.c:218
#, c-format
-msgid "ERROR: hdd fetch, failed to open socket\n"
+msgid "lmsensor: initialization failure: %s."
msgstr ""
-#: src/lib/hdd.c:72
+#: src/lib/log.c:43
#, c-format
-msgid "ERROR: hdd fetch, failed to open connection\n"
+msgid "Cannot open log file: %s"
msgstr ""
-#: src/lib/hdd.c:182
-#, c-format
-msgid "ERROR: wrong hdd string: %s"
+#: src/lib/nvidia.c:54
+msgid ""
+"NVIDIA proprietary driver not used or cannot retrieve NVIDIA GPU temperature."
+msgstr ""
+
+#: src/lib/nvidia.c:97
+msgid "Cannot open connection to X11 server."
+msgstr ""
+
+#: src/lib/nvidia.c:105
+msgid "Failed to retrieve NVIDIA information."
msgstr ""
-#: src/lib/hdd.c:252
+#: src/lib/psensor.c:482 tests/test_psensor_type_to_unit_str.c:62
+msgid "RPM"
+msgstr ""
+
+#: src/lib/psensor.c:484
+msgid "%"
+msgstr ""
+
+#: src/lib/slog.c:68
+msgid "HOME variable not set."
+msgstr ""
+
+#: src/lib/slog.c:78
+msgid "Sensor log file already open."
+msgstr ""
+
+#: src/lib/slog.c:87
#, c-format
-msgid "ERROR: wrong hdd string: %s\n"
+msgid "Cannot open sensor log file: %s."
msgstr ""
-#: src/lib/log.c:37
+#: src/lib/slog.c:118
+msgid "Sensor log file not open."
+msgstr ""
+
+#: src/lib/slog.c:174
+msgid "Sensor log not open, cannot close."
+msgstr ""
+
+#: src/main.c:77
#, c-format
-msgid "Cannot open log file: %s"
+msgid ""
+"Copyright (C) %s jeanfi@gmail.com\n"
+"License GPLv2: GNU GPL version 2 or later <http://www.gnu.org/licenses/old-"
+"licenses/gpl-2.0.html>\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
msgstr ""
-#: src/lib/nvidia.c:54
+#: src/main.c:88 src/server/server.c:94
#, c-format
-msgid "ERROR: failed to retrieve nvidia temperature\n"
+msgid "Usage: %s [OPTION]...\n"
+msgstr "Kullanım: %s [SEÇENEK]...\n"
+
+#: src/main.c:90
+msgid ""
+"Psensor is a GTK+ application for monitoring hardware sensors, including "
+"temperatures and fan speeds."
+msgstr ""
+
+#: src/main.c:94
+msgid "Options:"
+msgstr ""
+
+#: src/main.c:95
+msgid ""
+" -h, --help display this help and exit\n"
+" -v, --version display version information and exit"
+msgstr ""
+
+#: src/main.c:101
+msgid ""
+" -u, --url=URL the URL of the psensor-server,\n"
+" example: http://hostname:3131"
msgstr ""
-#: src/lib/nvidia.c:91
+#: src/main.c:104
+msgid ""
+" --use-libatasmart use atasmart library for disk monitoring instead of\n"
+" hddtemp daemon"
+msgstr ""
+
+#: src/main.c:107
+msgid " -n, --new-instance force the creation of a new Psensor application"
+msgstr ""
+
+#: src/main.c:110
+msgid " -d, --debug=LEVEL set the debug level, integer between 0 and 3"
+msgstr ""
+
+#: src/main.c:115 src/server/server.c:117
+#, c-format
+msgid "Report bugs to: %s\n"
+msgstr "Hataları rapor et:%s\n"
+
+#: src/main.c:117 src/server/server.c:119
#, c-format
-msgid "ERROR: Cannot open connection to X Server\n"
+msgid "%s home page: <%s>\n"
+msgstr "%s ana sayfa: <%s>\n"
+
+#: src/main.c:454
+msgid "Psensor has not been compiled with remote sensor support."
+msgstr ""
+
+#: src/main.c:517
+msgid "Enables debug mode."
msgstr ""
-#: src/lib/nvidia.c:99
+#: src/main.c:529 src/server/server.c:380
#, c-format
-msgid "ERROR: Cannot retrieve NVidia information\n"
+msgid "Try `%s --help' for more information.\n"
+msgstr "Daha fazla bilgi için `%s --help' yazın.\n"
+
+#: src/main.c:542
+msgid "A Psensor instance already exists."
msgstr ""
-#: src/lib/lmsensor.c:43
+#: src/rsensor.c:107
#, c-format
-msgid "ERROR: Can't get value of subfeature %s: %s\n"
+msgid "Fail to connect to: %s"
msgstr ""
-#: src/lib/lmsensor.c:125
+#: src/rsensor.c:144
#, c-format
-msgid "ERROR: create_sensor, wrong feature type\n"
+msgid "Invalid content: %s"
msgstr ""
-#: src/lib/lmsensor.c:208
+#: src/rsensor.c:184
#, c-format
-msgid "ERROR: lm-sensors initialization failure: %s\n"
+msgid "Invalid JSON: %s"
msgstr ""
-#: src/lib/psensor.c:430
-msgid "C"
+#: src/server/server.c:54
+msgid "<html><body><p>Server stop requested</p></body></html>"
msgstr ""
-#: src/lib/psensor.c:433
-msgid "RPM"
+#: src/server/server.c:60
+msgid ""
+"<html><body><p>Page not found - Go to <a href='/'>Main page</a></p></body>"
msgstr ""
-#: src/lib/psensor.c:436
-msgid "%"
+#: src/server/server.c:84
+#, c-format
+msgid ""
+"Copyright (C) %s jeanfi@gmail.com\n"
+"License GPLv2: GNU GPL version 2 or later <http://www.gnu.org/licenses/old-"
+"licenses/gpl-2.0.html>\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
msgstr ""
-#: src/glade/psensor-pref.glade:7
-msgid "Edit Preferences"
-msgstr "Tercihleri düzenle"
+#: src/server/server.c:96
+msgid ""
+"psensor-server is an HTTP server for monitoring hardware sensors remotely."
+msgstr ""
-#: src/glade/psensor-pref.glade:70
-msgid "Graph Colors"
-msgstr "Grafik Renkleri"
+#: src/server/server.c:101
+msgid ""
+" -h, --help\t\tdisplay this help and exit\n"
+" -v, --version\t\tdisplay version information and exit"
+msgstr ""
-#: src/glade/psensor-pref.glade:86
-#, fuzzy
-msgid "Foreground:"
-msgstr "Arkaplan:"
+#: src/server/server.c:105
+msgid ""
+" -p,--port=PORT\twebserver port\n"
+" -w,--wdir=DIR\t\tdirectory containing webserver pages"
+msgstr ""
-#: src/glade/psensor-pref.glade:100
-msgid "Background:"
-msgstr "Arkaplan:"
+#: src/server/server.c:109
+msgid " -d, --debug=LEVEL set the debug level, integer between 0 and 3"
+msgstr ""
-#: src/glade/psensor-pref.glade:114
-msgid "Background opacity:"
-msgstr "Arkaplan belirginliği:"
+#: src/server/server.c:111
+msgid " -l, --log-file=PATH set the log file to PATH"
+msgstr ""
-#: src/glade/psensor-pref.glade:165 src/glade/sensor-edit.glade:184
-msgid "Graph"
-msgstr "Grafik"
+#: src/server/server.c:112
+msgid " --sensor-log-file=PATH set the sensor log file to PATH"
+msgstr ""
-#: src/glade/psensor-pref.glade:183
-msgid "Update interval:"
+#: src/server/server.c:113
+msgid " --sensor-log-interval=S set the sensor log interval to S (seconds)"
msgstr ""
-#: src/glade/psensor-pref.glade:197
-msgid "Monitoring duration:"
+#: src/server/server.c:297
+#, c-format
+msgid "HTTP Request: %s"
msgstr ""
-#: src/glade/psensor-pref.glade:210 src/glade/psensor-pref.glade:272
-msgid "second(s)"
+#: src/server/server.c:360
+#, c-format
+msgid "Enables debug mode: %d"
msgstr ""
-#: src/glade/psensor-pref.glade:225
-msgid "minute(s)"
+#: src/server/server.c:402
+msgid "No sensors detected."
msgstr ""
-#: src/glade/psensor-pref.glade:259
-msgid "Measure update interval:"
+#: src/server/server.c:409
+msgid "Failed to create Web server."
msgstr ""
-#: src/glade/psensor-pref.glade:288
-msgid "Interface"
-msgstr "Arayüz"
+#: src/server/server.c:413
+#, c-format
+msgid "Web server started on port: %d"
+msgstr ""
-#: src/glade/psensor-pref.glade:306
-msgid "Position of sensors table:"
+#: src/server/server.c:414
+#, c-format
+msgid "WWW directory: %s"
msgstr ""
-#: src/glade/psensor-pref.glade:317
-msgid "Hide window decoration"
+#: src/server/server.c:415
+#, c-format
+msgid "URL: http://localhost:%d"
msgstr ""
-#: src/glade/psensor-pref.glade:335
-msgid "Keep window below"
+#: src/server/server.c:425
+msgid "Failed to activate logging of sensors."
msgstr ""
-#: src/glade/psensor-pref.glade:436
-msgid "<i>Min</i>"
+#: src/ui.c:84
+msgid "Psensor is a GTK+ application for monitoring hardware sensors"
msgstr ""
-#: src/glade/psensor-pref.glade:463
-msgid "<i>Max</i>"
+#: src/ui.c:87
+msgid ""
+"Copyright(c) 2010-2013\n"
+"jeanfi@gmail.com"
msgstr ""
-#: src/glade/psensor-pref.glade:483
-msgid "Enable menu"
+#: src/ui.c:90
+msgid "About Psensor"
msgstr ""
-#: src/glade/psensor-pref.glade:500
-msgid "Enable Unity Launcher counter"
+#: src/ui.c:93
+msgid "Psensor Homepage"
msgstr ""
-#: src/glade/psensor-pref.glade:518
-msgid "Hide window on startup"
+#: src/ui.c:217
+msgid "Failed to load Psensor icon."
msgstr ""
-#: src/glade/psensor-pref.glade:535
-msgid "Restore window position and size"
+#: src/ui_sensorlist.c:245
+msgid "Select foreground color"
msgstr ""
-#: src/glade/sensor-edit.glade:8
-#, fuzzy
-msgid "Edit Sensor Preferences"
-msgstr "Tercihleri düzenle"
+#: src/ui_sensorlist.c:297
+msgid "Sensor"
+msgstr "Algılayıcı"
-#: src/glade/sensor-edit.glade:104
-msgid "Name:"
-msgstr "İsim:"
+#: src/ui_sensorlist.c:303
+msgid "Value"
+msgstr ""
-#: src/glade/sensor-edit.glade:139
-msgid "Type:"
-msgstr "Tür:"
+#: src/ui_sensorlist.c:309
+msgid "Min"
+msgstr ""
-#: src/glade/sensor-edit.glade:169
-msgid "Id:"
+#: src/ui_sensorlist.c:315
+msgid "Max"
msgstr ""
-#: src/glade/sensor-edit.glade:202
-msgid "Color:"
-msgstr "Renk :"
+#: src/ui_sensorlist.c:322
+msgid "Color"
+msgstr "Renk"
-#: src/glade/sensor-edit.glade:216
-msgid "Alarm"
-msgstr "Alarm"
+#: src/ui_appindicator.c:106
+msgid "_Show"
+msgstr ""
-#: src/glade/sensor-edit.glade:231
-msgid "Activate desktop notifications"
+#: src/ui_appindicator.c:107
+msgid "Show"
msgstr ""
-#: src/glade/sensor-edit.glade:251
-msgid "Temperature limit:"
+#: src/ui_appindicator.c:111
+msgid "_Preferences"
+msgstr "Tercihler"
+
+#: src/ui_appindicator.c:116
+msgid "S_ensor Preferences"
+msgstr "Tercihleri düzenle"
+
+#: src/ui_appindicator.c:118
+msgid "SensorPreferences"
+msgstr "Tercihleri düzenle"
+
+#: src/ui_appindicator.c:122
+msgid "_About"
msgstr ""
-#: src/glade/sensor-edit.glade:266
-msgid "Sensor Information"
+#: src/ui_appindicator.c:129
+msgid "_Quit"
msgstr ""
-#: src/glade/sensor-edit.glade:279
-msgid "Draw sensor curve"
+#: src/ui_appindicator.c:220
+#, c-format
+msgid "building menus failed: %s"
msgstr ""
-#: src/glade/sensor-edit.glade:327
-msgid "°C"
+#: src/ui_notify.c:48
+msgid "gettimeofday failed."
msgstr ""
-#~ msgid "Right"
-#~ msgstr "Sağ"
+#: src/ui_notify.c:77
+msgid "Temperature alert"
+msgstr ""
-#~ msgid "Left"
-#~ msgstr "Sol"
+#: src/ui_notify.c:79
+msgid "Fan alert"
+msgstr ""
+
+#: src/ui_sensorpref.c:248
+msgid "Unknown"
+msgstr ""
-#~ msgid "Top"
-#~ msgstr "Üstte"
+#~ msgid "Sensor Name"
+#~ msgstr "Algılayıcı"
--- /dev/null
+# Ukrainian translation for psensor
+# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
+# This file is distributed under the same license as the psensor package.
+# <jeanfi@gmail.com>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: psensor\n"
+"Report-Msgid-Bugs-To: jeanfi@gmail.com\n"
+"POT-Creation-Date: 2013-10-16 09:19+0200\n"
+"PO-Revision-Date: 2012-10-13 16:24+0000\n"
+"Last-Translator: Ilya Volchanetskiy <Unknown>\n"
+"Language-Team: Ukrainian <uk@li.org>\n"
+"Language: uk\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2013-01-21 09:32+0000\n"
+"X-Generator: Launchpad (build 16430)\n"
+
+#: src/glade/psensor.glade:5 src/ui_appindicator.c:124
+msgid "About"
+msgstr "Про програму"
+
+#: src/glade/psensor.glade:9 src/ui_sensorlist.c:209 src/ui_appindicator.c:112
+msgid "Preferences"
+msgstr "Налаштування"
+
+#: src/glade/psensor.glade:13 src/ui_appindicator.c:130
+msgid "Quit"
+msgstr "Вихід"
+
+#: src/glade/psensor.glade:17
+msgid "Sensor Preferences"
+msgstr "Налаштування датчиків"
+
+#: src/glade/psensor.glade:96
+msgid "Psensor - Temperature Monitor"
+msgstr ""
+
+#: src/glade/psensor.glade:111
+msgid "_Psensor"
+msgstr ""
+
+#: src/glade/psensor.glade:158
+msgid "_Help"
+msgstr "_Довдіка"
+
+#: src/glade/psensor-pref.glade:7
+msgid "Edit Preferences"
+msgstr "Редагувати налаштування"
+
+#: src/glade/psensor-pref.glade:72
+msgid "Position of sensors table:"
+msgstr "Положення таблиці датчиків:"
+
+#: src/glade/psensor-pref.glade:81
+msgid "Hide window decoration"
+msgstr "Сховати каркас вікна"
+
+#: src/glade/psensor-pref.glade:98
+msgid "Keep window below"
+msgstr "Тримати вікно позаду"
+
+#: src/glade/psensor-pref.glade:115
+msgid "Enable menu"
+msgstr "Увімкнути меню"
+
+#: src/glade/psensor-pref.glade:132
+msgid "Enable Unity Launcher counter"
+msgstr "Увімкнути лічильник на панелі запуску Unity"
+
+#: src/glade/psensor-pref.glade:149
+msgid "Hide window on startup"
+msgstr "Сховати вікно після запуску"
+
+#: src/glade/psensor-pref.glade:166
+msgid "Restore window position and size"
+msgstr "Відновляти позицію і розмір вікна"
+
+#: src/glade/psensor-pref.glade:186
+msgid "Temperature unit:"
+msgstr "Одиниця температури:"
+
+#: src/glade/psensor-pref.glade:238
+msgid "Interface"
+msgstr "Зовнішній вигляд"
+
+#: src/glade/psensor-pref.glade:276
+msgid "Foreground:"
+msgstr "Передній план:"
+
+#: src/glade/psensor-pref.glade:291
+msgid "Background:"
+msgstr "Тло:"
+
+#: src/glade/psensor-pref.glade:325
+msgid "Background opacity:"
+msgstr "Непрозорість тла:"
+
+#: src/glade/psensor-pref.glade:348
+msgid "<i>Min</i>"
+msgstr "<i>Мін.</i>"
+
+#: src/glade/psensor-pref.glade:375
+msgid "<i>Max</i>"
+msgstr "<i>Макс.</i>"
+
+#: src/glade/psensor-pref.glade:401
+msgid "Colors"
+msgstr "Кольори"
+
+#: src/glade/psensor-pref.glade:419
+msgid "Monitoring duration:"
+msgstr "Тривалість спостереження"
+
+#: src/glade/psensor-pref.glade:457
+msgid "minute(s)"
+msgstr "хв."
+
+#: src/glade/psensor-pref.glade:474 src/glade/psensor-pref.glade:626
+msgid "second(s)"
+msgstr "сек."
+
+#: src/glade/psensor-pref.glade:510
+msgid "Update interval:"
+msgstr "Інтервал оновлення:"
+
+#: src/glade/psensor-pref.glade:528
+msgid "Measures"
+msgstr "Заміри"
+
+#: src/glade/psensor-pref.glade:564 src/glade/sensor-edit.glade:169
+#: src/ui_sensorlist.c:334
+msgid "Graph"
+msgstr "Діаграма"
+
+#: src/glade/psensor-pref.glade:588
+msgid "Measure update interval:"
+msgstr "Інтервал оновлення замірів:"
+
+#: src/glade/psensor-pref.glade:637
+msgid "Enable sensors logging"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:684
+msgid "Sensors logging interval"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:701
+msgid "seconds(s)"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:718
+msgid "Script executed when an alarm is raised"
+msgstr ""
+
+#: src/glade/psensor-pref.glade:751
+msgid "Sensors"
+msgstr "Датчики"
+
+#: src/glade/sensor-edit.glade:19
+msgid "Edit Sensor Preferences"
+msgstr "Редагувати налаштування датчика"
+
+#: src/glade/sensor-edit.glade:87
+msgid "Name"
+msgstr ""
+
+#: src/glade/sensor-edit.glade:138
+msgid "Type:"
+msgstr "Тип:"
+
+#: src/glade/sensor-edit.glade:153 src/glade/sensor-edit.glade:294
+#: src/glade/sensor-edit.glade:388 src/glade/sensor-edit.glade:459
+#: src/glade/sensor-edit.glade:508 src/lib/psensor.c:486 src/ui_notify.c:81
+msgid "N/A"
+msgstr "Н/Д"
+
+#: src/glade/sensor-edit.glade:187
+msgid "Color:"
+msgstr "Колір:"
+
+#: src/glade/sensor-edit.glade:201
+msgid "Alarm"
+msgstr "Оповіщення"
+
+#: src/glade/sensor-edit.glade:216
+msgid "Activate desktop notifications"
+msgstr "Увімкнути оповіщення"
+
+#: src/glade/sensor-edit.glade:236
+msgid "Sensor Information"
+msgstr "Інформація датчика"
+
+#: src/glade/sensor-edit.glade:249
+msgid "Draw sensor curve"
+msgstr "Малювати криву датчика"
+
+#: src/glade/sensor-edit.glade:333
+msgid "High threshold:"
+msgstr "Вищий поріг:"
+
+#: src/glade/sensor-edit.glade:348
+msgid "Low threshold:"
+msgstr "Нижчий поріг:"
+
+#: src/glade/sensor-edit.glade:409
+msgid "Ubuntu Application Indicator"
+msgstr ""
+
+#: src/glade/sensor-edit.glade:424
+msgid "Display sensor in the Application Indicator menu"
+msgstr ""
+
+#: src/glade/sensor-edit.glade:444
+msgid "Chip:"
+msgstr ""
+
+#: src/glade/sensor-edit.glade:489
+msgid "Id:"
+msgstr "Ідентифікатор:"
+
+#: src/glade/sensor-edit.glade:523
+msgid "Details"
+msgstr "Подробиці"
+
+#: src/glade/sensor-edit.glade:541
+msgid "Name:"
+msgstr "Назва:"
+
+#: src/lib/amd.c:170
+msgid "AMD: cannot found ADL library."
+msgstr "AMD: не вдалося знайти бібліотеку ADL."
+
+#: src/lib/amd.c:197
+msgid "AMD: missing ADL's API."
+msgstr "AMD: відсутнє API ADL."
+
+#: src/lib/amd.c:207
+msgid "AMD: failed to initialize ADL."
+msgstr "AMD: не вдалося ініціалізувати ADL."
+
+#: src/lib/amd.c:213
+msgid "AMD: cannot get the number of adapters."
+msgstr "AMD: не вдалося отримати кількість адаптерів."
+
+#: src/lib/amd.c:252
+#, c-format
+msgid "Number of AMD/ATI adapters: %d"
+msgstr ""
+
+#: src/lib/amd.c:253
+#, c-format
+msgid "Number of active AMD/ATI adapters: %d"
+msgstr ""
+
+#: src/lib/hdd_atasmart.c:152
+#, c-format
+msgid "atasmart: sk_disk_open() failure: %s."
+msgstr "atasmart: помилка sk_disk_open(): %s."
+
+#: src/lib/hdd_hddtemp.c:59
+msgid "hddtemp: failed to open socket."
+msgstr "hddtemp: не вдалося відкрити сокет."
+
+#: src/lib/hdd_hddtemp.c:72
+msgid "hddtemp: failed to open connection."
+msgstr "hddtemp: не вдалося встановити з'єднання."
+
+#: src/lib/hdd_hddtemp.c:186 src/lib/hdd_hddtemp.c:256
+#, c-format
+msgid "hddtemp: wrong string: %s."
+msgstr "hddtemp: неправильний рядок: %s."
+
+#: src/lib/lmsensor.c:42
+#, c-format
+msgid "lmsensor: cannot get value of subfeature %s: %s."
+msgstr ""
+
+#: src/lib/lmsensor.c:123
+msgid "lmsensor: lmsensor_psensor_create failure: wrong feature type."
+msgstr ""
+
+#: src/lib/lmsensor.c:218
+#, c-format
+msgid "lmsensor: initialization failure: %s."
+msgstr "lmsensor: помилка ініціалізації: %s."
+
+#: src/lib/log.c:43
+#, c-format
+msgid "Cannot open log file: %s"
+msgstr "Не вдалося відкрити лог-файл: %s"
+
+#: src/lib/nvidia.c:54
+msgid ""
+"NVIDIA proprietary driver not used or cannot retrieve NVIDIA GPU temperature."
+msgstr ""
+
+#: src/lib/nvidia.c:97
+msgid "Cannot open connection to X11 server."
+msgstr "Не вдалося встановити з'єднання до сервера X11."
+
+#: src/lib/nvidia.c:105
+msgid "Failed to retrieve NVIDIA information."
+msgstr "Не вдалося отримати інформацію NVIDIA."
+
+#: src/lib/psensor.c:482 tests/test_psensor_type_to_unit_str.c:62
+msgid "RPM"
+msgstr "об/хв"
+
+#: src/lib/psensor.c:484
+msgid "%"
+msgstr "%"
+
+#: src/lib/slog.c:68
+msgid "HOME variable not set."
+msgstr "Змінна HOME не встановлена."
+
+#: src/lib/slog.c:78
+msgid "Sensor log file already open."
+msgstr ""
+
+#: src/lib/slog.c:87
+#, c-format
+msgid "Cannot open sensor log file: %s."
+msgstr ""
+
+#: src/lib/slog.c:118
+msgid "Sensor log file not open."
+msgstr ""
+
+#: src/lib/slog.c:174
+msgid "Sensor log not open, cannot close."
+msgstr ""
+
+#: src/main.c:77
+#, c-format
+msgid ""
+"Copyright (C) %s jeanfi@gmail.com\n"
+"License GPLv2: GNU GPL version 2 or later <http://www.gnu.org/licenses/old-"
+"licenses/gpl-2.0.html>\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+
+#: src/main.c:88 src/server/server.c:94
+#, c-format
+msgid "Usage: %s [OPTION]...\n"
+msgstr "Використання: %s [КЛЮЧ]...\n"
+
+#: src/main.c:90
+msgid ""
+"Psensor is a GTK+ application for monitoring hardware sensors, including "
+"temperatures and fan speeds."
+msgstr ""
+
+#: src/main.c:94
+msgid "Options:"
+msgstr "Опції:"
+
+#: src/main.c:95
+msgid ""
+" -h, --help display this help and exit\n"
+" -v, --version display version information and exit"
+msgstr ""
+" -h, --help показати цю довідку і вийти\n"
+" -v, --version показати версію і вийти"
+
+#: src/main.c:101
+msgid ""
+" -u, --url=URL the URL of the psensor-server,\n"
+" example: http://hostname:3131"
+msgstr ""
+" -u, --url=URL URL psensor-сервера, наприклад: http://hostname:3131"
+
+#: src/main.c:104
+msgid ""
+" --use-libatasmart use atasmart library for disk monitoring instead of\n"
+" hddtemp daemon"
+msgstr ""
+" --use-libatasmart використовувати бібліотеку atasmart для моніторингу\n"
+"дисків замість демона hddtemp"
+
+#: src/main.c:107
+msgid " -n, --new-instance force the creation of a new Psensor application"
+msgstr " -n, --new-instance примусово створювати нову копію програми Psensor"
+
+#: src/main.c:110
+msgid " -d, --debug=LEVEL set the debug level, integer between 0 and 3"
+msgstr " -d, --debug=РІВЕНЬ встановити рівень налагодження, ціле між 0 та 3"
+
+#: src/main.c:115 src/server/server.c:117
+#, c-format
+msgid "Report bugs to: %s\n"
+msgstr "Звітуйте про помилки до: %s\n"
+
+#: src/main.c:117 src/server/server.c:119
+#, c-format
+msgid "%s home page: <%s>\n"
+msgstr "%s домашня сторінка: <%s>\n"
+
+#: src/main.c:454
+msgid "Psensor has not been compiled with remote sensor support."
+msgstr "Psensor не був зібраний з підтримкою віддалених датчиків."
+
+#: src/main.c:517
+msgid "Enables debug mode."
+msgstr "Включає режим налагодження."
+
+#: src/main.c:529 src/server/server.c:380
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "Спробуйте `%s --help' щоб отримати більше інформації.\n"
+
+#: src/main.c:542
+msgid "A Psensor instance already exists."
+msgstr ""
+
+#: src/rsensor.c:107
+#, c-format
+msgid "Fail to connect to: %s"
+msgstr "Не вдалося підключитися до: %s"
+
+#: src/rsensor.c:144
+#, c-format
+msgid "Invalid content: %s"
+msgstr ""
+
+#: src/rsensor.c:184
+#, c-format
+msgid "Invalid JSON: %s"
+msgstr "Неправильний JSON: %s"
+
+#: src/server/server.c:54
+msgid "<html><body><p>Server stop requested</p></body></html>"
+msgstr ""
+
+#: src/server/server.c:60
+msgid ""
+"<html><body><p>Page not found - Go to <a href='/'>Main page</a></p></body>"
+msgstr ""
+"<html><body><p>Сторінка не знайдена - Перейти до <a href='/'>Головної "
+"сторінки</a></p></body>"
+
+#: src/server/server.c:84
+#, c-format
+msgid ""
+"Copyright (C) %s jeanfi@gmail.com\n"
+"License GPLv2: GNU GPL version 2 or later <http://www.gnu.org/licenses/old-"
+"licenses/gpl-2.0.html>\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+
+#: src/server/server.c:96
+msgid ""
+"psensor-server is an HTTP server for monitoring hardware sensors remotely."
+msgstr ""
+"psensor-server — це HTTP-сервер для віддаленого моніторингу апаратних "
+"датчиків."
+
+#: src/server/server.c:101
+msgid ""
+" -h, --help\t\tdisplay this help and exit\n"
+" -v, --version\t\tdisplay version information and exit"
+msgstr ""
+" -h, --help\t\tпоказати цю довідку і вийти\n"
+" -v, --version\t\tпоказати версію і вийти"
+
+#: src/server/server.c:105
+msgid ""
+" -p,--port=PORT\twebserver port\n"
+" -w,--wdir=DIR\t\tdirectory containing webserver pages"
+msgstr ""
+" -p,--port=PORT\tпорт веб-сервера\n"
+" -w,--wdir=DIR\t\tдиректорія для сторінок веб-сервера"
+
+#: src/server/server.c:109
+msgid " -d, --debug=LEVEL set the debug level, integer between 0 and 3"
+msgstr ""
+
+#: src/server/server.c:111
+msgid " -l, --log-file=PATH set the log file to PATH"
+msgstr ""
+
+#: src/server/server.c:112
+msgid " --sensor-log-file=PATH set the sensor log file to PATH"
+msgstr ""
+
+#: src/server/server.c:113
+msgid " --sensor-log-interval=S set the sensor log interval to S (seconds)"
+msgstr ""
+
+#: src/server/server.c:297
+#, c-format
+msgid "HTTP Request: %s"
+msgstr "HTTP запит: %s"
+
+#: src/server/server.c:360
+#, c-format
+msgid "Enables debug mode: %d"
+msgstr ""
+
+#: src/server/server.c:402
+msgid "No sensors detected."
+msgstr "Датчики не знайдені."
+
+#: src/server/server.c:409
+msgid "Failed to create Web server."
+msgstr "Не вдалося створити веб-сервер."
+
+#: src/server/server.c:413
+#, c-format
+msgid "Web server started on port: %d"
+msgstr ""
+
+#: src/server/server.c:414
+#, c-format
+msgid "WWW directory: %s"
+msgstr "WWW-директорія: %s"
+
+#: src/server/server.c:415
+#, c-format
+msgid "URL: http://localhost:%d"
+msgstr "URL: http://localhost:%d"
+
+#: src/server/server.c:425
+msgid "Failed to activate logging of sensors."
+msgstr ""
+
+#: src/ui.c:84
+msgid "Psensor is a GTK+ application for monitoring hardware sensors"
+msgstr ""
+
+#: src/ui.c:87
+msgid ""
+"Copyright(c) 2010-2013\n"
+"jeanfi@gmail.com"
+msgstr ""
+
+#: src/ui.c:90
+msgid "About Psensor"
+msgstr "Про Psensor"
+
+#: src/ui.c:93
+msgid "Psensor Homepage"
+msgstr "Домашня сторінка Psensor"
+
+#: src/ui.c:217
+msgid "Failed to load Psensor icon."
+msgstr "Не вдалося завантажити іконку Psensor."
+
+#: src/ui_sensorlist.c:245
+msgid "Select foreground color"
+msgstr "Оберіть колір переднього плану"
+
+#: src/ui_sensorlist.c:297
+msgid "Sensor"
+msgstr "Датчик"
+
+#: src/ui_sensorlist.c:303
+msgid "Value"
+msgstr "Значення"
+
+#: src/ui_sensorlist.c:309
+msgid "Min"
+msgstr "Мін."
+
+#: src/ui_sensorlist.c:315
+msgid "Max"
+msgstr "Макс."
+
+#: src/ui_sensorlist.c:322
+msgid "Color"
+msgstr "Колір"
+
+#: src/ui_appindicator.c:106
+msgid "_Show"
+msgstr "Пок_азати"
+
+#: src/ui_appindicator.c:107
+msgid "Show"
+msgstr "Показати"
+
+#: src/ui_appindicator.c:111
+msgid "_Preferences"
+msgstr "_Налаштування"
+
+#: src/ui_appindicator.c:116
+msgid "S_ensor Preferences"
+msgstr "Налаштув_ання датчиків"
+
+#: src/ui_appindicator.c:118
+msgid "SensorPreferences"
+msgstr ""
+
+#: src/ui_appindicator.c:122
+msgid "_About"
+msgstr "_Про програму"
+
+#: src/ui_appindicator.c:129
+msgid "_Quit"
+msgstr "_Вихід"
+
+#: src/ui_appindicator.c:220
+#, c-format
+msgid "building menus failed: %s"
+msgstr "не вдалося створити меню: %s"
+
+#: src/ui_notify.c:48
+msgid "gettimeofday failed."
+msgstr "помилка gettimeofday."
+
+#: src/ui_notify.c:77
+msgid "Temperature alert"
+msgstr ""
+
+#: src/ui_notify.c:79
+msgid "Fan alert"
+msgstr ""
+
+#: src/ui_sensorpref.c:248
+msgid "Unknown"
+msgstr ""
+
+#~ msgid "Sensor Name"
+#~ msgstr "Назва датчика"
+
+#~ msgid "Enabled"
+#~ msgstr "Увімкнен"
+
+#, fuzzy
+#~ msgid "slog_init: cannot open sensor log file: %s"
+#~ msgstr "Не вдалося відкрити лог-файл: %s"
+
+#, fuzzy
+#~ msgid "slog_init: gettimeofday failed."
+#~ msgstr "помилка gettimeofday."
+
+#, fuzzy
+#~ msgid "slog_write_sensors: gettimeofday failed."
+#~ msgstr "помилка gettimeofday."
+
+#, fuzzy
+#~ msgid "Enable indicator"
+#~ msgstr "Увімкнен"
# Chinese translations for psensor package.
# Copyright (C) 2011 Free Software Foundation, Inc.
# This file is distributed under the same license as the psensor package.
-# wpitchoune <wpitchoune@gmail.com>, 2011.
-# Chinese translation from 大宝 <linux.dabao@gmail.com>
+# Maintained by Jean-Philippe Orsini <jeanfi@gmail.com>
+# Initial Chinese translation from 大宝 <linux.dabao@gmail.com>
msgid ""
msgstr ""
-"Project-Id-Version: psensor 0.6.0.10\n"
+"Project-Id-Version: psensor\n"
"Report-Msgid-Bugs-To: jeanfi@gmail.com\n"
-"POT-Creation-Date: 2012-03-26 10:30+0200\n"
-"PO-Revision-Date: 2011-06-06 08:57+0000\n"
-"Last-Translator: royclark <Unknown>\n"
+"POT-Creation-Date: 2013-10-16 09:19+0200\n"
+"PO-Revision-Date: 2013-01-15 12:24+0000\n"
+"Last-Translator: Wang Dianjin <Unknown>\n"
"Language-Team: Chinese (simplified)\n"
"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-06-06 09:00+0000\n"
-"X-Generator: Launchpad (build 13144)\n"
+"X-Launchpad-Export-Date: 2013-01-21 09:32+0000\n"
+"X-Generator: Launchpad (build 16430)\n"
-#: src/main.c:77
-#, c-format
-msgid ""
-"Copyright (C) %s jeanfi@gmail.com\n"
-"License GPLv2: GNU GPL version 2 or later <http://www.gnu.org/licenses/old-"
-"licenses/gpl-2.0.html>\n"
-"This is free software: you are free to change and redistribute it.\n"
-"There is NO WARRANTY, to the extent permitted by law.\n"
-msgstr ""
+#: src/glade/psensor.glade:5 src/ui_appindicator.c:124
+msgid "About"
+msgstr "关于"
-#: src/main.c:88 src/server/server.c:86
-#, c-format
-msgid "Usage: %s [OPTION]...\n"
-msgstr "用法:%s [选项]...\n"
+#: src/glade/psensor.glade:9 src/ui_sensorlist.c:209 src/ui_appindicator.c:112
+msgid "Preferences"
+msgstr "首选项"
-#: src/main.c:90
-msgid ""
-"psensor is a GTK application for monitoring hardware sensors, including "
-"temperatures and fan speeds."
-msgstr "psensor 是一个 GTK 程序,用来监视硬件传感器,包括温度和风扇转速。"
+#: src/glade/psensor.glade:13 src/ui_appindicator.c:130
+msgid "Quit"
+msgstr "退出"
-#: src/main.c:94
-msgid "Options:"
-msgstr ""
+#: src/glade/psensor.glade:17
+msgid "Sensor Preferences"
+msgstr "传感器首选项"
-#: src/main.c:95
-msgid ""
-" -h, --help display this help and exit\n"
-" -v, --version display version information and exit"
+#: src/glade/psensor.glade:96
+msgid "Psensor - Temperature Monitor"
+msgstr "Psensor - 温度监视器"
+
+#: src/glade/psensor.glade:111
+msgid "_Psensor"
msgstr ""
-" -h, --help 显示这个帮助并退出\n"
-" -v, --version 显示版本信息并退出"
-#: src/main.c:100
-msgid ""
-" -u, --url=URL the URL of the psensor-server, example: http://"
-"hostname:3131"
-msgstr " -u, --url=URL psensor服务器的 URL ,比如:http://hostname:3131"
+#: src/glade/psensor.glade:158
+msgid "_Help"
+msgstr "帮助(_H)"
-#: src/main.c:105
-msgid " -d, --debug=LEVEL set the debug level, integer between 0 and 3"
-msgstr ""
+#: src/glade/psensor-pref.glade:7
+msgid "Edit Preferences"
+msgstr "编辑首选项"
-#: src/main.c:110 src/server/server.c:104
-#, c-format
-msgid "Report bugs to: %s\n"
-msgstr ""
+#: src/glade/psensor-pref.glade:72
+msgid "Position of sensors table:"
+msgstr "监视设备列表位置:"
-#: src/main.c:112 src/server/server.c:106
-#, c-format
-msgid "%s home page: <%s>\n"
-msgstr ""
+#: src/glade/psensor-pref.glade:81
+msgid "Hide window decoration"
+msgstr "隐藏窗口标题栏"
-#: src/main.c:425
-msgid "Enables debug mode."
-msgstr ""
+#: src/glade/psensor-pref.glade:98
+msgid "Keep window below"
+msgstr "保持在最底层"
-#: src/main.c:434 src/server/server.c:352
-#, c-format
-msgid "Try `%s --help' for more information.\n"
-msgstr ""
+#: src/glade/psensor-pref.glade:115
+msgid "Enable menu"
+msgstr "启用菜单"
-#: src/main.c:469
-#, c-format
-msgid "ERROR: Not compiled with remote sensor support.\n"
-msgstr ""
+#: src/glade/psensor-pref.glade:132
+msgid "Enable Unity Launcher counter"
+msgstr "启用 Unity 启动器计数器"
-#: src/ui.c:80
-#, fuzzy
-msgid "Psensor is a GTK+ application for monitoring hardware sensors"
-msgstr "psensor 是一个 GTK 程序,用来监视硬件传感器,包括温度和风扇转速。"
+#: src/glade/psensor-pref.glade:149
+msgid "Hide window on startup"
+msgstr "启动时隐藏窗口"
-#: src/ui.c:83
-msgid ""
-"Copyright(c) 2010-2012\n"
-"jeanfi@gmail.com"
-msgstr ""
+#: src/glade/psensor-pref.glade:166
+msgid "Restore window position and size"
+msgstr "恢复窗口位置和大小"
-#: src/ui.c:86
-msgid "About Psensor"
-msgstr ""
+#: src/glade/psensor-pref.glade:186
+msgid "Temperature unit:"
+msgstr "温度单位:"
-#: src/ui.c:89
-msgid "Psensor Homepage"
-msgstr ""
+#: src/glade/psensor-pref.glade:238
+msgid "Interface"
+msgstr "界面"
-#: src/ui.c:144
-msgid "_Preferences"
-msgstr ""
+#: src/glade/psensor-pref.glade:276
+msgid "Foreground:"
+msgstr "前景:"
-#: src/ui.c:145 src/ui_sensorlist.c:200
-msgid "Preferences"
-msgstr "选项"
+#: src/glade/psensor-pref.glade:291
+msgid "Background:"
+msgstr "背景:"
-#: src/ui.c:149
-msgid "_Sensor Preferences"
-msgstr ""
+#: src/glade/psensor-pref.glade:325
+msgid "Background opacity:"
+msgstr "背景透明:"
-#: src/ui.c:150
-msgid "Sensor Preferences"
-msgstr ""
+#: src/glade/psensor-pref.glade:348
+msgid "<i>Min</i>"
+msgstr "<i>最小值</i>"
-#: src/ui.c:154
-msgid "_Quit"
-msgstr ""
+#: src/glade/psensor-pref.glade:375
+msgid "<i>Max</i>"
+msgstr "<i>最大值</i>"
-#: src/ui.c:154
-msgid "Quit"
-msgstr "é\80\80å\87º"
+#: src/glade/psensor-pref.glade:401
+msgid "Colors"
+msgstr "é¢\9cè\89²"
-#: src/ui.c:160
-msgid "_About"
-msgstr ""
+#: src/glade/psensor-pref.glade:419
+msgid "Monitoring duration:"
+msgstr "监视持续时长:"
-#: src/ui.c:161
-msgid "About"
-msgstr ""
+#: src/glade/psensor-pref.glade:457
+msgid "minute(s)"
+msgstr "分钟"
-#: src/ui.c:183 src/ui_appindicator.c:176
-#, c-format
-msgid "building menus failed: %s"
-msgstr ""
+#: src/glade/psensor-pref.glade:474 src/glade/psensor-pref.glade:626
+msgid "second(s)"
+msgstr "秒"
-#: src/ui.c:231
-msgid "Psensor - Temperature Monitor"
-msgstr ""
+#: src/glade/psensor-pref.glade:510
+msgid "Update interval:"
+msgstr "更新间隔:"
-#: src/ui.c:248
-#, c-format
-msgid "ERROR: Failed to load psensor icon.\n"
-msgstr ""
+#: src/glade/psensor-pref.glade:528
+msgid "Measures"
+msgstr "测量"
-#: src/ui_sensorlist.c:231
-msgid "Select foreground color"
-msgstr "选择前景色"
+#: src/glade/psensor-pref.glade:564 src/glade/sensor-edit.glade:169
+#: src/ui_sensorlist.c:334
+msgid "Graph"
+msgstr "图表"
-#: src/ui_sensorlist.c:308 src/glade/psensor-pref.glade:241
-msgid "Sensor"
-msgstr "监视设备"
+#: src/glade/psensor-pref.glade:588
+msgid "Measure update interval:"
+msgstr "测量更新间隔:"
-#: src/ui_sensorlist.c:314
-msgid "Value"
+#: src/glade/psensor-pref.glade:637
+msgid "Enable sensors logging"
+msgstr "启用监测器记录"
+
+#: src/glade/psensor-pref.glade:684
+msgid "Sensors logging interval"
+msgstr "监测器记录间隔"
+
+#: src/glade/psensor-pref.glade:701
+msgid "seconds(s)"
+msgstr "秒"
+
+#: src/glade/psensor-pref.glade:718
+msgid "Script executed when an alarm is raised"
msgstr ""
-#: src/ui_sensorlist.c:320
-msgid "Min"
-msgstr "最小值"
+#: src/glade/psensor-pref.glade:751
+msgid "Sensors"
+msgstr "传感器"
-#: src/ui_sensorlist.c:326
-msgid "Max"
-msgstr "最大值"
+#: src/glade/sensor-edit.glade:19
+msgid "Edit Sensor Preferences"
+msgstr "编辑传感器首选项"
-#: src/ui_sensorlist.c:333
-msgid "Color"
-msgstr "颜色"
+#: src/glade/sensor-edit.glade:87
+msgid "Name"
+msgstr ""
-#: src/ui_sensorlist.c:345
-msgid "Enabled"
-msgstr "激活"
+#: src/glade/sensor-edit.glade:138
+msgid "Type:"
+msgstr "类型:"
-#: src/ui_sensorlist.c:374 src/ui_sensorlist.c:375 src/ui_sensorlist.c:376
-#: src/glade/sensor-edit.glade:87 src/glade/sensor-edit.glade:153
+#: src/glade/sensor-edit.glade:153 src/glade/sensor-edit.glade:294
+#: src/glade/sensor-edit.glade:388 src/glade/sensor-edit.glade:459
+#: src/glade/sensor-edit.glade:508 src/lib/psensor.c:486 src/ui_notify.c:81
msgid "N/A"
-msgstr ""
+msgstr "不可用"
-#: src/ui_notify.c:45
-msgid "gettimeofday failed"
-msgstr ""
+#: src/glade/sensor-edit.glade:187
+msgid "Color:"
+msgstr "颜色:"
-#: src/ui_notify.c:67 src/ui_notify.c:69
-msgid "Temperature alert"
-msgstr "温度报警"
+#: src/glade/sensor-edit.glade:201
+msgid "Alarm"
+msgstr "警告"
-#: src/ui_sensorpref.c:397
-msgid "Sensor Name"
-msgstr ""
+#: src/glade/sensor-edit.glade:216
+msgid "Activate desktop notifications"
+msgstr "激活桌面气泡提示"
-#: src/rsensor.c:107
+#: src/glade/sensor-edit.glade:236
+msgid "Sensor Information"
+msgstr "传感器信息"
+
+#: src/glade/sensor-edit.glade:249
+msgid "Draw sensor curve"
+msgstr "绘制监视曲线"
+
+#: src/glade/sensor-edit.glade:333
+msgid "High threshold:"
+msgstr "高阈值:"
+
+#: src/glade/sensor-edit.glade:348
+msgid "Low threshold:"
+msgstr "低阈值:"
+
+#: src/glade/sensor-edit.glade:409
+msgid "Ubuntu Application Indicator"
+msgstr "Ubuntu 应用指示器"
+
+#: src/glade/sensor-edit.glade:424
+msgid "Display sensor in the Application Indicator menu"
+msgstr "在应用指示器菜单中显示监视器"
+
+#: src/glade/sensor-edit.glade:444
+msgid "Chip:"
+msgstr "芯片:"
+
+#: src/glade/sensor-edit.glade:489
+msgid "Id:"
+msgstr "标识:"
+
+#: src/glade/sensor-edit.glade:523
+msgid "Details"
+msgstr "详情"
+
+#: src/glade/sensor-edit.glade:541
+msgid "Name:"
+msgstr "名称:"
+
+#: src/lib/amd.c:170
+msgid "AMD: cannot found ADL library."
+msgstr "AMD:未找到 ADL 库。"
+
+#: src/lib/amd.c:197
+msgid "AMD: missing ADL's API."
+msgstr "AMD:ADL 的 API 丢失。"
+
+#: src/lib/amd.c:207
+msgid "AMD: failed to initialize ADL."
+msgstr "AMD:ADL 初始化出错。"
+
+#: src/lib/amd.c:213
+msgid "AMD: cannot get the number of adapters."
+msgstr "AMD:无法获取适配器数目。"
+
+#: src/lib/amd.c:252
#, c-format
-msgid "Fail to connect to: %s"
+msgid "Number of AMD/ATI adapters: %d"
msgstr ""
-#: src/rsensor.c:144
+#: src/lib/amd.c:253
#, c-format
-msgid "Invalid content: %s"
+msgid "Number of active AMD/ATI adapters: %d"
msgstr ""
-#: src/rsensor.c:184
+#: src/lib/hdd_atasmart.c:152
#, c-format
-msgid "Invalid JSON: %s"
-msgstr ""
+msgid "atasmart: sk_disk_open() failure: %s."
+msgstr "atasmart:sk_disk_open() 失败:%s。"
+
+#: src/lib/hdd_hddtemp.c:59
+msgid "hddtemp: failed to open socket."
+msgstr "硬盘温度:无法打开套接字。"
+
+#: src/lib/hdd_hddtemp.c:72
+msgid "hddtemp: failed to open connection."
+msgstr "硬盘温度:无法打开连接。"
-#: src/server/server.c:53
+#: src/lib/hdd_hddtemp.c:186 src/lib/hdd_hddtemp.c:256
+#, c-format
+msgid "hddtemp: wrong string: %s."
+msgstr "硬盘温度:错误字符:%s。"
+
+#: src/lib/lmsensor.c:42
+#, c-format
+msgid "lmsensor: cannot get value of subfeature %s: %s."
+msgstr "lmsensor:无法获取子功能%s的值:%s。"
+
+#: src/lib/lmsensor.c:123
+msgid "lmsensor: lmsensor_psensor_create failure: wrong feature type."
+msgstr "lmsensor:lmsensor_psensor_create 失败:错误的功能类型。"
+
+#: src/lib/lmsensor.c:218
+#, c-format
+msgid "lmsensor: initialization failure: %s."
+msgstr "lmsensor:初始化失败:%s。"
+
+#: src/lib/log.c:43
+#, c-format
+msgid "Cannot open log file: %s"
+msgstr "无法打开日志文件:%s"
+
+#: src/lib/nvidia.c:54
msgid ""
-"<html><body><p>Page not found - Go to <a href='/'>Main page</a></p></body>"
+"NVIDIA proprietary driver not used or cannot retrieve NVIDIA GPU temperature."
msgstr ""
-#: src/server/server.c:76
+#: src/lib/nvidia.c:97
+msgid "Cannot open connection to X11 server."
+msgstr "无法打开到 X11 服务器的连接。"
+
+#: src/lib/nvidia.c:105
+msgid "Failed to retrieve NVIDIA information."
+msgstr "无法获取 NVIDIA 信息。"
+
+#: src/lib/psensor.c:482 tests/test_psensor_type_to_unit_str.c:62
+msgid "RPM"
+msgstr "转速"
+
+#: src/lib/psensor.c:484
+msgid "%"
+msgstr "%"
+
+#: src/lib/slog.c:68
+msgid "HOME variable not set."
+msgstr "未设置 HOME 变量。"
+
+#: src/lib/slog.c:78
+msgid "Sensor log file already open."
+msgstr "已经打开监测器日志文件。"
+
+#: src/lib/slog.c:87
+#, fuzzy, c-format
+msgid "Cannot open sensor log file: %s."
+msgstr "无法打开监测器日志文件:%s。"
+
+#: src/lib/slog.c:118
+msgid "Sensor log file not open."
+msgstr "监测器日志文件未打开。"
+
+#: src/lib/slog.c:174
+msgid "Sensor log not open, cannot close."
+msgstr "监测器日志未打开,故无法关闭。"
+
+#: src/main.c:77
#, c-format
msgid ""
"Copyright (C) %s jeanfi@gmail.com\n"
"License GPLv2: GNU GPL version 2 or later <http://www.gnu.org/licenses/old-"
"licenses/gpl-2.0.html>\n"
-"This is free software: you are free to change and redistribute it.\n"
+"This is free software: you are free to change and redistribute it.\n"
"There is NO WARRANTY, to the extent permitted by law.\n"
msgstr ""
+"版权所有(C) %s jeanfi@gmail.com\n"
+"协议 GPLv2:GNU GPL 第 2 版或以后的 <http://www.gnu.org/licenses/old-"
+"licenses/gpl-2.0.html>\n"
+"该软件为自由软件:您可以自由修改并分发。\n"
+"There is NO WARRANTY, to the extent permitted by law。\n"
+
+#: src/main.c:88 src/server/server.c:94
+#, c-format
+msgid "Usage: %s [OPTION]...\n"
+msgstr "用法:%s [选项]...\n"
-#: src/server/server.c:88
+#: src/main.c:90
msgid ""
-"psensor-server is an HTTP server for monitoring hardware sensors remotely."
-msgstr "psensor 服务器是用来远程监视硬件的 HTTP 服务器。"
+"Psensor is a GTK+ application for monitoring hardware sensors, including "
+"temperatures and fan speeds."
+msgstr "Psensor 是一款 GTK+ 应用程序,可监测硬件传感器,包括温度与风扇转速。"
-#: src/server/server.c:93
-#, fuzzy
+#: src/main.c:94
+msgid "Options:"
+msgstr "选项:"
+
+#: src/main.c:95
msgid ""
-" -h, --help\t\tdisplay this help and exit\n"
-" -v, --version\t\tdisplay version information and exit"
+" -h, --help display this help and exit\n"
+" -v, --version display version information and exit"
msgstr ""
" -h, --help 显示这个帮助并退出\n"
" -v, --version 显示版本信息并退出"
-#: src/server/server.c:98
+#: src/main.c:101
msgid ""
-" -d,--debug\t\trun in debug mode\n"
-" -p,--port=PORT\twebserver port\n"
-" -w,--wdir=DIR\t\tdirectory containing webserver pages"
-msgstr ""
-
-#: src/server/server.c:175
-msgid "<html><body><p>Server stop requested</p></body></html>"
-msgstr ""
-
-#: src/server/server.c:290
-#, c-format
-msgid "HTTP Request: %s\n"
-msgstr ""
-
-#: src/server/server.c:366
-#, c-format
-msgid "ERROR: no sensors detected\n"
-msgstr ""
-
-#: src/server/server.c:373
-#, c-format
-msgid "ERROR: Fail to create web server\n"
+" -u, --url=URL the URL of the psensor-server,\n"
+" example: http://hostname:3131"
msgstr ""
+" -u, --url=URL psensor 服务器 URL\n"
+" 例如:http://hostname:3131"
-#: src/server/server.c:377
-#, c-format
-msgid "Web server started on port: %d"
+#: src/main.c:104
+msgid ""
+" --use-libatasmart use atasmart library for disk monitoring instead of\n"
+" hddtemp daemon"
msgstr ""
+" --use-libatasmart 使用 atasmart 库来监测硬盘,而不是\n"
+" hddtemp 进程"
-#: src/server/server.c:378
-#, c-format
-msgid "WWW directory: %s"
-msgstr ""
+#: src/main.c:107
+msgid " -n, --new-instance force the creation of a new Psensor application"
+msgstr " -n, --new-instance 强制创建一个新的 Psensor 例程"
-#: src/server/server.c:379
-#, c-format
-msgid "URL: http://localhost:%d"
-msgstr ""
+#: src/main.c:110
+msgid " -d, --debug=LEVEL set the debug level, integer between 0 and 3"
+msgstr " -d,--debug=LEVEL 设置调试等级,等级为 0 到 3 之间的整数"
-#: src/lib/amd.c:151
+#: src/main.c:115 src/server/server.c:117
#, c-format
-msgid "ERROR: ADL library not found!\n"
-msgstr ""
+msgid "Report bugs to: %s\n"
+msgstr "报告问题至:%s\n"
-#: src/lib/amd.c:176
+#: src/main.c:117 src/server/server.c:119
#, c-format
-msgid "ERROR: ADL's API is missing!\n"
-msgstr ""
+msgid "%s home page: <%s>\n"
+msgstr "%s 主页:<%s>\n"
-#: src/lib/amd.c:185
-#, c-format
-msgid "ERROR: ADL Initialization Error!\n"
-msgstr ""
+#: src/main.c:454
+msgid "Psensor has not been compiled with remote sensor support."
+msgstr "Psensor 不支持远程传感器。"
-#: src/lib/amd.c:193
-#, c-format
-msgid "ERROR: Cannot get the number of adapters!\n"
-msgstr ""
+#: src/main.c:517
+msgid "Enables debug mode."
+msgstr "启用调试模式。"
-#: src/lib/hdd.c:58
+#: src/main.c:529 src/server/server.c:380
#, c-format
-msgid "ERROR: hdd fetch, failed to open socket\n"
-msgstr ""
+msgid "Try `%s --help' for more information.\n"
+msgstr "试用‘%s --help’来获得更多信息。\n"
-#: src/lib/hdd.c:72
-#, c-format
-msgid "ERROR: hdd fetch, failed to open connection\n"
-msgstr ""
+#: src/main.c:542
+msgid "A Psensor instance already exists."
+msgstr "已存在一个 Psensor 例程。"
-#: src/lib/hdd.c:182
+#: src/rsensor.c:107
#, c-format
-msgid "ERROR: wrong hdd string: %s"
-msgstr ""
+msgid "Fail to connect to: %s"
+msgstr "无法连接到:%s"
-#: src/lib/hdd.c:252
+#: src/rsensor.c:144
#, c-format
-msgid "ERROR: wrong hdd string: %s\n"
-msgstr ""
+msgid "Invalid content: %s"
+msgstr "无效内容:%s"
-#: src/lib/log.c:37
+#: src/rsensor.c:184
#, c-format
-msgid "Cannot open log file: %s"
-msgstr ""
+msgid "Invalid JSON: %s"
+msgstr "无效 JSON:%s"
-#: src/lib/nvidia.c:54
-#, c-format
-msgid "ERROR: failed to retrieve nvidia temperature\n"
-msgstr ""
+#: src/server/server.c:54
+msgid "<html><body><p>Server stop requested</p></body></html>"
+msgstr "<html><body><p>服务器停止请求</p></body></html>"
-#: src/lib/nvidia.c:91
-#, c-format
-msgid "ERROR: Cannot open connection to X Server\n"
-msgstr ""
+#: src/server/server.c:60
+msgid ""
+"<html><body><p>Page not found - Go to <a href='/'>Main page</a></p></body>"
+msgstr "<html><body><p>未找到页面 - 请访问<a href='/'>主页</a></p></body>"
-#: src/lib/nvidia.c:99
+#: src/server/server.c:84
#, c-format
-msgid "ERROR: Cannot retrieve NVidia information\n"
+msgid ""
+"Copyright (C) %s jeanfi@gmail.com\n"
+"License GPLv2: GNU GPL version 2 or later <http://www.gnu.org/licenses/old-"
+"licenses/gpl-2.0.html>\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
msgstr ""
+"版权所有(C) %s jeanfi@gmail.com\n"
+"协议 GPLv2:GNU GPL 第 2 版或更新的<http://www.gnu.org/licenses/old-licenses/"
+"gpl-2.0.html>\n"
+"本软件为自由软件:您可以自由修改并分发。\n"
+"There is NO WARRANTY, to the extent permitted by law。\n"
-#: src/lib/lmsensor.c:43
-#, c-format
-msgid "ERROR: Can't get value of subfeature %s: %s\n"
-msgstr ""
+#: src/server/server.c:96
+msgid ""
+"psensor-server is an HTTP server for monitoring hardware sensors remotely."
+msgstr "psensor 服务器是用来远程监视硬件的 HTTP 服务器。"
-#: src/lib/lmsensor.c:125
-#, c-format
-msgid "ERROR: create_sensor, wrong feature type\n"
+#: src/server/server.c:101
+msgid ""
+" -h, --help\t\tdisplay this help and exit\n"
+" -v, --version\t\tdisplay version information and exit"
msgstr ""
+" -h, --help\t\t 显示本帮助并退出\n"
+" -v, --version\t\t 显示版本信息并退出"
-#: src/lib/lmsensor.c:208
-#, c-format
-msgid "ERROR: lm-sensors initialization failure: %s\n"
+#: src/server/server.c:105
+msgid ""
+" -p,--port=PORT\twebserver port\n"
+" -w,--wdir=DIR\t\tdirectory containing webserver pages"
msgstr ""
+" -p,--port=PORT\t 网络服务器端口\n"
+" -w,--wdir=DIR\t\t 包括网络服务器页面的目录"
-#: src/lib/psensor.c:430
-msgid "C"
-msgstr ""
+#: src/server/server.c:109
+msgid " -d, --debug=LEVEL set the debug level, integer between 0 and 3"
+msgstr " -d, --debug=LEVEL 设置调试级别,0~3 之间的整数"
-#: src/lib/psensor.c:433
-msgid "RPM"
-msgstr ""
+#: src/server/server.c:111
+msgid " -l, --log-file=PATH set the log file to PATH"
+msgstr " -l, --log-file=PATH 将日志文件设为 PATH"
-#: src/lib/psensor.c:436
-msgid "%"
-msgstr ""
+#: src/server/server.c:112
+msgid " --sensor-log-file=PATH set the sensor log file to PATH"
+msgstr " --sensor-log-file=路径 设置监测器日志文件的路径"
-#: src/glade/psensor-pref.glade:7
-msgid "Edit Preferences"
+#: src/server/server.c:113
+msgid " --sensor-log-interval=S set the sensor log interval to S (seconds)"
msgstr ""
-#: src/glade/psensor-pref.glade:70
-msgid "Graph Colors"
-msgstr "图表颜色"
+#: src/server/server.c:297
+#, c-format
+msgid "HTTP Request: %s"
+msgstr "HTTP 请求:%s"
-#: src/glade/psensor-pref.glade:86
-msgid "Foreground:"
-msgstr "坐标栏:"
+#: src/server/server.c:360
+#, c-format
+msgid "Enables debug mode: %d"
+msgstr "启用调试模式:%d"
-#: src/glade/psensor-pref.glade:100
-msgid "Background:"
-msgstr "背景:"
+#: src/server/server.c:402
+msgid "No sensors detected."
+msgstr "未检测到传感器。"
-#: src/glade/psensor-pref.glade:114
-msgid "Background opacity:"
-msgstr "背景亮度:"
+#: src/server/server.c:409
+msgid "Failed to create Web server."
+msgstr "无法创建网络服务器。"
-#: src/glade/psensor-pref.glade:165 src/glade/sensor-edit.glade:184
-msgid "Graph"
-msgstr "图表"
+#: src/server/server.c:413
+#, c-format
+msgid "Web server started on port: %d"
+msgstr "网络服务器启动端口:%d"
-#: src/glade/psensor-pref.glade:183
-msgid "Update interval:"
-msgstr ""
+#: src/server/server.c:414
+#, c-format
+msgid "WWW directory: %s"
+msgstr "WWW 目录:%s"
-#: src/glade/psensor-pref.glade:197
-msgid "Monitoring duration:"
-msgstr ""
+#: src/server/server.c:415
+#, c-format
+msgid "URL: http://localhost:%d"
+msgstr "URL: http://localhost:%d"
-#: src/glade/psensor-pref.glade:210 src/glade/psensor-pref.glade:272
-msgid "second(s)"
-msgstr ""
+#: src/server/server.c:425
+msgid "Failed to activate logging of sensors."
+msgstr "无法激活监测器日志。"
-#: src/glade/psensor-pref.glade:225
-msgid "minute(s)"
-msgstr ""
+#: src/ui.c:84
+msgid "Psensor is a GTK+ application for monitoring hardware sensors"
+msgstr "Psensor 是一款 GTK+ 硬件监测传感应用程序"
-#: src/glade/psensor-pref.glade:259
-msgid "Measure update interval:"
+#: src/ui.c:87
+msgid ""
+"Copyright(c) 2010-2013\n"
+"jeanfi@gmail.com"
msgstr ""
+"版权所有(c) 2010-2013\n"
+"jeanfi@gmail.com"
-#: src/glade/psensor-pref.glade:288
-msgid "Interface"
-msgstr "界面"
-
-#: src/glade/psensor-pref.glade:306
-msgid "Position of sensors table:"
-msgstr "监视设备列表位置:"
+#: src/ui.c:90
+msgid "About Psensor"
+msgstr "关于 Psensor"
-#: src/glade/psensor-pref.glade:317
-msgid "Hide window decoration"
-msgstr "隐藏窗口标题栏"
+#: src/ui.c:93
+msgid "Psensor Homepage"
+msgstr "Psensor 主页"
-#: src/glade/psensor-pref.glade:335
-msgid "Keep window below"
-msgstr "ä¿\9dæ\8c\81å\9c¨æ\9c\80åº\95å±\82"
+#: src/ui.c:217
+msgid "Failed to load Psensor icon."
+msgstr "æ\97 æ³\95å\8a è½½ Psensor å\9b¾æ \87ã\80\82"
-#: src/glade/psensor-pref.glade:436
-msgid "<i>Min</i>"
-msgstr "<i>最小值</i>"
+#: src/ui_sensorlist.c:245
+msgid "Select foreground color"
+msgstr "选择前景色"
-#: src/glade/psensor-pref.glade:463
-msgid "<i>Max</i>"
-msgstr "<i>最大值</i>"
+#: src/ui_sensorlist.c:297
+msgid "Sensor"
+msgstr "监视设备"
-#: src/glade/psensor-pref.glade:483
-msgid "Enable menu"
-msgstr ""
+#: src/ui_sensorlist.c:303
+msgid "Value"
+msgstr "值"
-#: src/glade/psensor-pref.glade:500
-msgid "Enable Unity Launcher counter"
-msgstr ""
+#: src/ui_sensorlist.c:309
+msgid "Min"
+msgstr "最小值"
-#: src/glade/psensor-pref.glade:518
-#, fuzzy
-msgid "Hide window on startup"
-msgstr "隐藏窗口标题栏"
+#: src/ui_sensorlist.c:315
+msgid "Max"
+msgstr "最大值"
-#: src/glade/psensor-pref.glade:535
-msgid "Restore window position and size"
-msgstr ""
+#: src/ui_sensorlist.c:322
+msgid "Color"
+msgstr "颜色"
-#: src/glade/sensor-edit.glade:8
-msgid "Edit Sensor Preferences"
-msgstr "监视设备选项"
+#: src/ui_appindicator.c:106
+msgid "_Show"
+msgstr "显示(_S)"
-#: src/glade/sensor-edit.glade:104
-msgid "Name:"
-msgstr "名称:"
+#: src/ui_appindicator.c:107
+msgid "Show"
+msgstr "显示"
-#: src/glade/sensor-edit.glade:139
-msgid "Type:"
-msgstr "类型:"
+#: src/ui_appindicator.c:111
+msgid "_Preferences"
+msgstr "首选项(_P)"
-#: src/glade/sensor-edit.glade:169
-msgid "Id:"
-msgstr "标识:"
+#: src/ui_appindicator.c:116
+msgid "S_ensor Preferences"
+msgstr "传感器首选项(_E)"
-#: src/glade/sensor-edit.glade:202
-msgid "Color:"
-msgstr ""
+#: src/ui_appindicator.c:118
+msgid "SensorPreferences"
+msgstr "传感器首选项"
-#: src/glade/sensor-edit.glade:216
-msgid "Alarm"
-msgstr "警告信息"
+#: src/ui_appindicator.c:122
+msgid "_About"
+msgstr "关于(_A)"
-#: src/glade/sensor-edit.glade:231
-msgid "Activate desktop notifications"
-msgstr "激活桌面气泡提示"
+#: src/ui_appindicator.c:129
+msgid "_Quit"
+msgstr "退出(_Q)"
-#: src/glade/sensor-edit.glade:251
-msgid "Temperature limit:"
-msgstr "温度警戒线:"
+#: src/ui_appindicator.c:220
+#, c-format
+msgid "building menus failed: %s"
+msgstr "创建菜单失败:%s"
-#: src/glade/sensor-edit.glade:266
-msgid "Sensor Information"
-msgstr "设å¤\87ä¿¡æ\81¯"
+#: src/ui_notify.c:48
+msgid "gettimeofday failed."
+msgstr "è\8e·å\8f\96æ\97¶é\97´å¤±è´¥ã\80\82"
-#: src/glade/sensor-edit.glade:279
-msgid "Draw sensor curve"
-msgstr "绘制监视曲线"
+#: src/ui_notify.c:77
+msgid "Temperature alert"
+msgstr "温度报警"
-#: src/glade/sensor-edit.glade:327
-msgid "°C"
-msgstr ""
+#: src/ui_notify.c:79
+msgid "Fan alert"
+msgstr "风扇警报"
-#~ msgid "Current"
-#~ msgstr "当前"
+#: src/ui_sensorpref.c:248
+msgid "Unknown"
+msgstr "未知"
-#~ msgid "Right"
-#~ msgstr "右侧"
+#~ msgid "Sensor Name"
+#~ msgstr "传感器名称"
-#~ msgid "Left"
-#~ msgstr "左侧"
+#~ msgid "Enabled"
+#~ msgstr "激活"
-#~ msgid "Top"
-#~ msgstr "顶部"
+#, fuzzy
+#~ msgid "Enable log of measures"
+#~ msgstr "启用菜单"
-#~ msgid "Bottom"
-#~ msgstr "底部"
+#, fuzzy
+#~ msgid "slog_init: cannot open sensor log file: %s"
+#~ msgstr "无法打开日志文件:%s"
-#~ msgid "Show"
-#~ msgstr "显示主窗口"
+#, fuzzy
+#~ msgid "slog_init: gettimeofday failed."
+#~ msgstr "获取时间失败。"
-#~ msgid "Graph update interval:"
-#~ msgstr "图表更新间隔:"
+#, fuzzy
+#~ msgid "slog_write_sensors: gettimeofday failed."
+#~ msgstr "获取时间失败。"
-#~ msgid "Graph monitoring duration:"
-#~ msgstr "图表监视持续时间:"
+#, fuzzy
+#~ msgid "Enable indicator"
+#~ msgstr "激活"
Name=Psensor
GenericName=Psensor
Comment=Psensor is a graphical temperature monitor for Linux
+Keywords=temperature;fan;monitoring;indicator
Icon=psensor
TryExec=psensor
Exec=psensor
SUBDIRS = lib glade
-AM_LDFLAGS = -Wl,--as-needed
+# -export-dynamic is need for defining handlers in the glade file.
+AM_LDFLAGS = -Wl,--as-needed -export-dynamic
if LIBMICROHTTPD
if JSON
endif
endif
+# -no-deprecated-declarations to avoid some glib deprecation warnings
AM_CPPFLAGS = -Wno-deprecated-declarations -Wall -Werror -DDEFAULT_WWW_DIR=\""$(pkgdatadir)/www"\"\
-I$(top_srcdir)/src/lib \
-I$(top_srcdir)/src/unity \
lib/libpsensor.a \
$(GTK_LIBS)\
$(GCONF_LIBS)\
+ $(PTHREAD_LIBS)\
$(SENSORS_LIBS)
+if GTK
+if X11
+if XEXT
+if GCONF
bin_PROGRAMS = psensor
+dist_man_MANS = psensor.1
+endif
+endif
+endif
+endif
+
psensor_SOURCES = \
- compat.h \
cfg.h cfg.c \
+ notify_cmd.c notify_cmd.h \
graph.h graph.c \
main.c \
ui.h ui.c \
endif
if NVIDIA
+if X11
AM_CPPFLAGS += $(NVIDIA_CFLAGS)
LIBS += $(NVIDIA_LIBS)
endif
+endif
if LIBATIADL
AM_CPPFLAGS += $(LIBATIADL_CFLAGS)
LIBS += $(LIBATIADL_LIBS)
endif
+if ATASMART
+AM_CPPFLAGS += $(ATASMART_CFLAGS)
+LIBS += $(ATASMART_LIBS)
+endif
+
if UNITY
psensor_SOURCES += ui_unity.h ui_unity.c
AM_CPPFLAGS += $(UNITY_CFLAGS)
endif
endif
-dist_man_MANS = psensor.1
-EXTRA_DIST = description.txt
+EXTRA_DIST = description.txt psensor.schemas
+
+if GCONF
+schemadir = $(GCONF_SCHEMA_FILE_DIR)
+schema_DATA = psensor.schemas
+
+install-data-local:
+ GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE) $(GCONFTOOL) --makefile-install-rule $(top_srcdir)/src/$(schema_DATA)
+endif
psensor.1: main.c $(top_srcdir)/configure.ac
$(MAKE) $(AM_MAKEFLAGS) psensor$(EXEEXT)
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@SET_MAKE@
+
VPATH = @srcdir@
+am__make_dryrun = \
+ { \
+ am__dry=no; \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
+ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+ *) \
+ for am__flg in $$MAKEFLAGS; do \
+ case $$am__flg in \
+ *=*|--*) ;; \
+ *n*) am__dry=yes; break;; \
+ esac; \
+ done;; \
+ esac; \
+ test $$am__dry = yes; \
+ }
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
build_triplet = @build@
host_triplet = @host@
@JSON_TRUE@@LIBMICROHTTPD_TRUE@am__append_1 = server
-bin_PROGRAMS = psensor$(EXEEXT)
+@GCONF_TRUE@@GTK_TRUE@@X11_TRUE@@XEXT_TRUE@bin_PROGRAMS = \
+@GCONF_TRUE@@GTK_TRUE@@X11_TRUE@@XEXT_TRUE@ psensor$(EXEEXT)
@GTOP_TRUE@am__append_2 = $(GTOP_CFLAGS)
@GTOP_TRUE@am__append_3 = $(GTOP_LIBS)
@LIBNOTIFY_TRUE@am__append_4 = ui_notify.h ui_notify.c
@APPINDICATOR_TRUE@am__append_7 = ui_appindicator.c
@APPINDICATOR_TRUE@am__append_8 = $(APPINDICATOR_LIBS)
@APPINDICATOR_TRUE@am__append_9 = $(APPINDICATOR_CFLAGS)
-@NVIDIA_TRUE@am__append_10 = $(NVIDIA_CFLAGS)
-@NVIDIA_TRUE@am__append_11 = $(NVIDIA_LIBS)
+@NVIDIA_TRUE@@X11_TRUE@am__append_10 = $(NVIDIA_CFLAGS)
+@NVIDIA_TRUE@@X11_TRUE@am__append_11 = $(NVIDIA_LIBS)
@LIBATIADL_TRUE@am__append_12 = $(LIBATIADL_CFLAGS)
@LIBATIADL_TRUE@am__append_13 = $(LIBATIADL_LIBS)
-@UNITY_TRUE@am__append_14 = ui_unity.h ui_unity.c
-@UNITY_TRUE@am__append_15 = $(UNITY_CFLAGS)
-@UNITY_TRUE@am__append_16 = $(UNITY_LIBS)
-@CURL_TRUE@@JSON_TRUE@am__append_17 = rsensor.h rsensor.c
-@CURL_TRUE@@JSON_TRUE@am__append_18 = $(CURL_LIBS) $(JSON_LIBS)
-@CURL_TRUE@@JSON_TRUE@am__append_19 = $(CURL_CFLAGS) $(JSON_CFLAGS)
+@ATASMART_TRUE@am__append_14 = $(ATASMART_CFLAGS)
+@ATASMART_TRUE@am__append_15 = $(ATASMART_LIBS)
+@UNITY_TRUE@am__append_16 = ui_unity.h ui_unity.c
+@UNITY_TRUE@am__append_17 = $(UNITY_CFLAGS)
+@UNITY_TRUE@am__append_18 = $(UNITY_LIBS)
+@CURL_TRUE@@JSON_TRUE@am__append_19 = rsensor.h rsensor.c
+@CURL_TRUE@@JSON_TRUE@am__append_20 = $(CURL_LIBS) $(JSON_LIBS)
+@CURL_TRUE@@JSON_TRUE@am__append_21 = $(CURL_CFLAGS) $(JSON_CFLAGS)
subdir = src
DIST_COMMON = $(dist_man_MANS) $(srcdir)/Makefile.am \
$(srcdir)/Makefile.in
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
-am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)"
+am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" \
+ "$(DESTDIR)$(schemadir)"
PROGRAMS = $(bin_PROGRAMS)
-am__psensor_SOURCES_DIST = compat.h cfg.h cfg.c graph.h graph.c main.c \
- ui.h ui.c ui_appindicator.h ui_color.h ui_color.c ui_graph.h \
- ui_graph.c ui_pref.h ui_pref.c ui_sensorlist.h ui_sensorlist.c \
- ui_sensorpref.h ui_sensorpref.c ui_status.h ui_status.c \
- ui_notify.h ui_notify.c ui_appindicator.c ui_unity.h \
- ui_unity.c rsensor.h rsensor.c
+am__psensor_SOURCES_DIST = cfg.h cfg.c notify_cmd.c notify_cmd.h \
+ graph.h graph.c main.c ui.h ui.c ui_appindicator.h ui_color.h \
+ ui_color.c ui_graph.h ui_graph.c ui_pref.h ui_pref.c \
+ ui_sensorlist.h ui_sensorlist.c ui_sensorpref.h \
+ ui_sensorpref.c ui_status.h ui_status.c ui_notify.h \
+ ui_notify.c ui_appindicator.c ui_unity.h ui_unity.c rsensor.h \
+ rsensor.c
@LIBNOTIFY_TRUE@am__objects_1 = ui_notify.$(OBJEXT)
@APPINDICATOR_TRUE@am__objects_2 = ui_appindicator.$(OBJEXT)
@UNITY_TRUE@am__objects_3 = ui_unity.$(OBJEXT)
@CURL_TRUE@@JSON_TRUE@am__objects_4 = rsensor.$(OBJEXT)
-am_psensor_OBJECTS = cfg.$(OBJEXT) graph.$(OBJEXT) main.$(OBJEXT) \
- ui.$(OBJEXT) ui_color.$(OBJEXT) ui_graph.$(OBJEXT) \
- ui_pref.$(OBJEXT) ui_sensorlist.$(OBJEXT) \
+am_psensor_OBJECTS = cfg.$(OBJEXT) notify_cmd.$(OBJEXT) \
+ graph.$(OBJEXT) main.$(OBJEXT) ui.$(OBJEXT) ui_color.$(OBJEXT) \
+ ui_graph.$(OBJEXT) ui_pref.$(OBJEXT) ui_sensorlist.$(OBJEXT) \
ui_sensorpref.$(OBJEXT) ui_status.$(OBJEXT) $(am__objects_1) \
$(am__objects_2) $(am__objects_3) $(am__objects_4)
psensor_OBJECTS = $(am_psensor_OBJECTS)
install-pdf-recursive install-ps-recursive install-recursive \
installcheck-recursive installdirs-recursive pdf-recursive \
ps-recursive uninstall-recursive
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
man1dir = $(mandir)/man1
NROFF = nroff
MANS = $(dist_man_MANS)
+DATA = $(schema_DATA)
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
distclean-recursive maintainer-clean-recursive
AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
AMTAR = @AMTAR@
APPINDICATOR_CFLAGS = @APPINDICATOR_CFLAGS@
APPINDICATOR_LIBS = @APPINDICATOR_LIBS@
+AR = @AR@
+ATASMART_CFLAGS = @ATASMART_CFLAGS@
+ATASMART_LIBS = @ATASMART_LIBS@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+GCONFTOOL = @GCONFTOOL@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
+GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
+GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GTK_LIBS = @GTK_LIBS@
GTOP_CFLAGS = @GTOP_CFLAGS@
GTOP_LIBS = @GTOP_LIBS@
+HAVE_CPPCHECK = @HAVE_CPPCHECK@
HELP2MAN = @HELP2MAN@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
LIBNOTIFY_CFLAGS = @LIBNOTIFY_CFLAGS@
LIBNOTIFY_LIBS = @LIBNOTIFY_LIBS@
LIBOBJS = @LIBOBJS@
-LIBS = lib/libpsensor.a $(GTK_LIBS) $(GCONF_LIBS) $(SENSORS_LIBS) \
- $(am__append_3) $(am__append_5) $(am__append_8) \
- $(am__append_11) $(am__append_13) $(am__append_16) \
- $(am__append_18)
+LIBS = lib/libpsensor.a $(GTK_LIBS) $(GCONF_LIBS) $(PTHREAD_LIBS) \
+ $(SENSORS_LIBS) $(am__append_3) $(am__append_5) \
+ $(am__append_8) $(am__append_11) $(am__append_13) \
+ $(am__append_15) $(am__append_18) $(am__append_20)
LTLIBICONV = @LTLIBICONV@
LTLIBINTL = @LTLIBINTL@
LTLIBOBJS = @LTLIBOBJS@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
POSUB = @POSUB@
+PTHREAD_LIBS = @PTHREAD_LIBS@
RANLIB = @RANLIB@
SENSORS_LIBS = @SENSORS_LIBS@
SET_MAKE = @SET_MAKE@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
SUBDIRS = lib glade $(am__append_1)
-AM_LDFLAGS = -Wl,--as-needed
+
+# -export-dynamic is need for defining handlers in the glade file.
+AM_LDFLAGS = -Wl,--as-needed -export-dynamic
+
+# -no-deprecated-declarations to avoid some glib deprecation warnings
AM_CPPFLAGS = -Wno-deprecated-declarations -Wall -Werror \
-DDEFAULT_WWW_DIR=\""$(pkgdatadir)/www"\" \
-I$(top_srcdir)/src/lib -I$(top_srcdir)/src/unity \
$(GTK_CFLAGS) $(GCONF_CFLAGS) $(SENSORS_CFLAGS) \
$(am__append_2) $(am__append_6) $(am__append_9) \
- $(am__append_10) $(am__append_12) $(am__append_15) \
- $(am__append_19)
-psensor_SOURCES = compat.h cfg.h cfg.c graph.h graph.c main.c ui.h \
- ui.c ui_appindicator.h ui_color.h ui_color.c ui_graph.h \
- ui_graph.c ui_pref.h ui_pref.c ui_sensorlist.h ui_sensorlist.c \
- ui_sensorpref.h ui_sensorpref.c ui_status.h ui_status.c \
- $(am__append_4) $(am__append_7) $(am__append_14) \
- $(am__append_17)
-dist_man_MANS = psensor.1
-EXTRA_DIST = description.txt
+ $(am__append_10) $(am__append_12) $(am__append_14) \
+ $(am__append_17) $(am__append_21)
+@GCONF_TRUE@@GTK_TRUE@@X11_TRUE@@XEXT_TRUE@dist_man_MANS = psensor.1
+psensor_SOURCES = cfg.h cfg.c notify_cmd.c notify_cmd.h graph.h \
+ graph.c main.c ui.h ui.c ui_appindicator.h ui_color.h \
+ ui_color.c ui_graph.h ui_graph.c ui_pref.h ui_pref.c \
+ ui_sensorlist.h ui_sensorlist.c ui_sensorpref.h \
+ ui_sensorpref.c ui_status.h ui_status.c $(am__append_4) \
+ $(am__append_7) $(am__append_16) $(am__append_19)
+EXTRA_DIST = description.txt psensor.schemas
+@GCONF_TRUE@schemadir = $(GCONF_SCHEMA_FILE_DIR)
+@GCONF_TRUE@schema_DATA = psensor.schemas
all: all-recursive
.SUFFIXES:
$(am__aclocal_m4_deps):
install-binPROGRAMS: $(bin_PROGRAMS)
@$(NORMAL_INSTALL)
- test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+ fi; \
for p in $$list; do echo "$$p $$p"; done | \
sed 's/$(EXEEXT)$$//' | \
while read p p1; do if test -f $$p; \
clean-binPROGRAMS:
-test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
-psensor$(EXEEXT): $(psensor_OBJECTS) $(psensor_DEPENDENCIES)
+psensor$(EXEEXT): $(psensor_OBJECTS) $(psensor_DEPENDENCIES) $(EXTRA_psensor_DEPENDENCIES)
@rm -f psensor$(EXEEXT)
$(LINK) $(psensor_OBJECTS) $(psensor_LDADD) $(LIBS)
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cfg.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/graph.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/notify_cmd.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rsensor.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ui.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ui_appindicator.Po@am__quote@
@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
install-man1: $(dist_man_MANS)
@$(NORMAL_INSTALL)
- test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)"
- @list=''; test -n "$(man1dir)" || exit 0; \
- { for i in $$list; do echo "$$i"; done; \
- l2='$(dist_man_MANS)'; for i in $$l2; do echo "$$i"; done | \
- sed -n '/\.1[a-z]*$$/p'; \
+ @list1=''; \
+ list2='$(dist_man_MANS)'; \
+ test -n "$(man1dir)" \
+ && test -n "`echo $$list1$$list2`" \
+ || exit 0; \
+ echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \
+ { for i in $$list1; do echo "$$i"; done; \
+ if test -n "$$list2"; then \
+ for i in $$list2; do echo "$$i"; done \
+ | sed -n '/\.1[a-z]*$$/p'; \
+ fi; \
} | while read p; do \
if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; echo "$$p"; \
sed -n '/\.1[a-z]*$$/p'; \
} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
-e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
- test -z "$$files" || { \
- echo " ( cd '$(DESTDIR)$(man1dir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(man1dir)" && rm -f $$files; }
+ dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir)
+install-schemaDATA: $(schema_DATA)
+ @$(NORMAL_INSTALL)
+ @list='$(schema_DATA)'; test -n "$(schemadir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(schemadir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(schemadir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(schemadir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(schemadir)" || exit $$?; \
+ done
+
+uninstall-schemaDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(schema_DATA)'; test -n "$(schemadir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(schemadir)'; $(am__uninstall_files_from_dir)
# This directory's subdirectories are mostly independent; you can cd
# into them and run `make' without going through this Makefile.
done
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
- test -d "$(distdir)/$$subdir" \
- || $(MKDIR_P) "$(distdir)/$$subdir" \
- || exit 1; \
- fi; \
- done
- @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
- if test "$$subdir" = .; then :; else \
+ $(am__make_dryrun) \
+ || test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
$(am__relativize); \
new_distdir=$$reldir; \
done
check-am: all-am
check: check-recursive
-all-am: Makefile $(PROGRAMS) $(MANS)
+all-am: Makefile $(PROGRAMS) $(MANS) $(DATA)
installdirs: installdirs-recursive
installdirs-am:
- for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)"; do \
+ for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(schemadir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-recursive
installcheck: installcheck-recursive
install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
mostlyclean-generic:
clean-generic:
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
+@GCONF_FALSE@install-data-local:
clean: clean-recursive
clean-am: clean-binPROGRAMS clean-generic mostlyclean-am
info-am:
-install-data-am: install-man
+install-data-am: install-data-local install-man install-schemaDATA
install-dvi: install-dvi-recursive
ps-am:
-uninstall-am: uninstall-binPROGRAMS uninstall-man
+uninstall-am: uninstall-binPROGRAMS uninstall-man uninstall-schemaDATA
uninstall-man: uninstall-man1
clean-generic ctags ctags-recursive distclean \
distclean-compile distclean-generic distclean-tags distdir dvi \
dvi-am html html-am info info-am install install-am \
- install-binPROGRAMS install-data install-data-am install-dvi \
- install-dvi-am install-exec install-exec-am install-html \
- install-html-am install-info install-info-am install-man \
- install-man1 install-pdf install-pdf-am install-ps \
- install-ps-am install-strip installcheck installcheck-am \
- installdirs installdirs-am maintainer-clean \
- maintainer-clean-generic mostlyclean mostlyclean-compile \
- mostlyclean-generic pdf pdf-am ps ps-am tags tags-recursive \
- uninstall uninstall-am uninstall-binPROGRAMS uninstall-man \
- uninstall-man1
-
+ install-binPROGRAMS install-data install-data-am \
+ install-data-local install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-man1 install-pdf \
+ install-pdf-am install-ps install-ps-am install-schemaDATA \
+ install-strip installcheck installcheck-am installdirs \
+ installdirs-am maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic pdf pdf-am \
+ ps ps-am tags tags-recursive uninstall uninstall-am \
+ uninstall-binPROGRAMS uninstall-man uninstall-man1 \
+ uninstall-schemaDATA
+
+
+@GCONF_TRUE@install-data-local:
+@GCONF_TRUE@ GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE) $(GCONFTOOL) --makefile-install-rule $(top_srcdir)/src/$(schema_DATA)
psensor.1: main.c $(top_srcdir)/configure.ac
$(MAKE) $(AM_MAKEFLAGS) psensor$(EXEEXT)
/*
- * Copyright (C) 2010-2012 jeanfi@gmail.com
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
#include <string.h>
#include <ctype.h>
-#include <gconf/gconf-client.h>
-
#include "cfg.h"
+#include "log.h"
+
+static const char *KEY_SENSORS = "/apps/psensor/sensors";
+
+static const char *ATT_SENSOR_ALARM_ENABLED = "alarm/enabled";
+static const char *ATT_SENSOR_ALARM_HIGH_THRESHOLD = "alarm/high_threshold";
+static const char *ATT_SENSOR_ALARM_LOW_THRESHOLD = "alarm/low_threshold";
+static const char *ATT_SENSOR_COLOR = "color";
+static const char *ATT_SENSOR_ENABLED = "enabled";
+static const char *ATT_SENSOR_NAME = "name";
+static const char *ATT_SENSOR_APPINDICATOR_DISABLED = "appindicator/disabled";
+static const char *ATT_SENSOR_POSITION = "position";
+
+static const char *KEY_SENSOR_UPDATE_INTERVAL
+= "/apps/psensor/sensor/update_interval";
+
+static const char *KEY_GRAPH_UPDATE_INTERVAL
+= "/apps/psensor/graph/update_interval";
+
+static const char *KEY_GRAPH_MONITORING_DURATION
+= "/apps/psensor/graph/monitoring_duration";
+
+static const char *KEY_GRAPH_BACKGROUND_COLOR
+= "/apps/psensor/graph/background_color";
-#define KEY_SENSOR_UPDATE_INTERVAL "/apps/psensor/sensor/update_interval"
+static const char *DEFAULT_GRAPH_BACKGROUND_COLOR = "#e8f4e8f4a8f5";
-#define KEY_GRAPH_UPDATE_INTERVAL "/apps/psensor/graph/update_interval"
-#define KEY_GRAPH_MONITORING_DURATION "/apps/psensor/graph/monitoring_duration"
+static const char *KEY_GRAPH_BACKGROUND_ALPHA
+= "/apps/psensor/graph/background_alpha";
-#define KEY_GRAPH_BACKGROUND_COLOR "/apps/psensor/graph/background_color"
-#define DEFAULT_GRAPH_BACKGROUND_COLOR "#e8f4e8f4a8f5"
+static const char *KEY_GRAPH_FOREGROUND_COLOR
+= "/apps/psensor/graph/foreground_color";
+static const char *DEFAULT_GRAPH_FOREGROUND_COLOR = "#000000000000";
-#define KEY_GRAPH_BACKGROUND_ALPHA "/apps/psensor/graph/background_alpha"
-#define DEFAULT_GRAPH_BACKGROUND_ALPHA "1.0"
+static const char *KEY_ALPHA_CHANNEL_ENABLED
+= "/apps/psensor/graph/alpha_channel_enabled";
-#define KEY_GRAPH_FOREGROUND_COLOR "/apps/psensor/graph/foreground_color"
-#define DEFAULT_GRAPH_FOREGROUND_COLOR "#000000000000"
+static const char *KEY_INTERFACE_SENSORLIST_POSITION
+= "/apps/psensor/interface/sensorlist_position";
-#define KEY_ALPHA_CHANNEL_ENABLED "/apps/psensor/graph/alpha_channel_enabled"
-#define DEFAULT_ALPHA_CHANNEL_ENABLED 0
+static const char *KEY_INTERFACE_WINDOW_DECORATION_DISABLED
+= "/apps/psensor/interface/window_decoration_disabled";
-#define KEY_INTERFACE_SENSORLIST_POSITION \
-"/apps/psensor/interface/sensorlist_position"
+static const char *KEY_INTERFACE_WINDOW_KEEP_BELOW_ENABLED
+= "/apps/psensor/interface/window_keep_below_enabled";
-#define KEY_INTERFACE_WINDOW_DECORATION_DISABLED \
-"/apps/psensor/interface/window_decoration_disabled"
+static const char *KEY_INTERFACE_MENU_BAR_DISABLED
+= "/apps/psensor/interface/menu_bar_disabled";
-#define KEY_INTERFACE_WINDOW_KEEP_BELOW_ENABLED \
-"/apps/psensor/interface/window_keep_below_enabled"
+static const char *KEY_INTERFACE_UNITY_LAUNCHER_COUNT_DISABLED
+= "/apps/psensor/interface/unity_launcher_count_disabled";
-#define KEY_INTERFACE_MENU_BAR_DISABLED \
-"/apps/psensor/interface/menu_bar_disabled"
+static const char *KEY_INTERFACE_HIDE_ON_STARTUP
+= "/apps/psensor/interface/hide_on_startup";
-#define KEY_INTERFACE_UNITY_LAUNCHER_COUNT_DISABLED \
-"/apps/psensor/interface/unity_launcher_count_disabled"
+static const char *KEY_INTERFACE_WINDOW_RESTORE_ENABLED
+= "/apps/psensor/interface/window_restore_enabled";
-#define KEY_INTERFACE_HIDE_ON_STARTUP \
-"/apps/psensor/interface/hide_on_startup"
+static const char *KEY_INTERFACE_WINDOW_X = "/apps/psensor/interface/window_x";
+static const char *KEY_INTERFACE_WINDOW_Y = "/apps/psensor/interface/window_y";
+static const char *KEY_INTERFACE_WINDOW_W = "/apps/psensor/interface/window_w";
+static const char *KEY_INTERFACE_WINDOW_H = "/apps/psensor/interface/window_h";
-#define KEY_INTERFACE_WINDOW_RESTORE_ENABLED \
-"/apps/psensor/interface/window_restore_enabled"
+static const char *KEY_INTERFACE_WINDOW_DIVIDER_POS
+= "/apps/psensor/interface/window_divider_pos";
-#define KEY_INTERFACE_WINDOW_X "/apps/psensor/interface/window_x"
-#define KEY_INTERFACE_WINDOW_Y "/apps/psensor/interface/window_y"
-#define KEY_INTERFACE_WINDOW_W "/apps/psensor/interface/window_w"
-#define KEY_INTERFACE_WINDOW_H "/apps/psensor/interface/window_h"
+static const char *KEY_INTERFACE_TEMPERATURE_UNIT
+= "/apps/psensor/interface/temperature_unit";
-#define KEY_INTERFACE_WINDOW_DIVIDER_POS \
-"/apps/psensor/interface/window_divider_pos"
+static const char *KEY_SLOG_ENABLED = "/apps/psensor/slog/enabled";
+static const char *KEY_SLOG_INTERVAL = "/apps/psensor/slog/interval";
-GConfClient *client;
+static const char *KEY_NOTIFICATION_SCRIPT = "/apps/psensor/notif_script";
-static char *get_string(char *key, char *default_value)
+static GConfClient *client;
+
+static char *get_string(const char *key, const char *default_value)
{
- char *value = gconf_client_get_string(client,
- key,
- NULL);
+ char *value;
+
+ value = gconf_client_get_string(client, key, NULL);
if (!value) {
value = strdup(default_value);
-
gconf_client_set_string(client, key, default_value, NULL);
}
return value;
}
-static struct color *config_get_background_color()
+char *config_get_notif_script()
+{
+ char *str;
+
+ str = gconf_client_get_string(client, KEY_NOTIFICATION_SCRIPT, NULL);
+ if (str && !strlen(str)) {
+ free(str);
+ str = NULL;
+ }
+
+ return str;
+}
+
+void config_set_notif_script(const char *str)
{
+ if (str && strlen(str) > 0)
+ gconf_client_set_string(client,
+ KEY_NOTIFICATION_SCRIPT, str, NULL);
+ else
+ gconf_client_set_string(client,
+ KEY_NOTIFICATION_SCRIPT, "", NULL);
+}
- char *scolor = get_string(KEY_GRAPH_BACKGROUND_COLOR,
- DEFAULT_GRAPH_BACKGROUND_COLOR);
+static struct color *get_background_color()
+{
+ char *scolor;
+ struct color *c;
- struct color *c = string_to_color(scolor);
+ scolor = get_string(KEY_GRAPH_BACKGROUND_COLOR,
+ DEFAULT_GRAPH_BACKGROUND_COLOR);
+ c = str_to_color(scolor);
free(scolor);
- if (c == NULL)
+ if (!c)
return color_new(0xffff, 0xffff, 0xffff);
return c;
}
-static struct color *config_get_foreground_color()
+static struct color *get_foreground_color()
{
- char *scolor = get_string(KEY_GRAPH_FOREGROUND_COLOR,
- DEFAULT_GRAPH_FOREGROUND_COLOR);
+ char *scolor;
+ struct color *c;
- struct color *c = string_to_color(scolor);
+ scolor = get_string(KEY_GRAPH_FOREGROUND_COLOR,
+ DEFAULT_GRAPH_FOREGROUND_COLOR);
+ c = str_to_color(scolor);
free(scolor);
- if (c == NULL)
+ if (!c)
return color_new(0x0000, 0x0000, 0x0000);
return c;
}
-static int config_is_alpha_channel_enabled()
+static bool is_alpha_channel_enabled()
{
- gboolean b = gconf_client_get_bool(client,
- KEY_ALPHA_CHANNEL_ENABLED,
- NULL);
-
- return b == TRUE;
+ return gconf_client_get_bool(client, KEY_ALPHA_CHANNEL_ENABLED, NULL);
}
-static int config_get_sensorlist_position()
+static enum sensorlist_position get_sensorlist_position()
{
return gconf_client_get_int(client,
KEY_INTERFACE_SENSORLIST_POSITION, NULL);
}
-static void config_set_sensorlist_position(int pos)
+static void set_sensorlist_position(enum sensorlist_position pos)
{
gconf_client_set_int(client,
KEY_INTERFACE_SENSORLIST_POSITION, pos, NULL);
}
-static double config_get_graph_background_alpha()
+static double get_graph_background_alpha()
{
- double a = gconf_client_get_float(client,
- KEY_GRAPH_BACKGROUND_ALPHA,
- NULL);
+ double a;
+ a = gconf_client_get_float(client, KEY_GRAPH_BACKGROUND_ALPHA, NULL);
if (a == 0)
gconf_client_set_float(client,
KEY_GRAPH_BACKGROUND_ALPHA, 1.0, NULL);
return a;
}
-static void config_set_graph_background_alpha(double alpha)
+static void set_graph_background_alpha(double alpha)
{
gconf_client_set_float(client, KEY_GRAPH_BACKGROUND_ALPHA, alpha, NULL);
}
-static void config_set_background_color(struct color *color)
+static void set_background_color(const struct color *color)
{
- char *scolor = color_to_string(color);
+ char *scolor;
+ scolor = color_to_str(color);
if (!scolor)
scolor = strdup(DEFAULT_GRAPH_BACKGROUND_COLOR);
free(scolor);
}
-static void config_set_foreground_color(struct color *color)
+static void set_foreground_color(const struct color *color)
{
- char *scolor = color_to_string(color);
+ char *str;
- if (!scolor)
- scolor = strdup(DEFAULT_GRAPH_FOREGROUND_COLOR);
+ str = color_to_str(color);
+ if (!str)
+ str = strdup(DEFAULT_GRAPH_FOREGROUND_COLOR);
- gconf_client_set_string(client,
- KEY_GRAPH_FOREGROUND_COLOR, scolor, NULL);
+ gconf_client_set_string(client, KEY_GRAPH_FOREGROUND_COLOR, str, NULL);
- free(scolor);
+ free(str);
}
-static char *config_get_sensor_key(char *sensor_name)
+static char *get_sensor_att_key(const char *sid, const char *att)
{
- char *escaped_name = gconf_escape_key(sensor_name, -1);
- /* /apps/psensor/sensors/[sensor_name]/color */
- char *key = malloc(22 + 2 * strlen(escaped_name) + 6 + 1);
+ char *esc_sid, *key;
+
+ esc_sid = gconf_escape_key(sid, -1);
+ /* [KEY_SENSORS]/[esc_sid]/[att] */
+ key = malloc(strlen(KEY_SENSORS)
+ + 1 + 2 * strlen(esc_sid)
+ + 1 + strlen(att) + 1);
- sprintf(key, "/apps/psensor/sensors/%s/color", escaped_name);
+ sprintf(key, "%s/%s/%s", KEY_SENSORS, esc_sid, att);
- free(escaped_name);
+ free(esc_sid);
return key;
}
-struct color *config_get_sensor_color(char *sensor_name,
- struct color *default_color)
+struct color *
+config_get_sensor_color(const char *sid, const struct color *dft)
{
- char *key = config_get_sensor_key(sensor_name);
+ char *key, *scolor;
+ struct color *color;
- char *scolor = gconf_client_get_string(client,
- key,
- NULL);
+ key = get_sensor_att_key(sid, ATT_SENSOR_COLOR);
- struct color *color = NULL;
+ scolor = gconf_client_get_string(client, key, NULL);
+
+ color = NULL;
if (scolor)
- color = string_to_color(scolor);
+ color = str_to_color(scolor);
if (!scolor || !color) {
- color = color_new(default_color->red,
- default_color->green, default_color->blue);
-
- scolor = color_to_string(color);
-
+ color = color_new(dft->red, dft->green, dft->blue);
+ scolor = color_to_str(color);
gconf_client_set_string(client, key, scolor, NULL);
}
return color;
}
-void config_set_sensor_color(char *sensor_name, struct color *color)
+void config_set_sensor_color(const char *sid, const struct color *color)
{
- char *key = config_get_sensor_key(sensor_name);
+ char *key, *scolor;
- char *scolor = color_to_string(color);
+ key = get_sensor_att_key(sid, ATT_SENSOR_COLOR);
+ scolor = color_to_str(color);
gconf_client_set_string(client, key, scolor, NULL);
free(scolor);
+ free(key);
}
-int config_get_sensor_alarm_limit(char *sensor_name, int def)
+int config_get_sensor_alarm_high_threshold(const char *sid)
{
int res;
- char *escaped_name = gconf_escape_key(sensor_name, -1);
- /* /apps/psensor/sensors/[sensor_name]/alarmlimit */
- char *key = malloc(22 + 2 * strlen(escaped_name) + 1 + 10 + 1);
-
- sprintf(key, "/apps/psensor/sensors/%s/alarmlimit", escaped_name);
+ char *key;
+ key = get_sensor_att_key(sid, ATT_SENSOR_ALARM_HIGH_THRESHOLD);
res = gconf_client_get_int(client, key, NULL);
+ free(key);
- free(escaped_name);
-
- return res ? res : def;
+ return res;
}
-void config_set_sensor_alarm_limit(char *sensor_name, int alarm_limit)
+void
+config_set_sensor_alarm_high_threshold(const char *sid, int threshold)
{
- char *escaped_name = gconf_escape_key(sensor_name, -1);
- /* /apps/psensor/sensors/[sensor_name]/alarmlimit */
- char *key = malloc(22 + 2 * strlen(escaped_name) + 1 + 10 + 1);
+ char *key;
+
+ key = get_sensor_att_key(sid, ATT_SENSOR_ALARM_HIGH_THRESHOLD);
+ gconf_client_set_int(client, key, threshold, NULL);
+ free(key);
+}
- sprintf(key, "/apps/psensor/sensors/%s/alarmlimit", escaped_name);
+int config_get_sensor_alarm_low_threshold(const char *sid)
+{
+ int res;
+ char *key;
- gconf_client_set_int(client, key, alarm_limit, NULL);
+ key = get_sensor_att_key(sid, ATT_SENSOR_ALARM_LOW_THRESHOLD);
+ res = gconf_client_get_int(client, key, NULL);
+ free(key);
- free(escaped_name);
+ return res;
}
-int config_get_sensor_alarm_enabled(char *sid)
+void
+config_set_sensor_alarm_low_threshold(const char *sid, int threshold)
{
- gboolean res;
- char *escaped_name = gconf_escape_key(sid, -1);
- /* /apps/psensor/sensors/[sensor_name]/alarmenabled */
- char *key = malloc(22 + 2 * strlen(escaped_name) + 1 + 12 + 1);
+ char *key;
- sprintf(key, "/apps/psensor/sensors/%s/alarmenabled", escaped_name);
+ key = get_sensor_att_key(sid, ATT_SENSOR_ALARM_LOW_THRESHOLD);
+ gconf_client_set_int(client, key, threshold, NULL);
+ free(key);
+}
- res = gconf_client_get_bool(client, key, NULL);
+bool config_get_sensor_alarm_enabled(const char *sid)
+{
+ gboolean b;
+ char *key;
- free(escaped_name);
+ key = get_sensor_att_key(sid, ATT_SENSOR_ALARM_ENABLED);
+ b = gconf_client_get_bool(client, key, NULL);
+ free(key);
- return res == TRUE;
+ return b;
}
-void config_set_sensor_alarm_enabled(char *sid, int enabled)
+void config_set_sensor_alarm_enabled(const char *sid, bool enabled)
{
- char *escaped_name = gconf_escape_key(sid, -1);
- /* /apps/psensor/sensors/[sensor_name]/alarmenabled */
- char *key = malloc(22 + 2 * strlen(escaped_name) + 1 + 12 + 1);
-
- sprintf(key, "/apps/psensor/sensors/%s/alarmenabled", escaped_name);
+ char *key;
+ key = get_sensor_att_key(sid, ATT_SENSOR_ALARM_ENABLED);
gconf_client_set_bool(client, key, enabled, NULL);
-
- free(escaped_name);
+ free(key);
}
-int config_is_sensor_enabled(char *sid)
+bool config_is_sensor_enabled(const char *sid)
{
- gboolean res;
- char *escaped_name = gconf_escape_key(sid, -1);
- /* /apps/psensor/sensors/[sensor_name]/enabled */
- char *key = malloc(22 + 2 * strlen(escaped_name) + 1 + 7 + 1);
+ gboolean b;
+ char *key;
- sprintf(key, "/apps/psensor/sensors/%s/enabled", escaped_name);
+ key = get_sensor_att_key(sid, ATT_SENSOR_ENABLED);
+ b = gconf_client_get_bool(client, key, NULL);
+ free(key);
- res = gconf_client_get_bool(client, key, NULL);
+ return b;
+}
- free(escaped_name);
+void config_set_sensor_enabled(const char *sid, bool enabled)
+{
+ char *key;
- return res == TRUE;
+ key = get_sensor_att_key(sid, ATT_SENSOR_ENABLED);
+ gconf_client_set_bool(client, key, enabled, NULL);
+ free(key);
+}
+char *config_get_sensor_name(const char *sid)
+{
+ char *name, *key;
+
+ key = get_sensor_att_key(sid, ATT_SENSOR_NAME);
+ name = gconf_client_get_string(client, key, NULL);
+ free(key);
+
+ return name;
}
-void config_set_sensor_enabled(char *sid, int enabled)
+void config_set_sensor_name(const char *sid, const char *name)
{
- char *escaped_name = gconf_escape_key(sid, -1);
- /* /apps/psensor/sensors/[sensor_name]/enabled */
- char *key = malloc(22 + 2 * strlen(escaped_name) + 1 + 7 + 1);
+ char *key;
+
+ key = get_sensor_att_key(sid, ATT_SENSOR_NAME);
+ gconf_client_set_string(client, key, name, NULL);
+ free(key);
+}
- sprintf(key, "/apps/psensor/sensors/%s/enabled", escaped_name);
+int config_get_sensor_position(const char *sid)
+{
+ char *key;
+ int pos;
- gconf_client_set_bool(client, key, enabled, NULL);
+ key = get_sensor_att_key(sid, ATT_SENSOR_POSITION);
+ pos = gconf_client_get_int(client, key, NULL);
+ free(key);
- free(escaped_name);
+ return pos;
}
-char *config_get_sensor_name(char *sid)
+void config_set_sensor_position(const char *sid, int pos)
{
- char *res;
- char *escaped_name = gconf_escape_key(sid, -1);
- /* /apps/psensor/sensors/[sensor_name]/name */
- char *key = malloc(22 + 2 * strlen(escaped_name) + 1 + 4 + 1);
+ char *key;
- sprintf(key, "/apps/psensor/sensors/%s/name", escaped_name);
+ key = get_sensor_att_key(sid, ATT_SENSOR_POSITION);
+ gconf_client_set_int(client, key, pos, NULL);
+ free(key);
+}
- res = gconf_client_get_string(client, key, NULL);
+bool config_is_appindicator_enabled(const char *sid)
+{
+ char *key;
+ gboolean b;
- free(escaped_name);
+ key = get_sensor_att_key(sid, ATT_SENSOR_APPINDICATOR_DISABLED);
+ b = gconf_client_get_bool(client, key, NULL);
+ free(key);
- return res;
+ return !b;
}
-void config_set_sensor_name(char *sid, const char *name)
+void config_set_appindicator_enabled(const char *sid, bool enabled)
{
- char *escaped_name = gconf_escape_key(sid, -1);
- /* /apps/psensor/sensors/[sensor_name]/name */
- char *key = malloc(22 + 2 * strlen(escaped_name) + 1 + 4 + 1);
+ char *key;
- sprintf(key, "/apps/psensor/sensors/%s/name", escaped_name);
+ key = get_sensor_att_key(sid, ATT_SENSOR_APPINDICATOR_DISABLED);
+ gconf_client_set_bool(client, key, !enabled, NULL);
+ free(key);
+}
- gconf_client_set_string(client, key, name, NULL);
+bool is_slog_enabled()
+{
+ return gconf_client_get_bool(client, KEY_SLOG_ENABLED, NULL);
+}
- free(escaped_name);
+static void set_slog_enabled(bool enabled)
+{
+ gconf_client_set_bool(client, KEY_SLOG_ENABLED, enabled, NULL);
}
-static int config_is_window_decoration_enabled()
+void config_slog_enabled_notify_add(GConfClientNotifyFunc cbk, void *data)
{
- gboolean b;
+ log_debug("config_slog_enabled_notify_add");
+ gconf_client_add_dir(client,
+ KEY_SLOG_ENABLED,
+ GCONF_CLIENT_PRELOAD_NONE,
+ NULL);
+ gconf_client_notify_add(client,
+ KEY_SLOG_ENABLED,
+ cbk,
+ data,
+ NULL,
+ NULL);
+}
- b = gconf_client_get_bool(client,
- KEY_INTERFACE_WINDOW_DECORATION_DISABLED,
- NULL);
+int config_get_slog_interval()
+{
+ int res;
- return b == FALSE;
+ res = gconf_client_get_int(client, KEY_SLOG_INTERVAL, NULL);
+
+ if (res <= 0)
+ return 300;
+ else
+ return res;
}
-static int config_is_window_keep_below_enabled()
+static void set_slog_interval(int interval)
{
- gboolean b;
+ if (interval <= 0)
+ interval = 300;
- b = gconf_client_get_bool(client,
- KEY_INTERFACE_WINDOW_KEEP_BELOW_ENABLED,
- NULL);
+ gconf_client_set_int(client, KEY_SLOG_INTERVAL, interval, NULL);
+}
- return b == TRUE;
+static bool is_window_decoration_enabled()
+{
+ return !gconf_client_get_bool(client,
+ KEY_INTERFACE_WINDOW_DECORATION_DISABLED,
+ NULL);
}
-static void config_set_window_decoration_enabled(int enabled)
+static bool is_window_keep_below_enabled()
{
- if (enabled)
- gconf_client_set_bool
- (client,
- KEY_INTERFACE_WINDOW_DECORATION_DISABLED, FALSE, NULL);
- else
- gconf_client_set_bool
- (client,
- KEY_INTERFACE_WINDOW_DECORATION_DISABLED, TRUE, NULL);
+ return gconf_client_get_bool(client,
+ KEY_INTERFACE_WINDOW_KEEP_BELOW_ENABLED,
+ NULL);
}
-static void config_set_window_keep_below_enabled(int enabled)
+static void set_window_decoration_enabled(bool enabled)
{
- if (enabled)
- gconf_client_set_bool(client,
- KEY_INTERFACE_WINDOW_KEEP_BELOW_ENABLED,
- TRUE, NULL);
- else
- gconf_client_set_bool(client,
- KEY_INTERFACE_WINDOW_KEEP_BELOW_ENABLED,
- FALSE, NULL);
+ gconf_client_set_bool
+ (client,
+ KEY_INTERFACE_WINDOW_DECORATION_DISABLED, !enabled, NULL);
}
-void config_init()
+static void set_window_keep_below_enabled(bool enabled)
+{
+ gconf_client_set_bool(client,
+ KEY_INTERFACE_WINDOW_KEEP_BELOW_ENABLED,
+ enabled, NULL);
+}
+
+/*
+ * Initializes the GConf client.
+ */
+static void init()
{
- client = gconf_client_get_default();
+ if (!client)
+ client = gconf_client_get_default();
}
void config_cleanup()
{
struct config *c;
+ init();
+
c = malloc(sizeof(struct config));
- c->graph_bgcolor = config_get_background_color();
- c->graph_fgcolor = config_get_foreground_color();
- c->graph_bg_alpha = config_get_graph_background_alpha();
- c->alpha_channel_enabled = config_is_alpha_channel_enabled();
- c->sensorlist_position = config_get_sensorlist_position();
- c->window_decoration_enabled = config_is_window_decoration_enabled();
- c->window_keep_below_enabled = config_is_window_keep_below_enabled();
+ c->graph_bgcolor = get_background_color();
+ c->graph_fgcolor = get_foreground_color();
+ c->graph_bg_alpha = get_graph_background_alpha();
+ c->alpha_channel_enabled = is_alpha_channel_enabled();
+ c->sensorlist_position = get_sensorlist_position();
+ c->window_decoration_enabled = is_window_decoration_enabled();
+ c->window_keep_below_enabled = is_window_keep_below_enabled();
+ c->slog_enabled = is_slog_enabled();
+ c->slog_interval = config_get_slog_interval();
c->sensor_update_interval
= gconf_client_get_int(client, KEY_SENSOR_UPDATE_INTERVAL, NULL);
c->window_h = 200;
}
+ c->temperature_unit = gconf_client_get_int
+ (client, KEY_INTERFACE_TEMPERATURE_UNIT, NULL);
+
return c;
}
-void config_save(struct config *c)
+void config_save(const struct config *c)
{
- config_set_background_color(c->graph_bgcolor);
- config_set_foreground_color(c->graph_fgcolor);
- config_set_graph_background_alpha(c->graph_bg_alpha);
- config_set_sensorlist_position(c->sensorlist_position);
- config_set_window_decoration_enabled(c->window_decoration_enabled);
- config_set_window_keep_below_enabled(c->window_keep_below_enabled);
+ set_background_color(c->graph_bgcolor);
+ set_foreground_color(c->graph_fgcolor);
+ set_graph_background_alpha(c->graph_bg_alpha);
+ set_sensorlist_position(c->sensorlist_position);
+ set_window_decoration_enabled(c->window_decoration_enabled);
+ set_window_keep_below_enabled(c->window_keep_below_enabled);
+ set_slog_enabled(c->slog_enabled);
+ set_slog_interval(c->slog_interval);
gconf_client_set_int(client,
KEY_GRAPH_UPDATE_INTERVAL,
c->window_restore_enabled,
NULL);
- gconf_client_set_int(client,
- KEY_INTERFACE_WINDOW_X,
- c->window_x,
- NULL);
- gconf_client_set_int(client,
- KEY_INTERFACE_WINDOW_Y,
- c->window_y,
- NULL);
- gconf_client_set_int(client,
- KEY_INTERFACE_WINDOW_W,
- c->window_w,
- NULL);
- gconf_client_set_int(client,
- KEY_INTERFACE_WINDOW_H,
- c->window_h,
- NULL);
+ gconf_client_set_int(client, KEY_INTERFACE_WINDOW_X, c->window_x, NULL);
+ gconf_client_set_int(client, KEY_INTERFACE_WINDOW_Y, c->window_y, NULL);
+ gconf_client_set_int(client, KEY_INTERFACE_WINDOW_W, c->window_w, NULL);
+ gconf_client_set_int(client, KEY_INTERFACE_WINDOW_H, c->window_h, NULL);
gconf_client_set_int(client,
KEY_INTERFACE_WINDOW_DIVIDER_POS,
c->window_divider_pos,
NULL);
+
+ gconf_client_set_int(client,
+ KEY_INTERFACE_TEMPERATURE_UNIT,
+ c->temperature_unit,
+ NULL);
}
/*
- * Copyright (C) 2010-2012 jeanfi@gmail.com
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
#ifndef _PSENSOR_CONFIG_H_
#define _PSENSOR_CONFIG_H_
+#include <gconf/gconf-client.h>
+
+#include "bool.h"
#include "color.h"
+enum temperature_unit {
+ CELCIUS,
+ FAHRENHEIT
+};
+
enum sensorlist_position {
SENSORLIST_POSITION_RIGHT,
SENSORLIST_POSITION_LEFT,
double graph_bg_alpha;
- int alpha_channel_enabled;
+ bool alpha_channel_enabled;
/*
- Position of the sensors list table
+ * Position of the sensors list table
*/
enum sensorlist_position sensorlist_position;
- int window_decoration_enabled;
- int window_keep_below_enabled;
- int window_restore_enabled;
+ bool window_decoration_enabled;
+ bool window_keep_below_enabled;
+ bool window_restore_enabled;
/* Last saved position of the window. */
int window_x;
int window_y;
int sensor_values_max_length;
int sensor_update_interval;
- int menu_bar_disabled;
+ bool menu_bar_disabled;
- int unity_launcher_count_disabled;
+ bool unity_launcher_count_disabled;
int hide_on_startup;
+
+ enum temperature_unit temperature_unit;
+
+ bool slog_enabled;
+ int slog_interval;
};
/*
*/
struct config *config_load();
-void config_save(struct config *);
-
-void config_init();
+void config_save(const struct config *);
void config_cleanup();
-struct color *config_get_sensor_color(char *, struct color *);
-void config_set_sensor_color(char *, struct color *);
+struct color *config_get_sensor_color(const char *sid, const struct color *);
+void config_set_sensor_color(const char *sid, const struct color *);
+
+int config_get_sensor_alarm_high_threshold(const char *);
+void config_set_sensor_alarm_high_threshold(const char *, int);
+
+int config_get_sensor_alarm_low_threshold(const char *);
+void config_set_sensor_alarm_low_threshold(const char *, int);
+
+bool config_get_sensor_alarm_enabled(const char *);
+void config_set_sensor_alarm_enabled(const char *, bool);
+
+bool config_is_sensor_enabled(const char *);
+void config_set_sensor_enabled(const char *, bool);
+
+char *config_get_sensor_name(const char *);
+void config_set_sensor_name(const char *, const char *);
-int config_get_sensor_alarm_limit(char *, int);
-void config_set_sensor_alarm_limit(char *, int);
+bool config_is_appindicator_enabled(const char *);
+void config_set_appindicator_enabled(const char *, bool);
-int config_get_sensor_alarm_enabled(char *);
-void config_set_sensor_alarm_enabled(char *, int);
+void config_slog_enabled_notify_add(GConfClientNotifyFunc cbk, void *data);
+bool is_slog_enabled();
-int config_is_sensor_enabled(char *);
-void config_set_sensor_enabled(char *, int);
+int config_get_slog_interval();
-char *config_get_sensor_name(char *);
-void config_set_sensor_name(char *, const char *);
+int config_get_sensor_position(const char *);
+void config_set_sensor_position(const char *, int);
+char *config_get_notif_script();
+void config_set_notif_script(const char *);
#endif
+++ /dev/null
-/*
- * Copyright (C) 2010-2012 jeanfi@gmail.com
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- *
- * This program 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
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301 USA
- */
-
-/*
- * gtk_dialog_get_content_area exists since gtk 2.14 As debian 5.0.6
- * (lenny) is using gtk 2.12 defines the function by using a macro.
- */
-#if !defined(gtk_dialog_get_content_area)
-#define gtk_dialog_get_content_area(dialog) (GTK_DIALOG(dialog)->vbox)
-#endif
* the temperature of the motherboard and CPU sensors (using lm\-sensors).
* the temperature of the NVidia GPUs (using XNVCtrl).
* the temperature and fan rotation speed of the ATI GPUs.
- * the temperature of the Hard Disk Drives (using hddtemp).
+ * the temperature of the Hard Disk Drives (using hddtemp or atasmart
+ library).
* the rotation speed of the fans (using lm\-sensors).
* the sensors of a remote computer (using psensor\-server).
more information.
To retrieve the temperature of the Hard Disk Drives, the hddtemp
-daemon must be running.
+daemon must be running or atasmart used ('\-\-use\-libatasmart').
For remote monitoring:
* start psensor\-server(1) on the remote computer
present in the directory /usr/lib and psensor has been compiled with
the ATI ADL SDK.
-Log is written to '$HOME/.psensor/log'.
+Log messages are written to '$HOME/.psensor/log'.
+
+By default, if a Psensor process is already running, the command
+psensor will show the graph window then exit.
+It is possible to run multiple instances of Psensor by using the
+option '\-\-new\-instance'.
[SEE ALSO]
gladedir = $(pkgdatadir)
glade_DATA = \
+ psensor.glade \
sensor-edit.glade \
psensor-pref.glade
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@SET_MAKE@
VPATH = @srcdir@
+am__make_dryrun = \
+ { \
+ am__dry=no; \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
+ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+ *) \
+ for am__flg in $$MAKEFLAGS; do \
+ case $$am__flg in \
+ *=*|--*) ;; \
+ *n*) am__dry=yes; break;; \
+ esac; \
+ done;; \
+ esac; \
+ test $$am__dry = yes; \
+ }
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
CONFIG_CLEAN_VPATH_FILES =
SOURCES =
DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
am__installdirs = "$(DESTDIR)$(gladedir)"
DATA = $(glade_DATA)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
AMTAR = @AMTAR@
APPINDICATOR_CFLAGS = @APPINDICATOR_CFLAGS@
APPINDICATOR_LIBS = @APPINDICATOR_LIBS@
+AR = @AR@
+ATASMART_CFLAGS = @ATASMART_CFLAGS@
+ATASMART_LIBS = @ATASMART_LIBS@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+GCONFTOOL = @GCONFTOOL@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
+GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
+GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GTK_LIBS = @GTK_LIBS@
GTOP_CFLAGS = @GTOP_CFLAGS@
GTOP_LIBS = @GTOP_LIBS@
+HAVE_CPPCHECK = @HAVE_CPPCHECK@
HELP2MAN = @HELP2MAN@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
POSUB = @POSUB@
+PTHREAD_LIBS = @PTHREAD_LIBS@
RANLIB = @RANLIB@
SENSORS_LIBS = @SENSORS_LIBS@
SET_MAKE = @SET_MAKE@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
top_srcdir = @top_srcdir@
gladedir = $(pkgdatadir)
glade_DATA = \
+ psensor.glade \
sensor-edit.glade \
psensor-pref.glade
$(am__aclocal_m4_deps):
install-gladeDATA: $(glade_DATA)
@$(NORMAL_INSTALL)
- test -z "$(gladedir)" || $(MKDIR_P) "$(DESTDIR)$(gladedir)"
@list='$(glade_DATA)'; test -n "$(gladedir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(gladedir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(gladedir)" || exit 1; \
+ fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
@$(NORMAL_UNINSTALL)
@list='$(glade_DATA)'; test -n "$(gladedir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
- test -n "$$files" || exit 0; \
- echo " ( cd '$(DESTDIR)$(gladedir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(gladedir)" && rm -f $$files
+ dir='$(DESTDIR)$(gladedir)'; $(am__uninstall_files_from_dir)
tags: TAGS
TAGS:
installcheck: installcheck-am
install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
mostlyclean-generic:
clean-generic:
<?xml version="1.0" encoding="UTF-8"?>
<interface>
- <requires lib="gtk+" version="2.18"/>
+ <!-- interface-requires gtk+ 3.0 -->
<object class="GtkDialog" id="dialog1">
<property name="can_focus">False</property>
<property name="border_width">5</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
- <property name="use_action_appearance">False</property>
<property name="use_stock">True</property>
</object>
<packing>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
- <property name="use_action_appearance">False</property>
<property name="use_stock">True</property>
</object>
<packing>
</packing>
</child>
<child>
- <object class="GtkTable" id="table1">
+ <object class="GtkNotebook" id="notebook">
<property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="n_rows">18</property>
- <property name="n_columns">3</property>
- <child>
- <object class="GtkLabel" id="label1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Graph Colors</property>
- <attributes>
- <attribute name="weight" value="bold"/>
- </attributes>
- </object>
- <packing>
- <property name="right_attach">3</property>
- <property name="x_padding">4</property>
- <property name="y_padding">4</property>
- </packing>
- </child>
+ <property name="can_focus">True</property>
<child>
- <object class="GtkLabel" id="label2">
+ <object class="GtkTable" id="table1">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Foreground:</property>
+ <property name="n_rows">8</property>
+ <property name="n_columns">3</property>
+ <child>
+ <object class="GtkLabel" id="label14">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Position of sensors table:</property>
+ </object>
+ <packing>
+ <property name="x_padding">14</property>
+ <property name="y_padding">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="hide_window_decoration">
+ <property name="label" translatable="yes">Hide window decoration</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="xalign">0</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="right_attach">3</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_padding">14</property>
+ <property name="y_padding">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="keep_window_below">
+ <property name="label" translatable="yes">Keep window below</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="xalign">0</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="right_attach">3</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_padding">14</property>
+ <property name="y_padding">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="enable_menu">
+ <property name="label" translatable="yes">Enable menu</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="xalign">0</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="right_attach">3</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="x_padding">14</property>
+ <property name="y_padding">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="enable_launcher_counter">
+ <property name="label" translatable="yes">Enable Unity Launcher counter</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="xalign">0</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="right_attach">3</property>
+ <property name="top_attach">4</property>
+ <property name="bottom_attach">5</property>
+ <property name="x_padding">14</property>
+ <property name="y_padding">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="hide_on_startup">
+ <property name="label" translatable="yes">Hide window on startup</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="xalign">0</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="right_attach">3</property>
+ <property name="top_attach">5</property>
+ <property name="bottom_attach">6</property>
+ <property name="x_padding">14</property>
+ <property name="y_padding">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="restore_window">
+ <property name="label" translatable="yes">Restore window position and size</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="xalign">0</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="right_attach">3</property>
+ <property name="top_attach">6</property>
+ <property name="bottom_attach">7</property>
+ <property name="x_padding">14</property>
+ <property name="y_padding">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="temperature_unit_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Temperature unit:</property>
+ </object>
+ <packing>
+ <property name="top_attach">7</property>
+ <property name="bottom_attach">8</property>
+ <property name="x_padding">14</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBoxText" id="temperature_unit">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="entry_text_column">0</property>
+ <property name="id_column">1</property>
+ <items>
+ <item translatable="yes">Celcius</item>
+ <item translatable="yes">Fahrenheit</item>
+ </items>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">7</property>
+ <property name="bottom_attach">8</property>
+ <property name="x_padding">4</property>
+ <property name="y_padding">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBox" id="sensors_list_position">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="model">position_list_store</property>
+ <property name="active">0</property>
+ <child>
+ <object class="GtkCellRendererText" id="cellrenderertext1"/>
+ <attributes>
+ <attribute name="text">0</attribute>
+ </attributes>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">3</property>
+ </packing>
+ </child>
</object>
- <packing>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_padding">14</property>
- <property name="y_padding">4</property>
- </packing>
</child>
- <child>
- <object class="GtkLabel" id="label3">
+ <child type="tab">
+ <object class="GtkLabel" id="Interface">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Background:</property>
+ <property name="label" translatable="yes">Interface</property>
</object>
<packing>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
- <property name="x_padding">14</property>
- <property name="y_padding">4</property>
+ <property name="tab_fill">False</property>
</packing>
</child>
<child>
- <object class="GtkLabel" id="label4">
+ <object class="GtkGrid" id="grid1">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Background opacity:</property>
- </object>
- <packing>
- <property name="right_attach">3</property>
- <property name="top_attach">3</property>
- <property name="bottom_attach">4</property>
- <property name="x_padding">14</property>
- <property name="y_padding">4</property>
- </packing>
- </child>
- <child>
- <object class="GtkColorButton" id="color_fg">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="use_action_appearance">False</property>
- <property name="color">#000000000000</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">3</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options"></property>
- <property name="x_padding">4</property>
- <property name="y_padding">4</property>
- </packing>
- </child>
- <child>
- <object class="GtkColorButton" id="color_bg">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="use_action_appearance">False</property>
- <property name="color">#000000000000</property>
+ <property name="valign">start</property>
+ <property name="row_homogeneous">True</property>
+ <child>
+ <object class="GtkColorButton" id="color_fg">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="halign">start</property>
+ <property name="margin_left">4</property>
+ <property name="margin_right">4</property>
+ <property name="margin_top">4</property>
+ <property name="margin_bottom">4</property>
+ <property name="color">#000000000000</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">1</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="valign">start</property>
+ <property name="margin_left">14</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Foreground:</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">1</property>
+ <property name="width">2</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_left">14</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Background:</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">2</property>
+ <property name="width">2</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkColorButton" id="color_bg">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="halign">start</property>
+ <property name="margin_left">4</property>
+ <property name="margin_right">4</property>
+ <property name="margin_top">4</property>
+ <property name="margin_bottom">4</property>
+ <property name="color">#000000000000</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">2</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_left">14</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Background opacity:</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">3</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_left">4</property>
+ <property name="margin_right">4</property>
+ <property name="margin_top">4</property>
+ <property name="margin_bottom">4</property>
+ <property name="spacing">8</property>
+ <child>
+ <object class="GtkLabel" id="label15">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes"><i>Min</i></property>
+ <property name="use_markup">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHScale" id="bg_opacity">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="adjustment">opacity</property>
+ <property name="draw_value">False</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label16">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes"><i>Max</i></property>
+ <property name="use_markup">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">3</property>
+ <property name="width">2</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_left">4</property>
+ <property name="margin_right">4</property>
+ <property name="margin_top">4</property>
+ <property name="margin_bottom">4</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Colors</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ <property name="width">2</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label7">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_left">14</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Monitoring duration:</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">5</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="monitoring_duration">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="margin_left">4</property>
+ <property name="margin_right">4</property>
+ <property name="margin_top">4</property>
+ <property name="margin_bottom">4</property>
+ <property name="invisible_char">•</property>
+ <property name="invisible_char_set">True</property>
+ <property name="primary_icon_activatable">False</property>
+ <property name="secondary_icon_activatable">False</property>
+ <property name="adjustment">mins</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">5</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label9">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_left">4</property>
+ <property name="margin_right">4</property>
+ <property name="margin_top">4</property>
+ <property name="margin_bottom">4</property>
+ <property name="label" translatable="yes">minute(s)</property>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="top_attach">5</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label8">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_left">4</property>
+ <property name="margin_right">4</property>
+ <property name="margin_top">4</property>
+ <property name="margin_bottom">4</property>
+ <property name="label" translatable="yes">second(s)</property>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="top_attach">6</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="update_interval">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="margin_left">4</property>
+ <property name="margin_right">4</property>
+ <property name="margin_top">4</property>
+ <property name="margin_bottom">4</property>
+ <property name="invisible_char">•</property>
+ <property name="invisible_char_set">True</property>
+ <property name="primary_icon_activatable">False</property>
+ <property name="secondary_icon_activatable">False</property>
+ <property name="adjustment">secs</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">6</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label6">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_left">14</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Update interval:</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">6</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="Measures">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_left">4</property>
+ <property name="margin_right">4</property>
+ <property name="margin_top">8</property>
+ <property name="margin_bottom">4</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Measures</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">4</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
</object>
<packing>
- <property name="left_attach">1</property>
- <property name="right_attach">3</property>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
- <property name="x_options"></property>
- <property name="x_padding">4</property>
- <property name="y_padding">4</property>
+ <property name="position">1</property>
</packing>
</child>
- <child>
- <object class="GtkLabel" id="label5">
+ <child type="tab">
+ <object class="GtkLabel" id="Graph">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">0</property>
<property name="label" translatable="yes">Graph</property>
- <attributes>
- <attribute name="weight" value="bold"/>
- </attributes>
</object>
<packing>
- <property name="right_attach">3</property>
- <property name="top_attach">5</property>
- <property name="bottom_attach">6</property>
- <property name="x_padding">4</property>
- <property name="y_padding">4</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label6">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Update interval:</property>
- </object>
- <packing>
- <property name="top_attach">6</property>
- <property name="bottom_attach">7</property>
- <property name="x_padding">14</property>
- <property name="y_padding">4</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label7">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Monitoring duration:</property>
- </object>
- <packing>
- <property name="top_attach">7</property>
- <property name="bottom_attach">8</property>
- <property name="x_padding">14</property>
- <property name="y_padding">4</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label8">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">second(s)</property>
- </object>
- <packing>
- <property name="left_attach">2</property>
- <property name="right_attach">3</property>
- <property name="top_attach">6</property>
- <property name="bottom_attach">7</property>
- <property name="x_padding">4</property>
- <property name="y_padding">4</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label9">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">minute(s)</property>
- </object>
- <packing>
- <property name="left_attach">2</property>
- <property name="right_attach">3</property>
- <property name="top_attach">7</property>
- <property name="bottom_attach">8</property>
- <property name="x_padding">4</property>
- <property name="y_padding">4</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label10">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Sensor</property>
- <attributes>
- <attribute name="weight" value="bold"/>
- </attributes>
- </object>
- <packing>
- <property name="right_attach">3</property>
- <property name="top_attach">8</property>
- <property name="bottom_attach">9</property>
- <property name="x_padding">4</property>
- <property name="y_padding">4</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label11">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Measure update interval:</property>
- </object>
- <packing>
- <property name="top_attach">9</property>
- <property name="bottom_attach">10</property>
- <property name="x_padding">14</property>
- <property name="y_padding">4</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label12">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">second(s)</property>
- </object>
- <packing>
- <property name="left_attach">2</property>
- <property name="right_attach">3</property>
- <property name="top_attach">9</property>
- <property name="bottom_attach">10</property>
- <property name="x_padding">4</property>
- <property name="y_padding">4</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label13">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Interface</property>
- <attributes>
- <attribute name="weight" value="bold"/>
- </attributes>
- </object>
- <packing>
- <property name="right_attach">3</property>
- <property name="top_attach">10</property>
- <property name="bottom_attach">11</property>
- <property name="x_padding">4</property>
- <property name="y_padding">4</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label14">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Position of sensors table:</property>
- </object>
- <packing>
- <property name="top_attach">11</property>
- <property name="bottom_attach">12</property>
- <property name="x_padding">14</property>
- <property name="y_padding">4</property>
- </packing>
- </child>
- <child>
- <object class="GtkCheckButton" id="hide_window_decoration">
- <property name="label" translatable="yes">Hide window decoration</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_action_appearance">False</property>
- <property name="xalign">0</property>
- <property name="draw_indicator">True</property>
- </object>
- <packing>
- <property name="right_attach">3</property>
- <property name="top_attach">12</property>
- <property name="bottom_attach">13</property>
- <property name="x_padding">14</property>
- <property name="y_padding">4</property>
- </packing>
- </child>
- <child>
- <object class="GtkCheckButton" id="keep_window_below">
- <property name="label" translatable="yes">Keep window below</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_action_appearance">False</property>
- <property name="xalign">0</property>
- <property name="draw_indicator">True</property>
- </object>
- <packing>
- <property name="right_attach">3</property>
- <property name="top_attach">13</property>
- <property name="bottom_attach">14</property>
- <property name="x_padding">14</property>
- <property name="y_padding">4</property>
- </packing>
- </child>
- <child>
- <object class="GtkSpinButton" id="update_interval">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="invisible_char">•</property>
- <property name="primary_icon_activatable">False</property>
- <property name="secondary_icon_activatable">False</property>
- <property name="adjustment">secs</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">6</property>
- <property name="bottom_attach">7</property>
- <property name="x_padding">4</property>
- <property name="y_padding">4</property>
- </packing>
- </child>
- <child>
- <object class="GtkSpinButton" id="monitoring_duration">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="invisible_char">•</property>
- <property name="primary_icon_activatable">False</property>
- <property name="secondary_icon_activatable">False</property>
- <property name="adjustment">mins</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">7</property>
- <property name="bottom_attach">8</property>
- <property name="x_padding">4</property>
- <property name="y_padding">4</property>
- </packing>
- </child>
- <child>
- <object class="GtkSpinButton" id="sensor_update_interval">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="invisible_char">•</property>
- <property name="primary_icon_activatable">False</property>
- <property name="secondary_icon_activatable">False</property>
- <property name="adjustment">secs2</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">9</property>
- <property name="bottom_attach">10</property>
- <property name="x_padding">4</property>
- <property name="y_padding">4</property>
+ <property name="position">1</property>
+ <property name="tab_fill">False</property>
</packing>
</child>
<child>
- <object class="GtkComboBox" id="sensors_list_position">
+ <object class="GtkGrid" id="grid2">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="model">liststore1</property>
+ <property name="valign">start</property>
+ <property name="margin_top">8</property>
<child>
- <object class="GtkCellRendererText" id="renderer1"/>
- <attributes>
- <attribute name="text">0</attribute>
- </attributes>
+ <object class="GtkLabel" id="label11">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">start</property>
+ <property name="margin_left">4</property>
+ <property name="margin_right">4</property>
+ <property name="margin_top">8</property>
+ <property name="margin_bottom">4</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Measure update interval:</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="sensor_update_interval">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="margin_left">4</property>
+ <property name="margin_right">4</property>
+ <property name="margin_top">4</property>
+ <property name="margin_bottom">4</property>
+ <property name="invisible_char">•</property>
+ <property name="invisible_char_set">True</property>
+ <property name="primary_icon_activatable">False</property>
+ <property name="secondary_icon_activatable">False</property>
+ <property name="adjustment">secs2</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">0</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
</child>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">3</property>
- <property name="top_attach">11</property>
- <property name="bottom_attach">12</property>
- <property name="x_padding">4</property>
- <property name="y_padding">4</property>
- </packing>
- </child>
- <child>
- <object class="GtkHBox" id="hbox1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="spacing">8</property>
<child>
- <object class="GtkLabel" id="label15">
+ <object class="GtkLabel" id="label12">
<property name="visible">True</property>
<property name="can_focus">False</property>
+ <property name="margin_left">4</property>
+ <property name="margin_right">4</property>
+ <property name="margin_top">4</property>
+ <property name="margin_bottom">4</property>
+ <property name="label" translatable="yes">second(s)</property>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="top_attach">0</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="enable_slog">
+ <property name="label" translatable="yes">Enable sensors logging</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="margin_left">4</property>
+ <property name="margin_right">4</property>
+ <property name="margin_top">4</property>
+ <property name="margin_bottom">4</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes"><i>Min</i></property>
- <property name="use_markup">True</property>
+ <property name="yalign">0.49000000953674316</property>
+ <property name="draw_indicator">True</property>
</object>
<packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
+ <property name="left_attach">0</property>
+ <property name="top_attach">1</property>
+ <property name="width">3</property>
+ <property name="height">1</property>
</packing>
</child>
<child>
- <object class="GtkHScale" id="bg_opacity">
+ <object class="GtkSpinButton" id="slog_interval">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="adjustment">opacity</property>
- <property name="draw_value">False</property>
+ <property name="margin_left">4</property>
+ <property name="margin_right">4</property>
+ <property name="margin_top">4</property>
+ <property name="margin_bottom">4</property>
+ <property name="invisible_char">•</property>
+ <property name="progress_pulse_step">1</property>
+ <property name="adjustment">slog_interval_adjustment</property>
</object>
<packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">1</property>
+ <property name="left_attach">1</property>
+ <property name="top_attach">2</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
</packing>
</child>
<child>
- <object class="GtkLabel" id="label16">
+ <object class="GtkLabel" id="slog_interval_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes"><i>Max</i></property>
- <property name="use_markup">True</property>
+ <property name="halign">start</property>
+ <property name="margin_left">4</property>
+ <property name="margin_right">4</property>
+ <property name="margin_top">4</property>
+ <property name="margin_bottom">4</property>
+ <property name="label" translatable="yes">Sensors logging interval</property>
</object>
<packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">2</property>
+ <property name="left_attach">0</property>
+ <property name="top_attach">2</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="slog_interval_unit">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_left">4</property>
+ <property name="margin_right">4</property>
+ <property name="margin_top">4</property>
+ <property name="margin_bottom">4</property>
+ <property name="label" translatable="yes">seconds(s)</property>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="top_attach">2</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="notif_script_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_left">4</property>
+ <property name="margin_right">4</property>
+ <property name="margin_top">4</property>
+ <property name="margin_bottom">4</property>
+ <property name="label" translatable="yes">Script executed when an alarm is raised</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">3</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="notif_script">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">•</property>
+ <property name="activates_default">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">3</property>
+ <property name="width">2</property>
+ <property name="height">1</property>
</packing>
</child>
</object>
<packing>
- <property name="right_attach">3</property>
- <property name="top_attach">4</property>
- <property name="bottom_attach">5</property>
- <property name="x_padding">14</property>
- <property name="y_padding">4</property>
- </packing>
- </child>
- <child>
- <object class="GtkCheckButton" id="enable_menu">
- <property name="label" translatable="yes">Enable menu</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_action_appearance">False</property>
- <property name="draw_indicator">True</property>
- </object>
- <packing>
- <property name="right_attach">3</property>
- <property name="top_attach">14</property>
- <property name="bottom_attach">15</property>
- <property name="x_padding">14</property>
- <property name="y_padding">4</property>
+ <property name="position">2</property>
+ <property name="tab_fill">False</property>
</packing>
</child>
- <child>
- <object class="GtkCheckButton" id="enable_launcher_counter">
- <property name="label" translatable="yes">Enable Unity Launcher counter</property>
+ <child type="tab">
+ <object class="GtkLabel" id="Sensors">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_action_appearance">False</property>
- <property name="xalign">0</property>
- <property name="draw_indicator">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Sensors</property>
</object>
<packing>
- <property name="right_attach">3</property>
- <property name="top_attach">15</property>
- <property name="bottom_attach">16</property>
- <property name="x_padding">14</property>
- <property name="y_padding">4</property>
+ <property name="position">2</property>
+ <property name="tab_fill">False</property>
</packing>
</child>
<child>
- <object class="GtkCheckButton" id="hide_on_startup">
- <property name="label" translatable="yes">Hide window on startup</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_action_appearance">False</property>
- <property name="draw_indicator">True</property>
- </object>
- <packing>
- <property name="right_attach">3</property>
- <property name="top_attach">16</property>
- <property name="bottom_attach">17</property>
- <property name="x_padding">14</property>
- <property name="y_padding">4</property>
- </packing>
+ <placeholder/>
</child>
- <child>
- <object class="GtkCheckButton" id="restore_window">
- <property name="label" translatable="yes">Restore window position and size</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_action_appearance">False</property>
- <property name="draw_indicator">True</property>
- </object>
- <packing>
- <property name="right_attach">3</property>
- <property name="top_attach">17</property>
- <property name="bottom_attach">18</property>
- <property name="x_padding">14</property>
- <property name="y_padding">4</property>
- </packing>
+ <child type="tab">
+ <placeholder/>
</child>
</object>
<packing>
- <property name="expand">True</property>
+ <property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
<action-widget response="0">button2</action-widget>
</action-widgets>
</object>
- <object class="GtkListStore" id="liststore1">
+ <object class="GtkAdjustment" id="mins">
+ <property name="lower">1</property>
+ <property name="upper">65535</property>
+ <property name="value">10</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="opacity">
+ <property name="upper">1</property>
+ <property name="step_increment">0.01</property>
+ <property name="page_increment">0.10000000000000001</property>
+ </object>
+ <object class="GtkListStore" id="position_list_store">
<columns>
<!-- column-name gchararray1 -->
<column type="gchararray"/>
</columns>
<data>
<row>
- <col id="0" translatable="yes">Right</col>
+ <col id="0" translatable="yes" context="psensor">Right</col>
</row>
<row>
<col id="0" translatable="yes">Left</col>
</row>
</data>
</object>
- <object class="GtkAdjustment" id="mins">
+ <object class="GtkAdjustment" id="secs2">
<property name="lower">1</property>
- <property name="upper">65535</property>
- <property name="value">10</property>
+ <property name="upper">256</property>
<property name="step_increment">1</property>
<property name="page_increment">10</property>
</object>
- <object class="GtkAdjustment" id="opacity">
- <property name="upper">1</property>
- <property name="step_increment">0.01</property>
- <property name="page_increment">0.10000000000000001</property>
- </object>
<object class="GtkAdjustment" id="secs">
<property name="lower">1</property>
<property name="upper">256</property>
<property name="step_increment">1</property>
<property name="page_increment">10</property>
</object>
- <object class="GtkAdjustment" id="secs2">
+ <object class="GtkAdjustment" id="slog_interval_adjustment">
<property name="lower">1</property>
- <property name="upper">256</property>
+ <property name="upper">6500</property>
+ <property name="value">300</property>
<property name="step_increment">1</property>
<property name="page_increment">10</property>
</object>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+ <!-- interface-requires gtk+ 3.0 -->
+ <object class="GtkAction" id="AboutAction">
+ <property name="label" translatable="yes">About</property>
+ <signal name="activate" handler="ui_cb_about" swapped="no"/>
+ </object>
+ <object class="GtkAction" id="PreferencesAction">
+ <property name="label" translatable="yes">Preferences</property>
+ <signal name="activate" handler="ui_cb_preferences" swapped="no"/>
+ </object>
+ <object class="GtkAction" id="QuitAction">
+ <property name="label" translatable="yes">Quit</property>
+ <signal name="activate" handler="ui_cb_menu_quit" swapped="no"/>
+ </object>
+ <object class="GtkAction" id="SensorPreferencesAction">
+ <property name="label" translatable="yes">Sensor Preferences</property>
+ <signal name="activate" handler="ui_cb_sensor_preferences" swapped="no"/>
+ </object>
+ <object class="GtkMenu" id="popup_menu">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkImageMenuItem" id="popup_pref">
+ <property name="related_action">PreferencesAction</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_underline">True</property>
+ <property name="use_stock">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="popup_sensorpref">
+ <property name="related_action">SensorPreferencesAction</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_underline">True</property>
+ <property name="use_stock">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparatorMenuItem" id="separatoritem">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="popup_about">
+ <property name="related_action">AboutAction</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_underline">True</property>
+ <property name="use_stock">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparatorMenuItem" id="separatoritem1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="popup_quit">
+ <property name="related_action">QuitAction</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_underline">True</property>
+ <property name="use_stock">True</property>
+ </object>
+ </child>
+ </object>
+ <object class="GtkListStore" id="sensors_store">
+ <columns>
+ <!-- column-name gchararray1 -->
+ <column type="gchararray"/>
+ <!-- column-name gchararray2 -->
+ <column type="gchararray"/>
+ <!-- column-name gchararray3 -->
+ <column type="gchararray"/>
+ <!-- column-name gchararray4 -->
+ <column type="gchararray"/>
+ <!-- column-name gchararray5 -->
+ <column type="gchararray"/>
+ <!-- column-name gchararray6 -->
+ <column type="gchararray"/>
+ <!-- column-name gboolean1 -->
+ <column type="gboolean"/>
+ <!-- column-name gchararray7 -->
+ <column type="gchararray"/>
+ <!-- column-name gpointer1 -->
+ <column type="gpointer"/>
+ </columns>
+ </object>
+ <object class="GtkWindow" id="window">
+ <property name="can_focus">False</property>
+ <property name="title" translatable="yes">Psensor - Temperature Monitor</property>
+ <property name="role">psensor</property>
+ <child>
+ <object class="GtkBox" id="main_box">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkMenuBar" id="menu_bar">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkMenuItem" id="psensor_menuitem">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Psensor</property>
+ <property name="use_underline">True</property>
+ <child type="submenu">
+ <object class="GtkMenu" id="psensor_menu">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkImageMenuItem" id="psensor_pref">
+ <property name="related_action">PreferencesAction</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_underline">True</property>
+ <property name="use_stock">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="psensor_sensorpref">
+ <property name="related_action">SensorPreferencesAction</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_underline">True</property>
+ <property name="use_stock">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparatorMenuItem" id="separatormenuitem1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="psensor_quit">
+ <property name="related_action">QuitAction</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_underline">True</property>
+ <property name="use_stock">True</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="help_menuitem">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Help</property>
+ <property name="use_underline">True</property>
+ <child type="submenu">
+ <object class="GtkMenu" id="help_menu">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkImageMenuItem" id="help_about">
+ <property name="related_action">AboutAction</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_underline">True</property>
+ <property name="use_stock">True</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkPaned" id="sensor_box">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkDrawingArea" id="graph">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="vexpand">True</property>
+ </object>
+ <packing>
+ <property name="resize">True</property>
+ <property name="shrink">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="sensors_scrolled_tree">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">never</property>
+ <property name="shadow_type">in</property>
+ <child>
+ <object class="GtkTreeView" id="sensors_tree">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hexpand">True</property>
+ <property name="vexpand">True</property>
+ <property name="model">sensors_store</property>
+ <property name="search_column">0</property>
+ <property name="enable_tree_lines">True</property>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection" id="treeview-selection1">
+ <property name="mode">none</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="resize">False</property>
+ <property name="shrink">True</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+</interface>
<?xml version="1.0" encoding="UTF-8"?>
<interface>
- <requires lib="gtk+" version="2.16"/>
- <!-- interface-naming-policy project-wide -->
+ <!-- interface-requires gtk+ 3.0 -->
+ <object class="GtkAdjustment" id="alarm_high_threshold_value">
+ <property name="lower">-9999</property>
+ <property name="upper">9999</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="alarm_low_threshold_value">
+ <property name="lower">-9999</property>
+ <property name="upper">9999</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
<object class="GtkDialog" id="dialog1">
<property name="can_focus">False</property>
<property name="border_width">5</property>
<property name="modal">True</property>
<property name="destroy_with_parent">True</property>
<property name="type_hint">dialog</property>
- <property name="has_separator">True</property>
<child internal-child="vbox">
- <object class="GtkVBox" id="dialog-vbox1">
+ <object class="GtkBox" id="dialog-vbox1">
<property name="visible">True</property>
<property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
<property name="spacing">2</property>
<child internal-child="action_area">
- <object class="GtkHButtonBox" id="dialog-action_area1">
+ <object class="GtkButtonBox" id="dialog-action_area1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="layout_style">end</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
- <property name="use_action_appearance">False</property>
<property name="use_stock">True</property>
</object>
<packing>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
- <property name="use_action_appearance">False</property>
<property name="use_stock">True</property>
</object>
<packing>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="model">sensors_liststore</property>
+ <property name="headers_clickable">False</property>
+ <property name="reorderable">True</property>
+ <property name="search_column">1</property>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection" id="treeview-selection1"/>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn" id="sensor_name_col">
+ <property name="title" translatable="yes">Name</property>
+ <child>
+ <object class="GtkCellRendererText" id="cellrenderertext1"/>
+ <attributes>
+ <attribute name="text">0</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
</object>
<packing>
<property name="resize">False</property>
<object class="GtkTable" id="table1">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="n_rows">10</property>
+ <property name="n_rows">15</property>
<property name="n_columns">2</property>
<child>
- <object class="GtkLabel" id="sensor_id">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">N/A</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_padding">4</property>
- <property name="y_padding">4</property>
- </packing>
+ <placeholder/>
</child>
<child>
- <object class="GtkLabel" id="label3">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="xpad">10</property>
- <property name="label" translatable="yes">Name:</property>
- </object>
- <packing>
- <property name="top_attach">3</property>
- <property name="bottom_attach">4</property>
- <property name="x_options">GTK_FILL</property>
- <property name="x_padding">4</property>
- <property name="y_padding">4</property>
- </packing>
+ <placeholder/>
</child>
<child>
<object class="GtkEntry" id="sensor_name">
<property name="invisible_char_set">True</property>
<property name="primary_icon_activatable">False</property>
<property name="secondary_icon_activatable">False</property>
- <property name="primary_icon_sensitive">True</property>
- <property name="secondary_icon_sensitive">True</property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
- <property name="top_attach">3</property>
- <property name="bottom_attach">4</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
<property name="x_padding">4</property>
<property name="y_padding">4</property>
</packing>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
+ <property name="yalign">0.49000000953674316</property>
<property name="label" translatable="yes">Type:</property>
+ <property name="justify">fill</property>
</object>
<packing>
<property name="top_attach">2</property>
</packing>
</child>
<child>
- <object class="GtkLabel" id="label2">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Id:</property>
- </object>
- <packing>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options">GTK_FILL</property>
- <property name="x_padding">14</property>
- <property name="y_padding">4</property>
- </packing>
- </child>
- <child>
<object class="GtkLabel" id="label5">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
<packing>
<property name="right_attach">2</property>
- <property name="top_attach">4</property>
- <property name="bottom_attach">5</property>
+ <property name="top_attach">6</property>
+ <property name="bottom_attach">7</property>
<property name="x_padding">4</property>
<property name="y_padding">4</property>
</packing>
<property name="label" translatable="yes">Color:</property>
</object>
<packing>
- <property name="top_attach">6</property>
- <property name="bottom_attach">7</property>
+ <property name="top_attach">8</property>
+ <property name="bottom_attach">9</property>
<property name="x_padding">14</property>
<property name="y_padding">4</property>
</packing>
</object>
<packing>
<property name="right_attach">2</property>
- <property name="top_attach">7</property>
- <property name="bottom_attach">8</property>
+ <property name="top_attach">9</property>
+ <property name="bottom_attach">10</property>
<property name="x_padding">4</property>
<property name="y_padding">4</property>
</packing>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
- <property name="use_action_appearance">False</property>
+ <property name="xalign">0</property>
<property name="draw_indicator">True</property>
</object>
<packing>
<property name="right_attach">2</property>
- <property name="top_attach">8</property>
- <property name="bottom_attach">9</property>
- <property name="x_padding">14</property>
- <property name="y_padding">4</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label8">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Temperature limit:</property>
- </object>
- <packing>
- <property name="top_attach">9</property>
- <property name="bottom_attach">10</property>
- <property name="x_options">GTK_FILL</property>
+ <property name="top_attach">10</property>
+ <property name="bottom_attach">11</property>
<property name="x_padding">14</property>
<property name="y_padding">4</property>
</packing>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
- <property name="use_action_appearance">False</property>
- <property name="yalign">0.41999998688697815</property>
+ <property name="xalign">0</property>
<property name="draw_indicator">True</property>
</object>
<packing>
<property name="right_attach">2</property>
- <property name="top_attach">5</property>
- <property name="bottom_attach">6</property>
+ <property name="top_attach">7</property>
+ <property name="bottom_attach">8</property>
<property name="x_padding">14</property>
<property name="y_padding">4</property>
</packing>
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
- <object class="GtkSpinButton" id="sensor_temp_limit">
+ <object class="GtkSpinButton" id="sensor_alarm_high_threshold">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="max_length">3</property>
<property name="invisible_char">•</property>
<property name="invisible_char_set">True</property>
<property name="primary_icon_activatable">False</property>
<property name="secondary_icon_activatable">False</property>
- <property name="primary_icon_sensitive">True</property>
- <property name="secondary_icon_sensitive">True</property>
- <property name="adjustment">temp_limit</property>
+ <property name="adjustment">alarm_high_threshold_value</property>
<property name="climb_rate">1</property>
<property name="snap_to_ticks">True</property>
<property name="numeric">True</property>
</packing>
</child>
<child>
- <object class="GtkLabel" id="label9">
+ <object class="GtkLabel" id="sensor_alarm_high_threshold_unit">
<property name="visible">True</property>
<property name="can_focus">False</property>
+ <property name="valign">start</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">°C</property>
+ <property name="label" translatable="yes">N/A</property>
</object>
<packing>
<property name="expand">True</property>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
- <property name="top_attach">9</property>
- <property name="bottom_attach">10</property>
+ <property name="top_attach">11</property>
+ <property name="bottom_attach">12</property>
</packing>
</child>
<child>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
- <property name="use_action_appearance">False</property>
<property name="xalign">0</property>
<property name="color">#000000000000</property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
- <property name="top_attach">6</property>
- <property name="bottom_attach">7</property>
- <property name="x_options"></property>
+ <property name="top_attach">8</property>
+ <property name="bottom_attach">9</property>
+ <property name="x_options"/>
+ <property name="x_padding">4</property>
+ <property name="y_padding">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="alarm_high_threshold_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0.0099999997764825821</property>
+ <property name="label" translatable="yes">High threshold:</property>
+ </object>
+ <packing>
+ <property name="top_attach">11</property>
+ <property name="bottom_attach">12</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="x_padding">14</property>
+ <property name="y_padding">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="alarm_low_threshold_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0.0099999997764825821</property>
+ <property name="label" translatable="yes">Low threshold:</property>
+ </object>
+ <packing>
+ <property name="top_attach">12</property>
+ <property name="bottom_attach">13</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="x_padding">14</property>
+ <property name="y_padding">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="alarm_low_threshold_box">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkSpinButton" id="sensor_alarm_low_threshold">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">•</property>
+ <property name="invisible_char_set">True</property>
+ <property name="primary_icon_activatable">False</property>
+ <property name="secondary_icon_activatable">False</property>
+ <property name="adjustment">alarm_low_threshold_value</property>
+ <property name="climb_rate">1</property>
+ <property name="snap_to_ticks">True</property>
+ <property name="numeric">True</property>
+ <property name="update_policy">if-valid</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="sensor_alarm_low_threshold_unit">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="valign">start</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">N/A</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">12</property>
+ <property name="bottom_attach">13</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="indicator_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Ubuntu Application Indicator</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="right_attach">2</property>
+ <property name="top_attach">13</property>
+ <property name="bottom_attach">14</property>
+ <property name="x_padding">4</property>
+ <property name="y_padding">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="indicator_checkbox">
+ <property name="label" translatable="yes">Display sensor in the Application Indicator menu</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="xalign">0</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="right_attach">2</property>
+ <property name="top_attach">14</property>
+ <property name="bottom_attach">15</property>
+ <property name="x_padding">14</property>
+ <property name="y_padding">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="chip_name_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Chip:</property>
+ </object>
+ <packing>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="x_padding">14</property>
+ <property name="y_padding">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="chip_name">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">N/A</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="x_padding">4</property>
+ <property name="y_padding">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkExpander" id="expander1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="grid1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_left">4</property>
+ <property name="margin_right">4</property>
+ <property name="margin_top">4</property>
+ <property name="margin_bottom">4</property>
+ <property name="hexpand">True</property>
+ <property name="vexpand">True</property>
+ <child>
+ <object class="GtkLabel" id="label2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Id:</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="sensor_id">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_left">4</property>
+ <property name="margin_right">4</property>
+ <property name="margin_top">4</property>
+ <property name="margin_bottom">4</property>
+ <property name="hexpand">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">N/A</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">0</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="details_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Details</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="right_attach">2</property>
+ <property name="top_attach">5</property>
+ <property name="bottom_attach">6</property>
+ <property name="x_padding">14</property>
+ <property name="y_padding">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="xpad">10</property>
+ <property name="label" translatable="yes">Name:</property>
+ </object>
+ <packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
<property name="x_padding">4</property>
<property name="y_padding">4</property>
</packing>
</object>
<object class="GtkListStore" id="sensors_liststore">
<columns>
- <!-- column-name sensor_name -->
+ <!-- column-name Name -->
<column type="gchararray"/>
+ <!-- column-name Sensor -->
+ <column type="gpointer"/>
</columns>
</object>
- <object class="GtkAdjustment" id="temp_limit">
- <property name="upper">256</property>
- <property name="step_increment">1</property>
- <property name="page_increment">10</property>
- </object>
</interface>
/*
- * Copyright (C) 2010-2012 jeanfi@gmail.com
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* 02110-1301 USA
*/
#include <stdlib.h>
+#include <string.h>
+
#include <sys/time.h>
+
+#include <glib/gi18n.h>
#include <gtk/gtk.h>
#include "cfg.h"
+#include "log.h"
#include "psensor.h"
/* horizontal padding */
int g_xoff, int g_yoff,
int g_width, int g_height,
int width, int height, struct config *config,
- GtkWidget *widget)
+ GtkWidget *widget,
+ GtkWidget *window)
{
- GtkStyle *style;
- struct color *bgcolor = config->graph_bgcolor;
- GdkColor *bg;
+ GtkStyleContext *style_ctx;
+ struct color *bgcolor;
+ GdkRGBA rgba;
- style = gtk_widget_get_style(widget);
+ bgcolor = config->graph_bgcolor;
- bg = &style->bg[GTK_STATE_NORMAL];
+ style_ctx = gtk_widget_get_style_context(window);
+ gtk_style_context_get_background_color(style_ctx,
+ GTK_STATE_FLAG_NORMAL,
+ &rgba);
if (config->alpha_channel_enabled)
cairo_set_source_rgba(cr,
- ((double)bg->red) / 65535,
- ((double)bg->green) / 65535,
- ((double)bg->blue) / 65535,
+ rgba.red,
+ rgba.green,
+ rgba.blue,
config->graph_bg_alpha);
else
cairo_set_source_rgb(cr,
- ((double)bg->red) / 65535,
- ((double)bg->green) / 65535,
- ((double)bg->blue) / 65535);
+ rgba.red,
+ rgba.green,
+ rgba.blue);
cairo_rectangle(cr, 0, 0, width, height);
cairo_fill(cr);
cairo_set_source_rgba(cr,
bgcolor->f_red,
bgcolor->f_green,
- bgcolor->f_blue, config->graph_bg_alpha);
+ bgcolor->f_blue,
+ config->graph_bg_alpha);
else
cairo_set_source_rgb(cr,
bgcolor->f_red,
- bgcolor->f_green, bgcolor->f_blue);
-
-
+ bgcolor->f_green,
+ bgcolor->f_blue);
cairo_rectangle(cr, g_xoff, g_yoff, g_width, g_height);
cairo_fill(cr);
int g_xoff,
int g_yoff)
{
- int first = 1;
- int i;
+ int first, i, x, y, t, dt, vdt;
+ double v;
cairo_set_source_rgb(cr,
s->color->f_red,
s->color->f_green,
s->color->f_blue);
- cairo_set_line_join(cr, CAIRO_LINE_JOIN_ROUND);
- cairo_set_line_width(cr, 1);
+ dt = et - bt;
+ first = 1;
for (i = 0; i < s->values_max_length; i++) {
- int x, y, t;
- double v;
-
t = s->measures[i].time.tv_sec;
- v = s->measures[i].value.d_num;
+ v = s->measures[i].value;
+
+ if (v == UNKNOWN_DBL_VALUE || !t)
+ continue;
- if (v == UNKNOWN_DBL_VALUE || !t || (t - bt) < 0)
+ vdt = t - bt;
+ if (vdt < 0)
continue;
- x = (t - bt) * g_width / (et - bt) + g_xoff;
+ x = vdt * g_width / dt + g_xoff;
y = compute_y(v, min, max, g_height, g_yoff);
cairo_stroke(cr);
}
+static void display_no_graphs_warning(cairo_t *cr, int x, int y)
+{
+ char *msg;
+
+ msg = strdup(_("No graphs enabled"));
+
+ cairo_select_font_face(cr,
+ "sans-serif",
+ CAIRO_FONT_SLANT_NORMAL,
+ CAIRO_FONT_WEIGHT_NORMAL);
+ cairo_set_font_size(cr, 18.0);
+
+ cairo_move_to(cr, x, y);
+ cairo_show_text(cr, msg);
+
+ free(msg);
+}
void
graph_update(struct psensor **sensors,
GtkWidget *w_graph,
- struct config *config)
+ struct config *config,
+ GtkWidget *window)
{
struct color *fgcolor = config->graph_fgcolor;
int et, bt, width, height, g_width, g_height;
double min_rpm, max_rpm, mint, maxt;
char *strmin, *strmax;
/* horizontal and vertical offset of the graph */
- int g_xoff, g_yoff;
+ int g_xoff, g_yoff, no_graphs, min, max;
cairo_surface_t *cst;
cairo_t *cr, *cr_pixmap;
char *str_btime, *str_etime;
cairo_text_extents_t te_btime, te_etime, te_max, te_min;
- struct psensor **sensor_cur;
+ struct psensor **sensor_cur, **enabled_sensors;
GtkAllocation galloc;
+ GtkStyleContext *style_ctx;
+ GdkRGBA rgba;
if (!gtk_widget_is_drawable(w_graph))
return ;
- min_rpm = get_min_rpm(sensors);
- max_rpm = get_max_rpm(sensors);
+ enabled_sensors = psensor_list_filter_graph_enabled(sensors);
- mint = get_min_temp(sensors);
- strmin = psensor_value_to_string(SENSOR_TYPE_TEMP, mint);
+ min_rpm = get_min_rpm(enabled_sensors);
+ max_rpm = get_max_rpm(enabled_sensors);
- maxt = get_max_temp(sensors);
- strmax = psensor_value_to_string(SENSOR_TYPE_TEMP, maxt);
+ mint = get_min_temp(enabled_sensors);
+ strmin = psensor_value_to_str(SENSOR_TYPE_TEMP,
+ mint,
+ config->temperature_unit == CELCIUS);
+
+ maxt = get_max_temp(enabled_sensors);
+ strmax = psensor_value_to_str(SENSOR_TYPE_TEMP,
+ maxt,
+ config->temperature_unit == CELCIUS);
str_btime = time_to_str(get_graph_begin_time_s(config));
str_etime = time_to_str(get_graph_end_time_s());
draw_graph_background(cr,
g_xoff, g_yoff, g_width, g_height,
width, height, config,
- w_graph);
+ w_graph,
+ window);
- cairo_set_source_rgb(cr,
- fgcolor->f_red, fgcolor->f_green, fgcolor->f_blue);
+ /** Set the color for text drawing */
+ style_ctx = gtk_widget_get_style_context(window);
+ gtk_style_context_get_color(style_ctx, GTK_STATE_FLAG_NORMAL, &rgba);
+ cairo_set_source_rgb(cr, rgba.red, rgba.green, rgba.blue);
/* draw graph begin time */
cairo_move_to(cr, g_xoff, height - GRAPH_V_PADDING);
et = get_graph_end_time_s();
if (bt && et) {
- sensor_cur = sensors;
+ sensor_cur = enabled_sensors;
+
+ cairo_set_line_join(cr, CAIRO_LINE_JOIN_ROUND);
+ cairo_set_line_width(cr, 1);
+ no_graphs = 1;
while (*sensor_cur) {
struct psensor *s = *sensor_cur;
- if (s->enabled) {
- double min, max;
-
- if (is_fan_type(s->type)) {
- min = min_rpm;
- max = max_rpm;
- } else if (s->type & SENSOR_TYPE_CPU_USAGE) {
- min = 0;
- max = get_max_value
- (sensors,
- SENSOR_TYPE_CPU_USAGE);
- } else {
- min = mint;
- max = maxt;
- }
-
- draw_sensor_curve(s, cr,
- min, max,
- bt, et,
- g_width, g_height,
- g_xoff, g_yoff);
+ no_graphs = 0;
+ if (is_fan_type(s->type)) {
+ min = min_rpm;
+ max = max_rpm;
+ } else if (s->type & SENSOR_TYPE_CPU_USAGE) {
+ min = 0;
+ max = get_max_value(enabled_sensors,
+ SENSOR_TYPE_CPU_USAGE);
+ } else {
+ min = mint;
+ max = maxt;
}
+ draw_sensor_curve(s, cr,
+ min, max,
+ bt, et,
+ g_width, g_height,
+ g_xoff, g_yoff);
+
sensor_cur++;
}
+
+ if (no_graphs)
+ display_no_graphs_warning(cr,
+ g_xoff + 12,
+ g_height / 2);
}
cr_pixmap = gdk_cairo_create(gtk_widget_get_window(w_graph));
cairo_paint(cr_pixmap);
}
+ free(enabled_sensors);
+
cairo_destroy(cr_pixmap);
cairo_surface_destroy(cst);
cairo_destroy(cr);
/*
- * Copyright (C) 2010-2012 jeanfi@gmail.com
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
#include "psensor.h"
#include "cfg.h"
-void graph_update(struct psensor **, GtkWidget *, struct config *config);
+void graph_update(struct psensor **sensors,
+ GtkWidget * w_graph,
+ struct config *config,
+ GtkWidget * window);
#endif
libpsensor_a_SOURCES = \
amd.h \
- cpu.h \
- measure.h measure.c \
+ bool.h \
color.h color.c \
+ cpu.h \
+ hdd.h hdd_hddtemp.c\
+ lmsensor.h lmsensor.c \
log.h log.c \
- psensor.h psensor.c\
- hdd.h hdd.c\
+ measure.h measure.c \
+ ptime.h ptime.c \
nvidia.h \
- lmsensor.h lmsensor.c \
- p_io.h p_io.c \
+ psensor.h psensor.c\
+ pio.h pio.c \
+ slog.c slog.h \
url.c url.h
AM_CPPFLAGS = -Wall -Werror
+if ATASMART
+libpsensor_a_SOURCES += hdd_atasmart.c
+LIBS += $(ATASMART_LIBS)
+AM_CPPFLAGS += $(ATASMART_CFLAGS)
+endif
+
if NVIDIA
libpsensor_a_SOURCES += nvidia.c
endif
+
if LIBATIADL
LIBS += $(LIBATIADL_LIBS)
AM_CPPFLAGS += $(LIBATIADL_CFLAGS)
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@SET_MAKE@
VPATH = @srcdir@
+am__make_dryrun = \
+ { \
+ am__dry=no; \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
+ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+ *) \
+ for am__flg in $$MAKEFLAGS; do \
+ case $$am__flg in \
+ *=*|--*) ;; \
+ *n*) am__dry=yes; break;; \
+ esac; \
+ done;; \
+ esac; \
+ test $$am__dry = yes; \
+ }
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
-@NVIDIA_TRUE@am__append_1 = nvidia.c
-@LIBATIADL_TRUE@am__append_2 = $(LIBATIADL_LIBS)
-@LIBATIADL_TRUE@am__append_3 = $(LIBATIADL_CFLAGS)
-@LIBATIADL_TRUE@am__append_4 = amd.c
-@GTOP_TRUE@am__append_5 = cpu.c
-@GTOP_TRUE@am__append_6 = $(GTOP_LIBS)
-@GTOP_TRUE@am__append_7 = $(GTOP_CFLAGS)
-@JSON_TRUE@am__append_8 = psensor_json.h psensor_json.c
-@JSON_TRUE@am__append_9 = $(JSON_LIBS)
-@JSON_TRUE@am__append_10 = $(JSON_CFLAGS)
+@ATASMART_TRUE@am__append_1 = hdd_atasmart.c
+@ATASMART_TRUE@am__append_2 = $(ATASMART_LIBS)
+@ATASMART_TRUE@am__append_3 = $(ATASMART_CFLAGS)
+@NVIDIA_TRUE@am__append_4 = nvidia.c
+@LIBATIADL_TRUE@am__append_5 = $(LIBATIADL_LIBS)
+@LIBATIADL_TRUE@am__append_6 = $(LIBATIADL_CFLAGS)
+@LIBATIADL_TRUE@am__append_7 = amd.c
+@GTOP_TRUE@am__append_8 = cpu.c
+@GTOP_TRUE@am__append_9 = $(GTOP_LIBS)
+@GTOP_TRUE@am__append_10 = $(GTOP_CFLAGS)
+@JSON_TRUE@am__append_11 = psensor_json.h psensor_json.c
+@JSON_TRUE@am__append_12 = $(JSON_LIBS)
+@JSON_TRUE@am__append_13 = $(JSON_CFLAGS)
subdir = src/lib
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
LIBRARIES = $(noinst_LIBRARIES)
-AR = ar
ARFLAGS = cru
libpsensor_a_AR = $(AR) $(ARFLAGS)
libpsensor_a_LIBADD =
-am__libpsensor_a_SOURCES_DIST = amd.h cpu.h measure.h measure.c \
- color.h color.c log.h log.c psensor.h psensor.c hdd.h hdd.c \
- nvidia.h lmsensor.h lmsensor.c p_io.h p_io.c url.c url.h \
+am__libpsensor_a_SOURCES_DIST = amd.h bool.h color.h color.c cpu.h \
+ hdd.h hdd_hddtemp.c lmsensor.h lmsensor.c log.h log.c \
+ measure.h measure.c ptime.h ptime.c nvidia.h psensor.h \
+ psensor.c pio.h pio.c slog.c slog.h url.c url.h hdd_atasmart.c \
nvidia.c amd.c cpu.c psensor_json.h psensor_json.c
-@NVIDIA_TRUE@am__objects_1 = nvidia.$(OBJEXT)
-@LIBATIADL_TRUE@am__objects_2 = amd.$(OBJEXT)
-@GTOP_TRUE@am__objects_3 = cpu.$(OBJEXT)
-@JSON_TRUE@am__objects_4 = psensor_json.$(OBJEXT)
-am_libpsensor_a_OBJECTS = measure.$(OBJEXT) color.$(OBJEXT) \
- log.$(OBJEXT) psensor.$(OBJEXT) hdd.$(OBJEXT) \
- lmsensor.$(OBJEXT) p_io.$(OBJEXT) url.$(OBJEXT) \
- $(am__objects_1) $(am__objects_2) $(am__objects_3) \
- $(am__objects_4)
+@ATASMART_TRUE@am__objects_1 = hdd_atasmart.$(OBJEXT)
+@NVIDIA_TRUE@am__objects_2 = nvidia.$(OBJEXT)
+@LIBATIADL_TRUE@am__objects_3 = amd.$(OBJEXT)
+@GTOP_TRUE@am__objects_4 = cpu.$(OBJEXT)
+@JSON_TRUE@am__objects_5 = psensor_json.$(OBJEXT)
+am_libpsensor_a_OBJECTS = color.$(OBJEXT) hdd_hddtemp.$(OBJEXT) \
+ lmsensor.$(OBJEXT) log.$(OBJEXT) measure.$(OBJEXT) \
+ ptime.$(OBJEXT) psensor.$(OBJEXT) pio.$(OBJEXT) slog.$(OBJEXT) \
+ url.$(OBJEXT) $(am__objects_1) $(am__objects_2) \
+ $(am__objects_3) $(am__objects_4) $(am__objects_5)
libpsensor_a_OBJECTS = $(am_libpsensor_a_OBJECTS)
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/depcomp
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
SOURCES = $(libpsensor_a_SOURCES)
DIST_SOURCES = $(am__libpsensor_a_SOURCES_DIST)
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
AMTAR = @AMTAR@
APPINDICATOR_CFLAGS = @APPINDICATOR_CFLAGS@
APPINDICATOR_LIBS = @APPINDICATOR_LIBS@
+AR = @AR@
+ATASMART_CFLAGS = @ATASMART_CFLAGS@
+ATASMART_LIBS = @ATASMART_LIBS@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+GCONFTOOL = @GCONFTOOL@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
+GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
+GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GTK_LIBS = @GTK_LIBS@
GTOP_CFLAGS = @GTOP_CFLAGS@
GTOP_LIBS = @GTOP_LIBS@
+HAVE_CPPCHECK = @HAVE_CPPCHECK@
HELP2MAN = @HELP2MAN@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
LIBNOTIFY_CFLAGS = @LIBNOTIFY_CFLAGS@
LIBNOTIFY_LIBS = @LIBNOTIFY_LIBS@
LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@ $(am__append_2) $(am__append_6) $(am__append_9)
+LIBS = @LIBS@ $(am__append_2) $(am__append_5) $(am__append_9) \
+ $(am__append_12)
LTLIBICONV = @LTLIBICONV@
LTLIBINTL = @LTLIBINTL@
LTLIBOBJS = @LTLIBOBJS@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
POSUB = @POSUB@
+PTHREAD_LIBS = @PTHREAD_LIBS@
RANLIB = @RANLIB@
SENSORS_LIBS = @SENSORS_LIBS@
SET_MAKE = @SET_MAKE@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
noinst_LIBRARIES = libpsensor.a
-libpsensor_a_SOURCES = amd.h cpu.h measure.h measure.c color.h color.c \
- log.h log.c psensor.h psensor.c hdd.h hdd.c nvidia.h \
- lmsensor.h lmsensor.c p_io.h p_io.c url.c url.h \
- $(am__append_1) $(am__append_4) $(am__append_5) \
- $(am__append_8)
-AM_CPPFLAGS = -Wall -Werror $(am__append_3) $(am__append_7) \
- $(am__append_10)
+libpsensor_a_SOURCES = amd.h bool.h color.h color.c cpu.h hdd.h \
+ hdd_hddtemp.c lmsensor.h lmsensor.c log.h log.c measure.h \
+ measure.c ptime.h ptime.c nvidia.h psensor.h psensor.c pio.h \
+ pio.c slog.c slog.h url.c url.h $(am__append_1) \
+ $(am__append_4) $(am__append_7) $(am__append_8) \
+ $(am__append_11)
+AM_CPPFLAGS = -Wall -Werror $(am__append_3) $(am__append_6) \
+ $(am__append_10) $(am__append_13)
EXTRA_DIST = $(libpsensor_a_SOURCES) \
amd.c \
cpu.c \
clean-noinstLIBRARIES:
-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
-libpsensor.a: $(libpsensor_a_OBJECTS) $(libpsensor_a_DEPENDENCIES)
+libpsensor.a: $(libpsensor_a_OBJECTS) $(libpsensor_a_DEPENDENCIES) $(EXTRA_libpsensor_a_DEPENDENCIES)
-rm -f libpsensor.a
$(libpsensor_a_AR) libpsensor.a $(libpsensor_a_OBJECTS) $(libpsensor_a_LIBADD)
$(RANLIB) libpsensor.a
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amd.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/color.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hdd.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hdd_atasmart.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hdd_hddtemp.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lmsensor.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/log.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/measure.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nvidia.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/p_io.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pio.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/psensor.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/psensor_json.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ptime.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/slog.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/url.Po@am__quote@
.c.o:
installcheck: installcheck-am
install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
mostlyclean-generic:
clean-generic:
/*
- * Copyright (C) 2010-2011 thgreasi@gmail.com
- * Copyright (C) 2010-2012 jeanfi@gmail.com
+ * Copyright (C) 2010-2011 thgreasi@gmail.com, jeanfi@gmail.com
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
+ *
+ * GPU usage is a contribution of MestreLion
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
#ifndef LINUX
#define LINUX 1
#endif
-#ifdef HAVE_LIBATIADL
- /* AMD id for the aticonfig */
- int amd_id;
-#endif
#include <locale.h>
#include <libintl.h>
typedef int (*ADL_ADAPTER_NUMBEROFADAPTERS_GET) (int *);
typedef int (*ADL_ADAPTER_ADAPTERINFO_GET) (LPAdapterInfo, int);
typedef int (*ADL_ADAPTER_ACTIVE_GET) (int, int*);
-typedef int (*ADL_OVERDRIVE5_TEMPERATURE_GET) (int, int, ADLTemperature*);
-typedef int (*ADL_OVERDRIVE5_FANSPEED_GET) (int, int, ADLFanSpeedValue*);
-
-static ADL_MAIN_CONTROL_CREATE adl_main_control_create;
-static ADL_MAIN_CONTROL_DESTROY adl_main_control_destroy;
-static ADL_ADAPTER_NUMBEROFADAPTERS_GET adl_adapter_numberofadapters_get;
-static ADL_ADAPTER_ADAPTERINFO_GET adl_adapter_adapterinfo_get;
-static ADL_ADAPTER_ACTIVE_GET adl_adapter_active_get;
-static ADL_OVERDRIVE5_TEMPERATURE_GET adl_overdrive5_temperature_get;
-static ADL_OVERDRIVE5_FANSPEED_GET adl_overdrive5_fanspeed_get;
+typedef int (*ADL_OD5_TEMPERATURE_GET) (int, int, ADLTemperature*);
+typedef int (*ADL_OD5_FANSPEED_GET) (int, int, ADLFanSpeedValue*);
+typedef int (*ADL_OD5_CURRENTACTIVITY_GET) (int, ADLPMActivity*);
+
+static ADL_MAIN_CONTROL_CREATE adl_main_control_create;
+static ADL_MAIN_CONTROL_DESTROY adl_main_control_destroy;
+static ADL_ADAPTER_NUMBEROFADAPTERS_GET adl_adapter_numberofadapters_get;
+static ADL_ADAPTER_ADAPTERINFO_GET adl_adapter_adapterinfo_get;
+static ADL_ADAPTER_ACTIVE_GET adl_adapter_active_get;
+static ADL_OD5_TEMPERATURE_GET adl_od5_temperature_get;
+static ADL_OD5_FANSPEED_GET adl_od5_fanspeed_get;
+static ADL_OD5_CURRENTACTIVITY_GET adl_od5_currentactivity_get;
static void *hdll;
static int adl_main_control_done;
-static int *active_amd_adapters;
+static int *active_adapters;
-/* Memory allocation function */
static void __stdcall *adl_main_memory_alloc(int isize)
{
void *lpbuffer = malloc(isize);
return lpbuffer;
}
-static void *getprocaddress(void *plibrary, const char * name)
+static void *getprocaddress(void *plibrary, const char *name)
{
return dlsym(plibrary, name);
}
/*
- Returns the temperature (Celcius) of an AMD/Ati GPU.
+ Returns the temperature (Celcius) of an AMD/ATI GPU.
*/
static double get_temp(struct psensor *sensor)
{
- ADLTemperature temperature;
+ ADLTemperature v;
- temperature.iSize = sizeof(ADLTemperature);
- temperature.iTemperature = -273;
- if (ADL_OK != adl_overdrive5_temperature_get(sensor->amd_id,
- 0, &temperature))
+ v.iSize = sizeof(ADLTemperature);
+ v.iTemperature = -273;
+ if (ADL_OK == adl_od5_temperature_get(sensor->amd_id, 0, &v))
+ return v.iTemperature/1000;
+ else
return UNKNOWN_DBL_VALUE;
-
- return temperature.iTemperature/1000;
}
static double get_fanspeed(struct psensor *sensor)
{
- ADLFanSpeedValue fanspeedvalue;
-
- fanspeedvalue.iSize = sizeof(ADLFanSpeedValue);
- fanspeedvalue.iSpeedType = ADL_DL_FANCTRL_SPEED_TYPE_RPM;
- fanspeedvalue.iFanSpeed = -1;
- if (ADL_OK != adl_overdrive5_fanspeed_get(sensor->amd_id,
- 0, &fanspeedvalue))
+ ADLFanSpeedValue v;
+
+ v.iSize = sizeof(ADLFanSpeedValue);
+ v.iSpeedType = ADL_DL_FANCTRL_SPEED_TYPE_RPM;
+ v.iFanSpeed = -1;
+ if (ADL_OK == adl_od5_fanspeed_get(sensor->amd_id, 0, &v))
+ return v.iFanSpeed;
+ else
return UNKNOWN_DBL_VALUE;
+}
+
+static double get_usage(struct psensor *sensor)
+{
+ ADLPMActivity v;
- return fanspeedvalue.iFanSpeed;
+ v.iSize = sizeof(ADLPMActivity);
+ if (ADL_OK == adl_od5_currentactivity_get(sensor->amd_id, &v))
+ return v.iActivityPercent;
+ else
+ return UNKNOWN_DBL_VALUE;
}
-static struct psensor *create_sensor(int id, int values_len)
+static struct psensor *create_sensor(int id, int type, int values_len)
{
char name[200];
char *sid;
int sensor_type;
-
struct psensor *s;
- if (id & 1) {/* odd number ids represent fan sensors */
- id = id >> 1;
- sprintf(name, "GPU%dfan", id);
- sensor_type = SENSOR_TYPE_AMD_FAN;
- } else {/* even number ids represent temperature sensors */
- id = id >> 1;
- sprintf(name, "GPU%dtemp", id);
- sensor_type = SENSOR_TYPE_AMD_TEMP;
+ sensor_type = SENSOR_TYPE_ATIADL;
+ switch (type) {
+ /* Fan rotation speed */
+ case 0:
+ sprintf(name, "AMD GPU%d Fan", id);
+ sensor_type |= SENSOR_TYPE_FAN | SENSOR_TYPE_RPM;
+ break;
+
+ /* Temperature */
+ case 1:
+ sprintf(name, "AMD GPU%d Temperature", id);
+ sensor_type |= SENSOR_TYPE_GPU | SENSOR_TYPE_TEMP;
+ break;
+
+ /* GPU Usage (Activity/Load %) */
+ case 2:
+ sprintf(name, "AMD GPU%d Usage", id);
+ sensor_type |= SENSOR_TYPE_GPU | SENSOR_TYPE_USAGE;
+ break;
}
sid = malloc(strlen("amd") + 1 + strlen(name) + 1);
sprintf(sid, "amd %s", name);
- s = psensor_create(sid, strdup(name),
- sensor_type, values_len);
+ s = psensor_create(sid,
+ strdup(name),
+ strdup("AMD/ATI GPU"),
+ sensor_type,
+ values_len);
- s->amd_id = active_amd_adapters[id];
+ s->amd_id = active_adapters[id];
return s;
}
/*
- Returns the number of AMD/Ati GPU sensors (temperature and fan
- speed).
+ Returns the number of active AMD/ATI GPU adapters
- Return 0 if no AMD/Ati gpus or cannot get information.
+ Return 0 if no AMD/ATI GPUs or cannot get information.
*/
static int init()
{
- LPAdapterInfo lpadapterinfo = NULL;
- int i, inumberadapters, inumberadaptersactive = 0;
- int lpstatus, iadapterindex;
+ LPAdapterInfo lpadapterinfo;
+ int i, inumberadapters, inumberadaptersactive, lpstatus, iadapterindex;
- hdll = NULL;
adl_main_control_done = 0;
- active_amd_adapters = NULL;
- hdll = dlopen("libatiadlxx.so", RTLD_LAZY|RTLD_GLOBAL);
+ inumberadaptersactive = 0;
+ active_adapters = NULL;
+ lpadapterinfo = NULL;
+ hdll = dlopen("libatiadlxx.so", RTLD_LAZY|RTLD_GLOBAL);
if (!hdll) {
- fprintf(stderr,
- _("ERROR: ADL library not found!\n"));
+ log_debug(_("AMD: cannot found ADL library."));
return 0;
}
adl_main_control_create = (ADL_MAIN_CONTROL_CREATE)
- getprocaddress(hdll, "ADL_Main_Control_Create");
+ getprocaddress(hdll, "ADL_Main_Control_Create");
adl_main_control_destroy = (ADL_MAIN_CONTROL_DESTROY)
- getprocaddress(hdll, "ADL_Main_Control_Destroy");
+ getprocaddress(hdll, "ADL_Main_Control_Destroy");
adl_adapter_numberofadapters_get = (ADL_ADAPTER_NUMBEROFADAPTERS_GET)
- getprocaddress(hdll, "ADL_Adapter_NumberOfAdapters_Get");
+ getprocaddress(hdll, "ADL_Adapter_NumberOfAdapters_Get");
adl_adapter_adapterinfo_get = (ADL_ADAPTER_ADAPTERINFO_GET)
- getprocaddress(hdll, "ADL_Adapter_AdapterInfo_Get");
+ getprocaddress(hdll, "ADL_Adapter_AdapterInfo_Get");
adl_adapter_active_get = (ADL_ADAPTER_ACTIVE_GET)
- getprocaddress(hdll, "ADL_Adapter_Active_Get");
- adl_overdrive5_temperature_get = (ADL_OVERDRIVE5_TEMPERATURE_GET)
- getprocaddress(hdll, "ADL_Overdrive5_Temperature_Get");
- adl_overdrive5_fanspeed_get = (ADL_OVERDRIVE5_FANSPEED_GET)
- getprocaddress(hdll, "ADL_Overdrive5_FanSpeed_Get");
- if (!adl_main_control_create ||
- !adl_main_control_destroy ||
- !adl_adapter_numberofadapters_get ||
- !adl_adapter_adapterinfo_get ||
- !adl_overdrive5_temperature_get ||
- !adl_overdrive5_fanspeed_get) {
- fprintf(stderr,
- _("ERROR: ADL's API is missing!\n"));
+ getprocaddress(hdll, "ADL_Adapter_Active_Get");
+ adl_od5_temperature_get = (ADL_OD5_TEMPERATURE_GET)
+ getprocaddress(hdll, "ADL_Overdrive5_Temperature_Get");
+ adl_od5_fanspeed_get = (ADL_OD5_FANSPEED_GET)
+ getprocaddress(hdll, "ADL_Overdrive5_FanSpeed_Get");
+ adl_od5_currentactivity_get = (ADL_OD5_CURRENTACTIVITY_GET)
+ getprocaddress(hdll, "ADL_Overdrive5_CurrentActivity_Get");
+ if (!adl_main_control_create
+ || !adl_main_control_destroy
+ || !adl_adapter_numberofadapters_get
+ || !adl_adapter_adapterinfo_get
+ || !adl_od5_temperature_get
+ || !adl_od5_fanspeed_get
+ || !adl_od5_currentactivity_get) {
+ log_err(_("AMD: missing ADL's API."));
return 0;
}
- /* Initialize ADL. The second parameter is 1, which means:
- retrieve adapter information only for adapters that
- are physically present and enabled in the system */
+ /*
+ 1 in 2nd parameter means retrieve adapter information only
+ for adapters that are physically present and enabled in the
+ system
+ */
if (ADL_OK != adl_main_control_create(adl_main_memory_alloc, 1)) {
- fprintf(stderr,
- _("ERROR: ADL Initialization Error!\n"));
+ log_err(_("AMD: failed to initialize ADL."));
return 0;
}
adl_main_control_done = 1;
- /* Obtain the number of adapters for the system */
if (ADL_OK != adl_adapter_numberofadapters_get(&inumberadapters)) {
- fprintf(stderr,
- _("ERROR: Cannot get the number of adapters!\n"));
+ log_err(_("AMD: cannot get the number of adapters."));
return 0;
}
lpadapterinfo = malloc(sizeof(AdapterInfo) * inumberadapters);
memset(lpadapterinfo, '\0', sizeof(AdapterInfo) * inumberadapters);
- /* Get the AdapterInfo structure for all adapters in the system */
adl_adapter_adapterinfo_get(lpadapterinfo,
sizeof(AdapterInfo) * inumberadapters);
- /* Repeat for all available adapters in the system */
for (i = 0; i < inumberadapters; i++) {
iadapterindex = lpadapterinfo[i].iAdapterIndex;
if (ADL_OK != adl_adapter_active_get(iadapterindex, &lpstatus))
continue;
if (lpstatus != ADL_TRUE)
- /* count only if the adapter is active */
continue;
- if (!active_amd_adapters) {
- active_amd_adapters = (int *) malloc(sizeof(int));
+ if (!active_adapters) {
+ active_adapters = (int *) malloc(sizeof(int));
inumberadaptersactive = 1;
} else {
++inumberadaptersactive;
- active_amd_adapters = (int *)realloc
- (active_amd_adapters,
+ active_adapters = (int *)realloc
+ (active_adapters,
sizeof(int)*inumberadaptersactive);
+
+ if (!active_adapters)
+ exit(EXIT_FAILURE);
}
- active_amd_adapters[inumberadaptersactive-1] = iadapterindex;
+ active_adapters[inumberadaptersactive-1] = iadapterindex;
}
free(lpadapterinfo);
- /* Each Adapter has one GPU temperature sensor and one fan
- control sensor */
- return 2*inumberadaptersactive;
+ log_debug(_("Number of AMD/ATI adapters: %d"), inumberadapters);
+ log_debug(_("Number of active AMD/ATI adapters: %d"),
+ inumberadaptersactive);
+
+ return inumberadaptersactive;
}
+/* Called regularly to update sensors values */
void amd_psensor_list_update(struct psensor **sensors)
{
struct psensor **ss, *s;
while (*ss) {
s = *ss;
- if (s->type == SENSOR_TYPE_AMD_TEMP)
- psensor_set_current_value(s, get_temp(s));
- else if (s->type == SENSOR_TYPE_AMD_FAN)
- psensor_set_current_value(s, get_fanspeed(s));
+ if (s->type & SENSOR_TYPE_ATIADL) {
+ if (s->type & SENSOR_TYPE_TEMP)
+ psensor_set_current_value(s, get_temp(s));
+ else if (s->type & SENSOR_TYPE_RPM)
+ psensor_set_current_value(s, get_fanspeed(s));
+ else if (s->type & SENSOR_TYPE_USAGE)
+ psensor_set_current_value(s, get_usage(s));
+ }
ss++;
}
}
+/* Entry point for AMD sensors */
struct psensor * *
amd_psensor_list_add(struct psensor **sensors, int values_len)
{
- int i, n;
+ int i, j, n;
struct psensor **tmp, **ss, *s;
n = init();
ss = sensors;
- for (i = 0; i < n; i++) {
- s = create_sensor(i, values_len);
-
- tmp = psensor_list_add(ss, s);
+ for (i = 0; i < n; i++)
+ /* Each GPU Adapter has 3 sensors: temp, fan speed and usage */
+ for (j = 0; j < 3; j++) {
+ s = create_sensor(i, j, values_len);
+ tmp = psensor_list_add(ss, s);
- if (ss != tmp)
- free(ss);
+ if (ss != tmp)
+ free(ss);
- ss = tmp;
- }
+ ss = tmp;
+ }
return ss;
}
dlclose(hdll);
}
- if (active_amd_adapters) {
- free(active_amd_adapters);
- active_amd_adapters = NULL;
+ if (active_adapters) {
+ free(active_adapters);
+ active_adapters = NULL;
}
}
/*
- * Copyright (C) 2010-2011 thgreasi@gmail.com
- * Copyright (C) 2010-2012 jeanfi@gmail.com
+ * Copyright (C) 2010-2011 thgreasi@gmail.com, jeanfi@gmail.com
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
--- /dev/null
+/*
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301 USA
+ */
+#ifndef _PSENSOR_BOOL_H_
+#define _PSENSOR_BOOL_H_
+
+#include "config.h"
+
+#if HAVE_STDBOOL
+#include <stdbool.h>
+#else
+#define bool char
+#endif
+
+#endif
/*
- * Copyright (C) 2010-2012 jeanfi@gmail.com
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
#include "color.h"
-void
-color_set(struct color *color,
- unsigned int red, unsigned int green, unsigned int blue)
+void color_set(struct color *color,
+ unsigned int red,
+ unsigned int green,
+ unsigned int blue)
{
color->red = red;
color->green = green;
return 1;
}
-struct color *string_to_color(const char *str)
+struct color *str_to_color(const char *str)
{
char tmp[5];
unsigned int red, green, blue;
return color_new(red, green, blue);
}
-char *color_to_string(struct color *color)
+char *color_to_str(const struct color *color)
{
char *str = malloc(1 + 12 + 1);
/*
- * Copyright (C) 2010-2012 jeanfi@gmail.com
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
#ifndef _PSENSOR_COLOR_H_
#define _PSENSOR_COLOR_H_
-/* Represents a RGB color.
-
- Contains integer and floating RGB representation to avoid useless
-conversion.
-
- Uses color_set to maintain the coherence of the both
- representation.
-*/
+/*
+ * Represents a RGB color.
+ *
+ * Contains integer and floating RGB representation to avoid useless
+ * conversion.
+ *
+ * Uses color_set to maintain the coherence of the both
+ * representation.
+ */
struct color {
/* rgb 0..65535 */
unsigned int red;
double f_blue;
};
-struct color *color_new(unsigned int red,
- unsigned int green, unsigned int blue);
+struct color *
+color_new(unsigned int red, unsigned int green, unsigned int blue);
struct color *color_dup(struct color *);
void color_set(struct color *,
- unsigned int red, unsigned int green, unsigned int blue);
+ unsigned int red,
+ unsigned int green,
+ unsigned int blue);
int is_color(const char *str);
-struct color *string_to_color(const char *str);
+struct color *str_to_color(const char *str);
-char *color_to_string(struct color *color);
+char *color_to_str(const struct color *color);
#endif
/*
- * Copyright (C) 2010-2012 jeanfi@gmail.com
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
label = strdup("cpu usage");
type = SENSOR_TYPE_CPU_USAGE;
- psensor = psensor_create(id, label, type, measures_len);
+ psensor = psensor_create(id, label, strdup("CPU"), type, measures_len);
return psensor;
}
while (*ss) {
s = *ss;
- if (s->type == SENSOR_TYPE_CPU_USAGE)
+ if (!(s->type & SENSOR_TYPE_REMOTE)
+ && s->type == SENSOR_TYPE_CPU_USAGE)
cpu_usage_sensor_update(s);
ss++;
/*
- * Copyright (C) 2010-2012 jeanfi@gmail.com
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
+++ /dev/null
-/*
- * Copyright (C) 2010-2012 jeanfi@gmail.com
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- *
- * This program 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
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301 USA
- */
-#include <locale.h>
-#include <libintl.h>
-#define _(str) gettext(str)
-
-/*
- Following code is based on GNOME sensors applet code hddtemp-plugin.c
- see http://sensors-applet.sourceforge.net/
-*/
-#include <stdlib.h>
-#include <string.h>
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <unistd.h>
-
-#include "psensor.h"
-
-#define HDDTEMP_SERVER_IP_ADDRESS "127.0.0.1"
-#define HDDTEMP_PORT_NUMBER 7634
-#define HDDTEMP_OUTPUT_BUFFER_LENGTH 4048
-
-struct hdd_info {
- char *name;
- int temp;
-};
-
-static char *fetch()
-{
- int sockfd;
- ssize_t n = 1;
- int output_length = 0;
- char *pc;
- char *buffer;
- struct sockaddr_in address;
-
- sockfd = socket(AF_INET, SOCK_STREAM, 0);
- if (sockfd == -1) {
- fprintf(stderr, _("ERROR: hdd fetch, failed to open socket\n"));
- return NULL;
- }
-
- address.sin_family = AF_INET;
- address.sin_addr.s_addr = inet_addr(HDDTEMP_SERVER_IP_ADDRESS);
- address.sin_port = htons(HDDTEMP_PORT_NUMBER);
-
- buffer = NULL;
-
- if (connect(sockfd,
- (struct sockaddr *)&address,
- (socklen_t) sizeof(address)) == -1) {
- fprintf(stderr,
- _("ERROR: hdd fetch, failed to open connection\n"));
- } else {
- buffer = malloc(HDDTEMP_OUTPUT_BUFFER_LENGTH);
-
- pc = buffer;
- while ((n = read(sockfd,
- pc,
- HDDTEMP_OUTPUT_BUFFER_LENGTH -
- output_length)) > 0) {
-
- output_length += n;
- pc = &pc[n];
- }
-
- buffer[output_length] = '\0';
- }
-
- close(sockfd);
-
- return buffer;
-}
-
-static int str_index(char *str, char d)
-{
- char *c;
- int i;
-
- if (!str || *str == '\0')
- return -1;
-
- c = str;
-
- i = 0;
- while (*c) {
- if (*c == d)
- return i;
- i++;
- c++;
- }
-
- return -1;
-}
-
-static struct psensor *
-create_sensor(char *id, char *name, int values_max_length)
-{
- return psensor_create(id, name, SENSOR_TYPE_HDD_TEMP,
- values_max_length);
-}
-
-static char *next_hdd_info(char *string, struct hdd_info *info)
-{
- char *c;
- int idx_name_n, i, temp;
-
- if (!string || strlen(string) <= 5 /* at least 5 pipes */
- || string[0] != '|')
- return NULL;
-
- /* skip first pipe */
- c = string + 1;
-
- /* name */
- idx_name_n = str_index(c, '|');
-
- if (idx_name_n == -1)
- return NULL;
- c = c + idx_name_n + 1;
-
- /* skip label */
- i = str_index(c, '|');
- if (i == -1)
- return NULL;
- c = c + i + 1;
-
- /* temp */
- i = str_index(c, '|');
- if (i == -1)
- return NULL;
- temp = atoi(c);
- c = c + i + 1;
-
- /* skip unit */
- i = str_index(c, '|');
- if (i == -1)
- return NULL;
- c = c + i + 1;
-
- info->name = malloc(idx_name_n + 1);
- strncpy(info->name, string + 1, idx_name_n);
- info->name[idx_name_n] = '\0';
-
- info->temp = temp;
-
- return c;
-}
-
-struct psensor **hdd_psensor_list_add(struct psensor **sensors,
- int values_max_length)
-{
- char *hddtemp_output = fetch();
- char *c;
- struct hdd_info info;
- struct psensor **result;
-
- if (!hddtemp_output)
- return sensors;
-
- if (hddtemp_output[0] != '|') {
- fprintf(stderr,
- _("ERROR: wrong hdd string: %s"), hddtemp_output);
-
- free(hddtemp_output);
-
- return sensors;
- }
-
- c = hddtemp_output;
-
- result = sensors;
-
- while (c && (c = next_hdd_info(c, &info))) {
- struct psensor *sensor;
- struct psensor **tmp_sensors;
-
- char *id = malloc(strlen("hdd ") + strlen(info.name) + 1);
- strcpy(id, "hdd ");
- strcat(id, info.name);
-
- sensor = create_sensor(id, info.name, values_max_length);
-
- tmp_sensors = psensor_list_add(result, sensor);
-
- if (result != sensors)
- free(result);
-
- result = tmp_sensors;
- }
-
- free(hddtemp_output);
-
- return result;
-}
-
-static void update(struct psensor **sensors, struct hdd_info *info)
-{
- struct psensor **sensor_cur = sensors;
-
- while (*sensor_cur) {
- if ((*sensor_cur)->type == SENSOR_TYPE_HDD_TEMP
- && !strcmp((*sensor_cur)->id + 4, info->name))
- psensor_set_current_value(*sensor_cur,
- (float)info->temp);
-
- sensor_cur++;
- }
-}
-
-void hdd_psensor_list_update(struct psensor **sensors)
-{
- char *hddtemp_output = fetch();
-
- if (!hddtemp_output)
- return;
-
- if (hddtemp_output[0] == '|') {
-
- char *c = hddtemp_output;
- struct hdd_info info;
- info.name = NULL;
- info.temp = 0;
-
- while (c && (c = next_hdd_info(c, &info))) {
-
- update(sensors, &info);
-
- free(info.name);
- }
- } else {
- fprintf(stderr,
- _("ERROR: wrong hdd string: %s\n"), hddtemp_output);
- }
-
- free(hddtemp_output);
-}
/*
- * Copyright (C) 2010-2012 jeanfi@gmail.com
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
#ifndef _PSENSOR_HDD_H_
#define _PSENSOR_HDD_H_
+#include "config.h"
#include "psensor.h"
+#ifdef HAVE_ATASMART
struct psensor **hdd_psensor_list_add(struct psensor **sensors,
int values_max_length);
void hdd_psensor_list_update(struct psensor **sensors);
+#endif
+
+struct psensor **hddtemp_psensor_list_add(struct psensor **sensors,
+ int values_max_length);
+
+void hddtemp_psensor_list_update(struct psensor **sensors);
#endif
--- /dev/null
+/*
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301 USA
+ */
+#define _LARGEFILE_SOURCE 1
+#include "config.h"
+
+#include <locale.h>
+#include <libintl.h>
+#define _(str) gettext(str)
+
+#include <errno.h>
+#include <fcntl.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/ioctl.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <unistd.h>
+
+#include <atasmart.h>
+#include <linux/fs.h>
+
+#include "pio.h"
+#include "hdd.h"
+#include "log.h"
+
+static int filter_sd(const char *p)
+{
+ return strlen(p) == 8 && !strncmp(p, "/dev/sd", 7);
+}
+
+static struct psensor *
+create_sensor(char *id, char *name, SkDisk *disk, int values_max_length)
+{
+ struct psensor *s;
+ int t;
+
+ t = SENSOR_TYPE_ATASMART | SENSOR_TYPE_HDD | SENSOR_TYPE_TEMP;
+
+ s = psensor_create(id,
+ strdup(name),
+ strdup("HDD"),
+ t,
+ values_max_length);
+
+ s->disk = disk;
+
+ return s;
+}
+
+/*
+ * Performs the same tests than sk_disk_open and outputs the result.
+ */
+static void analyze_disk(const char *dname)
+{
+ int f;
+ struct stat st;
+ uint64_t size;
+
+ log_debug("analyze_disk(hdd_atasmart): %s", dname);
+
+ f = open(dname, O_RDONLY|O_NOCTTY|O_NONBLOCK|O_CLOEXEC);
+
+ if (f < 0) {
+ log_debug("analyze_disk(hdd_atasmart): Could not open file %s: %s",
+ dname,
+ strerror(errno));
+ goto fail;
+ }
+
+ if (fstat(f, &st) < 0) {
+ log_debug("analyze_disk(hdd_atasmart): fstat fails %s: %s",
+ dname,
+ strerror(errno));
+ goto fail;
+ }
+
+ if (!S_ISBLK(st.st_mode)) {
+ log_debug("analyze_disk(hdd_atasmart): !S_ISBLK fails %s",
+ dname);
+ goto fail;
+ }
+
+ size = (uint64_t)-1;
+ /* So, it's a block device. Let's make sure the ioctls work */
+ if (ioctl(f, BLKGETSIZE64, &size) < 0) {
+ log_debug("analyze_disk(hdd_atasmart): ioctl fails %s: %s",
+ dname,
+ strerror(errno));
+ goto fail;
+ }
+
+ if (size <= 0 || size == (uint64_t) -1) {
+ log_debug("analyze_disk(hdd_atasmart): ioctl wrong size %s: %ld",
+ dname,
+ size);
+ goto fail;
+ }
+
+ fail:
+ close(f);
+}
+
+struct psensor **hdd_psensor_list_add(struct psensor **sensors,
+ int values_max_length)
+{
+ char **paths, **tmp, *id;
+ SkDisk *disk;
+ struct psensor *sensor, **tmp_sensors, **result;
+
+ log_debug("hdd_psensor_list_add(hdd_atasmart)");
+
+ paths = dir_list("/dev", filter_sd);
+
+ result = sensors;
+ tmp = paths;
+ while (*tmp) {
+ log_debug("hdd_psensor_list_add(hdd_atasmart) open %s", *tmp);
+
+ if (!sk_disk_open(*tmp, &disk)) {
+ id = malloc(strlen("hdd at") + strlen(*tmp) + 1);
+ strcpy(id, "hdd at");
+ strcat(id, *tmp);
+
+ sensor = create_sensor(id,
+ *tmp,
+ disk,
+ values_max_length);
+
+ tmp_sensors = psensor_list_add(result, sensor);
+
+ if (result != sensors)
+ free(result);
+
+ result = tmp_sensors;
+ } else {
+ log_err(_("atasmart: sk_disk_open() failure: %s."),
+ *tmp);
+ analyze_disk(*tmp);
+ }
+
+ tmp++;
+ }
+
+ paths_free(paths);
+
+ return result;
+}
+
+void hdd_psensor_list_update(struct psensor **sensors)
+{
+ struct psensor **cur, *s;
+ uint64_t kelvin;
+ int ret;
+ double c;
+
+ cur = sensors;
+ while (*cur) {
+ s = *cur;
+ if (!(s->type & SENSOR_TYPE_REMOTE)
+ && s->type & SENSOR_TYPE_ATASMART) {
+ ret = sk_disk_smart_read_data(s->disk);
+
+ if (!ret) {
+ ret = sk_disk_smart_get_temperature(s->disk,
+ &kelvin);
+
+ if (!ret) {
+ c = (kelvin - 273150) / 1000;
+ psensor_set_current_value(s, c);
+ log_debug("hdd_psensor_list_update(hdd_atasmart): %s %.2f",
+ s->id,
+ c);
+ }
+ }
+ }
+
+ cur++;
+ }
+}
--- /dev/null
+/*
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301 USA
+ */
+#include <locale.h>
+#include <libintl.h>
+#define _(str) gettext(str)
+
+/*
+ * Following code is based on GNOME sensors applet code
+ * hddtemp-plugin.c see http://sensors-applet.sourceforge.net/
+ */
+#include <stdlib.h>
+#include <string.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+#include <unistd.h>
+
+#include "hdd.h"
+#include "psensor.h"
+
+#define HDDTEMP_SERVER_IP_ADDRESS "127.0.0.1"
+#define HDDTEMP_PORT_NUMBER 7634
+#define HDDTEMP_OUTPUT_BUFFER_LENGTH 4048
+
+struct hdd_info {
+ char *name;
+ int temp;
+};
+
+static char *fetch()
+{
+ int sockfd;
+ ssize_t n = 1;
+ int output_length = 0;
+ char *pc;
+ char *buffer;
+ struct sockaddr_in address;
+
+ sockfd = socket(AF_INET, SOCK_STREAM, 0);
+ if (sockfd == -1) {
+ log_err(_("hddtemp: failed to open socket."));
+ return NULL;
+ }
+
+ address.sin_family = AF_INET;
+ address.sin_addr.s_addr = inet_addr(HDDTEMP_SERVER_IP_ADDRESS);
+ address.sin_port = htons(HDDTEMP_PORT_NUMBER);
+
+ buffer = NULL;
+
+ if (connect(sockfd,
+ (struct sockaddr *)&address,
+ (socklen_t) sizeof(address)) == -1) {
+ log_err(_("hddtemp: failed to open connection."));
+ } else {
+ buffer = malloc(HDDTEMP_OUTPUT_BUFFER_LENGTH);
+
+ pc = buffer;
+ while ((n = read(sockfd,
+ pc,
+ HDDTEMP_OUTPUT_BUFFER_LENGTH -
+ output_length)) > 0) {
+
+ output_length += n;
+ pc = &pc[n];
+ }
+
+ buffer[output_length] = '\0';
+ }
+
+ close(sockfd);
+
+ return buffer;
+}
+
+static int str_index(char *str, char d)
+{
+ char *c;
+ int i;
+
+ if (!str || *str == '\0')
+ return -1;
+
+ c = str;
+
+ i = 0;
+ while (*c) {
+ if (*c == d)
+ return i;
+ i++;
+ c++;
+ }
+
+ return -1;
+}
+
+static struct psensor *
+create_sensor(char *id, char *name, int values_max_length)
+{
+ int t;
+
+ t = SENSOR_TYPE_HDD | SENSOR_TYPE_HDDTEMP | SENSOR_TYPE_TEMP;
+
+ return psensor_create(id, name, strdup("HDD"),
+ t,
+ values_max_length);
+}
+
+static char *next_hdd_info(char *string, struct hdd_info *info)
+{
+ char *c;
+ int idx_name_n, i, temp;
+
+ if (!string || strlen(string) <= 5 /* at least 5 pipes */
+ || string[0] != '|')
+ return NULL;
+
+ /* skip first pipe */
+ c = string + 1;
+
+ /* name */
+ idx_name_n = str_index(c, '|');
+
+ if (idx_name_n == -1)
+ return NULL;
+ c = c + idx_name_n + 1;
+
+ /* skip label */
+ i = str_index(c, '|');
+ if (i == -1)
+ return NULL;
+ c = c + i + 1;
+
+ /* temp */
+ i = str_index(c, '|');
+ if (i == -1)
+ return NULL;
+ temp = atoi(c);
+ c = c + i + 1;
+
+ /* skip unit */
+ i = str_index(c, '|');
+ if (i == -1)
+ return NULL;
+ c = c + i + 1;
+
+ info->name = malloc(idx_name_n + 1);
+ strncpy(info->name, string + 1, idx_name_n);
+ info->name[idx_name_n] = '\0';
+
+ info->temp = temp;
+
+ return c;
+}
+
+struct psensor **hddtemp_psensor_list_add(struct psensor **sensors,
+ int values_max_length)
+{
+ char *hddtemp_output = fetch();
+ char *c;
+ struct hdd_info info;
+ struct psensor **result;
+
+ if (!hddtemp_output)
+ return sensors;
+
+ if (hddtemp_output[0] != '|') {
+ log_err(_("hddtemp: wrong string: %s."), hddtemp_output);
+
+ free(hddtemp_output);
+
+ return sensors;
+ }
+
+ c = hddtemp_output;
+
+ result = sensors;
+
+ while (c && (c = next_hdd_info(c, &info))) {
+ struct psensor *sensor;
+ struct psensor **tmp_sensors;
+
+ char *id = malloc(strlen("hdd ") + strlen(info.name) + 1);
+ strcpy(id, "hdd ");
+ strcat(id, info.name);
+
+ sensor = create_sensor(id, info.name, values_max_length);
+
+ tmp_sensors = psensor_list_add(result, sensor);
+
+ if (result != sensors)
+ free(result);
+
+ result = tmp_sensors;
+ }
+
+ free(hddtemp_output);
+
+ return result;
+}
+
+static void update(struct psensor **sensors, struct hdd_info *info)
+{
+ struct psensor **sensor_cur = sensors;
+
+ while (*sensor_cur) {
+ if (!((*sensor_cur)->type & SENSOR_TYPE_REMOTE)
+ && (*sensor_cur)->type & SENSOR_TYPE_HDDTEMP
+ && !strcmp((*sensor_cur)->id + 4, info->name))
+ psensor_set_current_value(*sensor_cur,
+ (float)info->temp);
+
+ sensor_cur++;
+ }
+}
+
+void hddtemp_psensor_list_update(struct psensor **sensors)
+{
+ char *hddtemp_output = fetch();
+
+ if (!hddtemp_output)
+ return;
+
+ if (hddtemp_output[0] == '|') {
+
+ char *c = hddtemp_output;
+ struct hdd_info info;
+ info.name = NULL;
+ info.temp = 0;
+
+ while (c && (c = next_hdd_info(c, &info))) {
+
+ update(sensors, &info);
+
+ free(info.name);
+ }
+ } else {
+ log_err(_("hddtemp: wrong string: %s."), hddtemp_output);
+ }
+
+ free(hddtemp_output);
+}
/*
- * Copyright (C) 2010-2012 jeanfi@gmail.com
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
err = sensors_get_value(name, sub->number, &val);
if (err) {
- fprintf(stderr,
- _("ERROR: Can't get value of subfeature %s: %s\n"),
+ log_err(_("lmsensor: cannot get value of subfeature %s: %s."),
sub->name, sensors_strerror(err));
val = UNKNOWN_DBL_VALUE;
}
return ;
while (*s_ptr) {
- struct psensor *sensor = *s_ptr;
-
- if (sensor->type == SENSOR_TYPE_LMSENSOR_TEMP)
- psensor_set_current_value
- (sensor, get_temp_input(sensor));
- else if (sensor->type == SENSOR_TYPE_LMSENSOR_FAN)
- psensor_set_current_value(sensor,
- get_fan_input(sensor));
+ struct psensor *s = *s_ptr;
+
+ if (!(s->type & SENSOR_TYPE_REMOTE)
+ && s->type & SENSOR_TYPE_LMSENSOR) {
+ if (s->type & SENSOR_TYPE_TEMP)
+ psensor_set_current_value(s,
+ get_temp_input(s));
+ else if (s->type & SENSOR_TYPE_RPM)
+ psensor_set_current_value(s, get_fan_input(s));
+ }
s_ptr++;
}
{
char name[200];
const sensors_subfeature *sf;
- char *label;
int type;
- char *id;
+ char *id, *label, *cname;
struct psensor *psensor;
sensors_subfeature_type fault_subfeature;
if (feature->type == SENSORS_FEATURE_TEMP) {
fault_subfeature = SENSORS_SUBFEATURE_TEMP_FAULT;
-
} else if (feature->type == SENSORS_FEATURE_FAN) {
fault_subfeature = SENSORS_SUBFEATURE_FAN_FAULT;
-
} else {
- fprintf(stderr,
- _("ERROR: create_sensor, wrong feature type\n"));
+ log_err(_(
+"lmsensor: lmsensor_psensor_create failure: wrong feature type."));
return NULL;
}
if (!label)
return NULL;
- type = 0;
+ type = SENSOR_TYPE_LMSENSOR;
if (feature->type == SENSORS_FEATURE_TEMP)
- type = SENSOR_TYPE_LMSENSOR_TEMP;
+ type |= SENSOR_TYPE_TEMP;
else if (feature->type == SENSORS_FEATURE_FAN)
- type = SENSOR_TYPE_LMSENSOR_FAN;
+ type |= (SENSOR_TYPE_RPM|SENSOR_TYPE_FAN);
else
return NULL;
1);
sprintf(id, "lmsensor %s %s", name, label);
- psensor = psensor_create(id, label, type, values_max_length);
+ if (!strcmp(chip->prefix, "coretemp"))
+ cname = strdup("Intel CPU");
+ else if (!strcmp(chip->prefix, "k10temp")
+ || !strcmp(chip->prefix, "k8temp")
+ || !strcmp(chip->prefix, "fam15h_power"))
+ cname = strdup("AMD CPU");
+ else if (!strcmp(chip->prefix, "nouveau"))
+ cname = strdup("Nvidia GPU");
+ else if (!strcmp(chip->prefix, "via-cputemp"))
+ cname = strdup("VIA CPU");
+ else
+ cname = strdup(chip->prefix);
+
+ psensor = psensor_create(id, label, cname, type, values_max_length);
psensor->iname = chip;
psensor->feature = feature;
int err = sensors_init(NULL);
if (err) {
- fprintf(stderr,
- _("ERROR: lm-sensors initialization failure: %s\n"),
+ log_err(_("lmsensor: initialization failure: %s."),
sensors_strerror(err));
init_done = 0;
} else {
/*
- * Copyright (C) 2010-2012 jeanfi@gmail.com
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
/*
- * Copyright (C) 2010-2012 jeanfi@gmail.com
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301 USA
*/
+#define _LARGEFILE_SOURCE 1
+#include "config.h"
+
#include <locale.h>
#include <libintl.h>
#define _(str) gettext(str)
#include <stdarg.h>
#include <stdio.h>
+#include <stdlib.h>
#include <sys/time.h>
+#include <time.h>
#include "log.h"
+#include "ptime.h"
static FILE *file;
int log_level = LOG_WARN;
#define LOG_BUFFER 4096
static void vlogf(int lvl, const char *fmt, va_list ap)
{
- struct timeval tv;
char buffer[1 + LOG_BUFFER];
- char *lvl_str;
+ char *lvl_str, *t;
FILE *stdf;
if (lvl > LOG_INFO && (!file || lvl > log_level))
vsnprintf(buffer, LOG_BUFFER, fmt, ap);
buffer[LOG_BUFFER] = '\0';
- if (gettimeofday(&tv, NULL) != 0)
- timerclear(&tv);
-
switch (lvl) {
case LOG_WARN:
lvl_str = "[WARN]";
lvl_str = "[??]";
}
+ t = get_time_str();
+ if (!t)
+ return ;
+
if (file && lvl <= log_level) {
- fprintf(file, "[%ld] %s %s\n", tv.tv_sec, lvl_str, buffer);
+ fprintf(file, "[%s] %s %s\n", t, lvl_str, buffer);
fflush(file);
+ } else {
+ t = NULL;
}
if (lvl <= LOG_INFO) {
else
stdf = stdout;
- fprintf(stdf, "[%ld] %s %s\n", tv.tv_sec, lvl_str, buffer);
+
+ fprintf(stdf, "[%s] %s %s\n", t, lvl_str, buffer);
}
+
+ free(t);
}
void log_printf(int lvl, const char *fmt, ...)
vlogf(LOG_DEBUG, fmt, ap);
va_end(ap);
}
+
+void log_err(const char *fmt, ...)
+{
+ va_list ap;
+
+ va_start(ap, fmt);
+ vlogf(LOG_ERR, fmt, ap);
+ va_end(ap);
+}
+
+void log_warn(const char *fmt, ...)
+{
+ va_list ap;
+
+ va_start(ap, fmt);
+ vlogf(LOG_WARN, fmt, ap);
+ va_end(ap);
+}
+
+void log_info(const char *fmt, ...)
+{
+ va_list ap;
+
+ va_start(ap, fmt);
+ vlogf(LOG_INFO, fmt, ap);
+ va_end(ap);
+}
/*
- * Copyright (C) 2010-2012 jeanfi@gmail.com
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
void log_printf(int lvl, const char *fmt, ...);
void log_debug(const char *fmt, ...);
+void log_err(const char *fmt, ...);
+void log_info(const char *fmt, ...);
+void log_warn(const char *fmt, ...);
void log_close();
/*
- * Copyright (C) 2010-2012 jeanfi@gmail.com
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
result = malloc(size * sizeof(struct measure));
for (i = 0; i < size; i++) {
- result[i].value.d_num = UNKNOWN_DBL_VALUE;
+ result[i].value = UNKNOWN_DBL_VALUE;
timerclear(&result[i].time);
}
/*
- * Copyright (C) 2010-2012 jeanfi@gmail.com
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
#define UNKNOWN_DBL_VALUE DBL_MIN
struct measure {
- union value {
- double d_num;
- uint64_t ui64_num;
- } value;
+ double value;
struct timeval time;
};
/*
- * Copyright (C) 2010-2012 jeanfi@gmail.com
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
if (res == True)
return temp;
- fprintf(stderr, _("ERROR: failed to retrieve nvidia temperature\n"));
+ log_debug(_("NVIDIA proprietary driver not used or cannot "
+ "retrieve NVIDIA GPU temperature."));
return 0;
}
char name[200];
char *sid;
struct psensor *s;
+ int t;
sprintf(name, "GPU%d", id);
sid = malloc(strlen("nvidia") + 1 + strlen(name) + 1);
sprintf(sid, "nvidia %s", name);
- s = psensor_create(sid, strdup(name),
- SENSOR_TYPE_NVIDIA_TEMP, values_len);
+ t = SENSOR_TYPE_NVCTRL | SENSOR_TYPE_GPU | SENSOR_TYPE_TEMP;
+
+ s = psensor_create(sid,
+ strdup(name),
+ strdup("Nvidia GPU"),
+ t,
+ values_len);
s->nvidia_id = id;
display = XOpenDisplay(NULL);
if (!display) {
- fprintf(stderr,
- _("ERROR: Cannot open connection to X Server\n"));
+ log_err(_("Cannot open connection to X11 server."));
return 0;
}
XNVCTRLQueryTargetCount(display, NV_CTRL_TARGET_TYPE_GPU, &n))
return n;
- fprintf(stderr, _("ERROR: Cannot retrieve NVidia information\n"));
+ log_err(_("Failed to retrieve NVIDIA information."));
return 0;
}
while (*ss) {
s = *ss;
- if (s->type == SENSOR_TYPE_NVIDIA_TEMP)
+ if (s->type & SENSOR_TYPE_NVCTRL)
psensor_set_current_value(s, get_temp(s));
ss++;
/*
- * Copyright (C) 2010-2012 jeanfi@gmail.com
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
+++ /dev/null
-/*
- * Copyright (C) 2010-2012 jeanfi@gmail.com
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- *
- * This program 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
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301 USA
- */
-#include <stdlib.h>
-#include <stdio.h>
-#include <sys/stat.h>
-#include <string.h>
-#include <dirent.h>
-
-#include "p_io.h"
-
-int is_dir(const char *path)
-{
- struct stat st;
-
- int ret = lstat(path, &st);
-
- if (ret == 0 && S_ISDIR(st.st_mode))
- return 1;
-
- return 0;
-}
-
-int is_file(const char *path)
-{
- struct stat st;
-
- int ret = lstat(path, &st);
-
- if (ret == 0 && S_ISREG(st.st_mode))
- return 1;
-
- return 0;
-}
-
-char *dir_normalize(const char *dpath)
-{
- char *npath;
- int n;
-
- if (!dpath || !strlen(dpath))
- return NULL;
-
- npath = strdup(dpath);
-
- n = strlen(npath);
-
- if (n > 1 && npath[n - 1] == '/')
- npath[n - 1] = '\0';
-
- return npath;
-}
-
-char **dir_list(const char *dpath, int (*filter) (const char *path))
-{
- struct dirent *ent;
- DIR *dir;
- char **paths;
- int n;
-
- dir = opendir(dpath);
-
- if (!dir)
- return NULL;
-
- n = 1;
- paths = malloc(sizeof(void *));
- *paths = NULL;
-
- while ((ent = readdir(dir)) != NULL) {
- char *fpath;
- char *name = ent->d_name;
-
- if (!strcmp(name, ".") || !strcmp(name, ".."))
- continue;
-
- fpath = malloc(strlen(dpath) + 1 + strlen(name) + 1);
-
- strcpy(fpath, dpath);
- strcat(fpath, "/");
- strcat(fpath, name);
-
- if (!filter || filter(fpath)) {
- char **npaths;
-
- n++;
- npaths = malloc(n * sizeof(void *));
- memcpy(npaths + 1, paths, (n - 1) * sizeof(void *));
- free(paths);
- paths = npaths;
- *npaths = fpath;
-
- } else {
- free(fpath);
- }
- }
-
- closedir(dir);
-
- return paths;
-}
-
-void paths_free(char **paths)
-{
- char **paths_cur;
-
- paths_cur = paths;
- while (*paths_cur) {
- free(*paths_cur);
-
- paths_cur++;
- }
-
- free(paths);
-}
-
-char *file_get_content(const char *fpath)
-{
- long size;
-
- char *page;
-
- size = file_get_size(fpath);
-
- if (size == -1) {
- page = NULL;
-
- } else if (size == 0) {
- page = malloc(1);
- *page = '\0';
-
- } else {
- FILE *fp = fopen(fpath, "rb");
- if (fp) {
- page = malloc(size + 1);
- if (!page || size != fread(page, 1, size, fp)) {
- free(page);
- return NULL;
- }
-
- *(page + size) = '\0';
-
- fclose(fp);
- } else {
- page = NULL;
- }
- }
-
- return page;
-}
-
-long file_get_size(const char *path)
-{
- FILE *fp;
-
- if (!is_file(path))
- return -1;
-
- fp = fopen(path, "rb");
- if (fp) {
- long size;
-
- if (fseek(fp, 0, SEEK_END) == -1)
- return -1;
-
- size = ftell(fp);
-
- fclose(fp);
-
- return size;
- }
-
- return -1;
-}
-
-#define FCOPY_BUF_SZ 4096
-static int FILE_copy(FILE *src, FILE *dst)
-{
- int ret = 0;
- char *buf = malloc(FCOPY_BUF_SZ);
- int n;
-
- if (!buf)
- return FILE_COPY_ERROR_ALLOC_BUFFER;
-
- while (!ret) {
- n = fread(buf, 1, FCOPY_BUF_SZ, src);
- if (n) {
- if (fwrite(buf, 1, n, dst) != n)
- ret = FILE_COPY_ERROR_WRITE;
- } else {
- if (!feof(src))
- ret = FILE_COPY_ERROR_READ;
- else
- break;
- }
- }
-
- free(buf);
-
- return ret;
-}
-
-int
-file_copy(const char *src, const char *dst)
-{
- FILE *fsrc, *fdst;
- int ret = 0;
-
- fsrc = fopen(src, "r");
-
- if (fsrc) {
- fdst = fopen(dst, "w+");
-
- if (fdst) {
- ret = FILE_copy(fsrc, fdst);
- fclose(fdst);
- } else {
- ret = FILE_COPY_ERROR_OPEN_DST;
- }
-
- fclose(fsrc);
- } else {
- ret = FILE_COPY_ERROR_OPEN_SRC;
- }
-
- return ret;
-}
-
-char *path_append(const char *dir, const char *path)
-{
- char *ret, *ndir;
-
- ndir = dir_normalize(dir);
-
- if (!ndir && (!path || !strlen(path)))
- ret = NULL;
-
- else if (!ndir) {
- ret = strdup(path);
-
- } else if (!path || !strlen(path)) {
- return ndir;
-
- } else {
- ret = malloc(strlen(ndir) + 1 + strlen(path) + 1);
- strcpy(ret, ndir);
- strcat(ret, "/");
- strcat(ret, path);
- }
-
- free(ndir);
-
- return ret;
-}
-
-void
-file_copy_print_error(int code, const char *src, const char *dst)
-{
- switch (code) {
- case 0:
- break;
- case FILE_COPY_ERROR_OPEN_SRC:
- printf("File copy error: failed to open %s.\n", src);
- break;
- case FILE_COPY_ERROR_OPEN_DST:
- printf("File copy error: failed to open %s.\n", dst);
- break;
- case FILE_COPY_ERROR_READ:
- printf("File copy error: failed to read %s.\n", src);
- break;
- case FILE_COPY_ERROR_WRITE:
- printf("File copy error: failed to write %s.\n", src);
- break;
- case FILE_COPY_ERROR_ALLOC_BUFFER:
- printf("File copy error: failed to allocate buffer.\n");
- break;
- default:
- printf("File copy error: unknown error %d.\n", code);
- }
-}
+++ /dev/null
-/*
- * Copyright (C) 2010-2012 jeanfi@gmail.com
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- *
- * This program 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
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301 USA
- */
-#ifndef _P_IO_H
-#define _P_IO_H
-
-/* Returns '1' if a given 'path' denotates a directory else returns
- 0 */
-int is_dir(const char *path);
-
-/* Returns '1' if a given 'path' denotates a file else returns
- 0 */
-int is_file(const char *path);
-
-/* Returns a normalized path */
-char *path_normalize(const char *dpath);
-
-/* Returns the null-terminated entries of a directory */
-char **dir_list(const char *dpath, int (*filter) (const char *path));
-void paths_free(char **paths);
-
-char *path_append(const char *dir, const char *path);
-
-/*
- Returns the size of a file.
- Returns '-1' if the size cannot be retrieved or not a file.
-*/
-long file_get_size(const char *path);
-
-/*
- Returns the content of a file.
- Returns 'NULL' if the file cannot be read or failed to allocate
- enough memory.
- Returns an empty string if the file exists but is empty.
-*/
-char *file_get_content(const char *path);
-
-enum file_copy_error {
- FILE_COPY_ERROR_OPEN_SRC = 1,
- FILE_COPY_ERROR_OPEN_DST,
- FILE_COPY_ERROR_READ,
- FILE_COPY_ERROR_WRITE,
- FILE_COPY_ERROR_ALLOC_BUFFER
-};
-
-void file_copy_print_error(int code, const char *src, const char *dst);
-
-/*
- Copy a file.
-
- Returns '0' if sucessfull, otherwise return the error code.
-*/
-int file_copy(const char *src, const char *dst);
-
-#endif
--- /dev/null
+/*
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301 USA
+ */
+#define _LARGEFILE_SOURCE 1
+#include "config.h"
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <sys/stat.h>
+#include <string.h>
+#include <dirent.h>
+
+#include "pio.h"
+
+static char *path_append(const char *dir, const char *path)
+{
+ char *result;
+
+ result = malloc(strlen(dir) + 1 + strlen(path) + 1);
+
+ strcpy(result, dir);
+ strcat(result, "/");
+ strcat(result, path);
+
+ return result;
+}
+
+static char **paths_add(char **paths, int n, char *path)
+{
+ char **result;
+
+ result = malloc((n+1) * sizeof(void *));
+
+ memcpy(result + 1, paths, n * sizeof(void *));
+
+ *result = path;
+
+ return result;
+}
+
+char **dir_list(const char *dpath, int (*filter) (const char *))
+{
+ struct dirent *ent;
+ DIR *dir;
+ char **paths, *path, *name, **tmp;
+ int n;
+
+ dir = opendir(dpath);
+
+ if (!dir)
+ return NULL;
+
+ n = 1;
+ paths = malloc(sizeof(void *));
+ *paths = NULL;
+
+ while ((ent = readdir(dir)) != NULL) {
+ name = ent->d_name;
+
+ if (!strcmp(name, ".") || !strcmp(name, ".."))
+ continue;
+
+ path = path_append(dpath, name);
+
+ if (!filter || filter(path)) {
+ tmp = paths_add(paths, n, path);
+ free(paths);
+ paths = tmp;
+
+ n++;
+ } else {
+ free(path);
+ }
+ }
+
+ closedir(dir);
+
+ return paths;
+}
+
+void paths_free(char **paths)
+{
+ char **paths_cur;
+
+ paths_cur = paths;
+ while (*paths_cur) {
+ free(*paths_cur);
+
+ paths_cur++;
+ }
+
+ free(paths);
+}
--- /dev/null
+/*
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301 USA
+ */
+#ifndef _P_IO_H
+#define _P_IO_H
+
+char **dir_list(const char *dpath, int (*filter) (const char *path));
+void paths_free(char **paths);
+
+#endif
/*
- * Copyright (C) 2010-2012 jeanfi@gmail.com
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
#include "cpu.h"
#endif
-
-struct psensor *psensor_create(char *id, char *name,
- unsigned int type, int values_max_length)
+struct psensor *psensor_create(char *id,
+ char *name,
+ char *chip,
+ unsigned int type,
+ int values_max_length)
{
- struct psensor *psensor
- = (struct psensor *)malloc(sizeof(struct psensor));
+ struct psensor *psensor;
+
+ psensor = (struct psensor *)malloc(sizeof(struct psensor));
psensor->id = id;
psensor->name = name;
- psensor->enabled = 1;
+ psensor->chip = chip;
psensor->min = UNKNOWN_DBL_VALUE;
psensor->max = UNKNOWN_DBL_VALUE;
psensor->values_max_length = values_max_length;
psensor->measures = measures_dbl_create(values_max_length);
- psensor->alarm_limit = 0;
+ psensor->alarm_enabled = 0;
+ psensor->alarm_high_threshold = 0;
+ psensor->alarm_low_threshold = 0;
psensor->cb_alarm_raised = NULL;
psensor->cb_alarm_raised_data = NULL;
psensor->alarm_raised = 0;
- psensor->alarm_enabled = 0;
-
psensor->url = NULL;
psensor->color = NULL;
+ psensor->graph_enabled = 1;
+ psensor->appindicator_enabled = 0;
+
return psensor;
}
void psensor_free(struct psensor *sensor)
{
if (sensor) {
+ log_debug("Cleanup %s", sensor->id);
+
free(sensor->name);
free(sensor->id);
+ if (sensor->chip)
+ free(sensor->chip);
+
if (sensor->color)
free(sensor->color);
s = sensors;
while (*s) {
- if ((*s)->type == type)
+ if ((*s)->type & type)
return 1;
s++;
}
return type & SENSOR_TYPE_FAN;
}
-char *psensor_value_to_string(unsigned int type, double value)
+double celcius_to_fahrenheit(double c)
{
- /* should not be possible to exceed 20 characters with temp or
- rpm values the .x part is never displayed */
- char *str = malloc(20);
+ return c * (9.0/5.0) + 32;
+}
+
+double fahrenheit_to_celcius(double f)
+{
+ return (f - 32) * (5.0/9.0);
+}
- char *unit;
+char *
+psensor_value_to_str(unsigned int type, double value, int use_celcius)
+{
+ char *str;
+ const char *unit;
+
+ /*
+ * should not be possible to exceed 20 characters with temp or
+ * rpm values the .x part is never displayed
+ */
+ str = malloc(20);
- if (is_temp_type(type))
- unit = "C";
- else if (type & SENSOR_TYPE_CPU_USAGE)
- unit = "%";
- else
- unit = "";
+ unit = psensor_type_to_unit_str(type, use_celcius);
+
+ if (is_temp_type(type) && !use_celcius)
+ value = celcius_to_fahrenheit(value);
sprintf(str, "%.0f%s", value, unit);
return str;
}
+char *
+psensor_measure_to_str(const struct measure *m,
+ unsigned int type,
+ unsigned int use_celcius)
+{
+ return psensor_value_to_str(type, m->value, use_celcius);
+}
+
void psensor_set_current_value(struct psensor *sensor, double value)
{
struct timeval tv;
psensor_set_current_measure(sensor, value, tv);
}
-void
-psensor_set_current_measure(struct psensor *s,
- double v, struct timeval tv)
+void psensor_set_current_measure(struct psensor *s, double v, struct timeval tv)
{
memmove(s->measures,
&s->measures[1],
(s->values_max_length - 1) * sizeof(struct measure));
- s->measures[s->values_max_length - 1].value.d_num = v;
+ s->measures[s->values_max_length - 1].value = v;
s->measures[s->values_max_length - 1].time = tv;
if (s->min == UNKNOWN_DBL_VALUE || v < s->min)
if (s->max == UNKNOWN_DBL_VALUE || v > s->max)
s->max = v;
- if (s->alarm_limit && s->alarm_enabled) {
- if (v > s->alarm_limit) {
+ if (s->alarm_enabled) {
+ if (v > s->alarm_high_threshold || v < s->alarm_low_threshold) {
if (!s->alarm_raised && s->cb_alarm_raised)
- s->cb_alarm_raised(s,
- s->cb_alarm_raised_data);
+ s->cb_alarm_raised(s, s->cb_alarm_raised_data);
s->alarm_raised = 1;
} else {
}
}
-double psensor_get_current_value(struct psensor *sensor)
+double psensor_get_current_value(const struct psensor *sensor)
{
- return sensor->measures[sensor->values_max_length - 1].value.d_num;
+ return sensor->measures[sensor->values_max_length - 1].value;
}
struct measure *psensor_get_current_measure(struct psensor *sensor)
Returns the minimal value of a given 'type' (SENSOR_TYPE_TEMP or
SENSOR_TYPE_FAN)
*/
-double get_min_value(struct psensor **sensors, int type)
+static double get_min_value(struct psensor **sensors, int type)
{
double m = UNKNOWN_DBL_VALUE;
struct psensor **s = sensors;
while (*s) {
struct psensor *sensor = *s;
- if (sensor->enabled && (sensor->type & type)) {
+ if (sensor->type & type) {
int i;
double t;
for (i = 0; i < sensor->values_max_length; i++) {
- t = sensor->measures[i].value.d_num;
+ t = sensor->measures[i].value;
if (t == UNKNOWN_DBL_VALUE)
continue;
while (*s) {
struct psensor *sensor = *s;
- if (sensor->enabled && (sensor->type & type)) {
+ if (sensor->type & type) {
int i;
double t;
for (i = 0; i < sensor->values_max_length; i++) {
- t = sensor->measures[i].value.d_num;
+ t = sensor->measures[i].value;
if (t == UNKNOWN_DBL_VALUE)
continue;
while (*s_cur) {
struct psensor *s = *s_cur;
- if (s->enabled && (s->type & type)) {
+ if (s->graph_enabled && (s->type & type)) {
double v = psensor_get_current_value(s);
if (m == UNKNOWN_DBL_VALUE || v > m)
return get_max_value(sensors, SENSOR_TYPE_TEMP);
}
-struct psensor **get_all_sensors(int values_max_length)
+struct psensor **get_all_sensors(int use_libatasmart, int values_max_length)
{
- struct psensor **psensors = NULL;
+ struct psensor **psensors;
struct psensor **tmp_psensors;
psensors = lmsensor_psensor_list_add(NULL, values_max_length);
- tmp_psensors = hdd_psensor_list_add(psensors, values_max_length);
- if (tmp_psensors != psensors) {
- free(psensors);
- psensors = tmp_psensors;
+ if (!use_libatasmart) {
+ tmp_psensors = hddtemp_psensor_list_add(psensors,
+ values_max_length);
+ if (tmp_psensors != psensors) {
+ free(psensors);
+ psensors = tmp_psensors;
+ }
}
+#ifdef HAVE_ATASMART
+ else {
+ tmp_psensors = hdd_psensor_list_add(psensors,
+ values_max_length);
+ if (tmp_psensors != psensors) {
+ free(psensors);
+ psensors = tmp_psensors;
+ }
+ }
+#endif
if (!psensors) { /* there is no detected sensors */
psensors = malloc(sizeof(struct psensor *));
const char *psensor_type_to_str(unsigned int type)
{
- if ((type & SENSOR_TYPE_NVIDIA_TEMP) == SENSOR_TYPE_NVIDIA_TEMP)
- return "NVidia GPU Temperature";
-
- if ((type & SENSOR_TYPE_AMD_TEMP) == SENSOR_TYPE_AMD_TEMP)
- return "AMD GPU Temperature";
-
- if ((type & SENSOR_TYPE_AMD_FAN) == SENSOR_TYPE_AMD_FAN)
- return "AMD GPU Fan Speed";
+ if (type & SENSOR_TYPE_NVCTRL)
+ return "NVidia GPU";
+
+ if (type & SENSOR_TYPE_ATIADL) {
+ if (type & SENSOR_TYPE_TEMP)
+ return "AMD GPU Temperature";
+ else if (type & SENSOR_TYPE_RPM)
+ return "AMD GPU Fan Speed";
+ else /* type & SENSOR_TYPE_USAGE */
+ return "AMD GPU Usage";
+ }
if ((type & SENSOR_TYPE_HDD_TEMP) == SENSOR_TYPE_HDD_TEMP)
return "HDD Temperature";
- if (type & SENSOR_TYPE_CPU_USAGE)
+ if ((type & SENSOR_TYPE_CPU_USAGE) == SENSOR_TYPE_CPU_USAGE)
return "CPU Usage";
if (type & SENSOR_TYPE_TEMP)
if (type & SENSOR_TYPE_FAN)
return "Fan";
+ if (type & SENSOR_TYPE_CPU)
+ return "CPU";
+
if (type & SENSOR_TYPE_REMOTE)
return "Remote";
- return "N/A"; /* should not be possible */
+ return "N/A";
}
-const char *psensor_type_to_unit_str(unsigned int type)
+const char *psensor_type_to_unit_str(unsigned int type, int use_celcius)
{
- if (type & SENSOR_TYPE_TEMP)
- return _("C");
-
- if (type & SENSOR_TYPE_FAN)
+ if (is_temp_type(type)) {
+ if (use_celcius)
+ return "\302\260C";
+ else
+ return "\302\260F";
+ } else if (is_fan_type(type)) {
return _("RPM");
-
- if (type & SENSOR_TYPE_CPU_USAGE)
+ } else if (type & SENSOR_TYPE_CPU_USAGE) {
return _("%");
-
- return "N/A";
+ } else {
+ return _("N/A");
+ }
}
void psensor_list_update_measures(struct psensor **sensors)
cpu_psensor_list_update(sensors);
#endif
- if (psensor_list_contains_type(sensors, SENSOR_TYPE_HDD_TEMP))
+ if (psensor_list_contains_type(sensors, SENSOR_TYPE_HDDTEMP))
+ hddtemp_psensor_list_update(sensors);
+
+#ifdef HAVE_ATASMART
+ if (psensor_list_contains_type(sensors, SENSOR_TYPE_ATASMART))
hdd_psensor_list_update(sensors);
+#endif
+}
+
+void psensor_log_measures(struct psensor **sensors)
+{
+ if (log_level == LOG_DEBUG)
+ while (*sensors) {
+ log_debug("Measure: %s %.2f",
+ (*sensors)->name,
+ psensor_get_current_value(*sensors));
+
+ sensors++;
+ }
}
void psensor_init()
{
lmsensor_cleanup();
}
+
+struct psensor **psensor_list_copy(struct psensor **sensors)
+{
+ struct psensor **result;
+ int n, i;
+
+ n = psensor_list_size(sensors);
+ result = malloc((n+1) * sizeof(struct psensor *));
+ for (i = 0; i < n; i++)
+ result[i] = sensors[i];
+ result[n] = NULL;
+
+ return result;
+}
+
+char *
+psensor_current_value_to_str(const struct psensor *s, unsigned int celcius)
+{
+ return psensor_value_to_str(s->type,
+ psensor_get_current_value(s),
+ celcius);
+}
+
+struct psensor **psensor_list_filter_graph_enabled(struct psensor **sensors)
+{
+ int n, i;
+ struct psensor **result, **cur, *s;
+
+ if (!sensors)
+ return NULL;
+
+ n = psensor_list_size(sensors);
+ result = malloc((n+1) * sizeof(struct psensor *));
+
+ for (cur = sensors, i = 0; *cur; cur++) {
+ s = *cur;
+
+ if (s->graph_enabled)
+ result[i++] = s;
+ }
+
+ result[i] = NULL;
+
+ return result;
+}
/*
- * Copyright (C) 2010-2012 jeanfi@gmail.com
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
#ifndef _PSENSOR_PSENSOR_H_
#define _PSENSOR_PSENSOR_H_
-#include "config.h"
#include <sensors/sensors.h>
+#include "config.h"
+#ifdef HAVE_ATASMART
+#include <atasmart.h>
+#endif
+
+#include "bool.h"
#include "color.h"
#include "log.h"
#include "measure.h"
enum psensor_type {
- SENSOR_TYPE_TEMP = 0x0001,
- SENSOR_TYPE_FAN = 0x0002,
- SENSOR_TYPE_REMOTE = 0x0004,
-
- SENSOR_TYPE_LMSENSOR = 0x0100,
- SENSOR_TYPE_NVIDIA_TEMP = 0x0200 | SENSOR_TYPE_TEMP,
- SENSOR_TYPE_HDD_TEMP = 0x0400 | SENSOR_TYPE_TEMP,
- SENSOR_TYPE_CPU_USAGE = 0x0800,
- SENSOR_TYPE_AMD = 0x1000,
-
- SENSOR_TYPE_AMD_TEMP = SENSOR_TYPE_AMD | SENSOR_TYPE_TEMP,
- SENSOR_TYPE_AMD_FAN = SENSOR_TYPE_AMD | SENSOR_TYPE_FAN,
-
- SENSOR_TYPE_LMSENSOR_TEMP = SENSOR_TYPE_LMSENSOR | SENSOR_TYPE_TEMP,
- SENSOR_TYPE_LMSENSOR_FAN = SENSOR_TYPE_LMSENSOR | SENSOR_TYPE_FAN
+ /* type of sensor values */
+ SENSOR_TYPE_TEMP = 0x00001,
+ SENSOR_TYPE_RPM = 0x00002,
+ SENSOR_TYPE_USAGE = 0x00004,
+
+ /* Whether the sensor is remote */
+ SENSOR_TYPE_REMOTE = 0x00008,
+
+ /* Libraries used for retrieving sensor information */
+ SENSOR_TYPE_LMSENSOR = 0x00100,
+ SENSOR_TYPE_NVCTRL = 0x00200,
+ SENSOR_TYPE_GTOP = 0x00400,
+ SENSOR_TYPE_ATIADL = 0x00800,
+ SENSOR_TYPE_ATASMART = 0x01000,
+ SENSOR_TYPE_HDDTEMP = 0x02000,
+
+ /* Type of HW component */
+ SENSOR_TYPE_HDD = 0x04000,
+ SENSOR_TYPE_CPU = 0x08000,
+ SENSOR_TYPE_GPU = 0x10000,
+ SENSOR_TYPE_FAN = 0x20000,
+
+ /* Combinations */
+ SENSOR_TYPE_HDD_TEMP = (SENSOR_TYPE_HDD | SENSOR_TYPE_TEMP),
+ SENSOR_TYPE_CPU_USAGE = (SENSOR_TYPE_CPU | SENSOR_TYPE_USAGE)
};
struct psensor {
/* Uniq id of the sensor */
char *id;
+ /* Name of the chip. */
+ char *chip;
+
/* lm-sensor */
const sensors_chip_name *iname;
const sensors_feature *feature;
/* Color of the sensor used for the graph */
struct color *color;
- /* Whether the sensor is displayed in the graph */
- int enabled;
+ /* Whether the graph sensor is displayed. */
+ bool graph_enabled;
/* see psensor_type */
unsigned int type;
/* The minimum detected value of the sensor */
double min;
- /*
- Whether alarm alerts is enabled for this sensor
- */
- int alarm_enabled;
+ /* Whether alarm alert is enabled for this sensor */
+ bool alarm_enabled;
- /*
- An alarm is raised if the current sensor value is bigger. 0
- means no limit
- */
- double alarm_limit;
+ int alarm_high_threshold;
+ int alarm_low_threshold;
- /* Whether the current value is bigger than 'alarm_limit'. */
- int alarm_raised;
+ /* Whether an alarm is raised for this sensor */
+ unsigned int alarm_raised;
void (*cb_alarm_raised) (struct psensor *, void *);
void *cb_alarm_raised_data;
/* AMD id for the aticonfig */
int amd_id;
#endif
-
+#ifdef HAVE_ATASMART
+ SkDisk *disk;
+#endif
char *url;
+
+ bool appindicator_enabled;
};
struct psensor *psensor_create(char *id,
- char *name, unsigned int type,
+ char *name,
+ char *chip,
+ unsigned int type,
int values_max_length);
void psensor_values_resize(struct psensor *s, int new_size);
void psensor_list_free(struct psensor **sensors);
int psensor_list_size(struct psensor **sensors);
+struct psensor **psensor_list_filter_graph_enabled(struct psensor **);
+
struct psensor *psensor_list_get_by_id(struct psensor **sensors,
const char *id);
parameter 'type' is SENSOR_TYPE_LMSENSOR_TEMP, SENSOR_TYPE_NVIDIA,
or SENSOR_TYPE_LMSENSOR_FAN
*/
-char *psensor_value_to_string(unsigned int type, double value);
+char *psensor_value_to_str(unsigned int type,
+ double value,
+ int use_celcius);
+
+char *psensor_measure_to_str(const struct measure *m,
+ unsigned int type,
+ unsigned int use_celcius);
-struct psensor **get_all_sensors(int values_max_length);
+struct psensor **get_all_sensors(int use_libatasmart, int values_max_length);
struct psensor **psensor_list_add(struct psensor **sensors,
struct psensor *sensor);
+struct psensor **psensor_list_copy(struct psensor **);
+
void psensor_set_current_value(struct psensor *sensor, double value);
void psensor_set_current_measure(struct psensor *sensor, double value,
struct timeval tv);
-double psensor_get_current_value(struct psensor *sensor);
+double psensor_get_current_value(const struct psensor *);
struct measure *psensor_get_current_measure(struct psensor *sensor);
*/
const char *psensor_type_to_str(unsigned int type);
-const char *psensor_type_to_unit_str(unsigned int type);
+const char *psensor_type_to_unit_str(unsigned int type, int use_celcius);
void psensor_list_update_measures(struct psensor **sensors);
double get_max_value(struct psensor **sensors, int type);
+double celcius_to_fahrenheit(double c);
+double fahrenheit_to_celcius(double c);
+
+char *psensor_current_value_to_str(const struct psensor *, unsigned int);
+
+void psensor_log_measures(struct psensor **sensors);
+
#endif
/*
- * Copyright (C) 2010-2012 jeanfi@gmail.com
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
json_object_object_add(o,
ATT_MEASURE_VALUE,
- json_object_new_double(m->value.d_num));
+ json_object_new_double(m->value));
json_object_object_add(o, ATT_MEASURE_TIME,
json_object_new_int((m->time).tv_sec));
return o;
mo = json_object_new_object();
json_object_object_add(mo,
ATT_MEASURE_VALUE,
- json_object_new_double(m->value.d_num));
+ json_object_new_double(m->value));
json_object_object_add(mo, ATT_MEASURE_TIME,
json_object_new_int((m->time).tv_sec));
json_object_object_add(obj, ATT_SENSOR_LAST_MEASURE, mo);
s = psensor_create(strdup(url),
strdup(json_object_get_string(oname)),
+ NULL,
json_object_get_int(otype) | SENSOR_TYPE_REMOTE,
values_max_length);
s->url = url;
/*
- * Copyright (C) 2010-2012 jeanfi@gmail.com
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
#ifndef _PSENSOR_PSENSOR_JSON_H_
#define _PSENSOR_PSENSOR_JSON_H_
+#include "config.h"
+
+#ifdef HAVE_JSON_0
#include <json/json.h>
+#else
+#include <json-c/json.h>
+#endif
#include "psensor.h"
* Creates a new allocated psensor corresponding to a given json
* representation.
*/
-struct psensor *psensor_new_from_json(json_object *o,
+struct psensor *psensor_new_from_json(json_object * o,
const char *sensors_url,
int values_max_length);
#endif
--- /dev/null
+/*
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301 USA
+ */
+#include <stdlib.h>
+
+#include "ptime.h"
+
+char *time_to_str(time_t *t)
+{
+ struct tm lt;
+ char *str;
+
+ if (!localtime_r(t, <))
+ return NULL;
+
+ str = malloc(64);
+
+ if (strftime(str, 64, "%s", <)) {
+ return str;
+ } else {
+ free(str);
+ return NULL;
+ }
+}
+
+char *get_time_str()
+{
+ time_t t;
+
+ t = time(NULL);
+ return time_to_str(&t);
+}
--- /dev/null
+/*
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301 USA
+ */
+#ifndef _P_TIME_H
+#define _P_TIME_H
+
+#include <time.h>
+
+char *get_time_str();
+char *time_to_str(time_t *t);
+
+#endif
--- /dev/null
+/*
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301 USA
+ */
+#define _LARGEFILE_SOURCE 1
+#include "config.h"
+
+#include <locale.h>
+#include <libintl.h>
+#define _(str) gettext(str)
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/stat.h>
+#include <sys/time.h>
+#include <sys/types.h>
+#include <unistd.h>
+
+#include "bool.h"
+#include "config.h"
+#include "log.h"
+#include "ptime.h"
+#include "slog.h"
+
+static FILE *file;
+static double *last_values;
+static int period;
+static struct psensor **sensors;
+static pthread_mutex_t *sensors_mutex;
+static pthread_t thread;
+static time_t st;
+
+static const char *DEFAULT_FILENAME = "sensors.log";
+
+static char *get_default_path()
+{
+ char *home, *path, *dir;
+
+ home = getenv("HOME");
+
+ if (home) {
+ dir = malloc(strlen(home)+1+strlen(".psensor")+1);
+ sprintf(dir, "%s/%s", home, ".psensor");
+ mkdir(dir, 0777);
+
+ path = malloc(strlen(dir)+1+strlen(DEFAULT_FILENAME)+1);
+ sprintf(path, "%s/%s", dir, DEFAULT_FILENAME);
+
+ free(dir);
+
+ return path;
+ } else {
+ log_warn(_("HOME variable not set."));
+ return strdup(DEFAULT_FILENAME);
+ }
+}
+
+static bool slog_open(const char *path, struct psensor **sensors)
+{
+ char *lpath, *t;
+
+ if (file) {
+ log_err(_("Sensor log file already open."));
+ return 0;
+ }
+
+ lpath = path ? (char *)path : get_default_path();
+
+ file = fopen(lpath, "a");
+
+ if (!file)
+ log_err(_("Cannot open sensor log file: %s."), lpath);
+
+ if (!path)
+ free((char *)lpath);
+
+ if (!file)
+ return 0;
+
+ st = time(NULL);
+ t = time_to_str(&st);
+
+ fprintf(file, "I,%s,%s\n", t, VERSION);
+
+ while (*sensors) {
+ fprintf(file, "S,%s,%x\n", (*sensors)->id, (*sensors)->type);
+ sensors++;
+ }
+
+ fflush(file);
+
+ return 1;
+}
+
+static void slog_write_sensors(struct psensor **sensors)
+{
+ int count, i;
+ double v;
+ struct timeval tv;
+ bool first_call;
+
+ if (!file) {
+ log_err(_("Sensor log file not open."));
+ return ;
+ }
+
+ gettimeofday(&tv, NULL);
+
+ count = psensor_list_size(sensors);
+
+ if (last_values) {
+ first_call = 0;
+ } else {
+ first_call = 1;
+ last_values = malloc(count * sizeof(double));
+ }
+
+ fprintf(file, "%ld", (long int)(tv.tv_sec - st));
+ for (i = 0; i < count; i++) {
+ v = psensor_get_current_value(sensors[i]);
+
+ if (!first_call && last_values[i] == v)
+ fputc(',', file);
+ else
+ fprintf(file, ",%.1f", v);
+
+ last_values[i] = v;
+ }
+
+ fputc('\n', file);
+
+ fflush(file);
+}
+
+static void *slog_routine(void *data)
+{
+ while (1) {
+ pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, NULL);
+ pthread_mutex_lock(sensors_mutex);
+ slog_write_sensors(sensors);
+ pthread_mutex_unlock(sensors_mutex);
+ pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL);
+ sleep(period);
+ }
+
+ pthread_exit(0);
+}
+
+void slog_close()
+{
+ if (file) {
+ pthread_cancel(thread);
+
+ fclose(file);
+ file = NULL;
+ free(last_values);
+ last_values = NULL;
+ } else {
+ log_debug(_("Sensor log not open, cannot close."));
+ }
+}
+
+bool slog_activate(const char *path,
+ struct psensor **ss,
+ pthread_mutex_t *mutex,
+ int p)
+{
+ bool ret;
+
+ sensors = ss;
+ sensors_mutex = mutex;
+ period = p;
+
+ pthread_mutex_lock(mutex);
+ ret = slog_open(path, sensors);
+ pthread_mutex_unlock(mutex);
+
+ if (ret)
+ pthread_create(&thread, NULL, slog_routine, NULL);
+
+ return ret;
+}
--- /dev/null
+/*
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301 USA
+ */
+#ifndef _PSENSOR_SLOG_H_
+#define _PSENSOR_SLOG_H_
+
+#include <pthread.h>
+
+#include "psensor.h"
+
+bool slog_activate(const char *, struct psensor **, pthread_mutex_t *, int s);
+void slog_close();
+
+#endif
/*
- * Copyright (C) 2010-2012 jeanfi@gmail.com
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
/*
- * Copyright (C) 2010-2012 jeanfi@gmail.com
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
/*
- * Copyright (C) 2010-2012 jeanfi@gmail.com
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
#include "ui_sensorlist.h"
#include "ui_color.h"
#include "lmsensor.h"
+#include "notify_cmd.h"
+#include "slog.h"
#include "ui_pref.h"
#include "ui_graph.h"
#include "ui_status.h"
#include "cpu.h"
#endif
-#include "compat.h"
-
static const char *program_name;
static void print_version()
"This is free software: you are free to change and "
" redistribute it.\n"
"There is NO WARRANTY, to the extent permitted by law.\n"),
- "2010-2012");
+ "2010-2013");
}
static void print_help()
{
printf(_("Usage: %s [OPTION]...\n"), program_name);
- puts(_("psensor is a GTK application for monitoring hardware sensors, "
+ puts(_("Psensor is a GTK+ application for monitoring hardware sensors, "
"including temperatures and fan speeds."));
puts("");
puts("");
- puts(_(" -u, --url=URL "
- "the URL of the psensor-server, example: http://hostname:3131"));
-
+ puts(_(
+" -u, --url=URL the URL of the psensor-server,\n"
+" example: http://hostname:3131"));
+ puts(_(
+" --use-libatasmart use atasmart library for disk monitoring instead of\n"
+" hddtemp daemon"));
+ puts(_(
+" -n, --new-instance force the creation of a new Psensor application"));
puts("");
puts(_(" -d, --debug=LEVEL "
}
/*
- Updates the size of the sensor values if different than the
- configuration.
+ * Updates the size of the sensor values if different than the
+ * configuration.
*/
-void
+static void
update_psensor_values_size(struct psensor **sensors, struct config *cfg)
{
- struct psensor **cur;
+ struct psensor **cur, *s;
- cur = sensors;
- while (*cur) {
- struct psensor *s = *cur;
+ for (cur = sensors; *cur; cur++) {
+ s = *cur;
if (s->values_max_length != cfg->sensor_values_max_length)
psensor_values_resize(s,
cfg->sensor_values_max_length);
-
- cur++;
}
}
-static void log_measures(struct psensor **sensors)
+static void update_measures(struct ui_psensor *ui)
{
- if (log_level == LOG_DEBUG)
- while (*sensors) {
- log_debug("Measure: %s %.2f",
- (*sensors)->name,
- psensor_get_current_value(*sensors));
-
- sensors++;
- }
-}
+ struct psensor **sensors;
+ struct config *cfg;
+ int period;
-void update_psensor_measures(struct ui_psensor *ui)
-{
- struct psensor **sensors = ui->sensors;
- struct config *cfg = ui->config;
+ cfg = ui->config;
while (1) {
- g_mutex_lock(ui->sensors_mutex);
+ pthread_mutex_lock(&ui->sensors_mutex);
+ sensors = ui->sensors;
if (!sensors)
return;
- update_psensor_values_size(sensors, ui->config);
+ update_psensor_values_size(sensors, cfg);
psensor_list_update_measures(sensors);
#ifdef HAVE_REMOTE_SUPPORT
amd_psensor_list_update(sensors);
#endif
- log_measures(sensors);
+ psensor_log_measures(sensors);
- g_mutex_unlock(ui->sensors_mutex);
+ period = cfg->sensor_update_interval;
- sleep(cfg->sensor_update_interval);
+ pthread_mutex_unlock(&ui->sensors_mutex);
+
+ sleep(period);
}
}
ret = TRUE;
cfg = ui->config;
- g_mutex_lock(ui->sensors_mutex);
+ pthread_mutex_lock(&ui->sensors_mutex);
- graph_update(ui->sensors, ui->w_graph, ui->config);
+ graph_update(ui->sensors, ui->w_graph, ui->config, ui->main_window);
- ui_sensorlist_update(ui);
+ ui_sensorlist_update(ui, 0);
if (is_appindicator_supported() || is_status_supported())
indicators_update(ui);
#ifdef HAVE_UNITY
ui_unity_launcher_entry_update(ui->sensors,
- !cfg->unity_launcher_count_disabled);
+ !cfg->unity_launcher_count_disabled,
+ cfg->temperature_unit == CELCIUS);
#endif
if (ui->graph_update_interval != cfg->graph_update_interval) {
ret = FALSE;
}
- g_mutex_unlock(ui->sensors_mutex);
+ pthread_mutex_unlock(&ui->sensors_mutex);
if (ret == FALSE)
g_timeout_add(1000 * ui->graph_update_interval,
return ret;
}
-void cb_alarm_raised(struct psensor *sensor, void *data)
+static void cb_alarm_raised(struct psensor *sensor, void *data)
{
#ifdef HAVE_LIBNOTIFY
- if (sensor->enabled)
+ if (sensor->alarm_enabled)
ui_notify(sensor, (struct ui_psensor *)data);
#endif
+
+ notify_cmd(sensor);
}
static void associate_colors(struct psensor **sensors)
unsigned int colors[COLORS_COUNT][3] = {
{0x0000, 0x0000, 0x0000}, /* black */
{0xffff, 0x0000, 0x0000}, /* red */
- {0x0000, 0.0000, 0xffff}, /* blue */
+ {0x0000, 0x0000, 0xffff}, /* blue */
{0x0000, 0xffff, 0x0000}, /* green */
{0x7fff, 0x7fff, 0x7fff}, /* grey */
{0x0000, 0x0000, 0x7fff}, /* dark blue */
{0x0000, 0x7fff, 0x0000} /* dark green */
};
+ struct psensor **cur;
+ int i;
+ struct color c;
- struct psensor **sensor_cur = sensors;
- int i = 0;
- while (*sensor_cur) {
- struct color default_color;
- color_set(&default_color,
+ for (cur = sensors, i = 0; *cur; cur++) {
+ color_set(&c,
colors[i % COLORS_COUNT][0],
colors[i % COLORS_COUNT][1],
colors[i % COLORS_COUNT][2]);
- (*sensor_cur)->color
- = config_get_sensor_color((*sensor_cur)->id,
- &default_color);
-
- sensor_cur++;
- i++;
+ (*cur)->color = config_get_sensor_color((*cur)->id, &c);
}
}
s->cb_alarm_raised = cb_alarm_raised;
s->cb_alarm_raised_data = ui;
- if (is_temp_type(s->type)) {
- s->alarm_limit
- = config_get_sensor_alarm_limit(s->id, 60);
+ s->alarm_high_threshold
+ = config_get_sensor_alarm_high_threshold(s->id);
+ s->alarm_low_threshold
+ = config_get_sensor_alarm_low_threshold(s->id);
+
+ if (is_temp_type(s->type) || is_fan_type(s->type)) {
s->alarm_enabled
= config_get_sensor_alarm_enabled(s->id);
} else {
- s->alarm_limit = 0;
+ s->alarm_high_threshold = 0;
s->alarm_enabled = 0;
}
char *n;
struct psensor *s = *sensor_cur;
- s->enabled = config_is_sensor_enabled(s->id);
+ s->graph_enabled = config_is_sensor_enabled(s->id);
n = config_get_sensor_name(s->id);
- if (n)
+ if (n) {
+ free(s->name);
s->name = n;
+ }
+
+ s->appindicator_enabled = config_is_appindicator_enabled(s->id);
sensor_cur++;
}
}
static struct option long_options[] = {
+ {"use-libatasmart", no_argument, 0, 0},
{"version", no_argument, 0, 'v'},
{"help", no_argument, 0, 'h'},
{"url", required_argument, 0, 'u'},
{"debug", required_argument, 0, 'd'},
+ {"new-instance", no_argument, 0, 'n'},
{0, 0, 0, 0}
};
glib_micro_version);
}
+static void cb_activate(GApplication *application,
+ gpointer data)
+{
+ ui_window_show((struct ui_psensor *)data);
+}
+
+/*
+ * Release memory for Valgrind.
+ */
+static void cleanup(struct ui_psensor *ui)
+{
+ pthread_mutex_lock(&ui->sensors_mutex);
+
+ log_debug("Cleanup...");
+
+ psensor_cleanup();
+
+#ifdef HAVE_NVIDIA
+ nvidia_cleanup();
+#endif
+#ifdef HAVE_LIBATIADL
+ amd_cleanup();
+#endif
+#ifdef HAVE_REMOTE_SUPPORT
+ rsensor_cleanup();
+#endif
+
+ psensor_list_free(ui->sensors);
+ ui->sensors = NULL;
+
+#if defined(HAVE_APPINDICATOR) || defined(HAVE_APPINDICATOR_029)
+ ui_appindicator_cleanup();
+#endif
+
+ ui_status_cleanup();
+
+ pthread_mutex_unlock(&ui->sensors_mutex);
+
+ config_cleanup();
+
+ log_debug("Cleanup done, closing log");
+}
+
+/*
+ * Creates the list of sensors.
+ *
+ * 'url': remote psensor server url, null for local monitoring.
+ * 'use_libatasmart': whether the libatasmart must be used.
+ */
+static struct psensor **create_sensors_list(const char *url,
+ unsigned int use_libatasmart)
+{
+ struct psensor **sensors;
+
+ if (url) {
+#ifdef HAVE_REMOTE_SUPPORT
+ rsensor_init();
+ sensors = get_remote_sensors(url, 600);
+#else
+ log_err(_("Psensor has not been compiled with remote "
+ "sensor support."));
+ exit(EXIT_FAILURE);
+#endif
+ } else {
+ sensors = get_all_sensors(use_libatasmart, 600);
+#ifdef HAVE_NVIDIA
+ sensors = nvidia_psensor_list_add(sensors, 600);
+#endif
+#ifdef HAVE_LIBATIADL
+ sensors = amd_psensor_list_add(sensors, 600);
+#endif
+#ifdef HAVE_GTOP
+ sensors = cpu_psensor_list_add(sensors, 600);
+#endif
+ }
+
+ associate_preferences(sensors);
+ associate_colors(sensors);
+
+ return sensors;
+}
+
int main(int argc, char **argv)
{
struct ui_psensor ui;
GError *error;
GThread *thread;
- int optc, cmdok;
+ int optc, cmdok, opti, use_libatasmart, new_instance;
char *url = NULL;
+ GApplication *app;
program_name = argv[0];
textdomain(PACKAGE);
#endif
+ use_libatasmart = new_instance = 0;
+
cmdok = 1;
- while ((optc = getopt_long(argc, argv, "vhd:u:", long_options,
- NULL)) != -1) {
+ while ((optc = getopt_long(argc, argv, "vhd:u:n", long_options,
+ &opti)) != -1) {
switch (optc) {
+ case 0:
+ if (!strcmp(long_options[opti].name, "use-libatasmart"))
+ use_libatasmart = 1;
+ break;
case 'u':
if (optarg)
url = strdup(optarg);
exit(EXIT_SUCCESS);
case 'd':
log_level = atoi(optarg);
- log_printf(LOG_INFO, _("Enables debug mode."));
+ log_info(_("Enables debug mode."));
+ break;
+ case 'n':
+ new_instance = 1;
break;
default:
cmdok = 0;
log_init();
+ app = g_application_new("wpitchoune.psensor", 0);
+
+ g_application_register(app, NULL, NULL);
+
+ if (!new_instance && g_application_get_is_remote(app)) {
+ g_application_activate(app);
+ log_warn(_("A Psensor instance already exists."));
+ exit(EXIT_SUCCESS);
+ }
+
+ g_signal_connect(app, "activate", G_CALLBACK(cb_activate), &ui);
+
log_glib_info();
#if !(GLIB_CHECK_VERSION(2, 31, 0))
/*
gtk_init(NULL, NULL);
- ui.sensors_mutex = g_mutex_new();
-
- config_init();
+ pthread_mutex_init(&ui.sensors_mutex, NULL);
ui.config = config_load();
psensor_init();
- if (url) {
-#ifdef HAVE_REMOTE_SUPPORT
- rsensor_init();
- ui.sensors = get_remote_sensors(url, 600);
-#else
- fprintf(stderr,
- _("ERROR: Not compiled with remote sensor support.\n"));
- exit(EXIT_FAILURE);
-#endif
- } else {
- ui.sensors = get_all_sensors(600);
-#ifdef HAVE_NVIDIA
- ui.sensors = nvidia_psensor_list_add(ui.sensors, 600);
-#endif
-#ifdef HAVE_LIBATIADL
- ui.sensors = amd_psensor_list_add(ui.sensors, 600);
-#endif
-#ifdef HAVE_GTOP
- ui.sensors = cpu_psensor_list_add(ui.sensors, 600);
-#endif
- }
-
- associate_preferences(ui.sensors);
- associate_colors(ui.sensors);
+ ui.sensors = create_sensors_list(url, use_libatasmart);
associate_cb_alarm_raised(ui.sensors, &ui);
+ if (ui.config->slog_enabled)
+ slog_activate(NULL,
+ ui.sensors,
+ &ui.sensors_mutex,
+ config_get_slog_interval());
+
#if !defined(HAVE_APPINDICATOR) && !defined(HAVE_APPINDICATOR_029)
ui_status_init(&ui);
+ ui_status_set_visible(1);
#endif
/* main window */
ui_window_create(&ui);
- ui.sensor_box = NULL;
-
- /* drawing box */
- ui.w_graph = ui_graph_create(&ui);
- /* sensor list */
- ui_sensorlist_create(&ui);
+ ui_enable_alpha_channel(&ui);
- thread = g_thread_create((GThreadFunc) update_psensor_measures,
+ thread = g_thread_create((GThreadFunc) update_measures,
&ui, TRUE, &error);
if (!thread)
ui_appindicator_init(&ui);
#endif
- /*
- * show the window as soon as all gtk events have been processed
- * in order to ensure that the status icon is attempted to be
- * drawn before. If not, there is no way to detect that it is
- * visible.
- */
- g_idle_add((GSourceFunc)initial_window_show, &ui);
-
gdk_notify_startup_complete();
+ /*
+ * hack, did not find a cleaner solution.
+ * wait 30s to ensure that the status icon is attempted to be
+ * drawn before determining whether the main window must be
+ * show.
+ */
+ if (ui.config->hide_on_startup)
+ g_timeout_add(30000, (GSourceFunc)initial_window_show, &ui);
+ else
+ initial_window_show(&ui);
+
/* main loop */
gtk_main();
- g_mutex_lock(ui.sensors_mutex);
-
- psensor_cleanup();
-
-#ifdef HAVE_NVIDIA
- nvidia_cleanup();
-#endif
-#ifdef HAVE_LIBATIADL
- amd_cleanup();
-#endif
-#ifdef HAVE_REMOTE_SUPPORT
- rsensor_cleanup();
-#endif
-
- psensor_list_free(ui.sensors);
- ui.sensors = NULL;
-
-#if defined(HAVE_APPINDICATOR) || defined(HAVE_APPINDICATOR_029)
- ui_appindicator_cleanup();
-#endif
-
- ui_status_cleanup();
-
- g_mutex_unlock(ui.sensors_mutex);
-
- config_cleanup();
+ g_object_unref(app);
+ cleanup(&ui);
+ log_debug("Quitting...");
log_close();
+ if (url)
+ free(url);
+
return 0;
}
--- /dev/null
+/*
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301 USA
+ */
+
+#include <stdlib.h>
+#include <string.h>
+
+#include "notify_cmd.h"
+#include "cfg.h"
+
+void notify_cmd(struct psensor *s)
+{
+ char *script;
+ char *v;
+ char *cmd;
+ int ret;
+
+ script = config_get_notif_script();
+
+ if (script) {
+ v = psensor_current_value_to_str(s, 1);
+
+ cmd = malloc(strlen(script)+1+1+strlen(s->id)+1+strlen(v)+1);
+ sprintf(cmd, "%s \"%s\" %s", script, s->id, v);
+
+ log_debug("execute cmd: %s", cmd);
+
+ ret = system(cmd);
+
+ log_debug("cmd returns: %d", ret);
+
+ free(cmd);
+ free(v);
+ free(script);
+ }
+}
+
--- /dev/null
+/*
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301 USA
+ */
+#ifndef _PSENSOR_NOTIFY_CMD_H_
+#define _PSENSOR_NOTIFY_CMD_H_
+
+#include "psensor.h"
+
+void notify_cmd(struct psensor *);
+
+#endif
-.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.40.4.
-.TH PSENSOR "1" "March 2012" "psensor 0.6.2.17" "User Commands"
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.43.3.
+.TH PSENSOR "1" "October 2013" "psensor 0.8.0.4" "User Commands"
.SH NAME
psensor \- Temperature monitoring application
.SH SYNOPSIS
.SH DESCRIPTION
.PP
-psensor is a GTK application for monitoring hardware sensors, including temperatures and fan speeds.
-.PP
-
-It displays a curve for each sensor, and uses Desktop Notification to
-raise an alarm when a temperature is too high. On Ubuntu an
-Application Indicator is also available, its icon changes when a
-temperature alert is raised.
-
-It can monitor:
- * the temperature of the motherboard and CPU sensors (using lm\-sensors).
- * the temperature of the NVidia GPUs (using XNVCtrl).
- * the temperature and fan rotation speed of the ATI GPUs.
- * the temperature of the Hard Disk Drives (using hddtemp).
- * the rotation speed of the fans (using lm\-sensors).
- * the sensors of a remote computer (using psensor\-server).
-
-Psensor requires lm\-sensors to be correctly installed and configured,
-it can be checked by running the command 'sensors'. If it has never be
-done, you may need to run the command 'sensors\-detect' and follow the
-instruction. See the manpages of sensors(1) and sensors\-detect(8) for
-more information.
-
-To retrieve the temperature of the Hard Disk Drives, the hddtemp
-daemon must be running.
-
-For remote monitoring:
- * start psensor\-server(1) on the remote computer
- * run psensor with '\-\-url' option: 'psensor \-\-url=http://localhost:3131'
-
-ATI/AMD GPUs monitoring is available if the library libatiadlxx is
-present in the directory /usr/lib and psensor has been compiled with
-the ATI ADL SDK.
-
-Log is written to '$HOME/.psensor/log'.
+Psensor is a GTK+ application for monitoring hardware sensors, including temperatures and fan speeds.
.SH OPTIONS
.TP
\fB\-h\fR, \fB\-\-help\fR
display version information and exit
.TP
\fB\-u\fR, \fB\-\-url\fR=\fIURL\fR
-the URL of the psensor\-server, example: http://hostname:3131
+the URL of the psensor\-server,
+example: http://hostname:3131
+.TP
+\fB\-\-use\-libatasmart\fR
+use atasmart library for disk monitoring instead of
+hddtemp daemon
+.TP
+\fB\-n\fR, \fB\-\-new\-instance\fR
+force the creation of a new Psensor application
.TP
\fB\-d\fR, \fB\-\-debug\fR=\fILEVEL\fR
set the debug level, integer between 0 and 3
.PP
psensor home page: <http://wpitchoune.net/psensor>
.SH COPYRIGHT
-Copyright \(co 2010\-2012 jeanfi@gmail.com
+Copyright \(co 2010\-2013 jeanfi@gmail.com
License GPLv2: GNU GPL version 2 or later <http://www.gnu.org/licenses/old\-licenses/gpl\-2.0.html>
.br
This is free software: you are free to change and redistribute it.
--- /dev/null
+<!-- Copyright (C) 2012-2013 jeanfi@gmail.com -->
+
+<!-- This program is free software; you can redistribute it and/or -->
+<!-- modify it under the terms of the GNU General Public License as -->
+<!-- published by the Free Software Foundation; either version 2 of the -->
+<!-- License, or (at your option) any later version. -->
+
+<!-- This program 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 -->
+<!-- General Public License for more details. -->
+
+<!-- You should have received a copy of the GNU General Public License -->
+<!-- along with this program; if not, write to the Free Software -->
+<!-- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -->
+<!-- 02110-1301 USA -->
+<gconfschemafile>
+ <schemalist>
+ <!-- Graph settings -->
+ <schema>
+ <key>/schemas/apps/psensor/graph/alpha_channel_enabled</key>
+ <applyto>/apps/psensor/graph/alpha_channel_enabled</applyto>
+ <owner>psensor</owner>
+ <type>bool</type>
+ <default>false</default>
+ <locale name="C">
+ <short>Whether the alpha channel is enabled</short>
+ <long>
+ Whether the alpha channel is enabled. Must be enabled for changing
+ the transparency of the background of the graph window.
+ </long>
+ </locale>
+ </schema>
+
+ <schema>
+ <key>/schemas/apps/psensor/graph/background_alpha</key>
+ <applyto>/apps/psensor/graph/background_alpha</applyto>
+ <owner>psensor</owner>
+ <type>float</type>
+ <default>1</default>
+ <locale name="C">
+ <short>The alpha value of the background of the graph window</short>
+ <long>
+ The alpha value of the background of the graph window. It must
+ be a positive float between 0 and 1. '1' is the maximum opacity.
+ </long>
+ </locale>
+ </schema>
+
+ <schema>
+ <key>/schemas/apps/psensor/graph/background_color</key>
+ <applyto>/apps/psensor/graph/background_color</applyto>
+ <owner>psensor</owner>
+ <type>string</type>
+ <default>#e8f4e8f4a8f5</default>
+ <locale name="C">
+ <short>The color of the background of the graph canvas</short>
+ <long>
+ The color of the background of the graph canvas as a #rgb
+ representation.
+ </long>
+ </locale>
+ </schema>
+
+ <schema>
+ <key>/schemas/apps/psensor/graph/foreground_color</key>
+ <applyto>/apps/psensor/graph/foreground_color</applyto>
+ <owner>psensor</owner>
+ <type>string</type>
+ <default>#000000000000</default>
+ <locale name="C">
+ <short>The color of the foreground of the graph canvas</short>
+ <long>
+ The color of the foreground of the graph canvas as a #rgb
+ representation.
+ </long>
+ </locale>
+ </schema>
+
+ <schema>
+ <key>/schemas/apps/psensor/graph/monitoring_duration</key>
+ <applyto>/apps/psensor/graph/monitoring_duration</applyto>
+ <owner>psensor</owner>
+ <type>int</type>
+ <default>10</default>
+ <locale name="C">
+ <short>The monitoring duration of the graph</short>
+ <long>
+ The monitoring duration of the graph as minutes. It must
+ be greater than 1.
+ </long>
+ </locale>
+ </schema>
+
+ <schema>
+ <key>/schemas/apps/psensor/graph/update_interval</key>
+ <applyto>/apps/psensor/graph/update_interval</applyto>
+ <owner>psensor</owner>
+ <type>int</type>
+ <default>1</default>
+ <locale name="C">
+ <short>The interval between refreshs of the graph</short>
+ <long>
+ The interval between refreshs of the graph as seconds. It
+ must be greater than 1.
+ </long>
+ </locale>
+ </schema>
+
+ <!-- Inteface settings -->
+
+ <schema>
+ <key>/schemas/apps/psensor/interface/hide_on_startup</key>
+ <applyto>/apps/psensor/interface/hide_on_startup</applyto>
+ <owner>psensor</owner>
+ <type>bool</type>
+ <default>false</default>
+ <locale name="C">
+ <short>Whether the graph window is hidden on startup</short>
+ <long>
+ Whether the graph window is hidden on startup. The graph
+ will be hidden only if the Ubuntu Application Indicator or
+ status icon support is available.
+ </long>
+ </locale>
+ </schema>
+
+ <schema>
+ <key>/schemas/apps/psensor/interface/menu_bar_disabled</key>
+ <applyto>/apps/psensor/interface/menu_bar_disabled</applyto>
+ <owner>psensor</owner>
+ <type>bool</type>
+ <default>false</default>
+ <locale name="C">
+ <short>Whether the menu of the graph window is disabled</short>
+ <long>
+ Whether the menu of the graph window is disabled
+ </long>
+ </locale>
+ </schema>
+
+ <schema>
+ <key>/schemas/apps/psensor/interface/sensorlist_position</key>
+ <applyto>/apps/psensor/interface/sensorlist_position</applyto>
+ <owner>psensor</owner>
+ <type>int</type>
+ <default>0</default>
+ <locale name="C">
+ <short>Position of the sensor list in the graph window</short>
+ <long>Position of the sensor list in the graph
+ window. Possible values are 0 (right), 1 (left), 2 (top), 3
+ (bottom).</long>
+ </locale>
+ </schema>
+
+ <schema>
+ <key>/schemas/apps/psensor/interface/unity_launcher_count_disabled</key>
+ <applyto>/apps/psensor/interface/unity_launcher_count_disabled</applyto>
+ <owner>psensor</owner>
+ <type>bool</type>
+ <default>false</default>
+ <locale name="C">
+ <short>Whether the greatest temperature is displayed in Unity
+ launcher</short>
+ <long>If set to 'true' the greatest temperature will be
+ displayed in the Unity launcher.</long>
+ </locale>
+ </schema>
+
+ <schema>
+ <key>/schemas/apps/psensor/interface/temperature_unit</key>
+ <applyto>/apps/psensor/interface/temperature_unit</applyto>
+ <owner>psensor</owner>
+ <type>int</type>
+ <default>0</default>
+ <locale name="C">
+ <short>The displayed temperature unit</short>
+ <long>The displayed temperature unit, '0' for Celcius, '1' for Fahenrenheit.</long>
+ </locale>
+ </schema>
+
+ <schema>
+ <key>/schemas/apps/psensor/interface/window_decoration_disabled</key>
+ <applyto>/apps/psensor/interface/window_decoration_disabled</applyto>
+ <owner>psensor</owner>
+ <type>int</type>
+ <default>0</default>
+ <locale name="C">
+ <short>Whether the decoration of the window is disabled</short>
+ <long>Whether the decoration of the window is disabled.</long>
+ </locale>
+ </schema>
+
+ <schema>
+ <key>/schemas/apps/psensor/interface/window_keep_below_enabled</key>
+ <applyto>/apps/psensor/interface/window_keep_below_enabled</applyto>
+ <owner>psensor</owner>
+ <type>bool</type>
+ <default>false</default>
+ <locale name="C">
+ <short>Whether the graph window is kept below all other windows</short>
+ <long>Whether the graph window is kept below all other windows.</long>
+ </locale>
+ </schema>
+
+ <schema>
+ <key>/schemas/apps/psensor/interface/window_restore_enabled</key>
+ <applyto>/apps/psensor/interface/window_restore_enabled</applyto>
+ <owner>psensor</owner>
+ <type>bool</type>
+ <default>false</default>
+ <locale name="C">
+ <short>Whether the position and size of the graph window are restored</short>
+ <long>Whether the position and size of the graph window are restored</long>
+ </locale>
+ </schema>
+
+ <schema>
+ <key>/schemas/apps/psensor/interface/window_divider_pos</key>
+ <applyto>/apps/psensor/interface/window_divider_pos</applyto>
+ <owner>psensor</owner>
+ <type>int</type>
+ <locale name="C">
+ <short>Position of the divider between the graph window and the list of sensors</short>
+ <long>Position of the divider between the graph window and the list of sensors</long>
+ </locale>
+ </schema>
+
+ <schema>
+ <key>/schemas/apps/psensor/interface/window_w</key>
+ <applyto>/apps/psensor/interface/window_w</applyto>
+ <owner>psensor</owner>
+ <type>int</type>
+ <locale name="C">
+ <short>Width of the graph window</short>
+ <long>Width of the graph window.</long>
+ </locale>
+ </schema>
+
+ <schema>
+ <key>/schemas/apps/psensor/interface/window_h</key>
+ <applyto>/apps/psensor/interface/window_h</applyto>
+ <owner>psensor</owner>
+ <type>int</type>
+ <locale name="C">
+ <short>Height of the graph window</short>
+ <long>Height of the graph window.</long>
+ </locale>
+ </schema>
+
+ <schema>
+ <key>/schemas/apps/psensor/interface/window_x</key>
+ <applyto>/apps/psensor/interface/window_x</applyto>
+ <owner>psensor</owner>
+ <type>int</type>
+ <locale name="C">
+ <short>Horizontal position of the graph window</short>
+ <long>Horizontal position of the graph window.</long>
+ </locale>
+ </schema>
+
+ <schema>
+ <key>/schemas/apps/psensor/interface/window_y</key>
+ <applyto>/apps/psensor/interface/window_y</applyto>
+ <owner>psensor</owner>
+ <type>int</type>
+ <locale name="C">
+ <short>Vertical position of the graph window</short>
+ <long>Vertical position of the graph window.</long>
+ </locale>
+ </schema>
+
+ </schemalist>
+</gconfschemafile>
/*
- * Copyright (C) 2010-2012 jeanfi@gmail.com
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
return realsize;
}
-static char *create_api_1_0_sensors_url(const char *base_url)
+static char *create_api_1_1_sensors_url(const char *base_url)
{
char *nurl, *ret;
int n;
nurl = url_normalize(base_url);
- n = strlen(nurl) + strlen(URL_BASE_API_1_0_SENSORS) + 1;
+ n = strlen(nurl) + strlen(URL_BASE_API_1_1_SENSORS) + 1;
ret = malloc(n);
strcpy(ret, nurl);
- strcat(ret, URL_BASE_API_1_0_SENSORS);
+ strcat(ret, URL_BASE_API_1_1_SENSORS);
free(nurl);
sensors = NULL;
- url = create_api_1_0_sensors_url(server_url);
+ url = create_api_1_1_sensors_url(server_url);
obj = get_json_object(url);
/*
- * Copyright (C) 2010-2012 jeanfi@gmail.com
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
../lib/libpsensor.a \
$(SENSORS_LIBS) \
$(JSON_LIBS) \
- $(LIBMICROHTTPD_LIBS)
+ $(LIBMICROHTTPD_LIBS) \
+ $(PTHREAD_LIBS)
if GTOP
AM_CPPFLAGS += $(GTOP_CFLAGS)
psensor_server_SOURCES += sysinfo.h sysinfo.c
endif
+if ATASMART
+AM_CPPFLAGS += $(ATASMART_CFLAGS)
+LIBS += $(ATASMART_LIBS)
+endif
+
dist_man_MANS = psensor-server.1
EXTRA_DIST = description.txt
psensor-server.1: server.c $(top_srcdir)/configure.ac
$(MAKE) $(AM_MAKEFLAGS) psensor-server$(EXEEXT)
- help2man --include=description.txt -N --name="Temperature and system monitoring Web server" --output=psensor-server.1 ./psensor-server$(EXEEXT)
\ No newline at end of file
+ help2man --include=description.txt -N --name="Temperature and system monitoring Web server" --output=psensor-server.1 ./psensor-server$(EXEEXT)
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@SET_MAKE@
VPATH = @srcdir@
+am__make_dryrun = \
+ { \
+ am__dry=no; \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
+ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+ *) \
+ for am__flg in $$MAKEFLAGS; do \
+ case $$am__flg in \
+ *=*|--*) ;; \
+ *n*) am__dry=yes; break;; \
+ esac; \
+ done;; \
+ esac; \
+ test $$am__dry = yes; \
+ }
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
@GTOP_TRUE@am__append_1 = $(GTOP_CFLAGS)
@GTOP_TRUE@am__append_2 = $(GTOP_LIBS)
@GTOP_TRUE@am__append_3 = sysinfo.h sysinfo.c
+@ATASMART_TRUE@am__append_4 = $(ATASMART_CFLAGS)
+@ATASMART_TRUE@am__append_5 = $(ATASMART_LIBS)
subdir = src/server
DIST_COMMON = $(dist_man_MANS) $(srcdir)/Makefile.am \
$(srcdir)/Makefile.in
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
SOURCES = $(psensor_server_SOURCES)
DIST_SOURCES = $(am__psensor_server_SOURCES_DIST)
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
man1dir = $(mandir)/man1
NROFF = nroff
MANS = $(dist_man_MANS)
AMTAR = @AMTAR@
APPINDICATOR_CFLAGS = @APPINDICATOR_CFLAGS@
APPINDICATOR_LIBS = @APPINDICATOR_LIBS@
+AR = @AR@
+ATASMART_CFLAGS = @ATASMART_CFLAGS@
+ATASMART_LIBS = @ATASMART_LIBS@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+GCONFTOOL = @GCONFTOOL@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
+GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
+GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GTK_LIBS = @GTK_LIBS@
GTOP_CFLAGS = @GTOP_CFLAGS@
GTOP_LIBS = @GTOP_LIBS@
+HAVE_CPPCHECK = @HAVE_CPPCHECK@
HELP2MAN = @HELP2MAN@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
LIBNOTIFY_LIBS = @LIBNOTIFY_LIBS@
LIBOBJS = @LIBOBJS@
LIBS = ../lib/libpsensor.a $(SENSORS_LIBS) $(JSON_LIBS) \
- $(LIBMICROHTTPD_LIBS) $(am__append_2)
+ $(LIBMICROHTTPD_LIBS) $(PTHREAD_LIBS) $(am__append_2) \
+ $(am__append_5)
LTLIBICONV = @LTLIBICONV@
LTLIBINTL = @LTLIBINTL@
LTLIBOBJS = @LTLIBOBJS@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
POSUB = @POSUB@
+PTHREAD_LIBS = @PTHREAD_LIBS@
RANLIB = @RANLIB@
SENSORS_LIBS = @SENSORS_LIBS@
SET_MAKE = @SET_MAKE@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
psensor_server_SOURCES = server.c server.h $(am__append_3)
AM_CPPFLAGS = -Wall -Werror -DDEFAULT_WWW_DIR=\""$(pkgdatadir)/www"\" \
-I$(top_srcdir)/src -I$(top_srcdir)/src/lib $(SENSORS_CFLAGS) \
- $(JSON_CFLAGS) $(LIBMICROHTTPD_CFLAGS) $(am__append_1)
+ $(JSON_CFLAGS) $(LIBMICROHTTPD_CFLAGS) $(am__append_1) \
+ $(am__append_4)
@GTOP_TRUE@AM_LDFLAGS = -Wl,--as-needed
dist_man_MANS = psensor-server.1
EXTRA_DIST = description.txt
$(am__aclocal_m4_deps):
install-binPROGRAMS: $(bin_PROGRAMS)
@$(NORMAL_INSTALL)
- test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+ fi; \
for p in $$list; do echo "$$p $$p"; done | \
sed 's/$(EXEEXT)$$//' | \
while read p p1; do if test -f $$p; \
clean-binPROGRAMS:
-test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
-psensor-server$(EXEEXT): $(psensor_server_OBJECTS) $(psensor_server_DEPENDENCIES)
+psensor-server$(EXEEXT): $(psensor_server_OBJECTS) $(psensor_server_DEPENDENCIES) $(EXTRA_psensor_server_DEPENDENCIES)
@rm -f psensor-server$(EXEEXT)
$(LINK) $(psensor_server_OBJECTS) $(psensor_server_LDADD) $(LIBS)
@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
install-man1: $(dist_man_MANS)
@$(NORMAL_INSTALL)
- test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)"
- @list=''; test -n "$(man1dir)" || exit 0; \
- { for i in $$list; do echo "$$i"; done; \
- l2='$(dist_man_MANS)'; for i in $$l2; do echo "$$i"; done | \
- sed -n '/\.1[a-z]*$$/p'; \
+ @list1=''; \
+ list2='$(dist_man_MANS)'; \
+ test -n "$(man1dir)" \
+ && test -n "`echo $$list1$$list2`" \
+ || exit 0; \
+ echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \
+ { for i in $$list1; do echo "$$i"; done; \
+ if test -n "$$list2"; then \
+ for i in $$list2; do echo "$$i"; done \
+ | sed -n '/\.1[a-z]*$$/p'; \
+ fi; \
} | while read p; do \
if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; echo "$$p"; \
sed -n '/\.1[a-z]*$$/p'; \
} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
-e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
- test -z "$$files" || { \
- echo " ( cd '$(DESTDIR)$(man1dir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(man1dir)" && rm -f $$files; }
+ dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir)
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
installcheck: installcheck-am
install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
mostlyclean-generic:
clean-generic:
The URL http://hostname:3131/api/1.0/sensors returns a JSON array
containing all JSON objects of type 'sensor'.
-If run in debug mode, psensor\-server can be stopped by sending an HTTP
+psensor\-server can be stopped by sending an HTTP
request with the URL 'http://hostname:port/api/1.0/server/stop'.
+[SENSOR LOG FILE]
+
+Sensors can be logged using the \-\-sensor-log-file option.
+
+It is using a text format, each line is terminated with a NEWLINE
+char.
+
+The first line is: I,%D,%V
+
+%D is the starting time of the log expressed as the number of seconds
+since EPOC.
+
+%V is the version of psensor-server.
+
+Following lines gives the ordered list of sensors: S,%I,%T
+
+%I is the uniq identifier of the sensor.
+
+%T is the hexadecimal representation of the sensor type.
+
+Then, the values of all sensors are written: %D,%V...
+
+%D is the number of seconds elapsed since the starting time of the
+log.
+
+%V... is the list separated by a comma of the current value of all
+sensors. The ordering is the same than the list of sensor identifiers.
+
+The value is expressed as a float with one digit precision. Temperatures
+are using Celcius unit.
+
+The value is written only if it has changed.
+
+Example:
+I,1345974927,0.7.0.4
+S,lmsensor coretemp-isa-0000 Physical id 0,101
+S,lmsensor coretemp-isa-0000 Core 0,101
+S,lmsensor coretemp-isa-0000 Core 1,101
+0,37.0,37.0,36.0
+5,36.0,,36.0
+
+Five seconds after the log starts, the temperature of the second
+sensor (Core 0) is still 37C.
+
[WARNING]
psensor\-server does not provide any way to restrict the connection to
-.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.40.4.
-.TH PSENSOR-SERVER "1" "March 2012" "psensor-server 0.6.2.17" "User Commands"
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.43.3.
+.TH PSENSOR-SERVER "1" "October 2013" "psensor-server 0.8.0.4" "User Commands"
.SH NAME
psensor-server \- Temperature and system monitoring Web server
.SH SYNOPSIS
The URL http://hostname:3131/api/1.0/sensors returns a JSON array
containing all JSON objects of type 'sensor'.
-If run in debug mode, psensor\-server can be stopped by sending an HTTP
+psensor\-server can be stopped by sending an HTTP
request with the URL 'http://hostname:port/api/1.0/server/stop'.
.SH OPTIONS
.TP
\fB\-v\fR, \fB\-\-version\fR
display version information and exit
.TP
-\fB\-d\fR,\-\-debug
-run in debug mode
-.TP
\fB\-p\fR,\-\-port=PORT
webserver port
.TP
\fB\-w\fR,\-\-wdir=DIR
directory containing webserver pages
+.TP
+\fB\-d\fR, \fB\-\-debug\fR=\fILEVEL\fR
+set the debug level, integer between 0 and 3
+.TP
+\fB\-l\fR, \fB\-\-log\-file\fR=\fIPATH\fR
+set the log file to PATH
+.HP
+\fB\-\-sensor\-log\-file\fR=\fIPATH\fR set the sensor log file to PATH
+.HP
+\fB\-\-sensor\-log\-interval\fR=\fIS\fR set the sensor log interval to S (seconds)
+.SH "SENSOR LOG FILE"
+
+Sensors can be logged using the \-\-sensor-log-file option.
+
+It is using a text format, each line is terminated with a NEWLINE
+char.
+
+The first line is: I,%D,%V
+
+%D is the starting time of the log expressed as the number of seconds
+since EPOC.
+
+%V is the version of psensor-server.
+
+Following lines gives the ordered list of sensors: S,%I,%T
+
+%I is the uniq identifier of the sensor.
+
+%T is the hexadecimal representation of the sensor type.
+
+Then, the values of all sensors are written: %D,%V...
+
+%D is the number of seconds elapsed since the starting time of the
+log.
+
+%V... is the list separated by a comma of the current value of all
+sensors. The ordering is the same than the list of sensor identifiers.
+
+The value is expressed as a float with one digit precision. Temperatures
+are using Celcius unit.
+
+The value is written only if it has changed.
+
+Example:
+I,1345974927,0.7.0.4
+S,lmsensor coretemp-isa-0000 Physical id 0,101
+S,lmsensor coretemp-isa-0000 Core 0,101
+S,lmsensor coretemp-isa-0000 Core 1,101
+0,37.0,37.0,36.0
+5,36.0,,36.0
+
+Five seconds after the log starts, the temperature of the second
+sensor (Core 0) is still 37C.
.SH WARNING
psensor\-server does not provide any way to restrict the connection to
/*
- * Copyright (C) 2010-2012 jeanfi@gmail.com
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301 USA
*/
+#define _LARGEFILE_SOURCE 1
+#include "config.h"
+
#include <locale.h>
#include <libintl.h>
#define _(str) gettext(str)
-#include "config.h"
-
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include "cpu.h"
#endif
+#include "log.h"
#include "psensor_json.h"
#include "url.h"
-#include "p_io.h"
#include "server.h"
+#include "slog.h"
+
+static const char *DEFAULT_LOG_FILE = "/var/log/psensor-server.log";
+
+#define HTML_STOP_REQUESTED \
+(_("<html><body><p>Server stop requested</p></body></html>"))
static const char *program_name;
-#define DEFAULT_PORT 3131
+static const int DEFAULT_PORT = 3131;
#define PAGE_NOT_FOUND (_("<html><body><p>"\
"Page not found - Go to <a href='/'>Main page</a></p></body>"))
{"help", no_argument, 0, 'h'},
{"port", required_argument, 0, 'p'},
{"wdir", required_argument, 0, 'w'},
- {"debug", no_argument, 0, 'd'},
+ {"debug", required_argument, 0, 'd'},
+ {"log-file", required_argument, 0, 'l'},
+ {"sensor-log-file", required_argument, 0, 0},
+ {"sensor-log-interval", required_argument, 0, 0},
{0, 0, 0, 0}
};
static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
-static int debug;
-
static int server_stop_requested;
-void print_version()
+static void print_version()
{
printf("psensor-server %s\n", VERSION);
printf(_("Copyright (C) %s jeanfi@gmail.com\n"
"2010-2012");
}
-void print_help()
+static void print_help()
{
printf(_("Usage: %s [OPTION]...\n"), program_name);
- puts(_("psensor-server is an HTTP server "
- "for monitoring hardware sensors remotely."));
+ puts(_("psensor-server is an HTTP server for monitoring hardware "
+ "sensors remotely."));
puts("");
puts("Options:");
" -v, --version display version information and exit"));
puts("");
-
- puts(_(" -d,--debug run in debug mode\n"
- " -p,--port=PORT webserver port\n"
+ puts(_(" -p,--port=PORT webserver port\n"
" -w,--wdir=DIR directory containing webserver pages"));
puts("");
+ puts(_(" -d, --debug=LEVEL "
+ "set the debug level, integer between 0 and 3"));
+ puts(_(" -l, --log-file=PATH set the log file to PATH"));
+ puts(_(" --sensor-log-file=PATH set the sensor log file to PATH"));
+ puts(_(" --sensor-log-interval=S "
+ "set the sensor log interval to S (seconds)"));
+ puts("");
printf(_("Report bugs to: %s\n"), PACKAGE_BUGREPORT);
puts("");
printf(_("%s home page: <%s>\n"), PACKAGE_NAME, PACKAGE_URL);
}
/*
- Returns the file path corresponding to a given URL
-*/
-char *get_path(const char *url, const char *www_dir)
+ * Returns the file path corresponding to a given URL
+ */
+static char *get_path(const char *url, const char *www_dir)
{
const char *p;
char *res;
{
FILE *file = cls;
- fseek(file, pos, SEEK_SET);
+ fseeko(file, pos, SEEK_SET);
return fread(buf, 1, max, file);
}
-struct MHD_Response *
-create_response_api(const char *nurl,
- const char *method,
- unsigned int *rp_code)
+static struct MHD_Response *
+create_response_api(const char *nurl, const char *method, unsigned int *rp_code)
{
struct MHD_Response *resp;
struct psensor *s;
char *page = NULL;
- if (!strcmp(nurl, URL_BASE_API_1_0_SENSORS)) {
+ if (!strcmp(nurl, URL_BASE_API_1_1_SENSORS)) {
page = sensors_to_json_string(server_data.sensors);
#ifdef HAVE_GTOP
- } else if (!strcmp(nurl, URL_API_1_0_SYSINFO)) {
+ } else if (!strcmp(nurl, URL_API_1_1_SYSINFO)) {
page = sysinfo_to_json_string(&server_data.psysinfo);
- } else if (!strcmp(nurl, URL_API_1_0_CPU_USAGE)) {
+ } else if (!strcmp(nurl, URL_API_1_1_CPU_USAGE)) {
page = sensor_to_json_string(server_data.cpu_usage);
#endif
- } else if (!strncmp(nurl, URL_BASE_API_1_0_SENSORS,
- strlen(URL_BASE_API_1_0_SENSORS))
- && nurl[strlen(URL_BASE_API_1_0_SENSORS)] == '/') {
+ } else if (!strncmp(nurl, URL_BASE_API_1_1_SENSORS,
+ strlen(URL_BASE_API_1_1_SENSORS))
+ && nurl[strlen(URL_BASE_API_1_1_SENSORS)] == '/') {
- const char *sid = nurl + strlen(URL_BASE_API_1_0_SENSORS) + 1;
+ const char *sid = nurl + strlen(URL_BASE_API_1_1_SENSORS) + 1;
s = psensor_list_get_by_id(server_data.sensors, sid);
if (s)
page = sensor_to_json_string(s);
- } else if (debug && !strcmp(nurl, URL_API_1_0_SERVER_STOP)) {
+ } else if (!strcmp(nurl, URL_API_1_1_SERVER_STOP)) {
server_stop_requested = 1;
- page = strdup(_("<html><body><p>"
- "Server stop requested</p></body></html>"));
+ page = strdup(HTML_STOP_REQUESTED);
}
if (page) {
return NULL;
}
-struct MHD_Response *
-create_response_file(const char *nurl,
- const char *method,
- unsigned int *rp_code,
- const char *fpath)
+static struct MHD_Response *create_response_file(const char *nurl,
+ const char *method,
+ unsigned int *rp_code,
+ const char *fpath)
{
struct stat st;
int ret;
(MHD_ContentReaderFreeCallback)&fclose);
} else {
- log_printf(LOG_ERR, "Failed to open: %s\n", fpath);
+ log_err("Failed to open: %s.", fpath);
}
}
return NULL;
}
-struct MHD_Response *
+static struct MHD_Response *
create_response(const char *nurl, const char *method, unsigned int *rp_code)
{
struct MHD_Response *resp = NULL;
- if (!strncmp(nurl, URL_BASE_API_1_0, strlen(URL_BASE_API_1_0))) {
+ if (!strncmp(nurl, URL_BASE_API_1_1, strlen(URL_BASE_API_1_1))) {
resp = create_response_api(nurl, method, rp_code);
} else {
char *fpath = get_path(nurl, server_data.www_dir);
}
}
-static int
-cbk_http_request(void *cls,
- struct MHD_Connection *connection,
- const char *url,
- const char *method,
- const char *version,
- const char *upload_data,
- size_t *upload_data_size, void **ptr)
+static int cbk_http_request(void *cls,
+ struct MHD_Connection *connection,
+ const char *url,
+ const char *method,
+ const char *version,
+ const char *upload_data,
+ size_t *upload_data_size, void **ptr)
{
static int dummy;
struct MHD_Response *response;
*ptr = NULL; /* clear context pointer */
- if (debug)
- printf(_("HTTP Request: %s\n"), url);
+ log_debug(_("HTTP Request: %s"), url);
nurl = url_normalize(url);
int main(int argc, char *argv[])
{
struct MHD_Daemon *d;
- int port = DEFAULT_PORT;
- int optc;
- int cmdok = 1;
+ int port, opti, optc, cmdok, ret, slog_interval;
+ char *log_file, *slog_file;
program_name = argv[0];
textdomain(PACKAGE);
#endif
- server_data.www_dir = DEFAULT_WWW_DIR;
+ server_data.www_dir = NULL;
+#ifdef HAVE_GTOP
server_data.psysinfo.interfaces = NULL;
-
- while ((optc = getopt_long(argc, argv,
- "vhp:w:d", long_options, NULL)) != -1) {
+#endif
+ log_file = NULL;
+ slog_file = NULL;
+ slog_interval = 300;
+ port = DEFAULT_PORT;
+ cmdok = 1;
+
+ while ((optc = getopt_long(argc,
+ argv,
+ "vhp:w:d:l:",
+ long_options,
+ &opti)) != -1) {
switch (optc) {
case 'w':
if (optarg)
print_version();
exit(EXIT_SUCCESS);
case 'd':
- debug = 1;
+ log_level = atoi(optarg);
+ log_info(_("Enables debug mode: %d"), log_level);
+ break;
+ case 'l':
+ if (optarg)
+ log_file = strdup(optarg);
+ break;
+ case 0:
+ if (!strcmp(long_options[opti].name, "sensor-log-file"))
+ slog_file = strdup(optarg);
+ else if (!strcmp(long_options[opti].name,
+ "sensor-log-interval"))
+ slog_interval = atoi(optarg);
break;
default:
cmdok = 0;
exit(EXIT_FAILURE);
}
+ if (!server_data.www_dir)
+ server_data.www_dir = strdup(DEFAULT_WWW_DIR);
+
+ if (!log_file)
+ log_file = strdup(DEFAULT_LOG_FILE);
+
+ log_open(log_file);
+
psensor_init();
- server_data.sensors = get_all_sensors(600);
+ server_data.sensors = get_all_sensors(0, 600);
#ifdef HAVE_GTOP
server_data.cpu_usage = create_cpu_usage_sensor(600);
#endif
if (!*server_data.sensors)
- fprintf(stderr, _("ERROR: no sensors detected\n"));
+ log_err(_("No sensors detected."));
d = MHD_start_daemon(MHD_USE_THREAD_PER_CONNECTION,
port,
NULL, NULL, &cbk_http_request, server_data.sensors,
MHD_OPTION_END);
if (!d) {
- fprintf(stderr, _("ERROR: Fail to create web server\n"));
+ log_err(_("Failed to create Web server."));
exit(EXIT_FAILURE);
}
- log_printf(LOG_INFO, _("Web server started on port: %d"), port);
- log_printf(LOG_INFO, _("WWW directory: %s"), server_data.www_dir);
- log_printf(LOG_INFO, _("URL: http://localhost:%d"), port);
+ log_info(_("Web server started on port: %d"), port);
+ log_info(_("WWW directory: %s"), server_data.www_dir);
+ log_info(_("URL: http://localhost:%d"), port);
+
+ if (slog_file) {
+ if (slog_interval <= 0)
+ slog_interval = 300;
+ ret = slog_activate(slog_file,
+ server_data.sensors,
+ &mutex,
+ slog_interval);
+ if (!ret)
+ log_err(_("Failed to activate logging of sensors."));
+ }
while (!server_stop_requested) {
pthread_mutex_lock(&mutex);
#endif
psensor_list_update_measures(server_data.sensors);
+ psensor_log_measures(server_data.sensors);
+
pthread_mutex_unlock(&mutex);
sleep(5);
}
+ slog_close();
+
MHD_stop_daemon(d);
/* sanity cleanup for valgrind */
cpu_cleanup();
#endif
+ if (log_file != DEFAULT_LOG_FILE)
+ free(log_file);
+
return EXIT_SUCCESS;
}
/*
- * Copyright (C) 2010-2012 jeanfi@gmail.com
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
#ifndef _PSENSOR_SERVER_H_
#define _PSENSOR_SERVER_H_
+#include "config.h"
+
#include "psensor.h"
+
+#ifdef HAVE_GTOP
#include "sysinfo.h"
+#endif
-#define URL_BASE_API_1_0 "/api/1.0"
-#define URL_BASE_API_1_0_SENSORS "/api/1.0/sensors"
-#define URL_API_1_0_SERVER_STOP "/api/1.0/server/stop"
-#define URL_API_1_0_SYSINFO "/api/1.0/sysinfo"
-#define URL_API_1_0_CPU_USAGE "/api/1.0/cpu/usage"
+#define URL_BASE_API_1_1 "/api/1.1"
+#define URL_BASE_API_1_1_SENSORS "/api/1.1/sensors"
+#define URL_API_1_1_SERVER_STOP "/api/1.1/server/stop"
+#define URL_API_1_1_SYSINFO "/api/1.1/sysinfo"
+#define URL_API_1_1_CPU_USAGE "/api/1.1/cpu/usage"
struct server_data {
struct psensor *cpu_usage;
struct psensor **sensors;
+#ifdef HAVE_GTOP
struct psysinfo psysinfo;
+#endif
char *www_dir;
};
/*
- * Copyright (C) 2010-2012 jeanfi@gmail.com
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
#include <glibtop/netlist.h>
#include <glibtop/netload.h>
+#include "config.h"
+
+#ifdef HAVE_JSON_0
#include <json/json.h>
+#else
+#include <json-c/json.h>
+#endif
#include "sysinfo.h"
void sysinfo_cleanup()
{
if (cpu)
- free(cpu);
+ g_free(cpu);
}
static json_object *ram_to_json_object(const struct psysinfo *s)
/*
- * Copyright (C) 2010-2012 jeanfi@gmail.com
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
/*
- * Copyright (C) 2010-2012 jeanfi@gmail.com
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301 USA
*/
+#include <stdlib.h>
+
#include "cfg.h"
+#include "slog.h"
#include "ui.h"
#include "ui_graph.h"
#include "ui_pref.h"
void ui_show_about_dialog()
{
- gtk_show_about_dialog(NULL,
- "comments",
- _("Psensor is a GTK+ application for monitoring "
- "hardware sensors"),
- "copyright",
- _("Copyright(c) 2010-2012\njeanfi@gmail.com"),
- "logo-icon-name", "psensor",
- "program-name", "Psensor",
- "title", _("About Psensor"),
- "version", VERSION,
- "website", PACKAGE_URL,
- "website-label", _("Psensor Homepage"),
- NULL);
+ gtk_show_about_dialog
+ (NULL,
+ "comments",
+ _("Psensor is a GTK+ application for monitoring hardware "
+ "sensors"),
+ "copyright",
+ _("Copyright(c) 2010-2013\njeanfi@gmail.com"),
+ "logo-icon-name", "psensor",
+ "program-name", "Psensor",
+ "title", _("About Psensor"),
+ "version", VERSION,
+ "website", PACKAGE_URL,
+ "website-label", _("Psensor Homepage"),
+ NULL);
}
-static void cb_about(GtkMenuItem *mi, gpointer data)
+void ui_cb_about(GtkMenuItem *mi, gpointer data)
{
ui_show_about_dialog();
}
-static void cb_menu_quit(GtkMenuItem *mi, gpointer data)
+void ui_cb_menu_quit(GtkMenuItem *mi, gpointer data)
{
ui_psensor_quit((struct ui_psensor *)data);
}
-static void cb_preferences(GtkMenuItem *mi, gpointer data)
+void ui_cb_preferences(GtkMenuItem *mi, gpointer data)
{
ui_pref_dialog_run((struct ui_psensor *)data);
}
-static void cb_sensor_preferences(GtkMenuItem *mi, gpointer data)
+void ui_cb_sensor_preferences(GtkMenuItem *mi, gpointer data)
{
struct ui_psensor *ui = data;
gtk_main_quit();
}
-static const char *menu_desc =
-"<ui>"
-" <menubar name='MainMenu'>"
-" <menu name='Psensor' action='PsensorMenuAction'>"
-" <menuitem name='Preferences' action='PreferencesAction' />"
-" <menuitem name='SensorPreferences' action='SensorPreferencesAction' />"
-" <separator />"
-" <menuitem name='Quit' action='QuitAction' />"
-" </menu>"
-" <menu name='Help' action='HelpMenuAction'>"
-" <menuitem name='About' action='AboutAction' />"
-" </menu>"
-" </menubar>"
-"</ui>";
-
-static GtkActionEntry entries[] = {
- { "PsensorMenuAction", NULL, "_Psensor" },
-
- { "PreferencesAction", GTK_STOCK_PREFERENCES,
- N_("_Preferences"), NULL,
- N_("Preferences"),
- G_CALLBACK(cb_preferences) },
-
- { "SensorPreferencesAction", GTK_STOCK_PREFERENCES,
- N_("_Sensor Preferences"), NULL,
- N_("Sensor Preferences"),
- G_CALLBACK(cb_sensor_preferences) },
-
- { "QuitAction",
- GTK_STOCK_QUIT, N_("_Quit"), NULL, N_("Quit"),
- G_CALLBACK(cb_menu_quit) },
-
- { "HelpMenuAction", NULL, "_Help" },
-
- { "AboutAction", GTK_STOCK_PREFERENCES,
- N_("_About"), NULL,
- N_("About"),
- G_CALLBACK(cb_about) }
-};
-static guint n_entries = G_N_ELEMENTS(entries);
-
-static GtkWidget *get_menu(struct ui_psensor *ui)
+void ui_enable_alpha_channel(struct ui_psensor *ui)
{
- GtkActionGroup *action_group;
- GtkUIManager *menu_manager;
- GError *error;
-
- action_group = gtk_action_group_new("PsensorActions");
- gtk_action_group_set_translation_domain(action_group, PACKAGE);
- menu_manager = gtk_ui_manager_new();
-
- gtk_action_group_add_actions(action_group, entries, n_entries, ui);
- gtk_ui_manager_insert_action_group(menu_manager, action_group, 0);
+ GdkScreen *screen;
+ GdkVisual *visual;
+ struct config *cfg;
- error = NULL;
- gtk_ui_manager_add_ui_from_string(menu_manager, menu_desc, -1, &error);
+ cfg = ui->config;
- if (error)
- g_error(_("building menus failed: %s"), error->message);
+ screen = gtk_widget_get_screen(ui->main_window);
- return gtk_ui_manager_get_widget(menu_manager, "/MainMenu");
+ log_debug("Config alpha channel enabled: %d",
+ cfg->alpha_channel_enabled);
+ if (cfg->alpha_channel_enabled && gdk_screen_is_composited(screen)) {
+ log_debug("Screen is composited");
+ visual = gdk_screen_get_rgba_visual(screen);
+ if (visual) {
+ gtk_widget_set_visual(ui->main_window, visual);
+ } else {
+ cfg->alpha_channel_enabled = 0;
+ log_err("Enable alpha channel has failed");
+ }
+ } else {
+ cfg->alpha_channel_enabled = 0;
+ }
}
-static unsigned int enable_alpha_channel(GtkWidget *w)
+static void
+slog_enabled_cbk(GConfClient *client, guint id, GConfEntry *e, gpointer data)
{
- GdkScreen *screen = gtk_widget_get_screen(w);
+ struct ui_psensor *ui;
+ struct psensor **sensors;
+ pthread_mutex_t *mutex;
-#if (GTK_CHECK_VERSION(3, 0, 0))
- GdkVisual *visual = gdk_screen_get_rgba_visual(screen);
+ ui = (struct ui_psensor *)data;
+ sensors = ui->sensors;
+ mutex = &ui->sensors_mutex;
- if (visual) {
- gtk_widget_set_visual(w, visual);
- return 1;
- }
-#else
- GdkColormap *colormap = gdk_screen_get_rgba_colormap(screen);
+ log_debug("slog_enabled_cbk");
- if (colormap) {
- gtk_widget_set_colormap(w, colormap);
- return 1;
- }
-#endif
- return 0;
+ if (is_slog_enabled())
+ slog_activate(NULL, sensors, mutex, config_get_slog_interval());
+ else
+ slog_close();
}
void ui_window_create(struct ui_psensor *ui)
{
- GtkWidget *window, *menubar;
- GdkScreen *screen;
+ GtkWidget *window;
GdkPixbuf *icon;
GtkIconTheme *icon_theme;
struct config *cfg;
+ guint ok;
+ GtkBuilder *builder;
+ GError *error;
- window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+ builder = gtk_builder_new();
+
+ error = NULL;
+ ok = gtk_builder_add_from_file
+ (builder,
+ PACKAGE_DATA_DIR G_DIR_SEPARATOR_S "psensor.glade",
+ &error);
+
+ if (!ok) {
+ log_printf(LOG_ERR, error->message);
+ g_error_free(error);
+ return ;
+ }
+ window = GTK_WIDGET(gtk_builder_get_object(builder, "window"));
+ gtk_builder_connect_signals(builder, ui);
cfg = ui->config;
if (cfg->window_restore_enabled)
gtk_window_move(GTK_WINDOW(window),
cfg->window_x,
cfg->window_y);
+ config_slog_enabled_notify_add(slog_enabled_cbk, ui);
+
gtk_window_set_default_size(GTK_WINDOW(window),
cfg->window_w,
cfg->window_h);
- gtk_window_set_title(GTK_WINDOW(window),
- _("Psensor - Temperature Monitor"));
- gtk_window_set_role(GTK_WINDOW(window), "psensor");
-
- screen = gtk_widget_get_screen(window);
-
- if (cfg->alpha_channel_enabled && gdk_screen_is_composited(screen)) {
- if (!enable_alpha_channel(window))
- cfg->alpha_channel_enabled = 0;
- } else {
- cfg->alpha_channel_enabled = 0;
- }
-
icon_theme = gtk_icon_theme_get_default();
icon = gtk_icon_theme_load_icon(icon_theme, "psensor", 48, 0, NULL);
if (icon)
gtk_window_set_icon(GTK_WINDOW(window), icon);
else
- fprintf(stderr, _("ERROR: Failed to load psensor icon.\n"));
+ log_err(_("Failed to load Psensor icon."));
g_signal_connect(window,
"delete_event", G_CALLBACK(on_delete_event_cb), ui);
gtk_window_set_keep_below(GTK_WINDOW(window),
cfg->window_keep_below_enabled);
- /* main box */
- menubar = get_menu(ui);
-
- ui->main_box = gtk_vbox_new(FALSE, 1);
-
- gtk_box_pack_start(GTK_BOX(ui->main_box), menubar,
- FALSE, TRUE, 0);
-
- gtk_container_add(GTK_CONTAINER(window), ui->main_box);
-
+ ui->menu_bar = GTK_WIDGET(gtk_builder_get_object(builder, "menu_bar"));
+ ui->main_box = GTK_WIDGET(gtk_builder_get_object(builder, "main_box"));
+ ui->popup_menu = GTK_WIDGET(gtk_builder_get_object(builder,
+ "popup_menu"));
+ g_object_ref(G_OBJECT(ui->popup_menu));
ui->main_window = window;
- ui->menu_bar = menubar;
-
+ ui->w_graph = GTK_WIDGET(gtk_builder_get_object(builder,
+ "graph"));
+ ui_graph_create(ui);
+
+ ui->sensor_box = GTK_PANED(gtk_builder_get_object(builder,
+ "sensor_box"));
+ ui->sensors_store = GTK_LIST_STORE(gtk_builder_get_object
+ (builder, "sensors_store"));
+ ui->sensors_tree = GTK_TREE_VIEW(gtk_builder_get_object
+ (builder, "sensors_tree"));
+ ui->sensors_scrolled_tree
+ = GTK_SCROLLED_WINDOW(gtk_builder_get_object
+ (builder, "sensors_scrolled_tree"));
+
+ ui_sensorlist_create(ui);
+
+ log_debug("ui_window_create(): show_all");
gtk_widget_show_all(ui->main_box);
+
+ g_object_unref(G_OBJECT(builder));
+
+ log_debug("ui_window_create() ends");
}
static void menu_bar_show(unsigned int show, struct ui_psensor *ui)
void ui_window_update(struct ui_psensor *ui)
{
struct config *cfg;
- int init = 1;
- cfg = ui->config;
+ log_debug("ui_window_update()");
- if (ui->sensor_box) {
- g_object_ref(GTK_WIDGET(ui->ui_sensorlist->widget));
+ cfg = ui->config;
- gtk_container_remove(GTK_CONTAINER(ui->sensor_box),
- ui->ui_sensorlist->widget);
+ g_object_ref(GTK_WIDGET(ui->sensors_scrolled_tree));
+ g_object_ref(GTK_WIDGET(ui->w_graph));
- gtk_container_remove(GTK_CONTAINER(ui->main_box),
- ui->sensor_box);
+ gtk_container_remove(GTK_CONTAINER(ui->sensor_box),
+ GTK_WIDGET(ui->sensors_scrolled_tree));
- ui->w_graph = ui_graph_create(ui);
+ gtk_container_remove(GTK_CONTAINER(ui->sensor_box), ui->w_graph);
- init = 0;
- }
+ gtk_container_remove(GTK_CONTAINER(ui->main_box),
+ GTK_WIDGET(ui->sensor_box));
if (cfg->sensorlist_position == SENSORLIST_POSITION_RIGHT
|| cfg->sensorlist_position == SENSORLIST_POSITION_LEFT)
- ui->sensor_box = gtk_hpaned_new();
+ ui->sensor_box
+ = GTK_PANED(gtk_paned_new(GTK_ORIENTATION_HORIZONTAL));
else
- ui->sensor_box = gtk_vpaned_new();
+ ui->sensor_box
+ = GTK_PANED(gtk_paned_new(GTK_ORIENTATION_VERTICAL));
- gtk_box_pack_end(GTK_BOX(ui->main_box), ui->sensor_box, TRUE, TRUE, 2);
+ gtk_box_pack_end(GTK_BOX(ui->main_box),
+ GTK_WIDGET(ui->sensor_box), TRUE, TRUE, 2);
if (cfg->sensorlist_position == SENSORLIST_POSITION_RIGHT
|| cfg->sensorlist_position == SENSORLIST_POSITION_BOTTOM) {
- gtk_paned_pack1(GTK_PANED(ui->sensor_box),
+ gtk_paned_pack1(ui->sensor_box,
GTK_WIDGET(ui->w_graph), TRUE, TRUE);
- gtk_paned_pack2(GTK_PANED(ui->sensor_box),
- ui->ui_sensorlist->widget, FALSE, TRUE);
+ gtk_paned_pack2(ui->sensor_box,
+ GTK_WIDGET(ui->sensors_scrolled_tree),
+ FALSE, TRUE);
} else {
- gtk_paned_pack1(GTK_PANED(ui->sensor_box),
- ui->ui_sensorlist->widget, FALSE, TRUE);
- gtk_paned_pack2(GTK_PANED(ui->sensor_box),
+ gtk_paned_pack1(ui->sensor_box,
+ GTK_WIDGET(ui->sensors_scrolled_tree),
+ FALSE, TRUE);
+ gtk_paned_pack2(ui->sensor_box,
GTK_WIDGET(ui->w_graph), TRUE, TRUE);
}
if (cfg->window_restore_enabled)
- gtk_paned_set_position(GTK_PANED(ui->sensor_box),
- ui->config->window_divider_pos);
+ gtk_paned_set_position(ui->sensor_box, cfg->window_divider_pos);
- if (!init)
- g_object_unref(GTK_WIDGET(ui->ui_sensorlist->widget));
+ g_object_unref(GTK_WIDGET(ui->sensors_scrolled_tree));
+ g_object_unref(GTK_WIDGET(ui->w_graph));
- gtk_widget_show_all(ui->sensor_box);
+ gtk_widget_show_all(GTK_WIDGET(ui->sensor_box));
if (cfg->menu_bar_disabled)
menu_bar_show(0, ui);
void ui_window_show(struct ui_psensor *ui)
{
log_debug("ui_window_show()");
+ ui_window_update(ui);
gtk_window_present(GTK_WINDOW(ui->main_window));
}
+
+static int cmp_sensors(const void *p1, const void *p2)
+{
+ const struct psensor *s1, *s2;
+ int pos1, pos2;
+
+ s1 = *(void **)p1;
+ s2 = *(void **)p2;
+
+ pos1 = config_get_sensor_position(s1->id);
+ pos2 = config_get_sensor_position(s2->id);
+
+ return pos1 - pos2;
+}
+
+struct psensor **ui_get_sensors_ordered_by_position(const struct ui_psensor *ui)
+{
+ struct psensor **result;
+
+ result = psensor_list_copy(ui->sensors);
+ qsort(result,
+ psensor_list_size(result),
+ sizeof(struct psensor *),
+ cmp_sensors);
+
+ return result;
+}
/*
- * Copyright (C) 2010-2012 jeanfi@gmail.com
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
#include "config.h"
+#include <pthread.h>
+
#include <glib/gi18n.h>
#include <gtk/gtk.h>
#include "psensor.h"
+#define PSENSOR_ICON "psensor"
+
struct ui_psensor {
struct psensor **sensors;
+ /* mutex which MUST be used for accessing sensors.*/
+ pthread_mutex_t sensors_mutex;
GtkWidget *w_graph;
- struct ui_sensorlist *ui_sensorlist;
-
struct config *config;
GtkWidget *main_window;
GtkWidget *menu_bar;
+ GtkWidget *popup_menu;
+
/*
* The main vertical box, top contains the menubar, bottom
* contains the sensor_box.
* The box which contains the sensors graph and the sensors
* information list.
*/
- GtkWidget *sensor_box;
+ GtkPaned *sensor_box;
- int graph_update_interval;
+ GtkListStore *sensors_store;
+ GtkTreeView *sensors_tree;
+ GtkScrolledWindow *sensors_scrolled_tree;
- GMutex *sensors_mutex;
+ int graph_update_interval;
};
/*
void ui_show_about_dialog();
+void ui_enable_alpha_channel(struct ui_psensor *ui);
+
+void ui_cb_preferences(GtkMenuItem *mi, gpointer data);
+void ui_cb_about(GtkMenuItem *mi, gpointer data);
+void ui_cb_menu_quit(GtkMenuItem *mi, gpointer data);
+void ui_cb_sensor_preferences(GtkMenuItem *mi, gpointer data);
+
+struct psensor **ui_get_sensors_ordered_by_position(const struct ui_psensor *);
#endif
/*
- * Copyright (C) 2010-2012 jeanfi@gmail.com
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
#include <gtk/gtk.h>
#include <libappindicator/app-indicator.h>
+#include "cfg.h"
#include "psensor.h"
#include "ui.h"
#include "ui_appindicator.h"
static const char *ICON = "psensor_normal";
static const char *ATTENTION_ICON = "psensor_hot";
-static GtkMenuItem **sensor_menu_items;
-static GtkWidget *main_window;
+static struct psensor **sensors;
+static GtkMenuItem **menu_items;
static int appindicator_supported = 1;
static AppIndicator *indicator;
static struct ui_psensor *ui_psensor;
{ "PsensorMenuAction", NULL, "_Psensor" },
{ "ShowAction", NULL,
- "_Show", NULL,
- "Show",
+ N_("_Show"), NULL,
+ N_("Show"),
G_CALLBACK(cb_menu_show) },
{ "PreferencesAction", GTK_STOCK_PREFERENCES,
- "_Preferences", NULL,
- "Preferences",
+ N_("_Preferences"), NULL,
+ N_("Preferences"),
G_CALLBACK(cb_menu_preferences) },
{ "SensorPreferencesAction", GTK_STOCK_PREFERENCES,
- "S_ensor Preferences",
+ N_("S_ensor Preferences"),
NULL,
- "SensorPreferences",
+ N_("SensorPreferences"),
G_CALLBACK(cb_sensor_preferences) },
{ "AboutAction", NULL,
- "_About",
+ N_("_About"),
NULL,
- "About",
+ N_("About"),
G_CALLBACK(cb_about) },
{ "QuitAction",
- GTK_STOCK_QUIT, "_Quit", NULL, "Quit", G_CALLBACK(cb_menu_quit) }
+ GTK_STOCK_QUIT,
+ N_("_Quit"),
+ NULL, N_("Quit"),
+ G_CALLBACK(cb_menu_quit) }
};
static guint n_entries = G_N_ELEMENTS(entries);
-static void update_sensor_menu_item(GtkMenuItem *item, struct psensor *s)
+static void
+update_menu_item(GtkMenuItem *item, struct psensor *s, int use_celcius)
{
gchar *str;
+ char *v;
+
+ v = psensor_current_value_to_str(s, use_celcius);
- str = g_strdup_printf("%s: %2.f %s",
- s->name,
- psensor_get_current_value(s),
- psensor_type_to_unit_str(s->type));
+ str = g_strdup_printf("%s: %s", s->name, v);
gtk_menu_item_set_label(item, str);
+ free(v);
g_free(str);
}
-static void update_sensor_menu_items(struct psensor **sensors)
+static void update_menu_items(int use_celcius)
+{
+ struct psensor **s;
+ GtkMenuItem **m;
+
+ if (!sensors)
+ return ;
+
+ for (s = sensors, m = menu_items; *s; s++, m++)
+ update_menu_item(*m, *s, use_celcius);
+}
+
+static void
+build_sensor_menu_items(const struct ui_psensor *ui,
+ GtkMenu *menu)
{
- int n, i;
+ int i, j, n, celcius;
+ const char *name;
+ struct psensor **sorted_sensors;
+
+ free(menu_items);
+
+ celcius = ui->config->temperature_unit == CELCIUS;
- n = psensor_list_size(sensors);
- for (i = 0; i < n; i++)
- update_sensor_menu_item(sensor_menu_items[i], sensors[i]);
+ sorted_sensors = ui_get_sensors_ordered_by_position(ui);
+ n = psensor_list_size(sorted_sensors);
+ menu_items = malloc(n * sizeof(GtkWidget *));
+ sensors = malloc((n + 1) * sizeof(struct psensor *));
+ for (i = 0, j = 0; i < n; i++) {
+ if (config_is_appindicator_enabled(sorted_sensors[i]->id)) {
+ sensors[j] = sorted_sensors[i];
+ name = sensors[j]->name;
+
+ menu_items[j] = GTK_MENU_ITEM
+ (gtk_menu_item_new_with_label(name));
+
+ gtk_menu_shell_insert(GTK_MENU_SHELL(menu),
+ GTK_WIDGET(menu_items[j]),
+ j+2);
+
+ update_menu_item(menu_items[j], sensors[j], celcius);
+
+ j++;
+ }
+ }
+
+ sensors[j] = NULL;
+
+ free(sorted_sensors);
}
static GtkWidget *get_menu(struct ui_psensor *ui)
GtkUIManager *menu_manager;
GError *error;
GtkMenu *menu;
- int i;
- int n = psensor_list_size(ui->sensors);
- struct psensor **sensors = ui->sensors;
-
action_group = gtk_action_group_new("PsensorActions");
gtk_action_group_set_translation_domain(action_group, PACKAGE);
menu = GTK_MENU(gtk_ui_manager_get_widget(menu_manager, "/MainMenu"));
- sensor_menu_items = malloc(sizeof(GtkWidget *)*n);
- for (i = 0; i < n; i++) {
- struct psensor *s = sensors[i];
-
- sensor_menu_items[i]
- = GTK_MENU_ITEM(gtk_menu_item_new_with_label(s->name));
-
- gtk_menu_shell_insert(GTK_MENU_SHELL(menu),
- GTK_WIDGET(sensor_menu_items[i]),
- i+2);
-
- update_sensor_menu_item(sensor_menu_items[i],
- s);
- }
-
+ build_sensor_menu_items(ui, menu);
return GTK_WIDGET(menu);
}
status = app_indicator_get_status(indicator);
if (!attention && status == APP_INDICATOR_STATUS_ATTENTION)
- app_indicator_set_status
- (indicator, APP_INDICATOR_STATUS_ACTIVE);
+ app_indicator_set_status(indicator,
+ APP_INDICATOR_STATUS_ACTIVE);
if (attention && status == APP_INDICATOR_STATUS_ACTIVE)
- app_indicator_set_status
- (indicator, APP_INDICATOR_STATUS_ATTENTION);
+ app_indicator_set_status(indicator,
+ APP_INDICATOR_STATUS_ATTENTION);
- update_sensor_menu_items(ui->sensors);
+ update_menu_items(ui->config->temperature_unit == CELCIUS);
}
static GtkStatusIcon *unity_fallback(AppIndicator *indicator)
{
- log_debug("ui_appindicator#unity_fallback");
+ GtkStatusIcon *ico;
+
+ log_debug("ui_appindicator.unity_fallback()");
appindicator_supported = 0;
- return ui_status_get_icon(ui_psensor);
+ ico = ui_status_get_icon(ui_psensor);
+
+ ui_status_set_visible(1);
+
+ return ico;
}
static void
unity_unfallback(AppIndicator *indicator, GtkStatusIcon *status_icon)
{
- log_debug("ui_appindicator#unity_unfallback");
+ log_debug("ui_appindicator.unity_unfallback()");
+
+ ui_status_set_visible(0);
appindicator_supported = 1;
}
-void ui_appindicator_init(struct ui_psensor *ui)
+void ui_appindicator_update_menu(struct ui_psensor *ui)
{
GtkWidget *menu;
+ menu = get_menu(ui);
+ app_indicator_set_menu(indicator, GTK_MENU(menu));
+
+ gtk_widget_show_all(menu);
+}
+
+void ui_appindicator_init(struct ui_psensor *ui)
+{
ui_psensor = ui;
- main_window = ui->main_window;
indicator = app_indicator_new
("psensor",
app_indicator_set_status(indicator, APP_INDICATOR_STATUS_ACTIVE);
app_indicator_set_attention_icon(indicator, ATTENTION_ICON);
- menu = get_menu(ui);
- app_indicator_set_menu(indicator, GTK_MENU(menu));
-
- gtk_widget_show_all(menu);
+ ui_appindicator_update_menu(ui);
}
int is_appindicator_supported()
void ui_appindicator_cleanup()
{
+ free(sensors);
/* TODO: cleanup menu items. */
}
/*
- * Copyright (C) 2010-2012 jeanfi@gmail.com
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
#if defined(HAVE_APPINDICATOR) || defined(HAVE_APPINDICATOR_029)
void ui_appindicator_init(struct ui_psensor *ui);
void ui_appindicator_update(struct ui_psensor *ui, unsigned int attention);
+void ui_appindicator_update_menu(struct ui_psensor *ui);
int is_appindicator_supported();
void ui_appindicator_cleanup();
#else
/*
- * Copyright (C) 2010-2012 jeanfi@gmail.com
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
#include "ui_color.h"
-int ui_change_color(const char *title, struct color *col)
+int ui_change_color(const char *title, struct color *col, GtkWindow *win)
{
- GdkColor color;
- GtkColorSelection *colorsel;
+ GdkRGBA color;
int res;
- GtkColorSelectionDialog *colordlg;
+ GtkColorChooserDialog *colordlg;
+ double r, g, b;
color.red = col->red;
color.green = col->green;
color.blue = col->blue;
+ color.alpha = 1;
- colordlg = GTK_COLOR_SELECTION_DIALOG
- (gtk_color_selection_dialog_new(title));
+ colordlg = GTK_COLOR_CHOOSER_DIALOG
+ (gtk_color_chooser_dialog_new(title, win));
- colorsel = GTK_COLOR_SELECTION
- (gtk_color_selection_dialog_get_color_selection(colordlg));
+ gtk_color_chooser_set_use_alpha(GTK_COLOR_CHOOSER(colordlg), 0);
- gtk_color_selection_set_current_color(colorsel, &color);
+ gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(colordlg), &color);
res = gtk_dialog_run(GTK_DIALOG(colordlg));
if (res == GTK_RESPONSE_OK) {
- gtk_color_selection_get_current_color(colorsel, &color);
+ gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(colordlg), &color);
- color_set(col, color.red, color.green, color.blue);
+ /* GdkRGBA defines rgb as double 0..1 but chooser returns
+ * values > 1 when selecting a custom undefined color.
+ * Not sure whether that's a gtk/gdk bug. */
+
+ if (color.red > 1)
+ r = 1;
+ else
+ r = color.red;
+
+ if (color.green > 1)
+ g = 1;
+ else
+ g = color.green;
+
+ if (color.blue > 1)
+ b = 1;
+ else
+ b = color.blue;
+
+ color_set(col, 65535*r, 65535*g, 65535*b);
}
gtk_widget_destroy(GTK_WIDGET(colordlg));
/*
- * Copyright (C) 2010-2012 jeanfi@gmail.com
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
#include "color.h"
/*
- UI to change a given color.
-
- Returns 1 if the color has been modified.
+ * UI to change a given color.
+ *
+ * Returns 1 if the color has been modified.
*/
-int ui_change_color(const char *title, struct color *col);
+int ui_change_color(const char *title, struct color *col, GtkWindow *win);
#endif
/*
- * Copyright (C) 2010-2012 jeanfi@gmail.com
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
*/
#include "graph.h"
#include "ui_graph.h"
-#include "ui_pref.h"
-#include "ui_sensorpref.h"
-
-static void cb_menu_quit(GtkMenuItem *mi, gpointer data)
-{
- ui_psensor_quit((struct ui_psensor *)data);
-}
-
-static void cb_preferences(GtkMenuItem *mi, gpointer data)
-{
- ui_pref_dialog_run((struct ui_psensor *)data);
-}
-
-static void cb_about(GtkMenuItem *mi, gpointer data)
-{
- ui_show_about_dialog();
-}
-
-static void cb_sensor_preferences(GtkMenuItem *mi, gpointer data)
-{
- struct ui_psensor *ui = data;
-
- if (ui->sensors && *ui->sensors)
- ui_sensorpref_dialog_run(*ui->sensors, ui);
-}
-
-static const char *menu_desc =
-"<ui>"
-" <popup name='MainMenu'>"
-" <menuitem name='Preferences' action='PreferencesAction' />"
-" <menuitem name='SensorPreferences' action='SensorPreferencesAction' />"
-" <separator />"
-" <menuitem name='About' action='AboutAction' />"
-" <separator />"
-" <menuitem name='Quit' action='QuitAction' />"
-" </popup>"
-"</ui>";
-
-static GtkActionEntry entries[] = {
- { "PsensorMenuAction", NULL, "_Psensor" },
-
- { "PreferencesAction", GTK_STOCK_PREFERENCES,
- "_Preferences", NULL,
- "Preferences",
- G_CALLBACK(cb_preferences) },
-
- { "SensorPreferencesAction", GTK_STOCK_PREFERENCES,
- "_Sensor Preferences", NULL,
- "Sensor Preferences",
- G_CALLBACK(cb_sensor_preferences) },
-
- { "AboutAction", NULL,
- "_About", NULL,
- "About",
- G_CALLBACK(cb_about) },
-
- { "QuitAction",
- GTK_STOCK_QUIT, "_Quit", NULL, "Quit", G_CALLBACK(cb_menu_quit) }
-};
-static guint n_entries = G_N_ELEMENTS(entries);
-
-static GtkWidget *get_menu(struct ui_psensor *ui)
-{
- GtkActionGroup *action_group;
- GtkUIManager *menu_manager;
- GError *error;
-
- action_group = gtk_action_group_new("PsensorActions");
- gtk_action_group_set_translation_domain(action_group, PACKAGE);
- menu_manager = gtk_ui_manager_new();
-
- gtk_action_group_add_actions(action_group, entries, n_entries, ui);
- gtk_ui_manager_insert_action_group(menu_manager, action_group, 0);
-
- error = NULL;
- gtk_ui_manager_add_ui_from_string(menu_manager, menu_desc, -1, &error);
-
- if (error)
- g_error(_("building menus failed: %s"), error->message);
-
- return gtk_ui_manager_get_widget(menu_manager, "/MainMenu");
-}
-
static int
on_graph_clicked(GtkWidget *widget, GdkEventButton *event, gpointer data)
{
- GtkWidget *menu;
-
if (event->type != GDK_BUTTON_PRESS)
return FALSE;
- menu = get_menu((struct ui_psensor *)data);
-
- gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL,
+ gtk_menu_popup(GTK_MENU(((struct ui_psensor *)data)->popup_menu),
+ NULL, NULL, NULL, NULL,
event->button, event->time);
return TRUE;
struct ui_psensor *ui_psensor = (struct ui_psensor *)data;
graph_update(ui_psensor->sensors,
- ui_psensor->w_graph, ui_psensor->config);
+ ui_psensor->w_graph,
+ ui_psensor->config,
+ ui_psensor->main_window);
return FALSE;
}
-GtkWidget *ui_graph_create(struct ui_psensor * ui)
+void ui_graph_create(struct ui_psensor *ui)
{
GtkWidget *w_graph;
- w_graph = gtk_drawing_area_new();
+ log_debug("ui_graph_create()");
- if (GTK_MAJOR_VERSION == 2)
- g_signal_connect(GTK_WIDGET(w_graph),
- "expose-event",
- G_CALLBACK(on_expose_event),
- ui);
- else
- g_signal_connect(GTK_WIDGET(w_graph),
- "draw",
- G_CALLBACK(on_expose_event),
- ui);
+ w_graph = ui->w_graph;
+
+ g_signal_connect(GTK_WIDGET(w_graph),
+ "draw",
+ G_CALLBACK(on_expose_event),
+ ui);
gtk_widget_add_events(w_graph, GDK_BUTTON_PRESS_MASK);
g_signal_connect(GTK_WIDGET(w_graph),
- "button_press_event",
- (GCallback) on_graph_clicked, ui);
+ "button_press_event",
+ (GCallback) on_graph_clicked, ui);
- return w_graph;
+ log_debug("ui_graph_create() ends");
}
/*
- * Copyright (C) 2010-2012 jeanfi@gmail.com
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
#include "ui.h"
-GtkWidget *ui_graph_create(struct ui_psensor * ui);
+void ui_graph_create(struct ui_psensor *ui);
#endif
/*
- * Copyright (C) 2010-2012 jeanfi@gmail.com
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
#define NOTIFY_CHECK_VERSION(x, y, z) 0
#endif
+#include "cfg.h"
#include "ui.h"
#include "ui_notify.h"
void ui_notify(struct psensor *sensor, struct ui_psensor *ui)
{
struct timeval t;
- char *name;
+ char *body, *svalue;
+ const char *summary;
NotifyNotification *notif;
+ unsigned int use_celcius;
log_debug("last_notification %d", last_notification_tv.tv_sec);
if (gettimeofday(&t, NULL) != 0) {
- log_printf(LOG_ERR, _("gettimeofday failed"));
+ log_err(_("gettimeofday failed."));
return;
}
notify_init("psensor");
if (notify_is_initted() == TRUE) {
- name = strdup(sensor->name);
+ if (ui->config->temperature_unit == CELCIUS)
+ use_celcius = 1;
+ else
+ use_celcius = 0;
+
+ svalue = psensor_measure_to_str
+ (psensor_get_current_measure(sensor),
+ sensor->type,
+ use_celcius);
+
+ body = malloc(strlen(sensor->name) + 3 + strlen(svalue) + 1);
+ sprintf(body, "%s : %s", sensor->name, svalue);
+ free(svalue);
+
+ if (is_temp_type(sensor->type))
+ summary = _("Temperature alert");
+ else if (is_fan_type(sensor->type))
+ summary = _("Fan alert");
+ else
+ summary = _("N/A");
/*
* Since libnotify 0.7 notify_notification_new has
* only 3 parameters.
*/
#if NOTIFY_CHECK_VERSION(0, 7, 0)
- notif = notify_notification_new
- (_("Temperature alert"), name, NULL);
+ notif = notify_notification_new(summary, body, PSENSOR_ICON);
#else
- notif = notify_notification_new(_("Temperature alert"),
- name,
- NULL,
+ notif = notify_notification_new(summary,
+ body,
+ PSENSOR_ICON,
GTK_WIDGET(ui->main_window));
#endif
- log_debug("notif_notification_new %s", sensor->name);
+ log_debug("notif_notification_new %s", body);
notify_notification_show(notif, NULL);
g_object_unref(notif);
} else {
- log_printf(LOG_ERR, "notify not initted");
+ log_err("notify not initialized");
}
}
/*
- * Copyright (C) 2010-2012 jeanfi@gmail.com
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
/*
- * Copyright (C) 2010-2012 jeanfi@gmail.com
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
#include "cfg.h"
#include "ui_pref.h"
#include "ui_color.h"
-#include "compat.h"
GdkColor *color_to_gdkcolor(struct color *color)
{
GError *error = NULL;
GdkColor *color_fg, *color_bg;
GtkColorButton *w_color_fg, *w_color_bg;
- GtkHScale *w_bg_opacity;
+ GtkScale *w_bg_opacity;
GtkSpinButton *w_update_interval, *w_monitoring_duration,
- *w_s_update_interval;
+ *w_s_update_interval, *w_slog_interval;
GtkComboBox *w_sensorlist_pos;
GtkToggleButton *w_hide_window_decoration, *w_keep_window_below,
*w_enable_menu, *w_enable_launcher_counter, *w_hide_on_startup,
- *w_win_restore;
+ *w_win_restore, *w_slog_enabled;
+ GtkComboBoxText *w_temp_unit;
+ GtkEntry *w_notif_script;
+ char *notif_script;
cfg = ui->config;
diag = GTK_DIALOG(gtk_builder_get_object(builder, "dialog1"));
+ w_notif_script = GTK_ENTRY(gtk_builder_get_object(builder,
+ "notif_script"));
+ notif_script = config_get_notif_script();
+ if (notif_script) {
+ gtk_entry_set_text(GTK_ENTRY(w_notif_script), notif_script);
+ free(notif_script);
+ }
+
color_fg = color_to_gdkcolor(cfg->graph_fgcolor);
w_color_fg = GTK_COLOR_BUTTON(gtk_builder_get_object(builder,
"color_fg"));
"color_bg"));
gtk_color_button_set_color(w_color_bg, color_bg);
- w_bg_opacity = GTK_HSCALE(gtk_builder_get_object(builder,
- "bg_opacity"));
+ w_bg_opacity = GTK_SCALE(gtk_builder_get_object(builder,
+ "bg_opacity"));
gtk_range_set_value(GTK_RANGE(w_bg_opacity), cfg->graph_bg_alpha);
w_update_interval = GTK_SPIN_BUTTON(gtk_builder_get_object
gtk_toggle_button_set_active(w_enable_launcher_counter,
!cfg->unity_launcher_count_disabled);
+ w_slog_enabled = GTK_TOGGLE_BUTTON
+ (gtk_builder_get_object(builder, "enable_slog"));
+ gtk_toggle_button_set_active(w_slog_enabled, cfg->slog_enabled);
+
+ w_slog_interval = GTK_SPIN_BUTTON
+ (gtk_builder_get_object(builder, "slog_interval"));
+ gtk_spin_button_set_value(w_slog_interval, cfg->slog_interval);
+
w_hide_on_startup
= GTK_TOGGLE_BUTTON(gtk_builder_get_object(builder,
"hide_on_startup"));
gtk_toggle_button_set_active(w_win_restore,
cfg->window_restore_enabled);
+ w_temp_unit
+ = GTK_COMBO_BOX_TEXT(gtk_builder_get_object
+ (builder, "temperature_unit"));
+ gtk_combo_box_set_active(GTK_COMBO_BOX(w_temp_unit),
+ cfg->temperature_unit);
+
result = gtk_dialog_run(diag);
if (result == GTK_RESPONSE_ACCEPT) {
double value;
GdkColor color;
- g_mutex_lock(ui->sensors_mutex);
+ pthread_mutex_lock(&ui->sensors_mutex);
+
+ config_set_notif_script
+ (gtk_entry_get_text(GTK_ENTRY(w_notif_script)));
gtk_color_button_get_color(w_color_fg, &color);
color_set(cfg->graph_fgcolor,
cfg->window_restore_enabled
= gtk_toggle_button_get_active(w_win_restore);
+ cfg->slog_enabled
+ = gtk_toggle_button_get_active(w_slog_enabled);
+
+ cfg->slog_interval
+ = gtk_spin_button_get_value_as_int(w_slog_interval);
+
+ cfg->temperature_unit
+ = gtk_combo_box_get_active(GTK_COMBO_BOX(w_temp_unit));
+
config_save(cfg);
- g_mutex_unlock(ui->sensors_mutex);
+ pthread_mutex_unlock(&ui->sensors_mutex);
ui_window_update(ui);
}
/*
- * Copyright (C) 2010-2012 jeanfi@gmail.com
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
/*
- * Copyright (C) 2010-2012 jeanfi@gmail.com
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
#include "ui_sensorpref.h"
#include "cfg.h"
#include "ui_color.h"
-#include "compat.h"
enum {
COL_NAME = 0,
COL_COLOR_STR,
COL_ENABLED,
COL_EMPTY,
- COLS_COUNT
+ COL_SENSOR,
};
struct cb_data {
return idx;
}
-void ui_sensorlist_update(struct ui_psensor *ui)
+static void populate(struct ui_psensor *ui)
{
GtkTreeIter iter;
- struct ui_sensorlist *ui_sl = ui->ui_sensorlist;
- GtkTreeModel *model
- = gtk_tree_view_get_model(ui_sl->treeview);
- gboolean valid = gtk_tree_model_get_iter_first(model, &iter);
- struct psensor **sensor = ui->sensors;
+ GtkListStore *store;
+ GdkColor color;
+ char *scolor;
+ struct psensor **ordered_sensors, **s_cur, *s;
+
+ ordered_sensors = ui_get_sensors_ordered_by_position(ui);
+ store = ui->sensors_store;
- while (valid && *sensor) {
- struct psensor *s = *sensor;
+ gtk_list_store_clear(store);
- char *str;
+ for (s_cur = ordered_sensors; *s_cur; s_cur++) {
+ s = *s_cur;
- str = psensor_value_to_string(s->type,
- s->measures[s->values_max_length -
- 1].value.d_num);
+ gtk_list_store_append(store, &iter);
- gtk_list_store_set(GTK_LIST_STORE(model), &iter, COL_TEMP, str,
+ color.red = s->color->red;
+ color.green = s->color->green;
+ color.blue = s->color->blue;
+
+ scolor = gdk_color_to_string(&color);
+
+ gtk_list_store_set(store, &iter,
+ COL_NAME, s->name,
+ COL_COLOR_STR, scolor,
+ COL_ENABLED, s->graph_enabled,
+ COL_SENSOR, s,
-1);
- free(str);
+ free(scolor);
+ }
+ free(ordered_sensors);
+}
+
+void ui_sensorlist_update(struct ui_psensor *ui, bool complete)
+{
+ char *value, *min, *max;
+ struct psensor *s;
+ GtkTreeIter iter;
+ GtkTreeModel *model;
+ gboolean valid;
+ int use_celcius;
+ GtkListStore *store;
+
+ if (complete)
+ populate(ui);
+
+ model = gtk_tree_view_get_model(ui->sensors_tree);
+ store = ui->sensors_store;
- str = psensor_value_to_string(s->type, s->min);
- gtk_list_store_set(GTK_LIST_STORE(model), &iter,
- COL_TEMP_MIN, str, -1);
- free(str);
+ use_celcius = ui->config->temperature_unit == CELCIUS;
- str = psensor_value_to_string(s->type, s->max);
- gtk_list_store_set(GTK_LIST_STORE(model), &iter,
- COL_TEMP_MAX, str, -1);
- free(str);
+ valid = gtk_tree_model_get_iter_first(model, &iter);
+ while (valid) {
+ gtk_tree_model_get(model, &iter, COL_SENSOR, &s, -1);
+
+ value = psensor_value_to_str(s->type,
+ psensor_get_current_value(s),
+ use_celcius);
+ min = psensor_value_to_str(s->type, s->min, use_celcius);
+ max = psensor_value_to_str(s->type, s->max, use_celcius);
+
+ gtk_list_store_set(store, &iter,
+ COL_TEMP, value,
+ COL_TEMP_MIN, min,
+ COL_TEMP_MAX, max,
+ -1);
+ free(value);
+ free(min);
+ free(max);
valid = gtk_tree_model_iter_next(model, &iter);
- sensor++;
}
}
* <null> if none.
*/
static struct psensor *
-get_sensor_at_pos(GtkTreeView *view, int x, int y, struct psensor **sensors)
+get_sensor_at_pos(GtkTreeView *view, int x, int y, struct ui_psensor *ui)
{
GtkTreePath *path;
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ struct psensor *s;
gtk_tree_view_get_path_at_pos(view, x, y, &path, NULL, NULL, NULL);
+ model = gtk_tree_view_get_model(ui->sensors_tree);
if (path) {
- gint *i = gtk_tree_path_get_indices(path);
- if (i)
- return *(sensors + *i);
+ if (gtk_tree_model_get_iter(model, &iter, path)) {
+ gtk_tree_model_get(model, &iter, COL_SENSOR, &s, -1);
+ return s;
+ }
}
return NULL;
}
*/
static int get_col_index_at_pos(GtkTreeView *view, int x)
{
- GList *columns = gtk_tree_view_get_columns(view);
- GList *node;
- int colx = 0;
- int coli = 0;
-
- for (node = columns; node; node = node->next) {
- GtkTreeViewColumn *checkcol = (GtkTreeViewColumn *) node->data;
-
- if (x >= colx &&
- x < (colx + gtk_tree_view_column_get_width(checkcol)))
+ GList *cols, *node;
+ int colx, coli;
+ GtkTreeViewColumn *checkcol;
+
+ cols = gtk_tree_view_get_columns(view);
+ colx = 0;
+ coli = 0;
+ for (node = cols; node; node = node->next) {
+ checkcol = (GtkTreeViewColumn *)node->data;
+
+ if (x >= colx
+ && x < (colx + gtk_tree_view_column_get_width(checkcol)))
return coli;
else
colx += gtk_tree_view_column_get_width(checkcol);
return -1;
}
-void ui_sensorlist_update_sensors_preferences(struct ui_psensor *ui)
-{
- GtkTreeIter iter;
- GtkTreeModel *model
- = gtk_tree_view_get_model(ui->ui_sensorlist->treeview);
- gboolean valid = gtk_tree_model_get_iter_first(model, &iter);
- struct psensor **sensor = ui->ui_sensorlist->sensors;
-
- while (valid && *sensor) {
- GdkColor color;
- gchar *scolor;
-
- color.red = (*sensor)->color->red;
- color.green = (*sensor)->color->green;
- color.blue = (*sensor)->color->blue;
-
- scolor = gdk_color_to_string(&color);
-
- gtk_list_store_set(GTK_LIST_STORE(model),
- &iter, COL_NAME, (*sensor)->name, -1);
-
- gtk_list_store_set(GTK_LIST_STORE(model),
- &iter, COL_COLOR_STR, scolor, -1);
-
- gtk_list_store_set(GTK_LIST_STORE(model),
- &iter, COL_ENABLED, (*sensor)->enabled, -1);
-
- free(scolor);
-
- valid = gtk_tree_model_iter_next(model, &iter);
- sensor++;
- }
-}
-
-static void on_preferences_activated(GtkWidget *menu_item, gpointer data)
+static void preferences_activated_cbk(GtkWidget *menu_item, gpointer data)
{
struct cb_data *cb_data = data;
ui_sensorpref_dialog_run(cb_data->sensor, cb_data->ui);
}
-static GtkWidget *create_sensor_popup(struct ui_psensor *ui,
- struct psensor *sensor)
+static GtkWidget *
+create_sensor_popup(struct ui_psensor *ui, struct psensor *sensor)
{
- GtkWidget *menu;
- GtkWidget *item;
- GtkWidget *separator;
+ GtkWidget *menu, *item, *separator;
struct cb_data *data;
menu = gtk_menu_new();
g_signal_connect(item,
"activate",
- G_CALLBACK(on_preferences_activated), data);
+ G_CALLBACK(preferences_activated_cbk), data);
gtk_widget_show_all(menu);
return menu;
}
-static int on_clicked(GtkWidget *widget, GdkEventButton *event, gpointer data)
+static int clicked_cbk(GtkWidget *widget, GdkEventButton *event, gpointer data)
{
- struct ui_psensor *ui = (struct ui_psensor *)data;
- GtkTreeView *view = ui->ui_sensorlist->treeview;
+ GtkWidget *menu;
+ struct ui_psensor *ui;
+ GtkTreeView *view;
+ struct psensor *s;
+ int coli;
+
+ if (event->button != 3)
+ return FALSE;
+
+ ui = (struct ui_psensor *)data;
+ view = ui->sensors_tree;
- struct psensor *sensor = get_sensor_at_pos(view,
- event->x,
- event->y,
- ui->sensors);
+ s = get_sensor_at_pos(view, event->x, event->y, ui);
- if (sensor) {
- int coli = col_index_to_col(get_col_index_at_pos(view,
- event->x));
+ if (s) {
+ coli = col_index_to_col(get_col_index_at_pos(view, event->x));
if (coli == COL_COLOR) {
if (ui_change_color(_("Select foreground color"),
- sensor->color)) {
- ui_sensorlist_update_sensors_preferences(ui);
- config_set_sensor_color(sensor->id,
- sensor->color);
+ s->color,
+ GTK_WINDOW(ui->main_window))) {
+ ui_sensorlist_update(ui, 1);
+ config_set_sensor_color(s->id, s->color);
}
} else if (coli >= 0 && coli != COL_ENABLED) {
- GtkWidget *menu = create_sensor_popup(ui,
- sensor);
+ menu = create_sensor_popup(ui, s);
gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL,
event->button, event->time);
-
}
}
- return FALSE;
+ return TRUE;
}
static void
-on_toggled(GtkCellRendererToggle *cell, gchar *path_str, gpointer data)
+toggled_cbk(GtkCellRendererToggle *cell, gchar *path_str, gpointer data)
{
- struct ui_sensorlist *list = (struct ui_sensorlist *)data;
- GtkTreeModel *model
- = gtk_tree_view_get_model(list->treeview);
+ struct ui_psensor *ui;
+ GtkTreeModel *model;
GtkTreeIter iter;
- GtkTreePath *path = gtk_tree_path_new_from_string(path_str);
- gboolean fixed;
- gint *i;
+ GtkTreePath *path;
+ struct psensor *s;
+
+ ui = (struct ui_psensor *)data;
+ model = gtk_tree_view_get_model(ui->sensors_tree);
+ path = gtk_tree_path_new_from_string(path_str);
gtk_tree_model_get_iter(model, &iter, path);
- gtk_tree_model_get(model, &iter, COL_ENABLED, &fixed, -1);
-
- fixed ^= 1;
-
- i = gtk_tree_path_get_indices(path);
- if (i) {
- int n = *i;
- struct psensor **sensor = list->sensors;
- while (n--)
- sensor++;
- (*sensor)->enabled = fixed;
- config_set_sensor_enabled((*sensor)->id, (*sensor)->enabled);
- }
- gtk_list_store_set(GTK_LIST_STORE(model),
- &iter, COL_ENABLED, fixed, -1);
+ gtk_tree_model_get(model, &iter, COL_SENSOR, &s, -1);
+
+ s->graph_enabled ^= 1;
+ config_set_sensor_enabled(s->id, s->graph_enabled);
+
+ gtk_list_store_set(GTK_LIST_STORE(model), &iter,
+ COL_ENABLED, s->graph_enabled, -1);
gtk_tree_path_free(path);
}
-static void create_widget(struct ui_psensor *ui)
+void ui_sensorlist_create(struct ui_psensor *ui)
{
- GtkListStore *store;
GtkCellRenderer *renderer;
- struct psensor **s_cur = ui->sensors;
- struct ui_sensorlist *ui_sl = ui->ui_sensorlist;
-
- store = gtk_list_store_new(COLS_COUNT,
- G_TYPE_STRING,
- G_TYPE_STRING,
- G_TYPE_STRING,
- G_TYPE_STRING,
- G_TYPE_STRING,
- G_TYPE_STRING,
- G_TYPE_BOOLEAN, G_TYPE_STRING);
- ui_sl->treeview = GTK_TREE_VIEW
- (gtk_tree_view_new_with_model(GTK_TREE_MODEL(store)));
-
- gtk_tree_selection_set_mode
- (gtk_tree_view_get_selection(ui_sl->treeview),
- GTK_SELECTION_NONE);
+ log_debug("ui_sensorlist_create()");
renderer = gtk_cell_renderer_text_new();
- gtk_tree_view_insert_column_with_attributes(ui_sl->treeview,
+ gtk_tree_view_insert_column_with_attributes(ui->sensors_tree,
-1,
_("Sensor"),
renderer,
"text", COL_NAME, NULL);
- gtk_tree_view_insert_column_with_attributes(ui_sl->treeview,
+ gtk_tree_view_insert_column_with_attributes(ui->sensors_tree,
-1,
_("Value"),
renderer,
"text", COL_TEMP, NULL);
- gtk_tree_view_insert_column_with_attributes(ui_sl->treeview,
+ gtk_tree_view_insert_column_with_attributes(ui->sensors_tree,
-1,
_("Min"),
renderer,
"text", COL_TEMP_MIN, NULL);
- gtk_tree_view_insert_column_with_attributes(ui_sl->treeview,
+ gtk_tree_view_insert_column_with_attributes(ui->sensors_tree,
-1,
_("Max"),
renderer,
"text", COL_TEMP_MAX, NULL);
renderer = gtk_cell_renderer_text_new();
- gtk_tree_view_insert_column_with_attributes(ui_sl->treeview,
+ gtk_tree_view_insert_column_with_attributes(ui->sensors_tree,
-1,
_("Color"),
renderer,
"background", COL_COLOR_STR,
NULL);
- g_signal_connect(ui_sl->treeview,
- "button-press-event", (GCallback) on_clicked, ui);
+ g_signal_connect(ui->sensors_tree,
+ "button-press-event", (GCallback)clicked_cbk, ui);
renderer = gtk_cell_renderer_toggle_new();
- gtk_tree_view_insert_column_with_attributes(ui_sl->treeview,
+ gtk_tree_view_insert_column_with_attributes(ui->sensors_tree,
-1,
- _("Enabled"),
+ _("Graph"),
renderer,
"active", COL_ENABLED,
NULL);
g_signal_connect(G_OBJECT(renderer),
- "toggled", (GCallback) on_toggled, ui_sl);
+ "toggled", (GCallback) toggled_cbk, ui);
renderer = gtk_cell_renderer_text_new();
- gtk_tree_view_insert_column_with_attributes(ui_sl->treeview,
+ gtk_tree_view_insert_column_with_attributes(ui->sensors_tree,
-1,
"",
renderer,
"text", COL_EMPTY, NULL);
- while (*s_cur) {
- GtkTreeIter iter;
- GdkColor color;
- gchar *scolor;
- struct psensor *s = *s_cur;
-
- color.red = s->color->red;
- color.green = s->color->green;
- color.blue = s->color->blue;
-
- scolor = gdk_color_to_string(&color);
-
- gtk_list_store_append(store, &iter);
- gtk_list_store_set(store, &iter,
- COL_NAME, s->name,
- COL_TEMP, _("N/A"),
- COL_TEMP_MIN, _("N/A"),
- COL_TEMP_MAX, _("N/A"),
- COL_COLOR_STR, scolor,
- COL_ENABLED, s->enabled, -1);
-
- free(scolor);
-
- s_cur++;
- }
-
- ui_sl->widget = gtk_scrolled_window_new(NULL, NULL);
- gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(ui_sl->widget),
- GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
- gtk_container_add(GTK_CONTAINER(ui_sl->widget),
- GTK_WIDGET(ui_sl->treeview));
-}
-
-void ui_sensorlist_create(struct ui_psensor *ui)
-{
- ui->ui_sensorlist = malloc(sizeof(struct ui_sensorlist));
- ui->ui_sensorlist->sensors = ui->sensors;
-
- create_widget(ui);
+ ui_sensorlist_update(ui, 1);
}
/*
- * Copyright (C) 2010-2012 jeanfi@gmail.com
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
#include "psensor.h"
-struct ui_sensorlist {
- /* The GtkTreeView widget containing the list of sensors */
- GtkTreeView *treeview;
-
- /* Scrolled widget containing the GtkTreeView */
- GtkWidget *widget;
-
- struct psensor **sensors;
-};
-
void ui_sensorlist_create(struct ui_psensor *);
/* Update values current/min/max */
-void ui_sensorlist_update(struct ui_psensor *ui);
-
-void ui_sensorlist_update_sensors_preferences(struct ui_psensor *);
+void ui_sensorlist_update(struct ui_psensor *ui, bool complete);
#endif
/*
- * Copyright (C) 2010-2012 jeanfi@gmail.com
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
#include "ui_sensorpref.h"
#include "ui_color.h"
+#if defined(HAVE_APPINDICATOR) || defined(HAVE_APPINDICATOR_029)
+#include "ui_appindicator.h"
+#endif
+
+enum {
+ COL_NAME = 0,
+ COL_SENSOR_PREF
+};
+
struct sensor_pref {
struct psensor *sensor;
char *name;
int enabled;
struct color *color;
int alarm_enabled;
- double alarm_limit;
+ int alarm_high_threshold;
+ int alarm_low_threshold;
+ unsigned int appindicator_enabled;
};
struct cb_data {
struct ui_psensor *ui;
GtkBuilder *builder;
- struct sensor_pref **prefs;
};
-static struct sensor_pref *sensor_pref_new(struct psensor *s)
+static struct sensor_pref *
+sensor_pref_new(struct psensor *s, struct config *cfg)
{
- struct sensor_pref *p = malloc(sizeof(struct sensor_pref));
+ struct sensor_pref *p;
- p->sensor = s;
+ p = malloc(sizeof(struct sensor_pref));
+ p->sensor = s;
p->name = strdup(s->name);
- p->enabled = s->enabled;
+ p->enabled = s->graph_enabled;
p->alarm_enabled = s->alarm_enabled;
- p->alarm_limit = s->alarm_limit;
p->color = color_dup(s->color);
+ if (cfg->temperature_unit == CELCIUS) {
+ p->alarm_high_threshold = s->alarm_high_threshold;
+ p->alarm_low_threshold = s->alarm_low_threshold;
+ } else {
+ p->alarm_high_threshold
+ = celcius_to_fahrenheit(s->alarm_high_threshold);
+ p->alarm_low_threshold
+ = celcius_to_fahrenheit(s->alarm_low_threshold);
+ }
+
+ p->appindicator_enabled = s->appindicator_enabled;
+
return p;
}
free(p);
}
-static struct sensor_pref **sensor_pref_list_new(struct psensor **sensors)
-{
- int n, i;
- struct sensor_pref **pref_list;
-
- n = psensor_list_size(sensors);
- pref_list = malloc(sizeof(struct sensor_pref *) * (n+1));
-
- for (i = 0; i < n; i++)
- pref_list[i] = sensor_pref_new(sensors[i]);
-
- pref_list[n] = NULL;
-
- return pref_list;
-}
-
-static void sensor_pref_list_free(struct sensor_pref **list)
-{
- struct sensor_pref **cur = list;
-
- while (*cur) {
- sensor_pref_free(*cur);
-
- cur++;
- }
-
- free(list);
-}
-
-static struct sensor_pref *
-sensor_pref_get(struct sensor_pref **ps, struct psensor *s)
-{
- struct sensor_pref **p_cur = ps;
-
- while (*p_cur) {
- struct sensor_pref *p = *p_cur;
-
- if (p->sensor == s)
- return p;
-
- p_cur++;
- }
-
- return NULL;
-}
-
-static struct sensor_pref *
-get_seleted_sensor_pref(GtkBuilder *builder, struct sensor_pref **ps)
+static struct sensor_pref *get_selected_sensor_pref(GtkTreeView *tree)
{
GtkTreeModel *model;
GtkTreeIter iter;
- struct sensor_pref *pref = NULL;
+ struct sensor_pref *pref;
GtkTreeSelection *selection;
- GtkTreeView *tree;
-
- tree = GTK_TREE_VIEW(gtk_builder_get_object(builder,
- "sensors_list"));
selection = gtk_tree_view_get_selection(tree);
- if (gtk_tree_selection_get_selected(selection, &model, &iter)) {
- GtkTreePath *p = gtk_tree_model_get_path(model, &iter);
- gint *indices = gtk_tree_path_get_indices(p);
-
- pref = ps[*indices];
-
- gtk_tree_path_free(p);
- }
+ pref = NULL;
+ if (gtk_tree_selection_get_selected(selection, &model, &iter))
+ gtk_tree_model_get(model, &iter, COL_SENSOR_PREF, &pref, -1);
return pref;
}
static void on_name_changed(GtkEntry *entry, gpointer data)
{
- struct cb_data *cbdata = data;
struct sensor_pref *p;
const char *str;
str = gtk_entry_get_text(entry);
- p = get_seleted_sensor_pref(cbdata->builder, cbdata->prefs);
+ p = get_selected_sensor_pref(GTK_TREE_VIEW(data));
if (p && strcmp(p->name, str)) {
free(p->name);
}
}
-static void
-on_drawed_toggled(GtkToggleButton *btn, gpointer data)
+static void on_drawed_toggled(GtkToggleButton *btn, gpointer data)
{
- struct cb_data *cbdata = data;
struct sensor_pref *p;
- p = get_seleted_sensor_pref(cbdata->builder, cbdata->prefs);
+ p = get_selected_sensor_pref(GTK_TREE_VIEW(data));
if (p)
p->enabled = gtk_toggle_button_get_active(btn);
}
-static void
-on_alarm_toggled(GtkToggleButton *btn, gpointer data)
+static void on_alarm_toggled(GtkToggleButton *btn, gpointer data)
{
- struct cb_data *cbdata = data;
struct sensor_pref *p;
- p = get_seleted_sensor_pref(cbdata->builder, cbdata->prefs);
+ p = get_selected_sensor_pref(GTK_TREE_VIEW(data));
if (p)
p->alarm_enabled = gtk_toggle_button_get_active(btn);
}
+static void on_appindicator_toggled(GtkToggleButton *btn, gpointer data)
+{
+ struct sensor_pref *p;
+
+ p = get_selected_sensor_pref(GTK_TREE_VIEW(data));
+
+ if (p)
+ p->appindicator_enabled = gtk_toggle_button_get_active(btn);
+}
+
static void on_color_set(GtkColorButton *widget, gpointer data)
{
- struct cb_data *cbdata = data;
struct sensor_pref *p;
GdkColor color;
- p = get_seleted_sensor_pref(cbdata->builder, cbdata->prefs);
+ p = get_selected_sensor_pref(GTK_TREE_VIEW(data));
if (p) {
gtk_color_button_get_color(widget, &color);
}
}
-static void on_temp_limit_changed(GtkSpinButton *btn, gpointer data)
+static void on_alarm_high_threshold_changed(GtkSpinButton *btn, gpointer data)
+{
+ struct sensor_pref *p;
+
+ p = get_selected_sensor_pref(GTK_TREE_VIEW(data));
+
+ if (p)
+ p->alarm_high_threshold = gtk_spin_button_get_value(btn);
+}
+
+static void on_alarm_low_threshold_changed(GtkSpinButton *btn, gpointer data)
{
- struct cb_data *cbdata = data;
struct sensor_pref *p;
- p = get_seleted_sensor_pref(cbdata->builder, cbdata->prefs);
+ p = get_selected_sensor_pref(GTK_TREE_VIEW(data));
if (p)
- p->alarm_limit = gtk_spin_button_get_value(btn);
+ p->alarm_low_threshold = gtk_spin_button_get_value(btn);
}
-static void connect_signals(GtkBuilder *builder, struct cb_data *cbdata)
+static void connect_signals(GtkBuilder *builder, GtkTreeView *tree)
{
g_signal_connect(gtk_builder_get_object(builder, "sensor_name"),
- "changed", G_CALLBACK(on_name_changed), cbdata);
+ "changed", G_CALLBACK(on_name_changed), tree);
g_signal_connect(gtk_builder_get_object(builder, "sensor_draw"),
- "toggled", G_CALLBACK(on_drawed_toggled), cbdata);
+ "toggled", G_CALLBACK(on_drawed_toggled), tree);
g_signal_connect(gtk_builder_get_object(builder, "sensor_color"),
- "color-set", G_CALLBACK(on_color_set), cbdata);
+ "color-set", G_CALLBACK(on_color_set), tree);
g_signal_connect(gtk_builder_get_object(builder, "sensor_alarm"),
- "toggled", G_CALLBACK(on_alarm_toggled), cbdata);
-
- g_signal_connect(gtk_builder_get_object(builder, "sensor_temp_limit"),
- "value-changed", G_CALLBACK(on_temp_limit_changed),
- cbdata);
+ "toggled", G_CALLBACK(on_alarm_toggled), tree);
+
+ g_signal_connect(gtk_builder_get_object(builder,
+ "sensor_alarm_high_threshold"),
+ "value-changed",
+ G_CALLBACK(on_alarm_high_threshold_changed),
+ tree);
+
+ g_signal_connect(gtk_builder_get_object(builder,
+ "sensor_alarm_low_threshold"),
+ "value-changed",
+ G_CALLBACK(on_alarm_low_threshold_changed),
+ tree);
+
+ g_signal_connect(gtk_builder_get_object(builder,
+ "indicator_checkbox"),
+ "toggled",
+ G_CALLBACK(on_appindicator_toggled),
+ tree);
}
static void
-update_pref(struct psensor *s, struct sensor_pref **prefs, GtkBuilder *builder)
+update_pref(struct sensor_pref *p, struct config *cfg, GtkBuilder *builder)
{
- GtkLabel *w_id, *w_type;
+ GtkLabel *w_id, *w_type, *w_high_threshold_unit, *w_low_threshold_unit,
+ *w_chipname;
GtkEntry *w_name;
- GtkToggleButton *w_draw, *w_alarm;
+ GtkToggleButton *w_draw, *w_alarm, *w_appindicator_enabled;
GtkColorButton *w_color;
- GtkSpinButton *w_temp_limit;
+ GtkSpinButton *w_high_threshold, *w_low_threshold;
GdkColor *color;
- struct sensor_pref *p = sensor_pref_get(prefs, s);
+ struct psensor *s;
+ int use_celcius;
+
+ s = p->sensor;
w_id = GTK_LABEL(gtk_builder_get_object(builder, "sensor_id"));
gtk_label_set_text(w_id, s->id);
w_name = GTK_ENTRY(gtk_builder_get_object(builder, "sensor_name"));
gtk_entry_set_text(w_name, p->name);
+ w_chipname = GTK_LABEL(gtk_builder_get_object(builder, "chip_name"));
+ if (s->chip)
+ gtk_label_set_text(w_chipname, s->chip);
+ else
+ gtk_label_set_text(w_chipname, _("Unknown"));
+
w_draw = GTK_TOGGLE_BUTTON(gtk_builder_get_object(builder,
"sensor_draw"));
gtk_toggle_button_set_active(w_draw, p->enabled);
w_alarm = GTK_TOGGLE_BUTTON(gtk_builder_get_object(builder,
"sensor_alarm"));
- w_temp_limit
- = GTK_SPIN_BUTTON(gtk_builder_get_object(builder,
- "sensor_temp_limit"));
-
- if (is_temp_type(s->type)) {
+ w_high_threshold = GTK_SPIN_BUTTON(gtk_builder_get_object
+ (builder,
+ "sensor_alarm_high_threshold"));
+ w_low_threshold = GTK_SPIN_BUTTON(gtk_builder_get_object
+ (builder,
+ "sensor_alarm_low_threshold"));
+
+ w_high_threshold_unit = GTK_LABEL(gtk_builder_get_object
+ (builder,
+ "sensor_alarm_high_threshold_unit"));
+ w_low_threshold_unit = GTK_LABEL(gtk_builder_get_object
+ (builder,
+ "sensor_alarm_low_threshold_unit"));
+
+ use_celcius = cfg->temperature_unit == CELCIUS ? 1 : 0;
+ gtk_label_set_text(w_high_threshold_unit,
+ psensor_type_to_unit_str(s->type,
+ use_celcius));
+ gtk_label_set_text(w_low_threshold_unit,
+ psensor_type_to_unit_str(s->type,
+ use_celcius));
+
+ w_appindicator_enabled = GTK_TOGGLE_BUTTON
+ (gtk_builder_get_object(builder, "indicator_checkbox"));
+
+ if (is_temp_type(s->type) || is_fan_type(s->type)) {
gtk_toggle_button_set_active(w_alarm, p->alarm_enabled);
- gtk_spin_button_set_value(w_temp_limit, p->alarm_limit);
+ gtk_spin_button_set_value(w_high_threshold,
+ p->alarm_high_threshold);
+ gtk_spin_button_set_value(w_low_threshold,
+ p->alarm_low_threshold);
gtk_widget_set_sensitive(GTK_WIDGET(w_alarm), TRUE);
- gtk_widget_set_sensitive(GTK_WIDGET(w_temp_limit), TRUE);
+ gtk_widget_set_sensitive(GTK_WIDGET(w_high_threshold), TRUE);
+ gtk_widget_set_sensitive(GTK_WIDGET(w_low_threshold), TRUE);
} else {
gtk_toggle_button_set_active(w_alarm, 0);
- gtk_spin_button_set_value(w_temp_limit, 0);
+ gtk_spin_button_set_value(w_high_threshold, 0);
+ gtk_spin_button_set_value(w_low_threshold, 0);
gtk_widget_set_sensitive(GTK_WIDGET(w_alarm), FALSE);
- gtk_widget_set_sensitive(GTK_WIDGET(w_temp_limit), FALSE);
+ gtk_widget_set_sensitive(GTK_WIDGET(w_high_threshold), FALSE);
+ gtk_widget_set_sensitive(GTK_WIDGET(w_low_threshold), FALSE);
}
+
+ gtk_toggle_button_set_active(w_appindicator_enabled,
+ p->appindicator_enabled);
}
static void on_changed(GtkTreeSelection *selection, gpointer data)
{
- GtkTreeModel *model;
- GtkTreeIter iter;
struct cb_data *cbdata = data;
struct ui_psensor *ui = cbdata->ui;
+ struct sensor_pref *p;
+ GtkTreeView *tree;
- if (gtk_tree_selection_get_selected(selection, &model, &iter)) {
- GtkTreePath *p = gtk_tree_model_get_path(model, &iter);
- gint *indices = gtk_tree_path_get_indices(p);
- struct psensor *s = *(ui->sensors + *indices);
-
- update_pref(s, cbdata->prefs, cbdata->builder);
-
- gtk_tree_path_free(p);
- }
+ tree = GTK_TREE_VIEW(gtk_builder_get_object(cbdata->builder,
+ "sensors_list"));
+ p = get_selected_sensor_pref(tree);
+ update_pref(p, ui->config, cbdata->builder);
}
static void
select_sensor(struct psensor *s, struct psensor **sensors, GtkTreeView *tree)
{
- struct psensor **s_cur = sensors;
- int i = 0;
- GtkTreePath *p = NULL;
+ struct psensor **s_cur;
+ int i;
+ GtkTreePath *p;
- while (*s_cur) {
+ p = NULL;
+ for (s_cur = sensors, i = 0; *s_cur; s_cur++, i++)
if (s == *s_cur) {
p = gtk_tree_path_new_from_indices(i, -1);
break;
}
- i++;
- s_cur++;
- }
-
if (p) {
GtkTreeSelection *s = gtk_tree_view_get_selection(tree);
}
}
-static void
-apply_prefs(struct sensor_pref **prefs, struct psensor **sensors)
+static void apply_pref(struct sensor_pref *p, int pos, struct config *cfg)
{
- int n = psensor_list_size(sensors);
- int i;
+ struct psensor *s;
- for (i = 0; i < n; i++) {
- struct psensor *s = sensors[i];
- struct sensor_pref *p = prefs[i];
+ s = p->sensor;
- if (strcmp(p->name, s->name)) {
- free(s->name);
- s->name = strdup(p->name);
- config_set_sensor_name(s->id, s->name);
- }
+ if (strcmp(p->name, s->name)) {
+ free(s->name);
+ s->name = strdup(p->name);
+ config_set_sensor_name(s->id, s->name);
+ }
- if (s->enabled != p->enabled) {
- s->enabled = p->enabled;
- config_set_sensor_enabled(s->id, s->enabled);
- }
+ if (s->graph_enabled != p->enabled) {
+ s->graph_enabled = p->enabled;
+ config_set_sensor_enabled(s->id, s->graph_enabled);
+ }
- if (s->alarm_limit != p->alarm_limit) {
- s->alarm_limit = p->alarm_limit;
- config_set_sensor_alarm_limit(s->id,
- s->alarm_limit);
- }
+ if (is_temp_type(s->type) && cfg->temperature_unit == FAHRENHEIT) {
+ s->alarm_high_threshold
+ = fahrenheit_to_celcius(p->alarm_high_threshold);
+ s->alarm_low_threshold
+ = fahrenheit_to_celcius(p->alarm_low_threshold);
+ } else {
+ s->alarm_high_threshold = p->alarm_high_threshold;
+ s->alarm_low_threshold = p->alarm_low_threshold;
+ }
- if (s->alarm_enabled != p->alarm_enabled) {
- s->alarm_enabled = p->alarm_enabled;
- config_set_sensor_alarm_enabled(s->id,
- s->alarm_enabled);
- }
+ config_set_sensor_alarm_high_threshold(s->id, s->alarm_high_threshold);
+ config_set_sensor_alarm_low_threshold(s->id, s->alarm_low_threshold);
+
+ if (s->alarm_enabled != p->alarm_enabled) {
+ s->alarm_enabled = p->alarm_enabled;
+ config_set_sensor_alarm_enabled(s->id, s->alarm_enabled);
+ }
+
+ color_set(s->color, p->color->red, p->color->green, p->color->blue);
+ config_set_sensor_color(s->id, s->color);
+
+ if (s->appindicator_enabled != p->appindicator_enabled) {
+ s->appindicator_enabled = p->appindicator_enabled;
+ config_set_appindicator_enabled(s->id, s->appindicator_enabled);
+ }
- color_set(s->color,
- p->color->red, p->color->green, p->color->blue);
- config_set_sensor_color(s->id, s->color);
+ config_set_sensor_position(s->id, pos);
+}
+
+static void apply_prefs(GtkTreeModel *model, struct config *cfg)
+{
+ gboolean valid;
+ struct sensor_pref *spref;
+ GtkTreeIter iter;
+ int i;
+
+ valid = gtk_tree_model_get_iter_first(model, &iter);
+ i = 0;
+ while (valid) {
+ gtk_tree_model_get(model, &iter, COL_SENSOR_PREF, &spref, -1);
+ apply_pref(spref, i, cfg);
+ valid = gtk_tree_model_iter_next(model, &iter);
+ i++;
}
}
{
GtkDialog *diag;
gint result;
+ guint ok;
GtkBuilder *builder;
- GError *error = NULL;
+ GError *error;
GtkTreeView *w_sensors_list;
- guint ok;
- GtkCellRenderer *renderer;
GtkListStore *store;
- struct psensor **s_cur;
+ struct psensor **s_cur, *s, **ordered_sensors;
GtkTreeSelection *selection;
struct cb_data cbdata;
+ GtkTreeIter iter;
+ struct sensor_pref *spref;
+ gboolean valid;
+ GtkTreeModel *model;
cbdata.ui = ui;
- cbdata.prefs = sensor_pref_list_new(ui->sensors);
builder = gtk_builder_new();
cbdata.builder = builder;
+ error = NULL;
ok = gtk_builder_add_from_file
(builder,
PACKAGE_DATA_DIR G_DIR_SEPARATOR_S "sensor-edit.glade",
return ;
}
- update_pref(sensor, cbdata.prefs, builder);
- connect_signals(builder, &cbdata);
-
w_sensors_list
= GTK_TREE_VIEW(gtk_builder_get_object(builder,
"sensors_list"));
+ connect_signals(builder, w_sensors_list);
- renderer = gtk_cell_renderer_text_new();
- gtk_tree_view_insert_column_with_attributes(w_sensors_list,
- -1,
- _("Sensor Name"),
- renderer,
- "text", 0, NULL);
-
- store = GTK_LIST_STORE(gtk_tree_view_get_model(w_sensors_list));
-
- s_cur = ui->sensors;
- while (*s_cur) {
- GtkTreeIter iter;
- struct psensor *s = *s_cur;
+ store = GTK_LIST_STORE(gtk_builder_get_object(builder,
+ "sensors_liststore"));
+ ordered_sensors = ui_get_sensors_ordered_by_position(ui);
+ for (s_cur = ordered_sensors; *s_cur; s_cur++) {
+ s = *s_cur;
gtk_list_store_append(store, &iter);
- gtk_list_store_set(store, &iter, 0, s->name, -1);
- s_cur++;
+ spref = sensor_pref_new(s, ui->config);
+ gtk_list_store_set(store, &iter,
+ COL_NAME, s->name,
+ COL_SENSOR_PREF, spref,
+ -1);
+
+ if (s == sensor)
+ update_pref(spref, ui->config, builder);
}
selection = gtk_tree_view_get_selection(w_sensors_list);
g_signal_connect(selection, "changed", G_CALLBACK(on_changed), &cbdata);
- select_sensor(sensor, ui->sensors, w_sensors_list);
+ select_sensor(sensor, ordered_sensors, w_sensors_list);
+
+ free(ordered_sensors);
diag = GTK_DIALOG(gtk_builder_get_object(builder, "dialog1"));
result = gtk_dialog_run(diag);
+ model = gtk_tree_view_get_model(w_sensors_list);
+
if (result == GTK_RESPONSE_ACCEPT) {
- apply_prefs(cbdata.prefs, ui->sensors);
- ui_sensorlist_update_sensors_preferences(ui);
+ apply_prefs(model, ui->config);
+ ui_sensorlist_update(ui, 1);
+#if defined(HAVE_APPINDICATOR) || defined(HAVE_APPINDICATOR_029)
+ ui_appindicator_update_menu(ui);
+#endif
+ }
+
+ valid = gtk_tree_model_get_iter_first(model, &iter);
+ while (valid) {
+ gtk_tree_model_get(model, &iter, COL_SENSOR_PREF, &spref, -1);
+ sensor_pref_free(spref);
+ valid = gtk_tree_model_iter_next(model, &iter);
}
g_object_unref(G_OBJECT(builder));
gtk_widget_destroy(GTK_WIDGET(diag));
-
- sensor_pref_list_free(cbdata.prefs);
}
/*
- * Copyright (C) 2010-2012 jeanfi@gmail.com
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
/*
- * Copyright (C) 2010-2012 jeanfi@gmail.com
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
gpointer data)
{
log_debug("cb_activate()");
-
ui_window_show((struct ui_psensor *)data);
}
status = gtk_status_icon_new();
gtk_status_icon_set_from_icon_name(status, ICON);
- gtk_status_icon_set_visible(status, TRUE);
+ ui_status_set_visible(0);
g_signal_connect(G_OBJECT(status),
"popup-menu",
return status;
}
+
+void ui_status_set_visible(unsigned int visible)
+{
+ log_debug("ui_status_set_visible(%d)", visible);
+
+ if (status) {
+ if (visible)
+ gtk_status_icon_set_visible(status, TRUE);
+ else
+ gtk_status_icon_set_visible(status, FALSE);
+ }
+}
/*
- * Copyright (C) 2010-2012 jeanfi@gmail.com
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
/* Whether status icon is supported i.e. visible. */
int is_status_supported();
GtkStatusIcon *ui_status_get_icon(struct ui_psensor *ui);
+/* Whether the statuc icon should be visible.*/
+void ui_status_set_visible(unsigned int visible);
#endif
/*
- * Copyright (C) 2010-2012 jeanfi@gmail.com
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
static unsigned int last_visible = -1;
void ui_unity_launcher_entry_update(struct psensor **sensors,
- unsigned int show)
+ unsigned int show,
+ int use_celcius)
{
+ double v;
+
+
if (!initialized) {
psensor_entry = unity_launcher_entry_get_for_desktop_file
("psensor.desktop");
}
if (sensors && *sensors) {
- double v;
-
v = psensor_get_max_current_value(sensors, SENSOR_TYPE_TEMP);
+ if (!use_celcius)
+ v = celcius_to_fahrenheit(v);
+
unity_launcher_entry_set_count(psensor_entry, v);
}
}
/*
- * Copyright (C) 2010-2012 jeanfi@gmail.com
+ * Copyright (C) 2010-2013 jeanfi@gmail.com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
#include "psensor.h"
void ui_unity_launcher_entry_update(struct psensor **sensors,
- unsigned int show);
+ unsigned int show,
+ int use_celcius);
#endif
check-local: checkpatch.pl
- find $(top_srcdir)/src -name \*.c -exec $(srcdir)/checkpatch.pl -q --no-tree -emacs -f {} \;
- find $(top_srcdir)/src -name \*.h -exec $(srcdir)/checkpatch.pl -q --no-tree -emacs -f {} \;
+ find $(top_srcdir)/src -name \*.c -exec $(srcdir)/checkpatch.pl --ignore SPLIT_STRING --show-types -q --no-tree -emacs -f {} \;
+ find $(top_srcdir)/src -name \*.h -exec $(srcdir)/checkpatch.pl --ignore SPLIT_STRING --show-types -q --no-tree -emacs -f {} \;
-EXTRA_DIST = checkpatch.pl
\ No newline at end of file
+DEFS = -DPACKAGE_DATA_DIR=\"$(pkgdatadir)\" -DLOCALEDIR=\"$(localedir)\" @DEFS@
+
+EXTRA_DIST = checkpatch.pl \
+ test-cppcheck.sh \
+ test-io-dir-list.sh
+
+check_PROGRAMS = test-io-dir-list \
+ test-psensor-type-to-unit-str \
+ test-psensor-value-to-str \
+ test-url-encode \
+ test-url-normalize
+
+AM_CPPFLAGS = -Wall -Werror
+
+LIBS += ../src/lib/libpsensor.a \
+ $(SENSORS_LIBS)
+
+if ATASMART
+LIBS += $(ATASMART_LIBS)
+endif
+
+if GTOP
+LIBS += $(GTOP_LIBS)
+endif
+
+test_io_dir_list_SOURCES = test_io_dir_list.c
+test_psensor_type_to_unit_str_SOURCES = test_psensor_type_to_unit_str.c
+test_psensor_value_to_str_SOURCES = test_psensor_value_to_str.c
+test_url_encode_SOURCES = test_url_encode.c
+test_url_normalize_SOURCES = test_url_normalize.c
+
+TESTS = test-io-dir-list.sh \
+ test-psensor-type-to-unit-str \
+ test-psensor-value-to-str \
+ test-url-encode \
+ test-url-normalize
+
+if CPPCHECK
+TESTS += test-cppcheck.sh
+endif
\ No newline at end of file
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@SET_MAKE@
VPATH = @srcdir@
+am__make_dryrun = \
+ { \
+ am__dry=no; \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
+ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+ *) \
+ for am__flg in $$MAKEFLAGS; do \
+ case $$am__flg in \
+ *=*|--*) ;; \
+ *n*) am__dry=yes; break;; \
+ esac; \
+ done;; \
+ esac; \
+ test $$am__dry = yes; \
+ }
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
+check_PROGRAMS = test-io-dir-list$(EXEEXT) \
+ test-psensor-type-to-unit-str$(EXEEXT) \
+ test-psensor-value-to-str$(EXEEXT) test-url-encode$(EXEEXT) \
+ test-url-normalize$(EXEEXT)
+@ATASMART_TRUE@am__append_1 = $(ATASMART_LIBS)
+@GTOP_TRUE@am__append_2 = $(GTOP_LIBS)
+TESTS = test-io-dir-list.sh test-psensor-type-to-unit-str$(EXEEXT) \
+ test-psensor-value-to-str$(EXEEXT) test-url-encode$(EXEEXT) \
+ test-url-normalize$(EXEEXT) $(am__append_3)
+@CPPCHECK_TRUE@am__append_3 = test-cppcheck.sh
subdir = tests
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
-SOURCES =
-DIST_SOURCES =
+am_test_io_dir_list_OBJECTS = test_io_dir_list.$(OBJEXT)
+test_io_dir_list_OBJECTS = $(am_test_io_dir_list_OBJECTS)
+test_io_dir_list_LDADD = $(LDADD)
+am_test_psensor_type_to_unit_str_OBJECTS = \
+ test_psensor_type_to_unit_str.$(OBJEXT)
+test_psensor_type_to_unit_str_OBJECTS = \
+ $(am_test_psensor_type_to_unit_str_OBJECTS)
+test_psensor_type_to_unit_str_LDADD = $(LDADD)
+am_test_psensor_value_to_str_OBJECTS = \
+ test_psensor_value_to_str.$(OBJEXT)
+test_psensor_value_to_str_OBJECTS = \
+ $(am_test_psensor_value_to_str_OBJECTS)
+test_psensor_value_to_str_LDADD = $(LDADD)
+am_test_url_encode_OBJECTS = test_url_encode.$(OBJEXT)
+test_url_encode_OBJECTS = $(am_test_url_encode_OBJECTS)
+test_url_encode_LDADD = $(LDADD)
+am_test_url_normalize_OBJECTS = test_url_normalize.$(OBJEXT)
+test_url_normalize_OBJECTS = $(am_test_url_normalize_OBJECTS)
+test_url_normalize_LDADD = $(LDADD)
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(test_io_dir_list_SOURCES) \
+ $(test_psensor_type_to_unit_str_SOURCES) \
+ $(test_psensor_value_to_str_SOURCES) \
+ $(test_url_encode_SOURCES) $(test_url_normalize_SOURCES)
+DIST_SOURCES = $(test_io_dir_list_SOURCES) \
+ $(test_psensor_type_to_unit_str_SOURCES) \
+ $(test_psensor_value_to_str_SOURCES) \
+ $(test_url_encode_SOURCES) $(test_url_normalize_SOURCES)
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
APPINDICATOR_CFLAGS = @APPINDICATOR_CFLAGS@
APPINDICATOR_LIBS = @APPINDICATOR_LIBS@
+AR = @AR@
+ATASMART_CFLAGS = @ATASMART_CFLAGS@
+ATASMART_LIBS = @ATASMART_LIBS@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
CURL_CFLAGS = @CURL_CFLAGS@
CURL_LIBS = @CURL_LIBS@
CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
+DEFS = -DPACKAGE_DATA_DIR=\"$(pkgdatadir)\" -DLOCALEDIR=\"$(localedir)\" @DEFS@
DEPDIR = @DEPDIR@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+GCONFTOOL = @GCONFTOOL@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
+GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
+GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GTK_LIBS = @GTK_LIBS@
GTOP_CFLAGS = @GTOP_CFLAGS@
GTOP_LIBS = @GTOP_LIBS@
+HAVE_CPPCHECK = @HAVE_CPPCHECK@
HELP2MAN = @HELP2MAN@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
LIBNOTIFY_CFLAGS = @LIBNOTIFY_CFLAGS@
LIBNOTIFY_LIBS = @LIBNOTIFY_LIBS@
LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
+LIBS = @LIBS@ ../src/lib/libpsensor.a $(SENSORS_LIBS) $(am__append_1) \
+ $(am__append_2)
LTLIBICONV = @LTLIBICONV@
LTLIBINTL = @LTLIBINTL@
LTLIBOBJS = @LTLIBOBJS@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
POSUB = @POSUB@
+PTHREAD_LIBS = @PTHREAD_LIBS@
RANLIB = @RANLIB@
SENSORS_LIBS = @SENSORS_LIBS@
SET_MAKE = @SET_MAKE@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
-EXTRA_DIST = checkpatch.pl
+EXTRA_DIST = checkpatch.pl \
+ test-cppcheck.sh \
+ test-io-dir-list.sh
+
+AM_CPPFLAGS = -Wall -Werror
+test_io_dir_list_SOURCES = test_io_dir_list.c
+test_psensor_type_to_unit_str_SOURCES = test_psensor_type_to_unit_str.c
+test_psensor_value_to_str_SOURCES = test_psensor_value_to_str.c
+test_url_encode_SOURCES = test_url_encode.c
+test_url_normalize_SOURCES = test_url_normalize.c
all: all-am
.SUFFIXES:
+.SUFFIXES: .c .o .obj
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
+
+clean-checkPROGRAMS:
+ -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS)
+test-io-dir-list$(EXEEXT): $(test_io_dir_list_OBJECTS) $(test_io_dir_list_DEPENDENCIES) $(EXTRA_test_io_dir_list_DEPENDENCIES)
+ @rm -f test-io-dir-list$(EXEEXT)
+ $(LINK) $(test_io_dir_list_OBJECTS) $(test_io_dir_list_LDADD) $(LIBS)
+test-psensor-type-to-unit-str$(EXEEXT): $(test_psensor_type_to_unit_str_OBJECTS) $(test_psensor_type_to_unit_str_DEPENDENCIES) $(EXTRA_test_psensor_type_to_unit_str_DEPENDENCIES)
+ @rm -f test-psensor-type-to-unit-str$(EXEEXT)
+ $(LINK) $(test_psensor_type_to_unit_str_OBJECTS) $(test_psensor_type_to_unit_str_LDADD) $(LIBS)
+test-psensor-value-to-str$(EXEEXT): $(test_psensor_value_to_str_OBJECTS) $(test_psensor_value_to_str_DEPENDENCIES) $(EXTRA_test_psensor_value_to_str_DEPENDENCIES)
+ @rm -f test-psensor-value-to-str$(EXEEXT)
+ $(LINK) $(test_psensor_value_to_str_OBJECTS) $(test_psensor_value_to_str_LDADD) $(LIBS)
+test-url-encode$(EXEEXT): $(test_url_encode_OBJECTS) $(test_url_encode_DEPENDENCIES) $(EXTRA_test_url_encode_DEPENDENCIES)
+ @rm -f test-url-encode$(EXEEXT)
+ $(LINK) $(test_url_encode_OBJECTS) $(test_url_encode_LDADD) $(LIBS)
+test-url-normalize$(EXEEXT): $(test_url_normalize_OBJECTS) $(test_url_normalize_DEPENDENCIES) $(EXTRA_test_url_normalize_DEPENDENCIES)
+ @rm -f test-url-normalize$(EXEEXT)
+ $(LINK) $(test_url_normalize_OBJECTS) $(test_url_normalize_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_io_dir_list.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_psensor_type_to_unit_str.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_psensor_value_to_str.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_url_encode.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_url_normalize.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
tags: TAGS
-TAGS:
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
ctags: CTAGS
-CTAGS:
-
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ col="$$grn"; \
+ else \
+ col="$$red"; \
+ fi; \
+ echo "$${col}$$dashes$${std}"; \
+ echo "$${col}$$banner$${std}"; \
+ test -z "$$skipped" || echo "$${col}$$skipped$${std}"; \
+ test -z "$$report" || echo "$${col}$$report$${std}"; \
+ echo "$${col}$$dashes$${std}"; \
+ test "$$failed" -eq 0; \
+ else :; fi
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
fi; \
done
check-am: all-am
- $(MAKE) $(AM_MAKEFLAGS) check-local
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS check-local
check: check-am
all-am: Makefile
installdirs:
installcheck: installcheck-am
install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
mostlyclean-generic:
clean-generic:
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
-clean-am: clean-generic mostlyclean-am
+clean-am: clean-checkPROGRAMS clean-generic mostlyclean-am
distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
-rm -f Makefile
-distclean-am: clean-am distclean-generic
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
dvi: dvi-am
installcheck-am:
maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
-mostlyclean-am: mostlyclean-generic
+mostlyclean-am: mostlyclean-compile mostlyclean-generic
pdf: pdf-am
.MAKE: check-am install-am install-strip
-.PHONY: all all-am check check-am check-local clean clean-generic \
- distclean distclean-generic distdir dvi dvi-am html html-am \
- info info-am install install-am install-data install-data-am \
- install-dvi install-dvi-am install-exec install-exec-am \
- install-html install-html-am install-info install-info-am \
- install-man install-pdf install-pdf-am install-ps \
- install-ps-am install-strip installcheck installcheck-am \
- installdirs maintainer-clean maintainer-clean-generic \
- mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am check-local \
+ clean clean-checkPROGRAMS clean-generic ctags distclean \
+ distclean-compile distclean-generic distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-ps install-ps-am install-strip \
+ installcheck installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
uninstall-am
check-local: checkpatch.pl
- find $(top_srcdir)/src -name \*.c -exec $(srcdir)/checkpatch.pl -q --no-tree -emacs -f {} \;
- find $(top_srcdir)/src -name \*.h -exec $(srcdir)/checkpatch.pl -q --no-tree -emacs -f {} \;
+ find $(top_srcdir)/src -name \*.c -exec $(srcdir)/checkpatch.pl --ignore SPLIT_STRING --show-types -q --no-tree -emacs -f {} \;
+ find $(top_srcdir)/src -name \*.h -exec $(srcdir)/checkpatch.pl --ignore SPLIT_STRING --show-types -q --no-tree -emacs -f {} \;
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
#!/usr/bin/perl -w
-
-# This script has been copied from Linux Kernel sources.
-#
# (c) 2001, Dave Jones. (the file handling bit)
# (c) 2005, Joel Schopp <jschopp@austin.ibm.com> (the ugly bit)
# (c) 2007,2008, Andy Whitcroft <apw@uk.ibm.com> (new conditions, test suite)
our $Member = qr{->$Ident|\.$Ident|\[[^]]*\]};
our $Lval = qr{$Ident(?:$Member)*};
-our $Constant = qr{(?:[0-9]+|0x[0-9a-fA-F]+)[UL]*};
+our $Constant = qr{(?i:(?:[0-9]+|0x[0-9a-f]+)[ul]*)};
our $Assignment = qr{(?:\*\=|/=|%=|\+=|-=|<<=|>>=|&=|\^=|\|=|=)};
our $Compare = qr{<=|>=|==|!=|<|>};
our $Operators = qr{
$NonptrType = qr{
(?:$Modifier\s+|const\s+)*
(?:
- (?:typeof|__typeof__)\s*\(\s*\**\s*$Ident\s*\)|
+ (?:typeof|__typeof__)\s*\([^\)]*\)|
(?:$typeTypedefs\b)|
(?:${all}\b)
)
}x;
$Type = qr{
$NonptrType
- (?:[\s\*]+\s*const|[\s\*]+|(?:\s*\[\s*\])+)?
+ (?:(?:\s|\*|\[\])+\s*const|(?:\s|\*|\[\])+|(?:\s*\[\s*\])+)?
(?:\s+$Inline|\s+$Modifier)*
}x;
$Declare = qr{(?:$Storage\s+)?$Type};
}
build_types();
-our $match_balanced_parentheses = qr/(\((?:[^\(\)]+|(-1))*\))/;
our $Typecast = qr{\s*(\(\s*$NonptrType\s*\)){0,1}\s*};
-our $LvalOrFunc = qr{($Lval)\s*($match_balanced_parentheses{0,1})\s*};
+
+# Using $balanced_parens, $LvalOrFunc, or $FuncArg
+# requires at least perl version v5.10.0
+# Any use must be runtime checked with $^V
+
+our $balanced_parens = qr/(\((?:[^\(\)]++|(?-1))*\))/;
+our $LvalOrFunc = qr{($Lval)\s*($balanced_parens{0,1})\s*};
+our $FuncArg = qr{$Typecast{0,1}($LvalOrFunc|$Constant)};
sub deparenthesize {
my ($string) = @_;
if ($off >= $len) {
last;
}
+ if ($level == 0 && substr($blk, $off) =~ /^.\s*#\s*define/) {
+ $level++;
+ $type = '#';
+ }
}
$p = $c;
$c = substr($blk, $off, 1);
last;
}
}
+ # Preprocessor commands end at the newline unless escaped.
+ if ($type eq '#' && $c eq "\n" && $p ne "\\") {
+ $level--;
+ $type = '';
+ $off++;
+ last;
+ }
$off++;
}
# We are truly at the end, so shuffle to the next line.
} elsif ($cur =~ /^(\(\s*$Type\s*)\)/ && $av_pending eq '_') {
print "CAST($1)\n" if ($dbg_values > 1);
push(@av_paren_type, $type);
- $type = 'C';
+ $type = 'c';
} elsif ($cur =~ /^($Type)\s*(?:$Ident|,|\)|\(|\s*$)/) {
print "DECLARE($1)\n" if ($dbg_values > 1);
case|
else|
asm|__asm__|
- do
+ do|
+ \#|
+ \#\#|
)(?:\s|$)|
^(?:typedef|struct|enum)\b
)}x;
}
}
+sub pos_last_openparen {
+ my ($line) = @_;
+
+ my $pos = 0;
+
+ my $opens = $line =~ tr/\(/\(/;
+ my $closes = $line =~ tr/\)/\)/;
+
+ my $last_openparen = 0;
+
+ if (($opens == 0) || ($closes >= $opens)) {
+ return -1;
+ }
+
+ my $len = length($line);
+
+ for ($pos = 0; $pos < $len; $pos++) {
+ my $string = substr($line, $pos);
+ if ($string =~ /^($FuncArg|$balanced_parens)/) {
+ $pos += length($1) - 1;
+ } elsif (substr($line, $pos, 1) eq '(') {
+ $last_openparen = $pos;
+ } elsif (index($string, '(') == -1) {
+ last;
+ }
+ }
+
+ return $last_openparen + 1;
+}
+
sub process {
my $filename = shift;
my %suppress_ifbraces;
my %suppress_whiletrailers;
my %suppress_export;
+ my $suppress_statement = 0;
# Pre-scan the patch sanitizing the lines.
# Pre-scan the patch looking for any __setup documentation.
%suppress_ifbraces = ();
%suppress_whiletrailers = ();
%suppress_export = ();
+ $suppress_statement = 0;
next;
# track the line number as we move through the hunk, note that
if ($line =~ /^diff --git.*?(\S+)$/) {
$realfile = $1;
$realfile =~ s@^([^/]*)/@@;
+ $in_commit_log = 0;
} elsif ($line =~ /^\+\+\+\s+(\S+)/) {
$realfile = $1;
$realfile =~ s@^([^/]*)/@@;
+ $in_commit_log = 0;
$p1_prefix = $1;
if (!$file && $tree && $p1_prefix ne '' &&
}
# Check signature styles
- if ($line =~ /^(\s*)($signature_tags)(\s*)(.*)/) {
+ if (!$in_header_lines &&
+ $line =~ /^(\s*)($signature_tags)(\s*)(.*)/) {
my $space_before = $1;
my $sign_off = $2;
my $space_after = $3;
# Check if it's the start of a commit log
# (not a header line and we haven't seen the patch filename)
if ($in_header_lines && $realfile =~ /^$/ &&
- $rawline !~ /^(commit\b|from\b|\w+:).+$/i) {
+ $rawline !~ /^(commit\b|from\b|[\w-]+:).+$/i) {
$in_header_lines = 0;
$in_commit_log = 1;
}
# Only applies when adding the entry originally, after that we do not have
# sufficient context to determine whether it is indeed long enough.
if ($realfile =~ /Kconfig/ &&
- $line =~ /\+\s*(?:---)?help(?:---)?$/) {
+ $line =~ /.\s*config\s+/) {
my $length = 0;
my $cnt = $realcnt;
my $ln = $linenr + 1;
my $f;
+ my $is_start = 0;
my $is_end = 0;
- while ($cnt > 0 && defined $lines[$ln - 1]) {
+ for (; $cnt > 0 && defined $lines[$ln - 1]; $ln++) {
$f = $lines[$ln - 1];
$cnt-- if ($lines[$ln - 1] !~ /^-/);
$is_end = $lines[$ln - 1] =~ /^\+/;
- $ln++;
next if ($f =~ /^-/);
+
+ if ($lines[$ln - 1] =~ /.\s*(?:bool|tristate)\s*\"/) {
+ $is_start = 1;
+ } elsif ($lines[$ln - 1] =~ /.\s*(?:---)?help(?:---)?$/) {
+ $length = -1;
+ }
+
$f =~ s/^.//;
$f =~ s/#.*//;
$f =~ s/^\s+//;
$length++;
}
WARN("CONFIG_DESCRIPTION",
- "please write a paragraph that describes the config symbol fully\n" . $herecurr) if ($is_end && $length < 4);
- #print "is_end<$is_end> length<$length>\n";
+ "please write a paragraph that describes the config symbol fully\n" . $herecurr) if ($is_start && $is_end && $length < 4);
+ #print "is_start<$is_start> is_end<$is_end> length<$length>\n";
}
if (($realfile =~ /Makefile.*/ || $realfile =~ /Kbuild.*/) &&
"line over 80 characters\n" . $herecurr);
}
+# Check for user-visible strings broken across lines, which breaks the ability
+# to grep for the string. Limited to strings used as parameters (those
+# following an open parenthesis), which almost completely eliminates false
+# positives, as well as warning only once per parameter rather than once per
+# line of the string. Make an exception when the previous string ends in a
+# newline (multiple lines in one string constant) or \n\t (common in inline
+# assembly to indent the instruction on the following line).
+ if ($line =~ /^\+\s*"/ &&
+ $prevline =~ /"\s*$/ &&
+ $prevline =~ /\(/ &&
+ $prevrawline !~ /\\n(?:\\t)*"\s*$/) {
+ WARN("SPLIT_STRING",
+ "quoted string split across lines\n" . $hereprev);
+ }
+
# check for spaces before a quoted newline
if ($rawline =~ /^.*\".*\s\\n/) {
WARN("QUOTED_WHITESPACE_BEFORE_NEWLINE",
"please, no space before tabs\n" . $herevet);
}
+# check for && or || at the start of a line
+ if ($rawline =~ /^\+\s*(&&|\|\|)/) {
+ CHK("LOGICAL_CONTINUATIONS",
+ "Logical continuations should be on the previous line\n" . $hereprev);
+ }
+
+# check multi-line statement indentation matches previous line
+ if ($^V && $^V ge 5.10.0 &&
+ $prevline =~ /^\+(\t*)(if \(|$Ident\().*(\&\&|\|\||,)\s*$/) {
+ $prevline =~ /^\+(\t*)(.*)$/;
+ my $oldindent = $1;
+ my $rest = $2;
+
+ my $pos = pos_last_openparen($rest);
+ if ($pos >= 0) {
+ $line =~ /^\+([ \t]*)/;
+ my $newindent = $1;
+
+ my $goodtabindent = $oldindent .
+ "\t" x ($pos / 8) .
+ " " x ($pos % 8);
+ my $goodspaceindent = $oldindent . " " x $pos;
+
+ if ($newindent ne $goodtabindent &&
+ $newindent ne $goodspaceindent) {
+ CHK("PARENTHESIS_ALIGNMENT",
+ "Alignment should match open parenthesis\n" . $hereprev);
+ }
+ }
+ }
+
+ if ($line =~ /^\+.*\*[ \t]*\)[ \t]+/) {
+ CHK("SPACING",
+ "No space is necessary after a cast\n" . $hereprev);
+ }
+
# check for spaces at the beginning of a line.
# Exceptions:
# 1) within comments
# Check for potential 'bare' types
my ($stat, $cond, $line_nr_next, $remain_next, $off_next,
$realline_next);
- if ($realcnt && $line =~ /.\s*\S/) {
+#print "LINE<$line>\n";
+ if ($linenr >= $suppress_statement &&
+ $realcnt && $line =~ /.\s*\S/) {
($stat, $cond, $line_nr_next, $remain_next, $off_next) =
ctx_statement_block($linenr, $realcnt, 0);
$stat =~ s/\n./\n /g;
$cond =~ s/\n./\n /g;
+#print "linenr<$linenr> <$stat>\n";
+ # If this statement has no statement boundaries within
+ # it there is no point in retrying a statement scan
+ # until we hit end of it.
+ my $frag = $stat; $frag =~ s/;+\s*$//;
+ if ($frag !~ /(?:{|;)/) {
+#print "skip<$line_nr_next>\n";
+ $suppress_statement = $line_nr_next;
+ }
+
# Find the real next line.
$realline_next = $line_nr_next;
if (defined $realline_next &&
my $pre_ctx = "$1$2";
my ($level, @ctx) = ctx_statement_level($linenr, $realcnt, 0);
+
+ if ($line =~ /^\+\t{6,}/) {
+ WARN("DEEP_INDENTATION",
+ "Too many leading tabs - consider code refactoring\n" . $herecurr);
+ }
+
my $ctx_cnt = $realcnt - $#ctx - 1;
my $ctx = join("\n", @ctx);
# Check relative indent for conditionals and blocks.
if ($line =~ /\b(?:(?:if|while|for)\s*\(|do\b)/ && $line !~ /^.\s*#/ && $line !~ /\}\s*while\s*/) {
+ ($stat, $cond, $line_nr_next, $remain_next, $off_next) =
+ ctx_statement_block($linenr, $realcnt, 0)
+ if (!defined $stat);
my ($s, $c) = ($stat, $cond);
substr($s, 0, length($c), '');
# XXX(foo);
# EXPORT_SYMBOL(something_foo);
my $name = $1;
- if ($stat =~ /^.([A-Z_]+)\s*\(\s*($Ident)/ &&
+ if ($stat =~ /^(?:.\s*}\s*\n)?.([A-Z_]+)\s*\(\s*($Ident)/ &&
$name =~ /^${Ident}_$2/) {
#print "FOO C name<$name>\n";
$suppress_export{$realline_next} = 1;
# * goes on variable not on type
# (char*[ const])
- if ($line =~ m{\($NonptrType(\s*(?:$Modifier\b\s*|\*\s*)+)\)}) {
- my ($from, $to) = ($1, $1);
+ while ($line =~ m{(\($NonptrType(\s*(?:$Modifier\b\s*|\*\s*)+)\))}g) {
+ #print "AA<$1>\n";
+ my ($from, $to) = ($2, $2);
# Should start with a space.
$to =~ s/^(\S)/ $1/;
ERROR("POINTER_LOCATION",
"\"(foo$from)\" should be \"(foo$to)\"\n" . $herecurr);
}
- } elsif ($line =~ m{\b$NonptrType(\s*(?:$Modifier\b\s*|\*\s*)+)($Ident)}) {
- my ($from, $to, $ident) = ($1, $1, $2);
+ }
+ while ($line =~ m{(\b$NonptrType(\s*(?:$Modifier\b\s*|\*\s*)+)($Ident))}g) {
+ #print "BB<$1>\n";
+ my ($from, $to, $ident) = ($2, $2, $3);
# Should start with a space.
$to =~ s/^(\S)/ $1/;
my ($where, $prefix) = ($-[1], $1);
if ($prefix !~ /$Type\s+$/ &&
($where != 0 || $prefix !~ /^.\s+$/) &&
- $prefix !~ /{\s+$/) {
+ $prefix !~ /[{,]\s+$/) {
ERROR("BRACKET_SPACE",
"space prohibited before open square bracket '['\n" . $herecurr);
}
# Flatten any parentheses
$value =~ s/\(/ \(/g;
$value =~ s/\)/\) /g;
- while ($value =~ s/\[[^\{\}]*\]/1/ ||
+ while ($value =~ s/\[[^\[\]]*\]/1/ ||
$value !~ /(?:$Ident|-?$Constant)\s*
$Compare\s*
(?:$Ident|-?$Constant)/x &&
}
}
-# typecasts on min/max could be min_t/max_t
- if ($line =~ /^\+(?:.*?)\b(min|max)\s*\($Typecast{0,1}($LvalOrFunc)\s*,\s*$Typecast{0,1}($LvalOrFunc)\s*\)/) {
- if (defined $2 || defined $8) {
- my $call = $1;
- my $cast1 = deparenthesize($2);
- my $arg1 = $3;
- my $cast2 = deparenthesize($8);
- my $arg2 = $9;
- my $cast;
-
- if ($cast1 ne "" && $cast2 ne "") {
- $cast = "$cast1 or $cast2";
- } elsif ($cast1 ne "") {
- $cast = $cast1;
- } else {
- $cast = $cast2;
- }
- WARN("MINMAX",
- "$call() should probably be ${call}_t($cast, $arg1, $arg2)\n" . $herecurr);
- }
- }
-
# Need a space before open parenthesis after if, while etc
if ($line=~/\b(if|while|for|switch)\(/) {
ERROR("SPACING", "space required before the open parenthesis '('\n" . $herecurr);
# Check for illegal assignment in if conditional -- and check for trailing
# statements after the conditional.
if ($line =~ /do\s*(?!{)/) {
+ ($stat, $cond, $line_nr_next, $remain_next, $off_next) =
+ ctx_statement_block($linenr, $realcnt, 0)
+ if (!defined $stat);
my ($stat_next) = ctx_statement_block($line_nr_next,
$remain_next, $off_next);
$stat_next =~ s/\n./\n /g;
my $cnt = $realcnt;
my ($off, $dstat, $dcond, $rest);
my $ctx = '';
-
- my $args = defined($1);
-
- # Find the end of the macro and limit our statement
- # search to that.
- while ($cnt > 0 && defined $lines[$ln - 1] &&
- $lines[$ln - 1] =~ /^(?:-|..*\\$)/)
- {
- $ctx .= $rawlines[$ln - 1] . "\n";
- $cnt-- if ($lines[$ln - 1] !~ /^-/);
- $ln++;
- }
- $ctx .= $rawlines[$ln - 1];
-
($dstat, $dcond, $ln, $cnt, $off) =
- ctx_statement_block($linenr, $ln - $linenr + 1, 0);
+ ctx_statement_block($linenr, $realcnt, 0);
+ $ctx = $dstat;
#print "dstat<$dstat> dcond<$dcond> cnt<$cnt> off<$off>\n";
#print "LINE<$lines[$ln-1]> len<" . length($lines[$ln-1]) . "\n";
- # Extract the remainder of the define (if any) and
- # rip off surrounding spaces, and trailing \'s.
- $rest = '';
- while ($off != 0 || ($cnt > 0 && $rest =~ /\\\s*$/)) {
- #print "ADDING cnt<$cnt> $off <" . substr($lines[$ln - 1], $off) . "> rest<$rest>\n";
- if ($off != 0 || $lines[$ln - 1] !~ /^-/) {
- $rest .= substr($lines[$ln - 1], $off) . "\n";
- $cnt--;
- }
- $ln++;
- $off = 0;
- }
- $rest =~ s/\\\n.//g;
- $rest =~ s/^\s*//s;
- $rest =~ s/\s*$//s;
-
- # Clean up the original statement.
- if ($args) {
- substr($dstat, 0, length($dcond), '');
- } else {
- $dstat =~ s/^.\s*\#\s*define\s+$Ident\s*//;
- }
+ $dstat =~ s/^.\s*\#\s*define\s+$Ident(?:\([^\)]*\))?\s*//;
$dstat =~ s/$;//g;
$dstat =~ s/\\\n.//g;
$dstat =~ s/^\s*//s;
# Flatten any parentheses and braces
while ($dstat =~ s/\([^\(\)]*\)/1/ ||
$dstat =~ s/\{[^\{\}]*\}/1/ ||
- $dstat =~ s/\[[^\{\}]*\]/1/)
+ $dstat =~ s/\[[^\[\]]*\]/1/)
+ {
+ }
+
+ # Flatten any obvious string concatentation.
+ while ($dstat =~ s/("X*")\s*$Ident/$1/ ||
+ $dstat =~ s/$Ident\s*("X*")/$1/)
{
}
^\"|\"$
}x;
#print "REST<$rest> dstat<$dstat> ctx<$ctx>\n";
- if ($rest ne '' && $rest ne ',') {
- if ($rest !~ /while\s*\(/ &&
- $dstat !~ /$exceptions/)
- {
- ERROR("MULTISTATEMENT_MACRO_USE_DO_WHILE",
- "Macros with multiple statements should be enclosed in a do - while loop\n" . "$here\n$ctx\n");
+ if ($dstat ne '' &&
+ $dstat !~ /^(?:$Ident|-?$Constant),$/ && # 10, // foo(),
+ $dstat !~ /^(?:$Ident|-?$Constant);$/ && # foo();
+ $dstat !~ /^[!~-]?(?:$Ident|$Constant)$/ && # 10 // foo() // !foo // ~foo // -foo
+ $dstat !~ /^'X'$/ && # character constants
+ $dstat !~ /$exceptions/ &&
+ $dstat !~ /^\.$Ident\s*=/ && # .foo =
+ $dstat !~ /^do\s*$Constant\s*while\s*$Constant;?$/ && # do {...} while (...); // do {...} while (...)
+ $dstat !~ /^for\s*$Constant$/ && # for (...)
+ $dstat !~ /^for\s*$Constant\s+(?:$Ident|-?$Constant)$/ && # for (...) bar()
+ $dstat !~ /^do\s*{/ && # do {...
+ $dstat !~ /^\({/) # ({...
+ {
+ $ctx =~ s/\n*$//;
+ my $herectx = $here . "\n";
+ my $cnt = statement_rawlines($ctx);
+
+ for (my $n = 0; $n < $cnt; $n++) {
+ $herectx .= raw_line($linenr, $n) . "\n";
}
- } elsif ($ctx !~ /;/) {
- if ($dstat ne '' &&
- $dstat !~ /^(?:$Ident|-?$Constant)$/ &&
- $dstat !~ /$exceptions/ &&
- $dstat !~ /^\.$Ident\s*=/ &&
- $dstat =~ /$Operators/)
- {
+ if ($dstat =~ /;/) {
+ ERROR("MULTISTATEMENT_MACRO_USE_DO_WHILE",
+ "Macros with multiple statements should be enclosed in a do - while loop\n" . "$herectx");
+ } else {
ERROR("COMPLEX_MACRO",
- "Macros with complex values should be enclosed in parenthesis\n" . "$here\n$ctx\n");
+ "Macros with complex values should be enclosed in parenthesis\n" . "$herectx");
}
}
}
#print "chunks<$#chunks> linenr<$linenr> endln<$endln> level<$level>\n";
#print "APW: <<$chunks[1][0]>><<$chunks[1][1]>>\n";
if ($#chunks > 0 && $level == 0) {
- my $allowed = 0;
+ my @allowed = ();
+ my $allow = 0;
my $seen = 0;
my $herectx = $here . "\n";
my $ln = $linenr - 1;
my ($whitespace) = ($cond =~ /^((?:\s*\n[+-])*\s*)/s);
my $offset = statement_rawlines($whitespace) - 1;
+ $allowed[$allow] = 0;
#print "COND<$cond> whitespace<$whitespace> offset<$offset>\n";
# We have looked at and allowed this specific line.
$seen++ if ($block =~ /^\s*{/);
- #print "cond<$cond> block<$block> allowed<$allowed>\n";
+ #print "cond<$cond> block<$block> allowed<$allowed[$allow]>\n";
if (statement_lines($cond) > 1) {
#print "APW: ALLOWED: cond<$cond>\n";
- $allowed = 1;
+ $allowed[$allow] = 1;
}
if ($block =~/\b(?:if|for|while)\b/) {
#print "APW: ALLOWED: block<$block>\n";
- $allowed = 1;
+ $allowed[$allow] = 1;
}
if (statement_block_size($block) > 1) {
#print "APW: ALLOWED: lines block<$block>\n";
- $allowed = 1;
+ $allowed[$allow] = 1;
}
+ $allow++;
}
- if ($seen && !$allowed) {
- WARN("BRACES",
- "braces {} are not necessary for any arm of this statement\n" . $herectx);
+ if ($seen) {
+ my $sum_allowed = 0;
+ foreach (@allowed) {
+ $sum_allowed += $_;
+ }
+ if ($sum_allowed == 0) {
+ WARN("BRACES",
+ "braces {} are not necessary for any arm of this statement\n" . $herectx);
+ } elsif ($sum_allowed != $allow &&
+ $seen != $allow) {
+ CHK("BRACES",
+ "braces {} should be used on all arms of this statement\n" . $herectx);
+ }
}
}
}
"__aligned(size) is preferred over __attribute__((aligned(size)))\n" . $herecurr);
}
+# Check for __attribute__ format(printf, prefer __printf
+ if ($line =~ /\b__attribute__\s*\(\s*\(\s*format\s*\(\s*printf/) {
+ WARN("PREFER_PRINTF",
+ "__printf(string-index, first-to-check) is preferred over __attribute__((format(printf, string-index, first-to-check)))\n" . $herecurr);
+ }
+
+# Check for __attribute__ format(scanf, prefer __scanf
+ if ($line =~ /\b__attribute__\s*\(\s*\(\s*format\s*\(\s*scanf\b/) {
+ WARN("PREFER_SCANF",
+ "__scanf(string-index, first-to-check) is preferred over __attribute__((format(scanf, string-index, first-to-check)))\n" . $herecurr);
+ }
+
# check for sizeof(&)
if ($line =~ /\bsizeof\s*\(\s*\&/) {
WARN("SIZEOF_ADDRESS",
"Avoid line continuations in quoted strings\n" . $herecurr);
}
+# Check for misused memsets
+ if ($^V && $^V ge 5.10.0 &&
+ defined $stat &&
+ $stat =~ /^\+(?:.*?)\bmemset\s*\(\s*$FuncArg\s*,\s*$FuncArg\s*\,\s*$FuncArg\s*\)/s) {
+
+ my $ms_addr = $2;
+ my $ms_val = $7;
+ my $ms_size = $12;
+
+ if ($ms_size =~ /^(0x|)0$/i) {
+ ERROR("MEMSET",
+ "memset to 0's uses 0 as the 2nd argument, not the 3rd\n" . "$here\n$stat\n");
+ } elsif ($ms_size =~ /^(0x|)1$/i) {
+ WARN("MEMSET",
+ "single byte memset is suspicious. Swapped 2nd/3rd argument?\n" . "$here\n$stat\n");
+ }
+ }
+
+# typecasts on min/max could be min_t/max_t
+ if ($^V && $^V ge 5.10.0 &&
+ defined $stat &&
+ $stat =~ /^\+(?:.*?)\b(min|max)\s*\(\s*$FuncArg\s*,\s*$FuncArg\s*\)/) {
+ if (defined $2 || defined $7) {
+ my $call = $1;
+ my $cast1 = deparenthesize($2);
+ my $arg1 = $3;
+ my $cast2 = deparenthesize($7);
+ my $arg2 = $8;
+ my $cast;
+
+ if ($cast1 ne "" && $cast2 ne "" && $cast1 ne $cast2) {
+ $cast = "$cast1 or $cast2";
+ } elsif ($cast1 ne "") {
+ $cast = $cast1;
+ } else {
+ $cast = $cast2;
+ }
+ WARN("MINMAX",
+ "$call() should probably be ${call}_t($cast, $arg1, $arg2)\n" . "$here\n$stat\n");
+ }
+ }
+
# check for new externs in .c files.
if ($realfile =~ /\.c$/ && defined $stat &&
$stat =~ /^.\s*(?:extern\s+)?$Type\s+($Ident)(\s*)\(/s)
"__func__ should be used instead of gcc specific __FUNCTION__\n" . $herecurr);
}
+# check for use of yield()
+ if ($line =~ /\byield\s*\(\s*\)/) {
+ WARN("YIELD",
+ "Using yield() is generally wrong. See yield() kernel-doc (sched/core.c)\n" . $herecurr);
+ }
+
# check for semaphores initialized locked
if ($line =~ /^.\s*sema_init.+,\W?0\W?\)/) {
WARN("CONSIDER_COMPLETION",
"consider using a completion\n" . $herecurr);
-
}
+
# recommend kstrto* over simple_strto* and strict_strto*
if ($line =~ /\b((simple|strict)_(strto(l|ll|ul|ull)))\s*\(/) {
WARN("CONSIDER_KSTRTO",
"$1 is obsolete, use k$3 instead\n" . $herecurr);
}
+
# check for __initcall(), use device_initcall() explicitly please
if ($line =~ /^.\s*__initcall\s*\(/) {
WARN("USE_DEVICE_INITCALL",
"please use device_initcall() instead of __initcall()\n" . $herecurr);
}
+
# check for various ops structs, ensure they are const.
my $struct_ops = qr{acpi_dock_ops|
address_space_operations|
WARN("EXPORTED_WORLD_WRITABLE",
"Exporting world writable files is usually an error. Consider more restrictive permissions.\n" . $herecurr);
}
-
- # Check for memset with swapped arguments
- if ($line =~ /memset.*\,(\ |)(0x|)0(\ |0|)\);/) {
- ERROR("MEMSET",
- "memset size is 3rd argument, not the second.\n" . $herecurr);
- }
}
# If we have no input at all, then there is nothing to report on
}
if ($quiet == 0) {
+
+ if ($^V lt 5.10.0) {
+ print("NOTE: perl $^V is not modern enough to detect all possible issues.\n");
+ print("An upgrade to at least perl v5.10.0 is suggested.\n\n");
+ }
+
# If there were whitespace errors which cleanpatch can fix
# then suggest that.
if ($rpt_cleaners) {
}
}
- if (keys %ignore_type) {
+ if ($quiet == 0 && keys %ignore_type) {
print "NOTE: Ignored message types:";
foreach my $ignore (sort keys %ignore_type) {
print " $ignore";
}
- print "\n";
- print "\n" if ($quiet == 0);
+ print "\n\n";
}
if ($clean == 1 && $quiet == 0) {
--- /dev/null
+#!/bin/sh
+
+EIDS=performance,portability
+ROOTDIR="$srcdir/.."
+INCLUDE_OPTS="-q -f -I$ROOTDIR/src/lib -I$ROOTDIR/src -I$ROOTDIR -I$ROOTDIR/.."
+
+cppcheck $ROOTDIR/src $INCLUDE_OPTS --enable=$EIDS --quiet --error-exitcode=1 || exit 1
--- /dev/null
+#/bin/sh
+
+mkdir -p data/empty_dir
+mkdir -p data/2files_dir
+touch data/2files_dir/one
+touch data/2files_dir/two
+
+./test-io-dir-list || exit 1
+
+rm data/2files_dir/one data/2files_dir/two
+rmdir data/empty_dir data/2files_dir
\ No newline at end of file
--- /dev/null
+/*
+ * Copyright (C) 2010-2011 jeanfi@gmail.com
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301 USA
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+#include "../src/lib/pio.h"
+
+static int test_empty_dir()
+{
+ int ret;
+ char **paths;
+
+ paths = dir_list("data/empty_dir", NULL);
+
+ ret = 0;
+ if (paths) {
+ if (*paths) {
+ ret = 1;
+ fprintf(stderr, "ERROR: list not empty %s\n", *paths);
+ }
+
+ paths_free(paths);
+ }
+
+ return ret;
+}
+
+static int test_2files_dir()
+{
+ int ret, one, two;
+ char **paths, **cur;
+
+ paths = dir_list("data/2files_dir", NULL);
+
+ one = two = ret = 0;
+
+ if (!paths) {
+ fprintf(stderr, "ERROR: list is NULL\n");
+ return 1;
+ }
+
+ cur = paths;
+ while(*cur) {
+ if (!strcmp(*cur, "data/2files_dir/one")) {
+ one++;
+ } else if (!strcmp(*cur, "data/2files_dir/two")) {
+ two++;
+ } else {
+ fprintf(stderr, "ERROR: wrong item: %s\n", *cur);
+
+ ret = 1;
+ }
+
+ cur++;
+ }
+
+ if (!ret && one == 1 && two == 1)
+ ret = 0;
+ else
+ ret = 1;
+
+ paths_free(paths);
+
+ return ret;
+}
+
+static int tests_dir_list() {
+ int failures;
+
+ failures = test_empty_dir();
+
+ failures += test_2files_dir();
+
+ return failures;
+}
+
+int main(int argc, char **argv)
+{
+ int failures;
+
+ failures = tests_dir_list();
+
+ if (failures)
+ exit(EXIT_FAILURE);
+ else
+ exit(EXIT_SUCCESS);
+}
--- /dev/null
+/*
+ * Copyright (C) 2010-2011 jeanfi@gmail.com
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301 USA
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/stat.h>
+
+#include <locale.h>
+#include <libintl.h>
+#define _(str) gettext(str)
+
+#include "../src/lib/psensor.h"
+
+static int
+test_fct(unsigned int type, int use_celcius, const char *ref)
+{
+ const char *u;
+
+ u = psensor_type_to_unit_str(type, use_celcius);
+ if (strcmp(ref, u)) {
+ fprintf(stderr, "returns: %s expected: %s\n", u, ref);
+ return 0;
+ }
+
+ return 1;
+}
+
+static int test() {
+ int failures;
+
+ failures = 0;
+
+ if (!test_fct(SENSOR_TYPE_TEMP, 1, "\302\260C"))
+ failures++;
+
+ if (!test_fct(SENSOR_TYPE_TEMP, 0, "\302\260F"))
+ failures++;
+
+ if (!test_fct(SENSOR_TYPE_LMSENSOR | SENSOR_TYPE_TEMP, 1, "\302\260C"))
+ failures++;
+
+ if (!test_fct(SENSOR_TYPE_LMSENSOR | SENSOR_TYPE_TEMP, 0, "\302\260F"))
+ failures++;
+
+ if (!test_fct(SENSOR_TYPE_FAN, 0, _("RPM")))
+ failures++;
+
+ return failures;
+}
+
+int main(int argc, char **argv)
+{
+ int failures;
+
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+
+ failures = test();
+
+ if (failures)
+ exit(EXIT_FAILURE);
+ else
+ exit(EXIT_SUCCESS);
+}
--- /dev/null
+/*
+ * Copyright (C) 2010-2011 jeanfi@gmail.com
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301 USA
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/stat.h>
+
+#include "../src/lib/psensor.h"
+
+#define CELCIUS "\302\260C"
+#define FAHRENHEIT "\302\260F"
+
+static int
+test_psensor_value_to_str(unsigned int type,
+ double value,
+ int celcius,
+ const char *ref)
+{
+ char *str;
+
+ str = psensor_value_to_str(type, value, celcius);
+ if (strcmp(ref, str)) {
+ fprintf(stderr, "returns: %s expected: %s\n", str, ref);
+ return 1;
+ } else {
+ return 0;
+ }
+}
+
+int main(int argc, char **argv)
+{
+ int errs;
+
+ errs = test_psensor_value_to_str(SENSOR_TYPE_TEMP, 13, 1,
+ "13"CELCIUS);
+ errs += test_psensor_value_to_str(SENSOR_TYPE_TEMP, 13, 0,
+ "55"FAHRENHEIT);
+ errs += test_psensor_value_to_str(SENSOR_TYPE_TEMP, 13.4, 1,
+ "13"CELCIUS);
+ errs += test_psensor_value_to_str(SENSOR_TYPE_TEMP, 13.5, 1,
+ "14"CELCIUS);
+
+ if (errs)
+ exit(EXIT_FAILURE);
+ else
+ exit(EXIT_SUCCESS);
+}
--- /dev/null
+/*
+ * Copyright (C) 2010-2011 jeanfi@gmail.com
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301 USA
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/stat.h>
+
+#include "../src/lib/url.h"
+
+int test_url_encode(char *url, char *ref_url)
+{
+ char *res_url;
+ int ret;
+
+ res_url = url_encode(url);
+
+ if (strcmp(ref_url, res_url)) {
+ fprintf(stderr,
+ "FAILURE: url_encode(%s) returns %s instead of %s\n",
+ url, res_url, ref_url);
+ ret = 0;
+ } else {
+ ret = 1;
+ }
+
+ free(res_url);
+
+ return ret;
+}
+
+int tests_url_encode()
+{
+ int failures;
+
+ failures = 0;
+
+ if (!test_url_encode("abcdef12345", "abcdef12345"))
+ failures++;
+
+ if (!test_url_encode("a b", "a%20b"))
+ failures++;
+
+ if (!test_url_encode("ab-_.~", "ab-_.~"))
+ failures++;
+
+ return failures;
+}
+
+
+int main(int argc, char **argv)
+{
+ int failures;
+
+ failures = 0;
+
+ failures += tests_url_encode();
+
+ if (failures)
+ exit(EXIT_FAILURE);
+ else
+ exit(EXIT_SUCCESS);
+}
--- /dev/null
+/*
+ * Copyright (C) 2010-2011 jeanfi@gmail.com
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301 USA
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/stat.h>
+
+#include "../src/lib/url.h"
+
+int test_url_normalize(const char *url, const char *ref_url)
+{
+ int ret;
+ char *tmp = url_normalize(url);
+
+ if (!strcmp(tmp, ref_url)) {
+ ret = 1;
+ } else {
+ fprintf(stderr,
+ "FAILURE: "
+ "url_normalize(%s) returns %s instead of %s\n",
+ url,
+ tmp,
+ ref_url);
+ ret = 0;
+ }
+
+ free(tmp);
+
+ return ret;
+}
+
+int tests_url_normalize()
+{
+ int failures;
+
+ failures = 0;
+
+ if (!test_url_normalize("http://test/test", "http://test/test"))
+ failures++;
+
+ if (!test_url_normalize("http://test/test/", "http://test/test"))
+ failures++;
+
+ return failures;
+}
+
+int main(int argc, char **argv)
+{
+ int failures;
+
+ failures = 0;
+
+ failures += tests_url_normalize();
+
+ if (failures)
+ exit(EXIT_FAILURE);
+ else
+ exit(EXIT_SUCCESS);
+}
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@SET_MAKE@
VPATH = @srcdir@
+am__make_dryrun = \
+ { \
+ am__dry=no; \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
+ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+ *) \
+ for am__flg in $$MAKEFLAGS; do \
+ case $$am__flg in \
+ *=*|--*) ;; \
+ *n*) am__dry=yes; break;; \
+ esac; \
+ done;; \
+ esac; \
+ test $$am__dry = yes; \
+ }
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
CONFIG_CLEAN_VPATH_FILES =
SOURCES =
DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
am__installdirs = "$(DESTDIR)$(defaultwwwdir)"
DATA = $(defaultwww_DATA)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
AMTAR = @AMTAR@
APPINDICATOR_CFLAGS = @APPINDICATOR_CFLAGS@
APPINDICATOR_LIBS = @APPINDICATOR_LIBS@
+AR = @AR@
+ATASMART_CFLAGS = @ATASMART_CFLAGS@
+ATASMART_LIBS = @ATASMART_LIBS@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+GCONFTOOL = @GCONFTOOL@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
+GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
+GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GTK_LIBS = @GTK_LIBS@
GTOP_CFLAGS = @GTOP_CFLAGS@
GTOP_LIBS = @GTOP_LIBS@
+HAVE_CPPCHECK = @HAVE_CPPCHECK@
HELP2MAN = @HELP2MAN@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
POSUB = @POSUB@
+PTHREAD_LIBS = @PTHREAD_LIBS@
RANLIB = @RANLIB@
SENSORS_LIBS = @SENSORS_LIBS@
SET_MAKE = @SET_MAKE@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
$(am__aclocal_m4_deps):
install-defaultwwwDATA: $(defaultwww_DATA)
@$(NORMAL_INSTALL)
- test -z "$(defaultwwwdir)" || $(MKDIR_P) "$(DESTDIR)$(defaultwwwdir)"
@list='$(defaultwww_DATA)'; test -n "$(defaultwwwdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(defaultwwwdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(defaultwwwdir)" || exit 1; \
+ fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
@$(NORMAL_UNINSTALL)
@list='$(defaultwww_DATA)'; test -n "$(defaultwwwdir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
- test -n "$$files" || exit 0; \
- echo " ( cd '$(DESTDIR)$(defaultwwwdir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(defaultwwwdir)" && rm -f $$files
+ dir='$(DESTDIR)$(defaultwwwdir)'; $(am__uninstall_files_from_dir)
tags: TAGS
TAGS:
installcheck: installcheck-am
install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
mostlyclean-generic:
clean-generic:
/*
- * Copyright (C) 2010-2012 jeanfi@gmail.com
+ * Copyright (C) 2010-2011 jeanfi@gmail.com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
function type_to_str(stype) {
var stype_str;
- stype_str = "N/A";
-
- if (stype & 0x0100)
- stype_str = "Sensor";
- else if (stype & 0x0200)
- stype_str = "NVidia";
- else if (stype & 0x0400)
- stype_str = "HDD";
+ if (stype & 0x0200)
+ stype_str = "NVidia ";
else if (stype & 0x0800)
- stype_str = "CPU Usage Percentage";
- else if (stype & 0x1000)
- stype_str = "AMD";
+ stype_str = "ATI/AMD ";
+ else
+ stype_str = "";
- if (stype & 0x0001)
- stype_str += " Temperature";
+ if (stype & 0x04000)
+ stype_str += "HDD ";
+ else if (stype & 0x08000)
+ stype_str += "CPU ";
+ else if (stype & 0x10000)
+ stype_str += "GPU ";
+ else if (stype & 0x20000)
+ stype_str += "Fan ";
+
+ if (stype & 0x0001)
+ stype_str += "Temperature";
else if (stype & 0x0002)
- stype_str += " Fan";
+ stype_str += "RPM";
+ else if (stype & 0x0004)
+ stype_str += "Load";
return stype_str;
}
str = "";
- $.getJSON("/api/1.0/sensors", function(data) {
+ $.getJSON("/api/1.1/sensors", function(data) {
str += "<li><em>Sensors</em>\n<ul>";
$.each(data, function(i, item) {
name = item["name"];
- url = "details.html?id="+escape("/api/1.0/sensors/"+item["id"]);
+ url = "details.html?id="+escape("/api/1.1/sensors/"+item["id"]);
link = "<a href='"+url+"'>"+name+"</a>";
str += "<li>"+link+"</li>";
});
str += "</li></ul>";
str += "<li><em>CPU</em><ul>";
- url = "details.html?id="+escape("/api/1.0/cpu/usage");
+ url = "details.html?id="+escape("/api/1.1/cpu/usage");
link = "<a href='"+url+"'>usage</a>";
str += "<li>"+link+"</li>";
function update_summary_sensors() {
var name, value_str, min_str, max_str, type, type_str, url;
- $.getJSON("/api/1.0/sensors", function(data) {
+ $.getJSON("/api/1.1/sensors", function(data) {
$("#sensors tbody").html("");
$.each(data, function(i, item) {
min_str = value_to_str(item["min"], type);
max_str = value_to_str(item["max"], type);
type_str = type_to_str(type);
- url = "details.html?id="+escape("/api/1.0/sensors/"+item["id"]);
+ url = "details.html?id="+escape("/api/1.1/sensors/"+item["id"]);
$("#sensors tbody").append("<tr>"
+"<td><a href='"+url+"'>"+name+"</a></td>"
}
function update_summary_sysinfo() {
- $.getJSON("/api/1.0/sysinfo", function(data) {
+ $.getJSON("/api/1.1/sysinfo", function(data) {
$("#uptime").html("");
$("#cpu tbody").html("");
$("#memory").html("");
var uptime_h = Math.floor((uptime / (60*60)) % 24);
var uptime_d = Math.floor(uptime / (60*60*24));
- $("#cpu").append("<tr><td><a href='details.html?id=/api/1.0/cpu/usage'>"+load+"%</a></td><td>"
+ $("#cpu").append("<tr><td><a href='details.html?id=/api/1.1/cpu/usage'>"+load+"%</a></td><td>"
+load_1+"</td><td>"
+load_5+"</td><td>"
+load_15+"</td></tr>");
}
-h2 {
+h2, #toctitle{
font-size: 110%;
font-style: normal;
font-weight: bold;
height: 300px;
}
-ul {
+ul#menu-list li {
list-style: none;
- padding: 0 0 0 0;
- margin: 0 0 0 0;
}
-ul li ul li {
- padding-left: 1em;
+#menu-list {
+ padding: 0 0 0 0;
+ margin: 0 0 0 0;
}
#menu {
}
#menu-list ul li {
- padding: 0 0 0 1em;
+ padding: 0 0 0 0em;
}