当前位置: 首页>>代码示例>>C++>>正文


C++ inode_state类代码示例

本文整理汇总了C++中inode_state的典型用法代码示例。如果您正苦于以下问题:C++ inode_state类的具体用法?C++ inode_state怎么用?C++ inode_state使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


在下文中一共展示了inode_state类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: fn_make

void fn_make (inode_state& state, const wordvec& words){
   DEBUGF ('c', state);
   DEBUGF ('c', words);
   if (words.size() <= 0){
      cout << "mkdir: missing operand" << endl;
      return;
   }
   wordvec newData(words.begin()+2, words.end());

   wordvec pathvec = split (words[1], "/");
   string fullpath = "";
   string filename = *(pathvec.end()-1);
   for (auto it = pathvec.begin(); it != pathvec.end()-1; ++it)
      fullpath += (*it + "/");
   inode_ptr res = resolvePath(fullpath, state.getCwd()); //resulting path before filename
   if (res == nullptr) return;
   inode_ptr file = res->getContents()->getNode(filename); //search directory for filename if existing
   if (file != nullptr && res != nullptr) {
      if(file->isDirectory()) //getContents()->getNode(words[1])
         return;
      file->getContents()->writefile(newData);
      return;
   }
   res->getContents()->mkfile(filename);
   res->getContents()->getNode(filename)->getContents()->writefile(newData);

   inode_ptr ogcwd = state.getCwd();
   //inode_ptr newFile = state.getCwd()->getContents()->mkfile(words[1]);
   //wordvec newData(words.begin()+2, words.end());
   //newFile->getContents()->writefile(newData);
}
开发者ID:coltonUCSC,项目名称:cs109,代码行数:31,代码来源:commands.cpp

示例2: fn_cd

void fn_cd (inode_state& state, const wordvec& words){
   DEBUGF ('c', state);
   DEBUGF ('c', words);
   /*
   if(words.size() > 1) {
      wordvec nav_path = split(words[1], "/");
      state.final_cd(nav_path);
   } else {
      wordvec root_dir{};
      state.final_cd(root_dir);
   }
   */
   if(words.size() > 2){
      complain() << "cd: Too many arguments" << endl;
      return;
   }
   if(words.size() > 1) path_name_set(words.at(1));
   if(words.size() == 1){
      state.setCwd(state.get_root());
      return;
   } else if(words.at(1).at(0) == '/'){
      state.setCwd(state.get_root());
   }
   wordvec nav_path = split(words.at(1), "/");
   state.final_cd(nav_path);
}
开发者ID:ddsun95,项目名称:projects,代码行数:26,代码来源:commands.cpp

示例3: print_dir

void print_dir(inode_state& state) {
   cout << pathname(state.get_contents().at("."),
            state.get_root()->get_inode_nr()) << ":" << endl;
   for(auto elem : state.get_contents()) {
      cout << "\t" << elem.second->get_inode_nr() << " "
      << elem.second->size() << " "
      << elem.first << " "
      << endl;
   }
   cout << endl;
}
开发者ID:oniemann,项目名称:CPP-Projects,代码行数:11,代码来源:commands.cpp

示例4: fn_cat

void fn_cat (inode_state& state, const wordvec& words){
   DEBUGF ('c', state);
   DEBUGF ('c', words);
   string filename = *(words.end()-1);
   inode_ptr ogcwd = state.getCwd();
   inode_ptr res = resolvePath(words[1], state.getCwd());
   if (res == nullptr){
      throw command_error ("cat: " + filename + ": file does not exist");
      return; }
   if (res->isDirectory()) return; //error here
   cout << res->getContents()->readfile() << endl;
}
开发者ID:coltonUCSC,项目名称:cs109,代码行数:12,代码来源:commands.cpp

示例5: fn_ls

void fn_ls (inode_state& state, const wordvec& words){
   DEBUGF ('c', state);
   DEBUGF ('c', words);
   inode_ptr ogcwd = state.getCwd();
   inode_ptr res = ogcwd;
   if(words.size() > 1)
      res = resolvePath(words[1], state.getCwd());
   if (res == nullptr) return;
   auto pathList = res->getContents()->getAllPaths();
   state.setCwd(res);
   fn_pwd(state, words);
   for (size_t i = 0; i < pathList.size(); i++){
      cout << pathList[i] << endl;
   }
   state.setCwd(ogcwd);
}
开发者ID:coltonUCSC,项目名称:cs109,代码行数:16,代码来源:commands.cpp

示例6: fn_rm

void fn_rm (inode_state& state, const wordvec& words){
   DEBUGF ('c', state);
   DEBUGF ('c', words);
   if (words.size() <= 0) return; //error here?
   wordvec pathvec = split(words[1],"/");
   string fullpath = "";
   string name = *(pathvec.end()-1);
   for (auto it = pathvec.begin(); it != pathvec.end()-1; ++it)
      fullpath += (*it + "/");
   inode_ptr res = resolvePath(fullpath,state.getCwd());
   if (res == nullptr) return; //error
   inode_ptr rmfile = res->getContents()->getNode(name);
   if (res != nullptr && rmfile != nullptr){
      if(rmfile->isDirectory()){
         if(rmfile->getContents()->getAllPaths().size() <= 2){
            res->getContents()->remove(name);
            return;
         } else { return; /* not empty */ }}
         res->getContents()->remove(name);
         return;
   }
   /*
   for (auto it = words.begin()+1; it != words.end(); ++it){
      state.getCwd()->getContents()->remove(*it);
   }
   */
}
开发者ID:coltonUCSC,项目名称:cs109,代码行数:27,代码来源:commands.cpp

示例7: fn_make

void fn_make (inode_state& state, const wordvec& words){
   DEBUGF ('c', state);
   DEBUGF ('c', words);
   if(words.size() < 2){
      complain() << "make: Specify pathname" << endl;
      return;
   }
   const auto placeholder = state.get_cwd();
   if(words.at(1).at(0) == '/'){
      state.setCwd(state.get_root());
   }
   wordvec nav_path  = split(words[1], "/");
   wordvec insertion(&words[2], &words[words.size()]);
   state.final_make_file(nav_path, insertion);
   state.setCwd(placeholder);
}
开发者ID:ddsun95,项目名称:projects,代码行数:16,代码来源:commands.cpp

示例8: fn_mkdir

void fn_mkdir (inode_state& state, const wordvec& words){
   DEBUGF ('c', state);
   DEBUGF ('c', words);

   inode_ptr cwd = state.get_cwd();
   const string filename = words[1];
   cwd->mkdirectory(filename, cwd);
}
开发者ID:jrzidow,项目名称:Advanced_Programming,代码行数:8,代码来源:commands.cpp

示例9: fn_prompt

void fn_prompt (inode_state& state, const wordvec& words){
   DEBUGF ('c', state);
   DEBUGF ('c', words);
   string temp;
   for(unsigned int i =1; i < words.size(); i++) 
      temp += words[i] + " ";
   state.set_prompt(temp);
}
开发者ID:jrzidow,项目名称:Advanced_Programming,代码行数:8,代码来源:commands.cpp

示例10: fn_rmr

void fn_rmr (inode_state& state, const wordvec& words){
   DEBUGF ('c', state);
   DEBUGF ('c', words);
   if(words.size() == 1){
      complain() << "rmr: Specify file name" << endl;
   } else if(words.size() > 2){
      complain() << "rmr: Too many arguments" << endl;
   } else if(words.at(1) == "." or words.at(1) == ".." or 
      (words.at(1).at(0) == '/' and words.at(1).length() == 1)){
      complain() << "rmr: Cannot remove directory" << endl;
   } else {
      path_name_set(words.at(1));
      const auto placeholder = state.get_cwd();
      if(words.at(1).at(0) == '/') state.setCwd(state.get_root());
      wordvec navpath = split(words[1], "/");
      string ffname = navpath.back();
      if(navpath.size() == 1){
         state.function_rmr(state.get_cwd(), ffname);
         return;
      }
      wordvec filepath(&navpath[0], &navpath[navpath.size() - 1]);
      state.function_final_rmr(ffname, filepath);
      state.setCwd(placeholder);
   }
}
开发者ID:ddsun95,项目名称:projects,代码行数:25,代码来源:commands.cpp

示例11: fn_ls

//DONEDONEDONEDONEDONEDONEDONE///////////////////////////////////////
void fn_ls (inode_state& state, const wordvec& words){
   bool r = false;
   string orig = pathname(state.get_contents().at("."),
                  state.get_root()->get_inode_nr());
   if (words.size() > 1) {
      for(auto word = words.begin()+1; word != words.end(); word++) {
         if((*word)[0] == '/') r = true;
         state.set_cwd(split(*word,"/"), r);
         print_dir(state);
         state.set_cwd(split(orig,"/"),true);
      }
   }
   else
      print_dir(state);         

   DEBUGF ('c', state);
   DEBUGF ('c', words);
}
开发者ID:oniemann,项目名称:CPP-Projects,代码行数:19,代码来源:commands.cpp

示例12: fn_lsr

void fn_lsr (inode_state& state, const wordvec& words){
   DEBUGF ('c', state);
   DEBUGF ('c', words);

   inode_ptr ogcwd = state.getCwd();
   inode_ptr newCwd = ogcwd;
   if (words.size() > 0){
      newCwd = resolvePath(words[1], state.getCwd());
      state.setCwd(newCwd);
   }
   auto pathList = newCwd->getContents()->getAllDirs();
   wordvec ls {"ls"};
   fn_ls(state, ls);
   for(int i = 0; i < pathList.size(); i++){
      DFS(pathList[i], state);
   }
   state.setCwd(ogcwd);
}
开发者ID:coltonUCSC,项目名称:cs109,代码行数:18,代码来源:commands.cpp

示例13: fn_pwd

void fn_pwd (inode_state& state, const wordvec& words){
   DEBUGF ('c', state);
   DEBUGF ('c', words);
   if(words.size() > 1) {
      complain() << "pwd: Too many arguments" << endl;
      return;
   }
   state.fn_pwd();
}
开发者ID:ddsun95,项目名称:projects,代码行数:9,代码来源:commands.cpp

示例14: fn_prompt

void fn_prompt (inode_state& state, const wordvec& words){
   string str {};
   for (auto iter = words.begin()+1; iter != words.end(); ++iter){
      str = str + *iter + " ";
   }
   state.set_prompt(str);
   DEBUGF ('c', state);
   DEBUGF ('c', words);
}
开发者ID:oniemann,项目名称:CPP-Projects,代码行数:9,代码来源:commands.cpp

示例15: fn_make

void fn_make (inode_state& state, const wordvec& words){
   DEBUGF ('c', state);
   DEBUGF ('c', words);
     
   inode_ptr cwd = state.get_cwd();
   wordvec w(words.begin() + 1, words.end()); 
   cwd->mkfile(cwd,w); 
   
}
开发者ID:jrzidow,项目名称:Advanced_Programming,代码行数:9,代码来源:commands.cpp


注:本文中的inode_state类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。