Index: /proj/ice/larour/issm-uci-clean/trunk-jpl/src/c/objects/KML/KML_Unknown.cpp =================================================================== --- /proj/ice/larour/issm-uci-clean/trunk-jpl/src/c/objects/KML/KML_Unknown.cpp (revision 11405) +++ /proj/ice/larour/issm-uci-clean/trunk-jpl/src/c/objects/KML/KML_Unknown.cpp (revision 11406) @@ -67,13 +67,27 @@ /*FUNCTION KML_Unknown::DeepEcho {{{1*/ void KML_Unknown::DeepEcho(const char* indent){ - bool flag=true; + char* valuei; + char* vtoken; + char nl[]={'\n','\0'}; + bool flag=true; _printf_(flag,"%sKML_Unknown %s:\n",indent,name); KML_Object::DeepEcho(indent); - if (value ) - _printf_(flag,"%s value: \"%s\"\n" ,indent,value); + if (value ) { + valuei=(char *) xmalloc((strlen(value)+1)*sizeof(char)); + memcpy(valuei,value,(strlen(value)+1)*sizeof(char)); + + vtoken=strtok(valuei,nl); + _printf_(flag,"%s value: \"%s" ,indent,vtoken); + + while (vtoken=strtok(NULL,nl)) + _printf_(flag,"\n%s %s" ,indent,vtoken); + _printf_(flag,"\"\n"); + + xfree((void**)&valuei); + } else _printf_(flag,"%s value: [none]\n" ,indent); @@ -83,14 +97,28 @@ /*FUNCTION KML_Unknown::Write {{{1*/ void KML_Unknown::Write(FILE* filout,const char* indent){ + char* valuei; + char* vtoken; + char nl[]={'\n','\0'}; + fprintf(filout,"%s<%s",indent,name); WriteAttrib(filout," "); fprintf(filout,">\n"); WriteCommnt(filout,indent); - if (value ) - fprintf(filout,"%s %s\n",indent,value); + if (value ) { + valuei=(char *) xmalloc((strlen(value)+1)*sizeof(char)); + memcpy(valuei,value,(strlen(value)+1)*sizeof(char)); + + vtoken=strtok(valuei,nl); + fprintf(filout,"%s %s\n",indent,vtoken); + + while (vtoken=strtok(NULL,nl)) + fprintf(filout,"%s %s\n",indent,vtoken); + xfree((void**)&valuei); + } + KML_Object::Write(filout,indent); fprintf(filout,"%s\n",indent,name); @@ -104,6 +132,7 @@ char* kstri; int ncom=0; char** pcom=NULL; + char nl[]={'\n','\0'}; /* get object name */ @@ -132,8 +161,15 @@ _error_("KML_Unknown::Read -- Unexpected closing tag %s.\n",kstri); else if (strncmp(kstri,"<",1)) { - value=(char *) xmalloc((strlen(kstri)+1)*sizeof(char)); - memcpy(value,kstri,(strlen(kstri)+1)*sizeof(char)); + if (value) { + value=(char *) xrealloc(value,(strlen(value)+1+strlen(kstri)+1)*sizeof(char)); + strcat(value,nl); + strcat(value,kstri); + } + else { + value=(char *) xmalloc((strlen(kstri)+1)*sizeof(char)); + memcpy(value,kstri,(strlen(kstri)+1)*sizeof(char)); + } } else if (!strncmp(kstri,"<",1))