diff -up ast-8.0.1/channel.c.format ast-8.0.1/channel.c --- ast-8.0.1/channel.c.format 2014-10-17 02:04:56.000000000 -0600 +++ ast-8.0.1/channel.c 2014-10-18 19:29:38.541112982 -0600 @@ -4088,13 +4088,11 @@ static void WriteBegin( AstChannel *this } /* Append the "Begin" keyword followed by the class name. */ - line = astAppendString( line, &nc, "Begin " ); - line = astAppendString( line, &nc, class ); + line = astAppendString( line, &nc, "Begin %s", class ); /* If required, also append the comment. */ if ( astGetComment( this ) && *comment ) { - line = astAppendString( line, &nc, " \t# " ); - line = astAppendString( line, &nc, comment ); + line = astAppendString( line, &nc, " \t# %s", comment ); } /* Write out the resulting line of text. */ @@ -4227,8 +4225,7 @@ static void WriteDouble( AstChannel *thi } /* Append the name string followed by " = ". */ - line = astAppendString( line, &nc, name ); - line = astAppendString( line, &nc, " = " ); + line = astAppendString( line, &nc, "%s = ", name ); /* Format the value as a string and append this. Make sure "-0" isn't produced. Use a magic string to represent bad values. */ @@ -4241,12 +4238,11 @@ static void WriteDouble( AstChannel *thi } else { strcpy( buff, BAD_STRING ); } - line = astAppendString( line, &nc, buff ); + line = astAppendString( line, &nc, "%s", buff ); /* If required, also append the comment. */ if ( astGetComment( this ) && *comment ) { - line = astAppendString( line, &nc, " \t# " ); - line = astAppendString( line, &nc, comment ); + line = astAppendString( line, &nc, " \t# %s", comment ); } /* Write out the resulting line of text. */ @@ -4318,8 +4314,7 @@ static void WriteEnd( AstChannel *this, } /* Append the "End" keyword followed by the class name. */ - line = astAppendString( line, &nc, "End " ); - line = astAppendString( line, &nc, class ); + line = astAppendString( line, &nc, "End %s", class ); /* Write out the resulting line of text. */ OutputTextItem( this, line, status ); @@ -4445,17 +4440,14 @@ static void WriteInt( AstChannel *this, } /* Append the name string followed by " = ". */ - line = astAppendString( line, &nc, name ); - line = astAppendString( line, &nc, " = " ); + line = astAppendString( line, &nc, "%s = ", name ); /* Format the value as a decimal string and append this. */ - (void) sprintf( buff, "%d", value ); - line = astAppendString( line, &nc, buff ); + line = astAppendString( line, &nc, "%d", value ); /* If required, also append the comment. */ if ( astGetComment( this ) && *comment ) { - line = astAppendString( line, &nc, " \t# " ); - line = astAppendString( line, &nc, comment ); + line = astAppendString( line, &nc, " \t# %s", comment ); } /* Write out the resulting line of text. */ @@ -4578,13 +4570,11 @@ static void WriteIsA( AstChannel *this, } /* Append the "IsA" keyword followed by the class name. */ - line = astAppendString( line, &nc, "IsA " ); - line = astAppendString( line, &nc, class ); + line = astAppendString( line, &nc, "IsA %s", class ); /* If required, also append the comment. */ if ( astGetComment( this ) && *comment ) { - line = astAppendString( line, &nc, " \t# " ); - line = astAppendString( line, &nc, comment ); + line = astAppendString( line, &nc, " \t# %s", comment ); } /* Write out the resulting line of text. */ @@ -4715,13 +4705,11 @@ static void WriteObject( AstChannel *thi /* Append the name string followed by " =". The absence of a value on the right hand side indicates an Object value, whose definition follows. */ - line = astAppendString( line, &nc, name ); - line = astAppendString( line, &nc, " =" ); + line = astAppendString( line, &nc, "%s =", name ); /* If required, also append the comment. */ if ( astGetComment( this ) && *comment ) { - line = astAppendString( line, &nc, " \t# " ); - line = astAppendString( line, &nc, comment ); + line = astAppendString( line, &nc, " \t# %s", comment ); } /* Write out the resulting line of text. */ @@ -4861,8 +4849,7 @@ static void WriteString( AstChannel *thi /* Append the name string followed by " = " and an opening quote character (the string will be quoted to protect leading and trailing spaces). */ - line = astAppendString( line, &nc, name ); - line = astAppendString( line, &nc, " = \"" ); + line = astAppendString( line, &nc, "%s = \"", name ); /* We now append the value string, but must inspect each character so that quotes (appearing inside quotes) can be doubled. Determine the @@ -4897,8 +4884,7 @@ static void WriteString( AstChannel *thi /* If required, also append the comment. */ if ( astGetComment( this ) && *comment ) { - line = astAppendString( line, &nc, " \t# " ); - line = astAppendString( line, &nc, comment ); + line = astAppendString( line, &nc, " \t# %s", comment ); } /* Write out the resulting line of text. */ diff -up ast-8.0.1/frame.c.format ast-8.0.1/frame.c --- ast-8.0.1/frame.c.format 2014-10-17 02:04:56.000000000 -0600 +++ ast-8.0.1/frame.c 2014-10-18 19:29:38.544113039 -0600 @@ -9845,8 +9845,8 @@ L1: numbering of the primary frame. */ pfrm_setting = NULL; nc = 0; - pfrm_setting = astAppendString( pfrm_setting, &nc, pfrm_attrib ); - pfrm_setting = astAppendString( pfrm_setting, &nc, setting + axis_value ); + pfrm_setting = astAppendString( pfrm_setting, &nc, "%s", pfrm_attrib ); + pfrm_setting = astAppendString( pfrm_setting, &nc, "%s", setting + axis_value ); /* Attempt to set the attribute within the primary Frame. */ astSetAttrib( pfrm, pfrm_setting ); diff -up ast-8.0.1/memory.c.format ast-8.0.1/memory.c --- ast-8.0.1/memory.c.format 2014-10-17 02:04:56.000000000 -0600 +++ ast-8.0.1/memory.c 2014-10-18 19:29:38.545113058 -0600 @@ -2868,14 +2868,14 @@ static char *ChrMatcher( const char *tes /* Concatenate the sub-strings to form the final string. */ reslen = 0; for( ipart = 0; ipart < npart - 1; ipart++ ) { - result = astAppendString( result, &reslen, parts[ ipart ] ); + result = astAppendString( result, &reslen, "%s", parts[ ipart ] ); if( ipart < nsub ) { - result = astAppendString( result, &reslen, newsubs[ ipart ] ); + result = astAppendString( result, &reslen, "%s", newsubs[ ipart ] ); } else { - result = astAppendString( result, &reslen, matches[ ipart ] ); + result = astAppendString( result, &reslen, "%s", matches[ ipart ] ); } } - result = astAppendString( result, &reslen, parts[ ipart ] ); + result = astAppendString( result, &reslen, "%s", parts[ ipart ] ); /* Free resources. */ if( newsubs && newsubs != (char **) subs ) { diff -up ast-8.0.1/object.c.format ast-8.0.1/object.c --- ast-8.0.1/object.c.format 2014-10-17 02:04:56.000000000 -0600 +++ ast-8.0.1/object.c 2014-10-18 19:29:38.547113096 -0600 @@ -3057,13 +3057,9 @@ static void ToStringSink( const char *te the length of the currently allocated memory. */ data = astChannelData; -/* Append the supplied text to the end of the string, and update the - string length. */ - data->ptr = astAppendString( data->ptr, &(data->len), text ); - -/* Append a newline character to the end of the string, and update the - string length. */ - data->ptr = astAppendString( data->ptr, &(data->len), "\n" ); +/* Append the supplied text to the end of the string plus newline character, + and update the string length. */ + data->ptr = astAppendString( data->ptr, &(data->len), "%s\n", text ); } void astSet_( void *this_void, const char *settings, int *status, ... ) { diff -up ast-8.0.1/region.c.format ast-8.0.1/region.c --- ast-8.0.1/region.c.format 2014-10-17 02:04:56.000000000 -0600 +++ ast-8.0.1/region.c 2014-10-18 19:36:52.433619743 -0600 @@ -10154,7 +10154,6 @@ f The global status. /* Local Variables: */ AstPointSet *ps; /* PointSet holding mesh */ char *buffer = NULL; /* Buffer for line output text */ - char buf[ 40 ]; /* Buffer for floating poitn value */ double **ptr; /* Pointers to the mesh data */ int i; /* Axis index */ int j; /* Position index */ @@ -10196,13 +10195,12 @@ f The global status. /* Otherwise, if required, append the formatted value to the end of the buffer. */ } else if( format ){ - buffer = astAppendString( buffer, &nc, + buffer = astAppendString( buffer, &nc, "%s", astFormat( this, i, ptr[ i ][ j ] ) ); /* Otherwise, append the floating point value to the end of the buffer. */ } else { - sprintf( buf, "%g", ptr[ i ][ j ] ); - buffer = astAppendString( buffer, &nc, buf ); + buffer = astAppendString( buffer, &nc, "%g", ptr[ i ][ j ] ); } /* Add a separating tab to the end of the buffer. */ buffer = astAppendString( buffer, &nc, "\t" ); diff -up ast-8.0.1/stcschan.c.format ast-8.0.1/stcschan.c --- ast-8.0.1/stcschan.c.format 2014-10-17 02:04:56.000000000 -0600 +++ ast-8.0.1/stcschan.c 2014-10-18 19:45:42.432028995 -0600 @@ -463,7 +463,7 @@ static char *AddItem( AstStcsChan *this, result = astAppendString( result, nc, " " ); *crem = linelen - 3; } - result = astAppendString( result, nc, prefix ); + result = astAppendString( result, nc, "%s", prefix ); *crem -= len; } @@ -494,7 +494,7 @@ static char *AddItem( AstStcsChan *this, } /* Add the property value to the returned buffer. */ - result = astAppendString( result, nc, word ); + result = astAppendString( result, nc, "%s", word ); /* Add a traling space to the returned buffer, if there is room. */ if( !linelen || *crem > 0 ) { @@ -785,12 +785,9 @@ static char *ContextFragment( WordContex for( i = 0; i < NEWORD; i++ ) { if( con->words[ j ] ) { -/* Append this word to the buffer, extending the buffer size as - necessary. */ - *buf = astAppendString( *buf, &nc, con->words[ j ] ); - -/* Append a trailingh space. */ - *buf = astAppendString( *buf, &nc, " " ); +/* Append this word plus trailing space to the buffer, extending the buffer + size as necessary. */ + *buf = astAppendString( *buf, &nc, "%s ", con->words[ j ] ); } /* Increment the index of the next word to use in the cyclic list. Wrap @@ -1444,8 +1441,7 @@ static int GetRegionProps( AstStcsChan * if( centre[ i ] != AST__BAD ) { GetFmt( "CENTRE", spprops, i, defdigs, fmt, status ); (void) sprintf( buf, fmt, scale*centre[ i ] ); - prop = astAppendString( prop, &nc, buf ); - prop = astAppendString( prop, &nc, " " ); + prop = astAppendString( prop, &nc, "%s ", buf ); } else { ok = 0; @@ -1493,8 +1489,7 @@ static int GetRegionProps( AstStcsChan * } else { GetFmt( "LOLIMIT", spprops, i, defdigs, fmt, status ); (void) sprintf( buf, fmt, scale*lbnd[ i ] ); - prop = astAppendString( prop, &nc, buf ); - prop = astAppendString( prop, &nc, " " ); + prop = astAppendString( prop, &nc, "%s ", buf ); } } @@ -1514,8 +1509,7 @@ static int GetRegionProps( AstStcsChan * } else { GetFmt( "HILIMIT", spprops, i, defdigs, fmt, status ); (void) sprintf( buf, fmt, scale*ubnd[ i ] ); - prop = astAppendString( prop, &nc, buf ); - prop = astAppendString( prop, &nc, " " ); + prop = astAppendString( prop, &nc, " %s", buf ); } } @@ -1539,8 +1533,7 @@ static int GetRegionProps( AstStcsChan * if( centre[ i ] != AST__BAD ) { GetFmt( "CENTRE", spprops, i, defdigs, fmt, status ); (void) sprintf( buf, fmt, scale*centre[ i ] ); - prop = astAppendString( prop, &nc, buf ); - prop = astAppendString( prop, &nc, " " ); + prop = astAppendString( prop, &nc, "%s ", buf ); } else { ok = 0; @@ -1603,8 +1596,7 @@ static int GetRegionProps( AstStcsChan * for( i = 0; i < nspace; i++ ) { if( *p != AST__BAD ) { (void) sprintf( buf, fmt, scale*(*p) ); - prop = astAppendString( prop, &nc, buf ); - prop = astAppendString( prop, &nc, " " ); + prop = astAppendString( prop, &nc, "%s ", buf ); p += np; } else { astAddWarning( this, 1, "The supplied Polygon contains " @@ -1647,8 +1639,7 @@ static int GetRegionProps( AstStcsChan * if( centre[ i ] != AST__BAD ) { GetFmt( "POSITION", spprops, i, defdigs, fmt, status ); (void) sprintf( buf, fmt, scale*centre[ i ] ); - prop = astAppendString( prop, &nc, buf ); - prop = astAppendString( prop, &nc, " " ); + prop = astAppendString( prop, &nc, "%s ", buf ); } else { astAddWarning( this, 1, "The supplied PointList contains " @@ -3963,7 +3954,7 @@ static AstKeyMap *ReadProps( AstStcsChan /* Save the current word as the start of the START value. */ nc = 0; - prop = astAppendString( prop, &nc, word ); + prop = astAppendString( prop, &nc, "%s", word ); /* If the current word is "JD" or "MJD", the following word should be numerical. */ @@ -3979,8 +3970,7 @@ static AstKeyMap *ReadProps( AstStcsChan /* Append the second word to the first word. */ } else { - prop = astAppendString( prop, &nc, " " ); - prop = astAppendString( prop, &nc, word ); + prop = astAppendString( prop, &nc, " %s", word ); } /* Convert JD to MJD if required. */ @@ -4019,7 +4009,7 @@ static AstKeyMap *ReadProps( AstStcsChan /* Save the current word as the start of the STOP value. */ nc = 0; - prop = astAppendString( prop, &nc, word ); + prop = astAppendString( prop, &nc, "%s", word ); /* If the current word is "JD" or "MJD", the following word should be numerical. */ @@ -4035,8 +4025,7 @@ static AstKeyMap *ReadProps( AstStcsChan /* Append the second word to the first word. */ } else { - prop = astAppendString( prop, &nc, " " ); - prop = astAppendString( prop, &nc, word ); + prop = astAppendString( prop, &nc, " %s", word ); } /* Convert JD to MJD if required. */ @@ -4081,7 +4070,7 @@ static AstKeyMap *ReadProps( AstStcsChan /* Save the current word as the start of the TIME value. */ nc = 0; - prop = astAppendString( prop, &nc, word ); + prop = astAppendString( prop, &nc, "%s", word ); /* If the current word is "JD" or "MJD", the following word should be numerical. */ @@ -4097,8 +4086,7 @@ static AstKeyMap *ReadProps( AstStcsChan /* Append the second word to the first word. */ } else { - prop = astAppendString( prop, &nc, " " ); - prop = astAppendString( prop, &nc, word ); + prop = astAppendString( prop, &nc, " %s", word ); } /* Convert JD to MJD if required. */ @@ -4276,8 +4264,7 @@ static AstKeyMap *ReadProps( AstStcsChan "'%s' in an STC-S description: '%s'.", status, word, ContextFragment( &con, &fbuf, status ) ); } - prop = astAppendString( prop, &nc, word ); - prop = astAppendString( prop, &nc, " " ); + prop = astAppendString( prop, &nc, "%s ", word ); word = GetNextWord( this, &con, status ); } @@ -4401,8 +4388,7 @@ static AstKeyMap *ReadProps( AstStcsChan !strcmp( word, "keV" ) || !strcmp( word, "MeV" ) ) ) { - prop = astAppendString( prop, &nc, word ); - prop = astAppendString( prop, &nc, " " ); + prop = astAppendString( prop, &nc, "%s ", word ); nunit++; word = GetNextWord( this, &con, status ); } @@ -4453,8 +4439,7 @@ static AstKeyMap *ReadProps( AstStcsChan while( value != AST__BAD ) { if( nval < MAXVAL ) { val[ nval++ ] = value; - prop = astAppendString( prop, &nc, word ); - prop = astAppendString( prop, &nc, " " ); + prop = astAppendString( prop, &nc, "%s ", word ); word = GetNextWord( this, &con, status ); value = astChr2Double( word ); } else { @@ -4509,8 +4494,7 @@ static AstKeyMap *ReadProps( AstStcsChan while( value != AST__BAD ) { if( nval < MAXVAL ) { val[ nval++ ] = value; - prop = astAppendString( prop, &nc, word ); - prop = astAppendString( prop, &nc, " " ); + prop = astAppendString( prop, &nc, "%s ", word ); word = GetNextWord( this, &con, status ); value = astChr2Double( word ); } else { @@ -4565,8 +4549,7 @@ static AstKeyMap *ReadProps( AstStcsChan while( value != AST__BAD ) { if( nval < MAXVAL ) { val[ nval++ ] = value; - prop = astAppendString( prop, &nc, word ); - prop = astAppendString( prop, &nc, " " ); + prop = astAppendString( prop, &nc, "%s ", word ); word = GetNextWord( this, &con, status ); value = astChr2Double( word ); } else { @@ -4621,8 +4604,7 @@ static AstKeyMap *ReadProps( AstStcsChan while( value != AST__BAD ) { if( nval < MAXVAL ) { val[ nval++ ] = value; - prop = astAppendString( prop, &nc, word ); - prop = astAppendString( prop, &nc, " " ); + prop = astAppendString( prop, &nc, "%s ", word ); word = GetNextWord( this, &con, status ); value = astChr2Double( word ); } else { @@ -4804,8 +4786,7 @@ static const char *ReadSpaceArgs( AstStc "'%s' in an STC-S description: '%s'.", status, word, ContextFragment( con, &fbuf, status ) ); } - prop = astAppendString( prop, &nc, word ); - prop = astAppendString( prop, &nc, " " ); + prop = astAppendString( prop, &nc, "%s ", word ); word = GetNextWord( this, con, status ); } @@ -4824,8 +4805,7 @@ static const char *ReadSpaceArgs( AstStc "'%s' in an STC-S description: '%s'.", status, word, ContextFragment( con, &fbuf, status ) ); } - prop = astAppendString( prop, &nc, word ); - prop = astAppendString( prop, &nc, " " ); + prop = astAppendString( prop, &nc, "%s ", word ); word = GetNextWord( this, con, status ); } @@ -4856,8 +4836,7 @@ static const char *ReadSpaceArgs( AstStc "'%s' in an STC-S description: '%s'.", status, word, ContextFragment( con, &fbuf, status ) ); } - prop = astAppendString( prop, &nc, word ); - prop = astAppendString( prop, &nc, " " ); + prop = astAppendString( prop, &nc, "%s ", word ); word = GetNextWord( this, con, status ); } @@ -4897,8 +4876,7 @@ static const char *ReadSpaceArgs( AstStc "'%s' in an STC-S description: '%s'.", status, word, ContextFragment( con, &fbuf, status ) ); } - prop = astAppendString( prop, &nc, word ); - prop = astAppendString( prop, &nc, " " ); + prop = astAppendString( prop, &nc, "%s ", word ); word = GetNextWord( this, con, status ); } @@ -4964,8 +4942,7 @@ static const char *ReadSpaceArgs( AstStc "'%s' in an STC-S description: '%s'.", status, word, ContextFragment( con, &fbuf, status ) ); } - prop = astAppendString( prop, &nc, word ); - prop = astAppendString( prop, &nc, " " ); + prop = astAppendString( prop, &nc, "%s ", word ); word = GetNextWord( this, con, status ); } @@ -4984,8 +4961,7 @@ static const char *ReadSpaceArgs( AstStc "'%s' in an STC-S description: '%s'.", status, word, ContextFragment( con, &fbuf, status ) ); } - prop = astAppendString( prop, &nc, word ); - prop = astAppendString( prop, &nc, " " ); + prop = astAppendString( prop, &nc, "%s ", word ); word = GetNextWord( this, con, status ); } @@ -5015,8 +4991,7 @@ static const char *ReadSpaceArgs( AstStc } else { *p = val; } - prop = astAppendString( prop, &nc, word ); - prop = astAppendString( prop, &nc, " " ); + prop = astAppendString( prop, &nc, "%s ", word ); word = GetNextWord( this, con, status ); } @@ -5039,8 +5014,7 @@ static const char *ReadSpaceArgs( AstStc } else { *p = val; } - prop = astAppendString( prop, &nc, word ); - prop = astAppendString( prop, &nc, " " ); + prop = astAppendString( prop, &nc, "%s ", word ); word = GetNextWord( this, con, status ); val = astChr2Double( word ); } @@ -5081,8 +5055,7 @@ static const char *ReadSpaceArgs( AstStc "'%s' in an STC-S description: '%s'.", status, word, ContextFragment( con, &fbuf, status ) ); } - prop = astAppendString( prop, &nc, word ); - prop = astAppendString( prop, &nc, " " ); + prop = astAppendString( prop, &nc, "%s ", word ); word = GetNextWord( this, con, status ); } @@ -6897,8 +6870,7 @@ static int WriteRegion( AstStcsChan *thi ok = 0; break; } - prop = astAppendString( prop, &nc, unit ); - prop = astAppendString( prop, &nc, " " ); + prop = astAppendString( prop, &nc, "%s ", unit ); } /* Remove the trailing space, and store the property value in the KeyMap. */ @@ -7075,8 +7047,7 @@ static int WriteRegion( AstStcsChan *thi GetFmt( "ERROR", spprops, i, defdigs, fmt, status ); (void) sprintf( buf, fmt, scale*error ); - prop = astAppendString( prop, &nc, buf ); - prop = astAppendString( prop, &nc, " " ); + prop = astAppendString( prop, &nc, "%s ", buf ); } else { nc = 0; diff -up ast-8.0.1/xml.c.format ast-8.0.1/xml.c --- ast-8.0.1/xml.c.format 2014-10-17 02:04:56.000000000 -0600 +++ ast-8.0.1/xml.c 2014-10-18 20:01:17.384922858 -0600 @@ -750,7 +750,7 @@ static char *AppendLine( char *str1, int for( j = 0; j < ind; j++ ) temp = AppendChar( temp, nc, ' ', status ); /* Append the supplied string. */ - return astAppendString( temp, nc, str2 ); + return astAppendString( temp, nc, "%s", str2 ); } void astXmlAddAttr_( AstXmlElement *this, const char *name, const char *value, @@ -3119,8 +3119,7 @@ static void CheckPrefName( char *name, c /* Check the string before the colon is a valid name. */ temp = NULL; - temp = astAppendString( temp, &nc, noun ); - temp = astAppendString( temp, &nc, " prefix" ); + temp = astAppendString( temp, &nc, "%s prefix", noun ); CheckName( name, temp, method, 0, status ); temp = astFree( temp ); @@ -3990,7 +3989,7 @@ static const char *Format( AstXmlObject /* If this is an element... */ if( this->type == AST__XMLELEM ) { temp = FormatTag( this, 1, status ); - result = astAppendString( result, &nc, temp ); + result = astAppendString( result, &nc, "%s", temp ); temp = astFree( (void *) temp ); elem = (AstXmlElement *) this; @@ -4012,7 +4011,7 @@ static const char *Format( AstXmlObject result = AppendLine( result, &nc, temp, ( (ind > -1) ? ind + IND_INC : -1 ), status ); } else { - result = astAppendString( result, &nc, temp ); + result = astAppendString( result, &nc, "%s", temp ); } temp = astFree( (void *) temp ); } @@ -4024,7 +4023,7 @@ static const char *Format( AstXmlObject if( ind > -1 ) { result = AppendLine( result, &nc, temp, ind, status ); } else { - result = astAppendString( result, &nc, temp ); + result = astAppendString( result, &nc, "%s", temp ); } temp = astFree( (void *) temp ); @@ -4035,27 +4034,23 @@ static const char *Format( AstXmlObject attrib = (AstXmlAttribute *) this; if( attrib->prefix ) { - result = astAppendString( result, &nc, attrib->prefix ); - result = astAppendString( result, &nc, ":" ); + result = astAppendString( result, &nc, "%s:", attrib->prefix ); } temp = AddEscapes( attrib->value, status ); - result = astAppendString( result, &nc, attrib->name ); - result = astAppendString( result, &nc, "=\"" ); - result = astAppendString( result, &nc, temp ); - result = astAppendString( result, &nc, "\"" ); + result = astAppendString( result, &nc, "%s=\"%s\"", attrib->name, temp ); temp = astFree( (void *) temp ); } else if( type == AST__XMLWHITE ){ white = (AstXmlWhite *) this; temp = AddEscapes( white->text, status ); - result = astAppendString( result, &nc, temp ); + result = astAppendString( result, &nc, "%s", temp ); temp = astFree( (void *) temp ); } else if( type == AST__XMLBLACK ){ black = (AstXmlBlack *) this; temp = AddEscapes( black->text, status ); - result = astAppendString( result, &nc, temp ); + result = astAppendString( result, &nc, "%s", temp ); temp = astFree( (void *) temp ); } else if( type == AST__XMLCDATA || @@ -4065,20 +4060,16 @@ static const char *Format( AstXmlObject type == AST__XMLDTD ){ temp = FormatTag( this, 1, status ); - result = astAppendString( result, &nc, temp ); + result = astAppendString( result, &nc, "%s", temp ); temp = astFree( (void *) temp ); } else if( type == AST__XMLNAME ){ ns = (AstXmlNamespace *) this; - result = astAppendString( result, &nc, "xmlns:" ); - result = astAppendString( result, &nc, ns->prefix ); - result = astAppendString( result, &nc, "=\"" ); - result = astAppendString( result, &nc, ns->uri ); - result = astAppendString( result, &nc, "\"" ); + result = astAppendString( result, &nc, "xmlns:%s=\"%s\"", ns->prefix, ns->uri ); } else if( type == AST__XMLPRO ){ pro = (AstXmlPrologue *) this; - result = astAppendString( result, &nc, + result = astAppendString( result, &nc, "%s", Format( (AstXmlObject *) pro->xmldecl, ind, status ) ); /* Append all the miscalleneous items before the DTD. */ @@ -4088,7 +4079,7 @@ static const char *Format( AstXmlObject if( ind > -1 ) { result = AppendLine( result, &nc, temp, ind, status ); } else { - result = astAppendString( result, &nc, temp ); + result = astAppendString( result, &nc, "%s", temp ); } temp = astFree( (void *) temp ); } @@ -4100,7 +4091,7 @@ static const char *Format( AstXmlObject if( ind > -1 ) { result = AppendLine( result, &nc, temp, ind, status ); } else { - result = astAppendString( result, &nc, temp ); + result = astAppendString( result, &nc, "%s", temp ); } temp = astFree( (void *) temp ); } @@ -4112,7 +4103,7 @@ static const char *Format( AstXmlObject if( ind > -1 ) { result = AppendLine( result, &nc, temp, ind, status ); } else { - result = astAppendString( result, &nc, temp ); + result = astAppendString( result, &nc, "%s", temp ); } temp = astFree( (void *) temp ); } @@ -4122,7 +4113,7 @@ static const char *Format( AstXmlObject doc = (AstXmlDocument *) this; /* Format the prologue. */ - result = astAppendString( result, &nc, + result = astAppendString( result, &nc, "%s", Format( (AstXmlObject *) doc->prolog, ind, status ) ); /* Append the root element. */ @@ -4131,7 +4122,7 @@ static const char *Format( AstXmlObject if( ind > -1 ) { result = AppendLine( result, &nc, temp, ind, status ); } else { - result = astAppendString( result, &nc, temp ); + result = astAppendString( result, &nc, "%s", temp ); } temp = astFree( (void *) temp ); } @@ -4143,7 +4134,7 @@ static const char *Format( AstXmlObject if( ind > -1 ) { result = AppendLine( result, &nc, temp, ind, status ); } else { - result = astAppendString( result, &nc, temp ); + result = astAppendString( result, &nc, "%s", temp ); } temp = astFree( (void *) temp ); } @@ -4233,22 +4224,19 @@ static char *FormatTag( AstXmlObject *th if( opening ) { result = astAppendString( result, &nc, "<" ); if( elem->prefix ) { - result = astAppendString( result, &nc, elem->prefix ); - result = astAppendString( result, &nc, ":" ); + result = astAppendString( result, &nc, "%s:", elem->prefix ); } - result = astAppendString( result, &nc, elem->name ); + result = astAppendString( result, &nc, "%s", elem->name ); if( elem->defns ) { - result = astAppendString( result, &nc, " xmlns=\"" ); - result = astAppendString( result, &nc, elem->defns ); - result = astAppendString( result, &nc, "\"" ); + result = astAppendString( result, &nc, " xmlns=\"%s\"", elem->defns ); } for( i = 0; i < elem->nnspref; i++ ) { temp = Format( (AstXmlObject *) elem->nsprefs[ i ], -1, status ); if( temp ) { result = AppendChar( result, &nc, ' ', status ); - result = astAppendString( result, &nc, temp ); + result = astAppendString( result, &nc, "%s", temp ); temp = astFree( (void *) temp ); } } @@ -4257,7 +4245,7 @@ static char *FormatTag( AstXmlObject *th temp = Format( (AstXmlObject *) elem->attrs[ i ], -1, status ); if( temp ){ result = AppendChar( result, &nc, ' ', status ); - result = astAppendString( result, &nc, temp ); + result = astAppendString( result, &nc, "%s", temp ); temp = astFree( (void *) temp ); } } @@ -4268,26 +4256,20 @@ static char *FormatTag( AstXmlObject *th } else if( elem->nitem > 0 ) { result = astAppendString( result, &nc, "prefix ) { - result = astAppendString( result, &nc, elem->prefix ); - result = astAppendString( result, &nc, ":" ); + result = astAppendString( result, &nc, "%s:", elem->prefix ); } - result = astAppendString( result, &nc, elem->name ); - result = astAppendString( result, &nc, ">" ); + result = astAppendString( result, &nc, "%s>", elem->name ); } } else if( type == AST__XMLDTD ){ dtd = (AstXmlDTDec *) this; if( opening && dtd->name && dtd->name[0] ) { - result = astAppendString( result, &nc, "name ); + result = astAppendString( result, &nc, "name ); if( dtd->external && dtd->external[ 0 ] ) { - result = astAppendString( result, &nc, " " ); - result = astAppendString( result, &nc, dtd->external ); + result = astAppendString( result, &nc, "%s ", dtd->external ); } if( dtd->internal && dtd->internal[ 0 ] ) { - result = astAppendString( result, &nc, " [" ); - result = astAppendString( result, &nc, dtd->internal ); - result = astAppendString( result, &nc, "]" ); + result = astAppendString( result, &nc, " [%s]" , dtd->internal ); } result = astAppendString( result, &nc, ">" ); } @@ -4295,27 +4277,21 @@ static char *FormatTag( AstXmlObject *th } else if( type == AST__XMLCDATA ){ if( opening ) { cdata = (AstXmlCDataSection *) this; - result = astAppendString( result, &nc, "text ); - result = astAppendString( result, &nc, "]]>" ); + result = astAppendString( result, &nc, "", cdata->text ); } } else if( type == AST__XMLCOM ){ if( opening ) { com = (AstXmlComment *) this; - result = astAppendString( result, &nc, "" ); + result = astAppendString( result, &nc, "", com->text ); } } else if( type == AST__XMLPI ){ pi = (AstXmlPI *) this; if( opening ) { - result = astAppendString( result, &nc, "target ); + result = astAppendString( result, &nc, "target ); if( pi->text && pi->text[0] ) { - result = astAppendString( result, &nc, " " ); - result = astAppendString( result, &nc, pi->text ); + result = astAppendString( result, &nc, " %s", pi->text ); } result = astAppendString( result, &nc, "?>" ); } @@ -4325,8 +4301,7 @@ static char *FormatTag( AstXmlObject *th if( opening && xmlpi->text && xmlpi->text[0] ) { result = astAppendString( result, &nc, "text && xmlpi->text[0] ) { - result = astAppendString( result, &nc, " " ); - result = astAppendString( result, &nc, xmlpi->text ); + result = astAppendString( result, &nc, " %s", xmlpi->text ); } result = astAppendString( result, &nc, "?>" ); }