diff options
Diffstat (limited to 'apps/gui/gwps.c')
-rw-r--r-- | apps/gui/gwps.c | 40 |
1 files changed, 30 insertions, 10 deletions
diff --git a/apps/gui/gwps.c b/apps/gui/gwps.c index 52242d856e..bd7591fb37 100644 --- a/apps/gui/gwps.c +++ b/apps/gui/gwps.c | |||
@@ -734,6 +734,8 @@ static void wps_clear(struct wps_data *data ) | |||
734 | data->img[i].display = false; | 734 | data->img[i].display = false; |
735 | data->img[i].always_display = false; | 735 | data->img[i].always_display = false; |
736 | } | 736 | } |
737 | data->wps_sb_tag = false; | ||
738 | data->show_sb_on_wps = false; | ||
737 | } | 739 | } |
738 | #else | 740 | #else |
739 | #define wps_clear(a) | 741 | #define wps_clear(a) |
@@ -764,7 +766,7 @@ bool wps_data_load(struct wps_data *wps_data, | |||
764 | wps_clear(wps_data); | 766 | wps_clear(wps_data); |
765 | strncpy(wps_data->format_buffer, buf, sizeof(wps_data->format_buffer)); | 767 | strncpy(wps_data->format_buffer, buf, sizeof(wps_data->format_buffer)); |
766 | wps_data->format_buffer[sizeof(wps_data->format_buffer) - 1] = 0; | 768 | wps_data->format_buffer[sizeof(wps_data->format_buffer) - 1] = 0; |
767 | gui_wps_format(wps_data, NULL, 0); | 769 | gui_wps_format(wps_data); |
768 | return true; | 770 | return true; |
769 | } | 771 | } |
770 | else | 772 | else |
@@ -798,16 +800,34 @@ bool wps_data_load(struct wps_data *wps_data, | |||
798 | 800 | ||
799 | if (fd >= 0) | 801 | if (fd >= 0) |
800 | { | 802 | { |
801 | int numread = read(fd, wps_data->format_buffer, | 803 | unsigned int start = 0; |
802 | sizeof(wps_data->format_buffer) - 1); | 804 | |
803 | 805 | wps_reset(wps_data); | |
804 | if (numread > 0) | ||
805 | { | ||
806 | #ifdef HAVE_LCD_BITMAP | 806 | #ifdef HAVE_LCD_BITMAP |
807 | wps_clear(wps_data); | 807 | wps_data->img_buf_ptr = wps_data->img_buf; /* where in image buffer */ |
808 | |||
809 | wps_data->img_buf_free = IMG_BUFSIZE; /* free space in image buffer */ | ||
808 | #endif | 810 | #endif |
809 | wps_data->format_buffer[numread] = 0; | 811 | while( ( read_line(fd, &wps_data->format_buffer[start], |
810 | gui_wps_format(wps_data, buf, bmpdirlen); | 812 | sizeof(wps_data->format_buffer)-start) ) > 0 ) |
813 | { | ||
814 | if(!wps_data_preload_tags(wps_data, | ||
815 | &wps_data->format_buffer[start], | ||
816 | buf, bmpdirlen)) | ||
817 | { | ||
818 | start += strlen(&wps_data->format_buffer[start]); | ||
819 | |||
820 | if (start < sizeof(wps_data->format_buffer) - 1) | ||
821 | { | ||
822 | wps_data->format_buffer[start++] = '\n'; | ||
823 | wps_data->format_buffer[start] = 0; | ||
824 | } | ||
825 | } | ||
826 | } | ||
827 | |||
828 | if (start > 0) | ||
829 | { | ||
830 | gui_wps_format(wps_data); | ||
811 | } | 831 | } |
812 | 832 | ||
813 | close(fd); | 833 | close(fd); |
@@ -853,7 +873,7 @@ bool wps_data_load(struct wps_data *wps_data, | |||
853 | } | 873 | } |
854 | wps_data->wps_loaded = true; | 874 | wps_data->wps_loaded = true; |
855 | 875 | ||
856 | return numread > 0; | 876 | return start > 0; |
857 | } | 877 | } |
858 | } | 878 | } |
859 | 879 | ||