aboutsummaryrefslogtreecommitdiffstats
path: root/android/utils/ini.c
diff options
context:
space:
mode:
Diffstat (limited to 'android/utils/ini.c')
-rw-r--r--android/utils/ini.c42
1 files changed, 36 insertions, 6 deletions
diff --git a/android/utils/ini.c b/android/utils/ini.c
index 56e40f2..95bb4e3 100644
--- a/android/utils/ini.c
+++ b/android/utils/ini.c
@@ -17,6 +17,7 @@
#include <errno.h>
#include "android/utils/debug.h"
#include "android/utils/system.h" /* for ASTRDUP */
+#include "android/utils/bufprint.h"
#include "osdep.h"
/* W() is used to print warnings, D() to print debugging info */
@@ -172,7 +173,7 @@ iniFile_newFromMemory( const char* text, const char* fileName )
int lineno = 0;
if (!fileName)
- fileName = "<unknownFile>";
+ fileName = "<memoryFile>";
D("%s: parsing as .ini file", fileName);
@@ -197,8 +198,8 @@ iniFile_newFromMemory( const char* text, const char* fileName )
key = p++;
if (!isKeyStartChar(*key)) {
p = skipToEOL(p);
- W("%s:%d: key name doesn't start with valid character. line ignored",
- fileName, lineno);
+ W("%4d: key name doesn't start with valid character. line ignored",
+ lineno);
continue;
}
@@ -210,8 +211,8 @@ iniFile_newFromMemory( const char* text, const char* fileName )
/* check the equal */
if (*p != '=') {
- W("%s:%d: missing expected assignment operator (=). line ignored",
- fileName, lineno);
+ W("%4d: missing expected assignment operator (=). line ignored",
+ lineno);
p = skipToEOL(p);
continue;
}
@@ -232,12 +233,14 @@ iniFile_newFromMemory( const char* text, const char* fileName )
valueLen = p - value;
iniFile_addPair(ini, key, keyLen, value, valueLen);
- D("%s:%d: KEY='%.*s' VALUE='%.*s'", fileName, lineno,
+ D("%4d: KEY='%.*s' VALUE='%.*s'", lineno,
keyLen, key, valueLen, value);
p = skipToEOL(p);
}
+ D("%s: parsing finished", fileName);
+
return ini;
}
@@ -283,6 +286,33 @@ EXIT:
return ini;
}
+int
+iniFile_saveToFile( IniFile* f, const char* filepath )
+{
+ FILE* fp = fopen(filepath, "wt");
+ IniPair* pair = f->pairs;
+ IniPair* pairEnd = pair + f->numPairs;
+ int result = 0;
+
+ if (fp == NULL) {
+ D("could not create .ini file: %s: %s",
+ filepath, strerror(errno));
+ return -1;
+ }
+
+ for ( ; pair < pairEnd; pair++ ) {
+ char temp[PATH_MAX], *p=temp, *end=p+sizeof(temp);
+ p = bufprint(temp, end, "%s = %s\n", pair->key, pair->value);
+ if (fwrite(temp, p - temp, 1, fp) != 1) {
+ result = -1;
+ break;
+ }
+ }
+
+ fclose(fp);
+ return result;
+}
+
char*
iniFile_getString( IniFile* f, const char* key )
{