by
Changes to 5 files · Browse files at ab4d7595b497 Showing diff from parent 5a8fbd378fde d7a64ec19887 Diff from another changeset...
@@ -41,20 +41,14 @@ return S_FALSE;
char filterStatus = 0;
- if (myTortoiseClass == TORTOISE_OLE_ADDED)
+ if (myTortoiseClass == 'A')
filterStatus = 'A';
-
+
char status = 0;
- if (!HgQueryDirstate(path, filterStatus, status))
+ if (!HgQueryDirstate(myTortoiseClass, path, filterStatus, status))
return S_FALSE;
- if (myTortoiseClass == TORTOISE_OLE_ADDED && status == 'A')
- return S_OK;
- else if (myTortoiseClass == TORTOISE_OLE_MODIFIED && status == 'M')
- return S_OK;
- else if (myTortoiseClass == TORTOISE_OLE_UNCHANGED && status == 'C')
- return S_OK;
- else if (myTortoiseClass == TORTOISE_OLE_NOTINREPO && status == '?')
+ if (status == myTortoiseClass)
return S_OK;
return S_FALSE;
|
|
|
@@ -39,39 +39,37 @@ char status;
unsigned tickcount;
- QueryState(): isdir(false), status(0), tickcount(0) {}
+ QueryState(): isdir(false), status('0'), tickcount(0) {}
};
-bool hasHgDir(const std::string& path)
+bool hasHgDir(char cls, const std::string& path)
{
bool res = false;
- if (path.empty() || path == "\\" || PathIsRoot(path.c_str()))
+ if (path.empty() || path == "\\" || ::PathIsRoot(path.c_str()))
{
- TDEBUG_TRACE(
- "hasHgDir(\"" << path << "\") -> " << res
- );
return res;
}
const std::string p = path + "\\.hg";
- res = PathIsDirectory(p.c_str()) != 0;
+ res = ::PathIsDirectory(p.c_str()) != 0;
TDEBUG_TRACE(
- "hasHgDir: PathIsDirectory(\"" << p << "\") -> " << res
+ "[" << cls << "] hasHgDir: PathIsDirectory(\"" << p << "\") -> " << res
);
return res;
}
-int findHgRoot(QueryState& cur, QueryState& last, bool outdated)
+int findHgRoot(char cls, QueryState& cur, QueryState& last, bool outdated)
{
+ std::string dp = "["; dp += cls; dp += "] findHgRoot";
+
if (!PathIsNetworkPath(cur.path.c_str()))
{
cur.isdir = PathIsDirectory(cur.path.c_str());
TDEBUG_TRACE(
- "findHgRoot: PathIsDirectory(\"" << cur.path
- << "\") -> " << cur.isdir
+ dp << ": PathIsDirectory(\"" << cur.path << "\") -> " << cur.isdir
);
if (cur.isdir)
@@ -80,16 +78,15 @@ p.push_back('\\');
if (p.find(".hg\\") != std::string::npos)
{
- //TDEBUG_TRACE("findHgRoot: skipping '" << cur.path << "'");
last = cur;
return 0;
}
}
- if (cur.isdir && hasHgDir(cur.path))
+ if (cur.isdir && hasHgDir(cls, cur.path))
{
cur.hgroot = cur.path;
- TDEBUG_TRACE("findHgRoot(" << cur.path << "): hgroot = cur.path");
+ TDEBUG_TRACE(dp << "(" << cur.path << "): hgroot = cur.path");
return 1;
}
}
@@ -99,17 +96,17 @@ if (!outdated && !last.basedir.empty() && cur.basedir == last.basedir)
{
cur.hgroot = last.hgroot;
- // TDEBUG_TRACE("findHgRoot(" << cur.path << "): hgroot = '" << cur.hgroot
- // << "' (same as last.basedir)");
return 1;
}
for (std::string p = cur.basedir;;)
{
- if (hasHgDir(p)) {
+ if (hasHgDir(cls, p)) {
cur.hgroot = p;
- TDEBUG_TRACE("findHgRoot(" << cur.path << "): hgroot = '" << cur.hgroot
- << "' (found repo)");
+ TDEBUG_TRACE(
+ dp << "(" << cur.path << "): hgroot = '" << cur.hgroot
+ << "' (found repo)"
+ );
return 1;
}
std::string p2 = DirName(p);
@@ -118,7 +115,7 @@ p.swap(p2);
}
- TDEBUG_TRACE("findHgRoot(" << cur.path << "): NO repo found");
+ TDEBUG_TRACE(dp << "(" << cur.path << "): NO repo found");
last = cur;
return 0;
}
@@ -148,8 +145,14 @@
int HgQueryDirstate(
- const std::string& path, const char& filterStatus, char& outStatus)
+ const char cls,
+ const std::string& path,
+ const char& filterStatus,
+ char& outStatus
+)
{
+ std::string dp = "["; dp += cls; dp += "] HgQueryDirstate: ";
+
static QueryState last;
if (path.empty())
@@ -158,7 +161,7 @@ QueryState cur;
cur.path = path;
- cur.tickcount = GetTickCount();
+ cur.tickcount = ::GetTickCount();
const bool outdated = cur.tickcount - last.tickcount > 2000;
@@ -168,13 +171,13 @@ return 1;
}
- if (PathIsRoot(path.c_str()))
+ if (::PathIsRoot(path.c_str()))
{
last = cur;
return 0;
}
- if (findHgRoot(cur, last, outdated) == 0)
+ if (findHgRoot(cls, cur, last, outdated) == 0)
return 0;
size_t offset = cur.hgroot.length();
@@ -209,8 +212,10 @@ Dirstate* pds = Dirstatecache::get(cur.hgroot, cur.basedir, unset);
if (!pds)
{
- TDEBUG_TRACE("HgQueryDirstate: Dirstatecache::get("
- << cur.hgroot << ") returns no Dirstate");
+ TDEBUG_TRACE(
+ dp << "Dirstatecache::get(" << cur.hgroot
+ << ") returns no Dirstate"
+ );
last = cur;
return 0;
}
@@ -218,14 +223,14 @@ Winstat stat;
if (0 != stat.lstat(path.c_str()))
{
- TDEBUG_TRACE("HgQueryDirstate: lstat(" << path << ") failed");
+ TDEBUG_TRACE(dp << "lstat(" << path << ") failed");
last = cur;
return 0;
}
cur.isdir = stat.isdir;
TDEBUG_TRACE(
- "HgQueryDirstate: stat.lstat(\"" << cur.path
- << "\") -> stat.isdir is " << stat.isdir
+ dp << "stat.lstat(\"" << cur.path << "\") "
+ << "-> stat.isdir is " << stat.isdir
);
if (cur.isdir)
@@ -238,7 +243,7 @@
outStatus = (pdirsta ? pdirsta->status(relpath) : '?');
cur.status = outStatus;
- cur.tickcount = GetTickCount();
+ cur.tickcount = ::GetTickCount();
last = cur;
return 1;
}
@@ -257,24 +262,20 @@ std::string relbase;
if (get_relpath(cur.hgroot, cur.basedir, relbase))
{
- TDEBUG_TRACE("HgQueryDirstate: relbase = '"
- << relbase << "'");
+ TDEBUG_TRACE(dp << "relbase = '" << relbase << "'");
char basedir_status = pdirsta->status(relbase);
- TDEBUG_TRACE("HgQueryDirstate: basedir_status = "
- << basedir_status);
+ TDEBUG_TRACE(dp << "basedir_status = " << basedir_status);
if (basedir_status != 'M')
{
if (unset)
{
- TDEBUG_TRACE(
- "HgQueryDirstate: omitting Thgstatus::update");
+ TDEBUG_TRACE(dp << "omitting Thgstatus::update");
}
else
{
- TDEBUG_TRACE(
- "HgQueryDirstate: calling Thgstatus::update");
+ TDEBUG_TRACE(dp << "calling Thgstatus::update");
Thgstatus::update(cur.hgroot);
}
}
@@ -282,7 +283,7 @@ }
cur.status = outStatus;
- cur.tickcount = GetTickCount();
+ cur.tickcount = ::GetTickCount();
last = cur;
return 1;
}
|
@@ -4,6 +4,10 @@ #include <string>
int HgQueryDirstate(
- const std::string& path, const char& filterStatus, char& outStatus);
+ const char myClass,
+ const std::string& path,
+ const char& filterStatus,
+ char& outStatus
+);
#endif
|
@@ -78,7 +78,7 @@ if (IsEqualIID(rclsid, CLSID_TortoiseHg0))
{
CDllRegSxClassFactory *pcf =
- new CDllRegSxClassFactory(TORTOISE_OLE_UNCHANGED);
+ new CDllRegSxClassFactory('C'); // clean
TDEBUG_TRACE("DllGetClassObject clsname = " << "CLSID_TortoiseHg0");
++InitStatus::inst().unchanged_;
return pcf->QueryInterface(riid, ppvOut);
@@ -86,7 +86,7 @@ else if (IsEqualIID(rclsid, CLSID_TortoiseHg1))
{
CDllRegSxClassFactory *pcf =
- new CDllRegSxClassFactory(TORTOISE_OLE_ADDED);
+ new CDllRegSxClassFactory('A'); // added
TDEBUG_TRACE("DllGetClassObject clsname = " << "CLSID_TortoiseHg1");
++InitStatus::inst().added_;
return pcf->QueryInterface(riid, ppvOut);
@@ -94,7 +94,7 @@ else if (IsEqualIID(rclsid, CLSID_TortoiseHg2))
{
CDllRegSxClassFactory *pcf =
- new CDllRegSxClassFactory(TORTOISE_OLE_MODIFIED);
+ new CDllRegSxClassFactory('M'); // modified
TDEBUG_TRACE("DllGetClassObject clsname = " << "CLSID_TortoiseHg2");
++InitStatus::inst().modified_;
return pcf->QueryInterface(riid, ppvOut);
@@ -102,7 +102,7 @@ else if (IsEqualIID(rclsid, CLSID_TortoiseHg6))
{
CDllRegSxClassFactory *pcf =
- new CDllRegSxClassFactory(TORTOISE_OLE_NOTINREPO);
+ new CDllRegSxClassFactory('?'); // not in repo
TDEBUG_TRACE("DllGetClassObject clsname = " << "CLSID_TortoiseHg6");
++InitStatus::inst().notinrepo_;
return pcf->QueryInterface(riid, ppvOut);
@@ -130,12 +130,12 @@}
-CDllRegSxClassFactory::CDllRegSxClassFactory(TortoiseOLEClass classToMake)
+CDllRegSxClassFactory::CDllRegSxClassFactory(char classToMake) :
+ myclassToMake(classToMake)
{
ThgCriticalSection cs(GetCriticalSection());
m_cRef = 0L;
g_cRefThisDll++;
- myclassToMake = classToMake;
}
@@ -202,12 +202,12 @@}
-CShellExt::CShellExt(TortoiseOLEClass tortoiseClass)
- : m_ppszFileUserClickedOn(0)
+CShellExt::CShellExt(char tortoiseClass) :
+ myTortoiseClass(tortoiseClass),
+ m_ppszFileUserClickedOn(0)
{
ThgCriticalSection cs(GetCriticalSection());
- myTortoiseClass = tortoiseClass;
m_cRef = 0L;
m_pDataObj = NULL;
|
@@ -5,25 +5,14 @@ #include <string>
-enum TortoiseOLEClass
-{
- TORTOISE_OLE_INVALID,
- TORTOISE_OLE_ADDED,
- TORTOISE_OLE_MODIFIED,
- TORTOISE_OLE_UNCHANGED,
- TORTOISE_OLE_IGNORED,
- TORTOISE_OLE_NOTINREPO,
-};
-
-
class CDllRegSxClassFactory: public IClassFactory
{
protected:
ULONG m_cRef;
- TortoiseOLEClass myclassToMake;
+ const char myclassToMake;
public:
- CDllRegSxClassFactory(TortoiseOLEClass);
+ explicit CDllRegSxClassFactory(char classToMake);
~CDllRegSxClassFactory();
static LPCRITICAL_SECTION GetCriticalSection();
@@ -42,7 +31,7 @@class CShellExt:
public IContextMenu3, IShellIconOverlayIdentifier, IShellExtInit
{
- TortoiseOLEClass myTortoiseClass;
+ const char myTortoiseClass;
protected:
ULONG m_cRef;
@@ -57,7 +46,7 @@ public:
static LPCRITICAL_SECTION GetCriticalSection();
- CShellExt(TortoiseOLEClass);
+ explicit CShellExt(char Class);
~CShellExt();
// IUnknown
|
Loading...