38#ifdef R__COMPLETE_MEM_TERMINATION 
   44      TUrlCleanup(
TObjArray **protocols, 
THashList **hosts) : fSpecialProtocols(protocols),fHostFQDNs(hosts) {}
 
   46         if (*fSpecialProtocols) (*fSpecialProtocols)->
Delete();
 
   47         delete *fSpecialProtocols;
 
   48         *fSpecialProtocols = 0;
 
   49         if (*fHostFQDNs) (*fHostFQDNs)->
Delete();
 
   78   SetUrl(url, defaultIsFile);
 
   80#ifdef R__COMPLETE_MEM_TERMINATION 
  115   if (!url || !url[0]) {
 
  135      defaultIsFile = 
kTRUE;
 
  140   char *u, *u0 = 
Strip(url);
 
  150      if (
s1.EndsWith(
"/-")) {
 
  155      if (!strncmp(u, 
s1, 
l)) {
 
  156         if (
s1(0) == 
'/' && 
s1(
l-1) == 
'/') {
 
  167         if (!strncmp(u+
l, 
"//", 2))
 
  184   if ((s = strstr(u, 
":/")) && u+1 != s) {
 
  186         Error(
"TUrl", 
"%s malformed, URL must contain \"://\"", u0);
 
  198         const std::size_t bufferSize = strlen(
"file:") + strlen(u0) + 1;
 
  199         char *newu = 
new char [bufferSize];
 
  200         snprintf(newu, bufferSize, 
"file:%s", u0);
 
  212   if ((s = strchr(t, 
'@')) && (
 
  213       ((
x = strchr(t, 
'/')) && s < 
x) ||
 
  214       ((
x = strchr(t, 
'?')) && s < 
x) ||
 
  215       ((
x = strchr(t, 
'#')) && s < 
x) ||
 
  218      if (*(s-1) == 
'\\') {
 
  224      if ((s2 = strchr(u, 
':'))) {
 
  242   if ((s = strchr(u, 
':')) || (s = strchr(u, 
'/')) || (s = strchr(u, 
'?')) || (s = strchr(u, 
'#'))) {
 
  243      if ((strchr (u, 
':') > strchr(u, 
'/')) && (strchr (u, 
'/')))
 
  257         if ((s = strchr(u, 
'/')) || (s = strchr(u, 
'?')) || (s = strchr(u, 
'#'))) {
 
  293   char *opt = strchr(u, 
'?');
 
  294   char *anc = strchr(u, 
'#');
 
  297   if (opt && anc && opt > anc) {
 
  302   if ((s = opt) || (s = anc)) {
 
  306      if (stripDoubleSlash)
 
  317         if ((s = strchr(u, 
'#'))) {
 
  334      if (stripDoubleSlash)
 
  438            passwd.ReplaceAll(
"@", 
"\\@");
 
  448      if (!deflt || withDeflt) {
 
  526   if (setDefaultPort) {
 
  552   if (
this == obj) 
return 0;
 
  576   static std::atomic_bool usedEnv = ATOMIC_VAR_INIT(
false);
 
  602   const char *protos = 
gEnv->
GetValue(
"Url.Special", 
"file: hpss: dcache: dcap:");
 
  609         if (
proto->String().IsNull()) {
 
  662   if (!key) 
return nullptr;
 
winID h TVirtualViewer3D TVirtualGLPainter p
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void value
 
R__EXTERN TVirtualMutex * gROOTMutex
 
char * Strip(const char *str, char c=' ')
Strip leading and trailing c (blanks by default) from a string.
 
void Printf(const char *fmt,...)
Formats a string in a circular formatting buffer and prints the string.
 
char * StrDup(const char *str)
Duplicate the string str.
 
R__EXTERN TSystem * gSystem
 
#define R__LOCKGUARD(mutex)
 
virtual void SetOwner(Bool_t enable=kTRUE)
Set whether this collection is the owner (enable==true) of its content.
 
virtual Int_t GetValue(const char *name, Int_t dflt) const
Returns the integer value for a resource.
 
THashList implements a hybrid collection class consisting of a hash table and a list to store TObject...
 
void Delete(Option_t *option="") override
Remove all objects from the list AND delete all heap based objects.
 
TObject * FindObject(const char *name) const override
Find object using its name.
 
This class represents an Internet Protocol (IP) address.
 
const char * GetHostName() const
 
void Add(TObject *obj) override
 
TMap implements an associative array of (key,value) pairs using a THashTable for efficient retrieval ...
 
void Add(TObject *obj) override
This function may not be used (but we need to provide it since it is a pure virtual in TCollection).
 
virtual void SetOwnerKeyValue(Bool_t ownkeys=kTRUE, Bool_t ownvals=kTRUE)
Set ownership for keys and values.
 
TObject * FindObject(const char *keyname) const override
Check if a (key,value) pair exists with keyname as name of the key.
 
TObject * GetValue(const char *keyname) const
Returns a pointer to the value associated with keyname as name of the key.
 
The TNamed class is the base class for all named ROOT classes.
 
const char * GetTitle() const override
Returns title of object.
 
Int_t GetEntriesFast() const
 
void Delete(Option_t *option="") override
Remove all objects from the array AND delete all heap based objects.
 
TObject * At(Int_t idx) const override
 
TObject * UncheckedAt(Int_t i) const
 
void Add(TObject *obj) override
 
Collectable string class.
 
const TString & GetString() const
 
Mother of all ROOT objects.
 
virtual const char * GetName() const
Returns name of object.
 
TObject & operator=(const TObject &rhs)
TObject assignment operator.
 
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
 
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
 
virtual TClass * IsA() const
 
int CompareTo(const char *cs, ECaseCompare cmp=kExact) const
Compare a string to char *cs2.
 
TString & ReplaceAll(const TString &s1, const TString &s2)
 
TObjArray * Tokenize(const TString &delim) const
This function is used to isolate sequential tokens in a TString.
 
Bool_t BeginsWith(const char *s, ECaseCompare cmp=kExact) const
 
TString & Remove(Ssiz_t pos)
 
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
 
virtual TInetAddress GetHostByName(const char *server)
Get Internet Protocol (IP) address of host.
 
This class represents a WWW compatible URL.
 
void CleanRelativePath()
Recompute the path removing all relative directory jumps via '..'.
 
static TObjArray * GetSpecialProtocols()
Read the list of special protocols from the rootrc files.
 
const char * GetUrl(Bool_t withDeflt=kFALSE) const
Return full URL.
 
void FindFile(char *u, Bool_t stripDoubleSlash=kTRUE)
Find file and optionally anchor and options.
 
const char * GetFileAndOptions() const
Return the file and its options (the string specified behind the ?).
 
const char * GetValueFromOptions(const char *key) const
Return a value for a given key from the URL options.
 
void SetUrl(const char *url, Bool_t defaultIsFile=kFALSE)
Parse url character string and split in its different subcomponents.
 
void SetProtocol(const char *proto, Bool_t setDefaultPort=kFALSE)
Set protocol and, optionally, change the port accordingly.
 
TUrl & operator=(const TUrl &rhs)
TUrl assignment operator.
 
Int_t GetIntValueFromOptions(const char *key) const
Return a value for a given key from the URL options as an Int_t, a missing key returns -1.
 
Int_t fPort
fully qualified host name
 
const char * GetHostFQDN() const
Return fully qualified domain name of url host.
 
void Print(Option_t *option="") const override
Print URL on stdout.
 
static THashList * fgHostFQDNs
 
void ParseOptions() const
Parse URL options into a key/value map.
 
const char * GetOptions() const
 
TString fHostFQ
file with option and anchor
 
Bool_t HasOption(const char *key) const
Returns true if the given key appears in the URL options list.
 
static TObjArray * fgSpecialProtocols
map containing options key/value pairs
 
Int_t Compare(const TObject *obj) const override
Compare two urls as strings.