FireBirdLib - Topfield TMS PVR TAP Programming Library
InsertAt.c
Go to the documentation of this file.
1#include <string.h>
2#include "libFireBird.h"
3
4void InsertAt(const char *SourceString, int Pos, char *NewString)
5{
7
8 char *dst, *src;
9 char *Target;
10 int OldLen, NewLen;
11
12 if(!SourceString || !NewString)
13 {
14 TRACEEXIT();
15 return;
16 }
17
18 src = SkipCharTableBytes(SourceString);
19
20 if(Pos >= (int)strlenUC(src))
21 {
22 strcat(src, NewString);
23
24 TRACEEXIT();
25 return;
26 }
27
28 if(Pos < 0) Pos = 0;
29
30 OldLen = strlen(src);
31 NewLen = strlen(NewString);
32
33 dst = &src[OldLen + NewLen];
34 *dst = '\0';
35 dst--;
36
37 Target = GetUCPos(src, Pos);
38 src = &src[OldLen - 1];
39
40 while(src >= Target)
41 {
42 *dst = *src;
43 dst--;
44 src--;
45 }
46
47 memcpy(Target, NewString, NewLen);
48
49 TRACEEXIT();
50}
void InsertAt(const char *SourceString, int Pos, char *NewString)
Definition: InsertAt.c:4
#define TRACEEXIT()
Definition: libFireBird.h:1244
int strlenUC(const byte *s)
Definition: strlenUC.c:4
#define TRACEENTER()
Definition: libFireBird.h:1243
byte * SkipCharTableBytes(const byte *p)
byte * GetUCPos(const byte *String, int CharPos)
Definition: GetUCPos.c:3