void CustomOptionDescription::checkIfPositional(const boost::program_options::positional_options_description& positionalDesc)
{
    for (size_t i = 0; i < positionalDesc.max_total_count(); ++i) {
        if (optionID == positionalDesc.name_for_position(i)) {
            boost::algorithm::erase_all(optionDisplayName, "-");
            isPositional = true;
            break;
        }
    }
}
예제 #2
0
void printHelp(const po::options_description& desc, const po::positional_options_description& posOpts) {
  std::vector<std::string> parts;
  parts.push_back("Usage: ntfs_linker");
  for (unsigned int i = 0; i < posOpts.max_total_count(); ++i) {
    parts.push_back(posOpts.name_for_position(i));
  }
  if (desc.options().size() > 0) {
    parts.push_back("[options]");
  }
  std::stringstream ss;
  std::copy(parts.begin(), parts.end(), std::ostream_iterator<std::string>(ss, " "));
  std::cout << "ntfs-linker, Copyright (c) Stroz Friedberg, LLC" << std::endl;
  std::cout << "Version " << VERSION << std::endl;
  std::cout << ss.str() << std::endl;
  std::cout << desc << std::endl;
}
예제 #3
0
파일: binmap.cpp 프로젝트: quarkslab/binmap
 /** process arguments according to option description */
 int run(int argc, char *argv[]) {
   po::options_description all_opts;
   all_opts.add(desc_).add(positional_);
   po::store(po::command_line_parser(argc, argv)
                 .options(all_opts)
                 .positional(positional_opts_)
                 .run(),
             vm_);
   po::notify(vm_);
   if (vm_.count("help")) {
     std::cout << cmd_name_ << " [options]";
     if (positional_opts_.max_total_count() != 0)
       std::cout << " " << positional_opts_.name_for_position(0);
     if (positional_opts_.max_total_count() > 1)
       std::cout << "...";
     std::cout << std::endl << desc_;
     return 0;
   }
   return process();
 }