'1' means they are the same.
any other +ve number means they are different.
Signed-off-by: NeilBrown <neil@brown.name>
DEF_CMD(docs_mark_same)
{
- ci->extra = ci->mark->ref.p == ci->mark2->ref.p;
- return 1;
+ return ci->mark->ref.p == ci->mark2->ref.p ? 1 : 2;
}
static char *__docs_get_attr(struct doc *doc, struct mark *m,
int mark_same2(struct doc *d, struct mark *m1, struct mark *m2, struct cmd_info *ci)
{
struct cmd_info ci2 = {0};
+
if (!ci)
ci = &ci2;
ci->key = "doc:mark-same";
ci->mark = m1;
ci->mark2 = m2;
ci->home = d->home;
- ci->extra = 0;
- key_lookup(d->map, ci);
- return ci->extra;
+ return key_lookup(d->map, ci) == 1;
}
int mark_same(struct doc *d, struct mark *m1, struct mark *m2)
ci->key = "doc:mark-same";
ci->mark = m1;
ci->mark2 = m2;
- ci->extra = 0;
ci->focus = p;
- if (key_handle_focus(ci) == 0)
- return 0;
- return ci->extra;
+ return key_handle_focus(ci) == 1;
}
/* A 'vmark' is a mark in a particular view. We can walk around those
DEF_CMD(dir_mark_same)
{
- ci->extra = ci->mark->ref.d == ci->mark2->ref.d;
- return 1;
+ return ci->mark->ref.d == ci->mark2->ref.d ? 1 : 2;
}
static void get_stat(struct directory *dr, struct dir_ent *de)
struct doc_data *dd = ci->home->data;
struct text *t = container_of(dd->doc, struct text, doc);
- ci->extra = text_ref_same(t, &ci->mark->ref, &ci->mark2->ref);
- return 1;
+ return text_ref_same(t, &ci->mark->ref, &ci->mark2->ref) ? 1 : 2;
}
DEF_CMD(text_new)