[BACK]Return to buffer.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / mg

Diff for /src/usr.bin/mg/buffer.c between version 1.67 and 1.68

version 1.67, 2007/05/28 17:52:17 version 1.68, 2008/09/15 16:11:35
Line 22 
Line 22 
 int  int
 togglereadonly(int f, int n)  togglereadonly(int f, int n)
 {  {
           int s;
   
           if ((s = checkdirty(curbp)) != TRUE)
                   return (s);
         if (!(curbp->b_flag & BFREADONLY))          if (!(curbp->b_flag & BFREADONLY))
                 curbp->b_flag |= BFREADONLY;                  curbp->b_flag |= BFREADONLY;
         else {          else {
                 curbp->b_flag &=~ BFREADONLY;                  curbp->b_flag &= ~BFREADONLY;
                 if (curbp->b_flag & BFCHG)                  if (curbp->b_flag & BFCHG)
                         ewprintf("Warning: Buffer was modified");                          ewprintf("Warning: Buffer was modified");
         }          }
Line 572 
Line 576 
   
 /*  /*
  * Display the given buffer in the given window. Flags indicated   * Display the given buffer in the given window. Flags indicated
  * action on redisplay.   * action on redisplay. Update modified flag so insert loop can check it.
  */   */
 int  int
 showbuffer(struct buffer *bp, struct mgwin *wp, int flags)  showbuffer(struct buffer *bp, struct mgwin *wp, int flags)
Line 580 
Line 584 
         struct buffer   *obp;          struct buffer   *obp;
         struct mgwin    *owp;          struct mgwin    *owp;
   
           /* Ensure file has not been modified elsewhere */
           if (fchecktime(bp) != TRUE)
                   bp->b_flag |= BFDIRTY;
   
         if (wp->w_bufp == bp) { /* Easy case! */          if (wp->w_bufp == bp) { /* Easy case! */
                 wp->w_flag |= flags;                  wp->w_flag |= flags;
                 wp->w_dotp = bp->b_dotp;                  wp->w_dotp = bp->b_dotp;
Line 798 
Line 806 
         return (FALSE);          return (FALSE);
 }  }
   
   /*
    * Ensures a buffer has not been modified elsewhere.
    * Returns TRUE if it has NOT. FALSE or ABORT otherwise
    */
   int
   checkdirty(struct buffer *bp)
   {
           int s;
   
           if ((bp->b_flag & (BFDIRTY | BFIGNDIRTY)) == BFDIRTY) {
                   if ((s = eyorn("File changed on disk; really edit the buffer"))
                       != TRUE)
                           return (s);
                   bp->b_flag &= ~BFDIRTY;
                   bp->b_flag |= BFIGNDIRTY;
           }
   
           return (TRUE);
   }
   

Legend:
Removed from v.1.67  
changed lines
  Added in v.1.68