A simple .ini file interface.

Dependents:   Smart-WiFly-WebServer SignalGenerator WattEye X10Svr

Revision:
1:1e2ee9bbee40
Parent:
0:ae5bf432c249
Child:
2:c63a794c1fee
--- a/IniManager.cpp	Mon Aug 12 22:57:54 2013 +0000
+++ b/IniManager.cpp	Sun Sep 01 19:52:53 2013 +0000
@@ -10,6 +10,20 @@
 
 #include "IniManager.h"
 
+//#define DEBUG       //Debug is disabled by default
+
+#if (defined(DEBUG) && !defined(TARGET_LPC11U24))
+#define DBG(x, ...)  std::printf("[DBG INI%4d] "x"\r\n", __LINE__, ##__VA_ARGS__);
+#define WARN(x, ...) std::printf("[WRN INI%4d] "x"\r\n", __LINE__, ##__VA_ARGS__);
+#define ERR(x, ...)  std::printf("[ERR INI%4d] "x"\r\n", __LINE__, ##__VA_ARGS__);
+#define INFO(x, ...) std::printf("[INF INI%4d] "x"\r\n", __LINE__, ##__VA_ARGS__);
+#else
+#define DBG(x, ...)
+#define WARN(x, ...)
+#define ERR(x, ...)
+#define INFO(x, ...)
+#endif
+
 INI::INI(const char * file)
     : iniFile(0)
 {
@@ -18,12 +32,6 @@
         if (iniFile)
             strcpy(iniFile, file);
     }
-    FILE * fo = fopen("/local/test.txt", "wt");
-    if (fo) {
-        printf("Writing to /local/test.txt\r\n");
-        fprintf(fo, "This is three - %d\r\n", 3);
-        fclose(fo);
-    }
 }
 
 
@@ -40,7 +48,7 @@
     if (!iniFile)
         return found;
     CrashRecover();
-    printf("ReadString from %s\r\n", iniFile);
+    INFO("ReadString from %s\r\n", iniFile);
     FILE * fp = fopen(iniFile,"rt");
     if (fp) {
         char buf[INTERNAL_BUF_SIZE];
@@ -50,7 +58,7 @@
             int x = strlen(buf) - 1;        // remove trailing \r\n combinations
             while (x >= 0 && buf[x] < ' ')
                 buf[x--] = '\0';
-            printf("read in [%s]\r\n", buf);
+            INFO("read in [%s]\r\n", buf);
             if (inSection && buf[0] != '[') {
                 char * eq = strchr(buf, '=');
                 if (eq) {
@@ -79,7 +87,7 @@
     if (!found && defaultString != NULL && *defaultString) {
         strncpy(buffer, defaultString, bufferSize);
         buffer[bufferSize-1] = '\0';
-        printf("sub %s.\r\n", buffer);
+        INFO("sub %s.\r\n", buffer);
         found = true;
     }
     return found;
@@ -91,7 +99,7 @@
     char * bakFile = (char *)malloc(strlen(iniFile)+1);
 
     if (newFile && bakFile) {
-        printf("*** CrashRecover\r\n");
+        WARN("*** CrashRecover\r\n");
         strcpy(bakFile, iniFile);
         strcpy(newFile, iniFile);
         strcpy(bakFile + strlen(bakFile) - 4, ".bak");
@@ -100,15 +108,15 @@
         FILE * repair = fopen(newFile, "rt");
         if (repair) {
             // helps recover if the system crashed before it could swap in the new file
-            printf("*** repairing\r\n");
+            INFO("*** repairing\r\n");
             fclose(repair);
             int i;
             i = remove(bakFile);            // remove an old .bak
-            printf("remove(%s) returned %d\r\n", bakFile, i);
+            INFO("remove(%s) returned %d\r\n", bakFile, i);
             i = Rename(iniFile, bakFile);   // move the existing .ini to .bak
-            printf("rename(%s,%s) returned %d\r\n", iniFile, bakFile, i);
+            INFO("rename(%s,%s) returned %d\r\n", iniFile, bakFile, i);
             i = Rename(newFile, iniFile);   // move the new .new to .ini
-            printf("rename(%s,%s) returned %d\r\n", newFile, iniFile, i);
+            INFO("rename(%s,%s) returned %d\r\n", newFile, iniFile, i);
         }
     }
     free(newFile);
@@ -143,7 +151,7 @@
 
     CrashRecover();
 
-    printf("Opening [%s] and [%s]\r\n", iniFile, newFile);
+    INFO("Opening [%s] and [%s]\r\n", iniFile, newFile);
     FILE * fi = fopen(iniFile, "rt");
     FILE * fo = fopen(newFile, "wt");
     if (fo) {
@@ -176,7 +184,7 @@
                         } else {
                             // write old record
                             fprintf(fo, "%s=%s\n", buf, eq);
-                            printf("write: %s=%s\r\n", buf, eq);
+                            INFO("write: %s=%s\r\n", buf, eq);
                         }
                     } else {
                         // what to do with unknown record(s)?
@@ -189,7 +197,7 @@
                             // Append new record to desired section
                             if (value != NULL) {
                                 fprintf(fo, "%s=%s\r\n", key, value);
-                                printf("write: %s=%s\r\n", key, value);
+                                INFO("write: %s=%s\r\n", key, value);
                                 fileChanged = true;
                             }
                             found = true;
@@ -197,7 +205,7 @@
                         inSection = false;
                         // write old record
                         fprintf(fo, "%s\r\n", buf);
-                        printf("write: %s\r\n", buf);
+                        INFO("write: %s\r\n", buf);
                         if (br) {
                             *br = '\0';
                             if (strcmp(buf+1, section) == 0)
@@ -207,12 +215,12 @@
                         // copy unaltered records across
                         if (buf[0]) {
                             fprintf(fo, "%s\r\n", buf);
-                            printf("write: %s\r\n", buf);
+                            INFO("write: %s\r\n", buf);
                         }
                     }
                 }
             }
-            printf("close %s\r\n", iniFile);
+            INFO("close %s\r\n", iniFile);
             fclose(fi);
         }
         if (!found) {
@@ -220,19 +228,19 @@
             if (value != NULL) {
                 if (!inSection) {
                     fprintf(fo, "[%s]\r\n", section);
-                    printf("write: [%s]\r\n", section);
+                    INFO("write: [%s]\r\n", section);
                 }
                 fprintf(fo, "%s=%s\r\n", key, value);
-                printf("write: %s=%s\r\n", key, value);
+                INFO("write: %s=%s\r\n", key, value);
                 fileChanged = true;
             }
             found = true;
         }
-        printf("close %s\r\n", newFile);
+        INFO("close %s\r\n", newFile);
         fclose(fo);
     }
     if (fileChanged) {
-        printf("remove bak, rename ini to bak, rename new to ini\r\n");
+        INFO("remove bak, rename ini to bak, rename new to ini\r\n");
         remove(bakFile);            // remove an old .bak
         Rename(iniFile, bakFile);   // move the existing .ini to .bak
         Rename(newFile, iniFile);   // move the new .new to .ini