Michael Spencer / Mbed 2 deprecated LaOS

Dependencies:   mbed

Committer:
Michael J. Spencer
Date:
Wed Mar 05 06:14:02 2014 -0800
Revision:
1:f5ac63519541
Initial commit.

Who changed what in which revision?

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