iadd read-at-point function - gramscii - A simple editor for ASCII box-and-arrow charts Err bitreich.org 70
1Log /scm/gramscii/log.gph bitreich.org 70
1Files /scm/gramscii/files.gph bitreich.org 70
1Refs /scm/gramscii/refs.gph bitreich.org 70
1Tags /scm/gramscii/tag bitreich.org 70
1README /scm/gramscii/file/README.md.gph bitreich.org 70
1LICENSE /scm/gramscii/file/COPYING.gph bitreich.org 70
i--- Err bitreich.org 70
1commit 62267b8424170f9b136892248a77dbed3fdcbbba /scm/gramscii/commit/62267b8424170f9b136892248a77dbed3fdcbbba.gph bitreich.org 70
1parent 3ba178677800de55393f8ec80752ffe72660931a /scm/gramscii/commit/3ba178677800de55393f8ec80752ffe72660931a.gph bitreich.org 70
hAuthor: KatolaZ <katolaz@freaknet.org> URL:mailto:katolaz@freaknet.org bitreich.org 70
iDate: Fri, 9 Aug 2019 07:08:35 +0100 Err bitreich.org 70
i Err bitreich.org 70
iadd read-at-point function Err bitreich.org 70
i Err bitreich.org 70
iDiffstat: Err bitreich.org 70
i M TODO | 7 ++++--- Err bitreich.org 70
i M draw.c | 2 ++ Err bitreich.org 70
i M files.c | 47 +++++++++++++++++++++++++++++++ Err bitreich.org 70
i M gramscii.c | 5 +++++ Err bitreich.org 70
i M gramscii.h | 8 ++++++++ Err bitreich.org 70
i M screen.c | 2 ++ Err bitreich.org 70
i Err bitreich.org 70
i6 files changed, 68 insertions(+), 3 deletions(-) Err bitreich.org 70
i--- Err bitreich.org 70
1diff --git a/TODO b/TODO /scm/gramscii/file/TODO.gph bitreich.org 70
i@@ -1,8 +1,7 @@ Err bitreich.org 70
i + optimize redraws (redraw only the modified rectangle) Err bitreich.org 70
i-- fir bug in reading commands from files Err bitreich.org 70
i+- fix bug in visual crop Err bitreich.org 70
i+- fix bug in reading commands from files Err bitreich.org 70
i - add screen geometry option (-g 25x80?) Err bitreich.org 70
i-- read file at point Err bitreich.org 70
i- - read output of command (!) Err bitreich.org 70
i - maybe move "text" mode to "t" Err bitreich.org 70
i - implement ellipse Err bitreich.org 70
i - (?) filled box (B) Err bitreich.org 70
i@@ -17,6 +16,8 @@ Err bitreich.org 70
i - allow scrolling (both vertical and horizontal) Err bitreich.org 70
i - catch SIGWINCH and react appropriately (after scrolling is Err bitreich.org 70
i enabled) Err bitreich.org 70
i+* read file at point Err bitreich.org 70
i+ * read output of command (!) Err bitreich.org 70
i * fix bug with 'g' commands in arrow mode Err bitreich.org 70
i * undo (by storing lines changed across insert/remove operations) Err bitreich.org 70
i * re-organise undo-ring management Err bitreich.org 70
1diff --git a/draw.c b/draw.c /scm/gramscii/file/draw.c.gph bitreich.org 70
i@@ -1,3 +1,5 @@ Err bitreich.org 70
i+#define _POSIX_C_SOURCE 2 Err bitreich.org 70
i+ Err bitreich.org 70
i #include <stdlib.h> Err bitreich.org 70
i #include <string.h> Err bitreich.org 70
i Err bitreich.org 70
1diff --git a/files.c b/files.c /scm/gramscii/file/files.c.gph bitreich.org 70
i@@ -1,3 +1,5 @@ Err bitreich.org 70
i+#define _POSIX_C_SOURCE 2 Err bitreich.org 70
i+ Err bitreich.org 70
i #include <stdio.h> Err bitreich.org 70
i #include <string.h> Err bitreich.org 70
i #include "gramscii.h" Err bitreich.org 70
i@@ -37,6 +39,7 @@ void write_file(FILE *fc){ Err bitreich.org 70
i fclose(fout); Err bitreich.org 70
i modified = 0; Err bitreich.org 70
i get_key(fc, "File saved."); Err bitreich.org 70
i+ redraw(); Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i void check_modified(FILE *fc){ Err bitreich.org 70
i@@ -83,3 +86,47 @@ void new_file(FILE *fc){ Err bitreich.org 70
i modified=0; Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i+void read_file_at(FILE *fc, int xl, int yl){ Err bitreich.org 70
i+ Err bitreich.org 70
i+ char nfname[512], tmp[512], *fptr, *tptr; Err bitreich.org 70
i+ FILE *fin; Err bitreich.org 70
i+ int i, j; Err bitreich.org 70
i+ char ftype; Err bitreich.org 70
i+ Err bitreich.org 70
i+ get_string(fc, "Read file: ", nfname, 511); Err bitreich.org 70
i+ fptr = nfname; Err bitreich.org 70
i+ while(*fptr && _isblank(*fptr)) Err bitreich.org 70
i+ fptr ++; Err bitreich.org 70
i+ if (*fptr == '!'){ Err bitreich.org 70
i+ fin = popen(++fptr, "r"); Err bitreich.org 70
i+ ftype = FPIPE; Err bitreich.org 70
i+ } Err bitreich.org 70
i+ else { Err bitreich.org 70
i+ fin = fopen(fptr, "r"); Err bitreich.org 70
i+ ftype = FFILE; Err bitreich.org 70
i+ } Err bitreich.org 70
i+ if (fin != NULL){ Err bitreich.org 70
i+ copy_lines_to_ring(0, HEIGHT-1, PRV_STATE); Err bitreich.org 70
i+ i = yl; Err bitreich.org 70
i+ while((fgets(tmp, WIDTH+1, fin)) != NULL && i<HEIGHT){ Err bitreich.org 70
i+ j = xl; Err bitreich.org 70
i+ tptr = tmp; Err bitreich.org 70
i+ if (strlen(tmp)) Err bitreich.org 70
i+ tmp[strlen(tmp) - 1] = '\0'; Err bitreich.org 70
i+ ensure_line_length(& (screen.l[i]), xl + strlen(tmp) + 1); Err bitreich.org 70
i+ while (*tptr && j < WIDTH){ Err bitreich.org 70
i+ set_xy(j, i, *tptr); Err bitreich.org 70
i+ j++; Err bitreich.org 70
i+ tptr ++; Err bitreich.org 70
i+ } Err bitreich.org 70
i+ i++; Err bitreich.org 70
i+ } Err bitreich.org 70
i+ if (ftype == FFILE) Err bitreich.org 70
i+ fclose(fin); Err bitreich.org 70
i+ else Err bitreich.org 70
i+ pclose(fin); Err bitreich.org 70
i+ modified = 1; Err bitreich.org 70
i+ redraw(); Err bitreich.org 70
i+ copy_lines_to_ring(yl, i-1, NEW_STATE); Err bitreich.org 70
i+ } Err bitreich.org 70
i+} Err bitreich.org 70
1diff --git a/gramscii.c b/gramscii.c /scm/gramscii/file/gramscii.c.gph bitreich.org 70
i@@ -20,6 +20,8 @@ Err bitreich.org 70
i * Err bitreich.org 70
i */ Err bitreich.org 70
i Err bitreich.org 70
i+#define _POSIX_C_SOURCE 2 Err bitreich.org 70
i+ Err bitreich.org 70
i #include <stdio.h> Err bitreich.org 70
i #include <stdlib.h> Err bitreich.org 70
i #include <signal.h> Err bitreich.org 70
i@@ -124,6 +126,9 @@ void commands(FILE *fc){ Err bitreich.org 70
i case 'U': Err bitreich.org 70
i redo_change(); Err bitreich.org 70
i break; Err bitreich.org 70
i+ case 'r': Err bitreich.org 70
i+ read_file_at(fc, x, y); Err bitreich.org 70
i+ break; Err bitreich.org 70
i case 'q': Err bitreich.org 70
i check_modified(fc);/** FALLTHROUGH **/ Err bitreich.org 70
i case 'Q': Err bitreich.org 70
1diff --git a/gramscii.h b/gramscii.h /scm/gramscii/file/gramscii.h.gph bitreich.org 70
i@@ -1,6 +1,8 @@ Err bitreich.org 70
i #ifndef __GRAMSCII_H__ Err bitreich.org 70
i #define __GRAMSCII_H__ Err bitreich.org 70
i Err bitreich.org 70
i+#define _POSIX_C_SOURCE 2 Err bitreich.org 70
i+ Err bitreich.org 70
i #include <stdio.h> Err bitreich.org 70
i #include <termios.h> Err bitreich.org 70
i #include <unistd.h> Err bitreich.org 70
i@@ -58,6 +60,10 @@ Err bitreich.org 70
i #define NEW_STATE 0x02 Err bitreich.org 70
i /**/ Err bitreich.org 70
i Err bitreich.org 70
i+/* file types */ Err bitreich.org 70
i+#define FFILE 0x01 Err bitreich.org 70
i+#define FPIPE 0x02 Err bitreich.org 70
i+ Err bitreich.org 70
i /** types **/ Err bitreich.org 70
i Err bitreich.org 70
i typedef struct{ Err bitreich.org 70
i@@ -157,6 +163,7 @@ void go_to(int where); Err bitreich.org 70
i void crop_to_nonblank(); Err bitreich.org 70
i void crop_to_rect(); Err bitreich.org 70
i void erase_blank_lines(int y1, int y2); Err bitreich.org 70
i+int _isblank(int c); Err bitreich.org 70
i /**/ Err bitreich.org 70
i Err bitreich.org 70
i /** drawing-related functions **/ Err bitreich.org 70
i@@ -176,6 +183,7 @@ void write_file(FILE *fc); Err bitreich.org 70
i void check_modified(FILE *fc); Err bitreich.org 70
i void load_file(FILE *fc); Err bitreich.org 70
i void new_file(FILE *fc); Err bitreich.org 70
i+void read_file_at(FILE *fc, int xl, int yl); Err bitreich.org 70
i /**/ Err bitreich.org 70
i Err bitreich.org 70
i /** line-related functions **/ Err bitreich.org 70
1diff --git a/screen.c b/screen.c /scm/gramscii/file/screen.c.gph bitreich.org 70
i@@ -1,3 +1,5 @@ Err bitreich.org 70
i+#define _POSIX_C_SOURCE 2 Err bitreich.org 70
i+ Err bitreich.org 70
i #include <stdio.h> Err bitreich.org 70
i #include <stdlib.h> Err bitreich.org 70
i #include <string.h> Err bitreich.org 70
.
Response:
text/plain