MCPcopy Create free account
hub / github.com/FirebirdSQL/firebird / doctorModuleExtension

Method doctorModuleExtension

src/common/os/posix/mod_loader.cpp:89–122  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

87}
88
89bool ModuleLoader::doctorModuleExtension(Firebird::PathName& name, int& step)
90{
91 if (name.isEmpty())
92 return false;
93
94 switch (step++)
95 {
96 case 0: // Step 0: append missing extension
97 {
98 Firebird::PathName::size_type pos = name.rfind("." SHRLIB_EXT);
99 if (pos != name.length() - 3)
100 {
101 pos = name.rfind("." SHRLIB_EXT ".");
102 if (pos == Firebird::PathName::npos)
103 {
104 name += "." SHRLIB_EXT;
105 return true;
106 }
107 }
108 step++; // instead of break
109 }
110 case 1: // Step 1: insert missing prefix
111 {
112 Firebird::PathName::size_type pos = name.rfind('/');
113 pos = (pos == Firebird::PathName::npos) ? 0 : pos + 1;
114 if (name.find("lib", pos) != pos)
115 {
116 name.insert(pos, "lib");
117 return true;
118 }
119 }
120 }
121 return false;
122}
123
124#ifdef DEV_BUILD
125#define FB_RTLD_MODE RTLD_NOW // make sure nothing left unresolved

Callers

nothing calls this directly

Calls 5

isEmptyMethod · 0.45
rfindMethod · 0.45
lengthMethod · 0.45
findMethod · 0.45
insertMethod · 0.45

Tested by

no test coverage detected