summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVincent Torri <vincent.torri@gmail.com>2012-05-17 04:05:26 +0000
committerVincent Torri <vincent.torri@gmail.com>2012-05-17 04:05:26 +0000
commit7e9927bfaa7868fbce2934f5bd90a57b31d062e1 (patch)
treeab3b2cbe51ee1a7c854b0696627dac06b2504170
parent037298e091addfd8e9b645073af7d366554bcbd6 (diff)
Eweather: some cleanup
SVN revision: 71186
-rw-r--r--Makefile.am32
-rw-r--r--configure.ac161
-rw-r--r--data/default/Makefile.am12
-rw-r--r--data/simple/Makefile.am9
-rw-r--r--eweather.pc.in3
-rw-r--r--m4/efl_binary.m471
-rw-r--r--m4/efl_dlfcn.m4136
-rw-r--r--src/Makefile.am5
-rw-r--r--src/bin/Makefile.am4
-rw-r--r--src/bin/eweather_test.c34
-rw-r--r--src/lib/EWeather.h4
-rw-r--r--src/lib/EWeather_Plugins.h9
-rw-r--r--src/lib/EWeather_Smart.h10
-rw-r--r--src/lib/Makefile.am25
-rw-r--r--src/lib/eweather.c29
-rw-r--r--src/lib/eweather_smart.c139
-rw-r--r--src/lib/plugins.c43
-rw-r--r--src/plugins/Makefile.am11
-rw-r--r--src/plugins/google/Makefile.am20
-rw-r--r--src/plugins/test/Makefile.am17
-rw-r--r--src/plugins/yahoo/Makefile.am20
21 files changed, 538 insertions, 256 deletions
diff --git a/Makefile.am b/Makefile.am
index 9f00bcd..f916070 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,10 +1,36 @@
1ACLOCAL_AMFLAGS = -I m4 1ACLOCAL_AMFLAGS = -I m4
2MAINTAINERCLEANFILES = Makefile.in aclocal.m4 config.guess config.h.in \ 2
3 config.sub configure depcomp install-sh ltmain.sh \ 3MAINTAINERCLEANFILES = \
4 missing module.desktop config.rpath mkinstalldirs 4Makefile.in \
5aclocal.m4 \
6config.guess \
7config.h.in \
8config.h.in~ \
9config.sub \
10configure \
11depcomp \
12install-sh \
13ltconfig \
14ltmain.sh \
15missing \
16$(PACKAGE_TARNAME)-$(PACKAGE_VERSION).tar.gz \
17$(PACKAGE_TARNAME)-$(PACKAGE_VERSION).tar.bz2 \
18m4/libtool.m4 \
19m4/lt~obsolete.m4 \
20m4/ltoptions.m4 \
21m4/ltsugar.m4 \
22m4/ltversion.m4
5 23
6SUBDIRS = src data 24SUBDIRS = src data
7 25
8pkgconfigdir = $(libdir)/pkgconfig 26pkgconfigdir = $(libdir)/pkgconfig
9pkgconfig_DATA = eweather.pc 27pkgconfig_DATA = eweather.pc
10 28
29EXTRA_DIST = \
30AUTHORS \
31COPYING \
32README \
33autogen.sh \
34eweather.pc.in \
35m4/efl_dlfcn.m4 \
36m4/efl_binary.m4
diff --git a/configure.ac b/configure.ac
index 485fcfa..c7ccea5 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,76 +1,116 @@
1dnl Process this file with autoconf to produce a configure script.
2 1
3# get rid of that stupid cache mechanism 2m4_define([v_maj], [0])
4rm -f config.cache 3m4_define([v_min], [2])
4m4_define([v_mic], [0])
5m4_define([v_ver], [v_maj.v_min.v_mic])
5 6
6AC_INIT(eweather, 0.2.0, enlightenment-devel@lists.sourceforge.net) 7m4_define([lt_cur], m4_eval(v_maj + v_min))
7AC_PREREQ(2.52) 8m4_define([lt_rev], v_mic)
8AC_CONFIG_SRCDIR(configure.ac) 9m4_define([lt_age], v_min)
10
11AC_INIT([eweather], [v_ver], [enlightenment-devel@lists.sourceforge.net])
12AC_PREREQ([2.52])
13AC_CONFIG_SRCDIR([configure.ac])
9AC_CONFIG_MACRO_DIR([m4]) 14AC_CONFIG_MACRO_DIR([m4])
10AC_CANONICAL_BUILD
11AC_CANONICAL_HOST
12AC_ISC_POSIX
13 15
14AM_INIT_AUTOMAKE(1.6) 16AC_CONFIG_HEADERS([config.h])
15AM_CONFIG_HEADER(config.h) 17AH_TOP([
16m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) 18#ifndef EFL_CONFIG_H__
19#define EFL_CONFIG_H__
20])
21AH_BOTTOM([
22#endif /* EFL_CONFIG_H__ */
23])
17 24
18AC_PROG_CC 25AM_INIT_AUTOMAKE([1.6 dist-bzip2])
19AM_PROG_CC_STDC 26m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
20AC_HEADER_STDC
21AC_C_CONST
22AM_PROG_CC_C_O
23 27
28AC_LIBTOOL_WIN32_DLL
24define([AC_LIBTOOL_LANG_CXX_CONFIG], [:])dnl 29define([AC_LIBTOOL_LANG_CXX_CONFIG], [:])dnl
25define([AC_LIBTOOL_LANG_F77_CONFIG], [:])dnl 30define([AC_LIBTOOL_LANG_F77_CONFIG], [:])dnl
26AC_PROG_LIBTOOL 31AC_PROG_LIBTOOL
27 32
28AC_SUBST(packagedatadir) 33version_info="lt_cur:lt_rev:lt_age"
34AC_SUBST([version_info])
35
36
37### Needed information
38
39AC_CANONICAL_HOST
40
41case "$host_os" in
42 mingw32ce*)
43 MODULE_ARCH="$host_os-$host_cpu"
44 ;;
45 *)
46 MODULE_ARCH="$host_os-$host_cpu-v_maj.v_min.v_mic"
47 ;;
48esac
49AC_SUBST([MODULE_ARCH])
50AC_DEFINE_UNQUOTED([MODULE_ARCH], ["${MODULE_ARCH}"], ["Module architecture"])
51
52
53### Default options with respect to host
54
55
56### Additional options to configure
57
58
59### Checks for programs
60
61AM_PROG_CC_STDC
29 62
63# pkg-config
30PKG_PROG_PKG_CONFIG 64PKG_PROG_PKG_CONFIG
31 65
66# Check whether pkg-config supports Requires.private
67if $PKG_CONFIG --atleast-pkgconfig-version 0.22; then
68 pkgconfig_requires_private="Requires.private"
69else
70 pkgconfig_requires_private="Requires"
71fi
72AC_SUBST(pkgconfig_requires_private)
32 73
74# edje_cc
75EFL_WITH_BIN([edje], [edje-cc], [edje_cc])
76
77
78### Checks for libraries
79
80eweather_requirements="eina >= 1.0.0 ecore >= 1.0.0 ecore-file >= 1.0.0 ecore-evas >= 1.0.0 evas >= 1.0.0 ecore-con >= 1.0.0 edje >= 1.0.0"
81AC_SUBST([eweather_requirements])
82
83PKG_CHECK_MODULES([EWEATHER], [${eweather_requirements}])
84
85EFL_CHECK_DLOPEN
86
87
88### Checks for header files
89
90
91### Checks for types
92
93
94### Checks for structures
95
96
97### Checks for compiler characteristics
98
99AM_PROG_CC_C_O
100
101
102### Checks for linker characteristics
103
104# use --enable-auto-import on Windows
105
106lt_enable_auto_import=""
107case "$host_os" in
108 mingw*)
109 lt_enable_auto_import="-Wl,--enable-auto-import"
110 ;;
111esac
112AC_SUBST([lt_enable_auto_import])
33 113
34pluginsdir="${libdir}/eweather/plugins"
35AC_SUBST(pluginsdir)
36AS_AC_EXPAND(PLUGINSDIR, $pluginsdir)
37AC_DEFINE_UNQUOTED(PLUGINSDIR, ["$PLUGINSDIR"], [Where plugins are installed.])
38
39## AM_GNU_GETTEXT([external])
40## AM_GNU_GETTEXT_VERSION(0.14)
41
42AC_CHECK_LIB(dl, dlopen, dlopen_libs=-ldl)
43AC_SUBST(dlopen_libs)
44
45PKG_CHECK_MODULES(E, [eina
46 ecore
47 ecore-file
48 ecore-evas
49 evas
50 ecore-con
51 edje])
52release=$(pkg-config --variable=release enlightenment)
53MODULE_ARCH="$host_os-$host_cpu-$release"
54AC_SUBST(MODULE_ARCH)
55AC_DEFINE_UNQUOTED(MODULE_ARCH, "$MODULE_ARCH", "Module architecture")
56
57# Find edje_cc
58PKG_CHECK_MODULES(EDJE, [edje >= 0.5.0])
59AC_ARG_WITH(edje-cc,
60 AC_HELP_STRING([--with-edje-cc=PATH], [specify a specific path to edje_cc]),
61 [
62 v=$withval;
63 EDJE_CC=$v
64 ],[
65 EDJE_CC=$(pkg-config --variable=prefix edje)/bin/edje_cc
66 ]
67)
68AC_SUBST(EDJE_CC)
69AC_MSG_CHECKING([Which edje_cc to use])
70AC_MSG_RESULT(${EDJE_CC})
71
72requirements="ecore ecore-file edje ecore-con"
73AC_SUBST(requirements)
74 114
75AC_OUTPUT([ 115AC_OUTPUT([
76Makefile 116Makefile
@@ -87,5 +127,8 @@ src/plugins/Makefile
87src/plugins/test/Makefile 127src/plugins/test/Makefile
88src/plugins/yahoo/Makefile 128src/plugins/yahoo/Makefile
89src/plugins/google/Makefile 129src/plugins/google/Makefile
90], [
91]) 130])
131
132echo
133echo "$PACKAGE $VERSION"
134echo
diff --git a/data/default/Makefile.am b/data/default/Makefile.am
index 894fb56..855ac74 100644
--- a/data/default/Makefile.am
+++ b/data/default/Makefile.am
@@ -2,13 +2,16 @@ MAINTAINERCLEANFILES = Makefile.in theme.edj
2 2
3SUBDIRS = images 3SUBDIRS = images
4 4
5EDJE_CC = @edje_cc@
6EDJE_FLAGS_VERBOSE_ =
7EDJE_FLAGS_VERBOSE_0 =
8EDJE_FLAGS_VERBOSE_1 = -v
9EDJE_FLAGS = $(EDJE_FLAGS_$(V)) -id $(top_srcdir)/data/default/images
10
5EDJ = theme.edj 11EDJ = theme.edj
6 12
7EXTRA_DIST = theme.edc 13EXTRA_DIST = theme.edc
8 14
9EDJE_FLAGS = -v \
10 -id $(top_srcdir)/data/default/images
11
12theme.edj: theme.edc 15theme.edj: theme.edc
13 $(EDJE_CC) $(EDJE_FLAGS) $(top_srcdir)/data/default/theme.edc 16 $(EDJE_CC) $(EDJE_FLAGS) $(top_srcdir)/data/default/theme.edc
14 17
@@ -17,6 +20,3 @@ icon_DATA = $(EDJ)
17 20
18clean-local: 21clean-local:
19 rm -rf *.edj *~ 22 rm -rf *.edj *~
20
21uninstall:
22 rm -rf $(DESTDIR)$(pkgdatadir)²
diff --git a/data/simple/Makefile.am b/data/simple/Makefile.am
index 356067f..33a3b37 100644
--- a/data/simple/Makefile.am
+++ b/data/simple/Makefile.am
@@ -2,13 +2,16 @@ MAINTAINERCLEANFILES = Makefile.in theme.edj
2 2
3SUBDIRS = images 3SUBDIRS = images
4 4
5EDJE_CC = @edje_cc@
6EDJE_FLAGS_VERBOSE_ =
7EDJE_FLAGS_VERBOSE_0 =
8EDJE_FLAGS_VERBOSE_1 = -v
9EDJE_FLAGS = $(EDJE_FLAGS_$(V)) -id $(top_srcdir)/data/simple/images
10
5EDJ = theme.edj 11EDJ = theme.edj
6 12
7EXTRA_DIST = theme.edc 13EXTRA_DIST = theme.edc
8 14
9EDJE_FLAGS = -v \
10 -id $(top_srcdir)/data/simple/images
11
12theme.edj: theme.edc 15theme.edj: theme.edc
13 $(EDJE_CC) $(EDJE_FLAGS) $(top_srcdir)/data/simple/theme.edc 16 $(EDJE_CC) $(EDJE_FLAGS) $(top_srcdir)/data/simple/theme.edc
14 17
diff --git a/eweather.pc.in b/eweather.pc.in
index 76293d4..f1dab42 100644
--- a/eweather.pc.in
+++ b/eweather.pc.in
@@ -6,6 +6,7 @@ includedir=@includedir@
6Name: eweather 6Name: eweather
7Description: :) 7Description: :)
8Version: @VERSION@ 8Version: @VERSION@
9@pkgconfig_requires_private@: @eweather_requirements@
9Libs: -L${libdir} -leweather 10Libs: -L${libdir} -leweather
11Libs.private: @EFL_DLOPEN_LIBS@
10Cflags: -I${includedir} 12Cflags: -I${includedir}
11Requires: @requirements@
diff --git a/m4/efl_binary.m4 b/m4/efl_binary.m4
new file mode 100644
index 0000000..c774688
--- /dev/null
+++ b/m4/efl_binary.m4
@@ -0,0 +1,71 @@
1dnl Copyright (C) 2010 Vincent Torri <vtorri at univ-evry dot fr>
2dnl That code is public domain and can be freely used or copied.
3
4dnl Macro that check if a binary is built or not
5
6dnl Usage: EFL_ENABLE_BIN(binary)
7dnl Call AC_SUBST(BINARY_PRG) (BINARY is the uppercase of binary, - being transformed into _)
8dnl Define have_binary (- is transformed into _)
9dnl Define conditional BUILD_BINARY (BINARY is the uppercase of binary, - being transformed into _)
10
11AC_DEFUN([EFL_ENABLE_BIN],
12[
13
14m4_pushdef([UP], m4_translit([[$1]], [-a-z], [_A-Z]))dnl
15m4_pushdef([DOWN], m4_translit([[$1]], [-A-Z], [_a-z]))dnl
16
17have_[]m4_defn([DOWN])="yes"
18
19dnl configure option
20
21AC_ARG_ENABLE([$1],
22 [AC_HELP_STRING([--disable-$1], [disable building of ]DOWN)],
23 [
24 if test "x${enableval}" = "xyes" ; then
25 have_[]m4_defn([DOWN])="yes"
26 else
27 have_[]m4_defn([DOWN])="no"
28 fi
29 ])
30
31AC_MSG_CHECKING([whether to build ]DOWN[ binary])
32AC_MSG_RESULT([$have_[]m4_defn([DOWN])])
33
34if test "x$have_[]m4_defn([DOWN])" = "xyes"; then
35 UP[]_PRG=DOWN[${EXEEXT}]
36fi
37
38AC_SUBST(UP[]_PRG)
39
40AM_CONDITIONAL(BUILD_[]UP, test "x$have_[]m4_defn([DOWN])" = "xyes")
41
42AS_IF([test "x$have_[]m4_defn([DOWN])" = "xyes"], [$2], [$3])
43
44])
45
46
47dnl Macro that check if a binary is built or not
48
49dnl Usage: EFL_WITH_BIN(package, binary, default_value)
50dnl Call AC_SUBST(_binary) (_binary is the lowercase of binary, - being transformed into _ by default, or the value set by the user)
51
52AC_DEFUN([EFL_WITH_BIN],
53[
54
55m4_pushdef([DOWN], m4_translit([[$2]], [-A-Z], [_a-z]))dnl
56
57dnl configure option
58
59AC_ARG_WITH([$2],
60 [AC_HELP_STRING([--with-$2=PATH], [specify a specific path to ]DOWN[ @<:@default=$3@:>@])],
61 [_efl_with_binary=${withval}],
62 [_efl_with_binary=$(pkg-config --variable=prefix $1)/bin/$3])
63
64DOWN=${_efl_with_binary}
65AC_MSG_NOTICE(DOWN[ set to ${_efl_with_binary}])
66
67with_binary_[]m4_defn([DOWN])=${_efl_with_binary}
68
69AC_SUBST(DOWN)
70
71])
diff --git a/m4/efl_dlfcn.m4 b/m4/efl_dlfcn.m4
new file mode 100644
index 0000000..53ca839
--- /dev/null
+++ b/m4/efl_dlfcn.m4
@@ -0,0 +1,136 @@
1dnl Copyright (C) 2012 Vincent Torri <vtorri at univ-evry dot fr>
2dnl That code is public domain and can be freely used or copied.
3
4dnl Macro that check if dlopen and dladdr functions are available or not.
5
6dnl Usage: EFL_CHECK_DLOPEN([, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
7dnl Call AC_SUBST(EFL_DLOPEN_LIBS)
8dnl Define HAVE_DLOPEN to 1if dlopen is available
9
10AC_DEFUN([EFL_CHECK_DLOPEN],
11[
12case "$host_os" in
13 mingw*)
14 _efl_have_dlopen="yes"
15 EFL_DLOPEN_LIBS="-ldl"
16 ;;
17 *)
18 _efl_have_dlopen="no"
19
20dnl Check is dlopen is in libc
21
22 AC_MSG_CHECKING([for dlopen in libc])
23 AC_LINK_IFELSE(
24 [AC_LANG_PROGRAM(
25 [[
26#include <dlfcn.h>
27 ]],
28 [[
29void *h = dlopen(0, 0);
30 ]])],
31 [_efl_have_dlopen="yes"],
32 [_efl_have_dlopen="no"])
33
34 AC_MSG_RESULT([${_efl_have_dlopen}])
35
36 if test "x${_efl_have_dlopen}" = "xno" ; then
37 AC_MSG_CHECKING([for dlopen in libdl])
38
39 LIBS_save="${LIBS}"
40 LIBS="${LIBS} -ldl"
41 AC_LINK_IFELSE(
42 [AC_LANG_PROGRAM(
43 [[
44#include <dlfcn.h>
45 ]],
46 [[
47void *h = dlopen(0, 0);
48 ]])],
49 [
50 EFL_DLOPEN_LIBS="-ldl"
51 _efl_have_dlopen="yes"
52 ],
53 [_efl_have_dlopen="no"])
54
55 LIBS="${LIBS_save}"
56
57 AC_MSG_RESULT([${_efl_have_dlopen}])
58 fi
59 ;;
60esac
61
62AC_SUBST([EFL_DLOPEN_LIBS])
63
64if test "x${_efl_have_dlopen}" = "xyes" ; then
65 AC_DEFINE([HAVE_DLOPEN], [1], [Define to 1 if you have the `dlopen' function.])
66fi
67
68AS_IF([test "x${_efl_have_dlopen}" = "xyes"], [$1], [$2])
69])
70
71dnl Usage: EFL_CHECK_DLADDR([, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
72dnl Call AC_SUBST(EFL_DLADDR_LIBS)
73dnl Define HAVE_DLADDR to 1if dladdr is available
74
75AC_DEFUN([EFL_CHECK_DLADDR],
76[
77case "$host_os" in
78 mingw*)
79 _efl_have_dladdr="yes"
80 EFL_DLADDR_LIBS="-ldl"
81 ;;
82 *)
83 _efl_have_dladdr="no"
84
85dnl Check is dladdr is in libc
86
87 AC_MSG_CHECKING([for dladdr in libc])
88 AC_LINK_IFELSE(
89 [AC_LANG_PROGRAM(
90 [[
91#define _GNU_SOURCE
92#include <dlfcn.h>
93 ]],
94 [[
95int res = dladdr(0, 0);
96 ]])],
97 [_efl_have_dladdr="yes"],
98 [_efl_have_dladdr="no"])
99
100 AC_MSG_RESULT([${_efl_have_dladdr}])
101
102 if test "x${_efl_have_dladdr}" = "xno" ; then
103 AC_MSG_CHECKING([for dladdr in libdl])
104
105 LIBS_save="${LIBS}"
106 LIBS="${LIBS} -ldl"
107 AC_LINK_IFELSE(
108 [AC_LANG_PROGRAM(
109 [[
110#define _GNU_SOURCE
111#include <dlfcn.h>
112 ]],
113 [[
114int res = dladdr(0, 0);
115 ]])],
116 [
117 EFL_DLADDR_LIBS="-ldl"
118 _efl_have_dladdr="yes"
119 ],
120 [_efl_have_dladdr="no"])
121
122 LIBS="${LIBS_save}"
123
124 AC_MSG_RESULT([${_efl_have_dladdr}])
125 fi
126 ;;
127esac
128
129AC_SUBST([EFL_DLADDR_LIBS])
130
131if test "x${_efl_have_dladdr}" = "xyes" ; then
132 AC_DEFINE([HAVE_DLADDR], [1], [Define to 1 if you have the `dladdr' function.])
133fi
134
135AS_IF([test "x${_efl_have_dladdr}" = "xyes"], [$1], [$2])
136])
diff --git a/src/Makefile.am b/src/Makefile.am
index 0e1e124..12f025e 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1,6 +1,3 @@
1ACLOCAL_AMFLAGS = -I m4 1MAINTAINERCLEANFILES = Makefile.in
2MAINTAINERCLEANFILES = Makefile.in aclocal.m4 config.guess config.h.in \
3 config.sub configure depcomp install-sh ltmain.sh \
4 missing module.desktop config.rpath mkinstalldirs
5 2
6SUBDIRS = lib plugins bin 3SUBDIRS = lib plugins bin
diff --git a/src/bin/Makefile.am b/src/bin/Makefile.am
index 90a45a9..e77c41f 100644
--- a/src/bin/Makefile.am
+++ b/src/bin/Makefile.am
@@ -7,11 +7,11 @@ AM_CPPFLAGS = \
7-DPACKAGE_BIN_DIR=\"$(bindir)\" \ 7-DPACKAGE_BIN_DIR=\"$(bindir)\" \
8-DPACKAGE_LIB_DIR=\"$(libdir)\" \ 8-DPACKAGE_LIB_DIR=\"$(libdir)\" \
9-DPACKAGE_DATA_DIR=\"$(datadir)/$(PACKAGE)\" \ 9-DPACKAGE_DATA_DIR=\"$(datadir)/$(PACKAGE)\" \
10@E_CFLAGS@ 10@EWEATHER_CFLAGS@
11 11
12bin_PROGRAMS = eweather_test 12bin_PROGRAMS = eweather_test
13 13
14eweather_test_SOURCES = eweather_test.c 14eweather_test_SOURCES = eweather_test.c
15 15
16eweather_test_LDADD = @E_LIBS@ $(top_builddir)/src/lib/libeweather.la 16eweather_test_LDADD = @EWEATHER_LIBS@ $(top_builddir)/src/lib/libeweather.la
17 17
diff --git a/src/bin/eweather_test.c b/src/bin/eweather_test.c
index 169f6d3..b3198a0 100644
--- a/src/bin/eweather_test.c
+++ b/src/bin/eweather_test.c
@@ -1,3 +1,6 @@
1#ifdef HAVE_CONFIG_H
2# include "config.h"
3#endif
1 4
2#include <stdlib.h> 5#include <stdlib.h>
3#include <stdio.h> 6#include <stdio.h>
@@ -10,13 +13,12 @@
10 13
11#include "EWeather_Smart.h" 14#include "EWeather_Smart.h"
12 15
13Ecore_Evas *ecore_evas;
14Evas *evas;
15Evas_Object *ow; 16Evas_Object *ow;
16EWeather *eweather; 17EWeather *eweather;
17Evas_Object *bg; 18Evas_Object *bg;
18 19
19int i_theme = 0; 20int i_theme = 0;
21
20static const char* _themes[] = 22static const char* _themes[] =
21{ 23{
22 PACKAGE_DATA_DIR"/default/theme.edj", 24 PACKAGE_DATA_DIR"/default/theme.edj",
@@ -24,24 +26,24 @@ static const char* _themes[] =
24}; 26};
25 27
26 28
27 static void 29static void
28_resize_cb(Ecore_Evas *ee) 30_resize_cb(Ecore_Evas *ee)
29{ 31{
30 Evas_Coord w, h; 32 Evas_Coord w, h;
31 33
32 evas_output_viewport_get(evas, NULL, NULL, &w, &h); 34 evas_output_viewport_get(ecore_evas_get(ee), NULL, NULL, &w, &h);
33 evas_object_resize(ow, w, h); 35 evas_object_resize(ow, w, h);
34 evas_object_resize(bg, w, h); 36 evas_object_resize(bg, w, h);
35} 37}
36 38
37 static void 39static void
38_delete_request_cb(Ecore_Evas *ee) 40_delete_request_cb(Ecore_Evas *ee)
39{ 41{
40 ecore_main_loop_quit(); 42 ecore_main_loop_quit();
41} 43}
42 44
43 static void 45static void
44_key_up_cb(void *data, Evas *evas, Evas_Object *o_day, void *event) 46_key_up_cb(void *data, Evas *e, Evas_Object *o_day, void *event)
45{ 47{
46 i_theme = (i_theme + 1 ) %2; 48 i_theme = (i_theme + 1 ) %2;
47 49
@@ -52,17 +54,18 @@ _key_up_cb(void *data, Evas *evas, Evas_Object *o_day, void *event)
52 54
53int main(int argc, char **argv) 55int main(int argc, char **argv)
54{ 56{
57 Ecore_Evas *ecore_evas;
58 Evas *evas;
55 Eina_Array *array; 59 Eina_Array *array;
56 Eina_Module *m; 60 Eina_Module *m;
57 int i; 61 unsigned int i;
58 Eina_Array_Iterator it; 62 Eina_Array_Iterator it = NULL;
59 63
60 eina_init(); 64 if (!ecore_evas_init()) return -1;
65 if (!edje_init()) return -1;
61 66
62 edje_init();
63 edje_frametime_set(1.0 / 30.0); 67 edje_frametime_set(1.0 / 30.0);
64 68
65 if (!ecore_evas_init()) return -1;
66 ecore_evas = ecore_evas_new(NULL, 0, 0, 400, 600, NULL); 69 ecore_evas = ecore_evas_new(NULL, 0, 0, 400, 600, NULL);
67 if (!ecore_evas) return -1; 70 if (!ecore_evas) return -1;
68 ecore_evas_callback_delete_request_set(ecore_evas, _delete_request_cb); 71 ecore_evas_callback_delete_request_set(ecore_evas, _delete_request_cb);
@@ -70,7 +73,7 @@ int main(int argc, char **argv)
70 ecore_evas_callback_resize_set(ecore_evas, _resize_cb); 73 ecore_evas_callback_resize_set(ecore_evas, _resize_cb);
71 ecore_evas_title_set(ecore_evas, "EWeather Test Program"); 74 ecore_evas_title_set(ecore_evas, "EWeather Test Program");
72 ecore_evas_name_class_set(ecore_evas, "eweather_test", "main"); 75 ecore_evas_name_class_set(ecore_evas, "eweather_test", "main");
73 ecore_evas_show(ecore_evas); 76
74 evas = ecore_evas_get(ecore_evas); 77 evas = ecore_evas_get(ecore_evas);
75 78
76 //bg 79 //bg
@@ -104,8 +107,13 @@ int main(int argc, char **argv)
104 printf("Press any key to change the theme\n"); 107 printf("Press any key to change the theme\n");
105 // 108 //
106 109
110 ecore_evas_show(ecore_evas);
111
107 ecore_main_loop_begin(); 112 ecore_main_loop_begin();
108 113
114 ecore_evas_shutdown();
115 edje_shutdown();
116
109 return 1; 117 return 1;
110} 118}
111 119
diff --git a/src/lib/EWeather.h b/src/lib/EWeather.h
index 1fdf097..656baec 100644
--- a/src/lib/EWeather.h
+++ b/src/lib/EWeather.h
@@ -1,5 +1,5 @@
1#ifndef EWEATHER_INC 1#ifndef EWEATHER_H
2#define EWEATHER_INC 2#define EWEATHER_H
3 3
4#include <Eina.h> 4#include <Eina.h>
5 5
diff --git a/src/lib/EWeather_Plugins.h b/src/lib/EWeather_Plugins.h
index 38d8e88..fef483c 100644
--- a/src/lib/EWeather_Plugins.h
+++ b/src/lib/EWeather_Plugins.h
@@ -1,10 +1,7 @@
1#ifndef EWEATHER_PLUGINS_INC 1#ifndef EWEATHER_PLUGINS_H
2#define EWEATHER_PLUGINS_INC 2#define EWEATHER_PLUGINS_H
3 3
4#include "EWeather.h" 4#include <EWeather.h>
5#include <Ecore_File.h>
6#include <string.h>
7#include <stdio.h>
8 5
9typedef struct EWeather_Plugin EWeather_Plugin; 6typedef struct EWeather_Plugin EWeather_Plugin;
10typedef void (*Plugin_Init) (EWeather *eweather); 7typedef void (*Plugin_Init) (EWeather *eweather);
diff --git a/src/lib/EWeather_Smart.h b/src/lib/EWeather_Smart.h
index 8d5a990..e0a42da 100644
--- a/src/lib/EWeather_Smart.h
+++ b/src/lib/EWeather_Smart.h
@@ -1,10 +1,8 @@
1#ifndef EWEATHER_SMART_INC 1#ifndef EWEATHER_SMART_H
2#define EWEATHER_SMART_INC 2#define EWEATHER_SMART_H
3 3
4#include "EWeather.h" 4#include <Evas.h>
5#include "Evas.h" 5#include <EWeather.h>
6#include "Edje.h"
7#include <stdio.h>
8 6
9typedef enum EWeather_Object_Mode EWeather_Object_Mode; 7typedef enum EWeather_Object_Mode EWeather_Object_Mode;
10 8
diff --git a/src/lib/Makefile.am b/src/lib/Makefile.am
index 13fd46b..2aad55b 100644
--- a/src/lib/Makefile.am
+++ b/src/lib/Makefile.am
@@ -6,20 +6,14 @@ AM_CPPFLAGS = \
6-I$(top_srcdir)/src/lib \ 6-I$(top_srcdir)/src/lib \
7-DPACKAGE_BIN_DIR=\"$(bindir)\" \ 7-DPACKAGE_BIN_DIR=\"$(bindir)\" \
8-DPACKAGE_LIB_DIR=\"$(libdir)\" \ 8-DPACKAGE_LIB_DIR=\"$(libdir)\" \
9-DPACKAGE_DATA_DIR=\"$(datadir)/$(PACKAGE)\"
10
11INCLUDES = \
12-I. \
13-I$(top_srcdir)/src/lib \
14-DPACKAGE_BIN_DIR=\"$(bindir)\" \
15-DPACKAGE_LIB_DIR=\"$(libdir)\" \
16-DPACKAGE_DATA_DIR=\"$(datadir)/$(PACKAGE)\" \ 9-DPACKAGE_DATA_DIR=\"$(datadir)/$(PACKAGE)\" \
17@E_CFLAGS@ 10-DPLUGINS_DIR=\"$(pkglibdir)/plugins\" \
18 11@EWEATHER_CFLAGS@
19 12
20include_HEADERS = EWeather.h \ 13include_HEADERS = \
21 EWeather_Plugins.h \ 14EWeather.h \
22 EWeather_Smart.h 15EWeather_Plugins.h \
16EWeather_Smart.h
23 17
24lib_LTLIBRARIES = libeweather.la 18lib_LTLIBRARIES = libeweather.la
25 19
@@ -28,8 +22,5 @@ eweather.c \
28plugins.c \ 22plugins.c \
29eweather_smart.c 23eweather_smart.c
30 24
31libeweather_la_DEPENDENCIES = $(top_builddir)/config.h 25libeweather_la_LIBADD = @EWEATHER_LIBS@ -lm
32libeweather_la_LDFLAGS = @E_LIBS@ -lm 26libeweather_la_LDFLAGS = -no-undefined @lt_enable_auto_import@ -version-info @version_info@
33
34clean-local:
35 @rm -rf *.gcno
diff --git a/src/lib/eweather.c b/src/lib/eweather.c
index df1a320..e46d399 100644
--- a/src/lib/eweather.c
+++ b/src/lib/eweather.c
@@ -1,3 +1,7 @@
1#ifdef HAVE_CONFIG_H
2# include "config.h"
3#endif
4
1#include "EWeather_Plugins.h" 5#include "EWeather_Plugins.h"
2 6
3EWeather *eweather_new() 7EWeather *eweather_new()
@@ -10,7 +14,7 @@ EWeather *eweather_new()
10void eweather_free(EWeather *eweather) 14void eweather_free(EWeather *eweather)
11{ 15{
12 EWeather_Data *e_data; 16 EWeather_Data *e_data;
13 if(eweather->plugin.array) 17 if (eweather->plugin.array)
14 { 18 {
15 eina_module_list_unload(eweather->plugin.array); 19 eina_module_list_unload(eweather->plugin.array);
16 eina_module_list_free(eweather->plugin.array); 20 eina_module_list_free(eweather->plugin.array);
@@ -24,13 +28,13 @@ void eweather_free(EWeather *eweather)
24 28
25void eweather_plugin_set(EWeather *eweather, Eina_Module *module) 29void eweather_plugin_set(EWeather *eweather, Eina_Module *module)
26{ 30{
27 if(eweather->plugin.module) 31 if (eweather->plugin.module)
28 { 32 {
29 eweather_plugin_shutdown(eweather); 33 eweather_plugin_shutdown(eweather);
30 } 34 }
31 35
32 eweather->plugin.module = module; 36 eweather->plugin.module = module;
33 if(module) 37 if (module)
34 eweather_plugin_load(eweather); 38 eweather_plugin_load(eweather);
35} 39}
36 40
@@ -38,14 +42,14 @@ void eweather_plugin_byname_set(EWeather *eweather, const char *name)
38{ 42{
39 Eina_Array *array; 43 Eina_Array *array;
40 Eina_Module *m; 44 Eina_Module *m;
41 int i; 45 unsigned int i = 0;
42 Eina_Array_Iterator it; 46 Eina_Array_Iterator it = NULL;
43 47
44 array = eweather_plugins_list_get(eweather); 48 array = eweather_plugins_list_get(eweather);
45 EINA_ARRAY_ITER_NEXT(array, i, m, it) 49 EINA_ARRAY_ITER_NEXT(array, i, m, it)
46 { 50 {
47 EWeather_Plugin *plugin = eina_module_symbol_get(m, "_plugin_class"); 51 EWeather_Plugin *plugin = eina_module_symbol_get(m, "_plugin_class");
48 if(plugin && !strcmp(name, plugin->name)) 52 if (plugin && !strcmp(name, plugin->name))
49 { 53 {
50 eweather_plugin_set(eweather, m); 54 eweather_plugin_set(eweather, m);
51 break ; 55 break ;
@@ -57,17 +61,17 @@ void eweather_poll_time_set(EWeather *eweather, int poll_time)
57{ 61{
58 eweather->poll_time = poll_time; 62 eweather->poll_time = poll_time;
59 63
60 if(eweather->plugin.plugin && eweather->plugin.plugin->poll_time_updated) 64 if (eweather->plugin.plugin && eweather->plugin.plugin->poll_time_updated)
61 eweather->plugin.plugin->poll_time_updated(eweather); 65 eweather->plugin.plugin->poll_time_updated(eweather);
62} 66}
63 67
64void eweather_code_set(EWeather *eweather, const char *code) 68void eweather_code_set(EWeather *eweather, const char *code)
65{ 69{
66 if(eweather->code) 70 if (eweather->code)
67 eina_stringshare_del(eweather->code); 71 eina_stringshare_del(eweather->code);
68 eweather->code = eina_stringshare_add(code); 72 eweather->code = eina_stringshare_add(code);
69 73
70 if(eweather->plugin.plugin && eweather->plugin.plugin->code_updated) 74 if (eweather->plugin.plugin && eweather->plugin.plugin->code_updated)
71 eweather->plugin.plugin->code_updated(eweather); 75 eweather->plugin.plugin->code_updated(eweather);
72} 76}
73 77
@@ -125,14 +129,14 @@ const char *eweather_data_date_get(EWeather_Data *eweather_data)
125 129
126EWeather_Data *eweather_data_current_get(EWeather *eweather) 130EWeather_Data *eweather_data_current_get(EWeather *eweather)
127{ 131{
128 if(!eweather->data) 132 if (!eweather->data)
129 eweather->data = eina_list_append(eweather->data, calloc(1, sizeof(EWeather_Data))); 133 eweather->data = eina_list_append(eweather->data, calloc(1, sizeof(EWeather_Data)));
130 return eina_list_data_get(eweather->data); 134 return eina_list_data_get(eweather->data);
131} 135}
132 136
133EWeather_Data *eweather_data_get(EWeather *eweather, int num) 137EWeather_Data *eweather_data_get(EWeather *eweather, int num)
134{ 138{
135 while(eina_list_count(eweather->data) <= num) 139 while (eina_list_count(eweather->data) <= (unsigned int)num)
136 { 140 {
137 EWeather_Data *e_data = calloc(1, sizeof(EWeather_Data)); 141 EWeather_Data *e_data = calloc(1, sizeof(EWeather_Data));
138 eweather->data = eina_list_append(eweather->data, e_data); 142 eweather->data = eina_list_append(eweather->data, e_data);
@@ -155,4 +159,3 @@ double eweather_utils_celcius_get(double farenheit)
155{ 159{
156 return (farenheit - 32.) * 5./9.; 160 return (farenheit - 32.) * 5./9.;
157} 161}
158
diff --git a/src/lib/eweather_smart.c b/src/lib/eweather_smart.c
index ff86c22..929cc17 100644
--- a/src/lib/eweather_smart.c
+++ b/src/lib/eweather_smart.c
@@ -1,6 +1,10 @@
1#ifdef HAVE_CONFIG_H
2# include "config.h"
3#endif
4
5#include <Edje.h>
6
1#include "EWeather_Smart.h" 7#include "EWeather_Smart.h"
2#include <math.h>
3#include <string.h>
4 8
5typedef struct _Smart_Data Smart_Data; 9typedef struct _Smart_Data Smart_Data;
6 10
@@ -97,7 +101,8 @@ static struct EWeather_Type_Signal _tab[] =
97 101
98const char *eweather_object_signal_type_get(EWeather_Type type) 102const char *eweather_object_signal_type_get(EWeather_Type type)
99{ 103{
100 int i; 104 size_t i;
105
101 for (i = 0; i < sizeof (_tab) / sizeof (struct EWeather_Type_Signal); ++i) 106 for (i = 0; i < sizeof (_tab) / sizeof (struct EWeather_Type_Signal); ++i)
102 if (_tab[i].type == type) 107 if (_tab[i].type == type)
103 { 108 {
@@ -126,9 +131,12 @@ EWeather *eweather_object_eweather_get(Evas_Object *obj)
126void eweather_theme_set(Evas_Object *obj, const char *theme) 131void eweather_theme_set(Evas_Object *obj, const char *theme)
127{ 132{
128 Eina_List *l; 133 Eina_List *l;
129 Evas_Object *o, *_obj; 134 Evas_Object *_obj;
130 Smart_Data *sd = evas_object_smart_data_get(obj); 135 Smart_Data *sd;
131 if(!sd) return ; 136 int mode;
137
138 sd = evas_object_smart_data_get(obj);
139 if (!sd) return ;
132 140
133 eina_stringshare_replace(&sd->theme, theme); 141 eina_stringshare_replace(&sd->theme, theme);
134 142
@@ -137,7 +145,7 @@ void eweather_theme_set(Evas_Object *obj, const char *theme)
137 EINA_LIST_FOREACH(sd->objs, l, _obj) 145 EINA_LIST_FOREACH(sd->objs, l, _obj)
138 edje_object_file_set(_obj, sd->theme, "weather"); 146 edje_object_file_set(_obj, sd->theme, "weather");
139 147
140 int mode = sd->mode; 148 mode = sd->mode;
141 sd->mode = -1; //No mode 149 sd->mode = -1; //No mode
142 eweather_object_mode_set(obj, mode); 150 eweather_object_mode_set(obj, mode);
143 151
@@ -147,7 +155,7 @@ void eweather_theme_set(Evas_Object *obj, const char *theme)
147void eweather_object_temp_format_set(Evas_Object *obj, EWeather_Temp type, const char *format) 155void eweather_object_temp_format_set(Evas_Object *obj, EWeather_Temp type, const char *format)
148{ 156{
149 Smart_Data *sd = evas_object_smart_data_get(obj); 157 Smart_Data *sd = evas_object_smart_data_get(obj);
150 if(!sd) return; 158 if (!sd) return;
151 if (type == EWEATHER_TEMP_FARENHEIT) 159 if (type == EWEATHER_TEMP_FARENHEIT)
152 eina_stringshare_replace(&sd->farenheit_format, format); 160 eina_stringshare_replace(&sd->farenheit_format, format);
153 else 161 else
@@ -159,13 +167,13 @@ void eweather_object_mode_set(Evas_Object *obj, EWeather_Object_Mode mode)
159 Eina_List *l; 167 Eina_List *l;
160 Evas_Object *o; 168 Evas_Object *o;
161 Smart_Data *sd = evas_object_smart_data_get(obj); 169 Smart_Data *sd = evas_object_smart_data_get(obj);
162 if(!sd) return ; 170 if (!sd) return ;
163 171
164 if(mode == sd->mode) return; 172 if (mode == sd->mode) return;
165 173
166 sd->mode = mode; 174 sd->mode = mode;
167 175
168 if(sd->mode == EWEATHER_OBJECT_MODE_FULLSCREEN) 176 if (sd->mode == EWEATHER_OBJECT_MODE_FULLSCREEN)
169 edje_object_signal_emit(sd->obj, "fullscreen", ""); 177 edje_object_signal_emit(sd->obj, "fullscreen", "");
170 else 178 else
171 { 179 {
@@ -205,9 +213,9 @@ _mouse_up_cb(void *data, Evas *evas, Evas_Object *o_day, void *event)
205 Smart_Data *sd = evas_object_smart_data_get(obj); 213 Smart_Data *sd = evas_object_smart_data_get(obj);
206 if (!sd) return; 214 if (!sd) return;
207 215
208 if(ev->button != 1) return ; 216 if (ev->button != 1) return ;
209 sd->thumbscroll.moved = EINA_TRUE; 217 sd->thumbscroll.moved = EINA_TRUE;
210 if(sd->thumbscroll.is) 218 if (sd->thumbscroll.is)
211 { 219 {
212 sd->thumbscroll.is = EINA_FALSE; 220 sd->thumbscroll.is = EINA_FALSE;
213 return ; 221 return ;
@@ -217,18 +225,18 @@ _mouse_up_cb(void *data, Evas *evas, Evas_Object *o_day, void *event)
217 i = 0; 225 i = 0;
218 EINA_LIST_FOREACH(sd->objs, l, o) 226 EINA_LIST_FOREACH(sd->objs, l, o)
219 { 227 {
220 if(o == o_day) 228 if (o == o_day)
221 break; 229 break;
222 else 230 else
223 i++; 231 i++;
224 } 232 }
225 if(o && sd->mode == EWEATHER_OBJECT_MODE_EXPOSE) 233 if (o && sd->mode == EWEATHER_OBJECT_MODE_EXPOSE)
226 { 234 {
227 sd->current_day = i; 235 sd->current_day = i;
228 update_main(obj); 236 update_main(obj);
229 } 237 }
230 238
231 if(o && sd->mode == EWEATHER_OBJECT_MODE_EXPOSE) 239 if (o && sd->mode == EWEATHER_OBJECT_MODE_EXPOSE)
232 { 240 {
233 eweather_object_mode_set(obj, EWEATHER_OBJECT_MODE_FULLSCREEN); 241 eweather_object_mode_set(obj, EWEATHER_OBJECT_MODE_FULLSCREEN);
234 } 242 }
@@ -246,7 +254,7 @@ _mouse_down_cb(void *data, Evas *evas, Evas_Object *o_day, void *event)
246 Smart_Data *sd = evas_object_smart_data_get(obj); 254 Smart_Data *sd = evas_object_smart_data_get(obj);
247 255
248 if (!sd) return; 256 if (!sd) return;
249 if(ev->button != 1) return ; 257 if (ev->button != 1) return ;
250 258
251 sd->thumbscroll.moved = EINA_FALSE; 259 sd->thumbscroll.moved = EINA_FALSE;
252 260
@@ -264,7 +272,7 @@ _mouse_move_cb(void *data, Evas *evas, Evas_Object *o_day, void *event)
264 Smart_Data *sd = evas_object_smart_data_get(obj); 272 Smart_Data *sd = evas_object_smart_data_get(obj);
265 if (!sd) return; 273 if (!sd) return;
266 274
267 if(sd->thumbscroll.moved) 275 if (sd->thumbscroll.moved)
268 return ; 276 return ;
269 277
270 sd->thumbscroll.is = EINA_TRUE; 278 sd->thumbscroll.is = EINA_TRUE;
@@ -272,18 +280,18 @@ _mouse_move_cb(void *data, Evas *evas, Evas_Object *o_day, void *event)
272 x = ev->cur.canvas.x; 280 x = ev->cur.canvas.x;
273 y = ev->cur.canvas.y; 281 y = ev->cur.canvas.y;
274 282
275 if(x - sd->thumbscroll.x > 60) 283 if (x - sd->thumbscroll.x > 60)
276 { 284 {
277 if(sd->current_day > 0) 285 if (sd->current_day > 0)
278 { 286 {
279 sd->current_day--; 287 sd->current_day--;
280 update_main(obj); 288 update_main(obj);
281 } 289 }
282 sd->thumbscroll.moved = EINA_TRUE; 290 sd->thumbscroll.moved = EINA_TRUE;
283 } 291 }
284 else if(x - sd->thumbscroll.x < -60) 292 else if (x - sd->thumbscroll.x < -60)
285 { 293 {
286 if(sd->current_day < eina_list_count(sd->objs)-1) 294 if (sd->current_day < (int)eina_list_count(sd->objs)-1)
287 { 295 {
288 sd->current_day++; 296 sd->current_day++;
289 update_main(obj); 297 update_main(obj);
@@ -308,19 +316,19 @@ static void _eweather_update_cb(void *data, EWeather *eweather)
308 316
309 ff = sd->farenheit_format; 317 ff = sd->farenheit_format;
310 cf = sd->celcius_format; 318 cf = sd->celcius_format;
311 if(sd->current_day >= eweather_data_count(sd->eweather)) 319 if (sd->current_day >= (int)eweather_data_count(sd->eweather))
312 sd->current_day = -1; 320 sd->current_day = -1;
313 321
314 if (sd->eweather) 322 if (sd->eweather)
315 for(i=0; i<eweather_data_count(sd->eweather); i++) 323 for (i = 0; i < (int)eweather_data_count(sd->eweather); i++)
316 { 324 {
317 EWeather_Data *e_data = eweather_data_get(sd->eweather, i); 325 EWeather_Data *e_data = eweather_data_get(sd->eweather, i);
318 326
319 if(sd->current_day<0) 327 if (sd->current_day<0)
320 sd->current_day = i; 328 sd->current_day = i;
321 329
322 o_day = eina_list_nth(sd->objs, i); 330 o_day = eina_list_nth(sd->objs, i);
323 if(!o_day) 331 if (!o_day)
324 { 332 {
325 o_day = edje_object_add(evas_object_evas_get(obj)); 333 o_day = edje_object_add(evas_object_evas_get(obj));
326 edje_object_file_set(o_day, sd->theme, "weather"); 334 edje_object_file_set(o_day, sd->theme, "weather");
@@ -331,7 +339,7 @@ static void _eweather_update_cb(void *data, EWeather *eweather)
331 evas_object_event_callback_add(o_day, EVAS_CALLBACK_MOUSE_UP, 339 evas_object_event_callback_add(o_day, EVAS_CALLBACK_MOUSE_UP,
332 _mouse_up_cb, obj); 340 _mouse_up_cb, obj);
333 341
334 if(sd->mode == EWEATHER_OBJECT_MODE_FULLSCREEN) 342 if (sd->mode == EWEATHER_OBJECT_MODE_FULLSCREEN)
335 evas_object_hide(o_day); 343 evas_object_hide(o_day);
336 } 344 }
337 345
@@ -343,21 +351,21 @@ static void _eweather_update_cb(void *data, EWeather *eweather)
343 351
344 edje_object_signal_emit(o_day, signal, ""); 352 edje_object_signal_emit(o_day, signal, "");
345 353
346 if(eweather_temp_type_get(eweather) == EWEATHER_TEMP_FARENHEIT) 354 if (eweather_temp_type_get(eweather) == EWEATHER_TEMP_FARENHEIT)
347 snprintf(buf, sizeof(buf), ff, eweather_data_temp_get(e_data)); 355 snprintf(buf, sizeof(buf), ff, eweather_data_temp_get(e_data));
348 else 356 else
349 snprintf(buf, sizeof(buf), cf, eweather_utils_celcius_get(eweather_data_temp_get(e_data))); 357 snprintf(buf, sizeof(buf), cf, eweather_utils_celcius_get(eweather_data_temp_get(e_data)));
350 358
351 edje_object_part_text_set(o_day, "text.temp", buf); 359 edje_object_part_text_set(o_day, "text.temp", buf);
352 360
353 if(eweather_temp_type_get(eweather) == EWEATHER_TEMP_FARENHEIT) 361 if (eweather_temp_type_get(eweather) == EWEATHER_TEMP_FARENHEIT)
354 snprintf(buf, sizeof(buf), ff, eweather_data_temp_min_get(e_data)); 362 snprintf(buf, sizeof(buf), ff, eweather_data_temp_min_get(e_data));
355 else 363 else
356 snprintf(buf, sizeof(buf), cf, eweather_utils_celcius_get(eweather_data_temp_min_get(e_data))); 364 snprintf(buf, sizeof(buf), cf, eweather_utils_celcius_get(eweather_data_temp_min_get(e_data)));
357 365
358 edje_object_part_text_set(o_day, "text.temp_min", buf); 366 edje_object_part_text_set(o_day, "text.temp_min", buf);
359 367
360 if(eweather_temp_type_get(eweather) == EWEATHER_TEMP_FARENHEIT) 368 if (eweather_temp_type_get(eweather) == EWEATHER_TEMP_FARENHEIT)
361 snprintf(buf, sizeof(buf), ff, eweather_data_temp_max_get(e_data)); 369 snprintf(buf, sizeof(buf), ff, eweather_data_temp_max_get(e_data));
362 else 370 else
363 snprintf(buf, sizeof(buf), cf, eweather_utils_celcius_get(eweather_data_temp_max_get(e_data))); 371 snprintf(buf, sizeof(buf), cf, eweather_utils_celcius_get(eweather_data_temp_max_get(e_data)));
@@ -368,7 +376,7 @@ static void _eweather_update_cb(void *data, EWeather *eweather)
368 edje_object_part_text_set(o_day, "text.date", eweather_data_date_get(e_data)); 376 edje_object_part_text_set(o_day, "text.date", eweather_data_date_get(e_data));
369 } 377 }
370 378
371 while(eina_list_count(sd->objs) > eweather_data_count(sd->eweather)) 379 while (eina_list_count(sd->objs) > eweather_data_count(sd->eweather))
372 { 380 {
373 Evas_Object *o = eina_list_data_get(eina_list_last(sd->objs)); 381 Evas_Object *o = eina_list_data_get(eina_list_last(sd->objs));
374 sd->objs = eina_list_remove(sd->objs, o); 382 sd->objs = eina_list_remove(sd->objs, o);
@@ -393,7 +401,7 @@ static void update_main(Evas_Object *obj)
393 401
394 ff = sd->farenheit_format; 402 ff = sd->farenheit_format;
395 cf = sd->celcius_format; 403 cf = sd->celcius_format;
396 if(sd->current_day < 0) return ; 404 if (sd->current_day < 0) return ;
397 405
398 eweather = sd->eweather; 406 eweather = sd->eweather;
399 407
@@ -406,21 +414,21 @@ static void update_main(Evas_Object *obj)
406 414
407 edje_object_signal_emit(sd->main, signal, ""); 415 edje_object_signal_emit(sd->main, signal, "");
408 416
409 if(eweather_temp_type_get(eweather) == EWEATHER_TEMP_FARENHEIT) 417 if (eweather_temp_type_get(eweather) == EWEATHER_TEMP_FARENHEIT)
410 snprintf(buf, sizeof(buf), ff, eweather_data_temp_get(e_data)); 418 snprintf(buf, sizeof(buf), ff, eweather_data_temp_get(e_data));
411 else 419 else
412 snprintf(buf, sizeof(buf), cf, eweather_utils_celcius_get(eweather_data_temp_get(e_data))); 420 snprintf(buf, sizeof(buf), cf, eweather_utils_celcius_get(eweather_data_temp_get(e_data)));
413 421
414 edje_object_part_text_set(sd->main, "text.temp", buf); 422 edje_object_part_text_set(sd->main, "text.temp", buf);
415 423
416 if(eweather_temp_type_get(eweather) == EWEATHER_TEMP_FARENHEIT) 424 if (eweather_temp_type_get(eweather) == EWEATHER_TEMP_FARENHEIT)
417 snprintf(buf, sizeof(buf), ff, eweather_data_temp_min_get(e_data)); 425 snprintf(buf, sizeof(buf), ff, eweather_data_temp_min_get(e_data));
418 else 426 else
419 snprintf(buf, sizeof(buf), cf, eweather_utils_celcius_get(eweather_data_temp_min_get(e_data))); 427 snprintf(buf, sizeof(buf), cf, eweather_utils_celcius_get(eweather_data_temp_min_get(e_data)));
420 428
421 edje_object_part_text_set(sd->main, "text.temp_min", buf); 429 edje_object_part_text_set(sd->main, "text.temp_min", buf);
422 430
423 if(eweather_temp_type_get(eweather) == EWEATHER_TEMP_FARENHEIT) 431 if (eweather_temp_type_get(eweather) == EWEATHER_TEMP_FARENHEIT)
424 snprintf(buf, sizeof(buf), ff, eweather_data_temp_max_get(e_data)); 432 snprintf(buf, sizeof(buf), ff, eweather_data_temp_max_get(e_data));
425 else 433 else
426 snprintf(buf, sizeof(buf), cf, eweather_utils_celcius_get(eweather_data_temp_max_get(e_data))); 434 snprintf(buf, sizeof(buf), cf, eweather_utils_celcius_get(eweather_data_temp_max_get(e_data)));
@@ -443,52 +451,55 @@ static void _sizing_eval(Evas_Object *obj)
443 const Evas_Object *content; 451 const Evas_Object *content;
444 Evas_Coord wmin, hmin; 452 Evas_Coord wmin, hmin;
445 double ratiow, ratioh, ratio; 453 double ratiow, ratioh, ratio;
454 double rac;
446 455
447 sd = evas_object_smart_data_get(obj); 456 sd = evas_object_smart_data_get(obj);
448 if (!sd) return; 457 if (!sd) return;
449 458
450 if(eina_list_count(sd->objs) <= 0) return ; 459 if (eina_list_count(sd->objs) <= 0) return ;
451 460
452 content = edje_object_part_object_get(sd->obj, "object.content"); 461 content = edje_object_part_object_get(sd->obj, "object.content");
453 evas_object_geometry_get(content, &x, &y, &w, &h); 462 evas_object_geometry_get(content, &x, &y, &w, &h);
454 463
455 edje_object_size_min_get(eina_list_data_get(sd->objs), &wmin, &hmin); 464 edje_object_size_min_get(eina_list_data_get(sd->objs), &wmin, &hmin);
456 465
457 double rac = sqrt(eina_list_count(sd->objs)); 466 rac = sqrt(eina_list_count(sd->objs));
458 col = rac; 467 col = rac;
459 if(rac > col) col++; 468 if (rac > col) col++;
460 469
461 line = eina_list_count(sd->objs) / col; 470 line = eina_list_count(sd->objs) / col;
462 if(eina_list_count(sd->objs) % col) line++; 471 if (eina_list_count(sd->objs) % col) line++;
463 472
464 473
465 l = sd->objs; 474 l = sd->objs;
466 475
467 if(col > 0) 476 if (col > 0)
468 w_size = (w-(col-1)*5)/col; 477 w_size = (w-(col-1)*5)/col;
469 if(line > 0) 478 if (line > 0)
470 h_size = (h-(line-1)*5)/line; 479 h_size = (h-(line-1)*5)/line;
471 480
472 ratiow = w_size / (double)wmin; 481 ratiow = w_size / (double)wmin;
473 ratioh = h_size / (double)hmin; 482 ratioh = h_size / (double)hmin;
474 ratio = ratiow; 483 ratio = ratiow;
475 if(ratiow>ratioh) ratio = ratioh; 484 if (ratiow>ratioh) ratio = ratioh;
476 485
477 w_size = wmin * ratio; 486 w_size = wmin * ratio;
478 h_size = hmin * ratio; 487 h_size = hmin * ratio;
479 488
489 w_inter = 0;
490 h_inter = 0;
480 491
481 if(col > 0) 492 if (col > 0)
482 w_inter = (w - w_size*col) / (col+1); 493 w_inter = (w - w_size*col) / (col+1);
483 if(line > 0) 494 if (line > 0)
484 h_inter = (h - h_size*line) / (line+1); 495 h_inter = (h - h_size*line) / (line+1);
485 496
486 x+=w_inter; 497 x += w_inter;
487 y+=h_inter; 498 y += h_inter;
488 499
489 for(j=0; j<line; j++) 500 for (j = 0; j < line; j++)
490 { 501 {
491 for(i=0; i<col && i*j<eina_list_count(sd->objs); i++) 502 for (i = 0; (i < col) && (i * j < (int)eina_list_count(sd->objs)); i++)
492 { 503 {
493 Evas_Object *o = eina_list_data_get(l); 504 Evas_Object *o = eina_list_data_get(l);
494 l = eina_list_next(l); 505 l = eina_list_next(l);
@@ -506,7 +517,7 @@ static void _sizing_eval(Evas_Object *obj)
506 ratioh = h_size / (double)hmin; 517 ratioh = h_size / (double)hmin;
507 518
508 ratio = ratiow; 519 ratio = ratiow;
509 if(ratiow>ratioh) ratio = ratioh; 520 if (ratiow>ratioh) ratio = ratioh;
510 edje_object_scale_set(sd->main, ratio); 521 edje_object_scale_set(sd->main, ratio);
511} 522}
512 523
@@ -518,23 +529,17 @@ _smart_init(void)
518{ 529{
519 if (smart) return; 530 if (smart) return;
520 { 531 {
521 static const Evas_Smart_Class sc = 532 static Evas_Smart_Class sc = EVAS_SMART_CLASS_INIT_NAME_VERSION(E_OBJ_NAME);
533 if (!sc.add)
522 { 534 {
523 E_OBJ_NAME, 535 sc.add = _smart_add;
524 EVAS_SMART_CLASS_VERSION, 536 sc.del = _smart_del;
525 _smart_add, 537 sc.move = _smart_move;
526 _smart_del, 538 sc.resize = _smart_resize;
527 _smart_move, 539 sc.show = _smart_show;
528 _smart_resize, 540 sc.hide = _smart_hide;
529 _smart_show, 541 sc.clip_set = _smart_clip_set;
530 _smart_hide, 542 sc.clip_unset = _smart_clip_unset;
531 NULL,
532 _smart_clip_set,
533 _smart_clip_unset,
534 NULL,
535 NULL,
536 NULL,
537 NULL
538 }; 543 };
539 smart = evas_smart_class_new(&sc); 544 smart = evas_smart_class_new(&sc);
540 } 545 }
@@ -544,10 +549,10 @@ _smart_init(void)
544_smart_add(Evas_Object * obj) 549_smart_add(Evas_Object * obj)
545{ 550{
546 Smart_Data *sd; 551 Smart_Data *sd;
547 Eina_Array_Iterator it; 552 Eina_Array_Iterator it = NULL;
548 Eina_Array *array; 553 Eina_Array *array;
549 Eina_Module *m; 554 Eina_Module *m;
550 int i; 555 unsigned int i;
551 556
552 sd = calloc(1, sizeof(Smart_Data)); 557 sd = calloc(1, sizeof(Smart_Data));
553 if (!sd) return; 558 if (!sd) return;
diff --git a/src/lib/plugins.c b/src/lib/plugins.c
index 335b276..8ec1c65 100644
--- a/src/lib/plugins.c
+++ b/src/lib/plugins.c
@@ -1,12 +1,16 @@
1#ifdef HAVE_CONFIG_H
2# include "config.h"
3#endif
4
1#include "EWeather_Plugins.h" 5#include "EWeather_Plugins.h"
2#include "../../config.h" 6
3 7
4Eina_Array *eweather_plugins_list_get(EWeather *eweather) 8Eina_Array *eweather_plugins_list_get(EWeather *eweather)
5{ 9{
6 if(!eweather->plugin.array) 10 if (!eweather->plugin.array)
7 { 11 {
8 eweather->plugin.array = eina_module_list_get(NULL, PLUGINSDIR, EINA_FALSE, NULL, NULL); 12 eweather->plugin.array = eina_module_list_get(NULL, PLUGINS_DIR, EINA_FALSE, NULL, NULL);
9 if(eweather->plugin.array) 13 if (eweather->plugin.array)
10 eina_module_list_load(eweather->plugin.array); 14 eina_module_list_load(eweather->plugin.array);
11 } 15 }
12 16
@@ -17,7 +21,7 @@ void eweather_plugin_load(EWeather *eweather)
17{ 21{
18 eweather->plugin.plugin = eina_module_symbol_get(eweather->plugin.module, "_plugin_class"); 22 eweather->plugin.plugin = eina_module_symbol_get(eweather->plugin.module, "_plugin_class");
19 23
20 if(eweather->plugin.plugin) 24 if (eweather->plugin.plugin)
21 eweather->plugin.plugin->init(eweather); 25 eweather->plugin.plugin->init(eweather);
22} 26}
23 27
@@ -26,16 +30,16 @@ void eweather_plugin_shutdown(EWeather *eweather)
26 EWeather_Data *e_data; 30 EWeather_Data *e_data;
27 31
28 EINA_LIST_FREE(eweather->data, e_data) 32 EINA_LIST_FREE(eweather->data, e_data)
29 free(e_data); 33 free(e_data);
30 34
31 if(eweather->plugin.plugin) 35 if (eweather->plugin.plugin)
32 eweather->plugin.plugin->shutdown(eweather); 36 eweather->plugin.plugin->shutdown(eweather);
33} 37}
34 38
35 39
36void eweather_plugin_update(EWeather *eweather) 40void eweather_plugin_update(EWeather *eweather)
37{ 41{
38 if(eweather->func.update_cb) 42 if (eweather->func.update_cb)
39 eweather->func.update_cb(eweather->func.data, eweather); 43 eweather->func.update_cb(eweather->func.data, eweather);
40} 44}
41 45
@@ -50,7 +54,7 @@ Eina_Module *eweather_plugin_search(EWeather *eweather, const char *name)
50 EINA_ARRAY_ITER_NEXT(array, i, m, it) 54 EINA_ARRAY_ITER_NEXT(array, i, m, it)
51 { 55 {
52 EWeather_Plugin *plugin = eina_module_symbol_get(m, "_plugin_class"); 56 EWeather_Plugin *plugin = eina_module_symbol_get(m, "_plugin_class");
53 if(plugin && !strcmp(name, plugin->name)) 57 if (plugin && !strcmp(name, plugin->name))
54 return m; 58 return m;
55 } 59 }
56 60
@@ -68,7 +72,7 @@ int eweather_plugin_id_search(EWeather *eweather, const char *name)
68 EINA_ARRAY_ITER_NEXT(array, i, m, it) 72 EINA_ARRAY_ITER_NEXT(array, i, m, it)
69 { 73 {
70 EWeather_Plugin *plugin = eina_module_symbol_get(m, "_plugin_class"); 74 EWeather_Plugin *plugin = eina_module_symbol_get(m, "_plugin_class");
71 if(plugin && !strcmp(name, plugin->name)) 75 if (plugin && !strcmp(name, plugin->name))
72 return i; 76 return i;
73 } 77 }
74 78
@@ -83,10 +87,10 @@ const char *eweather_plugin_name_get(EWeather *eweather, int i)
83 array = eweather_plugins_list_get(eweather); 87 array = eweather_plugins_list_get(eweather);
84 88
85 m = eina_array_data_get(array, i); 89 m = eina_array_data_get(array, i);
86 if(!m) return NULL; 90 if (!m) return NULL;
87 91
88 EWeather_Plugin *plugin = eina_module_symbol_get(m, "_plugin_class"); 92 EWeather_Plugin *plugin = eina_module_symbol_get(m, "_plugin_class");
89 if(!plugin) return NULL; 93 if (!plugin) return NULL;
90 94
91 return plugin->name; 95 return plugin->name;
92} 96}
@@ -99,10 +103,10 @@ const char *eweather_plugin_logo_get(EWeather *eweather, int i)
99 array = eweather_plugins_list_get(eweather); 103 array = eweather_plugins_list_get(eweather);
100 104
101 m = eina_array_data_get(array, i); 105 m = eina_array_data_get(array, i);
102 if(!m) return NULL; 106 if (!m) return NULL;
103 107
104 EWeather_Plugin *plugin = eina_module_symbol_get(m, "_plugin_class"); 108 EWeather_Plugin *plugin = eina_module_symbol_get(m, "_plugin_class");
105 if(!plugin) return NULL; 109 if (!plugin) return NULL;
106 110
107 return plugin->logo; 111 return plugin->logo;
108} 112}
@@ -115,17 +119,17 @@ const char *eweather_plugin_url_get(EWeather *eweather, int i)
115 array = eweather_plugins_list_get(eweather); 119 array = eweather_plugins_list_get(eweather);
116 120
117 m = eina_array_data_get(array, i); 121 m = eina_array_data_get(array, i);
118 if(!m) return NULL; 122 if (!m) return NULL;
119 123
120 EWeather_Plugin *plugin = eina_module_symbol_get(m, "_plugin_class"); 124 EWeather_Plugin *plugin = eina_module_symbol_get(m, "_plugin_class");
121 if(!plugin) return NULL; 125 if (!plugin) return NULL;
122 126
123 return plugin->url; 127 return plugin->url;
124} 128}
125 129
126const char *eweather_plugin_current_name_get(EWeather *eweather) 130const char *eweather_plugin_current_name_get(EWeather *eweather)
127{ 131{
128 if(!eweather->plugin.plugin) 132 if (!eweather->plugin.plugin)
129 return NULL; 133 return NULL;
130 134
131 return eweather->plugin.plugin->name; 135 return eweather->plugin.plugin->name;
@@ -133,7 +137,7 @@ const char *eweather_plugin_current_name_get(EWeather *eweather)
133 137
134const char *eweather_plugin_current_logo_get(EWeather *eweather) 138const char *eweather_plugin_current_logo_get(EWeather *eweather)
135{ 139{
136 if(!eweather->plugin.plugin) 140 if (!eweather->plugin.plugin)
137 return NULL; 141 return NULL;
138 142
139 return eweather->plugin.plugin->logo; 143 return eweather->plugin.plugin->logo;
@@ -141,9 +145,8 @@ const char *eweather_plugin_current_logo_get(EWeather *eweather)
141 145
142const char *eweather_plugin_current_url_get(EWeather *eweather) 146const char *eweather_plugin_current_url_get(EWeather *eweather)
143{ 147{
144 if(!eweather->plugin.plugin) 148 if (!eweather->plugin.plugin)
145 return NULL; 149 return NULL;
146 150
147 return eweather->plugin.plugin->url; 151 return eweather->plugin.plugin->url;
148} 152}
149
diff --git a/src/plugins/Makefile.am b/src/plugins/Makefile.am
index 1f336cc..9cf996e 100644
--- a/src/plugins/Makefile.am
+++ b/src/plugins/Makefile.am
@@ -1,10 +1,5 @@
1SUBDIRS = yahoo \
2 google \
3 test
4
5DIST_SUBDIRS = \
6 yahoo \
7 google \
8 test
9 1
10MAINTAINERCLEANFILES = Makefile.in 2MAINTAINERCLEANFILES = Makefile.in
3
4SUBDIRS = google test yahoo
5
diff --git a/src/plugins/google/Makefile.am b/src/plugins/google/Makefile.am
index 78956ef..3b1898b 100644
--- a/src/plugins/google/Makefile.am
+++ b/src/plugins/google/Makefile.am
@@ -1,21 +1,23 @@
1MAINTAINERCLEANFILES = Makefile.in 1MAINTAINERCLEANFILES = Makefile.in
2 2
3icondir = $(pkgdatadir) 3icondir = $(pkgdatadir)
4icon_DATA = google_logo.jpg 4icon_DATA = google_logo.jpg
5 5
6AM_CPPFLAGS = \
7-I$(top_srcdir)/src/plugins/google \
8-I$(top_srcdir)/src/lib \
9-DPACKAGE_DATA_DIR=\"$(datadir)/$(PACKAGE)\" \
10@EWEATHER_CFLAGS@
6 11
7AM_CPPFLAGS = -I$(top_srcdir)/src/plugins/google -I$(top_srcdir)/src/lib \ 12pkgdir = $(pkglibdir)/plugins
8 @E_CFLAGS@ -DPACKAGE_DATA_DIR=\"$(datadir)/$(PACKAGE)\"
9
10pkgdir = $(pluginsdir)
11pkg_LTLIBRARIES = google.la 13pkg_LTLIBRARIES = google.la
14
12google_la_SOURCES = google.c 15google_la_SOURCES = google.c
13google_la_DEPENDENCIES = $(top_builddir)/config.h 16google_la_LIBADD = @EWEATHER_LIBS@
14google_la_LIBADD = @E_LIBS@ 17google_la_LDFLAGS = -no-undefined @lt_enable_auto_import@ -module -avoid-version
15google_la_LDFLAGS = -module -avoid-version 18google_la_LIBTOOLFLAGS = --tag=disable-static
16 19
17EXTRA_DIST = google_logo.jpg 20EXTRA_DIST = google_logo.jpg
18 21
19clean-local: 22clean-local:
20 rm -rf *~ 23 rm -rf *~
21
diff --git a/src/plugins/test/Makefile.am b/src/plugins/test/Makefile.am
index ea05246..5780265 100644
--- a/src/plugins/test/Makefile.am
+++ b/src/plugins/test/Makefile.am
@@ -1,16 +1,17 @@
1MAINTAINERCLEANFILES = Makefile.in 1MAINTAINERCLEANFILES = Makefile.in
2 2
3AM_CPPFLAGS = -I$(top_srcdir)/src/plugins/test -I$(top_srcdir)/src/lib \ 3AM_CPPFLAGS = \
4 @E_CFLAGS@ 4-I$(top_srcdir)/src/plugins/test \
5-I$(top_srcdir)/src/lib \
6@EWEATHER_CFLAGS@
5 7
6pkgdir = $(pluginsdir) 8pkgdir = $(pkglibdir)/plugins
7pkg_LTLIBRARIES = test.la 9pkg_LTLIBRARIES = test.la
8test_la_SOURCES = test.c
9test_la_DEPENDENCIES = $(top_builddir)/config.h
10test_la_LIBADD = @E_LIBS@
11test_la_LDFLAGS = -module -avoid-version
12 10
11test_la_SOURCES = test.c
12test_la_LIBADD = @EWEATHER_LIBS@
13test_la_LDFLAGS = -no-undefined @lt_enable_auto_import@ -module -avoid-version
14test_la_LIBTOOLFLAGS = --tag=disable-static
13 15
14clean-local: 16clean-local:
15 rm -rf *~ 17 rm -rf *~
16
diff --git a/src/plugins/yahoo/Makefile.am b/src/plugins/yahoo/Makefile.am
index b2ffe0e..ba91dfb 100644
--- a/src/plugins/yahoo/Makefile.am
+++ b/src/plugins/yahoo/Makefile.am
@@ -1,21 +1,23 @@
1MAINTAINERCLEANFILES = Makefile.in 1MAINTAINERCLEANFILES = Makefile.in
2 2
3icondir = $(pkgdatadir) 3icondir = $(pkgdatadir)
4icon_DATA = yahoo_logo.jpg 4icon_DATA = yahoo_logo.jpg
5 5
6AM_CPPFLAGS = -I$(top_srcdir)/src/plugins/yahoo -I$(top_srcdir)/src/lib \ 6AM_CPPFLAGS = \
7 @E_CFLAGS@ -DPACKAGE_DATA_DIR=\"$(datadir)/$(PACKAGE)\" 7-I$(top_srcdir)/src/plugins/yahoo \
8-I$(top_srcdir)/src/lib \
9-DPACKAGE_DATA_DIR=\"$(datadir)/$(PACKAGE)\" \
10@EWEATHER_CFLAGS@
8 11
9pkgdir = $(pluginsdir) 12pkgdir = $(pkglibdir)/plugins
10pkg_LTLIBRARIES = yahoo.la 13pkg_LTLIBRARIES = yahoo.la
14
11yahoo_la_SOURCES = yahoo.c 15yahoo_la_SOURCES = yahoo.c
12yahoo_la_DEPENDENCIES = $(top_builddir)/config.h 16yahoo_la_LIBADD = @EWEATHER_LIBS@
13yahoo_la_LIBADD = @E_LIBS@ 17yahoo_la_LDFLAGS = -no-undefined @lt_enable_auto_import@ -module -avoid-version
14yahoo_la_LDFLAGS = -module -avoid-version 18yahoo_la_LIBTOOLFLAGS = --tag=disable-static
15 19
16EXTRA_DIST = yahoo_logo.jpg 20EXTRA_DIST = yahoo_logo.jpg
17 21
18
19clean-local: 22clean-local:
20 rm -rf *~ 23 rm -rf *~
21