MCPcopy Create free account
hub / github.com/OpenSIPS/opensips / xode_from_file

Function xode_from_file

modules/xmpp/xode_from.c:139–192  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

137}
138
139xode xode_from_file(char *file)
140{
141 XML_Parser p;
142 xode *x, node; /* pointer to an xmlnode */
143 char buf[BUFSIZ];
144 int done, fd, len;
145 char _file[1000];
146
147 if(NULL == file)
148 return NULL;
149
150 /* perform tilde expansion */
151 if(*file == '~')
152 {
153 char *env = getenv("HOME");
154 if(env != NULL)
155 snprintf((char*)_file, 1000, "%s%s", env, file + 1);
156 else
157 snprintf((char*)_file, 1000, "%s", file);
158 }
159 else
160 {
161 snprintf((char*)_file, 1000, "%s", file);
162 }
163
164 fd = open((char*)&_file,O_RDONLY);
165 if(fd < 0)
166 return NULL;
167
168 x = malloc(sizeof(void *));
169
170 *x = NULL; /* pointer to NULL */
171 p = XML_ParserCreate(NULL);
172 XML_SetUserData(p, x);
173 XML_SetElementHandler(p, _xode_expat_startElement, _xode_expat_endElement);
174 XML_SetCharacterDataHandler(p, _xode_expat_charData);
175 do{
176 len = read(fd, buf, BUFSIZ);
177 done = len < BUFSIZ;
178 if(!XML_Parse(p, buf, len, done))
179 {
180 /* jdebug(ZONE,"xmlnode_file_parseerror: %s",(char *)XML_ErrorString(XML_GetErrorCode(p)));*/
181 xode_free(*x);
182 *x = NULL;
183 done = 1;
184 }
185 }while(!done);
186
187 node = *x;
188 XML_ParserFree(p);
189 free(x);
190 close(fd);
191 return node; /* return the xmlnode x points to */
192}
193
194int xode_to_file(char *file, xode node)
195{

Callers

nothing calls this directly

Calls 1

xode_freeFunction · 0.70

Tested by

no test coverage detected