diff options
author | Richard M. Stallman <rms@gnu.org> | 1998-07-05 20:31:12 +0000 |
---|---|---|
committer | Richard M. Stallman <rms@gnu.org> | 1998-07-05 20:31:12 +0000 |
commit | 32caae30ca89794705c9c109772403bb494fd9d7 (patch) | |
tree | 9b2358ea050690d1f1ae3e1e8646543974b3b7a3 /src/doc.c | |
parent | dc14ae363e8f131b7849eb7780a49199123d808a (diff) | |
download | emacs-32caae30ca89794705c9c109772403bb494fd9d7.tar.gz |
(get_doc_string): Take both UNIBYTE and DEFINITION as args.
All callers changed.
Diffstat (limited to 'src/doc.c')
-rw-r--r-- | src/doc.c | 47 |
1 files changed, 20 insertions, 27 deletions
diff --git a/src/doc.c b/src/doc.c index b34776ac0f5..bca93b60eab 100644 --- a/src/doc.c +++ b/src/doc.c @@ -75,6 +75,22 @@ munge_doc_file_name (name) 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 @@ get_doc_string (filepos, unibyte, definition) *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) |