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 *)"."); |