int undo(UNUSED(char **args)) { handleundo(); do { if(!curchange->prev) return 1; if (unapplychange(curchange->prev)) curchange = curchange->prev; else break; } while(curchange->flags & CH_PREV); setlastline(); return 0; }
int undo(char **args) { zlong last_change = (zlong)0; if (*args) { last_change = zstrtol(*args, NULL, 0); } handleundo(); do { if(!curchange->prev) return 1; if (unapplychange(curchange->prev)) curchange = curchange->prev; else break; } while (*args ? curchange->changeno != last_change : (curchange->flags & CH_PREV)); setlastline(); return 0; }