version 1.67, 2007/05/28 17:52:17 |
version 1.68, 2008/09/15 16:11:35 |
|
|
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"); |
} |
} |
|
|
|
|
/* |
/* |
* 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) |
|
|
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; |
|
|
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); |
|
} |
|
|