X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=bertos%2Fio%2Fkfile.c;h=52762bd7dfd59ea8e82ba08162b88e93c392b56f;hb=6fffd0614f75137e8fed424c87835d4e7d478ef7;hp=f4df850b1133390743187daeb1d44b771e7121b8;hpb=0d4c0c64f736f37dba565aa9e113d3920ef905f9;p=bertos.git diff --git a/bertos/io/kfile.c b/bertos/io/kfile.c index f4df850b..52762bd7 100644 --- a/bertos/io/kfile.c +++ b/bertos/io/kfile.c @@ -167,6 +167,29 @@ int kfile_gets_echo(struct KFile *fd, char *buf, int size, bool echo) #endif /* !CONFIG_KFILE_GETS */ +kfile_off_t kfile_copy(KFile *src, KFile *dst, kfile_off_t size) +{ + char buf[32]; + kfile_off_t cp_len = 0; + + while (size) + { + size_t len = MIN(sizeof(buf), (size_t)size); + if (kfile_read(src, buf, len) != len) + break; + + size_t wr_len = kfile_write(dst, buf, len); + cp_len += wr_len; + size -= len; + + if (wr_len != len) + break; + } + + return cp_len; +} + + /** * Move \a fd file seek position of \a offset bytes from \a whence. * @@ -195,11 +218,9 @@ kfile_off_t kfile_genericSeek(struct KFile *fd, kfile_off_t offset, KSeekMode wh break; } - #if LOG_LEVEL >= LOG_LVL_INFO /* Bound check */ if (seek_pos + offset > fd->size) LOG_INFO("seek outside EOF\n"); - #endif fd->seek_pos = seek_pos + offset;