aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard M. Stallman <[email protected]>1998-07-05 20:31:12 +0000
committerRichard M. Stallman <[email protected]>1998-07-05 20:31:12 +0000
commit32caae30ca89794705c9c109772403bb494fd9d7 (patch)
tree9b2358ea050690d1f1ae3e1e8646543974b3b7a3
parentdc14ae363e8f131b7849eb7780a49199123d808a (diff)
(get_doc_string): Take both UNIBYTE and DEFINITION as args.
All callers changed.
-rw-r--r--src/doc.c47
1 files changed, 20 insertions, 27 deletions
diff --git a/src/doc.c b/src/doc.c
index b34776ac0f..bca93b60ea 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)