1
0
mirror of https://github.com/MariaDB/server.git synced 2025-09-02 09:41:40 +03:00

Fix for BUG#4375: Windows specific directories are copied

during replication.
 Modified my_dir(). Now this function skips hidden and system
 files which sometimes are created by Windows.
 NOTE. The fix is similar to the previuos one (05 July 2004)
 except for correct setting of the 'attrib' variable value
 (within the previous fix this variable was left uninitialized
 when my_dir() was called with My_flags & MY_WANT_STAT == 0).
This commit is contained in:
aivanov@mysql.com
2005-10-19 18:01:23 +04:00
parent 5e204d46f1
commit e203a42dfc

View File

@@ -426,6 +426,18 @@ MY_DIR *my_dir(const char *path, myf MyFlags)
do do
{ {
#ifdef __BORLANDC__
attrib= find.ff_attrib;
#else
attrib= find.attrib;
/*
Do not show hidden and system files which Windows sometimes create.
Note. Because Borland's findfirst() is called with the third
argument = 0 hidden/system files are excluded from the search.
*/
if (attrib & (_A_HIDDEN | _A_SYSTEM))
continue;
#endif
#ifdef __BORLANDC__ #ifdef __BORLANDC__
if (!(finfo.name= strdup_root(names_storage, find.ff_name))) if (!(finfo.name= strdup_root(names_storage, find.ff_name)))
goto error; goto error;
@@ -442,11 +454,10 @@ MY_DIR *my_dir(const char *path, myf MyFlags)
bzero(finfo.mystat, sizeof(MY_STAT)); bzero(finfo.mystat, sizeof(MY_STAT));
#ifdef __BORLANDC__ #ifdef __BORLANDC__
finfo.mystat->st_size=find.ff_fsize; finfo.mystat->st_size=find.ff_fsize;
mode=MY_S_IREAD; attrib=find.ff_attrib;
#else #else
finfo.mystat->st_size=find.size; finfo.mystat->st_size=find.size;
mode=MY_S_IREAD; attrib=find.attrib;
#endif #endif
mode=MY_S_IREAD;
if (!(attrib & _A_RDONLY)) if (!(attrib & _A_RDONLY))
mode|=MY_S_IWRITE; mode|=MY_S_IWRITE;
if (attrib & _A_SUBDIR) if (attrib & _A_SUBDIR)