Lines Matching defs:rec

90 	struct undo_rec *rec;
92 rec = TAILQ_FIRST(&undo_free);
93 if (rec != NULL) {
95 TAILQ_REMOVE(&undo_free, rec, next);
98 if ((rec = malloc(sizeof(*rec))) == NULL)
101 memset(rec, 0, sizeof(struct undo_rec));
103 return (rec);
107 free_undo_record(struct undo_rec *rec)
118 free(rec->content);
119 rec->content = NULL;
121 free(rec);
126 TAILQ_INSERT_HEAD(&undo_free, rec, next);
136 struct undo_rec *rec;
138 rec = TAILQ_LAST(&curbp->b_undo, undoq);
139 if (rec != NULL) {
141 TAILQ_REMOVE(&curbp->b_undo, rec, next);
142 free_undo_record(rec);
151 struct undo_rec *rec;
153 if ((rec = TAILQ_FIRST(&curbp->b_undo)) != NULL)
154 return (rec->type);
223 struct undo_rec *rec;
233 rec = new_undo_record();
234 rec->type = BOUNDARY;
236 TAILQ_INSERT_HEAD(&curbp->b_undo, rec, next);
247 struct undo_rec *rec, *trec;
249 TAILQ_FOREACH_SAFE(rec, &curbp->b_undo, next, trec)
250 if (rec->type == MODIFIED) {
251 TAILQ_REMOVE(&curbp->b_undo, rec, next);
252 free_undo_record(rec);
255 rec = new_undo_record();
256 rec->type = MODIFIED;
258 TAILQ_INSERT_HEAD(&curbp->b_undo, rec, next);
267 struct undo_rec *rec;
283 rec = TAILQ_FIRST(&curbp->b_undo);
284 if (rec != NULL && rec->type == INSERT) {
285 if (rec->pos + rec->region.r_size == pos) {
286 rec->region.r_size += reg.r_size;
294 rec = new_undo_record();
295 rec->pos = pos;
296 rec->type = INSERT;
297 memmove(&rec->region, &reg, sizeof(struct region));
298 rec->content = NULL;
302 TAILQ_INSERT_HEAD(&curbp->b_undo, rec, next);
314 struct undo_rec *rec;
329 else if ((rec = TAILQ_FIRST(&curbp->b_undo)) != NULL) {
334 if (!isreg && rec->type == DELETE) {
335 if (rec->pos - rec->region.r_size != pos)
339 rec = new_undo_record();
340 rec->pos = pos;
342 rec->type = DELREG;
344 rec->type = DELETE;
345 memmove(&rec->region, &reg, sizeof(struct region));
347 rec->content = malloc(reg.r_size + 1);
348 } while ((rec->content == NULL) && drop_oldest_undo_record());
350 if (rec->content == NULL)
353 region_get_data(&reg, rec->content, reg.r_size);
358 TAILQ_INSERT_HEAD(&curbp->b_undo, rec, next);
387 struct undo_rec *rec;
411 TAILQ_FOREACH(rec, &curbp->b_undo, next) {
415 (rec->type == DELETE) ? "DELETE":
416 (rec->type == DELREG) ? "DELREGION":
417 (rec->type == INSERT) ? "INSERT":
418 (rec->type == BOUNDARY) ? "----" :
419 (rec->type == MODIFIED) ? "MODIFIED": "UNKNOWN",
420 rec->pos);
422 if (rec->content) {
424 snprintf(tmp, sizeof(tmp), "%.*s", rec->region.r_size,
425 rec->content);
429 snprintf(tmp, sizeof(tmp), " [%d]", rec->region.r_size);