Loading ...
Sorry, an error occurred while loading the content.

Patch 6.3b.021

Expand Messages
  • Bram Moolenaar
    Patch 6.3b.021 Problem: The swapfile is not readable for others, the ATTENTION prompt does not show all info when someone else is editing the same file.
    Message 1 of 1 , Jun 1, 2004
    • 0 Attachment
      Patch 6.3b.021
      Problem: The swapfile is not readable for others, the ATTENTION prompt does
      not show all info when someone else is editing the same file.
      (Marcel Svitalsky)
      Solution: Use the protection of original file for the swapfile and set it
      after creating the swapfile.
      Files: src/fileio.c


      *** ../vim-6.3b.020/src/fileio.c Fri May 21 13:40:43 2004
      --- src/fileio.c Tue Jun 1 15:02:00 2004
      ***************
      *** 246,251 ****
      --- 246,252 ----
      long linerest = 0; /* remaining chars in line */
      #ifdef UNIX
      int perm = 0;
      + int swap_mode = -1; /* protection bits for swap file */
      #else
      int perm;
      #endif
      ***************
      *** 452,464 ****
      #endif
      #ifdef UNIX
      /*
      ! * Set the protection bits of the swap file equal to the original
      ! * file. This makes it possible for others to read the name of the
      ! * original file from the swapfile.
      */
      ! if (curbuf->b_ml.ml_mfp->mf_fname != NULL)
      ! (void)mch_setperm(curbuf->b_ml.ml_mfp->mf_fname,
      ! (long)((st.st_mode & 0777) | 0600));
      #endif
      #ifdef FEAT_CW_EDITOR
      /* Get the FSSpec on MacOS
      --- 453,469 ----
      #endif
      #ifdef UNIX
      /*
      ! * Use the protection bits of the original file for the swap file.
      ! * This makes it possible for others to read the name of the
      ! * edited file from the swapfile, but only if they can read the
      ! * edited file.
      ! * Remove the "write" and "execute" bits for group and others
      ! * (they must not write the swapfile).
      ! * Add the "read" and "write" bits for the user, otherwise we may
      ! * not be able to write to the file ourselves.
      ! * Setting the bits is done below, after creating the swap file.
      */
      ! swap_mode = (st.st_mode & 0644) | 0600;
      #endif
      #ifdef FEAT_CW_EDITOR
      /* Get the FSSpec on MacOS
      ***************
      *** 617,623 ****
      --- 622,635 ----
      #ifdef FEAT_QUICKFIX
      if (!bt_dontwrite(curbuf))
      #endif
      + {
      check_need_swap(newfile);
      + #ifdef UNIX
      + /* Set swap file protection bits after creating it. */
      + if (swap_mode > 0 && curbuf->b_ml.ml_mfp->mf_fname != NULL)
      + (void)mch_setperm(curbuf->b_ml.ml_mfp->mf_fname, (long)swap_mode);
      + #endif
      + }

      #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG)
      /* If "Quit" selected at ATTENTION dialog, don't load the file */
      *** ../vim-6.3b.020/src/version.c Tue Jun 1 09:46:26 2004
      --- src/version.c Tue Jun 1 20:43:56 2004
      ***************
      *** 643,644 ****
      --- 643,646 ----
      { /* Add new patch number below this line */
      + /**/
      + 21,
      /**/

      --
      How To Keep A Healthy Level Of Insanity:
      9. As often as possible, skip rather than walk.

      /// Bram Moolenaar -- Bram@... -- http://www.Moolenaar.net \\\
      /// Sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
      \\\ Project leader for A-A-P -- http://www.A-A-P.org ///
      \\\ Buy at Amazon and help AIDS victims -- http://ICCF.nl/click1.html ///
    Your message has been successfully submitted and would be delivered to recipients shortly.