1
0
mirror of https://github.com/Llewellynvdm/conky.git synced 2024-12-26 12:27:52 +00:00

* Updated to libmpdclient 0.13.0

* Added post_21_kernel config param to specify kernels 2.6.22 and newer
    so i2c works properly


git-svn-id: https://conky.svn.sourceforge.net/svnroot/conky/trunk/conky1@890 7f574dfc-610e-0410-a909-a81674777703
This commit is contained in:
Brenden Matthews 2007-08-05 22:16:26 +00:00
parent f95d63bf56
commit 7793867d6b
7 changed files with 539 additions and 258 deletions

View File

@ -1,5 +1,10 @@
# $Id$ # $Id$
2007-08-05
* Updated to libmpdclient 0.13.0
* Added 'post_21_kernel' config param to specify kernels 2.6.22 and newer
so i2c works properly
2007-08-04 2007-08-04
* Fixed potential issue on FreeBSD when nprocs < 10 (thanks zotrix) * Fixed potential issue on FreeBSD when nprocs < 10 (thanks zotrix)
* Added support for multiple batteries when using acpi (thanks Phil) * Added support for multiple batteries when using acpi (thanks Phil)

View File

@ -356,6 +356,14 @@
Print text to stdout. Print text to stdout.
<para></para></listitem> <para></para></listitem>
</varlistentry> </varlistentry>
<varlistentry>
<term><command><option>post_21_kernel</option></command>
</term>
<listitem>
Set to yes if you have Linux kernel 2.6.22 or newer
<para></para></listitem>
</varlistentry>
<varlistentry> <varlistentry>
<term><command><option>pad_percents</option></command></term> <term><command><option>pad_percents</option></command></term>
<listitem> <listitem>

View File

@ -101,6 +101,10 @@ static void print_version()
exit(0); exit(0);
} }
#if defined(__linux__)
int post_21_kernel;
#endif /* __linux__ */
#ifdef X11 #ifdef X11
/* /*
@ -6583,6 +6587,9 @@ static void set_default_configurations(void)
info.xmms2.status = NULL; info.xmms2.status = NULL;
#endif #endif
use_spacer = 0; use_spacer = 0;
#if defined(__linux__)
post_21_kernel = 0;
#endif /* __linux__ */
#ifdef X11 #ifdef X11
out_to_console = 0; out_to_console = 0;
#else #else
@ -6915,6 +6922,11 @@ else if (strcasecmp(name, a) == 0 || strcasecmp(name, b) == 0)
CONF("draw_outline") { CONF("draw_outline") {
draw_outline = string_to_bool(value); draw_outline = string_to_bool(value);
} }
#if defined(__linux__)
CONF("post_21_kernel") {
post_21_kernel = string_to_bool(value);
}
#endif /* __linux__ */
#endif /* X11 */ #endif /* X11 */
CONF("out_to_console") { CONF("out_to_console") {
out_to_console = string_to_bool(value); out_to_console = string_to_bool(value);

View File

@ -605,6 +605,10 @@ void init_rss_info();
void free_rss_info(); void free_rss_info();
#endif /* RSS */ #endif /* RSS */
#if defined(__linux__)
extern int post_21_kernel;
#endif /* __linux__ */
/* in linux.c */ /* in linux.c */
#endif #endif

File diff suppressed because it is too large Load Diff

View File

@ -40,6 +40,7 @@
#include <sys/time.h> #include <sys/time.h>
#include <stdarg.h> #include <stdarg.h>
#define MPD_BUFFER_MAX_LENGTH 50000 #define MPD_BUFFER_MAX_LENGTH 50000
#define MPD_ERRORSTR_MAX_LENGTH 1000
#define MPD_WELCOME_MESSAGE "OK MPD " #define MPD_WELCOME_MESSAGE "OK MPD "
#define MPD_ERROR_TIMEOUT 10 /* timeout trying to talk to mpd */ #define MPD_ERROR_TIMEOUT 10 /* timeout trying to talk to mpd */
@ -88,8 +89,9 @@ typedef enum mpd_TagItems
MPD_TAG_ITEM_COMMENT, MPD_TAG_ITEM_COMMENT,
MPD_TAG_ITEM_DISC, MPD_TAG_ITEM_DISC,
MPD_TAG_ITEM_FILENAME, MPD_TAG_ITEM_FILENAME,
MPD_TAG_ITEM_ANY,
MPD_TAG_NUM_OF_ITEM_TYPES MPD_TAG_NUM_OF_ITEM_TYPES
}mpd_TagItems; } mpd_TagItems;
extern char * mpdTagItemKeys[MPD_TAG_NUM_OF_ITEM_TYPES]; extern char * mpdTagItemKeys[MPD_TAG_NUM_OF_ITEM_TYPES];
@ -107,7 +109,7 @@ typedef struct _mpd_Connection {
/* use this to check the version of mpd */ /* use this to check the version of mpd */
int version[3]; int version[3];
/* IMPORTANT, you want to get the error messages from here */ /* IMPORTANT, you want to get the error messages from here */
char errorStr[MPD_BUFFER_MAX_LENGTH+1]; char errorStr[MPD_ERRORSTR_MAX_LENGTH+1];
int errorCode; int errorCode;
int errorAt; int errorAt;
/* this will be set to MPD_ERROR_* if there is an error, 0 if not */ /* this will be set to MPD_ERROR_* if there is an error, 0 if not */
@ -225,12 +227,21 @@ typedef struct _mpd_Stats {
unsigned long dbPlayTime; unsigned long dbPlayTime;
} mpd_Stats; } mpd_Stats;
typedef struct _mpd_SearchStats {
int numberOfSongs;
unsigned long playTime;
} mpd_SearchStats;
void mpd_sendStatsCommand(mpd_Connection * connection); void mpd_sendStatsCommand(mpd_Connection * connection);
mpd_Stats * mpd_getStats(mpd_Connection * connection); mpd_Stats * mpd_getStats(mpd_Connection * connection);
void mpd_freeStats(mpd_Stats * stats); void mpd_freeStats(mpd_Stats * stats);
mpd_SearchStats * mpd_getSearchStats(mpd_Connection * connection);
void mpd_freeSearchStats(mpd_SearchStats * stats);
/* SONG STUFF */ /* SONG STUFF */
#define MPD_SONG_NO_TIME -1 #define MPD_SONG_NO_TIME -1
@ -262,6 +273,8 @@ typedef struct _mpd_Song {
char *genre; char *genre;
/* Composer */ /* Composer */
char *composer; char *composer;
/* Performer */
char *performer;
/* Disc */ /* Disc */
char *disc; char *disc;
/* Comment */ /* Comment */
@ -414,10 +427,10 @@ void mpd_sendListallInfoCommand(mpd_Connection * connection, const char * dir);
/* non-recursive version of ListallInfo */ /* non-recursive version of ListallInfo */
void mpd_sendLsInfoCommand(mpd_Connection * connection, const char * dir); void mpd_sendLsInfoCommand(mpd_Connection * connection, const char * dir);
#define MPD_TABLE_ARTIST 0 #define MPD_TABLE_ARTIST MPD_TAG_ITEM_ARTIST
#define MPD_TABLE_ALBUM 1 #define MPD_TABLE_ALBUM MPD_TAG_ITEM_ALBUM
#define MPD_TABLE_TITLE 2 #define MPD_TABLE_TITLE MPD_TAG_ITEM_TITLE
#define MPD_TABLE_FILENAME 3 #define MPD_TABLE_FILENAME MPD_TAG_ITEM_FILENAME
void mpd_sendSearchCommand(mpd_Connection * connection, int table, void mpd_sendSearchCommand(mpd_Connection * connection, int table,
const char * str); const char * str);
@ -434,7 +447,7 @@ char * mpd_getNextArtist(mpd_Connection * connection);
char * mpd_getNextAlbum(mpd_Connection * connection); char * mpd_getNextAlbum(mpd_Connection * connection);
char * mpd_getNextTag(mpd_Connection *connection, int table); char * mpd_getNextTag(mpd_Connection *connection, int type);
/* list artist or albums by artist, arg1 should be set to the artist if /* list artist or albums by artist, arg1 should be set to the artist if
* listing albums by a artist, otherwise NULL for listing all artists or albums * listing albums by a artist, otherwise NULL for listing all artists or albums
@ -446,6 +459,8 @@ void mpd_sendListCommand(mpd_Connection * connection, int table,
void mpd_sendAddCommand(mpd_Connection * connection, const char * file); void mpd_sendAddCommand(mpd_Connection * connection, const char * file);
int mpd_sendAddIdCommand(mpd_Connection *connection, const char *file);
void mpd_sendDeleteCommand(mpd_Connection * connection, int songNum); void mpd_sendDeleteCommand(mpd_Connection * connection, int songNum);
void mpd_sendDeleteIdCommand(mpd_Connection * connection, int songNum); void mpd_sendDeleteIdCommand(mpd_Connection * connection, int songNum);
@ -456,6 +471,9 @@ void mpd_sendLoadCommand(mpd_Connection * connection, const char * name);
void mpd_sendRmCommand(mpd_Connection * connection, const char * name); void mpd_sendRmCommand(mpd_Connection * connection, const char * name);
void mpd_sendRenameCommand(mpd_Connection *connection, const char *from,
const char *to);
void mpd_sendShuffleCommand(mpd_Connection * connection); void mpd_sendShuffleCommand(mpd_Connection * connection);
void mpd_sendClearCommand(mpd_Connection * connection); void mpd_sendClearCommand(mpd_Connection * connection);
@ -544,6 +562,7 @@ void mpd_freeOutputElement(mpd_OutputEntity * output);
* Queries mpd for the allowed commands * Queries mpd for the allowed commands
*/ */
void mpd_sendCommandsCommand(mpd_Connection * connection); void mpd_sendCommandsCommand(mpd_Connection * connection);
/** /**
* @param connection a #mpd_Connection * @param connection a #mpd_Connection
* *
@ -560,6 +579,14 @@ void mpd_sendNotCommandsCommand(mpd_Connection * connection);
*/ */
char *mpd_getNextCommand(mpd_Connection *connection); char *mpd_getNextCommand(mpd_Connection *connection);
void mpd_sendUrlHandlersCommand(mpd_Connection * connection);
char *mpd_getNextHandler(mpd_Connection * connection);
void mpd_sendTagTypesCommand(mpd_Connection * connection);
char *mpd_getNextTagType(mpd_Connection * connection);
/** /**
* @param connection a MpdConnection * @param connection a MpdConnection
* @param path the path to the playlist. * @param path the path to the playlist.
@ -568,6 +595,7 @@ char *mpd_getNextCommand(mpd_Connection *connection);
* *
*/ */
void mpd_sendListPlaylistInfoCommand(mpd_Connection *connection, char *path); void mpd_sendListPlaylistInfoCommand(mpd_Connection *connection, char *path);
/** /**
* @param connection a MpdConnection * @param connection a MpdConnection
* @param path the path to the playlist. * @param path the path to the playlist.
@ -584,27 +612,29 @@ void mpd_sendListPlaylistCommand(mpd_Connection *connection, char *path);
* starts a search, use mpd_addConstraintSearch to add * starts a search, use mpd_addConstraintSearch to add
* a constraint to the search, and mpd_commitSearch to do the actual search * a constraint to the search, and mpd_commitSearch to do the actual search
*/ */
void mpd_startSearch(mpd_Connection * connection,int exact); void mpd_startSearch(mpd_Connection *connection, int exact);
/** /**
* @param connection a #mpd_Connection * @param connection a #mpd_Connection
* @param field * @param type
* @param name * @param name
*
*/ */
void mpd_addConstraintSearch(mpd_Connection *connection, int field, char *name); void mpd_addConstraintSearch(mpd_Connection *connection, int type, const char *name);
/** /**
* @param connection a #mpd_Connection * @param connection a #mpd_Connection
*
*/ */
void mpd_commitSearch(mpd_Connection *connection); void mpd_commitSearch(mpd_Connection *connection);
/** /**
* @param connection a #mpd_Connection * @param connection a #mpd_Connection
* @param field The field to search * @param type The type to search for
* *
* starts a search for fields... f.e. get a list of artists would be: * starts a search for fields... f.e. get a list of artists would be:
* @code
* mpd_startFieldSearch(connection, MPD_TAG_ITEM_ARTIST); * mpd_startFieldSearch(connection, MPD_TAG_ITEM_ARTIST);
* mpd_commitSearch(connection); * mpd_commitSearch(connection);
* @endcode
* *
* or get a list of artist in genre "jazz" would be: * or get a list of artist in genre "jazz" would be:
* @code * @code
@ -614,10 +644,25 @@ void mpd_commitSearch(mpd_Connection *connection);
* @endcode * @endcode
* *
* mpd_startSearch will return a list of songs (and you need mpd_getNextInfoEntity) * mpd_startSearch will return a list of songs (and you need mpd_getNextInfoEntity)
* this one will return a list of only one field (the field specified with field) and you need * this one will return a list of only one field (the one specified with type) and you need
* mpd_getNextTag to get the results * mpd_getNextTag to get the results
*/ */
void mpd_startFieldSearch(mpd_Connection * connection,int field); void mpd_startFieldSearch(mpd_Connection *connection, int type);
void mpd_startPlaylistSearch(mpd_Connection *connection, int exact);
void mpd_startStatsSearch(mpd_Connection *connection);
void mpd_sendPlaylistClearCommand(mpd_Connection *connection, char *path);
void mpd_sendPlaylistAddCommand(mpd_Connection *connection,
char *playlist, char *path);
void mpd_sendPlaylistMoveCommand(mpd_Connection *connection,
char *playlist, int from, int to);
void mpd_sendPlaylistDeleteCommand(mpd_Connection *connection,
char *playlist, int pos);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif

View File

@ -252,6 +252,8 @@ inline void update_net_stats()
curtmp1 += ns->net_rec[i]; curtmp1 += ns->net_rec[i];
curtmp2 += ns->net_trans[i]; curtmp2 += ns->net_trans[i];
} }
if (curtmp1 == 0) curtmp1 = 1;
if (curtmp2 == 0) curtmp2 = 1;
ns->recv_speed = curtmp1 / (double) info.net_avg_samples; ns->recv_speed = curtmp1 / (double) info.net_avg_samples;
ns->trans_speed = curtmp2 / (double) info.net_avg_samples; ns->trans_speed = curtmp2 / (double) info.net_avg_samples;
if (info.net_avg_samples > 1) { if (info.net_avg_samples > 1) {
@ -624,12 +626,14 @@ get_first_file_in_a_directory(const char *dir, char *s, int *rep)
} }
} }
#define I2C_DIR "/sys/bus/i2c/devices/" int open_i2c_sensor(const char *dev, const char *type, int n, int *div, char *devtype)
int
open_i2c_sensor(const char *dev, const char *type, int n, int *div,
char *devtype)
{ {
char i2c_dir[64];
if (post_21_kernel) {
strncpy(i2c_dir, "/sys/bus/platform/devices/", 64);
} else {
strncpy(i2c_dir, "/sys/bus/i2c/devices/", 64);
}
char path[256]; char path[256];
char buf[256]; char buf[256];
int fd; int fd;
@ -638,7 +642,7 @@ open_i2c_sensor(const char *dev, const char *type, int n, int *div,
/* if i2c device is NULL or *, get first */ /* if i2c device is NULL or *, get first */
if (dev == NULL || strcmp(dev, "*") == 0) { if (dev == NULL || strcmp(dev, "*") == 0) {
static int rep = 0; static int rep = 0;
if (!get_first_file_in_a_directory(I2C_DIR, buf, &rep)) if (!get_first_file_in_a_directory(i2c_dir, buf, &rep))
return -1; return -1;
dev = buf; dev = buf;
} }
@ -648,9 +652,9 @@ open_i2c_sensor(const char *dev, const char *type, int n, int *div,
type = "in"; type = "in";
if (strcmp(type, "tempf") == 0) { if (strcmp(type, "tempf") == 0) {
snprintf(path, 255, I2C_DIR "%s/%s%d_input", dev, "temp", n); snprintf(path, 255, "%s%s/%s%d_input", i2c_dir, dev, "temp", n);
} else { } else {
snprintf(path, 255, I2C_DIR "%s/%s%d_input", dev, type, n); snprintf(path, 255, "%s%s/%s%d_input", i2c_dir, dev, type, n);
} }
strncpy(devtype, path, 255); strncpy(devtype, path, 255);
@ -671,10 +675,10 @@ open_i2c_sensor(const char *dev, const char *type, int n, int *div,
/* test if *_div file exist, open it and use it as divisor */ /* test if *_div file exist, open it and use it as divisor */
if (strcmp(type, "tempf") == 0) { if (strcmp(type, "tempf") == 0) {
snprintf(path, 255, I2C_DIR "%s/%s%d_div", "one", "two", snprintf(path, 255, "%s%s/%s%d_div", i2c_dir, "one", "two",
n); n);
} else { } else {
snprintf(path, 255, I2C_DIR "%s/%s%d_div", dev, type, n); snprintf(path, 255, "%s%s/%s%d_div", i2c_dir, dev, type, n);
} }
divfd = open(path, O_RDONLY); divfd = open(path, O_RDONLY);