* fhandler.h (fhandler_base::set_name): Make virtual.

(class fhandler_registry): Add wow64 and prefix_len members.
	Declare set_name method.
	* fhandler_proc.cc (PROC_REGISTRY32): Define.
	(PROC_REGISTRY64): Define.
	(proc_listing): Add "registry32" and "registry64" elements.
	(proc_fhandlers): Add corresponding FH_REGISTRY values.
	* fhandler_registry.cc (registry_len): Drop static value in favor of
	class member prefix_len.  Use preifx_len instead of registry_len
	throughout.
	(fhandler_registry::set_name): Define.  Set wow64 and prefix_len
	according to directory prefix.
	(fhandler_registry::fhandler_registry): Set wow64 and prefix_len to
	default values.
	(open_key): Add wow64 argument.  Handle wow64 in call to RegOpenKeyEx.
	Use fhandler_registry member wow64 in this place throughout.
This commit is contained in:
Corinna Vinschen
2006-10-19 10:01:03 +00:00
parent d145878a07
commit 20f9af5348
4 changed files with 70 additions and 24 deletions

View File

@@ -139,7 +139,7 @@ class fhandler_base
class fhandler_base *archetype;
int usecount;
void set_name (path_conv &pc);
virtual void set_name (path_conv &pc);
int error () const {return pc.error;}
void set_error (int error) {pc.error = error;}
bool exists () const {return pc.exists ();}
@@ -1266,8 +1266,11 @@ class fhandler_registry: public fhandler_proc
{
private:
char *value_name;
DWORD wow64;
int prefix_len;
public:
fhandler_registry ();
void set_name (path_conv &pc);
int exists();
int readdir (DIR *, dirent *) __attribute__ ((regparm (3)));
_off64_t telldir (DIR *);