diff options
Diffstat (limited to 'src/mods/commands/yc_exec.cpp')
| -rw-r--r--[-rwxr-xr-x] | src/mods/commands/yc_exec.cpp | 108 |
1 files changed, 66 insertions, 42 deletions
diff --git a/src/mods/commands/yc_exec.cpp b/src/mods/commands/yc_exec.cpp index f912c20..6f2d533 100755..100644 --- a/src/mods/commands/yc_exec.cpp +++ b/src/mods/commands/yc_exec.cpp @@ -1,3 +1,27 @@ +/*:* + *: File: ./src/mods/commands/yc_exec.cpp + *: + *: yChat; Homepage: www.yChat.org; Version 0.7.9.5-RELEASE + *: + *: Copyright (C) 2003 Paul C. Buetow, Volker Richter + *: Copyright (C) 2004 Paul C. Buetow + *: Copyright (C) 2005 EXA Digital Solutions GbR + *: + *: This program is free software; you can redistribute it and/or + *: modify it under the terms of the GNU General Public License + *: as published by the Free Software Foundation; either version 2 + *: of the License, or (at your option) any later version. + *: + *: This program is distributed in the hope that it will be useful, + *: but WITHOUT ANY WARRANTY; without even the implied warranty of + *: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + *: GNU General Public License for more details. + *: + *: You should have received a copy of the GNU General Public License + *: along with this program; if not, write to the Free Software + *: Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + *:*/ + #include "../../incl.h" #include "../../chat/room.h" #include "../../chat/user.h" @@ -9,58 +33,58 @@ 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<string> *params = (vector<string>*) c->elem[2]; // param array +extern "C" +{ + int extern_function(void *v_arg) + { + container *c=(container *)v_arg; - string s_command; - string s_msg = p_timr->get_time(); - string s_output; + 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<string> *params = (vector<string>*) c->elem[2]; // param array - vector<string>::iterator iter; - for ( iter = params->begin(); iter != params->end(); iter++ ) - s_command.append( " " + *iter ); + string s_command; + string s_msg = p_timr->get_time(); + string s_output; - s_command.append(" 2>error.log"); + vector<string>::iterator iter; + for ( iter = params->begin(); iter != params->end(); iter++ ) + s_command.append( " " + *iter ); - s_msg.append( " " + s_command + "<br>\n" ); + s_command.append(" 2>error.log"); - p_user->msg_post( &s_msg ); + s_msg.append( " " + s_command + "<br>\n" ); - FILE *file; - char buffer[READBUF]; + p_user->msg_post( &s_msg ); - if( (file=popen(s_command.c_str(), "r")) == NULL ) - { - s_output = "<font color=\"#" - + p_conf->get_elem("chat.html.errorcolor") - + p_conf->get_elem("chat.msgs.err.execcommand") - + "</font><br>\n"; - p_user->msg_post( &s_output ); - } + FILE *file; + char buffer[READBUF]; - else - { - s_output.append("<hr>\n"); - while(true) - { - if(fgets(buffer, READBUF, file) == NULL) - break; + if( (file=popen(s_command.c_str(), "r")) == NULL ) + { + s_output = "<font color=\"#" + + p_conf->get_elem("chat.html.errorcolor") + + p_conf->get_elem("chat.msgs.err.execcommand") + + "</font><br>\n"; + p_user->msg_post( &s_output ); + } + else + { + s_output.append("<hr>\n"); + while(true) + { + if(fgets(buffer, READBUF, file) == NULL) + break; - s_output.append( string(buffer) + "<br>\n" ); - } + s_output.append( string(buffer) + "<br>\n" ); + } - p_user->msg_post( &s_output ); - pclose(file); - } + p_user->msg_post( &s_output ); + pclose(file); + } - return 0; - } + return 0; + } } |
