[GME-commit] GMESRC/GME/MgaUtil MetaDlg.cpp,1.13,1.14
MetaPurgeDialog.cpp,1.2,1.3 MgaRegistrar.cpp,1.35,1.36
MgaRegistrar.h,1.15,1.16 MgaUtil.rc,1.38,1.39
gme-commit at list.isis.vanderbilt.edu
gme-commit at list.isis.vanderbilt.edu
Tue Jul 20 09:55:49 CDT 2004
Update of /var/lib/gme/GMESRC/GME/MgaUtil
In directory braindrain:/tmp/cvs-serv8866/GME/MgaUtil
Modified Files:
MetaDlg.cpp MetaPurgeDialog.cpp MgaRegistrar.cpp
MgaRegistrar.h MgaUtil.rc
Log Message:
Version string was introduced in the Registration process
CVS User: volgy
Index: MetaDlg.cpp
===================================================================
RCS file: /var/lib/gme/GMESRC/GME/MgaUtil/MetaDlg.cpp,v
retrieving revision 1.13
retrieving revision 1.14
diff -C2 -d -r1.13 -r1.14
*** MetaDlg.cpp 25 Sep 2003 08:40:38 -0000 1.13
--- MetaDlg.cpp 20 Jul 2004 13:55:47 -0000 1.14
***************
*** 55,58 ****
--- 55,65 ----
CDialog::OnInitDialog();
+ CListCtrl* listctrl = (CListCtrl*)GetDlgItem(IDC_LIST);
+ DWORD dwStyle = listctrl->SendMessage(LVM_GETEXTENDEDLISTVIEWSTYLE,0,0);
+ dwStyle |= LVS_EX_FULLROWSELECT;
+ listctrl->SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE, 0, dwStyle);
+
+
+
MSGTRY
{
***************
*** 69,73 ****
CComVariant dummy2;
CopyTo(dummy, &dummy2);
! if(registrar->RegisterParadigm(CComBSTR("AAA"), CComBSTR("AAA.MTA"), dummy2, REGACCESS_TEST) != S_OK) {
GetDlgItem(IDC_RADIOSYS)->EnableWindow(false);
GetDlgItem(IDC_RADIOUSER)->EnableWindow(false);
--- 76,80 ----
CComVariant dummy2;
CopyTo(dummy, &dummy2);
! if(registrar->RegisterParadigm(CComBSTR("AAA"), CComBSTR("AAA.MTA"), CComBSTR("1.0"), dummy2, REGACCESS_TEST) != S_OK) {
GetDlgItem(IDC_RADIOSYS)->EnableWindow(false);
GetDlgItem(IDC_RADIOUSER)->EnableWindow(false);
***************
*** 83,97 ****
VERIFYTHROW( m_list.InsertColumn(0, &lvc) != -1 );
! lvc.pszText = "";
! lvc.cx = 15;
VERIFYTHROW( m_list.InsertColumn(1, &lvc) != -1 );
lvc.pszText = "Connection string";
lvc.cx = 500;
! VERIFYTHROW( m_list.InsertColumn(2, &lvc) != -1 );
lvc.pszText = "GUID";
lvc.cx = 300;
! VERIFYTHROW( m_list.InsertColumn(3, &lvc) != -1 );
ResetItems();
--- 90,108 ----
VERIFYTHROW( m_list.InsertColumn(0, &lvc) != -1 );
! lvc.pszText = "S";
! lvc.cx = 20;
VERIFYTHROW( m_list.InsertColumn(1, &lvc) != -1 );
+ lvc.pszText = "Version";
+ lvc.cx = 50;
+ VERIFYTHROW( m_list.InsertColumn(2, &lvc) != -1 );
+
lvc.pszText = "Connection string";
lvc.cx = 500;
! VERIFYTHROW( m_list.InsertColumn(3, &lvc) != -1 );
lvc.pszText = "GUID";
lvc.cx = 300;
! VERIFYTHROW( m_list.InsertColumn(4, &lvc) != -1 );
ResetItems();
***************
*** 123,126 ****
--- 134,138 ----
CString name;
CString cstr;
+ CString version;
CComBstrObj guid2;
***************
*** 143,146 ****
--- 155,163 ----
CopyTo(guid, guid2);
}
+
+ HRESULT hr = registrar->VersionFromGUID(paradigms[i], v, PutOut(version), mode == 'u' ? REGACCESS_USER : REGACCESS_SYSTEM);
+ if (FAILED(hr)) {
+ version = "N/A";
+ }
int j = m_list.InsertItem(i, name);
***************
*** 148,155 ****
VERIFYTHROW( m_list.SetItemText(j, 1, mode) != 0 );
! VERIFYTHROW( m_list.SetItemText(j, 2, cstr) != 0 );
! VERIFYTHROW( m_list.SetItemText(j, 3, PutInCString(guid2)) != 0 );
if(name == to_select) m_list.SetItemState(i, LVIS_SELECTED, LVIS_SELECTED);
}
--- 165,174 ----
VERIFYTHROW( m_list.SetItemText(j, 1, mode) != 0 );
! VERIFYTHROW( m_list.SetItemText(j, 2, version) != 0 );
!
! VERIFYTHROW( m_list.SetItemText(j, 3, cstr) != 0 );
! VERIFYTHROW( m_list.SetItemText(j, 4, PutInCString(guid2)) != 0 );
if(name == to_select) m_list.SetItemState(i, LVIS_SELECTED, LVIS_SELECTED);
}
***************
*** 292,295 ****
--- 311,317 ----
COMTHROW( paradigm->get_Name(PutOut(name)) );
+ CComBstrObj version;
+ COMTHROW( paradigm->get_Version(PutOut(version)) );
+
CComVariant guid;
COMTHROW( paradigm->get_GUID(PutOut(guid)) );
***************
*** 298,302 ****
ASSERT( registrar != NULL );
! COMTHROW( registrar->RegisterParadigm(name, PutInBstr(conn), guid, regacc_translate(m_accessmode)) );
to_select = PutInBstr(name);
--- 320,324 ----
ASSERT( registrar != NULL );
! COMTHROW( registrar->RegisterParadigm(name, PutInBstr(conn), PutInBstr(version), guid, regacc_translate(m_accessmode)) );
to_select = PutInBstr(name);
***************
*** 340,344 ****
{
int i = m_list.GetNextSelectedItem(pos);
! connstr = m_list.GetItemText(i, 2);
if(connstr[0] == '?') {
AfxMessageBox("Error with selected paradigm");
--- 362,366 ----
{
int i = m_list.GetNextSelectedItem(pos);
! connstr = m_list.GetItemText(i, 3);
if(connstr[0] == '?') {
AfxMessageBox("Error with selected paradigm");
Index: MetaPurgeDialog.cpp
===================================================================
RCS file: /var/lib/gme/GMESRC/GME/MgaUtil/MetaPurgeDialog.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** MetaPurgeDialog.cpp 28 Mar 2001 18:56:00 -0000 1.2
--- MetaPurgeDialog.cpp 20 Jul 2004 13:55:47 -0000 1.3
***************
*** 53,56 ****
--- 53,62 ----
CDialog::OnInitDialog();
+ CListCtrl* listctrl = (CListCtrl*)GetDlgItem(IDC_PURGELIST);
+ DWORD dwStyle = listctrl->SendMessage(LVM_GETEXTENDEDLISTVIEWSTYLE,0,0);
+ dwStyle |= LVS_EX_FULLROWSELECT;
+ listctrl->SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE, 0, dwStyle);
+
+
MSGTRY
{
***************
*** 60,75 ****
lvc.mask = LVCF_WIDTH | LVCF_TEXT;
! lvc.pszText = "Version ID";
! lvc.cx = 100;
VERIFYTHROW( m_list.InsertColumn(0, &lvc) != -1 );
! lvc.pszText = "C";
! lvc.cx = 20;
VERIFYTHROW( m_list.InsertColumn(1, &lvc) != -1 );
lvc.pszText = "Connection String";
lvc.cx = 300;
! VERIFYTHROW( m_list.InsertColumn(2, &lvc) != -1 );
ResetItems();
--- 66,85 ----
lvc.mask = LVCF_WIDTH | LVCF_TEXT;
! lvc.pszText = "S";
! lvc.cx = 20;
VERIFYTHROW( m_list.InsertColumn(0, &lvc) != -1 );
! lvc.pszText = "Version";
! lvc.cx = 50;
VERIFYTHROW( m_list.InsertColumn(1, &lvc) != -1 );
+ lvc.pszText = "GUID";
+ lvc.cx = 250;
+ VERIFYTHROW( m_list.InsertColumn(2, &lvc) != -1 );
+
lvc.pszText = "Connection String";
lvc.cx = 300;
! VERIFYTHROW( m_list.InsertColumn(3, &lvc) != -1 );
ResetItems();
***************
*** 120,123 ****
--- 130,134 ----
CString connstr;
+ CString version;
char statc = 'u';
HRESULT hr = registrar->QueryParadigm(CComBSTR(paradigm), PutOut(connstr), &vv, REGACCESS_USER);
***************
*** 125,129 ****
statc = 's';
hr = registrar->QueryParadigm(CComBSTR(paradigm), PutOut(connstr), &vv, REGACCESS_SYSTEM);
! }
if(hr != S_OK) {
statc = ' ';
--- 136,140 ----
statc = 's';
hr = registrar->QueryParadigm(CComBSTR(paradigm), PutOut(connstr), &vv, REGACCESS_SYSTEM);
! }
if(hr != S_OK) {
statc = ' ';
***************
*** 131,139 ****
}
int j;
! VERIFYTHROW( (j = m_list.InsertItem(i, PutInCString(guidnames[i]))) != -1 );
!
! VERIFYTHROW( m_list.SetItemText(j, 1, CString(currentguid == guidnames[i] ? "*" : " ") + statc) != 0 );
! VERIFYTHROW( m_list.SetItemText(j, 2, connstr) != 0 );
}
--- 142,155 ----
}
+ hr = registrar->VersionFromGUID(CComBSTR(paradigm), vv, PutOut(version), statc == 'u' ? REGACCESS_USER : REGACCESS_SYSTEM);
+ if (FAILED(hr)) {
+ version = "N/A";
+ }
+
int j;
! VERIFYTHROW( (j = m_list.InsertItem(i, CString(currentguid == guidnames[i] ? "*" : " ") + statc)) != -1 );
! VERIFYTHROW( m_list.SetItemText(j, 1, version) != 0 );
! VERIFYTHROW( m_list.SetItemText(j, 2, PutInCString(guidnames[i])) != 0 );
! VERIFYTHROW( m_list.SetItemText(j, 3, connstr) != 0 );
}
***************
*** 150,156 ****
while(pos) {
int i = m_list.GetNextSelectedItem(pos);
! CString cur = m_list.GetItemText(i,1);
if(cur[0] == '*') continue;
! CString delguid = m_list.GetItemText(i,0);
GUID gg;
CopyTo(CComBSTR(delguid),gg);
--- 166,172 ----
while(pos) {
int i = m_list.GetNextSelectedItem(pos);
! CString cur = m_list.GetItemText(i,0);
if(cur[0] == '*') continue;
! CString delguid = m_list.GetItemText(i,2);
GUID gg;
CopyTo(CComBSTR(delguid),gg);
***************
*** 158,162 ****
CopyTo(gg, vv);
COMTHROW( registrar->UnregisterParadigmGUID(CComBSTR(paradigm), vv, cur[1] == 's' ? REGACCESS_SYSTEM : REGACCESS_USER) );
! CString delcstr = m_list.GetItemText(i,2);
if(m_delfiles != 0 || delcstr.Find("MGA=") != 0) continue;
DeleteFile(LPCTSTR(delcstr)+4);
--- 174,178 ----
CopyTo(gg, vv);
COMTHROW( registrar->UnregisterParadigmGUID(CComBSTR(paradigm), vv, cur[1] == 's' ? REGACCESS_SYSTEM : REGACCESS_USER) );
! CString delcstr = m_list.GetItemText(i,3);
if(m_delfiles != 0 || delcstr.Find("MGA=") != 0) continue;
DeleteFile(LPCTSTR(delcstr)+4);
***************
*** 176,188 ****
if(pos) {
int i = m_list.GetNextSelectedItem(pos);
! CString cur = m_list.GetItemText(i,1);
if(cur[0] == '*') return;
! CString setguid = m_list.GetItemText(i,0);
GUID gg;
CopyTo(CComBSTR(setguid),gg);
CComVariant vv;
CopyTo(gg, vv);
! CString setcstr = m_list.GetItemText(i,2);
! COMTHROW( registrar->RegisterParadigm(CComBSTR(paradigm), CComBSTR(setcstr), vv,
cur[1] == 's' ? REGACCESS_SYSTEM : REGACCESS_USER) );
}
--- 192,205 ----
if(pos) {
int i = m_list.GetNextSelectedItem(pos);
! CString cur = m_list.GetItemText(i,0);
if(cur[0] == '*') return;
! CString setver = m_list.GetItemText(i,1);
! CString setguid = m_list.GetItemText(i,2);
GUID gg;
CopyTo(CComBSTR(setguid),gg);
CComVariant vv;
CopyTo(gg, vv);
! CString setcstr = m_list.GetItemText(i,3);
! COMTHROW( registrar->RegisterParadigm(CComBSTR(paradigm), CComBSTR(setcstr), CComBSTR(setver), vv,
cur[1] == 's' ? REGACCESS_SYSTEM : REGACCESS_USER) );
}
Index: MgaRegistrar.cpp
===================================================================
RCS file: /var/lib/gme/GMESRC/GME/MgaUtil/MgaRegistrar.cpp,v
retrieving revision 1.35
retrieving revision 1.36
diff -C2 -d -r1.35 -r1.36
*** MgaRegistrar.cpp 3 Mar 2004 18:37:06 -0000 1.35
--- MgaRegistrar.cpp 20 Jul 2004 13:55:47 -0000 1.36
***************
*** 557,561 ****
! HRESULT GetMtaInfo(BSTR conn, BSTR *parname, VARIANT *guid) {
COMTRY {
CComObjPtr<IMgaMetaProject> paradigm;
--- 557,561 ----
! HRESULT GetMtaInfo(BSTR conn, BSTR *parname, BSTR *version, VARIANT *guid) {
COMTRY {
CComObjPtr<IMgaMetaProject> paradigm;
***************
*** 567,570 ****
--- 567,572 ----
COMTHROW( paradigm->get_Name(parname) );
+ COMTHROW( paradigm->get_Version(version) );
+
COMTHROW( paradigm->get_GUID(guid) );
***************
*** 600,606 ****
if(info & FILE_ATTRIBUTE_DIRECTORY) COMTHROW(E_FILEOPEN);
try {
! CComBstrObj name; // Format: name-<8digitcksum>
CComVariant prevguid;
! COMTHROW(GetMtaInfo(PutInBstr(conn), PutOut(name), PutOut(prevguid)));
CComBstrObj conn1;
if(QueryParadigm(name, PutOut(conn1), &prevguid, REGACCESS_PRIORITY) == S_OK &&
--- 602,609 ----
if(info & FILE_ATTRIBUTE_DIRECTORY) COMTHROW(E_FILEOPEN);
try {
! CComBstrObj name; // Format: name-<GUID>
CComVariant prevguid;
! CComBstrObj prevversion;
! COMTHROW(GetMtaInfo(PutInBstr(conn), PutOut(name), PutOut(prevversion), PutOut(prevguid)));
CComBstrObj conn1;
if(QueryParadigm(name, PutOut(conn1), &prevguid, REGACCESS_PRIORITY) == S_OK &&
***************
*** 610,614 ****
CComBstrObj guidstr;
CopyTo(gg, guidstr);
! connrecent = conn.Left(conn.GetLength()-4)+"-"+CString(PutInCString(guidstr)).Mid(1,8)+".mta";
bool sysmove = false, usermove = false;
--- 613,617 ----
CComBstrObj guidstr;
CopyTo(gg, guidstr);
! connrecent = conn.Left(conn.GetLength()-4)+"-"+CString(PutInCString(guidstr))+".mta";
bool sysmove = false, usermove = false;
***************
*** 616,620 ****
if(QueryParadigm(name, PutOut(conn1), &prevguid, REGACCESS_SYSTEM) == S_OK &&
conn1 == CComBSTR(conn)) { // if it was correctly registered in system
! if(RegisterParadigm(name, PutInBstr(connrecent), prevguid, REGACCESS_TEST) != S_OK) {
AfxMessageBox("Cannot register this paradigm file\n"
"an existing '.mta' file with the same name\n"
--- 619,623 ----
if(QueryParadigm(name, PutOut(conn1), &prevguid, REGACCESS_SYSTEM) == S_OK &&
conn1 == CComBSTR(conn)) { // if it was correctly registered in system
! if(RegisterParadigm(name, PutInBstr(connrecent), prevversion, prevguid, REGACCESS_TEST) != S_OK) {
AfxMessageBox("Cannot register this paradigm file\n"
"an existing '.mta' file with the same name\n"
***************
*** 629,633 ****
conn1.Empty();
if(QueryParadigm(name, PutOut(conn1), &prevguid, REGACCESS_USER) == S_OK &&
! conn1 == CComBSTR(conn)) { // if it was correctly registered in system
usermove = true;;
}
--- 632,636 ----
conn1.Empty();
if(QueryParadigm(name, PutOut(conn1), &prevguid, REGACCESS_USER) == S_OK &&
! conn1 == CComBSTR(conn)) { // if it was correctly registered in user
usermove = true;;
}
***************
*** 638,645 ****
if(sysmove) {
! COMTHROW( RegisterParadigm( name, PutInBstr(connrecent), prevguid, REGACCESS_SYSTEM) );
}
if(usermove) {
! COMTHROW( RegisterParadigm( name, PutInBstr(connrecent), prevguid, REGACCESS_USER) );
}
}
--- 641,648 ----
if(sysmove) {
! COMTHROW( RegisterParadigm( name, PutInBstr(connrecent), prevversion, prevguid, REGACCESS_SYSTEM) );
}
if(usermove) {
! COMTHROW( RegisterParadigm( name, PutInBstr(connrecent), prevversion, prevguid, REGACCESS_USER) );
}
}
***************
*** 660,672 ****
CComBstrObj name;
CComVariant guid;
! COMTHROW(GetMtaInfo(PutInBstr(conn), PutOut(name), PutOut(guid)));
if(!connrecent.IsEmpty()) {
CComBstrObj namer;
CComVariant guidr;
! COMTHROW(GetMtaInfo(PutInBstr(connrecent), PutOut(namer), PutOut(guidr)));
// We should change existing registration only here, if the new GUID != the old
}
! COMTHROW(RegisterParadigm( name, PutInBstr(conn), guid, mode) );
if(newname) MoveTo(name, newname);
} COMCATCH(;)
--- 663,677 ----
CComBstrObj name;
CComVariant guid;
! CComBstrObj version;
! COMTHROW(GetMtaInfo(PutInBstr(conn), PutOut(name), PutOut(version), PutOut(guid)));
if(!connrecent.IsEmpty()) {
CComBstrObj namer;
CComVariant guidr;
! CComBstrObj versionr;
! COMTHROW(GetMtaInfo(PutInBstr(connrecent), PutOut(namer), PutOut(versionr), PutOut(guidr)));
// We should change existing registration only here, if the new GUID != the old
}
! COMTHROW(RegisterParadigm( name, PutInBstr(conn), PutInBstr(version), guid, mode) );
if(newname) MoveTo(name, newname);
} COMCATCH(;)
***************
*** 732,737 ****
! STDMETHODIMP CMgaRegistrar::RegisterParadigm(BSTR name, BSTR connstr, VARIANT guid, regaccessmode_enum mode)
{
if( guid.vt != (VT_UI1 | VT_ARRAY) || GetArrayLength(guid) != sizeof(GUID) )
COMRETURN(E_INVALIDARG);
--- 737,745 ----
! STDMETHODIMP CMgaRegistrar::RegisterParadigm(BSTR name, BSTR connstr, BSTR version, VARIANT guid, regaccessmode_enum mode)
{
+ USES_CONVERSION;
+ CString cver(OLE2CT(version));
+
if( guid.vt != (VT_UI1 | VT_ARRAY) || GetArrayLength(guid) != sizeof(GUID) )
COMRETURN(E_INVALIDARG);
***************
*** 757,760 ****
--- 765,771 ----
ERRTHROW( par.SetValue(PutInCString(guid3), "CurrentVersion") );
+ if (!cver.IsEmpty()) {
+ ERRTHROW( par.SetValue(PutInCString(guid3), cver) );
+ }
CRegKey parg;
ERRTHROW( parg.Create(par, PutInCString(guid3)) );
***************
*** 784,787 ****
--- 795,801 ----
ERRTHROW( par.SetValue(PutInCString(guid3), "CurrentVersion") );
+ if (!cver.IsEmpty()) {
+ ERRTHROW( par.SetValue(PutInCString(guid3), cver) );
+ }
CRegKey parg;
ERRTHROW( parg.Create(par, PutInCString(guid3)) );
***************
*** 950,953 ****
--- 964,1065 ----
}
+ STDMETHODIMP CMgaRegistrar::VersionFromGUID(BSTR name, VARIANT guid, BSTR *ver, regaccessmode_enum mode)
+ {
+ CHECK_OUT(ver);
+
+ bool found = false;
+ COMTRY
+ {
+ GUID gg;
+ CopyTo(guid,gg);
+ CComBstrObj guidbstr;
+ CopyTo(gg, guidbstr);
+
+ if(mode & RM_USER) {
+ CRegKey par;
+ ERRTHROW( par.Open(HKEY_CURRENT_USER, rootreg + "\\Paradigms\\"+name) );
+
+ for(int index = 0;; ++index) {
+ TCHAR name[512];
+ DWORD namesize = sizeof(name);
+ BYTE value[512];
+ DWORD valuesize = sizeof(value);
+ DWORD valtype;
+
+ LONG err = RegEnumValue(par, index, name, &namesize, NULL, &valtype, value, &valuesize);
+ if( err == ERROR_NO_MORE_ITEMS )
+ break;
+ ERRTHROW( err );
+ if (valtype == REG_SZ) {
+ CString cver(value);
+ if (cver.Compare(PutInCString(guidbstr)) == 0) {
+ CString namestr(name);
+ if (namestr.CompareNoCase("CurrentVersion") != 0) {
+ found = true;
+ CopyTo(namestr, ver);
+ }
+ }
+ }
+ }
+ }
+ if(mode & (RM_SYSDOREAD)) {
+ CRegKey par;
+ ERRTHROW( par.Open(HKEY_LOCAL_MACHINE, rootreg + "\\Paradigms\\"+name) );
+ for(int index = 0;; ++index) {
+ TCHAR name[512];
+ DWORD namesize = sizeof(name);
+ BYTE value[512];
+ DWORD valuesize = sizeof(value);
+ DWORD valtype;
+
+ LONG err = RegEnumValue(par, index, name, &namesize, NULL, &valtype, value, &valuesize);
+ if( err == ERROR_NO_MORE_ITEMS )
+ break;
+ ERRTHROW( err );
+ if (valtype == REG_SZ) {
+ CString cver(value);
+ if (cver.Compare(PutInCString(guidbstr)) == 0) {
+ CString namestr(name);
+ if (namestr.CompareNoCase("CurrentVersion") != 0) {
+ found = true;
+ CopyTo(namestr, ver);
+ }
+ }
+ }
+ }
+ }
+ if(!found) return(E_NOTFOUND);
+ }
+ COMCATCH(;)
+ }
+
+ STDMETHODIMP CMgaRegistrar::GUIDFromVersion(BSTR name, BSTR ver, VARIANT* guid, regaccessmode_enum mode)
+ {
+ CHECK_OUT(guid);
+
+ CString verstr = PutInCString(ver);
+ CString gstr;
+
+ COMTRY
+ {
+ if(mode & RM_USER) {
+ CRegKey par;
+ ERRTHROW( par.Open(HKEY_CURRENT_USER, rootreg + "\\Paradigms\\"+name) );
+
+ gstr = QueryValue(par, verstr);
+ }
+ if(mode & (RM_SYSDOREAD)) {
+ CRegKey par;
+ ERRTHROW( par.Open(HKEY_LOCAL_MACHINE, rootreg + "\\Paradigms\\"+name) );
+ gstr = QueryValue(par, verstr);
+ }
+ GUID g;
+ CopyTo(CComBSTR(gstr),g);
+ CopyTo(g, guid);
+ }
+ COMCATCH(;)
+ }
+
+
STDMETHODIMP CMgaRegistrar::UnregisterParadigmGUID(BSTR name, VARIANT v, regaccessmode_enum mode)
{ // it cannot be unregistered if it is the current version
***************
*** 966,969 ****
--- 1078,1101 ----
COMTHROW(E_INVALID_USAGE);
}
+
+ for(int index = 0;; ++index) {
+ TCHAR name[512];
+ DWORD namesize = sizeof(name);
+ BYTE value[512];
+ DWORD valuesize = sizeof(value);
+ DWORD valtype;
+
+ LONG err = RegEnumValue(par, index, name, &namesize, NULL, &valtype, value, &valuesize);
+ if( err == ERROR_NO_MORE_ITEMS )
+ break;
+ ERRTHROW( err );
+ if (valtype == REG_SZ) {
+ CString cver(value);
+ if (cver.Compare(PutInCString(guidbstr)) == 0) {
+ RegDeleteValue(par, name);
+ }
+ }
+ }
+
ERRTHROW( par.RecurseDeleteKey(PutInCString(guidbstr)) );
}
***************
*** 975,979 ****
COMTHROW(E_INVALID_USAGE);
}
! if(mode & RM_SYS) ERRTHROW( par.RecurseDeleteKey(PutInCString(guidbstr)) );
if(mode & RM_TEST) ERRTHROW( par.Open(par, PutInCString(guidbstr)) );
}
--- 1107,1131 ----
COMTHROW(E_INVALID_USAGE);
}
! if(mode & RM_SYS) {
! ERRTHROW( par.RecurseDeleteKey(PutInCString(guidbstr)) );
! for(int index = 0;; ++index) {
! TCHAR name[512];
! DWORD namesize = sizeof(name);
! BYTE value[512];
! DWORD valuesize = sizeof(value);
! DWORD valtype;
!
! LONG err = RegEnumValue(par, index, name, &namesize, NULL, &valtype, value, &valuesize);
! if( err == ERROR_NO_MORE_ITEMS )
! break;
! ERRTHROW( err );
! if (valtype == REG_SZ) {
! CString cver(value);
! if (cver.Compare(PutInCString(guidbstr)) == 0) {
! RegDeleteValue(par, name);
! }
! }
! }
! }
if(mode & RM_TEST) ERRTHROW( par.Open(par, PutInCString(guidbstr)) );
}
Index: MgaRegistrar.h
===================================================================
RCS file: /var/lib/gme/GMESRC/GME/MgaUtil/MgaRegistrar.h,v
retrieving revision 1.15
retrieving revision 1.16
diff -C2 -d -r1.15 -r1.16
*** MgaRegistrar.h 2 Mar 2004 21:51:28 -0000 1.15
--- MgaRegistrar.h 20 Jul 2004 13:55:47 -0000 1.16
***************
*** 48,52 ****
STDMETHOD(get_Paradigms)(regaccessmode_enum mode, VARIANT *names);
STDMETHOD(RegisterParadigmFromData)(BSTR connstr, BSTR *newname, regaccessmode_enum mode);
! STDMETHOD(RegisterParadigm)(BSTR name, BSTR connstr, VARIANT guid, regaccessmode_enum mode);
STDMETHOD(QueryParadigmAllGUIDs)(BSTR name, VARIANT *names, regaccessmode_enum mode);
STDMETHOD(QueryParadigm)(BSTR name, BSTR *connstr, VARIANT *quid, regaccessmode_enum mode);
--- 48,52 ----
STDMETHOD(get_Paradigms)(regaccessmode_enum mode, VARIANT *names);
STDMETHOD(RegisterParadigmFromData)(BSTR connstr, BSTR *newname, regaccessmode_enum mode);
! STDMETHOD(RegisterParadigm)(BSTR name, BSTR connstr, BSTR version, VARIANT guid, regaccessmode_enum mode);
STDMETHOD(QueryParadigmAllGUIDs)(BSTR name, VARIANT *names, regaccessmode_enum mode);
STDMETHOD(QueryParadigm)(BSTR name, BSTR *connstr, VARIANT *quid, regaccessmode_enum mode);
***************
*** 54,57 ****
--- 54,59 ----
STDMETHOD(UnregisterParadigmGUID)(BSTR name, VARIANT v, regaccessmode_enum mode);
STDMETHOD(UnregisterParadigm)(BSTR name, regaccessmode_enum mode);
+ STDMETHOD(VersionFromGUID)(BSTR name, VARIANT guid, BSTR *ver, regaccessmode_enum mode);
+ STDMETHOD(GUIDFromVersion)(BSTR name, BSTR ver, VARIANT* guid, regaccessmode_enum mode);
STDMETHOD(get_Components)(regaccessmode_enum mode, VARIANT *progids);
Index: MgaUtil.rc
===================================================================
RCS file: /var/lib/gme/GMESRC/GME/MgaUtil/MgaUtil.rc,v
retrieving revision 1.38
retrieving revision 1.39
diff -C2 -d -r1.38 -r1.39
*** MgaUtil.rc 14 Jul 2004 19:30:15 -0000 1.38
--- MgaUtil.rc 20 Jul 2004 13:55:47 -0000 1.39
***************
*** 269,288 ****
END
! IDD_METAPURGEDIALOG DIALOG DISCARDABLE 0, 0, 220, 181
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Dialog"
FONT 8, "MS Sans Serif"
BEGIN
! DEFPUSHBUTTON "Close",IDCLOSE,157,7,56,14
! PUSHBUTTON "Purge selected",IDC_PURGE2,157,24,56,14
CONTROL "List2",IDC_PURGELIST,"SysListView32",LVS_REPORT |
! LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,7,7,146,167
LTEXT "Select versions no more needed. \nThe current version (*) cannot be purged.",
! IDC_STATIC,159,67,54,61
CONTROL "Delete files",IDC_DELFILES,"Button",BS_AUTORADIOBUTTON |
! WS_GROUP,156,134,51,10
CONTROL "Unregister\nonly",IDC_NODELFILES,"Button",
! BS_AUTORADIOBUTTON | BS_MULTILINE,156,143,50,21
! PUSHBUTTON "Set Current",IDC_SETCURRENT,157,41,56,14
END
--- 269,288 ----
END
! IDD_METAPURGEDIALOG DIALOG DISCARDABLE 0, 0, 371, 182
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Dialog"
FONT 8, "MS Sans Serif"
BEGIN
! DEFPUSHBUTTON "Close",IDCLOSE,308,7,56,14
! PUSHBUTTON "Purge selected",IDC_PURGE2,308,24,56,14
CONTROL "List2",IDC_PURGELIST,"SysListView32",LVS_REPORT |
! LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,7,7,292,168
LTEXT "Select versions no more needed. \nThe current version (*) cannot be purged.",
! IDC_STATIC,310,67,54,61
CONTROL "Delete files",IDC_DELFILES,"Button",BS_AUTORADIOBUTTON |
! WS_GROUP,307,132,51,10
CONTROL "Unregister\nonly",IDC_NODELFILES,"Button",
! BS_AUTORADIOBUTTON | BS_MULTILINE,307,141,50,21
! PUSHBUTTON "Set Current",IDC_SETCURRENT,308,41,56,14
END
***************
*** 669,675 ****
BEGIN
LEFTMARGIN, 7
! RIGHTMARGIN, 213
TOPMARGIN, 7
! BOTTOMMARGIN, 174
END
--- 669,675 ----
BEGIN
LEFTMARGIN, 7
! RIGHTMARGIN, 364
TOPMARGIN, 7
! BOTTOMMARGIN, 175
END
More information about the GME-commit
mailing list