# HG changeset patch # User Michiel Broek # Date 1435407879 -7200 # Node ID b22f8bf63b17bcc4585918fcd3e4e48a3a937662 # Parent 75afd21885f29431c12760b31ee6d8b683ba8f96 Only write configuration if something changed. diff -r 75afd21885f2 -r b22f8bf63b17 thermferm/server.c --- 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 [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"); }