]> code.delx.au - gnu-emacs/blobdiff - src/filelock.c
(BITS_PER_CHAR, BITS_PER_INT, BITS_PER_SHORT)
[gnu-emacs] / src / filelock.c
index 2e7e2e20e94de182449ac7a8ca4d8c1175b6f312..bda8bede020b4d717e150386dcc1f259f8889bdb 100644 (file)
@@ -199,16 +199,19 @@ void
 lock_file (fn)
      register Lisp_Object fn;
 {
-  register Lisp_Object attack;
+  register Lisp_Object attack, orig_fn;
   register char *lfname;
 
+  orig_fn = fn;
+  fn = Fexpand_file_name (fn, Qnil);
+
   MAKE_LOCK_NAME (lfname, fn);
 
   /* See if this file is visited and has changed on disk since it was
      visited.  */
   {
     register Lisp_Object subject_buf;
-    subject_buf = Fget_file_buffer (fn);
+    subject_buf = get_truename_buffer (orig_fn);
     if (!NILP (subject_buf)
        && NILP (Fverify_visited_file_modtime (subject_buf))
        && !NILP (Ffile_exists_p (fn)))
@@ -329,6 +332,8 @@ unlock_file (fn)
 {
   register char *lfname;
 
+  fn = Fexpand_file_name (fn, Qnil);
+
   MAKE_LOCK_NAME (lfname, fn);
 
   lock_superlock (lfname);
@@ -381,8 +386,8 @@ unlock_all_files ()
   for (tail = Vbuffer_alist; GC_CONSP (tail); tail = XCONS (tail)->cdr)
     {
       b = XBUFFER (XCONS (XCONS (tail)->car)->cdr);
-      if (STRINGP (b->filename) && BUF_SAVE_MODIFF (b) < BUF_MODIFF (b))
-       unlock_file (b->filename);
+      if (STRINGP (b->file_truename) && BUF_SAVE_MODIFF (b) < BUF_MODIFF (b))
+       unlock_file (b->file_truename);
     }
 }
 
@@ -396,7 +401,7 @@ or else nothing is done if current buffer isn't visiting a file.")
      Lisp_Object fn;
 {
   if (NILP (fn))
-    fn = current_buffer->filename;
+    fn = current_buffer->file_truename;
   else
     CHECK_STRING (fn, 0);
   if (SAVE_MODIFF < MODIFF
@@ -412,8 +417,8 @@ if it should normally be locked.")
   ()
 {
   if (SAVE_MODIFF < MODIFF
-      && STRINGP (current_buffer->filename))
-    unlock_file (current_buffer->filename);
+      && STRINGP (current_buffer->file_truename))
+    unlock_file (current_buffer->file_truename);
   return Qnil;
 }
 
@@ -424,8 +429,8 @@ unlock_buffer (buffer)
      struct buffer *buffer;
 {
   if (BUF_SAVE_MODIFF (buffer) < BUF_MODIFF (buffer)
-      && STRINGP (buffer->filename))
-    unlock_file (buffer->filename);
+      && STRINGP (buffer->file_truename))
+    unlock_file (buffer->file_truename);
 }
 
 DEFUN ("file-locked-p", Ffile_locked_p, Sfile_locked_p, 0, 1, 0,