/* * Look through the list of buffers, giving the user a chance to save them. * Return TRUE if there are any changed buffers afterwards. Buffers that don't * have an associated file don't count. Return FALSE if there are no changed * buffers. Return ABORT if an error occurs or if the user presses c-g. */ int anycb(int f) { struct buffer *bp; int s = FALSE, save = FALSE, save2 = FALSE, ret; char pbuf[NFILEN + 11]; for (bp = bheadp; bp != NULL; bp = bp->b_bufp) { if (*(bp->b_fname) != '\0' && (bp->b_flag & BFCHG) != 0) { ret = snprintf(pbuf, sizeof(pbuf), "Save file %s", bp->b_fname); if (ret < 0 || ret >= sizeof(pbuf)) { dobeep(); ewprintf("Error: filename too long!"); return (UERROR); } if ((f == TRUE || (save = eyorn(pbuf)) == TRUE) && (save2 = buffsave(bp)) == TRUE) { bp->b_flag &= ~BFCHG; upmodes(bp); } else { if (save2 == FIOERR) return (save2); s = TRUE; } if (save == ABORT) return (save); save = TRUE; } } if (save == FALSE /* && kbdmop == NULL */ ) /* experimental */ ewprintf("(No files need saving)"); return (s); }
/* ARGSUSED */ int filesave(int f, int n) { if (curbp->b_fname[0] == '\0') return (filewrite(f, n)); else return (buffsave(curbp)); }
/* ARGSUSED */ int filesave(int f, int n) { return (buffsave(curbp)); }