Enlightenment CVS committal
Author : azundris
Project : misc
Module : erss
Dir : misc/erss/src
Modified Files:
erss.h net.c parse.c parse.h tooltip.c
Log Message:
* "le random commit"
===================================================================
RCS file: /cvsroot/enlightenment/misc/erss/src/erss.h,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -3 -r1.11 -r1.12
--- erss.h 21 Feb 2004 08:53:36 -0000 1.11
+++ erss.h 21 Feb 2004 09:20:55 -0000 1.12
@@ -44,6 +44,7 @@
typedef struct _erss_article {
Evas_Object *obj;
+ char *title;
char *url;
char *description;
time_t ts;
===================================================================
RCS file: /cvsroot/enlightenment/misc/erss/src/net.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- net.c 21 Feb 2004 08:53:36 -0000 1.1
+++ net.c 21 Feb 2004 09:20:55 -0000 1.2
@@ -100,7 +100,7 @@
Ecore_Con_Event_Server_Del *e = event;
char *buf = f->main_buffer;
char *temp;
- Erss_Article *ptr;
+ Erss_Article *item;
if (f->total_connects == 1)
printf ("%s info: disconnecting from %s...\n", PACKAGE,
cfg->hostname?cfg->hostname:"host");
@@ -114,24 +114,27 @@
* make room for the new items.
*/
if (f->list) {
- ptr = ewd_list_goto_first (f->list);
- while ((ptr = ewd_list_next(f->list))) {
+ item = ewd_list_goto_first (f->list);
+ while ((item = ewd_list_next(f->list))) {
/*
* Remove the evas object from the list
* and destory it.
*/
- if (ptr->obj)
- e_container_element_destroy (cont, ptr->obj);
+ if (item->obj)
+ e_container_element_destroy (cont, item->obj);
- if (ptr->url)
- free (ptr->url);
+ if (item->title)
+ free (item->title);
- if (ptr->description)
- free (ptr->description);
+ if (item->url)
+ free (item->url);
- free (ptr);
+ if (item->description)
+ free (item->description);
+
+ free (item);
}
/*
===================================================================
RCS file: /cvsroot/enlightenment/misc/erss/src/parse.c,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -3 -r1.25 -r1.26
--- parse.c 21 Feb 2004 08:53:36 -0000 1.25
+++ parse.c 21 Feb 2004 09:20:55 -0000 1.26
@@ -10,9 +10,10 @@
{
f->item=malloc(sizeof(Erss_Article));
memset(f->item,0,sizeof(Erss_Article));
+ f->item->title=NULL;
f->item->description=NULL;
f->item->url=NULL;
- f->item->ts=time(NULL);
+ f->item->ts=0L;
return f->item;
}
@@ -22,6 +23,32 @@
f->item = NULL;
}
+char *erss_desc_clean (char *description) {
+ /* remove potential tags. not using libXML here, contents may not
+ be well-formed... */
+
+ char *p;
+
+
if((description==NULL)||(*description=='\0')||((description=strdup(description))==NULL))
+ return NULL;
+
+ p=description;
+ while(*p) {
+ if(*p=='<') {
+ char *p2=p;
+ do {
+ p2++;
+ } while(*p2&&(*p2!='>'));
+ if(*p2)
+ memmove(p,p2+1,strlen(p2));
+ else
+ *p='\0'; }
+ else
+ p++; }
+
+ return description;
+}
+
static void erss_parse_story (erss_feed *f, xmlNodePtr cur)
{
Erss_Tooltip *tt = NULL;
@@ -65,7 +92,7 @@
free (text);
xmlFree (str);
}
-
+
if (cfg->item_url) {
if (!strcmp(cur->name, cfg->item_url) && f->item) {
str = xmlNodeListGetString(f->doc,
cur->xmlChildrenNode, 1);
@@ -79,21 +106,27 @@
xmlFree (str);
}
}
-
+
if (cfg->item_description) {
if (!strcmp(cur->name, cfg->item_description) && f->item) {
- str = xmlNodeListGetString(f->doc,
cur->xmlChildrenNode, 1);
+ char *desc;
- tt = erss_tooltip_new (str);
-
- if (f->item->obj) {
- evas_object_event_callback_add (f->item->obj,
- EVAS_CALLBACK_MOUSE_IN,
erss_tooltip_mouse_in, tt);
- evas_object_event_callback_add (f->item->obj,
- EVAS_CALLBACK_MOUSE_OUT,
erss_tooltip_mouse_out, tt);
+ if((str = xmlNodeListGetString(f->doc,
cur->xmlChildrenNode, 1))) {
+ if((desc = erss_desc_clean(str))) {
+ if((tt = erss_tooltip_new (desc))) {
+ if (f->item->obj) {
+
evas_object_event_callback_add (f->item->obj,
+
EVAS_CALLBACK_MOUSE_IN, erss_tooltip_mouse_in, tt);
+
evas_object_event_callback_add (f->item->obj,
+
EVAS_CALLBACK_MOUSE_OUT, erss_tooltip_mouse_out, tt);
+ }
+ } /*
+ if (f->item->description)
+ free (f->item->description); */
+ f->item->description=desc;
+ }
+ xmlFree (str);
}
-
- xmlFree (str);
}
}
@@ -101,12 +134,13 @@
}
}
-void erss_parse (erss_feed *f)
+int erss_parse (erss_feed *f)
{
xmlNodePtr cur;
if (f->doc == NULL ) {
fprintf(stderr, "%s warn: buffer not parsed successfully.\n", PACKAGE);
+ return ERSS_PARSE_FAIL;
}
cur = xmlDocGetRootElement(f->doc);
@@ -114,13 +148,13 @@
if (cur == NULL) {
fprintf(stderr,"%s error: empty buffer\n", PACKAGE);
xmlFreeDoc(f->doc);
- exit (-1);
+ return ERSS_PARSE_EMPTY;
}
cur = cur->xmlChildrenNode;
while (cur != NULL) {
if (ewd_list_nodes (f->list) >= cfg->num_stories)
- return;
+ return cfg->num_stories;
if (cfg->item_root) {
if (!strcmp(cur->name, cfg->item_root)) {
@@ -138,4 +172,6 @@
}
xmlFreeDoc(f->doc);
+
+ return ewd_list_nodes (f->list);
}
===================================================================
RCS file: /cvsroot/enlightenment/misc/erss/src/parse.h,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -3 -r1.9 -r1.10
--- parse.h 21 Feb 2004 08:53:36 -0000 1.9
+++ parse.h 21 Feb 2004 09:20:55 -0000 1.10
@@ -1,3 +1,9 @@
#include "erss.h"
-void erss_parse (erss_feed *);
+typedef enum {
+ ERSS_PARSE_SUCC=0,
+ ERSS_PARSE_FAIL=-1,
+ ERSS_PARSE_EMPTY=-2
+} erss_parse_error;
+
+int erss_parse (erss_feed *);
===================================================================
RCS file: /cvsroot/enlightenment/misc/erss/src/tooltip.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -3 -r1.6 -r1.7
--- tooltip.c 21 Feb 2004 08:53:36 -0000 1.6
+++ tooltip.c 21 Feb 2004 09:20:55 -0000 1.7
@@ -4,32 +4,6 @@
#include "tooltip.h"
#include "gui.h"
-char *erss_tooltip_clean (char *description) {
- /* remove potential tags. not using libXML here, contents may not
- be well-formed... */
-
- char *p;
-
-
if((description==NULL)||(*description=='\0')||((description=strdup(description))==NULL))
- return NULL;
-
- p=description;
- while(*p) {
- if(*p=='<') {
- char *p2=p;
- do {
- p2++;
- } while(*p2&&(*p2!='>'));
- if(*p2)
- memmove(p,p2+1,strlen(p2));
- else
- *p='\0'; }
- else
- p++; }
-
- return description;
-}
-
void erss_window_move_tooltip (Ecore_Evas * ee)
{
int x, y, w, h;
@@ -46,9 +20,8 @@
Erss_Tooltip *tt;
int x, y, w, h;
double ew, eh;
- char *text = erss_tooltip_clean(description);
- if(text == NULL)
+ if(description == NULL)
return NULL;
tt = malloc (sizeof (Erss_Tooltip));
@@ -90,7 +63,7 @@
etox_set_word_wrap(tt->etox, 1);
etox_set_alpha(tt->etox, 255);
evas_object_layer_set(tt->etox, 1000);
- etox_set_text (tt->etox, text);
+ etox_set_text (tt->etox, description);
evas_object_show (tt->etox);
evas_object_geometry_get(tt->etox, NULL, NULL, &ew, &eh);
@@ -106,8 +79,6 @@
ecore_evas_callback_resize_set(tt->ee, erss_window_resize);
ecore_evas_resize(tt->ee, ew + 10, eh + 10);
- free(text);
-
return tt;
}
-------------------------------------------------------
SF.Net is sponsored by: Speed Start Your Linux Apps Now.
Build and deploy apps & Web services for Linux with
a free DVD software kit from IBM. Click Now!
http://ads.osdn.com/?ad_id=1356&alloc_id=3438&op=click
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs