|
|
#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) |
|
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 }
|
|
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 }
|
|
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... |