mirror of
https://github.com/Llewellynvdm/conky.git
synced 2024-12-25 12:10:03 +00:00
add compilation switch --enable-xoap to be able to use www.weather.com as a source of weather data
This commit is contained in:
parent
3bb9b4b6b5
commit
5eef83d90a
@ -1,3 +1,9 @@
|
||||
2009-07-18
|
||||
* add compilation switch --enable-xoap to be able to use
|
||||
www.weather.com as a source of weather data (this avoids adding
|
||||
libxml2 as a required dependency for users that wish to use noaa
|
||||
and not weather.com)
|
||||
|
||||
2009-07-18
|
||||
* www.weather.com can now be used as well as a source of weather data
|
||||
|
||||
|
@ -353,13 +353,24 @@ dnl
|
||||
AC_ARG_ENABLE([weather],
|
||||
AC_HELP_STRING([--enable-weather], [enable if you want weather support @<:@default=no@:>@]),
|
||||
[want_weather="$enableval"], [want_weather=no])
|
||||
|
||||
AC_ARG_ENABLE([xoap],
|
||||
AC_HELP_STRING([--enable-xoap], [enable if you want weather xoap support @<:@default=no@:>@]),
|
||||
[want_xoap="$enableval"], [want_xoap=no])
|
||||
#
|
||||
AM_CONDITIONAL(BUILD_WEATHER, test x$want_weather = xyes)
|
||||
if test x$want_weather = xyes; then
|
||||
PKG_CHECK_MODULES([libxml2], libxml-2.0)
|
||||
AM_CONDITIONAL(BUILD_XOAP, test x$want_xoap = xyes)
|
||||
if test x$want_xoap = xyes; then
|
||||
PKG_CHECK_MODULES([libxml2], libxml-2.0)
|
||||
conky_CFLAGS="$conky_CFLAGS $libxml2_CFLAGS"
|
||||
conky_LIBS="$conky_LIBS $libxml2_LIBS"
|
||||
AC_DEFINE(XOAP, 1, [Define if you want weather xoap support])
|
||||
AC_DEFINE(XOAP_FILE, "$HOME/.xoaprc", [User xoap keys file])
|
||||
fi
|
||||
PKG_CHECK_MODULES([libcurl], libcurl)
|
||||
conky_CFLAGS="$conky_CFLAGS $libxml2_CFLAGS $libcurl_CFLAGS"
|
||||
conky_LIBS="$conky_LIBS $libxml2_LIBS $libcurl_LIBS"
|
||||
conky_CFLAGS="$conky_CFLAGS $libcurl_CFLAGS"
|
||||
conky_LIBS="$conky_LIBS $libcurl_LIBS"
|
||||
AC_DEFINE(WEATHER, 1, [Define if you want weather support])
|
||||
fi
|
||||
|
||||
@ -707,7 +718,6 @@ dnl
|
||||
|
||||
AC_DEFINE(DEFAULTNETDEV, "eth0", [Default networkdevice])
|
||||
AC_DEFINE(CONFIG_FILE, "$HOME/.conkyrc", [Configfile of the user])
|
||||
AC_DEFINE(XOAP_FILE, "$HOME/.xoaprc", [User xoap keys file])
|
||||
AC_DEFINE(MAX_SPECIALS_DEFAULT, 512, [Default maximum number of special things, e.g. fonts, offsets, aligns, etc.])
|
||||
AC_DEFINE(MAX_USER_TEXT_DEFAULT, 16384, [Default maximum size of config TEXT buffer, i.e. below TEXT line.])
|
||||
AC_DEFINE(DEFAULT_TEXT_BUFFER_SIZE, 256, [Default size used for temporary, static text buffers])
|
||||
|
10
src/conky.c
10
src/conky.c
@ -4673,7 +4673,7 @@ static void generate_text_internal(char *p, int p_max_size,
|
||||
if( obj->data.weather.uri != NULL ) {
|
||||
process_weather_info(p, p_max_size, obj->data.weather.uri, obj->data.weather.data_type, obj->data.weather.interval);
|
||||
} else {
|
||||
strncpy(p, "invalid xoap keys file", p_max_size);
|
||||
strncpy(p, "either invalid xoap keys file or compiled without xoap support", p_max_size);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -8912,7 +8912,7 @@ static void load_config_file_x11(const char *f)
|
||||
}
|
||||
#endif /* X11 */
|
||||
|
||||
#ifdef WEATHER
|
||||
#if defined(WEATHER) && defined(XOAP)
|
||||
/*
|
||||
* TODO: make the xoap keys file readable from the config file
|
||||
* make the keys directly readable from the config file
|
||||
@ -8946,7 +8946,7 @@ static void load_xoap_keys(void)
|
||||
free(par);
|
||||
free(key);
|
||||
}
|
||||
#endif /* WEATHER */
|
||||
#endif /* WEATHER && XOAP */
|
||||
|
||||
static void print_help(const char *prog_name) {
|
||||
printf("Usage: %s [OPTION]...\n"
|
||||
@ -9332,10 +9332,10 @@ int main(int argc, char **argv)
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef WEATHER
|
||||
#if defined(WEATHER) && defined(XOAP)
|
||||
/* Load xoap keys, if existing */
|
||||
load_xoap_keys();
|
||||
#endif /* WEATHER */
|
||||
#endif /* WEATHER && XOAP */
|
||||
|
||||
#ifdef HAVE_SYS_INOTIFY_H
|
||||
inotify_fd = inotify_init();
|
||||
|
@ -38,7 +38,9 @@
|
||||
#include <curl/curl.h>
|
||||
#include <curl/types.h>
|
||||
#include <curl/easy.h>
|
||||
#ifdef XOAP
|
||||
#include <libxml/parser.h>
|
||||
#endif /* XOAP */
|
||||
|
||||
/* Possible sky conditions */
|
||||
#define NUM_CC_CODES 6
|
||||
@ -58,7 +60,7 @@ const char *WM_CODES[NUM_WM_CODES] = {
|
||||
const char *WC_CODES[NUM_WC_CODES] = {
|
||||
"DZ", "RA", "GR", "GS", "SN", "SG",
|
||||
"FG", "HZ", "FU", "BR", "DU", "SA",
|
||||
"FC", "PO", "SQ", "SS", "DS",
|
||||
"FC", "PO", "SQ", "SS", "DS"
|
||||
};
|
||||
|
||||
typedef struct location_ {
|
||||
@ -126,6 +128,7 @@ int rel_humidity(int dew_point, int air) {
|
||||
#endif /* MATH */
|
||||
}
|
||||
|
||||
#ifdef XOAP
|
||||
//TODO: Lets get rid of the recursion
|
||||
static void parse_cc(PWEATHER *res, xmlNodePtr cc)
|
||||
{
|
||||
@ -194,6 +197,7 @@ static void parse_weather_xml(PWEATHER *res, const char *data)
|
||||
xmlFreeDoc(doc);
|
||||
return ;
|
||||
}
|
||||
#endif /* XOAP */
|
||||
|
||||
/*
|
||||
* Horrible hack to avoid using regexes
|
||||
@ -490,16 +494,19 @@ static void parse_weather(PWEATHER *res, const char *data)
|
||||
//Reset results
|
||||
memset(res, 0, sizeof(PWEATHER));
|
||||
|
||||
#ifdef XOAP
|
||||
//Check if it is an xml file
|
||||
if ( strncmp(data, "<?xml ", 6) == 0 ) {
|
||||
parse_weather_xml(res, data);
|
||||
} else {
|
||||
//We assume its a text file
|
||||
char s_tmp[256];
|
||||
const char delim[] = " ";
|
||||
} else
|
||||
#endif /* XOAP */
|
||||
{
|
||||
//We assume its a text file
|
||||
char s_tmp[256];
|
||||
const char delim[] = " ";
|
||||
|
||||
//Divide time stamp and metar data
|
||||
if (sscanf(data, "%[^'\n']\n%[^'\n']", res->lastupd, s_tmp) == 2) {
|
||||
//Divide time stamp and metar data
|
||||
if (sscanf(data, "%[^'\n']\n%[^'\n']", res->lastupd, s_tmp) == 2) {
|
||||
|
||||
//Process all tokens
|
||||
char *p_tok = NULL;
|
||||
@ -518,11 +525,11 @@ static void parse_weather(PWEATHER *res, const char *data)
|
||||
} while (p_tok != NULL);
|
||||
}
|
||||
return;
|
||||
}
|
||||
else {
|
||||
return;
|
||||
}
|
||||
}
|
||||
else {
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void fetch_weather_info(location *curloc)
|
||||
@ -596,9 +603,12 @@ void process_weather_info(char *p, int p_max_size, char *uri, char *data_type, i
|
||||
} else if (strcmp(data_type, "temperature") == EQUAL) {
|
||||
temp_print(p, p_max_size, curloc->data.temp, TEMP_CELSIUS);
|
||||
} else if (strcmp(data_type, "cloud_cover") == EQUAL) {
|
||||
#ifdef XOAP
|
||||
if (curloc->data.xoap_t[0] != '\0') {
|
||||
strncpy(p, curloc->data.xoap_t, p_max_size);
|
||||
} else if (curloc->data.cc == 0) {
|
||||
} else
|
||||
#endif /* XOAP */
|
||||
if (curloc->data.cc == 0) {
|
||||
strncpy(p, "", p_max_size);
|
||||
} else if (curloc->data.cc < 3) {
|
||||
strncpy(p, "clear", p_max_size);
|
||||
|
@ -31,15 +31,8 @@
|
||||
/* WEATHER data */
|
||||
typedef struct PWEATHER_ {
|
||||
char lastupd[32];
|
||||
#ifdef XOAP
|
||||
char xoap_t[32];
|
||||
int temp;
|
||||
int dew;
|
||||
int cc;
|
||||
int bar;
|
||||
int wind_s;
|
||||
int wind_d;
|
||||
int hmid;
|
||||
int wc;
|
||||
/*
|
||||
* TODO:
|
||||
* Is it worth investigating about using icons from weather.com?
|
||||
@ -50,6 +43,15 @@ typedef struct PWEATHER_ {
|
||||
char icon[3];
|
||||
|
||||
*/
|
||||
#endif /* XOAP */
|
||||
int temp;
|
||||
int dew;
|
||||
int cc;
|
||||
int bar;
|
||||
int wind_s;
|
||||
int wind_d;
|
||||
int hmid;
|
||||
int wc;
|
||||
} PWEATHER;
|
||||
|
||||
/* Prototypes */
|
||||
|
Loading…
Reference in New Issue
Block a user