HCoop
/
bpt
/
emacs.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Auto-commit of loaddefs files.
[bpt/emacs.git]
/
src
/
fns.c
diff --git
a/src/fns.c
b/src/fns.c
index
e59bf21
..
a128b92
100644
(file)
--- a/
src/fns.c
+++ b/
src/fns.c
@@
-1,7
+1,5
@@
/* Random utility Lisp functions.
/* Random utility Lisp functions.
- Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997,
- 1998, 1999, 2000, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010, 2011
+ Copyright (C) 1985-1987, 1993-1995, 1997-2011
Free Software Foundation, Inc.
This file is part of GNU Emacs.
Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@
-21,17
+19,10
@@
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <config.h>
#include <config.h>
-#ifdef HAVE_UNISTD_H
#include <unistd.h>
#include <unistd.h>
-#endif
#include <time.h>
#include <setjmp.h>
#include <time.h>
#include <setjmp.h>
-/* Note on some machines this defines `vector' as a typedef,
- so make sure we don't use that name in this file. */
-#undef vector
-#define vector *****
-
#include "lisp.h"
#include "commands.h"
#include "character.h"
#include "lisp.h"
#include "commands.h"
#include "character.h"
@@
-53,25
+44,15
@@
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#define NULL ((POINTER_TYPE *)0)
#endif
#define NULL ((POINTER_TYPE *)0)
#endif
-/* Nonzero enables use of dialog boxes for questions
- asked by mouse commands. */
-int use_dialog_box;
-
-/* Nonzero enables use of a file dialog for file name
- questions asked by mouse commands. */
-int use_file_dialog;
-
-Lisp_Object Qstring_lessp, Qprovide, Qrequire;
-Lisp_Object Qyes_or_no_p_history;
+Lisp_Object Qstring_lessp;
+static Lisp_Object Qprovide, Qrequire;
+static Lisp_Object Qyes_or_no_p_history;
Lisp_Object Qcursor_in_echo_area;
Lisp_Object Qcursor_in_echo_area;
-Lisp_Object Qwidget_type;
-Lisp_Object Qcodeset, Qdays, Qmonths, Qpaper;
+
static
Lisp_Object Qwidget_type;
+
static
Lisp_Object Qcodeset, Qdays, Qmonths, Qpaper;
static int internal_equal (Lisp_Object , Lisp_Object, int, int);
static int internal_equal (Lisp_Object , Lisp_Object, int, int);
-extern long get_random (void);
-extern void seed_random (long);
-
#ifndef HAVE_UNISTD_H
extern long time ();
#endif
#ifndef HAVE_UNISTD_H
extern long time ();
#endif
@@
-363,7
+344,7
@@
Symbols are also allowed; their print names are used instead. */)
return i1 < SCHARS (s2) ? Qt : Qnil;
}
\f
return i1 < SCHARS (s2) ? Qt : Qnil;
}
\f
-static Lisp_Object concat (
in
t nargs, Lisp_Object *args,
+static Lisp_Object concat (
size_
t nargs, Lisp_Object *args,
enum Lisp_Type target_type, int last_special);
/* ARGSUSED */
enum Lisp_Type target_type, int last_special);
/* ARGSUSED */
@@
-393,7
+374,7
@@
The result is a list whose elements are the elements of all the arguments.
Each argument may be a list, vector or string.
The last argument is not copied, just used as the tail of the new list.
usage: (append &rest SEQUENCES) */)
Each argument may be a list, vector or string.
The last argument is not copied, just used as the tail of the new list.
usage: (append &rest SEQUENCES) */)
- (
in
t nargs, Lisp_Object *args)
+ (
size_
t nargs, Lisp_Object *args)
{
return concat (nargs, args, Lisp_Cons, 1);
}
{
return concat (nargs, args, Lisp_Cons, 1);
}
@@
-403,7
+384,7
@@
DEFUN ("concat", Fconcat, Sconcat, 0, MANY, 0,
The result is a string whose elements are the elements of all the arguments.
Each argument may be a string or a list or vector of characters (integers).
usage: (concat &rest SEQUENCES) */)
The result is a string whose elements are the elements of all the arguments.
Each argument may be a string or a list or vector of characters (integers).
usage: (concat &rest SEQUENCES) */)
- (
in
t nargs, Lisp_Object *args)
+ (
size_
t nargs, Lisp_Object *args)
{
return concat (nargs, args, Lisp_String, 0);
}
{
return concat (nargs, args, Lisp_String, 0);
}
@@
-413,7
+394,7
@@
DEFUN ("vconcat", Fvconcat, Svconcat, 0, MANY, 0,
The result is a vector whose elements are the elements of all the arguments.
Each argument may be a list, vector or string.
usage: (vconcat &rest SEQUENCES) */)
The result is a vector whose elements are the elements of all the arguments.
Each argument may be a list, vector or string.
usage: (vconcat &rest SEQUENCES) */)
- (
in
t nargs, Lisp_Object *args)
+ (
size_
t nargs, Lisp_Object *args)
{
return concat (nargs, args, Lisp_Vectorlike, 0);
}
{
return concat (nargs, args, Lisp_Vectorlike, 0);
}
@@
-461,7
+442,8
@@
struct textprop_rec
};
static Lisp_Object
};
static Lisp_Object
-concat (int nargs, Lisp_Object *args, enum Lisp_Type target_type, int last_special)
+concat (size_t nargs, Lisp_Object *args,
+ enum Lisp_Type target_type, int last_special)
{
Lisp_Object val;
register Lisp_Object tail;
{
Lisp_Object val;
register Lisp_Object tail;
@@
-470,7
+452,7
@@
concat (int nargs, Lisp_Object *args, enum Lisp_Type target_type, int last_speci
EMACS_INT toindex_byte = 0;
register EMACS_INT result_len;
register EMACS_INT result_len_byte;
EMACS_INT toindex_byte = 0;
register EMACS_INT result_len;
register EMACS_INT result_len_byte;
- register
in
t argnum;
+ register
size_
t argnum;
Lisp_Object last_tail;
Lisp_Object prev;
int some_multibyte;
Lisp_Object last_tail;
Lisp_Object prev;
int some_multibyte;
@@
-524,7
+506,7
@@
concat (int nargs, Lisp_Object *args, enum Lisp_Type target_type, int last_speci
Lisp_Object ch;
EMACS_INT this_len_byte;
Lisp_Object ch;
EMACS_INT this_len_byte;
- if (VECTORP (this))
+ if (VECTORP (this)
|| COMPILEDP (this)
)
for (i = 0; i < len; i++)
{
ch = AREF (this, i);
for (i = 0; i < len; i++)
{
ch = AREF (this, i);
@@
-894,7
+876,7
@@
string_make_multibyte (Lisp_Object string)
copy_text (SDATA (string), buf, SBYTES (string),
0, 1);
copy_text (SDATA (string), buf, SBYTES (string),
0, 1);
- ret = make_multibyte_string (buf, SCHARS (string), nbytes);
+ ret = make_multibyte_string (
(char *)
buf, SCHARS (string), nbytes);
SAFE_FREE ();
return ret;
SAFE_FREE ();
return ret;
@@
-920,13
+902,13
@@
string_to_multibyte (Lisp_Object string)
/* If all the chars are ASCII, they won't need any more bytes once
converted. */
if (nbytes == SBYTES (string))
/* If all the chars are ASCII, they won't need any more bytes once
converted. */
if (nbytes == SBYTES (string))
- return make_multibyte_string (SDATA (string), nbytes, nbytes);
+ return make_multibyte_string (S
S
DATA (string), nbytes, nbytes);
SAFE_ALLOCA (buf, unsigned char *, nbytes);
memcpy (buf, SDATA (string), SBYTES (string));
str_to_multibyte (buf, nbytes, SBYTES (string));
SAFE_ALLOCA (buf, unsigned char *, nbytes);
memcpy (buf, SDATA (string), SBYTES (string));
str_to_multibyte (buf, nbytes, SBYTES (string));
- ret = make_multibyte_string (buf, SCHARS (string), nbytes);
+ ret = make_multibyte_string (
(char *)
buf, SCHARS (string), nbytes);
SAFE_FREE ();
return ret;
SAFE_FREE ();
return ret;
@@
-952,7
+934,7
@@
string_make_unibyte (Lisp_Object string)
copy_text (SDATA (string), buf, SBYTES (string),
1, 0);
copy_text (SDATA (string), buf, SBYTES (string),
1, 0);
- ret = make_unibyte_string (buf, nchars);
+ ret = make_unibyte_string (
(char *)
buf, nchars);
SAFE_FREE ();
return ret;
SAFE_FREE ();
return ret;
@@
-1008,7
+990,7
@@
If STRING is multibyte and contains a character of charset
memcpy (str, SDATA (string), bytes);
bytes = str_as_unibyte (str, bytes);
memcpy (str, SDATA (string), bytes);
bytes = str_as_unibyte (str, bytes);
- string = make_unibyte_string (str, bytes);
+ string = make_unibyte_string (
(char *)
str, bytes);
xfree (str);
}
return string;
xfree (str);
}
return string;
@@
-1090,8
+1072,8
@@
an error is signaled. */)
EMACS_INT converted = str_to_unibyte (SDATA (string), str, chars, 0);
if (converted < chars)
EMACS_INT converted = str_to_unibyte (SDATA (string), str, chars, 0);
if (converted < chars)
- error ("Can't convert the %dth character to unibyte", converted);
- string = make_unibyte_string (str, chars);
+ error ("Can't convert the %
"pI"
dth character to unibyte", converted);
+ string = make_unibyte_string (
(char *)
str, chars);
xfree (str);
}
return string;
xfree (str);
}
return string;
@@
-1183,7
+1165,7
@@
value is a new vector that contains the elements between index FROM
if (STRINGP (string))
{
if (STRINGP (string))
{
- res = make_specified_string (SDATA (string) + from_byte,
+ res = make_specified_string (S
S
DATA (string) + from_byte,
to_char - from_char, to_byte - from_byte,
STRING_MULTIBYTE (string));
copy_text_properties (make_number (from_char), make_number (to_char),
to_char - from_char, to_byte - from_byte,
STRING_MULTIBYTE (string));
copy_text_properties (make_number (from_char), make_number (to_char),
@@
-1247,7
+1229,7
@@
With one argument, just copy STRING without its properties. */)
args_out_of_range_3 (string, make_number (from_char),
make_number (to_char));
args_out_of_range_3 (string, make_number (from_char),
make_number (to_char));
- return make_specified_string (SDATA (string) + from_byte,
+ return make_specified_string (S
S
DATA (string) + from_byte,
to_char - from_char, to_byte - from_byte,
STRING_MULTIBYTE (string));
}
to_char - from_char, to_byte - from_byte,
STRING_MULTIBYTE (string));
}
@@
-1261,24
+1243,17
@@
substring_both (Lisp_Object string, EMACS_INT from, EMACS_INT from_byte,
{
Lisp_Object res;
EMACS_INT size;
{
Lisp_Object res;
EMACS_INT size;
- EMACS_INT size_byte;
CHECK_VECTOR_OR_STRING (string);
CHECK_VECTOR_OR_STRING (string);
- if (STRINGP (string))
- {
- size = SCHARS (string);
- size_byte = SBYTES (string);
- }
- else
- size = ASIZE (string);
+ size = STRINGP (string) ? SCHARS (string) : ASIZE (string);
if (!(0 <= from && from <= to && to <= size))
args_out_of_range_3 (string, make_number (from), make_number (to));
if (STRINGP (string))
{
if (!(0 <= from && from <= to && to <= size))
args_out_of_range_3 (string, make_number (from), make_number (to));
if (STRINGP (string))
{
- res = make_specified_string (SDATA (string) + from_byte,
+ res = make_specified_string (S
S
DATA (string) + from_byte,
to - from, to_byte - from_byte,
STRING_MULTIBYTE (string));
copy_text_properties (make_number (from), make_number (to),
to - from, to_byte - from_byte,
STRING_MULTIBYTE (string));
copy_text_properties (make_number (from), make_number (to),
@@
-2088,14
+2063,12
@@
internal_equal (register Lisp_Object o1, register Lisp_Object o2, int depth, int
/* Boolvectors are compared much like strings. */
if (BOOL_VECTOR_P (o1))
{
/* Boolvectors are compared much like strings. */
if (BOOL_VECTOR_P (o1))
{
- int size_in_chars
- = ((XBOOL_VECTOR (o1)->size + BOOL_VECTOR_BITS_PER_CHAR - 1)
- / BOOL_VECTOR_BITS_PER_CHAR);
-
if (XBOOL_VECTOR (o1)->size != XBOOL_VECTOR (o2)->size)
return 0;
if (memcmp (XBOOL_VECTOR (o1)->data, XBOOL_VECTOR (o2)->data,
if (XBOOL_VECTOR (o1)->size != XBOOL_VECTOR (o2)->size)
return 0;
if (memcmp (XBOOL_VECTOR (o1)->data, XBOOL_VECTOR (o2)->data,
- size_in_chars))
+ ((XBOOL_VECTOR (o1)->size
+ + BOOL_VECTOR_BITS_PER_CHAR - 1)
+ / BOOL_VECTOR_BITS_PER_CHAR)))
return 0;
return 1;
}
return 0;
return 1;
}
@@
-2148,15
+2121,15
@@
DEFUN ("fillarray", Ffillarray, Sfillarray, 2, 2, 0,
ARRAY is a vector, string, char-table, or bool-vector. */)
(Lisp_Object array, Lisp_Object item)
{
ARRAY is a vector, string, char-table, or bool-vector. */)
(Lisp_Object array, Lisp_Object item)
{
- register EMACS_INT size, i
nde
x;
+ register EMACS_INT size, i
d
x;
int charval;
if (VECTORP (array))
{
register Lisp_Object *p = XVECTOR (array)->contents;
size = ASIZE (array);
int charval;
if (VECTORP (array))
{
register Lisp_Object *p = XVECTOR (array)->contents;
size = ASIZE (array);
- for (i
ndex = 0; index < size; inde
x++)
- p[i
nde
x] = item;
+ for (i
dx = 0; idx < size; id
x++)
+ p[i
d
x] = item;
}
else if (CHAR_TABLE_P (array))
{
}
else if (CHAR_TABLE_P (array))
{
@@
-2192,8
+2165,8
@@
ARRAY is a vector, string, char-table, or bool-vector. */)
*p++ = str[i % len];
}
else
*p++ = str[i % len];
}
else
- for (i
ndex = 0; index < size; inde
x++)
- p[i
nde
x] = charval;
+ for (i
dx = 0; idx < size; id
x++)
+ p[i
d
x] = charval;
}
else if (BOOL_VECTOR_P (array))
{
}
else if (BOOL_VECTOR_P (array))
{
@@
-2203,14
+2176,14
@@
ARRAY is a vector, string, char-table, or bool-vector. */)
/ BOOL_VECTOR_BITS_PER_CHAR);
charval = (! NILP (item) ? -1 : 0);
/ BOOL_VECTOR_BITS_PER_CHAR);
charval = (! NILP (item) ? -1 : 0);
- for (i
ndex = 0; index < size_in_chars - 1; inde
x++)
- p[i
nde
x] = charval;
- if (i
nde
x < size_in_chars)
+ for (i
dx = 0; idx < size_in_chars - 1; id
x++)
+ p[i
d
x] = charval;
+ if (i
d
x < size_in_chars)
{
/* Mask out bits beyond the vector size. */
if (XBOOL_VECTOR (array)->size % BOOL_VECTOR_BITS_PER_CHAR)
charval &= (1 << (XBOOL_VECTOR (array)->size % BOOL_VECTOR_BITS_PER_CHAR)) - 1;
{
/* Mask out bits beyond the vector size. */
if (XBOOL_VECTOR (array)->size % BOOL_VECTOR_BITS_PER_CHAR)
charval &= (1 << (XBOOL_VECTOR (array)->size % BOOL_VECTOR_BITS_PER_CHAR)) - 1;
- p[i
nde
x] = charval;
+ p[i
d
x] = charval;
}
}
else
}
}
else
@@
-2247,9
+2220,9
@@
DEFUN ("nconc", Fnconc, Snconc, 0, MANY, 0,
doc: /* Concatenate any number of lists by altering them.
Only the last argument is not altered, and need not be a list.
usage: (nconc &rest LISTS) */)
doc: /* Concatenate any number of lists by altering them.
Only the last argument is not altered, and need not be a list.
usage: (nconc &rest LISTS) */)
- (
in
t nargs, Lisp_Object *args)
+ (
size_
t nargs, Lisp_Object *args)
{
{
- register
in
t argnum;
+ register
size_
t argnum;
register Lisp_Object tail, tem, val;
val = tail = Qnil;
register Lisp_Object tail, tem, val;
val = tail = Qnil;
@@
-2311,7
+2284,7
@@
mapcar1 (EMACS_INT leni, Lisp_Object *vals, Lisp_Object fn, Lisp_Object seq)
1) lists are not relocated and 2) the list is marked via `seq' so will not
be freed */
1) lists are not relocated and 2) the list is marked via `seq' so will not
be freed */
- if (VECTORP (seq))
+ if (VECTORP (seq)
|| COMPILEDP (seq)
)
{
for (i = 0; i < leni; i++)
{
{
for (i = 0; i < leni; i++)
{
@@
-2460,24
+2433,23
@@
do_yes_or_no_p (Lisp_Object prompt)
/* Anything that calls this function must protect from GC! */
/* Anything that calls this function must protect from GC! */
-DEFUN ("yes-or-no-p", Fyes_or_no_p, Syes_or_no_p, 1,
MANY
, 0,
+DEFUN ("yes-or-no-p", Fyes_or_no_p, Syes_or_no_p, 1,
1
, 0,
doc: /* Ask user a yes-or-no question. Return t if answer is yes.
doc: /* Ask user a yes-or-no question. Return t if answer is yes.
-The string to display to ask the question is obtained by
-formatting the string PROMPT with arguments ARGS (see `format').
-The result should end in a space; `y-or-n-p' adds \"(yes or no) \"
-to it.
+PROMPT is the string to display to ask the question. It should end in
+a space; `yes-or-no-p' adds \"(yes or no) \" to it.
The user must confirm the answer with RET, and can edit it until it
has been confirmed.
Under a windowing system a dialog box will be used if `last-nonmenu-event'
The user must confirm the answer with RET, and can edit it until it
has been confirmed.
Under a windowing system a dialog box will be used if `last-nonmenu-event'
-is nil, and `use-dialog-box' is non-nil.
-usage: (yes-or-no-p PROMPT &rest ARGS) */)
- (int nargs, Lisp_Object *args)
+is nil, and `use-dialog-box' is non-nil. */)
+ (Lisp_Object prompt)
{
register Lisp_Object ans;
{
register Lisp_Object ans;
+ Lisp_Object args[2];
struct gcpro gcpro1;
struct gcpro gcpro1;
- Lisp_Object prompt = Fformat (nargs, args);
+
+ CHECK_STRING (prompt);
#ifdef HAVE_MENUS
if (FRAME_WINDOW_P (SELECTED_FRAME ())
#ifdef HAVE_MENUS
if (FRAME_WINDOW_P (SELECTED_FRAME ())
@@
-2498,7
+2470,10
@@
usage: (yes-or-no-p PROMPT &rest ARGS) */)
}
#endif /* HAVE_MENUS */
}
#endif /* HAVE_MENUS */
- prompt = concat2 (prompt, build_string ("(yes or no) "));
+ args[0] = prompt;
+ args[1] = build_string ("(yes or no) ");
+ prompt = Fconcat (2, args);
+
GCPRO1 (prompt);
while (1)
GCPRO1 (prompt);
while (1)
@@
-2506,12
+2481,12
@@
usage: (yes-or-no-p PROMPT &rest ARGS) */)
ans = Fdowncase (Fread_from_minibuffer (prompt, Qnil, Qnil, Qnil,
Qyes_or_no_p_history, Qnil,
Qnil));
ans = Fdowncase (Fread_from_minibuffer (prompt, Qnil, Qnil, Qnil,
Qyes_or_no_p_history, Qnil,
Qnil));
- if (SCHARS (ans) == 3 && !strcmp (SDATA (ans), "yes"))
+ if (SCHARS (ans) == 3 && !strcmp (S
S
DATA (ans), "yes"))
{
UNGCPRO;
return Qt;
}
{
UNGCPRO;
return Qt;
}
- if (SCHARS (ans) == 2 && !strcmp (SDATA (ans), "no"))
+ if (SCHARS (ans) == 2 && !strcmp (S
S
DATA (ans), "no"))
{
UNGCPRO;
return Qnil;
{
UNGCPRO;
return Qnil;
@@
-2560,7
+2535,7
@@
advisable. */)
return ret;
}
\f
return ret;
}
\f
-
Lisp_Object Vfeatures,
Qsubfeatures;
+
static Lisp_Object
Qsubfeatures;
DEFUN ("featurep", Ffeaturep, Sfeaturep, 1, 2, 0,
doc: /* Return t if FEATURE is present in this Emacs.
DEFUN ("featurep", Ffeaturep, Sfeaturep, 1, 2, 0,
doc: /* Return t if FEATURE is present in this Emacs.
@@
-2611,9
+2586,9
@@
particular subfeatures supported in this version of FEATURE. */)
/* List of features currently being require'd, innermost first. */
/* List of features currently being require'd, innermost first. */
-Lisp_Object require_nesting_list;
+
static
Lisp_Object require_nesting_list;
-Lisp_Object
+
static
Lisp_Object
require_unwind (Lisp_Object old_value)
{
return require_nesting_list = old_value;
require_unwind (Lisp_Object old_value)
{
return require_nesting_list = old_value;
@@
-2776,7
+2751,7
@@
DEFUN ("widget-apply", Fwidget_apply, Swidget_apply, 2, MANY, 0,
doc: /* Apply the value of WIDGET's PROPERTY to the widget itself.
ARGS are passed as extra arguments to the function.
usage: (widget-apply WIDGET PROPERTY &rest ARGS) */)
doc: /* Apply the value of WIDGET's PROPERTY to the widget itself.
ARGS are passed as extra arguments to the function.
usage: (widget-apply WIDGET PROPERTY &rest ARGS) */)
- (
in
t nargs, Lisp_Object *args)
+ (
size_
t nargs, Lisp_Object *args)
{
/* This function can GC. */
Lisp_Object newargs[3];
{
/* This function can GC. */
Lisp_Object newargs[3];
@@
-2992,9
+2967,9
@@
into shorter lines. */)
allength += allength / MIME_LINE_LENGTH + 1 + 6;
SAFE_ALLOCA (encoded, char *, allength);
allength += allength / MIME_LINE_LENGTH + 1 + 6;
SAFE_ALLOCA (encoded, char *, allength);
- encoded_length = base64_encode_1 (
BYTE_POS_ADDR (ibeg), encoded, length
,
- NILP (no_line_break),
- !NILP (
current_buffer->enable_multibyte_characters
));
+ encoded_length = base64_encode_1 (
(char *) BYTE_POS_ADDR (ibeg)
,
+
encoded, length,
NILP (no_line_break),
+ !NILP (
BVAR (current_buffer, enable_multibyte_characters)
));
if (encoded_length > allength)
abort ();
if (encoded_length > allength)
abort ();
@@
-3048,7
+3023,7
@@
into shorter lines. */)
/* We need to allocate enough room for decoding the text. */
SAFE_ALLOCA (encoded, char *, allength);
/* We need to allocate enough room for decoding the text. */
SAFE_ALLOCA (encoded, char *, allength);
- encoded_length = base64_encode_1 (SDATA (string),
+ encoded_length = base64_encode_1 (S
S
DATA (string),
encoded, length, NILP (no_line_break),
STRING_MULTIBYTE (string));
if (encoded_length > allength)
encoded, length, NILP (no_line_break),
STRING_MULTIBYTE (string));
if (encoded_length > allength)
@@
-3082,7
+3057,7
@@
base64_encode_1 (const char *from, char *to, EMACS_INT length,
{
if (multibyte)
{
{
if (multibyte)
{
- c = STRING_CHAR_AND_LENGTH (from + i, bytes);
+ c = STRING_CHAR_AND_LENGTH (
(unsigned char *)
from + i, bytes);
if (CHAR_BYTE8_P (c))
c = CHAR_TO_BYTE8 (c);
else if (c >= 256)
if (CHAR_BYTE8_P (c))
c = CHAR_TO_BYTE8 (c);
else if (c >= 256)
@@
-3122,7
+3097,7
@@
base64_encode_1 (const char *from, char *to, EMACS_INT length,
if (multibyte)
{
if (multibyte)
{
- c = STRING_CHAR_AND_LENGTH (from + i, bytes);
+ c = STRING_CHAR_AND_LENGTH (
(unsigned char *)
from + i, bytes);
if (CHAR_BYTE8_P (c))
c = CHAR_TO_BYTE8 (c);
else if (c >= 256)
if (CHAR_BYTE8_P (c))
c = CHAR_TO_BYTE8 (c);
else if (c >= 256)
@@
-3146,7
+3121,7
@@
base64_encode_1 (const char *from, char *to, EMACS_INT length,
if (multibyte)
{
if (multibyte)
{
- c = STRING_CHAR_AND_LENGTH (from + i, bytes);
+ c = STRING_CHAR_AND_LENGTH (
(unsigned char *)
from + i, bytes);
if (CHAR_BYTE8_P (c))
c = CHAR_TO_BYTE8 (c);
else if (c >= 256)
if (CHAR_BYTE8_P (c))
c = CHAR_TO_BYTE8 (c);
else if (c >= 256)
@@
-3176,7
+3151,7
@@
If the region can't be decoded, signal an error and don't modify the buffer. */
EMACS_INT old_pos = PT;
EMACS_INT decoded_length;
EMACS_INT inserted_chars;
EMACS_INT old_pos = PT;
EMACS_INT decoded_length;
EMACS_INT inserted_chars;
- int multibyte = !NILP (
current_buffer->enable_multibyte_characters
);
+ int multibyte = !NILP (
BVAR (current_buffer, enable_multibyte_characters)
);
USE_SAFE_ALLOCA;
validate_region (&beg, &end);
USE_SAFE_ALLOCA;
validate_region (&beg, &end);
@@
-3193,7
+3168,8
@@
If the region can't be decoded, signal an error and don't modify the buffer. */
SAFE_ALLOCA (decoded, char *, allength);
move_gap_both (XFASTINT (beg), ibeg);
SAFE_ALLOCA (decoded, char *, allength);
move_gap_both (XFASTINT (beg), ibeg);
- decoded_length = base64_decode_1 (BYTE_POS_ADDR (ibeg), decoded, length,
+ decoded_length = base64_decode_1 ((char *) BYTE_POS_ADDR (ibeg),
+ decoded, length,
multibyte, &inserted_chars);
if (decoded_length > allength)
abort ();
multibyte, &inserted_chars);
if (decoded_length > allength)
abort ();
@@
-3243,7
+3219,7
@@
DEFUN ("base64-decode-string", Fbase64_decode_string, Sbase64_decode_string,
SAFE_ALLOCA (decoded, char *, length);
/* The decoded result should be unibyte. */
SAFE_ALLOCA (decoded, char *, length);
/* The decoded result should be unibyte. */
- decoded_length = base64_decode_1 (SDATA (string), decoded, length,
+ decoded_length = base64_decode_1 (S
S
DATA (string), decoded, length,
0, NULL);
if (decoded_length > length)
abort ();
0, NULL);
if (decoded_length > length)
abort ();
@@
-3368,18
+3344,19
@@
base64_decode_1 (const char *from, char *to, EMACS_INT length,
/* The list of all weak hash tables. Don't staticpro this one. */
/* The list of all weak hash tables. Don't staticpro this one. */
-struct Lisp_Hash_Table *weak_hash_tables;
+st
atic st
ruct Lisp_Hash_Table *weak_hash_tables;
/* Various symbols. */
/* Various symbols. */
-Lisp_Object Qhash_table_p, Qeq, Qeql, Qequal, Qkey, Qvalue;
+static Lisp_Object Qhash_table_p, Qkey, Qvalue;
+Lisp_Object Qeq, Qeql, Qequal;
Lisp_Object QCtest, QCsize, QCrehash_size, QCrehash_threshold, QCweakness;
Lisp_Object QCtest, QCsize, QCrehash_size, QCrehash_threshold, QCweakness;
-Lisp_Object Qhash_table_test, Qkey_or_value, Qkey_and_value;
+
static
Lisp_Object Qhash_table_test, Qkey_or_value, Qkey_and_value;
/* Function prototypes. */
static struct Lisp_Hash_Table *check_hash_table (Lisp_Object);
/* Function prototypes. */
static struct Lisp_Hash_Table *check_hash_table (Lisp_Object);
-static
int get_key_arg (Lisp_Object, in
t, Lisp_Object *, char *);
+static
size_t get_key_arg (Lisp_Object, size_
t, Lisp_Object *, char *);
static void maybe_resize_hash_table (struct Lisp_Hash_Table *);
static int cmpfn_eql (struct Lisp_Hash_Table *, Lisp_Object, unsigned,
Lisp_Object, unsigned);
static void maybe_resize_hash_table (struct Lisp_Hash_Table *);
static int cmpfn_eql (struct Lisp_Hash_Table *, Lisp_Object, unsigned,
Lisp_Object, unsigned);
@@
-3434,27
+3411,23
@@
next_almost_prime (int n)
/* Find KEY in ARGS which has size NARGS. Don't consider indices for
which USED[I] is non-zero. If found at index I in ARGS, set
USED[I] and USED[I + 1] to 1, and return I + 1. Otherwise return
/* Find KEY in ARGS which has size NARGS. Don't consider indices for
which USED[I] is non-zero. If found at index I in ARGS, set
USED[I] and USED[I + 1] to 1, and return I + 1. Otherwise return
-
-1
. This function is used to extract a keyword/argument pair from
+
0
. This function is used to extract a keyword/argument pair from
a DEFUN parameter list. */
a DEFUN parameter list. */
-static
in
t
-get_key_arg (Lisp_Object key,
in
t nargs, Lisp_Object *args, char *used)
+static
size_
t
+get_key_arg (Lisp_Object key,
size_
t nargs, Lisp_Object *args, char *used)
{
{
- int i;
-
- for (i = 0; i < nargs - 1; ++i)
- if (!used[i] && EQ (args[i], key))
- break;
+ size_t i;
-
if (i >= nargs - 1
)
- i
= -1;
- else
- {
-
used[i++
] = 1;
-
used[i] = 1
;
- }
+
for (i = 1; i < nargs; i++
)
+ i
f (!used[i - 1] && EQ (args[i - 1], key))
+ {
+ used[i - 1] = 1;
+
used[i
] = 1;
+
return i
;
+
}
- return
i
;
+ return
0
;
}
}
@@
-3708,9
+3681,9
@@
copy_hash_table (struct Lisp_Hash_Table *h1)
struct Lisp_Vector *next;
h2 = allocate_hash_table ();
struct Lisp_Vector *next;
h2 = allocate_hash_table ();
- next = h2->
vec_next
;
+ next = h2->
header.next.vector
;
memcpy (h2, h1, sizeof *h2);
memcpy (h2, h1, sizeof *h2);
- h2->
vec_next
= next;
+ h2->
header.next.vector
= next;
h2->key_and_value = Fcopy_sequence (h1->key_and_value);
h2->hash = Fcopy_sequence (h1->hash);
h2->next = Fcopy_sequence (h1->next);
h2->key_and_value = Fcopy_sequence (h1->key_and_value);
h2->hash = Fcopy_sequence (h1->hash);
h2->next = Fcopy_sequence (h1->next);
@@
-4053,7
+4026,7
@@
sweep_weak_hash_tables (void)
marked = 0;
for (h = weak_hash_tables; h; h = h->next_weak)
{
marked = 0;
for (h = weak_hash_tables; h; h = h->next_weak)
{
- if (h->size & ARRAY_MARK_FLAG)
+ if (h->
header.
size & ARRAY_MARK_FLAG)
marked |= sweep_weak_table (h, 0);
}
}
marked |= sweep_weak_table (h, 0);
}
}
@@
-4064,7
+4037,7
@@
sweep_weak_hash_tables (void)
{
next = h->next_weak;
{
next = h->next_weak;
- if (h->size & ARRAY_MARK_FLAG)
+ if (h->
header.
size & ARRAY_MARK_FLAG)
{
/* TABLE is marked as used. Sweep its contents. */
if (h->count > 0)
{
/* TABLE is marked as used. Sweep its contents. */
if (h->count > 0)
@@
-4180,7
+4153,7
@@
sxhash_bool_vector (Lisp_Object vec)
unsigned hash = XBOOL_VECTOR (vec)->size;
int i, n;
unsigned hash = XBOOL_VECTOR (vec)->size;
int i, n;
- n = min (SXHASH_MAX_LEN, XBOOL_VECTOR (vec)->
vector_
size);
+ n = min (SXHASH_MAX_LEN, XBOOL_VECTOR (vec)->
header.
size);
for (i = 0; i < n; ++i)
hash = SXHASH_COMBINE (hash, XBOOL_VECTOR (vec)->data[i]);
for (i = 0; i < n; ++i)
hash = SXHASH_COMBINE (hash, XBOOL_VECTOR (vec)->data[i]);
@@
-4241,9
+4214,9
@@
sxhash (Lisp_Object obj, int depth)
{
double val = XFLOAT_DATA (obj);
unsigned char *p = (unsigned char *) &val;
{
double val = XFLOAT_DATA (obj);
unsigned char *p = (unsigned char *) &val;
-
unsigned char *e = p + sizeof val
;
- for (hash = 0
; p < e; ++p
)
- hash = SXHASH_COMBINE (hash,
*p
);
+
size_t i
;
+ for (hash = 0
, i = 0; i < sizeof val; i++
)
+ hash = SXHASH_COMBINE (hash,
p[i]
);
break;
}
break;
}
@@
-4302,12
+4275,12
@@
WEAK. WEAK t is equivalent to `key-and-value'. Default value of WEAK
is nil.
usage: (make-hash-table &rest KEYWORD-ARGS) */)
is nil.
usage: (make-hash-table &rest KEYWORD-ARGS) */)
- (
in
t nargs, Lisp_Object *args)
+ (
size_
t nargs, Lisp_Object *args)
{
Lisp_Object test, size, rehash_size, rehash_threshold, weak;
Lisp_Object user_test, user_hash;
char *used;
{
Lisp_Object test, size, rehash_size, rehash_threshold, weak;
Lisp_Object user_test, user_hash;
char *used;
-
in
t i;
+
size_
t i;
/* The vector `used' is used to keep track of arguments that
have been consumed. */
/* The vector `used' is used to keep track of arguments that
have been consumed. */
@@
-4316,7
+4289,7
@@
usage: (make-hash-table &rest KEYWORD-ARGS) */)
/* See if there's a `:test TEST' among the arguments. */
i = get_key_arg (QCtest, nargs, args, used);
/* See if there's a `:test TEST' among the arguments. */
i = get_key_arg (QCtest, nargs, args, used);
- test = i
< 0 ? Qeql : args[i]
;
+ test = i
? args[i] : Qeql
;
if (!EQ (test, Qeq) && !EQ (test, Qeql) && !EQ (test, Qequal))
{
/* See if it is a user-defined test. */
if (!EQ (test, Qeq) && !EQ (test, Qeql) && !EQ (test, Qequal))
{
/* See if it is a user-defined test. */
@@
-4333,7
+4306,7
@@
usage: (make-hash-table &rest KEYWORD-ARGS) */)
/* See if there's a `:size SIZE' argument. */
i = get_key_arg (QCsize, nargs, args, used);
/* See if there's a `:size SIZE' argument. */
i = get_key_arg (QCsize, nargs, args, used);
- size = i
< 0 ? Qnil : args[i]
;
+ size = i
? args[i] : Qnil
;
if (NILP (size))
size = make_number (DEFAULT_HASH_SIZE);
else if (!INTEGERP (size) || XINT (size) < 0)
if (NILP (size))
size = make_number (DEFAULT_HASH_SIZE);
else if (!INTEGERP (size) || XINT (size) < 0)
@@
-4341,7
+4314,7
@@
usage: (make-hash-table &rest KEYWORD-ARGS) */)
/* Look for `:rehash-size SIZE'. */
i = get_key_arg (QCrehash_size, nargs, args, used);
/* Look for `:rehash-size SIZE'. */
i = get_key_arg (QCrehash_size, nargs, args, used);
- rehash_size = i
< 0 ? make_float (DEFAULT_REHASH_SIZE) : args[i]
;
+ rehash_size = i
? args[i] : make_float (DEFAULT_REHASH_SIZE)
;
if (!NUMBERP (rehash_size)
|| (INTEGERP (rehash_size) && XINT (rehash_size) <= 0)
|| XFLOATINT (rehash_size) <= 1.0)
if (!NUMBERP (rehash_size)
|| (INTEGERP (rehash_size) && XINT (rehash_size) <= 0)
|| XFLOATINT (rehash_size) <= 1.0)
@@
-4349,7
+4322,7
@@
usage: (make-hash-table &rest KEYWORD-ARGS) */)
/* Look for `:rehash-threshold THRESHOLD'. */
i = get_key_arg (QCrehash_threshold, nargs, args, used);
/* Look for `:rehash-threshold THRESHOLD'. */
i = get_key_arg (QCrehash_threshold, nargs, args, used);
- rehash_threshold = i
< 0 ? make_float (DEFAULT_REHASH_THRESHOLD) : args[i]
;
+ rehash_threshold = i
? args[i] : make_float (DEFAULT_REHASH_THRESHOLD)
;
if (!FLOATP (rehash_threshold)
|| XFLOATINT (rehash_threshold) <= 0.0
|| XFLOATINT (rehash_threshold) > 1.0)
if (!FLOATP (rehash_threshold)
|| XFLOATINT (rehash_threshold) <= 0.0
|| XFLOATINT (rehash_threshold) > 1.0)
@@
-4357,7
+4330,7
@@
usage: (make-hash-table &rest KEYWORD-ARGS) */)
/* Look for `:weakness WEAK'. */
i = get_key_arg (QCweakness, nargs, args, used);
/* Look for `:weakness WEAK'. */
i = get_key_arg (QCweakness, nargs, args, used);
- weak = i
< 0 ? Qnil : args[i]
;
+ weak = i
? args[i] : Qnil
;
if (EQ (weak, Qt))
weak = Qkey_and_value;
if (!NILP (weak)
if (EQ (weak, Qt))
weak = Qkey_and_value;
if (!NILP (weak)
@@
-4576,7
+4549,7
@@
guesswork fails. Normally, an error is signaled in such case. */)
(Lisp_Object object, Lisp_Object start, Lisp_Object end, Lisp_Object coding_system, Lisp_Object noerror)
{
unsigned char digest[16];
(Lisp_Object object, Lisp_Object start, Lisp_Object end, Lisp_Object coding_system, Lisp_Object noerror)
{
unsigned char digest[16];
-
unsigned
char value[33];
+ char value[33];
int i;
EMACS_INT size;
EMACS_INT size_byte = 0;
int i;
EMACS_INT size;
EMACS_INT size_byte = 0;
@@
-4693,12
+4666,12
@@
guesswork fails. Normally, an error is signaled in such case. */)
{
int force_raw_text = 0;
{
int force_raw_text = 0;
- coding_system =
XBUFFER (object)->buffer_file_coding_system
;
+ coding_system =
BVAR (XBUFFER (object), buffer_file_coding_system)
;
if (NILP (coding_system)
|| NILP (Flocal_variable_p (Qbuffer_file_coding_system, Qnil)))
{
coding_system = Qnil;
if (NILP (coding_system)
|| NILP (Flocal_variable_p (Qbuffer_file_coding_system, Qnil)))
{
coding_system = Qnil;
- if (NILP (
current_buffer->enable_multibyte_characters
))
+ if (NILP (
BVAR (current_buffer, enable_multibyte_characters)
))
force_raw_text = 1;
}
force_raw_text = 1;
}
@@
-4715,11
+4688,11
@@
guesswork fails. Normally, an error is signaled in such case. */)
}
if (NILP (coding_system)
}
if (NILP (coding_system)
- && !NILP (
XBUFFER (object)->buffer_file_coding_system
))
+ && !NILP (
BVAR (XBUFFER (object), buffer_file_coding_system)
))
{
/* If we still have not decided a coding system, use the
default value of buffer-file-coding-system. */
{
/* If we still have not decided a coding system, use the
default value of buffer-file-coding-system. */
- coding_system =
XBUFFER (object)->buffer_file_coding_system
;
+ coding_system =
BVAR (XBUFFER (object), buffer_file_coding_system)
;
}
if (!force_raw_text
}
if (!force_raw_text
@@
-4755,7
+4728,7
@@
guesswork fails. Normally, an error is signaled in such case. */)
object = code_convert_string (object, coding_system, Qnil, 1, 0, 0);
}
object = code_convert_string (object, coding_system, Qnil, 1, 0, 0);
}
- md5_buffer (SDATA (object) + start_byte,
+ md5_buffer (S
S
DATA (object) + start_byte,
SBYTES (object) - (size_byte - end_byte),
digest);
SBYTES (object) - (size_byte - end_byte),
digest);
@@
-4838,7
+4811,7
@@
syms_of_fns (void)
Fset (Qyes_or_no_p_history, Qnil);
Fset (Qyes_or_no_p_history, Qnil);
- DEFVAR_LISP ("features",
&
Vfeatures,
+ DEFVAR_LISP ("features", Vfeatures,
doc: /* A list of symbols which are the features of the executing Emacs.
Used by `featurep' and `require', and altered by `provide'. */);
Vfeatures = Fcons (intern_c_string ("emacs"), Qnil);
doc: /* A list of symbols which are the features of the executing Emacs.
Used by `featurep' and `require', and altered by `provide'. */);
Vfeatures = Fcons (intern_c_string ("emacs"), Qnil);
@@
-4856,7
+4829,7
@@
Used by `featurep' and `require', and altered by `provide'. */);
staticpro (&Qpaper);
#endif /* HAVE_LANGINFO_CODESET */
staticpro (&Qpaper);
#endif /* HAVE_LANGINFO_CODESET */
- DEFVAR_BOOL ("use-dialog-box",
&
use_dialog_box,
+ DEFVAR_BOOL ("use-dialog-box", use_dialog_box,
doc: /* *Non-nil means mouse commands use dialog boxes to ask questions.
This applies to `y-or-n-p' and `yes-or-no-p' questions asked by commands
invoked by mouse clicks and mouse menu items.
doc: /* *Non-nil means mouse commands use dialog boxes to ask questions.
This applies to `y-or-n-p' and `yes-or-no-p' questions asked by commands
invoked by mouse clicks and mouse menu items.
@@
-4865,7
+4838,7
@@
On some platforms, file selection dialogs are also enabled if this is
non-nil. */);
use_dialog_box = 1;
non-nil. */);
use_dialog_box = 1;
- DEFVAR_BOOL ("use-file-dialog",
&
use_file_dialog,
+ DEFVAR_BOOL ("use-file-dialog", use_file_dialog,
doc: /* *Non-nil means mouse commands use a file dialog to ask for files.
This applies to commands from menus and tool bar buttons even when
they are initiated from the keyboard. If `use-dialog-box' is nil,
doc: /* *Non-nil means mouse commands use a file dialog to ask for files.
This applies to commands from menus and tool bar buttons even when
they are initiated from the keyboard. If `use-dialog-box' is nil,
@@
-4946,6
+4919,3
@@
void
init_fns (void)
{
}
init_fns (void)
{
}
-
-/* arch-tag: 787f8219-5b74-46bd-8469-7e1cc475fa31
- (do not change this comment) */