97 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			97 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
								 | 
							
								# Dirent
							 | 
						||
| 
								 | 
							
								Dirent is a C/C++ programming interface that allows programmers to retrieve
							 | 
						||
| 
								 | 
							
								information about files and directories under Linux/UNIX.  This project
							 | 
						||
| 
								 | 
							
								provides Linux compatible Dirent interface for Microsoft Windows.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Installation
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Download the latest Dirent installation package from
							 | 
						||
| 
								 | 
							
								[GitHub](https://github.com/tronkko/dirent/releases) and
							 | 
						||
| 
								 | 
							
								unpack the installation file with 7-zip, for example.  The installation
							 | 
						||
| 
								 | 
							
								package contains dirent.h file as well as a few example programs and
							 | 
						||
| 
								 | 
							
								tests.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Install Dirent for All Programs
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								To make dirent.h available for all C/C++ programs, simply copy the
							 | 
						||
| 
								 | 
							
								``include/dirent.h`` file to the system include directory.  System include
							 | 
						||
| 
								 | 
							
								directory contains header files such as assert.h and windows.h.  In Visual
							 | 
						||
| 
								 | 
							
								Studio 2008, for example, the system include may be found at
							 | 
						||
| 
								 | 
							
								``C:\Program Files\Microsoft Visual Studio 9.0\VC\include``.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Everything you need is included in the single dirent.h file, and you can
							 | 
						||
| 
								 | 
							
								start using Dirent immediately -- there is no need to add files to your
							 | 
						||
| 
								 | 
							
								Visual Studio project.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Embed Dirent into Your Own Project
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								If you wish to distribute dirent.h alongside with your own source code, then
							 | 
						||
| 
								 | 
							
								copy ``include/dirent.h`` file to a new sub-directory within your project and
							 | 
						||
| 
								 | 
							
								add that directory to include path on Windows while omitting the directory
							 | 
						||
| 
								 | 
							
								under Linux/UNIX.  This allows your project to be compiled against native
							 | 
						||
| 
								 | 
							
								dirent.h on Linux/UNIX while substituting the functionality on Microsoft
							 | 
						||
| 
								 | 
							
								Windows.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Examples
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								The installation package contains four example programs:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Program  | Purpose
							 | 
						||
| 
								 | 
							
								-------- | -----------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								ls       | List files in a directory, e.g. ls "c:\Program Files"
							 | 
						||
| 
								 | 
							
								find     | Find files in subdirectories, e.g. find "c:\Program Files\CMake"
							 | 
						||
| 
								 | 
							
								updatedb | Build database of files in a drive, e.g. updatedb c:\
							 | 
						||
| 
								 | 
							
								locate   | Locate a file from database, e.g. locate notepad.exe
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								To build the example programs, first install [CMake](https://cmake.org/).
							 | 
						||
| 
								 | 
							
								Then, with CMake installed, open command prompt and create a temporary
							 | 
						||
| 
								 | 
							
								directory ``c:\temp\dirent`` for the build files as
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								c:\
							 | 
						||
| 
								 | 
							
								mkdir temp
							 | 
						||
| 
								 | 
							
								mkdir temp\dirent
							 | 
						||
| 
								 | 
							
								cd temp\dirent
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Generate build files as
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								cmake d:\dirent
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								where ``d:\dirent`` is the root directory of the Dirent package (containing
							 | 
						||
| 
								 | 
							
								this README.md and LICENSE file).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Once CMake is finished, open Visual Studio, load the generated dirent.sln file
							 | 
						||
| 
								 | 
							
								from the build directory and build the solution.  Once the build completes, run
							 | 
						||
| 
								 | 
							
								the example programs from the command prompt as
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								cd Debug
							 | 
						||
| 
								 | 
							
								ls .
							 | 
						||
| 
								 | 
							
								find .
							 | 
						||
| 
								 | 
							
								updatedb c:\
							 | 
						||
| 
								 | 
							
								locate cmd.exe
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Copying
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Dirent may be freely distributed under the MIT license.  See the
							 | 
						||
| 
								 | 
							
								[LICENSE](LICENSE) file for details.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Alternatives to Dirent
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								I ported Dirent to Microsoft Windows in 1998 when only a few alternatives
							 | 
						||
| 
								 | 
							
								were available.  However, the situation has changed since then and nowadays
							 | 
						||
| 
								 | 
							
								both [Cygwin](http://www.cygwin.com) and [MingW](http://www.mingw.org)
							 | 
						||
| 
								 | 
							
								allow you to compile a great number of UNIX programs in Microsoft Windows.
							 | 
						||
| 
								 | 
							
								They both provide a full dirent API as well as many other UNIX APIs.  MingW
							 | 
						||
| 
								 | 
							
								can even be used for commercial applications!
							 |