summaryrefslogtreecommitdiff
path: root/yhttpd/src/tool/dir.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'yhttpd/src/tool/dir.cpp')
-rw-r--r--yhttpd/src/tool/dir.cpp66
1 files changed, 66 insertions, 0 deletions
diff --git a/yhttpd/src/tool/dir.cpp b/yhttpd/src/tool/dir.cpp
new file mode 100644
index 0000000..a23cca2
--- /dev/null
+++ b/yhttpd/src/tool/dir.cpp
@@ -0,0 +1,66 @@
+#ifndef DIR_CPP
+#define DIR_CPP
+
+#include "dir.h"
+
+using namespace std;
+
+dir::dir()
+{
+ b_open = false;
+}
+
+dir::~dir()
+{
+ vec_dir.clear();
+ close_dir();
+}
+
+bool
+dir::open_dir( char *c_dir )
+{
+ string s_dir( c_dir );
+ return open_dir( s_dir );
+}
+
+bool
+dir::open_dir( string &s_dir )
+{
+ if ( b_open )
+ return false;
+
+ p_d = opendir( s_dir.c_str() );
+
+ if ( p_d == NULL )
+ return false; // Could not open dir.
+
+ b_open = true;
+
+ return true; // Could open dir with success.
+}
+
+void
+dir::close_dir()
+{
+ if ( b_open && p_d != NULL )
+ {
+ closedir( p_d );
+ b_open = false;
+ }
+}
+
+void
+dir::read_dir()
+{
+ if ( p_d != NULL )
+ while( p_ep = readdir( p_d ) )
+ vec_dir.push_back( string( p_ep->d_name ) );
+}
+
+vector<string>
+dir::get_dir_vec()
+{
+ return vec_dir;
+}
+
+#endif