summaryrefslogtreecommitdiff
path: root/firmware/common/dir.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/common/dir.c')
-rw-r--r--firmware/common/dir.c40
1 files changed, 11 insertions, 29 deletions
diff --git a/firmware/common/dir.c b/firmware/common/dir.c
index 27af5f7fca..9a78d910a7 100644
--- a/firmware/common/dir.c
+++ b/firmware/common/dir.c
@@ -159,7 +159,6 @@ file_error:
159 return rc; 159 return rc;
160} 160}
161 161
162#if 0
163/* read a directory */ 162/* read a directory */
164struct dirent * readdir(DIR *dirp) 163struct dirent * readdir(DIR *dirp)
165{ 164{
@@ -183,19 +182,23 @@ file_error:
183 182
184 return res; 183 return res;
185} 184}
186#endif
187 185
188/* readdir, readdir_r common fn */ 186#if 0 /* not included now but probably should be */
189static int readdir_common(DIR *dirp, struct dirent *entry, struct dirent **result) 187/* read a directory (reentrant) */
188int readdir_r(DIR *dirp, struct dirent *entry, struct dirent **result)
190{ 189{
191 *result = NULL; /* we checked for validity before calling, yes? */ 190 if (!result)
191 FILE_ERROR_RETURN(EFAULT, -2);
192
193 *result = NULL;
194
195 if (!entry)
196 FILE_ERROR_RETURN(EFAULT, -3);
197
192 struct dirstr_desc * const dir = GET_DIRSTR(READER, dirp); 198 struct dirstr_desc * const dir = GET_DIRSTR(READER, dirp);
193 if (!dir) 199 if (!dir)
194 FILE_ERROR_RETURN(ERRNO, -1); 200 FILE_ERROR_RETURN(ERRNO, -1);
195 201
196 if (!entry)
197 entry = &dir->entry;
198
199 int rc = ns_readdir_dirent(&dir->stream, &dir->scan, entry); 202 int rc = ns_readdir_dirent(&dir->stream, &dir->scan, entry);
200 if (rc < 0) 203 if (rc < 0)
201 FILE_ERROR(EIO, rc * 10 - 4); 204 FILE_ERROR(EIO, rc * 10 - 4);
@@ -215,27 +218,6 @@ file_error:
215 return rc; 218 return rc;
216} 219}
217 220
218/* read a directory */
219struct dirent * readdir(DIR *dirp)
220{
221 struct dirent *entry;
222 readdir_common(dirp, NULL, &entry);
223 return entry;
224}
225
226/* read a directory (reentrant) */
227int readdir_r(DIR *dirp, struct dirent *entry, struct dirent **result)
228{
229 if (!result)
230 FILE_ERROR_RETURN(EFAULT, -2);
231 *result = NULL;
232 if (!entry)
233 FILE_ERROR_RETURN(EFAULT, -3);
234 return readdir_common(dirp, entry, result);
235}
236
237
238#if 0 /* not included now but probably should be */
239/* reset the position of a directory stream to the beginning of a directory */ 221/* reset the position of a directory stream to the beginning of a directory */
240void rewinddir(DIR *dirp) 222void rewinddir(DIR *dirp)
241{ 223{