]> git.webhop.me Git - lcd4linux.git/commitdiff
[lcd4linux @ 2006-04-15 05:22:52 by reinelt]
authorreinelt <reinelt@3ae390bd-cb1e-0410-b409-cd5a39f66f1f>
Sat, 15 Apr 2006 05:22:52 +0000 (05:22 +0000)
committerreinelt <reinelt@3ae390bd-cb1e-0410-b409-cd5a39f66f1f>
Sat, 15 Apr 2006 05:22:52 +0000 (05:22 +0000)
mpd plugin from Stefan Kuhne

git-svn-id: https://ssl.bulix.org/svn/lcd4linux/trunk@658 3ae390bd-cb1e-0410-b409-cd5a39f66f1f

Makefile.am
Makefile.in
config.h.in
configure
plugin.c
plugin_mpd.c [new file with mode: 0644]
plugins.m4
widget_image.c

index 53488fd4567675daf0af6933ef89ccc461848edf..17597874e5e5b8c78301119c7fbc1ea5b1f581f3 100644 (file)
@@ -102,6 +102,7 @@ plugin_imon.c                 \
 plugin_isdn.c                 \
 plugin_loadavg.c              \
 plugin_meminfo.c              \
+plugin_mpd.c                 \
 plugin_mysql.c                \
 plugin_netdev.c               \
 plugin_pop3.c                 \
index e4c2effe8012d2dcab30fd2f8ce5f41a90852d43..840b2d7f100eee18f0726b064ffdb638f1e8f5cc 100644 (file)
@@ -104,7 +104,7 @@ lcd4linux_DEPENDENCIES = @DRIVERS@ @PLUGINS@
 lcd4linux_SOURCES =  lcd4linux.c                   cfg.c         cfg.h           debug.c       debug.h         drv.c         drv.h           evaluator.c   evaluator.h     hash.c        hash.h          layout.c      layout.h        pid.c         pid.h           timer.c       timer.h         thread.c      thread.h        udelay.c      udelay.h        qprintf.c     qprintf.h       rgb.c         rgb.h                                         widget.c      widget.h        widget_text.c widget_text.h   widget_bar.c  widget_bar.h    widget_icon.c widget_icon.h   widget_image.c widget_image.h widget_keypad.c widget_keypad.h    widget_timer.c widget_timer.h widget_gpo.c  widget_gpo.h                                  plugin.c      plugin.h        plugin_cfg.c                  plugin_math.c                 plugin_string.c               plugin_test.c                 plugin_time.c
 
 
-EXTRA_lcd4linux_SOURCES =  drv_generic_text.c            drv_generic_text.h            drv_generic_graphic.c         drv_generic_graphic.h         drv_generic_gpio.c            drv_generic_gpio.h            drv_generic_serial.c          drv_generic_serial.h          drv_generic_parport.c         drv_generic_parport.h         drv_generic_i2c.c             drv_generic_i2c.h             drv_generic_keypad.c          drv_generic_keypad.h          drv_BeckmannEgle.c            drv_BWCT.c                    drv_Crystalfontz.c            drv_Curses.c                  drv_Cwlinux.c                 drv_G15.c                     drv_HD44780.c                 drv_Image.c                   drv_LCD2USB.c                 drv_LCDLinux.c                drv_LCDTerm.c                 drv_LPH7508.c                 drv_LUIse.c                   drv_M50530.c                  drv_MatrixOrbital.c           drv_MilfordInstruments.c      drv_Noritake.c                drv_NULL.c                    drv_RouterBoard.c             drv_Sample.c                  drv_serdisplib.c              drv_SimpleLCD.c               drv_T6963.c                   drv_Trefon.c                  drv_USBLCD.c                  drv_WincorNixdorf.c           drv_X11.c                                                   font_6x8.h                                                  lcd4linux_i2c.h                                             plugin_apm.c                  plugin_cpuinfo.c              plugin_diskstats.c            plugin_dvb.c                  plugin_exec.c                 plugin_file.c                 plugin_i2c_sensors.c          plugin_imon.c                 plugin_isdn.c                 plugin_loadavg.c              plugin_meminfo.c              plugin_mysql.c                plugin_netdev.c               plugin_pop3.c                 plugin_ppp.c                  plugin_proc_stat.c            plugin_python.c               plugin_sample.c               plugin_seti.c                 plugin_statfs.c               plugin_uname.c                plugin_uptime.c               plugin_wireless.c             plugin_xmms.c
+EXTRA_lcd4linux_SOURCES =  drv_generic_text.c            drv_generic_text.h            drv_generic_graphic.c         drv_generic_graphic.h         drv_generic_gpio.c            drv_generic_gpio.h            drv_generic_serial.c          drv_generic_serial.h          drv_generic_parport.c         drv_generic_parport.h         drv_generic_i2c.c             drv_generic_i2c.h             drv_generic_keypad.c          drv_generic_keypad.h          drv_BeckmannEgle.c            drv_BWCT.c                    drv_Crystalfontz.c            drv_Curses.c                  drv_Cwlinux.c                 drv_G15.c                     drv_HD44780.c                 drv_Image.c                   drv_LCD2USB.c                 drv_LCDLinux.c                drv_LCDTerm.c                 drv_LPH7508.c                 drv_LUIse.c                   drv_M50530.c                  drv_MatrixOrbital.c           drv_MilfordInstruments.c      drv_Noritake.c                drv_NULL.c                    drv_RouterBoard.c             drv_Sample.c                  drv_serdisplib.c              drv_SimpleLCD.c               drv_T6963.c                   drv_Trefon.c                  drv_USBLCD.c                  drv_WincorNixdorf.c           drv_X11.c                                                   font_6x8.h                                                  lcd4linux_i2c.h                                             plugin_apm.c                  plugin_cpuinfo.c              plugin_diskstats.c            plugin_dvb.c                  plugin_exec.c                 plugin_file.c                 plugin_i2c_sensors.c          plugin_imon.c                 plugin_isdn.c                 plugin_loadavg.c              plugin_meminfo.c              plugin_mpd.c                plugin_mysql.c                plugin_netdev.c               plugin_pop3.c                 plugin_ppp.c                  plugin_proc_stat.c            plugin_python.c               plugin_sample.c               plugin_seti.c                 plugin_statfs.c               plugin_uname.c                plugin_uptime.c               plugin_wireless.c             plugin_xmms.c
 
 
 EXTRA_DIST =  lcd4linux.conf.sample         lcd4kde.conf                  lcd4linux.kdelnk              lcd4linux.xpm                 lcd4linux.lsm                 curses.m4                     AUTHORS                       CREDITS                       FAQ                           NEWS                          TODO                          README                        README.Drivers                README.Plugins                README.KDE                    plugin_sample.c
@@ -161,15 +161,16 @@ DEP_FILES =  .deps/cfg.P .deps/debug.P .deps/drv.P .deps/drv_BWCT.P \
 .deps/plugin_dvb.P .deps/plugin_exec.P .deps/plugin_file.P \
 .deps/plugin_i2c_sensors.P .deps/plugin_imon.P .deps/plugin_isdn.P \
 .deps/plugin_loadavg.P .deps/plugin_math.P .deps/plugin_meminfo.P \
-.deps/plugin_mysql.P .deps/plugin_netdev.P .deps/plugin_pop3.P \
-.deps/plugin_ppp.P .deps/plugin_proc_stat.P .deps/plugin_python.P \
-.deps/plugin_sample.P .deps/plugin_seti.P .deps/plugin_statfs.P \
-.deps/plugin_string.P .deps/plugin_test.P .deps/plugin_time.P \
-.deps/plugin_uname.P .deps/plugin_uptime.P .deps/plugin_wireless.P \
-.deps/plugin_xmms.P .deps/qprintf.P .deps/rgb.P .deps/thread.P \
-.deps/timer.P .deps/udelay.P .deps/widget.P .deps/widget_bar.P \
-.deps/widget_gpo.P .deps/widget_icon.P .deps/widget_image.P \
-.deps/widget_keypad.P .deps/widget_text.P .deps/widget_timer.P
+.deps/plugin_mpd.P .deps/plugin_mysql.P .deps/plugin_netdev.P \
+.deps/plugin_pop3.P .deps/plugin_ppp.P .deps/plugin_proc_stat.P \
+.deps/plugin_python.P .deps/plugin_sample.P .deps/plugin_seti.P \
+.deps/plugin_statfs.P .deps/plugin_string.P .deps/plugin_test.P \
+.deps/plugin_time.P .deps/plugin_uname.P .deps/plugin_uptime.P \
+.deps/plugin_wireless.P .deps/plugin_xmms.P .deps/qprintf.P .deps/rgb.P \
+.deps/thread.P .deps/timer.P .deps/udelay.P .deps/widget.P \
+.deps/widget_bar.P .deps/widget_gpo.P .deps/widget_icon.P \
+.deps/widget_image.P .deps/widget_keypad.P .deps/widget_text.P \
+.deps/widget_timer.P
 SOURCES = $(lcd4linux_SOURCES) $(EXTRA_lcd4linux_SOURCES)
 OBJECTS = $(lcd4linux_OBJECTS)
 
index c2c36c315b786e2f4647e8b633349099634557f9..3b9aa7f802a4effbf85988d0e61c0c07d6d46fb8 100644 (file)
@@ -49,6 +49,9 @@
 /* Define to 1 if you have the `m' library (-lm). */
 #undef HAVE_LIBM
 
+/* Define to 1 if you have the <libmpd/libmpd.h> header file. */
+#undef HAVE_LIBMPD_LIBMPD_H
+
 /* Define to 1 if you have the <linux/dvb/frontend.h> header file. */
 #undef HAVE_LINUX_DVB_FRONTEND_H
 
 /* meminfo plugin */
 #undef PLUGIN_MEMINFO
 
+/* mpd plugin */
+#undef PLUGIN_MPD
+
 /* mysql plugin */
 #undef PLUGIN_MYSQL
 
index d4cf0e1a2d1977505ba3676f592d9ff80ae88503..d55747cfaf3144d9156a202d98a6b58dd31c6e62 100755 (executable)
--- a/configure
+++ b/configure
@@ -6811,6 +6811,7 @@ echo "$as_me: error: run ./configure --with-plugins=..." >&2;}
          PLUGIN_ISDN="yes"
          PLUGIN_LOADAVG="yes"
          PLUGIN_MEMINFO="yes"
+         PLUGIN_MPD="yes"
          PLUGIN_MYSQL="yes"
          PLUGIN_NETDEV="yes"
          PLUGIN_POP3="yes"
@@ -6858,6 +6859,9 @@ echo "$as_me: error: run ./configure --with-plugins=..." >&2;}
       meminfo)
          PLUGIN_MEMINFO=$val
          ;;
+      mpd)
+         PLUGIN_MPD=$val
+        ;;
       mysql)
          PLUGIN_MYSQL=$val
          ;;
@@ -7305,6 +7309,245 @@ cat >>confdefs.h <<\_ACEOF
 #define PLUGIN_MEMINFO 1
 _ACEOF
 
+fi
+if test "$PLUGIN_MPD" = "yes"; then
+
+for ac_header in libmpd/libmpd.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+  # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_header_compiler=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  ac_header_preproc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+    (
+      cat <<\_ASBOX
+## ---------------------------------------------------- ##
+## Report this to lcd4linux-users@lists.sourceforge.net ##
+## ---------------------------------------------------- ##
+_ASBOX
+    ) |
+      sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+ has_libmpd_header="true"
+else
+  has_libmpd_header="false"
+fi
+
+done
+
+   if test "$has_libmpd_header" = "true"; then
+      echo "$as_me:$LINENO: checking for libmpd_init in -llibmpd" >&5
+echo $ECHO_N "checking for libmpd_init in -llibmpd... $ECHO_C" >&6
+if test "${ac_cv_lib_libmpd_libmpd_init+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-llibmpd  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char libmpd_init ();
+int
+main ()
+{
+libmpd_init ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"                   || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_libmpd_libmpd_init=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_libmpd_libmpd_init=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_libmpd_libmpd_init" >&5
+echo "${ECHO_T}$ac_cv_lib_libmpd_libmpd_init" >&6
+if test $ac_cv_lib_libmpd_libmpd_init = yes; then
+  has_libmpd_lib="true"
+else
+  has_libmpd_lib="false"
+fi
+
+      if test "$has_libmpd_lib" = "true"; then
+        PLUGINS="$PLUGINS plugin_mpd.o"
+        PLUGINLIBS="$PLUGINLIBS -lmpd"
+
+cat >>confdefs.h <<\_ACEOF
+#define PLUGIN_MPD 1
+_ACEOF
+
+      else
+        { echo "$as_me:$LINENO: WARNING: libmpd lib not found: mpd plugin disabled" >&5
+echo "$as_me: WARNING: libmpd lib not found: mpd plugin disabled" >&2;}
+      fi
+   else
+      { echo "$as_me:$LINENO: WARNING: libmpd/libmpd.h header not found: mpd plugin disabled" >&5
+echo "$as_me: WARNING: libmpd/libmpd.h header not found: mpd plugin disabled" >&2;}
+   fi
 fi
 if test "$PLUGIN_MYSQL" = "yes"; then
 
index b68ede1268818b717aa493ac019cba071fbdc7e8..72d2847c5ed3d3ea22da21491c26057c68518516 100644 (file)
--- a/plugin.c
+++ b/plugin.c
@@ -1,4 +1,4 @@
-/* $Id: plugin.c,v 1.40 2006/02/19 15:42:19 reinelt Exp $
+/* $Id: plugin.c,v 1.41 2006/04/15 05:22:52 reinelt Exp $
  *
  * plugin handler for the Evaluator
  *
@@ -23,6 +23,9 @@
  *
  *
  * $Log: plugin.c,v $
+ * Revision 1.41  2006/04/15 05:22:52  reinelt
+ * mpd plugin from Stefan Kuhne
+ *
  * Revision 1.40  2006/02/19 15:42:19  reinelt
  * file plugin from Chris Maj
  *
@@ -242,6 +245,8 @@ int plugin_init_loadavg(void);
 void plugin_exit_loadavg(void);
 int plugin_init_meminfo(void);
 void plugin_exit_meminfo(void);
+int plugin_init_mpd(void);
+void plugin_exit_mpd(void);
 int plugin_init_mysql(void);
 void plugin_exit_mysql(void);
 int plugin_init_netdev(void);
@@ -311,6 +316,10 @@ int plugin_init(void)
 #ifdef PLUGIN_MEMINFO
     plugin_init_meminfo();
 #endif
+#ifdef PLUGIN_MPD
+    plugin_init_mpd();
+#endif
+
 #ifdef PLUGIN_MYSQL
     plugin_init_mysql();
 #endif
@@ -390,6 +399,9 @@ void plugin_exit(void)
 #ifdef PLUGIN_MEMINFO
     plugin_exit_meminfo();
 #endif
+#ifdef PLUGIN_MPD
+    plugin_exit_mpd();
+#endif
 #ifdef PLUGIN_MYSQL
     plugin_exit_mysql();
 #endif
diff --git a/plugin_mpd.c b/plugin_mpd.c
new file mode 100644 (file)
index 0000000..1316687
--- /dev/null
@@ -0,0 +1,239 @@
+/* $Id: plugin_mpd.c,v 1.1 2006/04/15 05:22:52 reinelt Exp $
+ *
+ * mpd informations
+ *
+ * Copyright (C) 2006 Stefan Kuhne <sk-privat@gmx.net>
+ * Copyright (C) 2006 The LCD4Linux Team <lcd4linux-devel@users.sourceforge.net>
+ *
+ * This file is part of LCD4Linux.
+ *
+ * LCD4Linux 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.
+ *
+ * LCD4Linux 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ *
+ * $Log: plugin_mpd.c,v $
+ * Revision 1.1  2006/04/15 05:22:52  reinelt
+ * mpd plugin from Stefan Kuhne
+ *
+ */
+
+/* 
+ * exported functions:
+ *
+ * int plugin_init_sample (void)
+ *  adds various functions
+ *
+ */
+
+
+#include "config.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+
+#include "debug.h"
+#include "plugin.h"
+
+#include <libmpd/libmpd.h>
+
+#ifdef WITH_DMALLOC
+#include <dmalloc.h>
+#endif
+
+/* Struct Pointer */
+
+struct Pointer {
+    mpd_Connection *conn;
+    mpd_Status *status;
+    mpd_InfoEntity *entity;
+};
+
+
+
+static struct Pointer connect()
+{
+    char *host = "localhost";
+    char *port = "6600";
+    int iport;
+    char *test;
+    struct Pointer mpd;
+
+    if ((test = getenv("MPD_HOST"))) {
+       host = test;
+    }
+
+    if ((test = getenv("MPD_PORT"))) {
+       port = test;
+    }
+
+    iport = strtol(port, &test, 10);
+
+    if (iport < 0 || *test != '\0') {
+       fprintf(stderr, "MPD_PORT \"%s\" is not a positive integer\n", port);
+       exit(EXIT_FAILURE);
+    }
+
+    mpd.conn = mpd_newConnection(host, iport, 10);
+
+    mpd_sendCommandListOkBegin(mpd.conn);
+    mpd_sendStatusCommand(mpd.conn);
+    mpd_sendCurrentSongCommand(mpd.conn);
+    mpd_sendCommandListEnd(mpd.conn);
+
+    if ((mpd.status = mpd_getStatus(mpd.conn)) == NULL) {
+       fprintf(stderr, "%s\n", mpd.conn->errorStr);
+       mpd_closeConnection(mpd.conn);
+    }
+
+    if (mpd.status->error) {
+       printf("error: %s\n", mpd.status->error);
+    }
+
+    if (mpd.conn->error) {
+       fprintf(stderr, "%s\n", mpd.conn->errorStr);
+       mpd_closeConnection(mpd.conn);
+    }
+
+    return mpd;
+}
+
+
+static void disconnect(struct Pointer mpd)
+{
+    if (mpd.conn->error) {
+       fprintf(stderr, "%s\n", mpd.conn->errorStr);
+       mpd_closeConnection(mpd.conn);
+    }
+
+    mpd_finishCommand(mpd.conn);
+    if (mpd.conn->error) {
+       fprintf(stderr, "%s\n", mpd.conn->errorStr);
+       mpd_closeConnection(mpd.conn);
+    }
+
+    mpd_freeStatus(mpd.status);
+    mpd_closeConnection(mpd.conn);
+}
+
+
+/* function 'artist' */
+/* takes one argument, a number */
+/* multiplies the number by 3.0 */
+/* same as 'mul2', but shorter */
+
+static void artist(RESULT * result, RESULT * query)
+{
+    char *value = " ";
+    struct Pointer mpd = connect();
+
+    mpd_nextListOkCommand(mpd.conn);
+
+    while ((mpd.entity = mpd_getNextInfoEntity(mpd.conn))) {
+       mpd_Song *song = mpd.entity->info.song;
+
+       if (mpd.entity->type != MPD_INFO_ENTITY_TYPE_SONG) {
+           mpd_freeInfoEntity(mpd.entity);
+           continue;
+       }
+
+       if (song->artist) {
+           value = strdup(song->artist);
+       }
+       mpd_freeInfoEntity(mpd.entity);
+    }
+
+    disconnect(mpd);
+
+    /* store result */
+    SetResult(&result, R_STRING, value);
+
+    free(value);
+}
+
+
+static void title(RESULT * result, RESULT * query)
+{
+    char *value = " ";
+    struct Pointer mpd = connect();
+
+    mpd_nextListOkCommand(mpd.conn);
+
+    while ((mpd.entity = mpd_getNextInfoEntity(mpd.conn))) {
+       mpd_Song *song = mpd.entity->info.song;
+
+       if (mpd.entity->type != MPD_INFO_ENTITY_TYPE_SONG) {
+           mpd_freeInfoEntity(mpd.entity);
+           continue;
+       }
+
+       if (song->title) {
+           value = strdup(song->title);
+       }
+       mpd_freeInfoEntity(mpd.entity);
+    }
+
+    disconnect(mpd);
+
+    /* store result */
+    SetResult(&result, R_STRING, value);
+
+    free(value);
+}
+
+
+static void album(RESULT * result, RESULT * query)
+{
+    char *value = " ";
+    struct Pointer mpd = connect();
+
+    mpd_nextListOkCommand(mpd.conn);
+
+    while ((mpd.entity = mpd_getNextInfoEntity(mpd.conn))) {
+       mpd_Song *song = mpd.entity->info.song;
+
+       if (mpd.entity->type != MPD_INFO_ENTITY_TYPE_SONG) {
+           mpd_freeInfoEntity(mpd.entity);
+           continue;
+       }
+
+       if (song->album) {
+           value = strdup(song->album);
+       }
+       mpd_freeInfoEntity(mpd.entity);
+    }
+
+    disconnect(mpd);
+
+    /* store result */
+    SetResult(&result, R_STRING, value);
+
+    free(value);
+}
+
+
+int plugin_init_mpd(void)
+{
+    AddFunction("mpd::artist", 0, artist);
+    AddFunction("mpd::title", 0, title);
+    AddFunction("mpd::album", 0, album);
+
+    return 0;
+}
+
+
+void plugin_exit_mpd(void)
+{
+    /* empty */
+}
index 65f641bd566f06c804d100b3dd71b604b36fa6b9..808eb36d5aac189b009a78332040e9d40c05520d 100644 (file)
@@ -60,6 +60,7 @@ for plugin in $plugins; do
          PLUGIN_ISDN="yes"
          PLUGIN_LOADAVG="yes"
          PLUGIN_MEMINFO="yes"
+         PLUGIN_MPD="yes"
          PLUGIN_MYSQL="yes"
          PLUGIN_NETDEV="yes"
          PLUGIN_POP3="yes"
@@ -107,6 +108,9 @@ for plugin in $plugins; do
       meminfo)
          PLUGIN_MEMINFO=$val
          ;;
+      mpd)
+         PLUGIN_MPD=$val
+        ;;
       mysql)
          PLUGIN_MYSQL=$val
          ;;
@@ -206,6 +210,21 @@ if test "$PLUGIN_MEMINFO" = "yes"; then
    PLUGINS="$PLUGINS plugin_meminfo.o"
    AC_DEFINE(PLUGIN_MEMINFO,1,[meminfo plugin])
 fi
+if test "$PLUGIN_MPD" = "yes"; then
+   AC_CHECK_HEADERS(libmpd/libmpd.h, [has_libmpd_header="true"], [has_libmpd_header="false"])
+   if test "$has_libmpd_header" = "true"; then 
+      AC_CHECK_LIB(libmpd, libmpd_init, [has_libmpd_lib="true"], [has_libmpd_lib="false"])
+      if test "$has_libmpd_lib" = "true"; then
+        PLUGINS="$PLUGINS plugin_mpd.o"
+        PLUGINLIBS="$PLUGINLIBS -lmpd"
+        AC_DEFINE(PLUGIN_MPD,1,[mpd plugin])
+      else
+        AC_MSG_WARN(libmpd lib not found: mpd plugin disabled)
+      fi
+   else
+      AC_MSG_WARN(libmpd/libmpd.h header not found: mpd plugin disabled)
+   fi 
+fi
 if test "$PLUGIN_MYSQL" = "yes"; then
    AC_CHECK_HEADERS(mysql/mysql.h, [has_mysql_header="true"], [has_mysql_header="false"])
    if test "$has_mysql_header" = "true"; then  
index 9ce0ebd95ece8d48620bcaa74290e7bbd25d91dc..63e20adc0a8792a102b9e1f8a74a21b92e64ac9d 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: widget_image.c,v 1.6 2006/04/09 14:17:50 reinelt Exp $
+/* $Id: widget_image.c,v 1.7 2006/04/15 05:22:52 reinelt Exp $
  *
  * image widget handling
  *
@@ -21,6 +21,9 @@
  *
  *
  * $Log: widget_image.c,v $
+ * Revision 1.7  2006/04/15 05:22:52  reinelt
+ * mpd plugin from Stefan Kuhne
+ *
  * Revision 1.6  2006/04/09 14:17:50  reinelt
  * autoconf/library fixes, image and graphic display inversion
  *
@@ -157,9 +160,9 @@ static void widget_image_render(const char *Name, WIDGET_IMAGE * Image)
                /* our alpha is 0 (transparent) to 255 (opaque) */
                Image->bitmap[i].A = (a == 127) ? 0 : 255 - 2 * a;
                if (Image->inverted) {
-                   Image->bitmap[i].R = 255 - Image->bitmap[i].R; 
-                   Image->bitmap[i].G = 255 - Image->bitmap[i].G; 
-                   Image->bitmap[i].B = 255 - Image->bitmap[i].B; 
+                   Image->bitmap[i].R = 255 - Image->bitmap[i].R;
+                   Image->bitmap[i].G = 255 - Image->bitmap[i].G;
+                   Image->bitmap[i].B = 255 - Image->bitmap[i].B;
                }
            }
        }
@@ -212,7 +215,6 @@ static void widget_image_update(void *Self)
            Image->inverted = Image->inverted > 0;
            DelResult(&result);
        }
-
 #ifdef WITH_GD
        /* render image into bitmap */
        widget_image_render(W->name, Image);