Example #1
0
int
ShellCmdArgStr::operator()(const char * & arg, CmdLine & cmd)
{
   CmdArgStr  str_arg(*this);
   const char * save_arg = arg;
   int  badval = str_arg(arg, cmd);
   if (save_arg && !badval)  set(save_arg);
   return  badval;
}
Example #2
0
    virtual String&
    operator() (String &str, 
                const StringTestCaseData<StringChar>& tdata) const {

        const StringTestCase &tcase = tdata.tcase_;

        bool reverse_iter = StringIds::ReverseIterator == tdata.func_.iter_id_
            || StringIds::ConstReverseIterator == tdata.func_.iter_id_;

        const std::size_t srclen_ = tcase.arg ? tdata.arglen_ : str.size ();

        const std::size_t off = 
            reverse_iter ? srclen_ - tdata.off2_ - tdata.ext2_ : tdata.off2_;
        const std::size_t ext = tdata.ext2_;

        if (0 == tcase.arg) {
            // exercise self-referential modification (i.e., replacing
            // a range of elements with a subrange of its own elements)

            const Iterator first (this->begin (str, (Iterator*)0) + off);
            const Iterator last (first + ext);

            return str.assign (first, last);
        }

        String str_arg (tdata.arg_, tdata.arglen_);

        const Iterator first (this->begin (str_arg, (Iterator*)0) + off);
        const Iterator last (first + ext);

        return str.assign (first, last);
    }
Example #3
0
    virtual String&
    operator() (String &str, 
                const StringTestCaseData<StringChar>& tdata) const {

        const StringTestCase &tcase = tdata.tcase_;

        // create a pair of iterators into the string object being modified
        const StringIter first1 (str.begin () + tdata.off1_);

        bool reverse_iter = StringIds::ReverseIterator == tdata.func_.iter_id_
            || StringIds::ConstReverseIterator == tdata.func_.iter_id_;

        const std::size_t srclen_ = tcase.arg ? tdata.arglen_ : str.size ();

        const std::size_t off = 
            reverse_iter ? srclen_ - tdata.off2_ - tdata.ext2_ : tdata.off2_;
        const std::size_t ext = tdata.ext2_;

        if (0 == tcase.arg) {
            // exercise self-referential modification (i.e., replacing
            // a range of elements with a subrange of its own elements)

            const Iterator first2 (this->begin (str, (Iterator*)0) + off);
            const Iterator last2 (first2 + ext);

            str.insert (first1, first2, last2);
            return str;
        }

        String str_arg (tdata.arg_, tdata.arglen_);

        const Iterator first2 (this->begin (str_arg, (Iterator*)0) + off);
        const Iterator last2 (first2 + ext);

        str.insert (first1, first2, last2);
        return str;
    }
Example #4
0
static int handle_arg(const char *arg, FileFinder &finder)
{
  struct stat sb;

  int ret = stat(arg, &sb);
  if (ret) {
    perror("stat");
    return ret;
  }

  std::string str_arg(arg);

  switch (sb.st_mode & S_IFMT) {
  case S_IFDIR:
    ret = finder.find_files(str_arg);
    break;

  default:
    fprintf(stderr, "Only directories are supported\n");
    ret = -1;
  }

  return ret;
}