/*----------------------------------------------------------------------------- * osd_opendir: open a directory for iteration * * Parameters: * * dirname - path to the directory in question * * Return value: * * upon success, this function should return an osd_directory pointer * which contains opaque data necessary to traverse the directory; on * failure, this function should return NULL * -----------------------------------------------------------------------------*/ public override osd_directory osd_opendir(string dirname) { if (!Directory.Exists(dirname)) { return(null); } osd_directory_WinForms dirWinForms = new osd_directory_WinForms(); dirWinForms.m_directory = new DirectoryInfo(dirname); dirWinForms.m_directories = dirWinForms.m_directory.GetDirectories(); dirWinForms.m_files = dirWinForms.m_directory.GetFiles(); return(dirWinForms); }
/*----------------------------------------------------------------------------- * osd_readdir: return information about the next entry in the directory * * Parameters: * * dir - pointer to an osd_directory that was returned from a prior * call to osd_opendir * * Return value: * * a constant pointer to an osd_directory_entry representing the current item * in the directory, or NULL, indicating that no more entries are * present * -----------------------------------------------------------------------------*/ public override osd_directory_entry osd_readdir(osd_directory dir) { osd_directory_WinForms dirWinForms = (osd_directory_WinForms)dir; if (dirWinForms.m_directoryIdx < dirWinForms.m_directories.Length) { osd_directory_entry entry = new osd_directory_entry(); entry.name = dirWinForms.m_directories[dirWinForms.m_directoryIdx++].Name; entry.type = osd_dir_entry_type.ENTTYPE_DIR; return(entry); } else if (dirWinForms.m_fileIdx < dirWinForms.m_files.Length) { osd_directory_entry entry = new osd_directory_entry(); entry.name = dirWinForms.m_files[dirWinForms.m_fileIdx++].Name; entry.type = osd_dir_entry_type.ENTTYPE_FILE; return(entry); } else { return(null); } }