summaryrefslogtreecommitdiff
path: root/apps/menus/main_menu.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/menus/main_menu.c')
-rw-r--r--apps/menus/main_menu.c33
1 files changed, 17 insertions, 16 deletions
diff --git a/apps/menus/main_menu.c b/apps/menus/main_menu.c
index 0278af3668..4ca76e3c80 100644
--- a/apps/menus/main_menu.c
+++ b/apps/menus/main_menu.c
@@ -146,7 +146,8 @@ enum infoscreenorder
146}; 146};
147 147
148 148
149static char* info_getname(int selected_item, void *data, char *buffer) 149static char* info_getname(int selected_item, void *data,
150 char *buffer, size_t buffer_len)
150{ 151{
151 struct info_data *info = (struct info_data*)data; 152 struct info_data *info = (struct info_data*)data;
152#if CONFIG_RTC 153#if CONFIG_RTC
@@ -176,13 +177,13 @@ static char* info_getname(int selected_item, void *data, char *buffer)
176 switch (selected_item) 177 switch (selected_item)
177 { 178 {
178 case INFO_VERSION: 179 case INFO_VERSION:
179 snprintf(buffer, MAX_PATH, "%s: %s", 180 snprintf(buffer, buffer_len, "%s: %s",
180 str(LANG_VERSION), appsversion); 181 str(LANG_VERSION), appsversion);
181 break; 182 break;
182#if CONFIG_RTC 183#if CONFIG_RTC
183 case INFO_TIME: 184 case INFO_TIME:
184 tm = get_time(); 185 tm = get_time();
185 snprintf(buffer, MAX_PATH, "%02d:%02d:%02d %s", 186 snprintf(buffer, buffer_len, "%02d:%02d:%02d %s",
186 global_settings.timeformat == 0 ? tm->tm_hour : 187 global_settings.timeformat == 0 ? tm->tm_hour :
187 ((tm->tm_hour + 11) % 12) + 1, 188 ((tm->tm_hour + 11) % 12) + 1,
188 tm->tm_min, 189 tm->tm_min,
@@ -192,7 +193,7 @@ static char* info_getname(int selected_item, void *data, char *buffer)
192 break; 193 break;
193 case INFO_DATE: 194 case INFO_DATE:
194 tm = get_time(); 195 tm = get_time();
195 snprintf(buffer, MAX_PATH, "%s %d %d", 196 snprintf(buffer, buffer_len, "%s %d %d",
196 str(LANG_MONTH_JANUARY + tm->tm_mon), 197 str(LANG_MONTH_JANUARY + tm->tm_mon),
197 tm->tm_mday, 198 tm->tm_mday,
198 tm->tm_year+1900); 199 tm->tm_year+1900);
@@ -203,31 +204,31 @@ static char* info_getname(int selected_item, void *data, char *buffer)
203 long buflen = ((audiobufend - audiobuf) * 2) / 2097; /* avoid overflow */ 204 long buflen = ((audiobufend - audiobuf) * 2) / 2097; /* avoid overflow */
204 int integer = buflen / 1000; 205 int integer = buflen / 1000;
205 int decimal = buflen % 1000; 206 int decimal = buflen % 1000;
206 snprintf(buffer, MAX_PATH, (char *)str(LANG_BUFFER_STAT), 207 snprintf(buffer, buffer_len, (char *)str(LANG_BUFFER_STAT),
207 integer, decimal); 208 integer, decimal);
208 } 209 }
209 break; 210 break;
210 case INFO_BATTERY: /* battery */ 211 case INFO_BATTERY: /* battery */
211#if CONFIG_CHARGING == CHARGING_SIMPLE 212#if CONFIG_CHARGING == CHARGING_SIMPLE
212 if (charger_input_state == CHARGER) 213 if (charger_input_state == CHARGER)
213 snprintf(buffer, MAX_PATH, (char *)str(LANG_BATTERY_CHARGE)); 214 snprintf(buffer, buffer_len, (char *)str(LANG_BATTERY_CHARGE));
214 else 215 else
215#elif CONFIG_CHARGING >= CHARGING_MONITOR 216#elif CONFIG_CHARGING >= CHARGING_MONITOR
216 if (charge_state == CHARGING) 217 if (charge_state == CHARGING)
217 snprintf(buffer, MAX_PATH, (char *)str(LANG_BATTERY_CHARGE)); 218 snprintf(buffer, buffer_len, (char *)str(LANG_BATTERY_CHARGE));
218 else 219 else
219#if CONFIG_CHARGING == CHARGING_CONTROL 220#if CONFIG_CHARGING == CHARGING_CONTROL
220 if (charge_state == TOPOFF) 221 if (charge_state == TOPOFF)
221 snprintf(buffer, MAX_PATH, (char *)str(LANG_BATTERY_TOPOFF_CHARGE)); 222 snprintf(buffer, buffer_len, (char *)str(LANG_BATTERY_TOPOFF_CHARGE));
222 else 223 else
223#endif 224#endif
224 if (charge_state == TRICKLE) 225 if (charge_state == TRICKLE)
225 snprintf(buffer, MAX_PATH, (char *)str(LANG_BATTERY_TRICKLE_CHARGE)); 226 snprintf(buffer, buffer_len, (char *)str(LANG_BATTERY_TRICKLE_CHARGE));
226 else 227 else
227#endif 228#endif
228 if (battery_level() >= 0) 229 if (battery_level() >= 0)
229 snprintf(buffer, MAX_PATH, (char *)str(LANG_BATTERY_TIME), battery_level(), 230 snprintf(buffer, buffer_len, (char *)str(LANG_BATTERY_TIME),
230 battery_time() / 60, battery_time() % 60); 231 battery_level(), battery_time() / 60, battery_time() % 60);
231 else 232 else
232 strcpy(buffer, "(n/a)"); 233 strcpy(buffer, "(n/a)");
233 break; 234 break;
@@ -235,11 +236,11 @@ static char* info_getname(int selected_item, void *data, char *buffer)
235#ifdef HAVE_MULTIVOLUME 236#ifdef HAVE_MULTIVOLUME
236 output_dyn_value(s1, sizeof s1, info->free, kbyte_units, true); 237 output_dyn_value(s1, sizeof s1, info->free, kbyte_units, true);
237 output_dyn_value(s2, sizeof s2, info->size, kbyte_units, true); 238 output_dyn_value(s2, sizeof s2, info->size, kbyte_units, true);
238 snprintf(buffer, MAX_PATH, "%s %s/%s", str(LANG_DISK_NAME_INTERNAL), 239 snprintf(buffer, buffer_len, "%s %s/%s", str(LANG_DISK_NAME_INTERNAL),
239 s1, s2); 240 s1, s2);
240#else 241#else
241 output_dyn_value(s1, sizeof s1, info->free, kbyte_units, true); 242 output_dyn_value(s1, sizeof s1, info->free, kbyte_units, true);
242 snprintf(buffer, MAX_PATH, SIZE_FMT, str(LANG_DISK_FREE_INFO), s1); 243 snprintf(buffer, buffer_len, SIZE_FMT, str(LANG_DISK_FREE_INFO), s1);
243#endif 244#endif
244 break; 245 break;
245 case INFO_DISK2: /* disk usage 2 */ 246 case INFO_DISK2: /* disk usage 2 */
@@ -248,17 +249,17 @@ static char* info_getname(int selected_item, void *data, char *buffer)
248 { 249 {
249 output_dyn_value(s1, sizeof s1, info->free2, kbyte_units, true); 250 output_dyn_value(s1, sizeof s1, info->free2, kbyte_units, true);
250 output_dyn_value(s2, sizeof s2, info->size2, kbyte_units, true); 251 output_dyn_value(s2, sizeof s2, info->size2, kbyte_units, true);
251 snprintf(buffer, MAX_PATH, "%s %s/%s", str(LANG_DISK_NAME_MMC), 252 snprintf(buffer, buffer_len, "%s %s/%s", str(LANG_DISK_NAME_MMC),
252 s1, s2); 253 s1, s2);
253 } 254 }
254 else 255 else
255 { 256 {
256 snprintf(buffer, MAX_PATH, "%s %s", str(LANG_DISK_NAME_MMC), 257 snprintf(buffer, buffer_len, "%s %s", str(LANG_DISK_NAME_MMC),
257 str(LANG_NOT_PRESENT)); 258 str(LANG_NOT_PRESENT));
258 } 259 }
259#else 260#else
260 output_dyn_value(s1, sizeof s1, info->size, kbyte_units, true); 261 output_dyn_value(s1, sizeof s1, info->size, kbyte_units, true);
261 snprintf(buffer, MAX_PATH, SIZE_FMT, str(LANG_DISK_SIZE_INFO), s1); 262 snprintf(buffer, buffer_len, SIZE_FMT, str(LANG_DISK_SIZE_INFO), s1);
262#endif 263#endif
263 break; 264 break;
264 } 265 }