Jabber WindowGram Client (JWGC)

Introduction Screenshots Installation Downloads
Documentation Browse Source Resources Project Site

Stable Version
-none-

Latest Version
beta5



Main Page | Alphabetical List | Data Structures | Directories | File List | Data Fields | Globals

xode_from.c File Reference

#include <libxode.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

Go to the source code of this file.

Functions

xode xode_from_str (char *str, int len)
xode xode_from_file (char *file)
int xode_to_file (char *file, xode node)


Function Documentation

xode xode_from_file char *  file  ) 
 

Definition at line 109 of file xode_from.c.

References dprintf(), dXML, errno, getenv(), NULL, snprintf, XML_ErrorString(), XML_GetErrorCode(), XML_Parse(), XML_Parser, XML_ParserCreate(), XML_ParserFree(), XML_SetCharacterDataHandler(), XML_SetElementHandler(), XML_SetUserData(), xode, and xode_free().

00110 {
00111     XML_Parser p;
00112     xode *x, node; /* pointer to an xmlnode */
00113     char buf[BUFSIZ];
00114     int done, fd, len;
00115     char _file[1000];
00116 
00117     if(NULL == file)
00118         return NULL;
00119 
00120     /* perform tilde expansion */
00121     if(*file == '~')
00122     {
00123         char *env = getenv("HOME");
00124         if(env != NULL)
00125             snprintf((char*)_file, 1000, "%s%s", env, file + 1);
00126         else
00127             snprintf((char*)_file, 1000, "%s", file);
00128     }
00129     else
00130     {
00131         snprintf((char*)_file, 1000, "%s", file);
00132     }
00133 
00134     fd = open((char*)_file,O_RDONLY);
00135     if(fd < 0) {
00136         dprintf(dXML, "unable to open file [%d]: %s\n", errno, _file);
00137         return NULL;
00138     }
00139 
00140     x = malloc(sizeof(void *));
00141 
00142     *x = NULL; /* pointer to NULL */
00143     p = XML_ParserCreate(NULL);
00144     XML_SetUserData(p, x);
00145     XML_SetElementHandler(p, _xode_expat_startElement, _xode_expat_endElement);
00146     XML_SetCharacterDataHandler(p, _xode_expat_charData);
00147     do{
00148         len = read(fd, buf, BUFSIZ);
00149         done = len < BUFSIZ;
00150         if(!XML_Parse(p, buf, len, done))
00151         {
00152             dprintf(dXML, "xmlnode_file_parseerror: %s",(char *)XML_ErrorString(XML_GetErrorCode(p)));
00153             xode_free(*x);
00154             *x = NULL;
00155             done = 1;
00156         }
00157     }while(!done);
00158 
00159     node = *x;
00160     XML_ParserFree(p);
00161     free(x);
00162     close(fd);
00163     return node; /* return the xmlnode x points to */
00164 }

xode xode_from_str char *  str,
int  len
 

Definition at line 79 of file xode_from.c.

References dprintf(), dXML, NULL, XML_ErrorString(), XML_GetErrorCode(), XML_Parse(), XML_Parser, XML_ParserCreate(), XML_ParserFree(), XML_SetCharacterDataHandler(), XML_SetElementHandler(), XML_SetUserData(), xode, and xode_free().

00080 {
00081     XML_Parser p;
00082     xode *x, node; /* pointer to an xmlnode */
00083 
00084     if(NULL == str)
00085         return NULL;
00086 
00087     if(len == -1)
00088         len = strlen(str);
00089 
00090     x = malloc(sizeof(void *));
00091 
00092     *x = NULL; /* pointer to NULL */
00093     p = XML_ParserCreate(NULL);
00094     XML_SetUserData(p, x);
00095     XML_SetElementHandler(p, _xode_expat_startElement, _xode_expat_endElement);
00096     XML_SetCharacterDataHandler(p, _xode_expat_charData);
00097     if(!XML_Parse(p, str, len, 1))
00098     {
00099         dprintf(dXML, "xmlnode_str_error: %s",(char *)XML_ErrorString(XML_GetErrorCode(p)));
00100         xode_free(*x);
00101         *x = NULL;
00102     }
00103     node = *x;
00104     free(x);
00105     XML_ParserFree(p);
00106     return node; /* return the xmlnode x points to */
00107 }

int xode_to_file char *  file,
xode  node
 

Definition at line 166 of file xode_from.c.

References getenv(), NULL, snprintf, xode, and xode_to_str().

00167 {
00168     char *doc;
00169     int fd, i;
00170     char _file[1000];
00171 
00172     if(file == NULL || node == NULL)
00173         return -1;
00174 
00175     /* perform tilde expansion */
00176     if(*file == '~')
00177     {
00178         char *env = getenv("HOME");
00179         if(env != NULL)
00180             snprintf((char*)_file, 1000, "%s%s", env, file + 1);
00181         else
00182             snprintf((char*)_file, 1000, "%s", file);
00183     }
00184     else
00185     {
00186         snprintf((char*)_file, 1000, "%s", file);
00187     }
00188 
00189     fd = open((char*)&_file, O_CREAT | O_WRONLY | O_TRUNC, 0600);
00190     if(fd < 0)
00191         return -1;
00192 
00193     doc = xode_to_str(node);
00194     i = write(fd,doc,strlen(doc));
00195     if(i < 0)
00196         return -1;
00197 
00198     close(fd);
00199     return 1;
00200 }



Last updated at Tue Dec 18 21:07:42 PST 2007. This site and project hosted by...SourceForge.net Logo

Source Perspective by Fisheye