18 #include <drizzled/internal/my_sys.h>
22 #include <drizzled/internal/m_string.h>
23 #if defined(HAVE_UTIME_H)
25 #elif defined(HAVE_SYS_UTIME_H)
26 #include <sys/utime.h>
27 #elif !defined(HPUX10)
35 #ifdef HAVE_SYS_STAT_H
36 # include <sys/stat.h>
39 #include <drizzled/util/test.h>
65 int my_copy(
const char *from,
const char *to, myf MyFlags)
68 bool new_file_stat= 0;
70 int from_file,to_file;
71 unsigned char buff[IO_SIZE];
72 struct stat stat_buff,new_stat_buff;
74 from_file=to_file= -1;
75 assert(!(MyFlags & (MY_FNABP | MY_NABP)));
76 if (MyFlags & MY_HOLD_ORIGINAL_MODES)
77 new_file_stat= test(!stat((
char*) to, &new_stat_buff));
79 if ((from_file=my_open(from,O_RDONLY,MyFlags)) >= 0)
81 if (stat(from, &stat_buff))
86 if (MyFlags & MY_HOLD_ORIGINAL_MODES && new_file_stat)
87 stat_buff=new_stat_buff;
88 create_flag= (MyFlags & MY_DONT_OVERWRITE_FILE) ? O_EXCL : O_TRUNC;
90 if ((to_file= my_create(to,(
int) stat_buff.st_mode,
91 O_WRONLY | create_flag,
95 while ((Count= static_cast<uint32_t>(my_read(from_file, buff,
96 sizeof(buff), MyFlags))) != 0)
98 if (Count == (uint32_t) -1 ||
99 my_write(to_file,buff,Count,MYF(MyFlags | MY_NABP)))
103 if (my_close(from_file,MyFlags) | my_close(to_file,MyFlags))
108 if (MyFlags & MY_HOLD_ORIGINAL_MODES && !new_file_stat)
110 chmod(to, stat_buff.st_mode & 07777);
111 if(chown(to, stat_buff.st_uid,stat_buff.st_gid)!=0)
113 if (MyFlags & MY_COPYTIME)
116 timep.actime = stat_buff.st_atime;
117 timep.modtime = stat_buff.st_mtime;
118 utime((
char*) to, &timep);
124 if (from_file >= 0) my_close(from_file,MyFlags);
127 my_close(to_file, MyFlags);
129 my_delete(to, MyFlags);
TODO: Rename this file - func.h is stupid.