Exemplo n.º 1
0
        /*-----------------------------------------------------------------------------
        *   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);
        }
Exemplo n.º 2
0
        /*-----------------------------------------------------------------------------
        *   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);
            }
        }