Only write configuration if something changed.

Sat, 27 Jun 2015 14:24:39 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Sat, 27 Jun 2015 14:24:39 +0200
changeset 381
b22f8bf63b17
parent 380
75afd21885f2
child 382
bcb2ecc51239

Only write configuration if something changed.

thermferm/server.c file | annotate | diff | comparison | revisions
--- a/thermferm/server.c	Sat Jun 27 14:08:49 2015 +0200
+++ b/thermferm/server.c	Sat Jun 27 14:24:39 2015 +0200
@@ -330,7 +330,7 @@
 
     if (opt == NULL) {
 	srv_send((char *)"501 Subcommand missing");
-	return 1;
+	return 0;
     }
     param = strtok(NULL, "\0");
 
@@ -423,12 +423,12 @@
 
 	free(name);
 	name = NULL;
-	return 1;
+	return 0;
     }
 
     if (param == NULL) {
 	srv_send((char *)"502 Parameter missing");
-	return 1;
+	return 0;
     }
 
     if (strcmp(opt, (char *)"GET") == 0) {
@@ -463,7 +463,7 @@
 
 	free(name);
 	name = NULL;
-	return 1;
+	return 0;
     }
 
     if (strcmp(opt, (char *)"LOG") == 0) {
@@ -578,7 +578,6 @@
 
 	free(name);
 	name = NULL;
-	return 1;
     }
 
     return 0;
@@ -648,7 +647,7 @@
 
     if (opt == NULL) {
 	srv_send((char *)"501 Subcommand missing");
-	return 1;
+	return 0;
     }
     param = strtok(NULL, "\0");
 
@@ -671,7 +670,7 @@
 			    device->inuse, device->comment, DEVDIR[device->direction], device->value + device->offset);
 	}
 	srv_send((char *)".");
-	return 1;
+	return 0;
     }
 
     if (param == NULL) {
@@ -721,11 +720,11 @@
 #endif
 	    syslog(LOG_NOTICE, "Device %s added", device->uuid);
 	    srv_send((char *)"211 Device %s added", device->uuid);
-	    return 0;
+	    return 1;
 
 	} else {
 	    srv_send((char *)"503 Parameter error");
-	    return 1;
+	    return 0;
 	}
     }
 
@@ -741,10 +740,10 @@
 	if (rc) {
 	    syslog(LOG_NOTICE, "Device %s deleted", param);
 	    srv_send((char *)"211 Device %s deleted", param);
-	    return 0;
+	    return 1;
 	} else {
 	    srv_send((char *)"440 No such device");
-	    return 1;
+	    return 0;
 	}
     }
 
@@ -773,11 +772,11 @@
 		srv_send((char *)"COMMENT,%s", device->comment);
 		srv_send((char *)"TIMESTAMP,%d", my_timestamp);
 		srv_send((char *)".");
-		return 1;
+		return 0;
 	    }
 	}
 	srv_send((char *)"440 No such device");
-	return 1;
+	return 0;
     }
 
     if (strcmp(opt, (char *)"PUT") == 0) {
@@ -786,12 +785,12 @@
 		while (1) {
 		    rlen = srv_recv(ibuf);
     		    if (rlen == -1) {
-			return 1;
+			return 0;
 		    }
 		    if (strlen(ibuf)) {
 			if (strcmp(ibuf, (char *)".") == 0) {
 			    srv_send((char *)"219 Accepted Device record");
-			    return 0;
+			    return 1;
 			}
 			kwd = strtok(ibuf, ",\0");
 			val = strtok(NULL, "\0");
@@ -945,11 +944,11 @@
 	    }
 	}
 	srv_send((char *)"440 No such device");
-	return 1;
+	return 0;
     }
 
     srv_send((char *)"504 Subcommand error");
-    return 1;
+    return 0;
 }
 
 
@@ -968,7 +967,7 @@
 
     if (opt == NULL) {
 	srv_send((char *)"501 Subcommand missing");
-	return 1;
+	return 0;
     }
 
     if (strcmp(opt, (char *)"HELP") == 0) {
@@ -997,19 +996,19 @@
 	srv_send((char *)"LCD_ROWS,%d", Config.lcd_rows);
 #endif
 	srv_send((char *)".");
-	return 1;
+	return 0;
     }
 
     if (strcmp(opt, (char *)"PUT") == 0) {
 	while (1) {
 	    rlen = srv_recv(ibuf);
 	    if (rlen == -1) {
-		return 1;
+		return 0;
 	    }
 	    if (strlen(ibuf)) {
 		if (strcmp(ibuf, (char *)".") == 0) {
 		    srv_send((char *)"219 Accepted Global record");
-		    return 0;
+		    return 1;
 		}
 		kwd = strtok(ibuf, ",\0");
 		val = strtok(NULL, "\0");
@@ -1086,7 +1085,7 @@
     }
 
     srv_send((char *)"504 Subcommand error");
-    return 1;
+    return 0;
 }
 
 
@@ -1117,7 +1116,7 @@
 	    srv_send((char *)"%s,%s,%s", unit->uuid, unit->name, UNITMODE[unit->mode]);
 	}
 	srv_send((char *)".");
-	return 1;
+	return 0;
 
     } else if (strcmp(opt, (char *)"HELP") == 0) {
 	srv_send((char *)"100 Help text follows:");
@@ -1132,7 +1131,7 @@
 	param = strtok(NULL, "\0");
 	if (param == NULL) {
 	    srv_send((char *)"502 Parameter missing");
-	    return 1;
+	    return 0;
 	}
 
 	q[0] = q[1] = q[2] = q[3] = q[4] = 'a';
@@ -1234,11 +1233,11 @@
 	free(filename);
 	filename = NULL;
 	srv_send((char *)".");
-	return 1;
+	return 0;
     }
 
     srv_send((char *)"504 Subcommand error");
-    return 1;
+    return 0;
 }
 
 
@@ -1267,7 +1266,7 @@
 
     if (opt == NULL) {
 	srv_send((char *)"501 Subcommand missing");
-	return 1;
+	return 0;
     }
 
     if (strcmp(opt, (char *)"HELP") == 0) {
@@ -1297,13 +1296,13 @@
 	    srv_send((char *)"%s,%s,%d,%d", profile->uuid, profile->name, j, profile->busy);
 	}
 	srv_send((char *)".");
-	return 1;
+	return 0;
     }
 
     param = strtok(NULL, "\0");
     if (param == NULL) {
 	srv_send((char *)"502 Parameter missing");
-	return 1;
+	return 0;
     }
 
     if (strcmp(opt, (char *)"ADD") == 0) {
@@ -1330,17 +1329,17 @@
 
 	syslog(LOG_NOTICE, "Profile %s added", profile->uuid);
 	srv_send((char *)"211 Profile %s added", profile->uuid);
-	return 0;
+	return 1;
 
 
     } else if (strcmp(opt, (char *)"DEL") == 0) {
 	if (delete_Profile(param)) {
 	    syslog(LOG_NOTICE, "Profile %s deleted", param);
 	    srv_send((char *)"211 Profile %s deleted", param);
-	    return 0;
+	    return 1;
 	} else {
 	    srv_send((char *)"440 No such profile");
-	    return 1;
+	    return 0;
 	}
     
     } else if (strcmp(opt, (char *)"GET") == 0) {
@@ -1351,11 +1350,11 @@
 		srv_send((char *)"NAME,%s", profile->name);
 		srv_send((char *)"INITTEMP,%.1f", profile->inittemp);
 		srv_send((char *)".");
-		return 1;
+		return 0;
 	    }
 	}
 	srv_send((char *)"440 No such profile");
-	return 1;
+	return 0;
 
     } else if (strcmp(opt, (char *)"PUT") == 0) {
 	for (profile = Config.profiles; profile; profile = profile->next) {
@@ -1363,12 +1362,12 @@
 		while (1) {
 		    rlen = srv_recv(ibuf);
 		    if (rlen == -1) {
-			return 1;
+			return 0;
 		    }
 		    if (strlen(ibuf)) {
 			if (strcmp(ibuf, (char *)".") == 0) {
 			    srv_send((char *)"219 Accepted Profile record");
-			    return 0;
+			    return 1;
 			}
 			kwd = strtok(ibuf, ",\0");
 			val = strtok(NULL, "\0");
@@ -1393,7 +1392,7 @@
 	    }               
 	}
 	srv_send((char *)"440 No such profile");
-	return 1;
+	return 0;
 
     } else if (strcmp(opt, (char *)"GETS") == 0) {
 
@@ -1404,12 +1403,12 @@
 		    srv_send((char *)"%d,%d,%.1f", step->steptime, step->resttime, step->target);
 		}
 		srv_send((char *)".");
-		return 1;
+		return 0;
 	    }
 	}
 
 	srv_send((char *)"440 No such profile");
-	return 1;
+	return 0;
 
     } else if (strcmp(opt, (char *)"PUTS") == 0) {
 
@@ -1429,13 +1428,13 @@
             	while (1) {	
 		    rlen = srv_recv(ibuf);
 	    	    if (rlen == -1) {
-		    	return 1;
+		    	return 0;
 	    	    } else {
 	    	    	if (strlen(ibuf)) {
 		    	    if (strcmp(ibuf, (char *)".") == 0) {
 
 		    	    	srv_send((char *)"219 Accepted Profile steps");
-		    	    	return 0;
+		    	    	return 1;
 		    	    }
 			    sstep = strtok(ibuf, ",\0");
 			    rest = strtok(NULL, ",\0");
@@ -1473,11 +1472,11 @@
 	}
 
 	srv_send((char *)"440 No such profile");
-	return 1;
+	return 0;
     }
 
     srv_send((char *)"504 Subcommand error");
-    return 1;
+    return 0;
 }
 
 
@@ -1538,7 +1537,7 @@
 
     if (opt == NULL) {
 	srv_send((char *)"501 Subcommand missing");
-	return 1;
+	return 0;
     }
     param = strtok(NULL, "\0");
 
@@ -1560,12 +1559,12 @@
 	    srv_send((char *)"%s,%s", simulator->uuid, simulator->name);
 	}
 	srv_send((char *)".");
-	return 1;
+	return 0;
     }
 
     if (param == NULL) {
 	srv_send((char *)"502 Parameter missing");
-	return 1;
+	return 0;
     }
 
     if (strcmp(opt, (char *)"ADD") == 0) {
@@ -1575,7 +1574,7 @@
 	 */
 	if (Config.simulators) {
 	    srv_send((char *)"441 Maximum simulators reached");
-	    return 1;
+	    return 0;
 	}
 
 	simulator = (simulator_list *)malloc(sizeof(simulator_list));
@@ -1612,7 +1611,7 @@
 
 	syslog(LOG_NOTICE, "Simulator %s added", simulator->uuid);
 	srv_send((char *)"211 Simulator %s added", simulator->uuid);
-	return 0;
+	return 1;
     }
 
     if (strcmp(opt, (char *)"DEL") == 0) {
@@ -1620,10 +1619,10 @@
 	if (rc) {
 	    syslog(LOG_NOTICE, "Simulator %s deleted", param);
 	    srv_send((char *)"211 Simulator %s deleted", param);
-	    return 0;
+	    return 1;
 	} else {
 	    srv_send((char *)"440 No such simulator");
-	    return 1;
+	    return 0;
 	}
     }
 
@@ -1647,11 +1646,11 @@
 		srv_send((char *)"COOLER_STATE,%d", simulator->cooler_state);
 		srv_send((char *)"FRIGO_ISOLATION,%.3f", simulator->frigo_isolation);
 		srv_send((char *)".");
-		return 1;
+		return 0;
 	    }
 	}
 	srv_send((char *)"440 No such simulator");
-	return 1;
+	return 0;
     }
 
     if (strcmp(opt, (char *)"PUT") == 0) {
@@ -1660,12 +1659,12 @@
 		while (1) {
 		    rlen = srv_recv(ibuf);
 		    if (rlen == -1) {
-			return 1;
+			return 0;
 		    }
 		    if (strlen(ibuf)) {
 			if (strcmp(ibuf, (char *)".") == 0) {
 			    srv_send((char *)"219 Accepted Simulator record");
-			    return 0;
+			    return 1;
 			}
 			kwd = strtok(ibuf, ",\0");
 			val = strtok(NULL, "\0");
@@ -1784,11 +1783,11 @@
 	    }
 	}
 	srv_send((char *)"440 No such simulator");
-	return 1;
+	return 0;
     }
 
     srv_send((char *)"504 Subcommand error");
-    return 1;
+    return 0;
 }
 #endif
 
@@ -1915,7 +1914,7 @@
 
     if (opt == NULL) {
 	srv_send((char *)"501 Subcommand missing");
-	return 1;
+	return 0;
     }
     param = strtok(NULL, "\0");
 
@@ -1937,12 +1936,12 @@
 	    srv_send((char *)"%s,%s,%s", unit->uuid, unit->name, UNITMODE[unit->mode]);
 	}
 	srv_send((char *)".");
-	return 1;
+	return 0;
     }
 
     if (param == NULL) {
 	srv_send((char *)"502 Parameter missing");
-	return 1;
+	return 0;
     }
 
     if (strcmp(opt, (char *)"ADD") == 0) {
@@ -2002,7 +2001,7 @@
 
 	syslog(LOG_NOTICE, "Unit %s added", unit->uuid);
 	srv_send((char *)"211 Unit %s added", unit->uuid);
-	return 0;
+	return 1;
     }
 
     if (strcmp(opt, (char *)"DEL") == 0) {
@@ -2025,10 +2024,10 @@
 	if (rc) {
 	    syslog(LOG_NOTICE, "Unit %s deleted", param);
 	    srv_send((char *)"211 Unit %s deleted", param);
-	    return 0;
+	    return 1;
 	} else {
 	    srv_send((char *)"440 No such unit");
-	    return 1;
+	    return 0;
 	}
     }
 
@@ -2096,11 +2095,11 @@
 		srv_send((char *)"TEMP_SET_MIN,%.1f", unit->temp_set_min);
 		srv_send((char *)"TEMP_SET_MAX,%.1f", unit->temp_set_max);
 		srv_send((char *)".");
-		return 1;
+		return 0;
 	    }
 	}
 	srv_send((char *)"440 No such unit");
-	return 1;
+	return 0;
     }
 
     if (strcmp(opt, (char *)"PUT") == 0) {
@@ -2120,13 +2119,13 @@
 		    rlen = srv_recv(ibuf);
 		    if (rlen == -1) {
 			run_pause = FALSE;
-			return 1;
+			return 0;
 		    }
 		    if (strlen(ibuf)) {
 			if (strcmp(ibuf, (char *)".") == 0) {
 			    srv_send((char *)"219 Accepted Unit record");
 			    run_pause = FALSE;
-			    return 0;
+			    return 1;
 			}
 			kwd = strtok(ibuf, ",\0");
 			val = strtok(NULL, "\0");
@@ -2509,11 +2508,11 @@
 	}
 	srv_send((char *)"440 No such unit");
 	run_pause = FALSE;
-	return 1;
+	return 0;
     }
 
     srv_send((char *)"504 Subcommand error");
-    return 1;
+    return 0;
 }
 
 
@@ -2531,12 +2530,15 @@
 	     */
 	    if (strncmp(buf, "ARCHIVE", 7) == 0) {
 		cmd_archive(buf);
+
 	    } else if (strncmp(buf, "DEVICE", 6) == 0) {
-		if (cmd_device(buf) == 0)
+		if (cmd_device(buf))
 		    wrconfig();
+
 	    } else if (strncmp(buf, "GLOBAL", 6) == 0) {
-		if (cmd_global(buf) == 0)
+		if (cmd_global(buf))
 		    wrconfig();
+
 	    } else if (strncmp(buf, "HELP", 4) == 0) {
 		srv_send((char *)"100 Help text follows");
 		srv_send((char *)"Recognized commands:");
@@ -2560,21 +2562,27 @@
 		srv_send((char *)"UNIT <CMD> [parameters]       Unit commands");
 		srv_send((char *)"UNIT HELP                     Unit help screen");
 		srv_send((char *)".");
+
 	    } else if (strncmp(buf, "LIST", 4) == 0) {
 		cmd_list(buf);
+
 	    } else if (strncmp(buf, "PING", 4) == 0) {
 		srv_send((char *)"101 PONG");
+
 	    } else if (strncmp(buf, "PROFILE", 7) == 0) {
-		if (cmd_profile(buf) == 0)
+		if (cmd_profile(buf))
 		    wrconfig();
+
 #ifdef USE_SIMULATOR
 	    } else if (strncmp(buf, "SIMULATOR", 9) == 0) {
-		if (cmd_simulator(buf) == 0)
+		if (cmd_simulator(buf))
 		    wrconfig();
+
 #endif
 	    } else if (strncmp(buf, "UNIT", 4) == 0) {
-		if (cmd_unit(buf) == 0)
+		if (cmd_unit(buf))
 		    wrconfig();
+
 	    } else {
 		srv_send((char *)"500 Unknown command");
 	    }

mercurial