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

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