未验证 提交 82e427c0 编写于 作者: O openharmony_ci 提交者: Gitee

!927 fix no output from pipeline when run hdc shell bm get -t

Merge pull request !927 from Wang Yaofeng/write
......@@ -2167,7 +2167,6 @@ musl_src_porting_file = [
"src/stdio/__fdopen.c",
"src/stdio/vfprintf.c",
"src/stdio/__stdio_read.c",
"src/stdio/__stdio_write.c",
"src/stdio/fread.c",
"src/stdio/fmemopen.c",
"src/stdio/freopen.c",
......
......@@ -63,7 +63,6 @@ hidden off_t __stdio_seek(FILE *, off_t, int);
hidden int __stdio_close(FILE *);
hidden int __fill_buffer(FILE *f);
hidden ssize_t __flush_buffer(FILE *f);
hidden int __toread(FILE *);
hidden int __towrite(FILE *);
......
#include "stdio_impl.h"
#include <sys/uio.h>
#include <string.h>
ssize_t __flush_buffer(FILE *f)
{
ssize_t cnt = 0;
char *wbase = (char *)f->wbase;
size_t rem = f->wpos - f->wbase;
while (rem > 0) {
cnt = syscall(SYS_write, f->fd, wbase, rem);
if (cnt < 0) {
f->wpos = f->wbase = f->wend = 0;
f->flags |= F_ERR;
return cnt;
}
wbase += cnt;
rem -= cnt;
}
/* reset file buffer */
f->wend = f->buf + f->buf_size;
f->wpos = f->wbase = f->buf;
return cnt;
}
size_t __stdio_write(FILE *f, const unsigned char *buf, size_t len)
{
size_t rem = len;
unsigned char *wbuf = (unsigned char *)buf;
/* flush buffer first */
ssize_t cnt = __flush_buffer(f);
if (cnt < 0) {
return 0;
}
for (;;) {
if (f->lbf < 0 && rem <= f->wend - f->wpos) {
memcpy(f->wpos, wbuf, rem);
f->wpos += rem;
return len;
}
/* write directly if
* 1. file buffer < rem
* 2. line buffer mode
*/
cnt = syscall(SYS_write, f->fd, wbuf, rem);
if (cnt < 0) {
f->wpos = f->wbase = f->wend = 0;
f->flags |= F_ERR;
return len - rem;
}
rem -= cnt;
wbuf += cnt;
if (rem == 0) {
break;
}
}
return len;
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册