1
0
mirror of https://github.com/Llewellynvdm/conky.git synced 2024-12-26 04:17:33 +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$
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
* Fixed potential issue on FreeBSD when nprocs < 10 (thanks zotrix)
* Added support for multiple batteries when using acpi (thanks Phil)

View File

@ -356,6 +356,14 @@
Print text to stdout.
<para></para></listitem>
</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>
<term><command><option>pad_percents</option></command></term>
<listitem>

View File

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

View File

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

File diff suppressed because it is too large Load Diff

View File

@ -40,6 +40,7 @@
#include <sys/time.h>
#include <stdarg.h>
#define MPD_BUFFER_MAX_LENGTH 50000
#define MPD_ERRORSTR_MAX_LENGTH 1000
#define MPD_WELCOME_MESSAGE "OK 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_DISC,
MPD_TAG_ITEM_FILENAME,
MPD_TAG_ITEM_ANY,
MPD_TAG_NUM_OF_ITEM_TYPES
}mpd_TagItems;
} mpd_TagItems;
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 */
int version[3];
/* 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 errorAt;
/* 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;
} mpd_Stats;
typedef struct _mpd_SearchStats {
int numberOfSongs;
unsigned long playTime;
} mpd_SearchStats;
void mpd_sendStatsCommand(mpd_Connection * connection);
mpd_Stats * mpd_getStats(mpd_Connection * connection);
void mpd_freeStats(mpd_Stats * stats);
mpd_SearchStats * mpd_getSearchStats(mpd_Connection * connection);
void mpd_freeSearchStats(mpd_SearchStats * stats);
/* SONG STUFF */
#define MPD_SONG_NO_TIME -1
@ -262,6 +273,8 @@ typedef struct _mpd_Song {
char *genre;
/* Composer */
char *composer;
/* Performer */
char *performer;
/* Disc */
char *disc;
/* Comment */
@ -414,10 +427,10 @@ void mpd_sendListallInfoCommand(mpd_Connection * connection, const char * dir);
/* non-recursive version of ListallInfo */
void mpd_sendLsInfoCommand(mpd_Connection * connection, const char * dir);
#define MPD_TABLE_ARTIST 0
#define MPD_TABLE_ALBUM 1
#define MPD_TABLE_TITLE 2
#define MPD_TABLE_FILENAME 3
#define MPD_TABLE_ARTIST MPD_TAG_ITEM_ARTIST
#define MPD_TABLE_ALBUM MPD_TAG_ITEM_ALBUM
#define MPD_TABLE_TITLE MPD_TAG_ITEM_TITLE
#define MPD_TABLE_FILENAME MPD_TAG_ITEM_FILENAME
void mpd_sendSearchCommand(mpd_Connection * connection, int table,
const char * str);
@ -434,7 +447,7 @@ char * mpd_getNextArtist(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
* 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);
int mpd_sendAddIdCommand(mpd_Connection *connection, const char *file);
void mpd_sendDeleteCommand(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_sendRenameCommand(mpd_Connection *connection, const char *from,
const char *to);
void mpd_sendShuffleCommand(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
*/
void mpd_sendCommandsCommand(mpd_Connection * connection);
/**
* @param connection a #mpd_Connection
*
@ -560,6 +579,14 @@ void mpd_sendNotCommandsCommand(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 path the path to the playlist.
@ -568,6 +595,7 @@ char *mpd_getNextCommand(mpd_Connection *connection);
*
*/
void mpd_sendListPlaylistInfoCommand(mpd_Connection *connection, char *path);
/**
* @param connection a MpdConnection
* @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
* 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 field
* @param type
* @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
*
*/
void mpd_commitSearch(mpd_Connection *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:
* @code
* mpd_startFieldSearch(connection, MPD_TAG_ITEM_ARTIST);
* mpd_commitSearch(connection);
* @endcode
*
* or get a list of artist in genre "jazz" would be:
* @code
@ -614,10 +644,25 @@ void mpd_commitSearch(mpd_Connection *connection);
* @endcode
*
* 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
*/
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
}
#endif

View File

@ -252,6 +252,8 @@ inline void update_net_stats()
curtmp1 += ns->net_rec[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->trans_speed = curtmp2 / (double) info.net_avg_samples;
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 buf[256];
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 (dev == NULL || strcmp(dev, "*") == 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;
dev = buf;
}
@ -648,9 +652,9 @@ open_i2c_sensor(const char *dev, const char *type, int n, int *div,
type = "in";
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 {
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);
@ -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 */
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);
} 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);