Annotation of src/usr.bin/mg/dired.c, Revision 1.5
1.5 ! millert 1: /* dired module for mg 2a */
! 2: /* by Robert A. Larson */
1.1 deraadt 3:
4: #include "def.h"
5:
6: #ifndef NO_DIRED
7:
1.5 ! millert 8: /* ARGSUSED */
! 9: int
1.1 deraadt 10: dired(f, n)
1.5 ! millert 11: int f, n;
1.1 deraadt 12: {
1.5 ! millert 13: char dirname[NFILEN];
! 14: BUFFER *bp;
1.1 deraadt 15:
1.5 ! millert 16: dirname[0] = '\0';
! 17: if (eread("Dired: ", dirname, NFILEN, EFNEW | EFCR) == ABORT)
! 18: return ABORT;
! 19: if ((bp = dired_(dirname)) == NULL)
! 20: return FALSE;
! 21: curbp = bp;
! 22: return showbuffer(bp, curwp, WFHARD | WFMODE);
1.1 deraadt 23: }
24:
1.5 ! millert 25: /* ARGSUSED */
! 26: int
1.1 deraadt 27: d_otherwindow(f, n)
1.5 ! millert 28: int f, n;
1.1 deraadt 29: {
1.5 ! millert 30: char dirname[NFILEN];
! 31: BUFFER *bp;
! 32: MGWIN *wp;
! 33:
! 34: dirname[0] = '\0';
! 35: if (eread("Dired other window: ", dirname, NFILEN, EFNEW | EFCR) == ABORT)
! 36: return ABORT;
! 37: if ((bp = dired_(dirname)) == NULL)
! 38: return FALSE;
! 39: if ((wp = popbuf(bp)) == NULL)
! 40: return FALSE;
! 41: curbp = bp;
! 42: curwp = wp;
! 43: return TRUE;
1.1 deraadt 44: }
45:
1.5 ! millert 46: /* ARGSUSED */
! 47: int
1.1 deraadt 48: d_del(f, n)
1.5 ! millert 49: int f, n;
1.1 deraadt 50: {
1.5 ! millert 51:
! 52: if (n < 0)
! 53: return FALSE;
! 54: while (n--) {
! 55: if (llength(curwp->w_dotp) > 0)
! 56: lputc(curwp->w_dotp, 0, 'D');
! 57: if (lforw(curwp->w_dotp) != curbp->b_linep)
! 58: curwp->w_dotp = lforw(curwp->w_dotp);
! 59: }
! 60: curwp->w_flag |= WFEDIT | WFMOVE;
! 61: curwp->w_doto = 0;
! 62: return TRUE;
1.1 deraadt 63: }
64:
1.5 ! millert 65: /* ARGSUSED */
! 66: int
1.1 deraadt 67: d_undel(f, n)
1.5 ! millert 68: int f, n;
1.1 deraadt 69: {
1.5 ! millert 70: if (n < 0)
! 71: return d_undelbak(f, -n);
! 72: while (n--) {
! 73: if (llength(curwp->w_dotp) > 0)
! 74: lputc(curwp->w_dotp, 0, ' ');
! 75: if (lforw(curwp->w_dotp) != curbp->b_linep)
! 76: curwp->w_dotp = lforw(curwp->w_dotp);
! 77: }
! 78: curwp->w_flag |= WFEDIT | WFMOVE;
! 79: curwp->w_doto = 0;
! 80: return TRUE;
1.1 deraadt 81: }
82:
1.5 ! millert 83: /* ARGSUSED */
! 84: int
1.1 deraadt 85: d_undelbak(f, n)
1.5 ! millert 86: int f, n;
1.1 deraadt 87: {
1.5 ! millert 88:
! 89: if (n < 0)
! 90: return d_undel(f, -n);
! 91: while (n--) {
! 92: if (llength(curwp->w_dotp) > 0)
! 93: lputc(curwp->w_dotp, 0, ' ');
! 94: if (lback(curwp->w_dotp) != curbp->b_linep)
! 95: curwp->w_dotp = lback(curwp->w_dotp);
! 96: }
! 97: curwp->w_doto = 0;
! 98: curwp->w_flag |= WFEDIT | WFMOVE;
! 99: return TRUE;
1.1 deraadt 100: }
101:
1.5 ! millert 102: /* ARGSUSED */
! 103: int
1.1 deraadt 104: d_findfile(f, n)
1.5 ! millert 105: int f, n;
1.1 deraadt 106: {
1.5 ! millert 107: BUFFER *bp;
! 108: int s;
! 109: char fname[NFILEN];
! 110:
! 111: if ((s = d_makename(curwp->w_dotp, fname)) == ABORT)
! 112: return FALSE;
! 113: if ((bp = (s ? dired_(fname) : findbuffer(fname))) == NULL)
! 114: return FALSE;
! 115: curbp = bp;
! 116: if (showbuffer(bp, curwp, WFHARD) != TRUE)
! 117: return FALSE;
! 118: if (bp->b_fname[0] != 0)
! 119: return TRUE;
! 120: return readin(fname);
1.1 deraadt 121: }
122:
1.5 ! millert 123: /* ARGSUSED */
! 124: int
1.1 deraadt 125: d_ffotherwindow(f, n)
1.5 ! millert 126: int f, n;
1.1 deraadt 127: {
1.5 ! millert 128: char fname[NFILEN];
! 129: int s;
! 130: BUFFER *bp;
! 131: MGWIN *wp;
! 132:
! 133: if ((s = d_makename(curwp->w_dotp, fname)) == ABORT)
! 134: return FALSE;
! 135: if ((bp = (s ? dired_(fname) : findbuffer(fname))) == NULL)
! 136: return FALSE;
! 137: if ((wp = popbuf(bp)) == NULL)
! 138: return FALSE;
! 139: curbp = bp;
! 140: curwp = wp;
! 141: if (bp->b_fname[0] != 0)
! 142: return TRUE; /* never true for dired buffers */
! 143: return readin(fname);
1.1 deraadt 144: }
145:
1.5 ! millert 146: /* ARGSUSED */
! 147: int
1.1 deraadt 148: d_expunge(f, n)
1.5 ! millert 149: int f, n;
1.1 deraadt 150: {
1.5 ! millert 151: LINE *lp, *nlp;
! 152: char fname[NFILEN];
! 153:
! 154: for (lp = lforw(curbp->b_linep); lp != curbp->b_linep; lp = nlp) {
! 155: nlp = lforw(lp);
! 156: if (llength(lp) && lgetc(lp, 0) == 'D') {
! 157: switch (d_makename(lp, fname)) {
! 158: case ABORT:
! 159: ewprintf("Bad line in dired buffer");
! 160: return FALSE;
! 161: case FALSE:
! 162: if (unlink(fname) < 0) {
! 163: ewprintf("Could not delete '%s'", fname);
! 164: return FALSE;
! 165: }
! 166: break;
! 167: case TRUE:
! 168: if (rmdir(fname) < 0) {
! 169: ewprintf("Could not delete directory '%s'",
! 170: fname);
! 171: return FALSE;
! 172: }
! 173: break;
! 174: }
! 175: lfree(lp);
! 176: curwp->w_flag |= WFHARD;
! 177: }
1.1 deraadt 178: }
1.5 ! millert 179: return TRUE;
1.1 deraadt 180: }
181:
1.5 ! millert 182: /* ARGSUSED */
! 183: int
1.1 deraadt 184: d_copy(f, n)
1.5 ! millert 185: int f, n;
1.1 deraadt 186: {
1.5 ! millert 187: char frname[NFILEN], toname[NFILEN];
! 188: int stat;
1.1 deraadt 189:
1.5 ! millert 190: if (d_makename(curwp->w_dotp, frname) != FALSE) {
! 191: ewprintf("Not a file");
! 192: return FALSE;
! 193: }
! 194: if ((stat = eread("Copy %s to: ", toname, NFILEN, EFNEW | EFCR, frname))
! 195: != TRUE)
! 196: return stat;
! 197: return copy(frname, toname) >= 0;
1.1 deraadt 198: }
199:
1.5 ! millert 200: /* ARGSUSED */
! 201: int
1.1 deraadt 202: d_rename(f, n)
1.5 ! millert 203: int f, n;
1.1 deraadt 204: {
1.5 ! millert 205: char frname[NFILEN], toname[NFILEN];
! 206: int stat;
1.1 deraadt 207:
1.5 ! millert 208: if (d_makename(curwp->w_dotp, frname) != FALSE) {
! 209: ewprintf("Not a file");
! 210: return FALSE;
! 211: }
! 212: if ((stat = eread("Rename %s to: ", toname, NFILEN, EFNEW | EFCR,
! 213: frname)) != TRUE)
! 214: return stat;
! 215: return rename(frname, toname) >= 0;
1.1 deraadt 216: }
217: #endif