Log Message:
-----------
restore checking file signature
Modified Files:
--------------
pgadmin3/src/include:
frmRestore.h (r1.2 -> r1.3)
pgadmin3/src/ui:
frmRestore.cpp (r1.2 -> r1.3)
Index: frmRestore.h
===================================================================
RCS file: /projects/pgadmin3/src/include/frmRestore.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -Lsrc/include/frmRestore.h -Lsrc/include/frmRestore.h -u -w -r1.2 -r1.3
--- src/include/frmRestore.h
+++ src/include/frmRestore.h
@@ -35,6 +35,7 @@
private:
wxString GetHelpPage() const;
+ void OnChangeName(wxCommandEvent &ev);
void OnChange(wxCommandEvent &ev);
void OnSelectFilename(wxCommandEvent &ev);
void OnView(wxCommandEvent &ev);
@@ -46,7 +47,7 @@
frmMain *form;
pgObject *object;
- bool viewRunning;
+ bool viewRunning, filenameValid;
DECLARE_EVENT_TABLE()
};
Index: frmRestore.cpp
===================================================================
RCS file: /projects/pgadmin3/src/ui/frmRestore.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -Lsrc/ui/frmRestore.cpp -Lsrc/ui/frmRestore.cpp -u -w -r1.2 -r1.3
--- src/ui/frmRestore.cpp
+++ src/ui/frmRestore.cpp
@@ -22,6 +22,7 @@
#include "pgTable.h"
#include <wx/process.h>
#include <wx/textbuf.h>
+#include <wx/file.h>
// Icons
#include "images/restore.xpm"
@@ -43,7 +44,7 @@
BEGIN_EVENT_TABLE(frmRestore, ExternProcessDialog)
- EVT_TEXT(XRCID("txtFilename"), frmRestore::OnChange)
+ EVT_TEXT(XRCID("txtFilename"), frmRestore::OnChangeName)
EVT_BUTTON(XRCID("btnFilename"), frmRestore::OnSelectFilename)
EVT_BUTTON(XRCID("btnOK"), frmRestore::OnOK)
EVT_BUTTON(XRCID("btnView"), frmRestore::OnView)
@@ -72,6 +73,7 @@
txtMessages = CTRL_TEXT("txtMessages");
txtMessages->SetMaxLength(0L);
btnOK->Disable();
+ filenameValid=false;
wxCommandEvent ev;
OnChange(ev);
@@ -107,9 +109,40 @@
}
+void frmRestore::OnChangeName(wxCommandEvent &ev)
+{
+ wxString name=txtFilename->GetValue();
+ if (name.IsEmpty() || !wxFile::Exists(name))
+ filenameValid=false;
+ else
+ {
+ wxFile file(name, wxFile::read);
+ if (file.IsOpened())
+ {
+ char buffer[8];
+ off_t size=file.Read(buffer, 8);
+ if (size == 8)
+ {
+ if (memcmp(buffer, "PGDMP", 5) && !memcmp(buffer, "toc.dat", 8))
+ {
+ // tar format?
+ file.Seek(512);
+ size=file.Read(buffer, 8);
+ }
+ if (size == 8 && !memcmp(buffer, "PGDMP", 5))
+ {
+ // check version here?
+ filenameValid=true;
+ }
+ }
+ }
+ }
+ OnChange(ev);
+}
+
+
void frmRestore::OnChange(wxCommandEvent &ev)
{
- bool filenameValid=!txtFilename->GetValue().IsEmpty();
btnOK->Enable(filenameValid);
btnView->Enable(filenameValid);
}
---------------------------(end of broadcast)---------------------------
TIP 4: Don't 'kill -9' the postmaster