00001 // $Id: Executor.cci 1742 2010-11-04 14:51:56Z g0dil $ 00002 // 00003 // Copyright (C) 2008 00004 // Fraunhofer (FOKUS) 00005 // Competence Center NETwork research (NET), St. Augustin, GERMANY 00006 // Stefan Bund <g0dil@berlios.de> 00007 // 00008 // This program is free software; you can redistribute it and/or modify 00009 // it under the terms of the GNU General Public License as published by 00010 // the Free Software Foundation; either version 2 of the License, or 00011 // (at your option) any later version. 00012 // 00013 // This program is distributed in the hope that it will be useful, 00014 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00015 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00016 // GNU General Public License for more details. 00017 // 00018 // You should have received a copy of the GNU General Public License 00019 // along with this program; if not, write to the 00020 // Free Software Foundation, Inc., 00021 // 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 00022 00026 //#include "Executor.ih" 00027 00028 // Custom includes 00029 00030 #define prefix_ inline 00031 //-///////////////////////////////////////////////////////////////////////////////////////////////// 00032 00033 //-///////////////////////////////////////////////////////////////////////////////////////////////// 00034 // senf::console::Executor 00035 00036 prefix_ senf::console::Executor::Executor() 00037 : root_(senf::console::root().thisptr()), cwd_ (), oldCwd_ (), 00038 autocd_ (false), autocomplete_ (false) 00039 { 00040 cwd_.push_back(root_); 00041 } 00042 00043 prefix_ void senf::console::Executor::operator()(std::ostream & output, 00044 ParseCommandInfo const & command) 00045 { 00046 return execute(output, command); 00047 } 00048 00049 prefix_ void senf::console::Executor::cwd(DirectoryNode & dir) 00050 { 00051 cwd_.clear(); 00052 cwd_.push_back(dir.thisptr()); 00053 oldCwd_ = cwd_; 00054 dirstack_.clear(); 00055 } 00056 00057 00058 prefix_ bool senf::console::Executor::autocd() 00059 const 00060 { 00061 return autocd_; 00062 } 00063 00064 prefix_ senf::console::Executor & senf::console::Executor::autocd(bool v) 00065 { 00066 autocd_ = v; 00067 return *this; 00068 } 00069 00070 prefix_ bool senf::console::Executor::autocomplete() 00071 const 00072 { 00073 return autocomplete_; 00074 } 00075 00076 prefix_ senf::console::Executor & senf::console::Executor::autocomplete(bool v) 00077 { 00078 autocomplete_ = true; 00079 return *this; 00080 } 00081 00082 prefix_ senf::console::DirectoryNode & senf::console::Executor::chroot() 00083 const 00084 { 00085 return *root_; 00086 } 00087 00088 prefix_ senf::console::Executor & senf::console::Executor::chroot(DirectoryNode & node) 00089 { 00090 root_ = node.thisptr(); 00091 cwd_.clear(); 00092 cwd_.push_back(root_); 00093 oldCwd_ = cwd_; 00094 return *this; 00095 } 00096 00097 prefix_ senf::console::Executor & senf::console::Executor::policy(SecurityPolicy policy) 00098 { 00099 policy_ = policy; 00100 return *this; 00101 } 00102 00103 prefix_ bool senf::console::Executor::skipping() 00104 const 00105 { 00106 return cwd_.empty(); 00107 } 00108 00109 //-///////////////////////////////////////////////////////////////////////////////////////////////// 00110 #undef prefix_ 00111 00112 00113 // Local Variables: 00114 // mode: c++ 00115 // fill-column: 100 00116 // comment-column: 40 00117 // c-file-style: "senf" 00118 // indent-tabs-mode: nil 00119 // ispell-local-dictionary: "american" 00120 // compile-command: "scons -u test" 00121 // End: