From 9cd3ccffd5372dfde3af478e3f832f18db4be3f1 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sat, 6 Apr 2013 13:14:41 +0200 Subject: tagging tags --- ychat-0.7.9.1/src/mods/commands/yc_exec.cpp | 66 +++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100755 ychat-0.7.9.1/src/mods/commands/yc_exec.cpp (limited to 'ychat-0.7.9.1/src/mods/commands/yc_exec.cpp') diff --git a/ychat-0.7.9.1/src/mods/commands/yc_exec.cpp b/ychat-0.7.9.1/src/mods/commands/yc_exec.cpp new file mode 100755 index 0000000..119942d --- /dev/null +++ b/ychat-0.7.9.1/src/mods/commands/yc_exec.cpp @@ -0,0 +1,66 @@ +#include "../../incl.h" +#include "../../chat/room.h" +#include "../../chat/user.h" +#include +#include +#include +#include +#include + +using namespace std; + +extern "C" +{ + int extern_function(void *v_arg) + { + container *c=(container *)v_arg; + + user* p_user = (user*) c->elem[1]; // the corresponding user + timr* p_timr = (timr*) ((dynamic_wrap*)c->elem[3])->TIMR; + conf* p_conf = (conf*) ((dynamic_wrap*)c->elem[3])->CONF; + vector *params = (vector*) c->elem[2]; // param array + + string s_command; + string s_msg = p_timr->get_time(); + string s_output; + + vector::iterator iter; + for ( iter = params->begin(); iter != params->end(); iter++ ) + s_command.append( " " + *iter ); + + s_command.append(" 2>error.log"); + + s_msg.append( " " + s_command + "
\n" ); + + p_user->msg_post( &s_msg ); + + FILE *file; + char buffer[READBUF]; + + if( (file=popen(s_command.c_str(), "r")) == NULL ) + { + s_output = "get_elem("chat.html.errorcolor") + + p_conf->get_elem("chat.msgs.err.execcommand") + + "
\n"; + p_user->msg_post( &s_output ); + } + else + { + s_output.append("
\n"); + while(true) + { + if(fgets(buffer, READBUF, file) == NULL) + break; + + s_output.append( string(buffer) + "
\n" ); + } + + p_user->msg_post( &s_output ); + pclose(file); + } + + return 0; + } +} + -- cgit v1.2.3