X-Git-Url: http://git.tdb.fi/?p=libs%2Fcore.git;a=blobdiff_plain;f=examples%2Fls.cpp;h=42667d5e07acd998038ee4e1a584f606aa6987b7;hp=a31c19bf7240364d514f95b73161b2e8bb3b56ae;hb=HEAD;hpb=99324fb7c8b951e7885d42913afafef4e3a11b95 diff --git a/examples/ls.cpp b/examples/ls.cpp index a31c19b..42667d5 100644 --- a/examples/ls.cpp +++ b/examples/ls.cpp @@ -1,3 +1,4 @@ +#include #include #include #include @@ -23,7 +24,7 @@ public: virtual int main(); private: Row create_row(const string &, const FS::Stat &); - void print_rows(const list &); + void print_rows(const vector &); }; Ls::Ls(int argc, char **argv): @@ -31,34 +32,34 @@ Ls::Ls(int argc, char **argv): { GetOpt getopt; getopt.add_option('l', "long", long_format, GetOpt::NO_ARG); + getopt.add_argument("file", args, GetOpt::OPTIONAL_ARG); getopt(argc, argv); - args = getopt.get_args(); if(args.empty()) args.push_back("."); } int Ls::main() { - list file_rows; + vector file_rows; bool first = true; - for(vector::const_iterator i=args.begin(); i!=args.end(); ++i) + for(const string &a: args) { - FS::Path path = *i; + FS::Path path = a; FS::Stat stat = FS::lstat(path); if(stat.is_directory()) { - list rows; - list files = FS::list_files(path); - files.sort(); - for(list::iterator j=files.begin(); j!=files.end(); ++j) + vector rows; + vector files = FS::list_files(path); + sort(files); + for(const string &fn: files) { if(long_format) - rows.push_back(create_row(*j, FS::lstat(path / *j))); + rows.push_back(create_row(fn, FS::lstat(path/fn))); else { Row r; - r.push_back(*j); + r.push_back(fn); rows.push_back(r); } } @@ -66,17 +67,17 @@ int Ls::main() if(!first) IO::print("\n"); if(args.size()>1) - IO::print("%s:\n", *i); + IO::print("%s:\n", a); print_rows(rows); first = false; } else if(long_format) - file_rows.push_back(create_row(*i, stat)); + file_rows.push_back(create_row(a, stat)); else { Row r; - r.push_back(*i); + r.push_back(a); file_rows.push_back(r); } } @@ -112,22 +113,20 @@ Ls::Row Ls::create_row(const string &name, const FS::Stat &st) return result; } -void Ls::print_rows(const list &rows) +void Ls::print_rows(const vector &rows) { vector col_width; - for(list::const_iterator i=rows.begin(); i!=rows.end(); ++i) + for(const Row &row: rows) { - const Row &row = *i; if(row.size()>col_width.size()) col_width.resize(row.size(), 0); for(unsigned j=0; j(col_width[j], row[j].size()); } - for(list::const_iterator i=rows.begin(); i!=rows.end(); ++i) + for(const Row &row: rows) { - const Row &row = *i; string line; for(unsigned j=0; j