fix 'KeepBackups' option deleting original files on DOS 8.3 filesystem
only if the 'KeepBackups' option was disabled
This commit is contained in:
parent
332b1a598d
commit
c1e76aef82
14
s_util.cpp
14
s_util.cpp
|
@ -47,6 +47,15 @@ char *MakeBackup(char *FileName, char *NewName) {
|
||||||
if (l <= 0)
|
if (l <= 0)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
// disabling this! it works great on any filesystem not restricted
|
||||||
|
// to 8.3 filenames, but on DOS, it results in a backup filename being
|
||||||
|
// creating that is not legal if the file extension is already 3 characters
|
||||||
|
// long. this causes the checks here to work incorrectly. the end result of
|
||||||
|
// all of that is that file saving with the 'KeepBackups' option DISABLED
|
||||||
|
// results in your ORIGINAL file being deleted every time you save! ouch!
|
||||||
|
// since i am building this fork specifically for use on DOS, it only makes
|
||||||
|
// sense for me to keep the 8.3 DOS compatibility enabled anyway.
|
||||||
|
#if 0
|
||||||
/* try 1 */
|
/* try 1 */
|
||||||
strcpy(NewName, FileName);
|
strcpy(NewName, FileName);
|
||||||
strcat(NewName, "~");
|
strcat(NewName, "~");
|
||||||
|
@ -57,11 +66,12 @@ char *MakeBackup(char *FileName, char *NewName) {
|
||||||
return NewName;
|
return NewName;
|
||||||
if (copyfile(FileName, NewName) == 0)
|
if (copyfile(FileName, NewName) == 0)
|
||||||
return NewName;
|
return NewName;
|
||||||
#if 0
|
//#if 0
|
||||||
if (errno == 2)
|
if (errno == 2)
|
||||||
return NewName; /* file not found */
|
return NewName; /* file not found */
|
||||||
#endif
|
//#endif
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/* try 2: 8.3 */
|
/* try 2: 8.3 */
|
||||||
strcpy(NewName, FileName);
|
strcpy(NewName, FileName);
|
||||||
|
|
Reference in a new issue