00001 #include <string> 00002 #include <iostream> 00003 00004 #include <archon/util/exception.H> 00005 #include <archon/util/uri.H> 00006 00007 using namespace std; 00008 using namespace Archon::Utilities; 00009 00010 int main(int argc, const char *argv[]) throw() 00011 { 00012 set_unexpected(Exception::terminal<exceptionCatchInfo>); 00013 set_terminate (Exception::terminal<exceptionCatchInfo>); 00014 00015 if(argc < 2) 00016 { 00017 cerr << "Synopsis: " << argv[0] << " RELATIVE-URI [ BASE-URI ]\n"; 00018 exit(1); 00019 } 00020 00021 string relativeUri = argv[1]; 00022 Uri baseUri; 00023 if(argc == 3) baseUri = Uri(argv[2]); 00024 00025 try 00026 { 00027 cout << Uri(relativeUri, baseUri) << "\n"; 00028 } 00029 catch(Uri::SyntaxException &e) 00030 { 00031 cerr << Uri::explain(e); 00032 exit(1); 00033 } 00034 00035 return 0; 00036 }