dd

Dependencies:   C12832 LM75B mbed

Committer:
pfe
Date:
Tue Apr 21 10:16:20 2015 +0000
Revision:
0:05a20e3e3179
dd

Who changed what in which revision?

UserRevisionLine numberNew contents of line
pfe 0:05a20e3e3179 1 /* mbed Microcontroller Library - FATDirHandle
pfe 0:05a20e3e3179 2 * Copyright (c) 2008, sford
pfe 0:05a20e3e3179 3 */
pfe 0:05a20e3e3179 4
pfe 0:05a20e3e3179 5 #include <stdio.h>
pfe 0:05a20e3e3179 6 #include <stdlib.h>
pfe 0:05a20e3e3179 7 #include <string.h>
pfe 0:05a20e3e3179 8 #include "ff.h"
pfe 0:05a20e3e3179 9 #include "FATDirHandle.h"
pfe 0:05a20e3e3179 10 #include "FATFileSystem.h"
pfe 0:05a20e3e3179 11
pfe 0:05a20e3e3179 12 namespace mbed {
pfe 0:05a20e3e3179 13
pfe 0:05a20e3e3179 14 FATDirHandle::FATDirHandle(const FATFS_DIR &the_dir) {
pfe 0:05a20e3e3179 15 dir = the_dir;
pfe 0:05a20e3e3179 16 }
pfe 0:05a20e3e3179 17
pfe 0:05a20e3e3179 18 int FATDirHandle::closedir() {
pfe 0:05a20e3e3179 19 delete this;
pfe 0:05a20e3e3179 20 return 0;
pfe 0:05a20e3e3179 21 }
pfe 0:05a20e3e3179 22
pfe 0:05a20e3e3179 23 struct dirent *FATDirHandle::readdir() {
pfe 0:05a20e3e3179 24 FILINFO finfo;
pfe 0:05a20e3e3179 25
pfe 0:05a20e3e3179 26 #if _USE_LFN
pfe 0:05a20e3e3179 27 finfo.lfname = cur_entry.d_name;
pfe 0:05a20e3e3179 28 finfo.lfsize = sizeof(cur_entry.d_name);
pfe 0:05a20e3e3179 29 #endif // _USE_LFN
pfe 0:05a20e3e3179 30
pfe 0:05a20e3e3179 31 FRESULT res = f_readdir(&dir, &finfo);
pfe 0:05a20e3e3179 32
pfe 0:05a20e3e3179 33 #if _USE_LFN
pfe 0:05a20e3e3179 34 if(res != 0 || finfo.fname[0]==0) {
pfe 0:05a20e3e3179 35 return NULL;
pfe 0:05a20e3e3179 36 } else {
pfe 0:05a20e3e3179 37 if(cur_entry.d_name[0]==0) {
pfe 0:05a20e3e3179 38 // No long filename so use short filename.
pfe 0:05a20e3e3179 39 memcpy(cur_entry.d_name, finfo.fname, sizeof(finfo.fname));
pfe 0:05a20e3e3179 40 }
pfe 0:05a20e3e3179 41 return &cur_entry;
pfe 0:05a20e3e3179 42 }
pfe 0:05a20e3e3179 43 #else
pfe 0:05a20e3e3179 44 if(res != 0 || finfo.fname[0]==0) {
pfe 0:05a20e3e3179 45 return NULL;
pfe 0:05a20e3e3179 46 } else {
pfe 0:05a20e3e3179 47 memcpy(cur_entry.d_name, finfo.fname, sizeof(finfo.fname));
pfe 0:05a20e3e3179 48 return &cur_entry;
pfe 0:05a20e3e3179 49 }
pfe 0:05a20e3e3179 50 #endif /* _USE_LFN */
pfe 0:05a20e3e3179 51 }
pfe 0:05a20e3e3179 52
pfe 0:05a20e3e3179 53 void FATDirHandle::rewinddir() {
pfe 0:05a20e3e3179 54 dir.index = 0;
pfe 0:05a20e3e3179 55 }
pfe 0:05a20e3e3179 56
pfe 0:05a20e3e3179 57 off_t FATDirHandle::telldir() {
pfe 0:05a20e3e3179 58 return dir.index;
pfe 0:05a20e3e3179 59 }
pfe 0:05a20e3e3179 60
pfe 0:05a20e3e3179 61 void FATDirHandle::seekdir(off_t location) {
pfe 0:05a20e3e3179 62 dir.index = location;
pfe 0:05a20e3e3179 63 }
pfe 0:05a20e3e3179 64
pfe 0:05a20e3e3179 65 }
pfe 0:05a20e3e3179 66