diff options
| author | Frank Gevaerts <frank@gevaerts.be> | 2009-08-11 20:03:59 +0000 |
|---|---|---|
| committer | Frank Gevaerts <frank@gevaerts.be> | 2009-08-11 20:03:59 +0000 |
| commit | ceccec503e140ea70c0ac3ecf75c7f45c3fb7a0c (patch) | |
| tree | f10a8775453386b9fe226cc620c6a4091f763aa8 /firmware/usbstack | |
| parent | 2dc50471ca17eaeb24b45abce4c0f8944cd781d5 (diff) | |
| download | rockbox-ceccec503e140ea70c0ac3ecf75c7f45c3fb7a0c.zip rockbox-ceccec503e140ea70c0ac3ecf75c7f45c3fb7a0c.tar.gz rockbox-ceccec503e140ea70c0ac3ecf75c7f45c3fb7a0c.tar.bz2 rockbox-ceccec503e140ea70c0ac3ecf75c7f45c3fb7a0c.tar.xz | |
Move yearday_to_daymonth() to usb_storage.c. It's the only user, this function is pretty specific, and it seems to be the cleanest way to avoid ram usage increases for unrelated targets
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22259 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/usbstack')
| -rw-r--r-- | firmware/usbstack/usb_storage.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/firmware/usbstack/usb_storage.c b/firmware/usbstack/usb_storage.c index a3664b0..e6a45e6 100644 --- a/firmware/usbstack/usb_storage.c +++ b/firmware/usbstack/usb_storage.c @@ -295,6 +295,31 @@ static enum { SENDING_CSW } state = WAITING_FOR_COMMAND; +static void yearday_to_daymonth(int yd, int y, int *d, int *m) +{ + static const char tnl[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; + static const char tl[] = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; + const char *t; + int i=0; + + if((y%4 == 0 && y%100 != 0) || y%400 == 0) + { + t=tl; + } + else + { + t=tnl; + } + + while(yd >= t[i] && i<12) + { + yd-=t[i]; + i++; + } + *d = yd+1; + *m = i; +} + #ifdef TOSHIBA_GIGABEAT_S /* The Gigabeat S factory partition table contains invalid values for the |