summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--firmware/common/timefuncs.c25
-rw-r--r--firmware/include/timefuncs.h1
-rw-r--r--firmware/usbstack/usb_storage.c25
3 files changed, 25 insertions, 26 deletions
diff --git a/firmware/common/timefuncs.c b/firmware/common/timefuncs.c
index 774fba9ab0..405bce4f5f 100644
--- a/firmware/common/timefuncs.c
+++ b/firmware/common/timefuncs.c
@@ -204,28 +204,3 @@ void set_day_of_week(struct tm *tm)
204 if(m == 0 || m == 1) y--; 204 if(m == 0 || m == 1) y--;
205 tm->tm_wday = (d + mo[m] + y + y/4 - y/100 + y/400) % 7; 205 tm->tm_wday = (d + mo[m] + y + y/4 - y/100 + y/400) % 7;
206} 206}
207
208void yearday_to_daymonth(int yd, int y, int *d, int *m)
209{
210 static const char tnl[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
211 static const char tl[] = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
212 const char *t;
213 int i=0;
214
215 if((y%4 == 0 && y%100 != 0) || y%400 == 0)
216 {
217 t=tl;
218 }
219 else
220 {
221 t=tnl;
222 }
223
224 while(yd >= t[i] && i<12)
225 {
226 yd-=t[i];
227 i++;
228 }
229 *d = yd+1;
230 *m = i;
231}
diff --git a/firmware/include/timefuncs.h b/firmware/include/timefuncs.h
index e9ef8075ac..ab566d9e5f 100644
--- a/firmware/include/timefuncs.h
+++ b/firmware/include/timefuncs.h
@@ -30,7 +30,6 @@ struct tm *get_time(void);
30int set_time(const struct tm *tm); 30int set_time(const struct tm *tm);
31bool valid_time(const struct tm *tm); 31bool valid_time(const struct tm *tm);
32void set_day_of_week(struct tm *tm); 32void set_day_of_week(struct tm *tm);
33void yearday_to_daymonth(int yd, int y, int *d, int *m);
34#if CONFIG_RTC 33#if CONFIG_RTC
35time_t mktime(struct tm *t); 34time_t mktime(struct tm *t);
36#endif 35#endif
diff --git a/firmware/usbstack/usb_storage.c b/firmware/usbstack/usb_storage.c
index a3664b074b..e6a45e613a 100644
--- a/firmware/usbstack/usb_storage.c
+++ b/firmware/usbstack/usb_storage.c
@@ -295,6 +295,31 @@ static enum {
295 SENDING_CSW 295 SENDING_CSW
296} state = WAITING_FOR_COMMAND; 296} state = WAITING_FOR_COMMAND;
297 297
298static void yearday_to_daymonth(int yd, int y, int *d, int *m)
299{
300 static const char tnl[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
301 static const char tl[] = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
302 const char *t;
303 int i=0;
304
305 if((y%4 == 0 && y%100 != 0) || y%400 == 0)
306 {
307 t=tl;
308 }
309 else
310 {
311 t=tnl;
312 }
313
314 while(yd >= t[i] && i<12)
315 {
316 yd-=t[i];
317 i++;
318 }
319 *d = yd+1;
320 *m = i;
321}
322
298#ifdef TOSHIBA_GIGABEAT_S 323#ifdef TOSHIBA_GIGABEAT_S
299 324
300/* The Gigabeat S factory partition table contains invalid values for the 325/* The Gigabeat S factory partition table contains invalid values for the