2 * See the file LICENSE for redistribution information.
4 * Copyright (c) 1997-2009 Oracle. All rights reserved.
15 * Return a list of the files in a directory.
18 __os_dirlist(env, dir, returndir, namesp, cntp)
26 int arraysz, cnt, ret;
27 char *filename, *p, **names;
29 FILE_MANAGER_CREATE(env, pIFileMgr, ret);
33 if ((ret = IFILEMGR_EnumInit(pIFileMgr, dir, FALSE)) != SUCCESS) {
34 IFILEMGR_Release(pIFileMgr);
35 __db_syserr(env, ret, "IFILEMGR_EnumInit");
36 return (__os_posix_err(ret));
41 while (IFILEMGR_EnumNext(pIFileMgr, &fi) != FALSE) {
42 if (++cnt >= arraysz) {
44 if ((ret = __os_realloc(env,
45 (u_int)arraysz * sizeof(char *), &names)) != 0)
48 for (filename = fi.szName;
49 (p = strchr(filename, '\\')) != NULL; filename = p + 1)
51 for (; (p = strchr(filename, '/')) != NULL; filename = p + 1)
53 if ((ret = __os_strdup(env, filename, &names[cnt - 1])) != 0)
56 IFILEMGR_Release(pIFileMgr);
62 nomem: if (names != NULL)
63 __os_dirfree(env, names, cnt);
64 IFILEMGR_Release(pIFileMgr);
66 COMPQUIET(returndir, 0);
73 * Free the list of files.
76 __os_dirfree(env, names, cnt)
82 __os_free(env, names[--cnt]);
83 __os_free(env, names);