mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-11-23 01:31:27 +01:00
Get rid of some "ignoring return value" compiler warnings
and provide read_loop() and write_loop() functions.
This commit is contained in:
parent
3b289b32a7
commit
74d17bc282
1 changed files with 62 additions and 9 deletions
71
Src/utils.c
71
Src/utils.c
|
|
@ -2136,6 +2136,56 @@ checkrmall(char *s)
|
|||
return (getquery("ny", 1) == 'y');
|
||||
}
|
||||
|
||||
/**/
|
||||
mod_export ssize_t
|
||||
read_loop(int fd, void *buf, size_t len)
|
||||
{
|
||||
ssize_t got = len;
|
||||
|
||||
while (1) {
|
||||
ssize_t ret = read(fd, buf, len);
|
||||
if (ret == len)
|
||||
break;
|
||||
if (ret <= 0) {
|
||||
if (ret < 0) {
|
||||
if (errno == EINTR)
|
||||
continue;
|
||||
if (fd != SHTTY)
|
||||
zwarn("read failed: %e", errno);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
buf += ret;
|
||||
len -= ret;
|
||||
}
|
||||
|
||||
return got;
|
||||
}
|
||||
|
||||
/**/
|
||||
mod_export ssize_t
|
||||
write_loop(int fd, const void *buf, size_t len)
|
||||
{
|
||||
ssize_t wrote = len;
|
||||
|
||||
while (1) {
|
||||
ssize_t ret = write(fd, buf, len);
|
||||
if (ret == len)
|
||||
break;
|
||||
if (ret < 0) {
|
||||
if (errno == EINTR)
|
||||
continue;
|
||||
if (fd != SHTTY)
|
||||
zwarn("write failed: %e", errno);
|
||||
return -1;
|
||||
}
|
||||
buf += ret;
|
||||
len -= ret;
|
||||
}
|
||||
|
||||
return wrote;
|
||||
}
|
||||
|
||||
static int
|
||||
read1char(int echo)
|
||||
{
|
||||
|
|
@ -2146,7 +2196,7 @@ read1char(int echo)
|
|||
return -1;
|
||||
}
|
||||
if (echo)
|
||||
write(SHTTY, &c, 1);
|
||||
write_loop(SHTTY, &c, 1);
|
||||
return STOUC(c);
|
||||
}
|
||||
|
||||
|
|
@ -2161,8 +2211,11 @@ noquery(int purge)
|
|||
|
||||
ioctl(SHTTY, FIONREAD, (char *)&val);
|
||||
if (purge) {
|
||||
for (; val; val--)
|
||||
read(SHTTY, &c, 1);
|
||||
for (; val; val--) {
|
||||
if (read(SHTTY, &c, 1) != 1) {
|
||||
/* Do nothing... */
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
@ -2197,7 +2250,7 @@ getquery(char *valid_chars, int purge)
|
|||
if (noquery(purge)) {
|
||||
if (!isem)
|
||||
settyinfo(&shttyinfo);
|
||||
write(SHTTY, "n\n", 2);
|
||||
write_loop(SHTTY, "n\n", 2);
|
||||
return 'n';
|
||||
}
|
||||
|
||||
|
|
@ -2220,9 +2273,9 @@ getquery(char *valid_chars, int purge)
|
|||
zbeep();
|
||||
}
|
||||
if (c >= 0)
|
||||
write(SHTTY, &c, 1);
|
||||
write_loop(SHTTY, &c, 1);
|
||||
if (nl)
|
||||
write(SHTTY, "\n", 1);
|
||||
write_loop(SHTTY, "\n", 1);
|
||||
|
||||
if (isem) {
|
||||
if (c != '\n')
|
||||
|
|
@ -2251,7 +2304,7 @@ getquery(char *valid_chars, int purge)
|
|||
}
|
||||
}
|
||||
#endif
|
||||
write(SHTTY, "\n", 1);
|
||||
write_loop(SHTTY, "\n", 1);
|
||||
}
|
||||
}
|
||||
settyinfo(&shttyinfo);
|
||||
|
|
@ -3063,9 +3116,9 @@ zbeep(void)
|
|||
if ((vb = getsparam("ZBEEP"))) {
|
||||
int len;
|
||||
vb = getkeystring(vb, &len, GETKEYS_BINDKEY, NULL);
|
||||
write(SHTTY, vb, len);
|
||||
write_loop(SHTTY, vb, len);
|
||||
} else if (isset(BEEP))
|
||||
write(SHTTY, "\07", 1);
|
||||
write_loop(SHTTY, "\07", 1);
|
||||
unqueue_signals();
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue