SYNOPSIS
        bytes read_bytes(string file, int start, int number)

DESCRIPTION
        Reads a given amount of bytes from file.
        If <start> is not given or 0, the file is read from the
        beginning, else from the <start>th byte on. If <start> is
        negative, it is counted from the end of the file. If this
        would extend beyond the beginning of the file, it is read
        from the beginning.
        <number> is the number of bytes to read. 0 or negative values
        are possible, but not useful.
        If <start> would be beyond the end of the file, 0 is returned
        instead of a string.

        The maximum bytes being read per call is LIMIT_BYTE (see
        query_limits()).

HISTORY
        LDMud 3.6.5 accepts start offsets before the beginning of the file.

SEE ALSO
        read_file(E), write_bytes(E), write_file(E)
