I suggest adding another formal argument that will hold the returned
seek value. The function return code can then always return 0 for SUCCESS
or 1 for FAILURE (with the possible exception of IS_SEEKABLE).
Cheers,
Mario DeFazio
Korn Shell user since 1983
Roland Mainz 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
>