Copyright (C) 1985, 1986, 1987, 1989, 1993, 1994, 1995, 1996, 1997,
1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
- 2009, 2010 Free Software Foundation, Inc.
+ 2009, 2010, 2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
#include <pwd.h>
#endif
-#ifdef HAVE_UNISTD_H
#include <unistd.h>
-#endif
#ifdef HAVE_SYS_UTSNAME_H
#include <sys/utsname.h>
static int tm_diff (struct tm *, struct tm *);
static void find_field (Lisp_Object, Lisp_Object, Lisp_Object,
EMACS_INT *, Lisp_Object, EMACS_INT *);
-static void update_buffer_properties (int, int);
+static void update_buffer_properties (EMACS_INT, EMACS_INT);
static Lisp_Object region_limit (int);
static size_t emacs_memftimeu (char *, size_t, const char *,
size_t, const struct tm *, int);
int, int, Lisp_Object *);
static Lisp_Object subst_char_in_region_unwind (Lisp_Object);
static Lisp_Object subst_char_in_region_unwind_1 (Lisp_Object);
-static void transpose_markers (int, int, int, int, int, int, int, int);
+static void transpose_markers (EMACS_INT, EMACS_INT, EMACS_INT, EMACS_INT,
+ EMACS_INT, EMACS_INT, EMACS_INT, EMACS_INT);
-Lisp_Object Vbuffer_access_fontify_functions;
Lisp_Object Qbuffer_access_fontify_functions;
-Lisp_Object Vbuffer_access_fontified_property;
-
Lisp_Object Fuser_full_name (Lisp_Object);
-/* Non-nil means don't stop at field boundary in text motion commands. */
-
-Lisp_Object Vinhibit_field_text_motion;
-
-/* Some static data, and a function to initialize it for each run */
-
-Lisp_Object Vsystem_name;
-Lisp_Object Vuser_real_login_name; /* login name of current user ID */
-Lisp_Object Vuser_full_name; /* full name of current user */
-Lisp_Object Vuser_login_name; /* user name from LOGNAME or USER */
-Lisp_Object Voperating_system_release; /* Operating System Release */
-
/* Symbol for the text property used to mark fields. */
Lisp_Object Qfield;
}
DEFUN ("byte-to-string", Fbyte_to_string, Sbyte_to_string, 1, 1, 0,
- doc: /* Convert arg BYTE to a string containing that byte. */)
+ doc: /* Convert arg BYTE to a unibyte string containing that byte. */)
(Lisp_Object byte)
{
unsigned char b;
CHECK_NUMBER (byte);
+ if (XINT (byte) < 0 || XINT (byte) > 255)
+ error ("Invalid byte");
b = XINT (byte);
return make_string_from_bytes (&b, 1, 1);
}
}
\f
static Lisp_Object
-buildmark (int charpos, int bytepos)
+buildmark (EMACS_INT charpos, EMACS_INT bytepos)
{
register Lisp_Object mark;
mark = Fmake_marker ();
return buildmark (PT, PT_BYTE);
}
-int
-clip_to_bounds (int lower, int num, int upper)
+EMACS_INT
+clip_to_bounds (EMACS_INT lower, EMACS_INT num, EMACS_INT upper)
{
if (num < lower)
return lower;
The return value is POSITION. */)
(register Lisp_Object position)
{
- int pos;
+ EMACS_INT pos;
if (MARKERP (position)
&& current_buffer == XMARKER (position)->buffer)
of length LEN. */
static int
-overlays_around (int pos, Lisp_Object *vec, int len)
+overlays_around (EMACS_INT pos, Lisp_Object *vec, int len)
{
Lisp_Object overlay, start, end;
struct Lisp_Overlay *tail;
- int startpos, endpos;
+ EMACS_INT startpos, endpos;
int idx = 0;
for (tail = current_buffer->overlays_before; tail; tail = tail->next)
return Fget_text_property (position, prop, object);
else
{
- int posn = XINT (position);
+ EMACS_INT posn = XINT (position);
int noverlays;
Lisp_Object *overlay_vec, tem;
struct buffer *obuf = current_buffer;
(Lisp_Object new_pos, Lisp_Object old_pos, Lisp_Object escape_from_edge, Lisp_Object only_in_line, Lisp_Object inhibit_capture_property)
{
/* If non-zero, then the original point, before re-positioning. */
- int orig_point = 0;
+ EMACS_INT orig_point = 0;
int fwd;
Lisp_Object prev_old, prev_new;
This function does not move point. */)
(Lisp_Object n)
{
- int orig, orig_byte, end;
+ EMACS_INT orig, orig_byte, end;
int count = SPECPDL_INDEX ();
specbind (Qinhibit_point_motion_hooks, Qt);
This function does not move point. */)
(Lisp_Object n)
{
- int end_pos;
- int orig = PT;
+ EMACS_INT end_pos;
+ EMACS_INT orig = PT;
if (NILP (n))
XSETFASTINT (n, 1);
XSETFASTINT (temp, 0);
else if (!NILP (current_buffer->enable_multibyte_characters))
{
- int pos = PT_BYTE;
+ EMACS_INT pos = PT_BYTE;
DEC_POS (pos);
XSETFASTINT (temp, FETCH_CHAR (pos));
}
If POS is out of range, the value is nil. */)
(Lisp_Object pos)
{
- register int pos_byte;
+ register EMACS_INT pos_byte;
if (NILP (pos))
{
(Lisp_Object pos)
{
register Lisp_Object val;
- register int pos_byte;
+ register EMACS_INT pos_byte;
if (NILP (pos))
{
(Lisp_Object character, Lisp_Object count, Lisp_Object inherit)
{
register unsigned char *string;
- register int strlen;
- register int i, n;
+ register EMACS_INT strlen;
+ register int i;
+ register EMACS_INT n;
int len;
unsigned char str[MAX_MULTIBYTE_LENGTH];
len = CHAR_STRING (XFASTINT (character), str);
else
str[0] = XFASTINT (character), len = 1;
+ if (MOST_POSITIVE_FIXNUM / len < XINT (count))
+ error ("Maximum buffer size would be exceeded");
n = XINT (count) * len;
if (n <= 0)
return Qnil;
in the current buffer, if necessary. */
static void
-update_buffer_properties (int start, int end)
+update_buffer_properties (EMACS_INT start, EMACS_INT end)
{
/* If this buffer has some access functions,
call them, specifying the range of the buffer being accessed. */
They default to the values of (point-min) and (point-max) in BUFFER. */)
(Lisp_Object buffer, Lisp_Object start, Lisp_Object end)
{
- register int b, e, temp;
+ register EMACS_INT b, e, temp;
register struct buffer *bp, *obuf;
Lisp_Object buf;
determines whether case is significant or ignored. */)
(Lisp_Object buffer1, Lisp_Object start1, Lisp_Object end1, Lisp_Object buffer2, Lisp_Object start2, Lisp_Object end2)
{
- register int begp1, endp1, begp2, endp2, temp;
+ register EMACS_INT begp1, endp1, begp2, endp2, temp;
register struct buffer *bp1, *bp2;
register Lisp_Object trt
= (!NILP (current_buffer->case_fold_search)
? current_buffer->case_canon_table : Qnil);
- int chars = 0;
- int i1, i2, i1_byte, i2_byte;
+ EMACS_INT chars = 0;
+ EMACS_INT i1, i2, i1_byte, i2_byte;
/* Find the first buffer and its substring. */
if 0 we haven't found it yet.
if < 0 we've found it and we've run the before-change-function.
if > 0 we've actually performed it and the value is its position. */
- int changed = 0;
+ EMACS_INT changed = 0;
unsigned char fromstr[MAX_MULTIBYTE_LENGTH], tostr[MAX_MULTIBYTE_LENGTH];
unsigned char *p;
int count = SPECPDL_INDEX ();
#define COMBINING_AFTER 2
#define COMBINING_BOTH (COMBINING_BEFORE | COMBINING_AFTER)
int maybe_byte_combining = COMBINING_NO;
- int last_changed = 0;
+ EMACS_INT last_changed = 0;
int multibyte_p = !NILP (current_buffer->enable_multibyte_characters);
restart:
register unsigned char *tt; /* Trans table. */
register int nc; /* New character. */
int cnt; /* Number of changes made. */
- int size; /* Size of translate table. */
+ EMACS_INT size; /* Size of translate table. */
EMACS_INT pos, pos_byte, end_pos;
int multibyte = !NILP (current_buffer->enable_multibyte_characters);
int string_multibyte;
}
else
{
- int c;
+ EMACS_INT c;
nc = oc;
val = CHAR_TABLE_REF (table, oc);
/* The restriction has changed from the saved one, so restore
the saved restriction. */
{
- int pt = BUF_PT (buf);
+ EMACS_INT pt = BUF_PT (buf);
SET_BUF_BEGV_BOTH (buf, beg->charpos, beg->bytepos);
SET_BUF_ZV_BOTH (buf, end->charpos, end->bytepos);
(int nargs, register Lisp_Object *args)
{
register int n; /* The number of the next arg to substitute */
- register int total; /* An estimate of the final length */
+ register EMACS_INT total; /* An estimate of the final length */
char *buf, *p;
register unsigned char *format, *end, *format_start;
int nchars;
while (format != end)
if (*format++ == '%')
{
- int thissize = 0;
+ EMACS_INT thissize = 0;
EMACS_INT actual_width = 0;
unsigned char *this_format_start = format - 1;
int field_width = 0;
if (CONSP (props))
{
- int bytepos = 0, position = 0, translated = 0, argn = 1;
+ EMACS_INT bytepos = 0, position = 0, translated = 0;
+ int argn = 1;
Lisp_Object list;
/* Adjust the bounds of each text property
for (list = props; CONSP (list); list = XCDR (list))
{
Lisp_Object item;
- int pos;
+ EMACS_INT pos;
item = XCAR (list);
It's the caller's job to ensure that START1 <= END1 <= START2 <= END2. */
static void
-transpose_markers (int start1, int end1, int start2, int end2,
- int start1_byte, int end1_byte,
- int start2_byte, int end2_byte)
+transpose_markers (EMACS_INT start1, EMACS_INT end1,
+ EMACS_INT start2, EMACS_INT end2,
+ EMACS_INT start1_byte, EMACS_INT end1_byte,
+ EMACS_INT start2_byte, EMACS_INT end2_byte)
{
- register int amt1, amt1_byte, amt2, amt2_byte, diff, diff_byte, mpos;
+ register EMACS_INT amt1, amt1_byte, amt2, amt2_byte, diff, diff_byte, mpos;
register struct Lisp_Marker *marker;
/* Update point as if it were a marker. */
/* Swap the regions if they're reversed. */
if (start2 < end1)
{
- register int glumph = start1;
+ register EMACS_INT glumph = start1;
start1 = start2;
start2 = glumph;
glumph = end1;
= intern_c_string ("buffer-access-fontify-functions");
staticpro (&Qbuffer_access_fontify_functions);
- DEFVAR_LISP ("inhibit-field-text-motion", &Vinhibit_field_text_motion,
+ DEFVAR_LISP ("inhibit-field-text-motion", Vinhibit_field_text_motion,
doc: /* Non-nil means text motion commands don't notice fields. */);
Vinhibit_field_text_motion = Qnil;
DEFVAR_LISP ("buffer-access-fontify-functions",
- &Vbuffer_access_fontify_functions,
+ Vbuffer_access_fontify_functions,
doc: /* List of functions called by `buffer-substring' to fontify if necessary.
Each function is called with two arguments which specify the range
of the buffer being accessed. */);
}
DEFVAR_LISP ("buffer-access-fontified-property",
- &Vbuffer_access_fontified_property,
+ Vbuffer_access_fontified_property,
doc: /* Property which (if non-nil) indicates text has been fontified.
`buffer-substring' need not call the `buffer-access-fontify-functions'
functions if all the text being accessed has this property. */);
Vbuffer_access_fontified_property = Qnil;
- DEFVAR_LISP ("system-name", &Vsystem_name,
+ DEFVAR_LISP ("system-name", Vsystem_name,
doc: /* The host name of the machine Emacs is running on. */);
- DEFVAR_LISP ("user-full-name", &Vuser_full_name,
+ DEFVAR_LISP ("user-full-name", Vuser_full_name,
doc: /* The full name of the user logged in. */);
- DEFVAR_LISP ("user-login-name", &Vuser_login_name,
+ DEFVAR_LISP ("user-login-name", Vuser_login_name,
doc: /* The user's name, taken from environment variables if possible. */);
- DEFVAR_LISP ("user-real-login-name", &Vuser_real_login_name,
+ DEFVAR_LISP ("user-real-login-name", Vuser_real_login_name,
doc: /* The user's name, based upon the real uid only. */);
- DEFVAR_LISP ("operating-system-release", &Voperating_system_release,
+ DEFVAR_LISP ("operating-system-release", Voperating_system_release,
doc: /* The release of the operating system Emacs is running on. */);
defsubr (&Spropertize);
defsubr (&Stranspose_regions);
}
-/* arch-tag: fc3827d8-6f60-4067-b11e-c3218031b018
- (do not change this comment) */