On 4/20/06, David Korn <dgk at research.att.com> wrote: > > > Roland Mainz wrote: > > > Casper.Dik at Sun.COM wrote: > > > > >I would propose something like a new builtin command called "streamctl" > > > > >(stream control) which has sub-commands for testing whether a stream is > > > > >seekable, do various seeking operations (seek_to_position, seek_hole, > > > > >seek_data), list_substreams and split_substreams (the last two things > > > > >are for SCTP&co.). > > > > >Comments/suggestions/ideas welcome... > > > > > > > > Why not just an "lseek" command? > > > > > > Sounds good (except that it lacks the SCTP stuff, but I guess it should > > > better be offloaded to something like "sctpstreamctl"...) ... I'll write > > > a proposal... > > > > -- snip -- > > NAME > > lseek(1) - move file pointer in a shell stream > > > > SYNOPSIS > > lseek fildes command [offset] > > > > DESCRIPTION > > The lseek shell builtin function sets the file pointer > > associated with the open file descriptor specified by fildes > > as follows: > > > > o If command is SEEK_SET, the pointer is set to offset > > bytes. > > > > o If command is SEEK_CUR, the pointer is set to its > > current location plus offset. > > > > o If command is SEEK_END, the pointer is set to the size > > of the file plus offset. > > > > o If command is SEEK_HOLE, the pointer is set to the > > next hole (in a sparse file) past "offset". > > > > o If command is SEEK_DATA, the pointer is set to the > > next data (in a sparse file) past "offset". > > > > o If command is IS_SEEKABLE lseek returns 0 as exit result > > if the stream is seekable, 1 otherwise. > > > > o If command is TELL lseek returns the current file position > > to stdout > > ... > > -- snip -- > > At this point I hit a couple of problems: > > - How should we handle the return value ? lseek(2) returns the current > > file position - should lseek(1) simply return the current file position > > to stdout (and add a -q option to make lseek(1) "quiet") ? > > - Currently there is only support for seeking n-bytes. But what about > > characters in multibyte locales (CC:'ing Ienup Sung <Ienup.Sung at Sun.COM> > > and i18n-discuss at opensolaris.org for that issue) ? > > - Are there other seek-like operations which should be added here ? > > - What about syntax - should "command" come before "offset" or should > > the traditional lseek(2) syntax ordering used here (e.g. "lseek fildes > > offset command" (that's a question for David/Glenn/Casper)) ? > > > > Finally the compatibility question: Is there *ANY* operating system > > which provides a "lseek" command ? > > > > ---- > > > > Bye, > > Roland > > > > I see no advantage for adding a built-in for this.
Maybe an external program for this may make the way into the POSIX standard soon - I have forwarded Roland's proposal to some external people and they seem to be interested. A built in may then the logical follow up. The built in can also deal with the support for seeking for holes and data in a file earlier than syntax extensions to the shell itself. Irek