Commit 57f91328 authored by Kevin Wolf's avatar Kevin Wolf

kernel2: lio_seek()-Restriktionen für Pipes lockern

* kernel2: lio_seek() geht jetzt eingeschränkt auch für Pipes, es
  betrifft dann immer die Position im Lesestream. Erlaubt ist es, die
  aktuelle Position zu ermitteln und (relativ) vorwärts zu springen.
Signed-off-by: Kevin Wolf's avatarKevin Wolf <kevin@tyndur.org>
parent a35acbe8
...@@ -612,13 +612,12 @@ out: ...@@ -612,13 +612,12 @@ out:
*/ */
int64_t lio_seek(struct lio_stream* s, int64_t offset, int whence) int64_t lio_seek(struct lio_stream* s, int64_t offset, int whence)
{ {
if (s->res_read != s->res_write) { bool seekable = s->res_read->seekable && (s->res_read == s->res_write);
return -EINVAL;
}
/* LIO_SEEK_CUR zum Herausfinden der aktuellen Position geht auch auf /* LIO_SEEK_CUR zum Herausfinden der aktuellen Position oder zum
* Ressourcen, die eigentlich kein seek unterstützen. */ * Überspringen von Daten geht auch auf Ressourcen, die eigentlich kein
if (!s->res_read->seekable && (whence != LIO_SEEK_CUR || offset)) { * seek unterstützen. */
if (!seekable && (whence != LIO_SEEK_CUR || offset < 0)) {
return -EINVAL; return -EINVAL;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment