[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemacs-commit] qemacs dired.c
From: |
Charlie Gordon |
Subject: |
[Qemacs-commit] qemacs dired.c |
Date: |
Mon, 03 Mar 2014 23:24:09 +0000 |
CVSROOT: /sources/qemacs
Module name: qemacs
Changes by: Charlie Gordon <chqrlie> 14/03/03 23:24:09
Modified files:
. : dired.c
Log message:
Improve robusness of dired mode
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/qemacs/dired.c?cvsroot=qemacs&r1=1.39&r2=1.40
Patches:
Index: dired.c
===================================================================
RCS file: /sources/qemacs/qemacs/dired.c,v
retrieving revision 1.39
retrieving revision 1.40
diff -u -b -r1.39 -r1.40
--- dired.c 1 Mar 2014 19:24:02 -0000 1.39
+++ dired.c 3 Mar 2014 23:24:09 -0000 1.40
@@ -73,14 +73,16 @@
}
}
-static DiredState *dired_get_state(EditState *s)
+static DiredState *dired_get_state(EditState *s, int status)
{
DiredState *ds = s->b->priv_data;
if (ds && ds->signature == &dired_signature)
return ds;
+ if (status)
put_status(s, "Not a dired buffer");
+
return NULL;
}
@@ -91,7 +93,7 @@
const StringItem *item;
const DiredItem *dip;
- if (!(ds = dired_get_state(s)))
+ if (!(ds = dired_get_state(s, 1)))
return NULL;
/* CG: assuming buf_size > 0 */
@@ -118,7 +120,7 @@
int i;
if (target) {
- if (!(ds = dired_get_state(s)))
+ if (!(ds = dired_get_state(s, 1)))
return -1;
for (i = 0; i < ds->items.nb_items; i++) {
@@ -181,7 +183,7 @@
EditBuffer *b;
int index, i;
- if (!(ds = dired_get_state(s)))
+ if (!(ds = dired_get_state(s, 1)))
return;
index = dired_get_index(s);
@@ -194,9 +196,8 @@
/* construct list buffer */
b = s->b;
- b->flags &= ~BF_READONLY;
/* deleting buffer contents resets s->offset and s->offset_top */
- eb_delete(b, 0, b->total_size);
+ eb_clear(b);
if (DIRED_HEADER) {
long long total_bytes;
@@ -244,7 +245,7 @@
unsigned char ch;
int index;
- if (!(ds = dired_get_state(s)))
+ if (!(ds = dired_get_state(s, 1)))
return;
index = dired_get_index(s);
@@ -267,7 +268,7 @@
DiredState *ds;
const char *p;
- if (!(ds = dired_get_state(s)))
+ if (!(ds = dired_get_state(s, 1)))
return;
for (p = sort_order; *p; p++) {
@@ -322,7 +323,7 @@
int ct, len, index;
StringItem *item;
- if (!(ds = dired_get_state(s)))
+ if (!(ds = dired_get_state(s, 1)))
return;
/* free previous list, if any */
@@ -496,7 +497,7 @@
char target[MAX_FILENAME_SIZE];
char filename[MAX_FILENAME_SIZE];
- if (!(ds = dired_get_state(s)))
+ if (!(ds = dired_get_state(s, 1)))
return;
pstrcpy(target, sizeof(target), ds->path);
@@ -510,7 +511,7 @@
DiredState *ds;
char target[MAX_FILENAME_SIZE];
- if (!(ds = dired_get_state(s)))
+ if (!(ds = dired_get_state(s, 1)))
return;
dired_get_filename(s, target, sizeof(target), -1);
@@ -523,7 +524,7 @@
char filename[MAX_FILENAME_SIZE];
int index;
- if (!(ds = dired_get_state(s)))
+ if (!(ds = dired_get_state(s, 1)))
return;
/* Prevent point from going beyond list */
@@ -548,8 +549,13 @@
{
DiredState *ds = b->priv_data;
+ if (ds && ds->signature == &dired_signature) {
dired_free(ds);
+ }
+
qe_free(&b->priv_data);
+ if (b->close == dired_close)
+ b->close = NULL;
}
static int dired_mode_init(EditState *s, ModeSavedData *saved_data)
@@ -585,11 +591,6 @@
return 0;
}
-static void dired_mode_close(EditState *s)
-{
- list_mode.mode_close(s);
-}
-
/* can only apply dired mode on directories */
static int dired_mode_probe(ModeDef *mode, ModeProbeData *p)
{
@@ -714,7 +715,6 @@
dired_mode.name = "dired";
dired_mode.mode_probe = dired_mode_probe;
dired_mode.mode_init = dired_mode_init;
- dired_mode.mode_close = dired_mode_close;
/* CG: not a good idea, display hook has side effect on layout */
dired_mode.display_hook = dired_display_hook;
- [Qemacs-commit] qemacs dired.c,
Charlie Gordon <=