@@ -298,6 +298,8 @@ class NBackup
298
298
pr_error (status, " nbackup needs local access to database file" );
299
299
}
300
300
301
+ toSystem (decompress);
302
+ toSystem (db);
301
303
expandDatabaseName (db, dbname, NULL );
302
304
303
305
if (!uSvc->isService ())
@@ -368,7 +370,7 @@ class NBackup
368
370
void internal_unlock_database ();
369
371
void attach_database ();
370
372
void detach_database ();
371
- string to_system ( const PathName & from);
373
+ void toSystem (AbstractString & from);
372
374
void cleanHistory ();
373
375
374
376
// Create/open database and backup
@@ -597,12 +599,10 @@ void NBackup::close_database()
597
599
dbase = INVALID_HANDLE_VALUE;
598
600
}
599
601
600
- string NBackup::to_system ( const PathName & from)
602
+ void NBackup::toSystem (AbstractString & from)
601
603
{
602
- string to = from.ToString ();
603
604
if (uSvc->utf8FileNames ())
604
- ISC_utf8ToSystem (to);
605
- return to;
605
+ ISC_utf8ToSystem (from);
606
606
}
607
607
608
608
@@ -614,14 +614,13 @@ void NBackup::open_backup_scan()
614
614
return ;
615
615
}
616
616
617
- string nm = to_system (bakname);
618
617
#ifdef WIN_NT
619
- backup = CreateFile (nm .c_str (), GENERIC_READ, 0 ,
618
+ backup = CreateFile (bakname .c_str (), GENERIC_READ, 0 ,
620
619
NULL , OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, NULL );
621
620
if (backup != INVALID_HANDLE_VALUE)
622
621
return ;
623
622
#else
624
- backup = os_utils::open (nm .c_str (), O_RDONLY | O_LARGEFILE);
623
+ backup = os_utils::open (bakname .c_str (), O_RDONLY | O_LARGEFILE);
625
624
if (backup >= 0 )
626
625
return ;
627
626
#endif
@@ -769,7 +768,6 @@ void NBackup::open_backup_decompress()
769
768
770
769
void NBackup::create_backup ()
771
770
{
772
- string nm = to_system (bakname);
773
771
#ifdef WIN_NT
774
772
if (bakname == " stdout" ) {
775
773
backup = GetStdHandle (STD_OUTPUT_HANDLE);
@@ -784,7 +782,7 @@ void NBackup::create_backup()
784
782
// avoids an issue where writing to a file across a network can occasionally
785
783
// return ERROR_ACCESS_DENIED.
786
784
787
- backup = CreateFile (nm .c_str (), GENERIC_READ | GENERIC_WRITE, FILE_SHARE_DELETE,
785
+ backup = CreateFile (bakname .c_str (), GENERIC_READ | GENERIC_WRITE, FILE_SHARE_DELETE,
788
786
NULL , CREATE_NEW, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, NULL );
789
787
}
790
788
if (backup != INVALID_HANDLE_VALUE)
@@ -795,7 +793,7 @@ void NBackup::create_backup()
795
793
backup = 1 ; // Posix file handle for stdout
796
794
return ;
797
795
}
798
- backup = os_utils::open (nm .c_str (), O_WRONLY | O_CREAT | O_EXCL | O_LARGEFILE, 0660 );
796
+ backup = os_utils::open (bakname .c_str (), O_WRONLY | O_CREAT | O_EXCL | O_LARGEFILE, 0660 );
799
797
if (backup >= 0 )
800
798
return ;
801
799
#endif
@@ -1006,6 +1004,7 @@ void NBackup::attach_database()
1006
1004
}
1007
1005
1008
1006
ClumpletWriter dpb (ClumpletReader::dpbList, MAX_DPB_SIZE);
1007
+ uSvc->fillDpb (dpb);
1009
1008
1010
1009
const unsigned char * authBlock;
1011
1010
unsigned int authBlockSize = uSvc->getAuthBlock (&authBlock);
@@ -1299,7 +1298,10 @@ void NBackup::backup_database(int level, Guid& guid, const PathName& fname)
1299
1298
detach_database ();
1300
1299
1301
1300
if (fname.hasData ())
1301
+ {
1302
1302
bakname = fname;
1303
+ toSystem (bakname);
1304
+ }
1303
1305
else
1304
1306
{
1305
1307
// Let's generate nice new filename
@@ -1697,6 +1699,8 @@ void NBackup::restore_database(const BackupFiles& files, bool repl_seq, bool inc
1697
1699
fixup_database (repl_seq);
1698
1700
return ;
1699
1701
}
1702
+ toSystem (bakname);
1703
+
1700
1704
// Never reaches this point when run as service
1701
1705
try {
1702
1706
fb_assert (!uSvc->isService ());
@@ -1730,7 +1734,10 @@ void NBackup::restore_database(const BackupFiles& files, bool repl_seq, bool inc
1730
1734
return ;
1731
1735
}
1732
1736
if (!inc_rest || curLevel)
1737
+ {
1733
1738
bakname = files[curLevel - (inc_rest ? 1 : 0 )];
1739
+ toSystem (bakname);
1740
+ }
1734
1741
if (!inc_rest || curLevel)
1735
1742
open_backup_scan ();
1736
1743
}
0 commit comments