thermferm/server.c

changeset 264
91c358556ecf
parent 261
e4341cfbc2a8
child 266
07819a7ad3c1
equal deleted inserted replaced
263:93c1f91adaa7 264:91c358556ecf
583 * LIST 583 * LIST
584 * LIST LOG 584 * LIST LOG
585 */ 585 */
586 int cmd_list(char *buf) 586 int cmd_list(char *buf)
587 { 587 {
588 char *opt, *param, *filename, *p, q[2], buffer[256]; 588 char *opt, *param, *filename, q[2], buffer[256], *copy = NULL;
589 char *mode_o = NULL, *mode_n, *target_o = NULL, *target_n, *heater_o = NULL, *heater_n, *cooler_o = NULL, *cooler_n;
589 units_list *unit; 590 units_list *unit;
590 FILE *fp; 591 FILE *fp;
591 592
592 opt = strtok(buf, " \0"); 593 opt = strtok(buf, " \0");
593 opt = strtok(NULL, " \0"); 594 opt = strtok(NULL, " \0");
627 filename = xstrcat(filename, unit->name); 628 filename = xstrcat(filename, unit->name);
628 filename = xstrcat(filename, (char *)".log"); 629 filename = xstrcat(filename, (char *)".log");
629 if ((fp = fopen(filename, "r"))) { 630 if ((fp = fopen(filename, "r"))) {
630 while (fgets(buffer, sizeof(buffer)-1, fp) != NULL) { 631 while (fgets(buffer, sizeof(buffer)-1, fp) != NULL) {
631 buffer[strlen(buffer) -1] = '\0'; 632 buffer[strlen(buffer) -1] = '\0';
632 p = buffer + 17; 633 copy = xstrcpy(buffer);
633 if (strncmp(p, (char *)"Mode", 4)) { 634 mode_n = strtok(buffer, ",\0");
635 mode_n = strtok(NULL, ",\0");
636 target_n = strtok(NULL, ",\0"); /* skip air_temp */
637 target_n = strtok(NULL, ",\0"); /* skip beer temp */
638 target_n = strtok(NULL, ",\0");
639 heater_n = strtok(NULL, ",\0");
640 cooler_n = strtok(NULL, ",\0");
641
642 if (strncmp(mode_n, (char *)"Mode", 4)) {
634 if ((q[0] != buffer[11]) || (q[1] != buffer[12])) { 643 if ((q[0] != buffer[11]) || (q[1] != buffer[12])) {
635 q[0] = buffer[11]; 644 q[0] = buffer[11];
636 q[1] = buffer[12]; 645 q[1] = buffer[12];
637 srv_send(buffer); 646 srv_send(copy);
647 } else if ((mode_o && strcmp(mode_o, mode_n)) || (target_o && strcmp(target_o, target_n)) ||
648 (heater_o && strcmp(heater_o, heater_n)) || (cooler_o && strcmp(cooler_o, cooler_n))) {
649 srv_send(copy);
638 } 650 }
639 } 651 }
652
653 free(copy);
654 copy = NULL;
655 if (mode_o)
656 free(mode_o);
657 mode_o = xstrcpy(mode_n);
658 if (target_o)
659 free(target_o);
660 target_o = xstrcpy(target_n);
661 if (heater_o)
662 free(heater_o);
663 heater_o = xstrcpy(heater_n);
664 if (cooler_o)
665 free(cooler_o);
666 cooler_o = xstrcpy(cooler_n);
640 } 667 }
641 } 668 }
642 free(filename); 669 free(filename);
643 filename = NULL; 670 filename = NULL;
644 srv_send((char *)"."); 671 srv_send((char *)".");

mercurial