added open commmand
parent
39ab7a9055
commit
7e684b606d
|
@ -0,0 +1,10 @@
|
||||||
|
void
|
||||||
|
b_truncate(Row *row) {
|
||||||
|
Row *n = row->n;
|
||||||
|
row->n = NULL;
|
||||||
|
if (n != NULL) {
|
||||||
|
b_truncate(n);
|
||||||
|
free(n);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
void
|
||||||
|
c_open(char *file) {
|
||||||
|
file += 2;
|
||||||
|
FILE *f = fopen(file, "r");
|
||||||
|
if (f == NULL) {
|
||||||
|
puts("couldnt open file.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
b_truncate(buffer);
|
||||||
|
Row *row = buffer;
|
||||||
|
row->n = NULL;
|
||||||
|
while (1) {
|
||||||
|
size_t red = fread(&row->text, 1, ROW_SIZE, f);
|
||||||
|
if (red < ROW_SIZE) {
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
Row *new_row = calloc(1, sizeof(Row));
|
||||||
|
new_row->p = row;
|
||||||
|
row->n = new_row;
|
||||||
|
row = new_row;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
void (*commands[256])(char *) = {
|
void (*commands[256])(char *) = {
|
||||||
NULL,
|
NULL,
|
||||||
['q'] = c_quit,
|
['q'] = c_quit,
|
||||||
|
['O'] = c_open,
|
||||||
|
|
2
efn.c
2
efn.c
|
@ -12,4 +12,6 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
#include "c_quit.c"
|
#include "c_quit.c"
|
||||||
|
#include "c_open.c"
|
||||||
|
|
||||||
|
#include "b_truncate.c"
|
||||||
|
|
3
efn.h
3
efn.h
|
@ -5,3 +5,6 @@ extern void (*commands[256])(char *);
|
||||||
|
|
||||||
void c_quit(char *);
|
void c_quit(char *);
|
||||||
|
|
||||||
|
void c_open(char *);
|
||||||
|
#include <string.h>
|
||||||
|
void b_truncate(Row *);
|
||||||
|
|
5
main.c
5
main.c
|
@ -2,7 +2,11 @@ int
|
||||||
main(int argc, char **argv) {
|
main(int argc, char **argv) {
|
||||||
static char buf[256];
|
static char buf[256];
|
||||||
while(1) {
|
while(1) {
|
||||||
|
memset(buf, 0, sizeof(buf));
|
||||||
char *com = fgets(buf, sizeof(buf), stdin);
|
char *com = fgets(buf, sizeof(buf), stdin);
|
||||||
|
for (int i = 0; i < sizeof(buf); i++)
|
||||||
|
if (buf[i] == '\n')
|
||||||
|
buf[i] = '\0';
|
||||||
if (com != NULL) {
|
if (com != NULL) {
|
||||||
if (commands[com[0]] != NULL) commands[com[0]](buf);
|
if (commands[com[0]] != NULL) commands[com[0]](buf);
|
||||||
else puts("invalid command.");
|
else puts("invalid command.");
|
||||||
|
@ -10,3 +14,4 @@ main(int argc, char **argv) {
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue