summaryrefslogtreecommitdiff
path: root/yhttpd-0.7.1/src/tool
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2013-04-06 13:14:41 +0200
committerPaul Buetow <paul@buetow.org>2013-04-06 13:14:41 +0200
commit9cd3ccffd5372dfde3af478e3f832f18db4be3f1 (patch)
tree631c295a4a4a16b57502b847626763a279bf6df7 /yhttpd-0.7.1/src/tool
parent13aaf70af703748fe096e0664c305cd202637ad2 (diff)
tagging tags
Diffstat (limited to 'yhttpd-0.7.1/src/tool')
-rw-r--r--yhttpd-0.7.1/src/tool/dir.cpp66
-rw-r--r--yhttpd-0.7.1/src/tool/dir.h33
-rw-r--r--yhttpd-0.7.1/src/tool/tool.cpp145
-rw-r--r--yhttpd-0.7.1/src/tool/tool.h97
4 files changed, 341 insertions, 0 deletions
diff --git a/yhttpd-0.7.1/src/tool/dir.cpp b/yhttpd-0.7.1/src/tool/dir.cpp
new file mode 100644
index 0000000..392112a
--- /dev/null
+++ b/yhttpd-0.7.1/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()
+{
+ dir_vec.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;
+
+ dp = opendir( s_dir.c_str() );
+
+ if ( dp == NULL )
+ return false; // Could not open dir.
+
+ b_open = true;
+
+ return true; // Could open dir with success.
+}
+
+void
+dir::close_dir()
+{
+ if ( b_open && dp != NULL )
+ {
+ closedir( dp );
+ b_open = false;
+ }
+}
+
+void
+dir::read_dir()
+{
+ if ( dp != NULL )
+ while( ep = readdir( dp ) )
+ dir_vec.push_back( string( ep->d_name ) );
+}
+
+vector<string>
+dir::get_dir_vec()
+{
+ return dir_vec;
+}
+
+#endif
diff --git a/yhttpd-0.7.1/src/tool/dir.h b/yhttpd-0.7.1/src/tool/dir.h
new file mode 100644
index 0000000..cff265f
--- /dev/null
+++ b/yhttpd-0.7.1/src/tool/dir.h
@@ -0,0 +1,33 @@
+
+#ifndef DIR_H
+#define DIR_H
+
+#include <stddef.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <dirent.h>
+#include <vector>
+#include "../incl.h"
+
+using namespace std;
+
+class dir
+{
+private:
+ bool b_open;
+ DIR *dp;
+ struct dirent *ep;
+ vector<string> dir_vec;
+
+public:
+ dir();
+ ~dir();
+
+ bool open_dir( char *c_dir );
+ bool open_dir( string &s_dir );
+ void close_dir();
+ void read_dir();
+ vector<string> get_dir_vec();
+};
+
+#endif
diff --git a/yhttpd-0.7.1/src/tool/tool.cpp b/yhttpd-0.7.1/src/tool/tool.cpp
new file mode 100644
index 0000000..e2ef9ae
--- /dev/null
+++ b/yhttpd-0.7.1/src/tool/tool.cpp
@@ -0,0 +1,145 @@
+#ifndef TOOL_CPP
+#define TOOL_CPP
+
+#include <ctype.h>
+#include <time.h>
+#include <unistd.h>
+#include <sys/wait.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <fcntl.h>
+
+#include "tool.h"
+
+list<string>
+tool::split_string(string s_string, string s_split) {
+ list<string> list_ret;
+ unsigned i_pos, i_len = s_split.length();
+
+ while ( (i_pos = s_string.find(s_split)) != string::npos )
+ {
+ list_ret.push_back( s_string.substr(0, i_pos) );
+ s_string = s_string.substr( i_pos + i_len );
+ }
+
+ list_ret.push_back( s_string );
+
+ return list_ret;
+}
+
+string
+tool::trim( string s_str )
+{
+ if(s_str.empty())
+ return "";
+
+ char c_cur = s_str[0];
+ auto int pos=0;
+
+ // left trim
+ while (c_cur==' '|| c_cur == '\n' || c_cur == '\r')
+ {
+ s_str.erase(pos,1);
+ c_cur = s_str[++pos];
+ }
+
+ // right trim
+ pos=s_str.size();
+ c_cur = s_str[s_str.size()];
+
+ while (c_cur==' ' || c_cur == '\n' || c_cur == '\0' || c_cur == '\r')
+ {
+ s_str.erase(pos,1);
+ c_cur = s_str[--pos];
+ }
+
+ return s_str;
+}
+
+char*
+tool::clean_char( char* c_str )
+{
+ // Ralf:
+ char *c_pos;
+ for (c_pos = c_str; *c_pos != '\0'; ++c_pos)
+ if ( iscntrl(*c_pos) ) *c_pos = ' ';
+ return c_str;
+}
+
+string
+tool::replace( string s_string, string s_search, string s_replace )
+{
+ unsigned int i_pos[2];
+
+ for ( i_pos[0] = s_string.find( s_search );
+ i_pos[0] != string::npos;
+ i_pos[0] = s_string.find( s_search, i_pos[1] ) )
+ {
+ s_string.replace( i_pos[0], s_search.length(), s_replace );
+ i_pos[1] = i_pos[0] + s_replace.length();
+ }
+
+ return s_string;
+}
+
+string
+tool::get_extension( string s_file )
+{
+ int pos = s_file.find_last_of(".");
+ if(pos != string::npos)
+ {
+ string s_ext=s_file.substr(pos+1, s_file.size()-(pos+1));
+ for(int i = 0;i<s_ext.size();i++)
+ s_ext[i]=tolower(s_ext[i]);
+
+ return to_lower(s_ext);
+ }
+ return "";
+}
+
+char*
+tool::int2char( int i_int )
+{
+ char *buffer = new char[64];
+ sprintf(buffer, "%d", i_int);
+ return buffer;
+}
+
+string
+tool::shell_command( string s_command, method m_method )
+{
+ FILE *file;
+ char buffer[READBUF];
+ char* c_pos;
+ string s_ret = "";
+
+ wrap::system_message(SHELLEX);
+ wrap::system_message(s_command);
+
+ if( (file=popen(s_command.c_str(), "r")) == NULL )
+ {
+ wrap::system_message( SHELLER );
+ }
+
+ else
+ {
+ while(true)
+ {
+ if(fgets(buffer, READBUF, file) == NULL)
+ break;
+ switch (m_method) {
+ case METH_NCURSES:
+ wrap::system_message( clean_char(buffer) );
+ break;
+ default:
+ s_ret.append("\n" + string(buffer));
+ } // switch
+ }
+ pclose(file);
+ }
+
+ return s_ret;
+}
+
+#endif
+
diff --git a/yhttpd-0.7.1/src/tool/tool.h b/yhttpd-0.7.1/src/tool/tool.h
new file mode 100644
index 0000000..8185325
--- /dev/null
+++ b/yhttpd-0.7.1/src/tool/tool.h
@@ -0,0 +1,97 @@
+#ifndef TOOL_H
+#define TOOL_H
+
+#include "../incl.h"
+
+#include <list>
+
+using namespace std;
+
+class tool
+{
+public:
+ static list<string> split_string(string s_string, string s_split);
+
+ static bool is_alpha_numeric( string &s_digit )
+ {
+ const char *digit = s_digit.c_str();
+ int i_len = strlen( digit );
+
+ for( int i=0; i<i_len; i++ )
+ {
+ if ( ! isalnum( *digit ) )
+ return false;
+ digit++;
+ }
+ return true;
+ }
+
+ static char* int2char( int i_int );
+ static char* clean_char( char* c_str);
+ static string trim( string s_str );
+ static string replace( string s_string, string s_search, string s_replace );
+
+ static string int2string( int i_int )
+ {
+ char buffer[64];
+ sprintf(buffer, "%d", i_int);
+ return string(buffer);
+ }
+
+ static long unixtime()
+ {
+ time_t clock;
+ return (long) time( &clock );
+ }
+
+ static int string2int( string s_digit )
+ {
+ auto const char *digit = s_digit.c_str();
+ int result = 0;
+
+ // Convert each digit char and add into result.
+ while (*digit >= '0' && *digit <='9')
+ {
+ result = (result * 10) + (*digit - '0');
+ digit++;
+ }
+
+ // Check that there were no non-digits at end.
+ if (*digit != 0)
+ {
+ return -1;
+ }
+
+ return result;
+ }
+ static void strip_html( string *s_str)
+ {
+ auto int i_pos;
+ if((i_pos=s_str->find("<",0))==string::npos)
+ return;
+ while(true)
+ {
+ s_str->replace(i_pos,1,"&lt;");
+ if((i_pos=s_str->find("<",0))==string::npos)
+ return;
+ }
+ }
+
+ static string get_extension( string s_file );
+ static string to_lower( string s )
+ {
+ string s_tmp("");
+ for(int i=0;i < s.size() ;i++)
+ s_tmp=s_tmp+(char)tolower(s.at(i));
+ return s_tmp;
+ }
+
+ static string shell_command( string s_command, method m_method );
+
+ static string yhttpd_version()
+ {
+ return string(VERSION) + "-" + string(BRANCH) + " Build " + int2string(BUILDNR);
+ }
+};
+
+#endif