void tree_mdoc(void *arg, const struct roff_man *mdoc) { print_meta(&mdoc->meta); putchar('\n'); print_mdoc(mdoc->first->child, 0); }
void tree_man(void *arg, const struct roff_man *man) { print_meta(&man->meta); if (man->meta.hasbody == 0) puts("body = empty"); putchar('\n'); print_man(man->first->child, 0); }
void relation(const shared_ptr<Osmium::OSM::Relation const>& relation) const { m_output_stream << "relation:\n"; print_meta(relation); m_output_stream << " members: (count=" << relation->members().size() << ")\n"; Osmium::OSM::RelationMemberList::const_iterator end = relation->members().end(); for (Osmium::OSM::RelationMemberList::const_iterator it = relation->members().begin(); it != end; ++it) { m_output_stream << " type=" << it->type() << " ref=" << it->ref() << " role=|" << it->role() << "|" << "\n"; } }
void way(const shared_ptr<Osmium::OSM::Way const>& way) const { m_output_stream << "way:\n"; print_meta(way); m_output_stream << " node_count=" << way->nodes().size() << "\n"; m_output_stream << " nodes:\n"; Osmium::OSM::WayNodeList::const_iterator end = way->nodes().end(); for (Osmium::OSM::WayNodeList::const_iterator it = way->nodes().begin(); it != end; ++it) { m_output_stream << " ref=" << it->ref() << "\n"; } }
int main(int argc, char **argv) { if (pif_error(argc < 2, "No command specified")) return usage(-1); if (pif_error(argc < 3, "No DB path specified")) return usage(-1); char *cmd = argv[1]; char *keyData[JFT_KEY_LIMIT]; JFDB *db; JFT_Stem prefix = (JFT_Stem) {.data = (uint8_t *)keyData}; JFT_Symbol *stop = NULL; JFT_Offset offset; switch (cmd[0]) { case 'm': case 'n': case 'k': case 'f': case 'l': db = JFDB_open(argv[2], 0); if (JFDB_pif_error(db, "Failed to open")) return -1; switch (cmd[0]) { case 'm': print_meta(db); break; case 'n': offset = argc > 3 ? atoi(argv[3]) : db->tip.cp.offset; offset = MAX(offset, sizeof(JFDB_Header)); print_info(db, &prefix, db->kmap.map + offset, &null); break; case 'k': if (!prefix_opts(&prefix, &stop, argc - 2, argv + 2)) print_keys(db, &prefix, stop); break; case 'f': if (!prefix_opts(&prefix, &stop, argc - 2, argv + 2)) print_find(db, &prefix, stop); break; case 'l': load_input(db, stdin); break; } if (JFDB_close(db)) return -1; break; case 'w': if (pif_error(JFDB_wipe(argv[2]), "Failed to wipe")) return -1; break; default: usage(1); break; } return 0; }
void area(const osmium::Area& area) { print_title("AREA", area); print_meta(area); }
void relation(const osmium::Relation& relation) { print_title("RELATION", relation); print_meta(relation); }
void way(const osmium::Way& way) { print_title("WAY", way); print_meta(way); }
void node(const osmium::Node& node) { print_title("NODE", node); print_meta(node); print_location(node); }
// formatted output of details when long list is requested void print_details(const std::list<Arc::FileInfo>& files, bool show_urls, bool show_meta) { if (files.empty()) return; unsigned int namewidth = 0; unsigned int sizewidth = 0; unsigned int csumwidth = 0; // find longest length of each field to align the output for (std::list<Arc::FileInfo>::const_iterator i = files.begin(); i != files.end(); i++) { if (i->GetName().length() > namewidth) namewidth = i->GetName().length(); if (i->CheckSize() && i->GetSize() > 0 && // log(0) not good! (unsigned int)(log10(i->GetSize()))+1 > sizewidth) sizewidth = (unsigned int)(log10(i->GetSize()))+1; if (i->CheckCheckSum() && i->GetCheckSum().length() > csumwidth) csumwidth = i->GetCheckSum().length(); } std::cout << std::setw(namewidth) << std::left << "<Name> "; std::cout << "<Type> "; std::cout << std::setw(sizewidth + 4) << std::left << "<Size> "; std::cout << "<Modified> "; std::cout << "<Validity> "; std::cout << "<CheckSum> "; std::cout << std::setw(csumwidth) << std::right << "<Latency>"; std::cout << std::endl; // set minimum widths to accommodate headers if (namewidth < 7) namewidth = 7; if (sizewidth < 7) sizewidth = 7; if (csumwidth < 8) csumwidth = 8; for (std::list<Arc::FileInfo>::const_iterator i = files.begin(); i != files.end(); i++) { std::cout << std::setw(namewidth) << std::left << i->GetName(); switch (i->GetType()) { case Arc::FileInfo::file_type_file: std::cout << " file"; break; case Arc::FileInfo::file_type_dir: std::cout << " dir"; break; default: std::cout << " (n/a)"; break; } if (i->CheckSize()) { std::cout << " " << std::setw(sizewidth) << std::right << Arc::tostring(i->GetSize()); } else { std::cout << " " << std::setw(sizewidth) << std::right << " (n/a)"; } if (i->CheckModified()) { std::cout << " " << i->GetModified(); } else { std::cout << " (n/a) "; } if (i->CheckValid()) { std::cout << " " << i->GetValid(); } else { std::cout << " (n/a) "; } if (i->CheckCheckSum()) { std::cout << " " << std::setw(csumwidth) << std::left << i->GetCheckSum(); } else { std::cout << " " << std::setw(csumwidth) << std::left << " (n/a)"; } if (i->CheckLatency()) { std::cout << " " << i->GetLatency(); } else { std::cout << " (n/a)"; } std::cout << std::endl; if (show_urls) print_urls(*i); if (show_meta) print_meta(*i); } }
static bool arcls(const Arc::URL& dir_url, Arc::UserConfig& usercfg, bool show_details, // longlist bool show_urls, // locations bool show_meta, // metadata bool no_list, // don't list dirs bool force_list, // force dir list bool check_access, // checkaccess int recursion, // recursion int timeout) { // timeout if (!dir_url) { logger.msg(Arc::ERROR, "Invalid URL: %s", dir_url.fullstr()); return false; } if (dir_url.Protocol() == "urllist") { std::list<Arc::URL> dirs = Arc::ReadURLList(dir_url); if (dirs.empty()) { logger.msg(Arc::ERROR, "Can't read list of locations from file %s", dir_url.Path()); return false; } bool r = true; for (std::list<Arc::URL>::iterator dir = dirs.begin(); dir != dirs.end(); dir++) { if(!arcls(*dir, usercfg, show_details, show_urls, show_meta, no_list, force_list, check_access, recursion, timeout)) r = false; } return r; } Arc::DataHandle url(dir_url, usercfg); if (!url) { logger.msg(Arc::ERROR, "Unsupported URL given"); return false; } if (url->RequiresCredentials()) { if (usercfg.ProxyPath().empty() ) { logger.msg(Arc::ERROR, "Unable to list content of %s: No valid credentials found", dir_url.str()); return false; } Arc::Credential holder(usercfg.ProxyPath(), "", "", ""); if (holder.GetEndTime() < Arc::Time()){ logger.msg(Arc::ERROR, "Proxy expired"); logger.msg(Arc::ERROR, "Unable to list content of %s: No valid credentials found", dir_url.str()); return false; } } url->SetSecure(false); if(check_access) { std::cout << dir_url << " - "; if(url->Check(false)) { std::cout << "passed" << std::endl; return true; } else { std::cout << "failed" << std::endl; return false; } } Arc::DataPoint::DataPointInfoType verb = (Arc::DataPoint::DataPointInfoType) (Arc::DataPoint::INFO_TYPE_MINIMAL | Arc::DataPoint::INFO_TYPE_NAME); if(show_urls) verb = (Arc::DataPoint::DataPointInfoType) (verb | Arc::DataPoint::INFO_TYPE_STRUCT); if(show_meta) verb = (Arc::DataPoint::DataPointInfoType) (verb | Arc::DataPoint::INFO_TYPE_ALL); if(show_details) verb = (Arc::DataPoint::DataPointInfoType) (verb | Arc::DataPoint::INFO_TYPE_TYPE | Arc::DataPoint::INFO_TYPE_TIMES | Arc::DataPoint::INFO_TYPE_CONTENT | Arc::DataPoint::INFO_TYPE_ACCESS); if(recursion > 0) verb = (Arc::DataPoint::DataPointInfoType) (verb | Arc::DataPoint::INFO_TYPE_TYPE); Arc::DataStatus res; Arc::FileInfo file; std::list<Arc::FileInfo> files; if(no_list) { // only requested object is queried res = url->Stat(file, verb); if(res) files.push_back(file); } else if(force_list) { // assume it is directory, fail otherwise res = url->List(files, verb); } else { // try to guess what to do res = url->Stat(file, (Arc::DataPoint::DataPointInfoType)(verb | Arc::DataPoint::INFO_TYPE_TYPE)); if(res && (file.GetType() == Arc::FileInfo::file_type_file)) { // If it is file and we are sure, then just report it. files.push_back(file); } else { // If it is dir then we must list it. But if stat failed or // if type is undefined there is still chance it is directory. Arc::DataStatus res_ = url->List(files, verb); if(!res_) { // If listing failed maybe simply report previous result if any. if(res) { files.push_back(file); } } else { res = res_; } } } if (!res) { if (files.empty()) { logger.msg(Arc::ERROR, std::string(res)); if (res.Retryable()) logger.msg(Arc::ERROR, "This seems like a temporary error, please try again later"); return false; } logger.msg(Arc::INFO, "Warning: " "Failed listing files but some information is obtained"); } files.sort(); // Sort alphabetically by name if (show_details) { print_details(files, show_urls, show_meta); } else { for (std::list<Arc::FileInfo>::iterator i = files.begin(); i != files.end(); i++) { std::cout << i->GetName() << std::endl; if (show_urls) print_urls(*i); if (show_meta) print_meta(*i); } } // Do recursion. Recursion has no sense if listing is forbidden. if ((recursion > 0) && (!no_list)) { for (std::list<Arc::FileInfo>::iterator i = files.begin(); i != files.end(); i++) { if (i->GetType() == Arc::FileInfo::file_type_dir) { Arc::URL suburl = dir_url; if(suburl.Protocol() != "file") { if (suburl.Path()[suburl.Path().length() - 1] != '/') suburl.ChangePath(suburl.Path() + "/" + i->GetName()); else suburl.ChangePath(suburl.Path() + i->GetName()); } else { if (suburl.Path()[suburl.Path().length() - 1] != G_DIR_SEPARATOR) suburl.ChangePath(suburl.Path() + G_DIR_SEPARATOR_S + i->GetName()); else suburl.ChangePath(suburl.Path() + i->GetName()); } std::cout << std::endl; std::cout << suburl.str() << ":" << std::endl; arcls(suburl, usercfg, show_details, show_urls, show_meta, no_list, force_list, check_access, recursion - 1, timeout); std::cout << std::endl; } } } return true; }
void operator()(const osmium::Way& way) { print_title("WAY", way); print_meta(way); }