{
mkdir(path, 0700); /* ignore retval -- checked next anyway. */
}
- if (lstat(path, &st) == 0 && st.st_uid == myuid && S_ISDIR(st.st_mode))
+ if (lstat(path, &st) == 0 && st.st_uid == (uid_t) myuid &&
+ S_ISDIR(st.st_mode))
{
tmpdir = path;
}
else
{
- strcpy(path, getenv("HOME")); strncat(path, "/tmp/", _POSIX_PATH_MAX);
+ path[5 + _POSIX_PATH_MAX] = '\0';
+ strncpy(path, getenv("HOME"), 5 + _POSIX_PATH_MAX);
+ strncat(path, "/tmp/", 5 + _POSIX_PATH_MAX);
if (stat(path, &st) < 0 && errno == ENOENT)
{
int fd;
- char warnpath[1+_POSIX_PATH_MAX];
+ char warnpath[6+_POSIX_PATH_MAX];
mkdir(path, 0700); /* ignore retvals */
- strcpy(warnpath, path);
- strncat(warnpath, ".created_by_xemacs", _POSIX_PATH_MAX);
+ warnpath[_POSIX_PATH_MAX] = '\0';
+ strncpy(warnpath, path, 5 + _POSIX_PATH_MAX);
+ strncat(warnpath, ".created_by_xemacs", 5 + _POSIX_PATH_MAX);
if ((fd = open(warnpath, O_WRONLY|O_CREAT, 0644)) > 0)
{
write(fd, "XEmacs created this directory because /tmp/<yourname> was unavailable -- \nPlease check !\n", 89);
#endif
tem = ((!NILP (user) && !pw)
? Qnil
- : make_ext_string ((Extbyte *) p, (q ? q - p : strlen (p)),
+ : make_ext_string ((Extbyte *) p, (q ? q - p : (int) strlen (p)),
Qnative));
#ifdef AMPERSAND_FULL_NAME
{
time_t value;
size_t size;
+ struct tm * tm;
CHECK_STRING (format_string);
- if (! lisp_to_time (time_, &value))
+ if (! lisp_to_time (time_, &value) || ! (tm = localtime (&value)))
error ("Invalid time specification");
/* This is probably enough. */
*buf = 1;
if (emacs_strftime (buf, size,
(const char *) XSTRING_DATA (format_string),
- localtime (&value))
+ tm)
|| !*buf)
return build_ext_string (buf, Qbinary);
/* If buffer was too small, make it bigger. */
struct tm *decoded_time;
Lisp_Object list_args[9];
- if (! lisp_to_time (specified_time, &time_spec))
+ if (! lisp_to_time (specified_time, &time_spec)
+ || ! (decoded_time = localtime (&time_spec)))
error ("Invalid time specification");
- decoded_time = localtime (&time_spec);
list_args[0] = make_int (decoded_time->tm_sec);
list_args[1] = make_int (decoded_time->tm_min);
list_args[2] = make_int (decoded_time->tm_hour);
static void set_time_zone_rule (char *tzstring);
+/* from GNU Emacs 21, per Simon Josefsson, modified by stephen
+ The slight inefficiency is justified since negative times are weird. */
+Lisp_Object
+make_time (time_t tval)
+{
+ return list2 (make_int (tval < 0 ? tval / 0x10000 : tval >> 16),
+ make_int (tval & 0xFFFF));
+}
+
DEFUN ("encode-time", Fencode_time, 6, MANY, 0, /*
Convert SECOND, MINUTE, HOUR, DAY, MONTH, YEAR and ZONE to internal time.
This is the reverse operation of `decode-time', which see.
if (the_time == (time_t) -1)
error ("Specified time is not representable");
- return wasteful_word_to_lisp (the_time);
+ return make_time (the_time);
}
DEFUN ("current-time-string", Fcurrent_time_string, 0, 1, 0, /*
arg = wrong_type_argument (Qchar_or_string_p, arg);
goto retry;
}
- zmacs_region_stays = 0;
UNGCPRO;
}
goto retry;
}
}
- zmacs_region_stays = 0;
return Qnil;
}
struct buffer *b = decode_buffer (buffer, 1);
CHECK_STRING (string);
buffer_insert_lisp_string (b, string);
- zmacs_region_stays = 0;
return Qnil;
}
buffer_insert_raw_string (b, string, n);
#endif
- zmacs_region_stays = 0;
return Qnil;
}
get_buffer_range_char (buf, start, end, &bp_start, &bp_end, 0);
buffer_delete_range (buf, bp_start, bp_end, 0);
- zmacs_region_stays = 0;
return Qnil;
}
\f
{
struct buffer *b = decode_buffer (buffer, 1);
widen_buffer (b, 0);
- zmacs_region_stays = 0;
return Qnil;
}
/* Changing the buffer bounds invalidates any recorded current column. */
invalidate_current_column ();
narrow_line_number_cache (buf);
- zmacs_region_stays = 0;
return Qnil;
}