1
0
mirror of https://github.com/Llewellynvdm/conky.git synced 2024-11-17 18:45:10 +00:00

Experimental RSS code.

git-svn-id: https://conky.svn.sourceforge.net/svnroot/conky/trunk/conky1@864 7f574dfc-610e-0410-a909-a81674777703
This commit is contained in:
Roman Bogorodskiy 2007-05-06 12:17:13 +00:00
parent d5634abad4
commit 3b03ca2a76
4 changed files with 100 additions and 4 deletions

View File

@ -179,6 +179,22 @@ if test x$want_xmms2 = xyes; then
AC_DEFINE(XMMS2, 1, [Define if you want XMMS2 support])
fi
dnl
dnl RSS
dnl
AC_ARG_ENABLE([rss],
AC_HELP_STRING([--enable-rss], [enable if you want rss support (requires libmrss) @<:@default=no@:>@]),
[want_rss="$enableval"], [want_rss=no])
#
AM_CONDITIONAL(BUILD_RSS, test x$want_rss = xyes)
if test x$want_rss = xyes; then
WANT_GLIB=yes
PKG_CHECK_MODULES([MRSS], [mrss])
CFLAGS="$CFLAGS $MRSS_CFLAGS"
LIBS="$LIBS $MRSS_LIBS"
AC_DEFINE(RSS, 1, [Define if you want rss support])
fi
dnl
dnl IMLIB2
@ -218,9 +234,7 @@ if test x$want_portmon = xyes; then
if test "x$PORT_MONITORS_MISSING" = xyes; then
AC_MSG_ERROR([missing a needed network header for port monitoring])
fi
PKG_CHECK_MODULES([GLIB], [glib-2.0])
CFLAGS="$CFLAGS $GLIB_CFLAGS"
LIBS="$LIBS $GLIB_LIBS"
WANT_GLIB=yes
AC_DEFINE(TCP_PORT_MONITOR, 1, [Define if you want tcp port monitoring support])
fi
fi
@ -356,6 +370,15 @@ if test x$want_xft = "xyes"; then
fi
fi
dnl
dnl GLIB
dnl
if test x$WANT_GLIB = xyes; then
PKG_CHECK_MODULES([GLIB], [glib-2.0])
CFLAGS="$CFLAGS $GLIB_CFLAGS"
LIBS="$LIBS $GLIB_LIBS"
fi
dnl
dnl KVM
@ -519,4 +542,5 @@ $PACKAGE $VERSION configured successfully:
* general:
hddtemp: $want_hddtemp
portmon: $want_portmon
RSS: $want_rss
EOF

View File

@ -51,6 +51,10 @@ if BUILD_HDDTEMP
hddtemp = hddtemp.c
endif
if BUILD_RSS
rss = rss.c
endif
conky_SOURCES = \
$(audacious) \
$(bmpx) \
@ -67,6 +71,7 @@ conky_SOURCES = \
$(netbsd) \
$(openbsd) \
$(port_monitors) \
$(rss) \
$(solaris) \
timed_thread.c \
timed_thread.h \

View File

@ -93,6 +93,9 @@ static void print_version()
#ifdef TCP_PORT_MONITOR
" * portmon\n"
#endif /* TCP_PORT_MONITOR */
#ifdef RSS
" * rss\n"
#endif
"\n");
exit(0);
@ -1163,6 +1166,9 @@ enum text_object_type {
OBJ_bmpx_uri,
OBJ_bmpx_bitrate,
#endif
#ifdef RSS
OBJ_rss,
#endif
#ifdef TCP_PORT_MONITOR
OBJ_tcp_portmon,
#endif
@ -1276,6 +1282,12 @@ struct text_object {
int port;
char *dev;
} hddtemp; /* 2 */
#endif
#ifdef RSS
struct {
char *uri;
int count;
} rss;
#endif
} data;
};
@ -2030,6 +2042,10 @@ static void free_text_objects(unsigned int count, struct text_object *objs)
case OBJ_bmpx_track:
case OBJ_bmpx_uri:
case OBJ_bmpx_bitrate:
#endif
#ifdef RSS
case OBJ_rss:
free(objs[i].data.rss.uri);
#endif
case OBJ_pre_exec:
case OBJ_battery:
@ -3100,6 +3116,21 @@ static struct text_object *construct_text_object(const char *s, const char *arg,
memset(&(info.bmpx), 0, sizeof(struct bmpx_s));
END
#endif
#ifdef RSS
OBJ(rss, 0)
if (arg) {
int argc, count;
char *uri = (char *)malloc(64 * sizeof(char *));
argc = sscanf(arg, "%63s %d", uri, &count);
printf("argc: %d, uri: %s, count: %d\n", argc, uri, count);
obj->data.rss.uri = uri;
obj->data.rss.count = count;
} else
CRIT_ERR("rss: needs arguments");
END
#endif
#ifdef HDDTEMP
OBJ(hddtemp, 0)
if (!arg || scan_hddtemp(arg, &obj->data.hddtemp.dev,
@ -4254,6 +4285,30 @@ static void generate_text_internal(char *p, int p_max_size, struct text_object *
OBJ(hr) {
new_hr(p, obj->data.i);
}
#ifdef RSS
OBJ(rss) {
GList *walk = NULL;
GList *list = NULL;
char *titles = malloc(1024*sizeof(char *));
memset(titles, 0, sizeof(titles));
list = get_rss_info(obj->data.rss.uri, obj->data.rss.count);
for (walk = g_list_first(list); walk != NULL; walk = g_list_next(walk)) {
snprintf(titles, 1023, "%s%s\n", titles, (char *)walk->data);
free(walk->data);
}
/* we don't need last \n */
titles[strlen(titles)-2] = '\0';
snprintf(p, p_max_size, "%s", titles);
free(titles);
g_list_free(walk);
g_list_free(list);
}
#endif
#ifdef HDDTEMP
OBJ(hddtemp) {
char *temp;

View File

@ -46,6 +46,10 @@
#include <xmmsclient/xmmsclient.h>
#endif
#ifdef RSS
#include <glib.h>
#endif
#include "mboxscan.h"
#include "timed_thread.h"
@ -243,6 +247,9 @@ enum {
INFO_XMMS2 = 22,
#endif
INFO_ENTROPY = 23,
#ifdef RSS
INFO_RSS = 24,
#endif
};
@ -589,6 +596,11 @@ int scan_hddtemp(const char *arg, char **dev, char **addr, int *port);
char *get_hddtemp_info(char *dev, char *addr, int port, char *unit);
#endif /* HDDTEMP */
/* in rss.c */
#ifdef RSS
GList* get_rss_info(char *uri, int count);
#endif /* RSS */
/* in linux.c */
#endif