summaryrefslogtreecommitdiffstats
path: root/mbbsd/kaede.c
diff options
context:
space:
mode:
Diffstat (limited to 'mbbsd/kaede.c')
-rw-r--r--mbbsd/kaede.c21
1 files changed, 10 insertions, 11 deletions
diff --git a/mbbsd/kaede.c b/mbbsd/kaede.c
index e52bb6fc..326bc427 100644
--- a/mbbsd/kaede.c
+++ b/mbbsd/kaede.c
@@ -76,17 +76,16 @@ Rename(char *src, char *dst)
int
Copy(char *src, char *dst)
{
- FILE *fi, *fo;
- char buf[513];
- fi=fopen(src, "r");
- if(!fi) return -1;
- fo=fopen(dst, "w");
- if(!fo) {fclose(fi); return -1;}
- buf[512]=0;
- while(fgets(buf,512,fi))
- fputs(buf,fo);
- fclose(fo);
- fclose(fi);
+ int fi, fo, bytes;
+ char buf[8192];
+ fi=open(src, O_RDONLY);
+ if(fi<0) return -1;
+ fo=open(dst, O_WRONLY);
+ if(fo<0) {close(fi); return -1;}
+ while((bytes=read(fi, buf, 8192))>0)
+ write(fo, buf, bytes);
+ close(fo);
+ close(fi);
return 0;
}
int