X-Git-Url: http://git.rohieb.name/hackover2013-badge-firmware.git/blobdiff_plain/6ea183c90f3283783ea2af6211e6cda65126df4d..5c42c95f4d84a47a1e9d24cd61413d10a50f2007:/badge/jumpnrun/starter.c?ds=inline diff --git a/badge/jumpnrun/starter.c b/badge/jumpnrun/starter.c index 93e769c..d35c5fa 100644 --- a/badge/jumpnrun/starter.c +++ b/badge/jumpnrun/starter.c @@ -15,7 +15,9 @@ static uint8_t jumpnrun_load_progress(void) { uint8_t progress = 0; FIL fd; - if(FR_OK == f_open(&fd, PROGRESS_FNAME, FA_OPEN_EXISTING | FA_READ)) { + + if(FR_OK == f_chdir(JUMPNRUN_PATH) && + FR_OK == f_open(&fd, PROGRESS_FNAME, FA_OPEN_EXISTING | FA_READ)) { UINT bytes; f_read(&fd, &progress, sizeof(progress), &bytes); f_close(&fd); @@ -27,7 +29,8 @@ static uint8_t jumpnrun_load_progress(void) { static void jumpnrun_save_progress(uint8_t progress) { FIL fd; - if(FR_OK == f_open(&fd, PROGRESS_FNAME, FA_CREATE_ALWAYS | FA_WRITE)) { + if(FR_OK == f_chdir(JUMPNRUN_PATH) && + FR_OK == f_open(&fd, PROGRESS_FNAME, FA_CREATE_ALWAYS | FA_WRITE)) { UINT bytes; f_write(&fd, &progress, sizeof(progress), &bytes); f_close(&fd); @@ -73,14 +76,16 @@ static uint8_t jumpnrun_pick_level_from_fd(char *buf, size_t *first_visible, siz } *selected = choice; - strcpy(buf, fnames[*selected]); + strncpy(buf, fnames[*selected], LEVELFILE_MAX); + buf[LEVELFILE_MAX] = '\0'; return 0; } static uint8_t jumpnrun_pick_level(char *buf, size_t *first_visible, size_t *selected, uint8_t progress) { FIL fd; - if(FR_OK != f_open(&fd, "levels.lst", FA_OPEN_EXISTING | FA_READ)) { + if(FR_OK != f_chdir(JUMPNRUN_PATH) || + FR_OK != f_open(&fd, "levels.lst", FA_OPEN_EXISTING | FA_READ)) { return JUMPNRUN_ERROR; }