stock fcopy(const source[], const dest[], bool:overwrite=true) { if (fexist(dest) && !overwrite) return -1; new File:ihandle = fopen(source, io_read); if (!ihandle) return 0; new File:ohandle = fopen(dest, io_write); if (!ohandle) { fclose(ihandle); return 0; } new buf[512]; while (fblockread(ihandle, buf)) { fblockwrite(ohandle, buf); } fclose(ihandle); fclose(ohandle); return 1; } stock frename(const source[], const dest[], bool:overwrite=true) { return ((fcopy(source, dest, overwrite) > 0) && fremove(source)); } stock fmove(const source[], const dest[]) { return frename(source, dest, true); }