This commit was generated by cvs2svn to compensate for changes in r1073,
[chise/xemacs-chise.git.1] / src / editfns.c
index 339b431..30b173d 100644 (file)
@@ -45,6 +45,7 @@ Boston, MA 02111-1307, USA.  */
 #include "systime.h"
 #include "sysdep.h"
 #include "syspwd.h"
+#include "sysfile.h"                   /* for getcwd */
 
 /* Some static data, and a function to initialize it for each run */
 
@@ -65,8 +66,6 @@ Lisp_Object Vuser_login_name; /* user name from LOGNAME or USER.  */
 Lisp_Object Vuser_full_name;
 EXFUN (Fuser_full_name, 1);
 
-char *get_system_name (void);
-
 Lisp_Object Qformat;
 
 Lisp_Object Qpoint, Qmark, Qregion_beginning, Qregion_end;
@@ -370,7 +369,7 @@ save_excursion_restore (Lisp_Object info)
         and cleaner never to alter the window/buffer connections.  */
       /* I'm certain some code somewhere depends on this behavior. --jwz */
       /* Even if it did, it certainly doesn't matter anymore, because
-         this has been the behaviour for countless XEmacs releases
+         this has been the behavior for countless XEmacs releases
          now.  --hniksic */
       if (visible
          && (current_buffer != XBUFFER (XWINDOW (selected_window)->buffer)))
@@ -549,7 +548,6 @@ If BUFFER is nil, the current buffer is assumed.
        (buffer))
 {
   struct buffer *b = decode_buffer (buffer, 1);
-
   return beginning_of_line_p (b, BUF_PT (b)) ? Qt : Qnil;
 }
 
@@ -639,17 +637,17 @@ ignored and this function returns the login name for that UID, or nil.
        (uid))
 {
   char *returned_name;
-  int local_uid;
+  uid_t local_uid;
 
   if (!NILP (uid))
     {
       CHECK_INT (uid);
-      local_uid = XINT(uid);
-      returned_name = user_login_name(&local_uid);
+      local_uid = XINT (uid);
+      returned_name = user_login_name (&local_uid);
     }
   else
     {
-      returned_name = user_login_name(NULL);
+      returned_name = user_login_name (NULL);
     }
   /* #### - I believe this should return nil instead of "unknown" when pw==0
      pw=0 is indicated by a null return from user_login_name
@@ -665,14 +663,12 @@ ignored and this function returns the login name for that UID, or nil.
    corresponds to a nil argument to Fuser_login_name.
 */
 char*
-user_login_name (int *uid)
+user_login_name (uid_t *uid)
 {
-  struct passwd *pw = NULL;
-  
   /* uid == NULL to return name of this user */
   if (uid != NULL)
     {
-      pw = getpwuid (*uid);
+      struct passwd *pw = getpwuid (*uid);
       return pw ? pw->pw_name : NULL;
     }
   else
@@ -693,7 +689,7 @@ user_login_name (int *uid)
        return (user_name);
       else
        {
-         pw = getpwuid (geteuid ());
+         struct passwd *pw = getpwuid (geteuid ());
 #ifdef __CYGWIN32__
          /* Since the Cygwin environment may not have an /etc/passwd,
             return "unknown" instead of the null if the username
@@ -758,7 +754,7 @@ value of `user-full-name' is returned.
   Lisp_Object user_name;
   struct passwd *pw = NULL;
   Lisp_Object tem;
-  char *p, *q;
+  const char *p, *q;
 
   if (NILP (user) && STRINGP (Vuser_full_name))
     return Vuser_full_name;
@@ -822,6 +818,7 @@ uncache_home_directory (void)
                                   of a few bytes */
 }
 
+/* Returns the home directory, in external format */
 char *
 get_home_directory (void)
 {
@@ -833,7 +830,7 @@ get_home_directory (void)
        {
 #if defined(WINDOWSNT) && !defined(__CYGWIN32__)
          char  *homedrive, *homepath;
+
          if ((homedrive = getenv("HOMEDRIVE")) != NULL &&
              (homepath = getenv("HOMEPATH")) != NULL)
            {
@@ -879,16 +876,16 @@ get_home_directory (void)
        }
       if (initialized && output_home_warning)
        {
-         warn_when_safe(Quser_files_and_directories, Qwarning, "\n"
+         warn_when_safe (Quser_files_and_directories, Qwarning, "\n"
 "      XEmacs was unable to determine a good value for the user's $HOME\n"
 "      directory, and will be using the value:\n"
 "              %s\n"
 "      This is probably incorrect.",
-                        cached_home_directory
-                        );
+                         cached_home_directory
+                         );
        }
     }
-  return (cached_home_directory);
+  return cached_home_directory;
 }
 
 DEFUN ("user-home-directory", Fuser_home_directory, 0, 0, 0, /*
@@ -896,18 +893,12 @@ Return the user's home directory, as a string.
 */
        ())
 {
-  Lisp_Object directory;
-  char *path;
+  char *path = get_home_directory ();
 
-  directory = Qnil;
-  path = get_home_directory ();
-  if (path != NULL)
-    {
-      directory =
-       Fexpand_file_name (Fsubstitute_in_file_name (build_string (path)),
-                          Qnil);
-    }
-  return (directory);
+  return path == NULL ? Qnil :
+    Fexpand_file_name (Fsubstitute_in_file_name
+                      (build_ext_string (path, FORMAT_FILENAME)),
+                      Qnil);
 }
 
 DEFUN ("system-name", Fsystem_name, 0, 0, 0, /*
@@ -918,14 +909,6 @@ Return the name of the machine you are running on, as a string.
     return Fcopy_sequence (Vsystem_name);
 }
 
-/* For the benefit of callers who don't want to include lisp.h.
-   Caller must free! */
-char *
-get_system_name (void)
-{
-  return xstrdup ((char *) XSTRING_DATA (Vsystem_name));
-}
-
 DEFUN ("emacs-pid", Femacs_pid, 0, 0, 0, /*
 Return the process ID of Emacs, as an integer.
 */
@@ -1046,6 +1029,8 @@ FORMAT-STRING may contain %-sequences to substitute parts of the time.
 %p is replaced by AM or PM, as appropriate.
 %r is a synonym for "%I:%M:%S %p".
 %R is a synonym for "%H:%M".
+%s is replaced by the time in seconds since 00:00:00, Jan 1, 1970 (a
+      nonstandard extension)
 %S is replaced by the second (00-60).
 %t is a synonym for "\\t".
 %T is a synonym for "%H:%M:%S".
@@ -1063,14 +1048,14 @@ The number of options reflects the `strftime' function.
 BUG: If the charset used by the current locale is not ISO 8859-1, the
 characters appearing in the day and month names may be incorrect.
 */
-       (format_string, _time))
+       (format_string, time_))
 {
   time_t value;
   size_t size;
 
   CHECK_STRING (format_string);
 
-  if (! lisp_to_time (_time, &value))
+  if (! lisp_to_time (time_, &value))
     error ("Invalid time specification");
 
   /* This is probably enough.  */
@@ -1115,13 +1100,13 @@ ZONE is an integer indicating the number of seconds east of Greenwich.
     error ("Invalid time specification");
 
   decoded_time = localtime (&time_spec);
-  XSETINT (list_args[0], decoded_time->tm_sec);
-  XSETINT (list_args[1], decoded_time->tm_min);
-  XSETINT (list_args[2], decoded_time->tm_hour);
-  XSETINT (list_args[3], decoded_time->tm_mday);
-  XSETINT (list_args[4], decoded_time->tm_mon + 1);
-  XSETINT (list_args[5], decoded_time->tm_year + 1900);
-  XSETINT (list_args[6], decoded_time->tm_wday);
+  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);
+  list_args[3] = make_int (decoded_time->tm_mday);
+  list_args[4] = make_int (decoded_time->tm_mon + 1);
+  list_args[5] = make_int (decoded_time->tm_year + 1900);
+  list_args[6] = make_int (decoded_time->tm_wday);
   list_args[7] = (decoded_time->tm_isdst)? Qt : Qnil;
 
   /* Make a copy, in case gmtime modifies the struct.  */
@@ -1130,7 +1115,7 @@ ZONE is an integer indicating the number of seconds east of Greenwich.
   if (decoded_time == 0)
     list_args[8] = Qnil;
   else
-    XSETINT (list_args[8], difftm (&save_tm, decoded_time));
+    list_args[8] = make_int (difftm (&save_tm, decoded_time));
   return Flist (9, list_args);
 }
 
@@ -1156,7 +1141,7 @@ If you want them to stand for years in this century, you must do that yourself.
 */
        (int nargs, Lisp_Object *args))
 {
-  time_t _time;
+  time_t the_time;
   struct tm tm;
   Lisp_Object zone = (nargs > 6) ? args[nargs - 1] : Qnil;
 
@@ -1172,7 +1157,7 @@ If you want them to stand for years in this century, you must do that yourself.
   if (CONSP (zone))
     zone = XCAR (zone);
   if (NILP (zone))
-    _time = mktime (&tm);
+    the_time = mktime (&tm);
   else
     {
       char tzbuf[100];
@@ -1195,7 +1180,7 @@ If you want them to stand for years in this century, you must do that yourself.
         value doesn't suffice, since that would mishandle leap seconds.  */
       set_time_zone_rule (tzstring);
 
-      _time = mktime (&tm);
+      the_time = mktime (&tm);
 
       /* Restore TZ to previous value.  */
       newenv = environ;
@@ -1206,10 +1191,10 @@ If you want them to stand for years in this century, you must do that yourself.
 #endif
     }
 
-  if (_time == (time_t) -1)
+  if (the_time == (time_t) -1)
     error ("Specified time is not representable");
 
-  return wasteful_word_to_lisp (_time);
+  return wasteful_word_to_lisp (the_time);
 }
 
 DEFUN ("current-time-string", Fcurrent_time_string, 0, 1, 0, /*