Mercurial > emacs
changeset 22690:31bc848c5f18
(get_doc_string): Take both UNIBYTE and DEFINITION as args.
All callers changed.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Sun, 05 Jul 1998 20:31:12 +0000 |
parents | 2d69ba7d76f4 |
children | ff0ed53342b3 |
files | src/doc.c |
diffstat | 1 files changed, 20 insertions(+), 27 deletions(-) [+] |
line wrap: on
line diff
--- a/src/doc.c Sun Jul 05 20:30:39 1998 +0000 +++ b/src/doc.c Sun Jul 05 20:31:12 1998 +0000 @@ -75,6 +75,22 @@ static char *get_doc_string_buffer; static int get_doc_string_buffer_size; +static unsigned char *read_bytecode_pointer; + +/* readchar in lread.c calls back here to fetch the next byte. + If UNREADFLAG is 1, we unread a byte. */ + +int +read_bytecode_char (unreadflag) +{ + if (unreadflag) + { + read_bytecode_pointer--; + return 0; + } + return *read_bytecode_pointer++; +} + /* Extract a doc string from a file. FILEPOS says where to get it. If it is an integer, use that position in the standard DOC-... file. If it is (FILE . INTEGER), use FILE as the file name @@ -247,35 +263,12 @@ *to++ = *from++; } + /* If DEFINITION, read from this buffer + the same way we would read bytes from a file. */ if (definition) { - char *p = get_doc_string_buffer + offset; - char *start_ptr; - Lisp_Object bytestring, vector; - - if (*p++ != '(') - return Qnil; - start_ptr = p; - if (*p++ != '"') - return Qnil; - while (*p != '"') - { - if (*p == '\\') - p++; - p++; - } - p++; - bytestring = Fread (make_unibyte_string (start_ptr, p - start_ptr)); - if (*p++ != ' ') - return Qnil; - if (*p++ != '.') - return Qnil; - if (*p++ != ' ') - return Qnil; - if (to[-1] != ')') - return Qnil; - vector = Fread (make_string (p, to - p - 1)); - return Fcons (bytestring, vector); + read_bytecode_pointer = get_doc_string_buffer + offset; + return Fread (Qlambda); } if (unibyte)