diff --git a/src/common/strbuf.c b/src/common/strbuf.c index 7b5c80f3a..39a325990 100644 --- a/src/common/strbuf.c +++ b/src/common/strbuf.c @@ -6,7 +6,7 @@ /* */ /* */ /* */ -/* (C) 2001-2002 Ullrich von Bassewitz */ +/* (C) 2001-2003 Ullrich von Bassewitz */ /* Römerstrasse 52 */ /* D-70794 Filderstadt */ /* EMail: uz@cc65.org */ @@ -283,3 +283,22 @@ void SB_Slice (StrBuf* Target, const StrBuf* Source, unsigned Start, unsigned Le +void SB_Move (StrBuf* Target, StrBuf* Source) +/* Move the complete contents of Source to target. This will delete the old + * contents of Target, and Source will be empty after the call. + */ +{ + /* Free the target string */ + if (Target->Buf) { + xfree (Target->Buf); + } + + /* Move all data from Source to Target */ + *Target = *Source; + + /* Clear Source */ + InitStrBuf (Source); +} + + + diff --git a/src/common/strbuf.h b/src/common/strbuf.h index c22d0ded0..cd58932c6 100644 --- a/src/common/strbuf.h +++ b/src/common/strbuf.h @@ -6,7 +6,7 @@ /* */ /* */ /* */ -/* (C) 2001-2002 Ullrich von Bassewitz */ +/* (C) 2001-2003 Ullrich von Bassewitz */ /* Römerstrasse 52 */ /* D-70794 Filderstadt */ /* EMail: uz@cc65.org */ @@ -225,7 +225,7 @@ INLINE char SB_LookAt (const StrBuf* B, unsigned Index) return (Index < B->Len)? B->Buf[Index] : '\0'; } #else -# define SB_Peek(B,Index) (((Index) < (B)->Len)? (B)->Buf[(Index)] : '\0') +# define SB_LookAt(B,Index) (((Index) < (B)->Len)? (B)->Buf[(Index)] : '\0') #endif #if defined(HAVE_INLINE) @@ -338,6 +338,11 @@ void SB_Slice (StrBuf* Target, const StrBuf* Source, unsigned Start, unsigned Le * bytes. */ +void SB_Move (StrBuf* Target, StrBuf* Source); +/* Move the complete contents of Source to target. This will delete the old + * contents of Target, and Source will be empty after the call. + */ + /* End of strbuf.h */