FireBirdLib - Topfield TMS PVR TAP Programming Library
INISetString.c
Go to the documentation of this file.
1#include <string.h>
2#include <stdlib.h>
3#include "FBLib_ini.h"
4#include "libFireBird.h"
5
6void INISetString(char *Key, char *Value)
7{
9
10 char *i = NULL, *j = NULL;
11 char TempKey[80];
12 char *OldBuffer, *NewBuffer;
13 dword l, BS = 0;
14
15 if(!Key || !Value || !INIBuffer)
16 {
17 TRACEEXIT();
18 return;
19 }
20
21 strncpy(TempKey, Key, sizeof(TempKey) - 2);
22 TempKey[sizeof(TempKey) - 2] = '\0';
23 strcat(TempKey, "=");
24
25 INIFindStartEnd(TempKey, &i, &j, BufferSize);
26 if(!i || !j)
27 {
28 l = strlen(INIBuffer) + strlen(TempKey) + strlen(Value) + 3;
29
30 if(l > BufferSize)
31 {
32 OldBuffer = INIBuffer;
33 BS = ((BufferSize >> 10) + 1) << 10;
34
35 if(l > BS || !(INIBuffer = TAP_MemAlloc(BS)))
36 {
37 INIBuffer = OldBuffer;
38
39 TRACEEXIT();
40 return;
41 }
42
43 memset(INIBuffer, 0, BS);
44 memcpy(INIBuffer, OldBuffer, BufferSize);
45 BufferSize = BS;
46 TAP_MemFree(OldBuffer);
47 }
48
49 strcat(INIBuffer, TempKey);
50 strcat(INIBuffer, Value);
51 strcat(INIBuffer, "\x0d\x0a");
52 }
53 else
54 {
55 l = strlen(INIBuffer) - (j - i) + strlen(TempKey) + strlen(Value) + 1;
56
57 if(l > BufferSize)
58 BS = ((BufferSize >> 10) + 1) << 10;
59 else
60 BS = BufferSize;
61
62 if(l > BS || !(NewBuffer = TAP_MemAlloc(BS)))
63 {
64 TRACEEXIT();
65 return;
66 }
67
68 memset(NewBuffer, 0, BS);
69 strncpy(NewBuffer, INIBuffer, i - INIBuffer);
70 strcat(NewBuffer, TempKey);
71 strcat(NewBuffer, Value);
72 strcat(NewBuffer, j + 1);
73 TAP_MemFree(INIBuffer);
74 INIBuffer = NewBuffer;
75
76 BufferSize = BS;
77 }
78
79 TRACEEXIT();
80}
void INIFindStartEnd(char *, char **, char **, dword)
dword BufferSize
Definition: INIOpenFile.c:7
char * INIBuffer
Definition: INIOpenFile.c:6
void INISetString(char *Key, char *Value)
Definition: INISetString.c:6
#define TRACEEXIT()
Definition: libFireBird.h:1244
#define TRACEENTER()
Definition: libFireBird.h:1243