From 03d19d3169c0dfc82207abef06b1f853c1da5b8d Mon Sep 17 00:00:00 2001 From: bx Date: Sun, 3 Apr 2022 09:28:24 +0100 Subject: [PATCH] print command now accepts start + end lines --- buffer.c | 6 ++++++ c_print.c | 19 +++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/buffer.c b/buffer.c index 8643801..13c4c97 100644 --- a/buffer.c +++ b/buffer.c @@ -24,4 +24,10 @@ b_truncate(Row *row) { } } +int +b_countlines(Row *row) { + int lines = 1; + for(; row->n != NULL; row = row->n) lines++; + return lines; +} diff --git a/c_print.c b/c_print.c index eac99e4..b8a9344 100644 --- a/c_print.c +++ b/c_print.c @@ -7,6 +7,7 @@ else printf("%c", row->text[i]); } } +/* void c_print(char *c, char **argv) { Row *row = buffer; @@ -22,6 +23,24 @@ c_print(char *c, char **argv) { row = row -> n; } } +*/ + + +void +c_print(char *c, char **argv) { + int start = argv[1] != NULL ? atoi(argv[1]) : 1; + int end = argv[2] != NULL ? atoi(argv[2]) : b_countlines(buffer); + start = start > 1 ? start : 1; + end = end < b_countlines(buffer) ? end : b_countlines(buffer); + Row *row = b_getline(buffer, start); + for(int line = start; line <= end; line++) { + printf("%3.i| ", line); + print_with_fixed_tabs(row); + puts(""); + row = row->n; + } +} +