X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=bertos%2Fio%2Fkfile.c;h=52762bd7dfd59ea8e82ba08162b88e93c392b56f;hb=15810459b8f5fb09b12cef6f8e4d4e64d167087b;hp=f4df850b1133390743187daeb1d44b771e7121b8;hpb=9361e96cadbf1ee8345957c88764097a0c9ec2d3;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;