aboutsummaryrefslogtreecommitdiffstats
path: root/src/lisp.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/lisp.h')
-rw-r--r--src/lisp.h291
1 files changed, 161 insertions, 130 deletions
diff --git a/src/lisp.h b/src/lisp.h
index e9a525a32b5..ed8eb2720b5 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -372,14 +372,13 @@ typedef EMACS_INT Lisp_Object;
372#define LISP_MAKE_RVALUE(o) (0+(o)) 372#define LISP_MAKE_RVALUE(o) (0+(o))
373#endif /* USE_LISP_UNION_TYPE */ 373#endif /* USE_LISP_UNION_TYPE */
374 374
375/* In the size word of a vector, this bit means the vector has been marked. 375/* In the size word of a vector, this bit means the vector has been marked. */
376 (Shift -1 left, not 1, to avoid provoking overflow diagnostics.) */
377 376
378#define ARRAY_MARK_FLAG ((EMACS_INT) -1 << (BITS_PER_EMACS_INT - 1)) 377#define ARRAY_MARK_FLAG PTRDIFF_MIN
379 378
380/* In the size word of a struct Lisp_Vector, this bit means it's really 379/* In the size word of a struct Lisp_Vector, this bit means it's really
381 some other vector-like object. */ 380 some other vector-like object. */
382#define PSEUDOVECTOR_FLAG ((EMACS_INT) 1 << (BITS_PER_EMACS_INT - 2)) 381#define PSEUDOVECTOR_FLAG (PTRDIFF_MAX - PTRDIFF_MAX / 2)
383 382
384/* In a pseudovector, the size field actually contains a word with one 383/* In a pseudovector, the size field actually contains a word with one
385 PSEUDOVECTOR_FLAG bit set, and exactly one of the following bits to 384 PSEUDOVECTOR_FLAG bit set, and exactly one of the following bits to
@@ -582,6 +581,12 @@ extern Lisp_Object make_number (EMACS_INT);
582#define FIXNUM_OVERFLOW_P(i) \ 581#define FIXNUM_OVERFLOW_P(i) \
583 (! ((0 <= (i) || MOST_NEGATIVE_FIXNUM <= (i)) && (i) <= MOST_POSITIVE_FIXNUM)) 582 (! ((0 <= (i) || MOST_NEGATIVE_FIXNUM <= (i)) && (i) <= MOST_POSITIVE_FIXNUM))
584 583
584static inline ptrdiff_t
585clip_to_bounds (ptrdiff_t lower, EMACS_INT num, ptrdiff_t upper)
586{
587 return num < lower ? lower : num <= upper ? num : upper;
588}
589
585/* Extract a value or address from a Lisp_Object. */ 590/* Extract a value or address from a Lisp_Object. */
586 591
587#define XCONS(a) (eassert (CONSP (a)), (struct Lisp_Cons *) XPNTR (a)) 592#define XCONS(a) (eassert (CONSP (a)), (struct Lisp_Cons *) XPNTR (a))
@@ -659,8 +664,7 @@ extern Lisp_Object make_number (EMACS_INT);
659#define XSETWINDOW(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_WINDOW)) 664#define XSETWINDOW(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_WINDOW))
660#define XSETTERMINAL(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_TERMINAL)) 665#define XSETTERMINAL(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_TERMINAL))
661/* XSETSUBR is special since Lisp_Subr lacks struct vectorlike_header. */ 666/* XSETSUBR is special since Lisp_Subr lacks struct vectorlike_header. */
662#define XSETSUBR(a, b) \ 667#define XSETSUBR(a, b) XSETTYPED_PSEUDOVECTOR (a, b, 0, PVEC_SUBR)
663 XSETTYPED_PSEUDOVECTOR (a, b, XSUBR (a)->size, PVEC_SUBR)
664#define XSETCOMPILED(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_COMPILED)) 668#define XSETCOMPILED(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_COMPILED))
665#define XSETBUFFER(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_BUFFER)) 669#define XSETBUFFER(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_BUFFER))
666#define XSETCHAR_TABLE(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_CHAR_TABLE)) 670#define XSETCHAR_TABLE(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_CHAR_TABLE))
@@ -788,7 +792,7 @@ struct Lisp_Cons
788#ifdef GC_CHECK_STRING_BYTES 792#ifdef GC_CHECK_STRING_BYTES
789 793
790struct Lisp_String; 794struct Lisp_String;
791extern EMACS_INT string_bytes (struct Lisp_String *); 795extern ptrdiff_t string_bytes (struct Lisp_String *);
792#define STRING_BYTES(S) string_bytes ((S)) 796#define STRING_BYTES(S) string_bytes ((S))
793 797
794#else /* not GC_CHECK_STRING_BYTES */ 798#else /* not GC_CHECK_STRING_BYTES */
@@ -835,8 +839,8 @@ extern EMACS_INT string_bytes (struct Lisp_String *);
835 839
836struct Lisp_String 840struct Lisp_String
837 { 841 {
838 EMACS_INT size; 842 ptrdiff_t size;
839 EMACS_INT size_byte; 843 ptrdiff_t size_byte;
840 INTERVAL intervals; /* text properties in this string */ 844 INTERVAL intervals; /* text properties in this string */
841 unsigned char *data; 845 unsigned char *data;
842 }; 846 };
@@ -850,7 +854,7 @@ struct Lisp_String
850 <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=8546>. */ 854 <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=8546>. */
851struct vectorlike_header 855struct vectorlike_header
852 { 856 {
853 EMACS_INT size; 857 ptrdiff_t size;
854 858
855 /* Pointer to the next vector-like object. It is generally a buffer or a 859 /* Pointer to the next vector-like object. It is generally a buffer or a
856 Lisp_Vector alias, so for convenience it is a union instead of a 860 Lisp_Vector alias, so for convenience it is a union instead of a
@@ -1045,7 +1049,7 @@ struct Lisp_Bool_Vector
1045 1049
1046struct Lisp_Subr 1050struct Lisp_Subr
1047 { 1051 {
1048 EMACS_INT size; 1052 ptrdiff_t size;
1049 union { 1053 union {
1050 Lisp_Object (*a0) (void); 1054 Lisp_Object (*a0) (void);
1051 Lisp_Object (*a1) (Lisp_Object); 1055 Lisp_Object (*a1) (Lisp_Object);
@@ -1238,7 +1242,7 @@ struct Lisp_Hash_Table
1238 a special way (e.g. because of weakness). */ 1242 a special way (e.g. because of weakness). */
1239 1243
1240 /* Number of key/value entries in the table. */ 1244 /* Number of key/value entries in the table. */
1241 EMACS_INT count; 1245 ptrdiff_t count;
1242 1246
1243 /* Vector of keys and values. The key of item I is found at index 1247 /* Vector of keys and values. The key of item I is found at index
1244 2 * I, the value is found at index 2 * I + 1. 1248 2 * I, the value is found at index 2 * I + 1.
@@ -1355,12 +1359,12 @@ struct Lisp_Marker
1355 That would also allow to preserve it ordered. */ 1359 That would also allow to preserve it ordered. */
1356 struct Lisp_Marker *next; 1360 struct Lisp_Marker *next;
1357 /* This is the char position where the marker points. */ 1361 /* This is the char position where the marker points. */
1358 EMACS_INT charpos; 1362 ptrdiff_t charpos;
1359 /* This is the byte position. 1363 /* This is the byte position.
1360 It's mostly used as a charpos<->bytepos cache (i.e. it's not directly 1364 It's mostly used as a charpos<->bytepos cache (i.e. it's not directly
1361 used to implement the functionality of markers, but rather to (ab)use 1365 used to implement the functionality of markers, but rather to (ab)use
1362 markers as a cache for char<->byte mappings). */ 1366 markers as a cache for char<->byte mappings). */
1363 EMACS_INT bytepos; 1367 ptrdiff_t bytepos;
1364}; 1368};
1365 1369
1366/* Forwarding pointer to an int variable. 1370/* Forwarding pointer to an int variable.
@@ -1626,18 +1630,24 @@ typedef struct {
1626 encodes a char code in the lower CHARACTERBITS bits and a (very small) 1630 encodes a char code in the lower CHARACTERBITS bits and a (very small)
1627 face-id in the upper bits, or it may be a cons (CHAR . FACE-ID). */ 1631 face-id in the upper bits, or it may be a cons (CHAR . FACE-ID). */
1628 1632
1629#define GLYPH_CODE_CHAR(gc) \ 1633#define GLYPH_CODE_P(gc) \
1630 (CONSP (gc) ? XINT (XCAR (gc)) : INTEGERP (gc) ? (XINT (gc) & ((1 << CHARACTERBITS)-1)) : 0) 1634 (CONSP (gc) \
1635 ? (CHARACTERP (XCAR (gc)) \
1636 && RANGED_INTEGERP (0, XCDR (gc), MAX_FACE_ID)) \
1637 : (RANGED_INTEGERP \
1638 (0, gc, \
1639 (MAX_FACE_ID < TYPE_MAXIMUM (EMACS_INT) >> CHARACTERBITS \
1640 ? ((EMACS_INT) MAX_FACE_ID << CHARACTERBITS) | MAX_CHAR \
1641 : TYPE_MAXIMUM (EMACS_INT)))))
1631 1642
1632#define GLYPH_CODE_FACE(gc) \ 1643/* The following are valid only if GLYPH_CODE_P (gc). */
1633 (CONSP (gc) ? XINT (XCDR (gc)) : INTEGERP (gc) ? (XINT (gc) >> CHARACTERBITS) : DEFAULT_FACE_ID)
1634 1644
1635/* Return 1 if glyph code from display vector contains valid character code. */ 1645#define GLYPH_CODE_CHAR(gc) \
1636#define GLYPH_CODE_CHAR_VALID_P(gc) CHAR_VALID_P (GLYPH_CODE_CHAR (gc)) 1646 (CONSP (gc) ? XINT (XCAR (gc)) : XINT (gc) & ((1 << CHARACTERBITS) - 1))
1637 1647
1638#define GLYPH_CODE_P(gc) ((CONSP (gc) && INTEGERP (XCAR (gc)) && INTEGERP (XCDR (gc))) || INTEGERP (gc)) 1648#define GLYPH_CODE_FACE(gc) \
1649 (CONSP (gc) ? XINT (XCDR (gc)) : XINT (gc) >> CHARACTERBITS)
1639 1650
1640/* Only called when GLYPH_CODE_P (gc) is true. */
1641#define SET_GLYPH_FROM_GLYPH_CODE(glyph, gc) \ 1651#define SET_GLYPH_FROM_GLYPH_CODE(glyph, gc) \
1642 do \ 1652 do \
1643 { \ 1653 { \
@@ -1697,7 +1707,9 @@ typedef struct {
1697#define RANGED_INTEGERP(lo, x, hi) \ 1707#define RANGED_INTEGERP(lo, x, hi) \
1698 (INTEGERP (x) && (lo) <= XINT (x) && XINT (x) <= (hi)) 1708 (INTEGERP (x) && (lo) <= XINT (x) && XINT (x) <= (hi))
1699#define TYPE_RANGED_INTEGERP(type, x) \ 1709#define TYPE_RANGED_INTEGERP(type, x) \
1700 RANGED_INTEGERP (TYPE_MINIMUM (type), x, TYPE_MAXIMUM (type)) 1710 (TYPE_SIGNED (type) \
1711 ? RANGED_INTEGERP (TYPE_MINIMUM (type), x, TYPE_MAXIMUM (type)) \
1712 : RANGED_INTEGERP (0, x, TYPE_MAXIMUM (type)))
1701 1713
1702#define INTEGERP(x) (LISP_INT_TAG_P (XTYPE ((x)))) 1714#define INTEGERP(x) (LISP_INT_TAG_P (XTYPE ((x))))
1703#define SYMBOLP(x) (XTYPE ((x)) == Lisp_Symbol) 1715#define SYMBOLP(x) (XTYPE ((x)) == Lisp_Symbol)
@@ -1820,6 +1832,25 @@ typedef struct {
1820#define CHECK_NATNUM(x) \ 1832#define CHECK_NATNUM(x) \
1821 CHECK_TYPE (NATNUMP (x), Qwholenump, x) 1833 CHECK_TYPE (NATNUMP (x), Qwholenump, x)
1822 1834
1835#define CHECK_RANGED_INTEGER(lo, x, hi) \
1836 do { \
1837 CHECK_NUMBER (x); \
1838 if (! ((lo) <= XINT (x) && XINT (x) <= (hi))) \
1839 args_out_of_range_3 \
1840 (x, \
1841 make_number ((lo) < 0 && (lo) < MOST_NEGATIVE_FIXNUM \
1842 ? MOST_NEGATIVE_FIXNUM \
1843 : (lo)), \
1844 make_number (min (hi, MOST_POSITIVE_FIXNUM))); \
1845 } while (0)
1846#define CHECK_TYPE_RANGED_INTEGER(type, x) \
1847 do { \
1848 if (TYPE_SIGNED (type)) \
1849 CHECK_RANGED_INTEGER (TYPE_MINIMUM (type), x, TYPE_MAXIMUM (type)); \
1850 else \
1851 CHECK_RANGED_INTEGER (0, x, TYPE_MAXIMUM (type)); \
1852 } while (0)
1853
1823#define CHECK_MARKER(x) \ 1854#define CHECK_MARKER(x) \
1824 CHECK_TYPE (MARKERP (x), Qmarkerp, x) 1855 CHECK_TYPE (MARKERP (x), Qmarkerp, x)
1825 1856
@@ -2031,9 +2062,9 @@ struct specbinding
2031 2062
2032extern struct specbinding *specpdl; 2063extern struct specbinding *specpdl;
2033extern struct specbinding *specpdl_ptr; 2064extern struct specbinding *specpdl_ptr;
2034extern EMACS_INT specpdl_size; 2065extern ptrdiff_t specpdl_size;
2035 2066
2036#define SPECPDL_INDEX() ((int) (specpdl_ptr - specpdl)) 2067#define SPECPDL_INDEX() (specpdl_ptr - specpdl)
2037 2068
2038/* Everything needed to describe an active condition case. */ 2069/* Everything needed to describe an active condition case. */
2039struct handler 2070struct handler
@@ -2086,8 +2117,8 @@ struct catchtag
2086 jmp_buf jmp; 2117 jmp_buf jmp;
2087 struct backtrace *backlist; 2118 struct backtrace *backlist;
2088 struct handler *handlerlist; 2119 struct handler *handlerlist;
2089 int lisp_eval_depth; 2120 EMACS_INT lisp_eval_depth;
2090 int pdlcount; 2121 ptrdiff_t pdlcount;
2091 int poll_suppress_count; 2122 int poll_suppress_count;
2092 int interrupt_input_blocked; 2123 int interrupt_input_blocked;
2093 struct byte_stack *byte_stack; 2124 struct byte_stack *byte_stack;
@@ -2511,8 +2542,8 @@ EXFUN (Fread_coding_system, 2);
2511EXFUN (Fread_non_nil_coding_system, 1); 2542EXFUN (Fread_non_nil_coding_system, 1);
2512EXFUN (Ffind_operation_coding_system, MANY); 2543EXFUN (Ffind_operation_coding_system, MANY);
2513EXFUN (Fdecode_coding_string, 4); 2544EXFUN (Fdecode_coding_string, 4);
2514extern Lisp_Object detect_coding_system (const unsigned char *, EMACS_INT, 2545extern Lisp_Object detect_coding_system (const unsigned char *, ptrdiff_t,
2515 EMACS_INT, int, int, Lisp_Object); 2546 ptrdiff_t, int, int, Lisp_Object);
2516extern void init_coding (void); 2547extern void init_coding (void);
2517extern void init_coding_once (void); 2548extern void init_coding_once (void);
2518extern void syms_of_coding (void); 2549extern void syms_of_coding (void);
@@ -2520,8 +2551,8 @@ extern void syms_of_coding (void);
2520/* Defined in character.c */ 2551/* Defined in character.c */
2521EXFUN (Fchar_width, 1); 2552EXFUN (Fchar_width, 1);
2522EXFUN (Fstring, MANY); 2553EXFUN (Fstring, MANY);
2523extern EMACS_INT chars_in_text (const unsigned char *, EMACS_INT); 2554extern ptrdiff_t chars_in_text (const unsigned char *, ptrdiff_t);
2524extern EMACS_INT multibyte_chars_in_text (const unsigned char *, EMACS_INT); 2555extern ptrdiff_t multibyte_chars_in_text (const unsigned char *, ptrdiff_t);
2525extern int multibyte_char_to_unibyte (int); 2556extern int multibyte_char_to_unibyte (int);
2526extern int multibyte_char_to_unibyte_safe (int); 2557extern int multibyte_char_to_unibyte_safe (int);
2527extern void init_character_once (void); 2558extern void init_character_once (void);
@@ -2548,7 +2579,7 @@ extern void syms_of_syntax (void);
2548extern Lisp_Object QCrehash_size, QCrehash_threshold; 2579extern Lisp_Object QCrehash_size, QCrehash_threshold;
2549enum { NEXT_ALMOST_PRIME_LIMIT = 11 }; 2580enum { NEXT_ALMOST_PRIME_LIMIT = 11 };
2550extern EMACS_INT next_almost_prime (EMACS_INT); 2581extern EMACS_INT next_almost_prime (EMACS_INT);
2551extern Lisp_Object larger_vector (Lisp_Object, EMACS_INT, Lisp_Object); 2582extern Lisp_Object larger_vector (Lisp_Object, ptrdiff_t, ptrdiff_t);
2552extern void sweep_weak_hash_tables (void); 2583extern void sweep_weak_hash_tables (void);
2553extern Lisp_Object Qcursor_in_echo_area; 2584extern Lisp_Object Qcursor_in_echo_area;
2554extern Lisp_Object Qstring_lessp; 2585extern Lisp_Object Qstring_lessp;
@@ -2580,8 +2611,8 @@ EXFUN (Fstring_as_multibyte, 1);
2580EXFUN (Fstring_as_unibyte, 1); 2611EXFUN (Fstring_as_unibyte, 1);
2581EXFUN (Fstring_to_multibyte, 1); 2612EXFUN (Fstring_to_multibyte, 1);
2582EXFUN (Fsubstring, 3); 2613EXFUN (Fsubstring, 3);
2583extern Lisp_Object substring_both (Lisp_Object, EMACS_INT, EMACS_INT, 2614extern Lisp_Object substring_both (Lisp_Object, ptrdiff_t, ptrdiff_t,
2584 EMACS_INT, EMACS_INT); 2615 ptrdiff_t, ptrdiff_t);
2585EXFUN (Fnth, 2); 2616EXFUN (Fnth, 2);
2586EXFUN (Fnthcdr, 2); 2617EXFUN (Fnthcdr, 2);
2587EXFUN (Fmemq, 2); 2618EXFUN (Fmemq, 2);
@@ -2609,8 +2640,8 @@ extern Lisp_Object nconc2 (Lisp_Object, Lisp_Object);
2609extern Lisp_Object assq_no_quit (Lisp_Object, Lisp_Object); 2640extern Lisp_Object assq_no_quit (Lisp_Object, Lisp_Object);
2610extern Lisp_Object assoc_no_quit (Lisp_Object, Lisp_Object); 2641extern Lisp_Object assoc_no_quit (Lisp_Object, Lisp_Object);
2611extern void clear_string_char_byte_cache (void); 2642extern void clear_string_char_byte_cache (void);
2612extern EMACS_INT string_char_to_byte (Lisp_Object, EMACS_INT); 2643extern ptrdiff_t string_char_to_byte (Lisp_Object, ptrdiff_t);
2613extern EMACS_INT string_byte_to_char (Lisp_Object, EMACS_INT); 2644extern ptrdiff_t string_byte_to_char (Lisp_Object, ptrdiff_t);
2614extern Lisp_Object string_to_multibyte (Lisp_Object); 2645extern Lisp_Object string_to_multibyte (Lisp_Object);
2615extern Lisp_Object string_make_unibyte (Lisp_Object); 2646extern Lisp_Object string_make_unibyte (Lisp_Object);
2616EXFUN (Fcopy_alist, 1); 2647EXFUN (Fcopy_alist, 1);
@@ -2648,48 +2679,48 @@ extern void init_image (void);
2648 2679
2649/* Defined in insdel.c */ 2680/* Defined in insdel.c */
2650extern Lisp_Object Qinhibit_modification_hooks; 2681extern Lisp_Object Qinhibit_modification_hooks;
2651extern void move_gap (EMACS_INT); 2682extern void move_gap (ptrdiff_t);
2652extern void move_gap_both (EMACS_INT, EMACS_INT); 2683extern void move_gap_both (ptrdiff_t, ptrdiff_t);
2653extern void buffer_overflow (void) NO_RETURN; 2684extern void buffer_overflow (void) NO_RETURN;
2654extern void make_gap (EMACS_INT); 2685extern void make_gap (ptrdiff_t);
2655extern EMACS_INT copy_text (const unsigned char *, unsigned char *, 2686extern ptrdiff_t copy_text (const unsigned char *, unsigned char *,
2656 EMACS_INT, int, int); 2687 ptrdiff_t, int, int);
2657extern int count_combining_before (const unsigned char *, 2688extern int count_combining_before (const unsigned char *,
2658 EMACS_INT, EMACS_INT, EMACS_INT); 2689 ptrdiff_t, ptrdiff_t, ptrdiff_t);
2659extern int count_combining_after (const unsigned char *, 2690extern int count_combining_after (const unsigned char *,
2660 EMACS_INT, EMACS_INT, EMACS_INT); 2691 ptrdiff_t, ptrdiff_t, ptrdiff_t);
2661extern void insert (const char *, EMACS_INT); 2692extern void insert (const char *, ptrdiff_t);
2662extern void insert_and_inherit (const char *, EMACS_INT); 2693extern void insert_and_inherit (const char *, ptrdiff_t);
2663extern void insert_1 (const char *, EMACS_INT, int, int, int); 2694extern void insert_1 (const char *, ptrdiff_t, int, int, int);
2664extern void insert_1_both (const char *, EMACS_INT, EMACS_INT, 2695extern void insert_1_both (const char *, ptrdiff_t, ptrdiff_t,
2665 int, int, int); 2696 int, int, int);
2666extern void insert_from_gap (EMACS_INT, EMACS_INT); 2697extern void insert_from_gap (ptrdiff_t, ptrdiff_t);
2667extern void insert_from_string (Lisp_Object, EMACS_INT, EMACS_INT, 2698extern void insert_from_string (Lisp_Object, ptrdiff_t, ptrdiff_t,
2668 EMACS_INT, EMACS_INT, int); 2699 ptrdiff_t, ptrdiff_t, int);
2669extern void insert_from_buffer (struct buffer *, EMACS_INT, EMACS_INT, int); 2700extern void insert_from_buffer (struct buffer *, ptrdiff_t, ptrdiff_t, int);
2670extern void insert_char (int); 2701extern void insert_char (int);
2671extern void insert_string (const char *); 2702extern void insert_string (const char *);
2672extern void insert_before_markers (const char *, EMACS_INT); 2703extern void insert_before_markers (const char *, ptrdiff_t);
2673extern void insert_before_markers_and_inherit (const char *, EMACS_INT); 2704extern void insert_before_markers_and_inherit (const char *, ptrdiff_t);
2674extern void insert_from_string_before_markers (Lisp_Object, EMACS_INT, 2705extern void insert_from_string_before_markers (Lisp_Object, ptrdiff_t,
2675 EMACS_INT, EMACS_INT, 2706 ptrdiff_t, ptrdiff_t,
2676 EMACS_INT, int); 2707 ptrdiff_t, int);
2677extern void del_range (EMACS_INT, EMACS_INT); 2708extern void del_range (ptrdiff_t, ptrdiff_t);
2678extern Lisp_Object del_range_1 (EMACS_INT, EMACS_INT, int, int); 2709extern Lisp_Object del_range_1 (ptrdiff_t, ptrdiff_t, int, int);
2679extern void del_range_byte (EMACS_INT, EMACS_INT, int); 2710extern void del_range_byte (ptrdiff_t, ptrdiff_t, int);
2680extern void del_range_both (EMACS_INT, EMACS_INT, EMACS_INT, EMACS_INT, int); 2711extern void del_range_both (ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t, int);
2681extern Lisp_Object del_range_2 (EMACS_INT, EMACS_INT, 2712extern Lisp_Object del_range_2 (ptrdiff_t, ptrdiff_t,
2682 EMACS_INT, EMACS_INT, int); 2713 ptrdiff_t, ptrdiff_t, int);
2683extern void modify_region (struct buffer *, EMACS_INT, EMACS_INT, int); 2714extern void modify_region (struct buffer *, ptrdiff_t, ptrdiff_t, int);
2684extern void prepare_to_modify_buffer (EMACS_INT, EMACS_INT, EMACS_INT *); 2715extern void prepare_to_modify_buffer (ptrdiff_t, ptrdiff_t, ptrdiff_t *);
2685extern void signal_after_change (EMACS_INT, EMACS_INT, EMACS_INT); 2716extern void signal_after_change (ptrdiff_t, ptrdiff_t, ptrdiff_t);
2686extern void adjust_after_insert (EMACS_INT, EMACS_INT, EMACS_INT, 2717extern void adjust_after_insert (ptrdiff_t, ptrdiff_t, ptrdiff_t,
2687 EMACS_INT, EMACS_INT); 2718 ptrdiff_t, ptrdiff_t);
2688extern void adjust_markers_for_delete (EMACS_INT, EMACS_INT, 2719extern void adjust_markers_for_delete (ptrdiff_t, ptrdiff_t,
2689 EMACS_INT, EMACS_INT); 2720 ptrdiff_t, ptrdiff_t);
2690extern void replace_range (EMACS_INT, EMACS_INT, Lisp_Object, int, int, int); 2721extern void replace_range (ptrdiff_t, ptrdiff_t, Lisp_Object, int, int, int);
2691extern void replace_range_2 (EMACS_INT, EMACS_INT, EMACS_INT, EMACS_INT, 2722extern void replace_range_2 (ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t,
2692 const char *, EMACS_INT, EMACS_INT, int); 2723 const char *, ptrdiff_t, ptrdiff_t, int);
2693extern void syms_of_insdel (void); 2724extern void syms_of_insdel (void);
2694 2725
2695/* Defined in dispnew.c */ 2726/* Defined in dispnew.c */
@@ -2697,6 +2728,7 @@ extern Lisp_Object selected_frame;
2697extern Lisp_Object Vwindow_system; 2728extern Lisp_Object Vwindow_system;
2698EXFUN (Fding, 1); 2729EXFUN (Fding, 1);
2699EXFUN (Fredraw_frame, 1); 2730EXFUN (Fredraw_frame, 1);
2731void duration_to_sec_usec (double, int *, int *);
2700EXFUN (Fsleep_for, 2); 2732EXFUN (Fsleep_for, 2);
2701EXFUN (Fredisplay, 1); 2733EXFUN (Fredisplay, 1);
2702extern Lisp_Object sit_for (Lisp_Object, int, int); 2734extern Lisp_Object sit_for (Lisp_Object, int, int);
@@ -2718,7 +2750,7 @@ extern Lisp_Object QCdata, QCfile;
2718extern Lisp_Object QCmap; 2750extern Lisp_Object QCmap;
2719extern Lisp_Object Qrisky_local_variable; 2751extern Lisp_Object Qrisky_local_variable;
2720extern struct frame *last_glyphless_glyph_frame; 2752extern struct frame *last_glyphless_glyph_frame;
2721extern unsigned last_glyphless_glyph_face_id; 2753extern int last_glyphless_glyph_face_id;
2722extern int last_glyphless_glyph_merged_face_id; 2754extern int last_glyphless_glyph_merged_face_id;
2723extern int noninteractive_need_newline; 2755extern int noninteractive_need_newline;
2724extern Lisp_Object echo_area_buffer[2]; 2756extern Lisp_Object echo_area_buffer[2];
@@ -2734,15 +2766,15 @@ extern void clear_message (int, int);
2734extern void message (const char *, ...) ATTRIBUTE_FORMAT_PRINTF (1, 2); 2766extern void message (const char *, ...) ATTRIBUTE_FORMAT_PRINTF (1, 2);
2735extern void message1 (const char *); 2767extern void message1 (const char *);
2736extern void message1_nolog (const char *); 2768extern void message1_nolog (const char *);
2737extern void message2 (const char *, EMACS_INT, int); 2769extern void message2 (const char *, ptrdiff_t, int);
2738extern void message2_nolog (const char *, EMACS_INT, int); 2770extern void message2_nolog (const char *, ptrdiff_t, int);
2739extern void message3 (Lisp_Object, EMACS_INT, int); 2771extern void message3 (Lisp_Object, ptrdiff_t, int);
2740extern void message3_nolog (Lisp_Object, EMACS_INT, int); 2772extern void message3_nolog (Lisp_Object, ptrdiff_t, int);
2741extern void message_dolog (const char *, EMACS_INT, int, int); 2773extern void message_dolog (const char *, ptrdiff_t, int, int);
2742extern void message_with_string (const char *, Lisp_Object, int); 2774extern void message_with_string (const char *, Lisp_Object, int);
2743extern void message_log_maybe_newline (void); 2775extern void message_log_maybe_newline (void);
2744extern void update_echo_area (void); 2776extern void update_echo_area (void);
2745extern void truncate_echo_area (EMACS_INT); 2777extern void truncate_echo_area (ptrdiff_t);
2746extern void redisplay (void); 2778extern void redisplay (void);
2747extern void redisplay_preserve_echo_area (int); 2779extern void redisplay_preserve_echo_area (int);
2748extern void prepare_menu_bars (void); 2780extern void prepare_menu_bars (void);
@@ -2751,7 +2783,7 @@ void set_frame_cursor_types (struct frame *, Lisp_Object);
2751extern void syms_of_xdisp (void); 2783extern void syms_of_xdisp (void);
2752extern void init_xdisp (void); 2784extern void init_xdisp (void);
2753extern Lisp_Object safe_eval (Lisp_Object); 2785extern Lisp_Object safe_eval (Lisp_Object);
2754extern int pos_visible_p (struct window *, EMACS_INT, int *, 2786extern int pos_visible_p (struct window *, ptrdiff_t, int *,
2755 int *, int *, int *, int *, int *); 2787 int *, int *, int *, int *, int *);
2756 2788
2757/* Defined in xsettings.c */ 2789/* Defined in xsettings.c */
@@ -2767,7 +2799,7 @@ extern void reset_malloc_hooks (void);
2767extern void uninterrupt_malloc (void); 2799extern void uninterrupt_malloc (void);
2768extern void malloc_warning (const char *); 2800extern void malloc_warning (const char *);
2769extern void memory_full (size_t) NO_RETURN; 2801extern void memory_full (size_t) NO_RETURN;
2770extern void buffer_memory_full (EMACS_INT) NO_RETURN; 2802extern void buffer_memory_full (ptrdiff_t) NO_RETURN;
2771extern int survives_gc_p (Lisp_Object); 2803extern int survives_gc_p (Lisp_Object);
2772extern void mark_object (Lisp_Object); 2804extern void mark_object (Lisp_Object);
2773#if defined REL_ALLOC && !defined SYSTEM_MALLOC 2805#if defined REL_ALLOC && !defined SYSTEM_MALLOC
@@ -2792,26 +2824,26 @@ EXFUN (Fmake_marker, 0);
2792extern void string_overflow (void) NO_RETURN; 2824extern void string_overflow (void) NO_RETURN;
2793EXFUN (Fmake_string, 2); 2825EXFUN (Fmake_string, 2);
2794extern Lisp_Object build_string (const char *); 2826extern Lisp_Object build_string (const char *);
2795extern Lisp_Object make_string (const char *, EMACS_INT); 2827extern Lisp_Object make_string (const char *, ptrdiff_t);
2796extern Lisp_Object make_unibyte_string (const char *, EMACS_INT); 2828extern Lisp_Object make_unibyte_string (const char *, ptrdiff_t);
2797extern Lisp_Object make_multibyte_string (const char *, EMACS_INT, EMACS_INT); 2829extern Lisp_Object make_multibyte_string (const char *, ptrdiff_t, ptrdiff_t);
2798extern Lisp_Object make_event_array (int, Lisp_Object *); 2830extern Lisp_Object make_event_array (int, Lisp_Object *);
2799extern Lisp_Object make_uninit_string (EMACS_INT); 2831extern Lisp_Object make_uninit_string (EMACS_INT);
2800extern Lisp_Object make_uninit_multibyte_string (EMACS_INT, EMACS_INT); 2832extern Lisp_Object make_uninit_multibyte_string (EMACS_INT, EMACS_INT);
2801extern Lisp_Object make_string_from_bytes (const char *, EMACS_INT, EMACS_INT); 2833extern Lisp_Object make_string_from_bytes (const char *, ptrdiff_t, ptrdiff_t);
2802extern Lisp_Object make_specified_string (const char *, 2834extern Lisp_Object make_specified_string (const char *,
2803 EMACS_INT, EMACS_INT, int); 2835 ptrdiff_t, ptrdiff_t, int);
2804EXFUN (Fpurecopy, 1); 2836EXFUN (Fpurecopy, 1);
2805extern Lisp_Object make_pure_string (const char *, EMACS_INT, EMACS_INT, int); 2837extern Lisp_Object make_pure_string (const char *, ptrdiff_t, ptrdiff_t, int);
2806extern Lisp_Object make_pure_c_string (const char *data); 2838extern Lisp_Object make_pure_c_string (const char *data);
2807extern Lisp_Object pure_cons (Lisp_Object, Lisp_Object); 2839extern Lisp_Object pure_cons (Lisp_Object, Lisp_Object);
2808extern Lisp_Object make_pure_vector (EMACS_INT); 2840extern Lisp_Object make_pure_vector (ptrdiff_t);
2809EXFUN (Fgarbage_collect, 0); 2841EXFUN (Fgarbage_collect, 0);
2810EXFUN (Fmake_byte_code, MANY); 2842EXFUN (Fmake_byte_code, MANY);
2811EXFUN (Fmake_bool_vector, 2); 2843EXFUN (Fmake_bool_vector, 2);
2812extern Lisp_Object Qchar_table_extra_slots; 2844extern Lisp_Object Qchar_table_extra_slots;
2813extern struct Lisp_Vector *allocate_vector (EMACS_INT); 2845extern struct Lisp_Vector *allocate_vector (EMACS_INT);
2814extern struct Lisp_Vector *allocate_pseudovector (int memlen, int lisplen, EMACS_INT tag); 2846extern struct Lisp_Vector *allocate_pseudovector (int memlen, int lisplen, int tag);
2815#define ALLOCATE_PSEUDOVECTOR(typ,field,tag) \ 2847#define ALLOCATE_PSEUDOVECTOR(typ,field,tag) \
2816 ((typ*) \ 2848 ((typ*) \
2817 allocate_pseudovector \ 2849 allocate_pseudovector \
@@ -2825,7 +2857,7 @@ extern int gc_in_progress;
2825extern int abort_on_gc; 2857extern int abort_on_gc;
2826extern Lisp_Object make_float (double); 2858extern Lisp_Object make_float (double);
2827extern void display_malloc_warning (void); 2859extern void display_malloc_warning (void);
2828extern int inhibit_garbage_collection (void); 2860extern ptrdiff_t inhibit_garbage_collection (void);
2829extern Lisp_Object make_save_value (void *, ptrdiff_t); 2861extern Lisp_Object make_save_value (void *, ptrdiff_t);
2830extern void free_marker (Lisp_Object); 2862extern void free_marker (Lisp_Object);
2831extern void free_cons (struct Lisp_Cons *); 2863extern void free_cons (struct Lisp_Cons *);
@@ -2909,7 +2941,7 @@ EXFUN (Fread_event, 3);
2909extern Lisp_Object check_obarray (Lisp_Object); 2941extern Lisp_Object check_obarray (Lisp_Object);
2910extern Lisp_Object intern (const char *); 2942extern Lisp_Object intern (const char *);
2911extern Lisp_Object intern_c_string (const char *); 2943extern Lisp_Object intern_c_string (const char *);
2912extern Lisp_Object oblookup (Lisp_Object, const char *, EMACS_INT, EMACS_INT); 2944extern Lisp_Object oblookup (Lisp_Object, const char *, ptrdiff_t, ptrdiff_t);
2913#define LOADHIST_ATTACH(x) \ 2945#define LOADHIST_ATTACH(x) \
2914 do { \ 2946 do { \
2915 if (initialized) Vcurrent_load_list = Fcons (x, Vcurrent_load_list); \ 2947 if (initialized) Vcurrent_load_list = Fcons (x, Vcurrent_load_list); \
@@ -2985,7 +3017,7 @@ extern Lisp_Object internal_condition_case_2 (Lisp_Object (*) (Lisp_Object, Lisp
2985extern Lisp_Object internal_condition_case_n (Lisp_Object (*) (ptrdiff_t, Lisp_Object *), ptrdiff_t, Lisp_Object *, Lisp_Object, Lisp_Object (*) (Lisp_Object)); 3017extern Lisp_Object internal_condition_case_n (Lisp_Object (*) (ptrdiff_t, Lisp_Object *), ptrdiff_t, Lisp_Object *, Lisp_Object, Lisp_Object (*) (Lisp_Object));
2986extern void specbind (Lisp_Object, Lisp_Object); 3018extern void specbind (Lisp_Object, Lisp_Object);
2987extern void record_unwind_protect (Lisp_Object (*) (Lisp_Object), Lisp_Object); 3019extern void record_unwind_protect (Lisp_Object (*) (Lisp_Object), Lisp_Object);
2988extern Lisp_Object unbind_to (int, Lisp_Object); 3020extern Lisp_Object unbind_to (ptrdiff_t, Lisp_Object);
2989extern void error (const char *, ...) NO_RETURN ATTRIBUTE_FORMAT_PRINTF (1, 2); 3021extern void error (const char *, ...) NO_RETURN ATTRIBUTE_FORMAT_PRINTF (1, 2);
2990extern void verror (const char *, va_list) 3022extern void verror (const char *, va_list)
2991 NO_RETURN ATTRIBUTE_FORMAT_PRINTF (1, 0); 3023 NO_RETURN ATTRIBUTE_FORMAT_PRINTF (1, 0);
@@ -3037,10 +3069,9 @@ EXFUN (Fuser_login_name, 1);
3037EXFUN (Fsystem_name, 0); 3069EXFUN (Fsystem_name, 0);
3038EXFUN (Fcurrent_time, 0); 3070EXFUN (Fcurrent_time, 0);
3039EXFUN (Fget_internal_run_time, 0); 3071EXFUN (Fget_internal_run_time, 0);
3040extern EMACS_INT clip_to_bounds (EMACS_INT, EMACS_INT, EMACS_INT); 3072extern Lisp_Object make_buffer_string (ptrdiff_t, ptrdiff_t, int);
3041extern Lisp_Object make_buffer_string (EMACS_INT, EMACS_INT, int); 3073extern Lisp_Object make_buffer_string_both (ptrdiff_t, ptrdiff_t, ptrdiff_t,
3042extern Lisp_Object make_buffer_string_both (EMACS_INT, EMACS_INT, EMACS_INT, 3074 ptrdiff_t, int);
3043 EMACS_INT, int);
3044extern void init_editfns (void); 3075extern void init_editfns (void);
3045const char *get_system_name (void); 3076const char *get_system_name (void);
3046extern void syms_of_editfns (void); 3077extern void syms_of_editfns (void);
@@ -3054,12 +3085,12 @@ extern void nsberror (Lisp_Object) NO_RETURN;
3054EXFUN (Fset_buffer_multibyte, 1); 3085EXFUN (Fset_buffer_multibyte, 1);
3055EXFUN (Foverlay_start, 1); 3086EXFUN (Foverlay_start, 1);
3056EXFUN (Foverlay_end, 1); 3087EXFUN (Foverlay_end, 1);
3057extern void adjust_overlays_for_insert (EMACS_INT, EMACS_INT); 3088extern void adjust_overlays_for_insert (ptrdiff_t, ptrdiff_t);
3058extern void adjust_overlays_for_delete (EMACS_INT, EMACS_INT); 3089extern void adjust_overlays_for_delete (ptrdiff_t, ptrdiff_t);
3059extern void fix_start_end_in_overlays (EMACS_INT, EMACS_INT); 3090extern void fix_start_end_in_overlays (ptrdiff_t, ptrdiff_t);
3060extern void report_overlay_modification (Lisp_Object, Lisp_Object, int, 3091extern void report_overlay_modification (Lisp_Object, Lisp_Object, int,
3061 Lisp_Object, Lisp_Object, Lisp_Object); 3092 Lisp_Object, Lisp_Object, Lisp_Object);
3062extern int overlay_touches_p (EMACS_INT); 3093extern int overlay_touches_p (ptrdiff_t);
3063extern Lisp_Object Vbuffer_alist; 3094extern Lisp_Object Vbuffer_alist;
3064EXFUN (Fget_buffer, 1); 3095EXFUN (Fget_buffer, 1);
3065EXFUN (Fget_buffer_create, 1); 3096EXFUN (Fget_buffer_create, 1);
@@ -3093,17 +3124,17 @@ EXFUN (Fmarker_position, 1);
3093EXFUN (Fmarker_buffer, 1); 3124EXFUN (Fmarker_buffer, 1);
3094EXFUN (Fcopy_marker, 2); 3125EXFUN (Fcopy_marker, 2);
3095EXFUN (Fset_marker, 3); 3126EXFUN (Fset_marker, 3);
3096extern EMACS_INT marker_position (Lisp_Object); 3127extern ptrdiff_t marker_position (Lisp_Object);
3097extern EMACS_INT marker_byte_position (Lisp_Object); 3128extern ptrdiff_t marker_byte_position (Lisp_Object);
3098extern void clear_charpos_cache (struct buffer *); 3129extern void clear_charpos_cache (struct buffer *);
3099extern EMACS_INT charpos_to_bytepos (EMACS_INT); 3130extern ptrdiff_t charpos_to_bytepos (ptrdiff_t);
3100extern EMACS_INT buf_charpos_to_bytepos (struct buffer *, EMACS_INT); 3131extern ptrdiff_t buf_charpos_to_bytepos (struct buffer *, ptrdiff_t);
3101extern EMACS_INT buf_bytepos_to_charpos (struct buffer *, EMACS_INT); 3132extern ptrdiff_t buf_bytepos_to_charpos (struct buffer *, ptrdiff_t);
3102extern void unchain_marker (struct Lisp_Marker *marker); 3133extern void unchain_marker (struct Lisp_Marker *marker);
3103extern Lisp_Object set_marker_restricted (Lisp_Object, Lisp_Object, Lisp_Object); 3134extern Lisp_Object set_marker_restricted (Lisp_Object, Lisp_Object, Lisp_Object);
3104extern Lisp_Object set_marker_both (Lisp_Object, Lisp_Object, EMACS_INT, EMACS_INT); 3135extern Lisp_Object set_marker_both (Lisp_Object, Lisp_Object, ptrdiff_t, ptrdiff_t);
3105extern Lisp_Object set_marker_restricted_both (Lisp_Object, Lisp_Object, 3136extern Lisp_Object set_marker_restricted_both (Lisp_Object, Lisp_Object,
3106 EMACS_INT, EMACS_INT); 3137 ptrdiff_t, ptrdiff_t);
3107extern void syms_of_marker (void); 3138extern void syms_of_marker (void);
3108 3139
3109/* Defined in fileio.c */ 3140/* Defined in fileio.c */
@@ -3156,18 +3187,18 @@ struct re_registers;
3156extern struct re_pattern_buffer *compile_pattern (Lisp_Object, 3187extern struct re_pattern_buffer *compile_pattern (Lisp_Object,
3157 struct re_registers *, 3188 struct re_registers *,
3158 Lisp_Object, int, int); 3189 Lisp_Object, int, int);
3159extern EMACS_INT fast_string_match (Lisp_Object, Lisp_Object); 3190extern ptrdiff_t fast_string_match (Lisp_Object, Lisp_Object);
3160extern EMACS_INT fast_c_string_match_ignore_case (Lisp_Object, const char *); 3191extern ptrdiff_t fast_c_string_match_ignore_case (Lisp_Object, const char *);
3161extern EMACS_INT fast_string_match_ignore_case (Lisp_Object, Lisp_Object); 3192extern ptrdiff_t fast_string_match_ignore_case (Lisp_Object, Lisp_Object);
3162extern EMACS_INT fast_looking_at (Lisp_Object, EMACS_INT, EMACS_INT, 3193extern ptrdiff_t fast_looking_at (Lisp_Object, ptrdiff_t, ptrdiff_t,
3163 EMACS_INT, EMACS_INT, Lisp_Object); 3194 ptrdiff_t, ptrdiff_t, Lisp_Object);
3164extern EMACS_INT scan_buffer (int, EMACS_INT, EMACS_INT, EMACS_INT, 3195extern ptrdiff_t scan_buffer (int, ptrdiff_t, ptrdiff_t, ptrdiff_t,
3165 EMACS_INT *, int); 3196 ptrdiff_t *, int);
3166extern EMACS_INT scan_newline (EMACS_INT, EMACS_INT, EMACS_INT, EMACS_INT, 3197extern EMACS_INT scan_newline (ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t,
3167 EMACS_INT, int); 3198 EMACS_INT, int);
3168extern EMACS_INT find_next_newline (EMACS_INT, int); 3199extern ptrdiff_t find_next_newline (ptrdiff_t, int);
3169extern EMACS_INT find_next_newline_no_quit (EMACS_INT, EMACS_INT); 3200extern ptrdiff_t find_next_newline_no_quit (ptrdiff_t, ptrdiff_t);
3170extern EMACS_INT find_before_next_newline (EMACS_INT, EMACS_INT, EMACS_INT); 3201extern ptrdiff_t find_before_next_newline (ptrdiff_t, ptrdiff_t, ptrdiff_t);
3171extern void syms_of_search (void); 3202extern void syms_of_search (void);
3172extern void clear_regexp_cache (void); 3203extern void clear_regexp_cache (void);
3173 3204
@@ -3253,9 +3284,9 @@ extern void keys_of_keyboard (void);
3253EXFUN (Fvertical_motion, 2); 3284EXFUN (Fvertical_motion, 2);
3254EXFUN (Findent_to, 2); 3285EXFUN (Findent_to, 2);
3255EXFUN (Fmove_to_column, 2); 3286EXFUN (Fmove_to_column, 2);
3256extern EMACS_INT current_column (void); 3287extern ptrdiff_t current_column (void);
3257extern void invalidate_current_column (void); 3288extern void invalidate_current_column (void);
3258extern int indented_beyond_p (EMACS_INT, EMACS_INT, EMACS_INT); 3289extern int indented_beyond_p (ptrdiff_t, ptrdiff_t, EMACS_INT);
3259extern void syms_of_indent (void); 3290extern void syms_of_indent (void);
3260 3291
3261/* Defined in frame.c */ 3292/* Defined in frame.c */
@@ -3386,12 +3417,12 @@ extern Lisp_Object Qapply;
3386extern Lisp_Object Qinhibit_read_only; 3417extern Lisp_Object Qinhibit_read_only;
3387EXFUN (Fundo_boundary, 0); 3418EXFUN (Fundo_boundary, 0);
3388extern void truncate_undo_list (struct buffer *); 3419extern void truncate_undo_list (struct buffer *);
3389extern void record_marker_adjustment (Lisp_Object, EMACS_INT); 3420extern void record_marker_adjustment (Lisp_Object, ptrdiff_t);
3390extern void record_insert (EMACS_INT, EMACS_INT); 3421extern void record_insert (ptrdiff_t, ptrdiff_t);
3391extern void record_delete (EMACS_INT, Lisp_Object); 3422extern void record_delete (ptrdiff_t, Lisp_Object);
3392extern void record_first_change (void); 3423extern void record_first_change (void);
3393extern void record_change (EMACS_INT, EMACS_INT); 3424extern void record_change (ptrdiff_t, ptrdiff_t);
3394extern void record_property_change (EMACS_INT, EMACS_INT, 3425extern void record_property_change (ptrdiff_t, ptrdiff_t,
3395 Lisp_Object, Lisp_Object, 3426 Lisp_Object, Lisp_Object,
3396 Lisp_Object); 3427 Lisp_Object);
3397extern void syms_of_undo (void); 3428extern void syms_of_undo (void);
@@ -3437,8 +3468,8 @@ extern void init_sys_modes (struct tty_display_info *);
3437extern void reset_sys_modes (struct tty_display_info *); 3468extern void reset_sys_modes (struct tty_display_info *);
3438extern void init_all_sys_modes (void); 3469extern void init_all_sys_modes (void);
3439extern void reset_all_sys_modes (void); 3470extern void reset_all_sys_modes (void);
3440extern void wait_for_termination (int); 3471extern void wait_for_termination (pid_t);
3441extern void interruptible_wait_for_termination (int); 3472extern void interruptible_wait_for_termination (pid_t);
3442extern void flush_pending_output (int); 3473extern void flush_pending_output (int);
3443extern void child_setup_tty (int); 3474extern void child_setup_tty (int);
3444extern void setup_pty (int); 3475extern void setup_pty (int);
@@ -3447,8 +3478,8 @@ extern EMACS_INT get_random (void);
3447extern void seed_random (long); 3478extern void seed_random (long);
3448extern int emacs_open (const char *, int, int); 3479extern int emacs_open (const char *, int, int);
3449extern int emacs_close (int); 3480extern int emacs_close (int);
3450extern EMACS_INT emacs_read (int, char *, EMACS_INT); 3481extern ptrdiff_t emacs_read (int, char *, ptrdiff_t);
3451extern EMACS_INT emacs_write (int, const char *, EMACS_INT); 3482extern ptrdiff_t emacs_write (int, const char *, ptrdiff_t);
3452enum { READLINK_BUFSIZE = 1024 }; 3483enum { READLINK_BUFSIZE = 1024 };
3453extern char *emacs_readlink (const char *, char [READLINK_BUFSIZE]); 3484extern char *emacs_readlink (const char *, char [READLINK_BUFSIZE]);
3454 3485
@@ -3674,7 +3705,7 @@ extern void init_system_name (void);
3674extern Lisp_Object safe_alloca_unwind (Lisp_Object); 3705extern Lisp_Object safe_alloca_unwind (Lisp_Object);
3675 3706
3676#define USE_SAFE_ALLOCA \ 3707#define USE_SAFE_ALLOCA \
3677 int sa_count = (int) SPECPDL_INDEX (), sa_must_free = 0 3708 ptrdiff_t sa_count = SPECPDL_INDEX (); int sa_must_free = 0
3678 3709
3679/* SAFE_ALLOCA allocates a simple buffer. */ 3710/* SAFE_ALLOCA allocates a simple buffer. */
3680 3711