| 25 |
|
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
| 26 |
|
*/ |
| 27 |
|
|
| 28 |
+ |
#if defined(_WIN32) || defined(_WIN64) |
| 29 |
+ |
#define EZXML_NOMMAP |
| 30 |
+ |
#endif |
| 31 |
+ |
|
| 32 |
|
#include <stdlib.h> |
| 33 |
|
#include <stdio.h> |
| 34 |
|
#include <stdarg.h> |
| 42 |
|
#include <sys/stat.h> |
| 43 |
|
#include "ezxml.h" |
| 44 |
|
|
| 45 |
< |
#ifdef _WIN32 |
| 42 |
< |
#include <io.h> |
| 43 |
< |
#define read _read |
| 44 |
< |
#define open _open |
| 45 |
< |
#define close _close |
| 46 |
< |
#endif |
| 45 |
> |
#include "platform.h" |
| 46 |
|
|
| 47 |
|
#define EZXML_WS "\t\r\n " /* whitespace */ |
| 48 |
|
#define EZXML_ERRL 128 /* maximum error string length */ |
| 73 |
|
return xml; |
| 74 |
|
} |
| 75 |
|
|
| 76 |
+ |
/* returns the given tag's character content or empty string if none */ |
| 77 |
+ |
char *ezxml_txt(ezxml_t xml) |
| 78 |
+ |
{ |
| 79 |
+ |
if (xml == NULL) |
| 80 |
+ |
return ""; |
| 81 |
+ |
return xml->txt; |
| 82 |
+ |
} |
| 83 |
+ |
|
| 84 |
|
/* returns the Nth tag with the same name in the same subsection or NULL if not */ |
| 85 |
|
/* found */ |
| 86 |
|
ezxml_t ezxml_idx(ezxml_t xml, int idx) |
| 929 |
|
ezxml_t ezxml_set_txt(ezxml_t xml, const char *txt) |
| 930 |
|
{ |
| 931 |
|
if (! xml) return NULL; |
| 932 |
+ |
if (txt == xml->txt) return xml; |
| 933 |
|
if (xml->flags & EZXML_TXTM) free(xml->txt); /* existing txt was malloced */ |
| 934 |
|
xml->flags &= ~EZXML_TXTM; |
| 935 |
|
xml->txt = (char *)txt; |
| 936 |
|
return xml; |
| 937 |
+ |
} |
| 938 |
+ |
|
| 939 |
+ |
/* add text to the current character content, allocating memory as needed (GW) */ |
| 940 |
+ |
ezxml_t ezxml_add_txt(ezxml_t xml, const char *txt) |
| 941 |
+ |
{ |
| 942 |
+ |
int len; |
| 943 |
+ |
if (! xml) return NULL; |
| 944 |
+ |
if (!*txt) return xml; |
| 945 |
+ |
len = strlen(xml->txt) + strlen(txt) + 1; |
| 946 |
+ |
if (xml->flags & EZXML_TXTM) { |
| 947 |
+ |
xml->txt = (char *)realloc(xml->txt, len); |
| 948 |
+ |
} else { |
| 949 |
+ |
xml->txt = strcpy((char *)malloc(len), xml->txt); |
| 950 |
+ |
xml->flags |= EZXML_TXTM; |
| 951 |
+ |
} |
| 952 |
+ |
strcat(xml->txt, txt); |
| 953 |
+ |
return xml; |
| 954 |
|
} |
| 955 |
|
|
| 956 |
|
/* Sets the given tag attribute or adds a new attribute if not found. A value */ |