summaryrefslogtreecommitdiff
path: root/src/tool/tool.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/tool/tool.cpp')
-rw-r--r--src/tool/tool.cpp251
1 files changed, 181 insertions, 70 deletions
diff --git a/src/tool/tool.cpp b/src/tool/tool.cpp
index 1da4a12..3b8e326 100644
--- a/src/tool/tool.cpp
+++ b/src/tool/tool.cpp
@@ -11,118 +11,229 @@
#include "tool.h"
+bool
+tool::is_alpha_numeric( string &s_digit )
+{
+ const char *p_digit = s_digit.c_str();
+ int i_len = strlen( p_digit );
+
+ for( int i=0; i<i_len; i++ )
+ {
+ if ( ! isalnum( *p_digit ) )
+ return false;
+ p_digit++;
+ }
+
+ return true;
+}
+
string
-tool::trim( string s_str )
+tool::int2string( int i_int )
+{
+ char buf[64];
+ sprintf(buf, "%d", i_int);
+ return buf;
+}
+
+long
+tool::unixtime()
{
- if(s_str.empty())
- return "";
+ time_t clock;
+ return (long) time( &clock );
+}
- char c_cur = s_str[0];
- auto int pos=0;
+int
+tool::string2int( string s_digit )
+{
+ const char *p_digit = s_digit.c_str();
+ int i_res = 0;
+
+ // Convert each digit char and add into result.
+ while (*p_digit >= '0' && *p_digit <='9')
+ {
+ i_res = (i_res * 10) + (*p_digit - '0');
+ p_digit++;
+ }
+
+ // Check that there were no non-digits at end.
+ if (*p_digit != 0)
+ {
+ return -1;
+ }
+
+ return i_res;
+}
- // left trim
- while (c_cur==' '|| c_cur == '\n' || c_cur == '\r')
- {
- s_str.erase(pos,1);
- c_cur = s_str[++pos];
- }
+string
+tool::to_lower( string s_str )
+{
+ string s_tmp("");
- // right trim
- pos=s_str.size();
- c_cur = s_str[s_str.size()];
+ for( int i = 0; i < s_str.size() ;i++ )
+ s_tmp = s_tmp + (char) tolower( s_str.at(i) );
- while (c_cur==' ' || c_cur == '\n' || c_cur == '\0' || c_cur == '\r')
- {
- s_str.erase(pos,1);
- c_cur = s_str[--pos];
- }
+ return s_tmp;
+}
+
+void
+tool::strip_html( string *p_str)
+{
+ int i_pos;
+ if( (i_pos=p_str->find("<", 0)) == string::npos )
+ return;
+
+ while(true)
+ {
+ p_str->replace(i_pos, 1, "&lt;");
+
+ if( (i_pos = p_str->find("<", 0)) == string::npos )
+ return;
+ }
+}
+
+string
+tool::ychat_version()
+{
+ return "yChat " + string(VERSION)
+ + "-" + string(BRANCH)
+ + " Build " + int2string(BUILDNR);
+}
+
+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 s_str;
+
+ char c_cur = s_str[0];
+ int i_pos = 0;
+
+ // left trim
+ while ( c_cur == ' '|| c_cur == '\n' || c_cur == '\r' )
+ {
+ s_str.erase(i_pos,1);
+ c_cur = s_str[++i_pos];
+ }
+
+ // right trim
+ i_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(i_pos, 1);
+ c_cur = s_str[--i_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 = ' ';
+ for ( char* 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];
+ unsigned 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();
- }
+ 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;
+ 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]);
+ int i_pos = s_file.find_last_of(".");
- return to_lower(s_ext);
- }
- return "";
+ if( i_pos != string::npos )
+ {
+ string s_ext = s_file.substr(i_pos+1, s_file.size()-i_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;
+ char *buf = new char[64];
+ sprintf(buf, "%d", i_int);
+ return buf;
}
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 )
+ FILE *file;
+ char buf[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)
{
- 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));
+ if(fgets(buf, READBUF, file) == NULL)
+ break;
+
+ switch (m_method)
+ {
+ case METH_NCURSES:
+ wrap::system_message( clean_char(buf) );
+ break;
+ default:
+ s_ret.append("\n" + string(buf));
} // switch
- }
- pclose(file);
}
- return s_ret;
+ pclose(file);
+ }
+
+ return s_ret;
}
#endif