aboutsummaryrefslogtreecommitdiff
path: root/libpipe/seqpack.c
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2012-07-01 02:20:08 +0000
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2012-07-01 02:20:08 +0000
commit953c525d7589178629f3e91e4bf4ea805a92a5b4 (patch)
tree9411cddbd2f213fe4edf2150e2e8b02a9d27b4bf /libpipe/seqpack.c
parent13ea39a34766fcbecd96ab94bcdf798b08e9bb60 (diff)
parent5430151902aa7cb17458c0d71722a05fd379babf (diff)
downloadhurd-953c525d7589178629f3e91e4bf4ea805a92a5b4.tar.gz
hurd-953c525d7589178629f3e91e4bf4ea805a92a5b4.tar.bz2
hurd-953c525d7589178629f3e91e4bf4ea805a92a5b4.zip
Merge branch 'master' into xkb
Conflicts: console-client/Makefile
Diffstat (limited to 'libpipe/seqpack.c')
-rw-r--r--libpipe/seqpack.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/libpipe/seqpack.c b/libpipe/seqpack.c
index 44a15a03..041abb74 100644
--- a/libpipe/seqpack.c
+++ b/libpipe/seqpack.c
@@ -43,8 +43,17 @@ static error_t
seqpack_read (struct packet *packet, int *dequeue, unsigned *flags,
char **data, size_t *data_len, size_t amount)
{
- error_t err = packet_read (packet, data, data_len, amount);
- *dequeue = (packet_readable (packet) == 0);
+ error_t err;
+ if (flags && *flags & MSG_PEEK)
+ {
+ err = packet_peek (packet, data, data_len, amount);
+ *dequeue = 0;
+ }
+ else
+ {
+ err = packet_read (packet, data, data_len, amount);
+ *dequeue = (packet_readable (packet) == 0);
+ }
return err;
}