1/* Copyright (C) 2007-2008 The Android Open Source Project
2**
3** This software is licensed under the terms of the GNU General Public
4** License version 2, as published by the Free Software Foundation, and
5** may be copied, distributed, and modified under those terms.
6**
7** This program is distributed in the hope that it will be useful,
8** but WITHOUT ANY WARRANTY; without even the implied warranty of
9** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10** GNU General Public License for more details.
11*/
12#ifndef _ANDROID_UTILS_DIR_H
13#define _ANDROID_UTILS_DIR_H
14
15#include "android/utils/compiler.h"
16
17ANDROID_BEGIN_HEADER
18
19/* simple utility to parse directories for files            */
20/* needed because Unix and Windows don't use the same stuff */
21
22typedef struct DirScanner  DirScanner;
23
24/* Create a new directory scanner object from a given rootPath.
25 * returns NULL in case of failure (error code in errno)
26 */
27DirScanner*    dirScanner_new ( const char*  rootPath );
28
29/* Destroy a given directory scanner. You must always call
30 * this function to release proper system resources.
31 */
32void           dirScanner_free( DirScanner*  s );
33
34/* Get the name of the next file from a directory scanner.
35 * Returns NULL when there is no more elements in the list.
36 *
37 * This is only the file name, use dirScanner_nextFull to
38 * get its full path.
39 *
40 * This will never return '.' and '..'.
41 *
42 * The returned string is owned by the scanner, and will
43 * change on the next call to this function or when the
44 * scanner is destroyed.
45 */
46const char*    dirScanner_next( DirScanner*  s );
47
48/* A variant of dirScanner_next() which returns the full path
49 * to the next directory element.
50 */
51const char*    dirScanner_nextFull( DirScanner*  s );
52
53ANDROID_END_HEADER
54
55#endif /* _ANDROID_UTILS_DIR_H */
56