Subversion Repositories SvarDOS

Compare Revisions

Regard whitespace Rev 1286 → Rev 1287

//sved/trunk/sved.c
57,8 → 57,8
};
 
 
 
void line_add(struct linedb *db, const char *line) {
/* returns non-zero on error */
int line_add(struct linedb *db, const char *line) {
unsigned short slen = strlen(line);
struct line *l;
 
70,6 → 70,8
}
 
l = calloc(1, sizeof(struct line) + slen + 1);
if (l == NULL) return(-1);
 
l->prev = db->cursor;
if (db->cursor) {
l->next = db->cursor->next;
79,6 → 81,8
db->cursor = l;
memmove(l->payload, line, slen);
l->len = slen;
 
return(0);
}
 
 
227,8 → 231,6
unsigned char count = 0;
char *argv[4];
 
mdr_coutraw_puts(tail);
 
while (count < 4) {
/* jump to nearest arg */
while (*tail == ' ') {
254,41 → 256,24
}
 
 
int main(void) {
static int loadfile(struct linedb *db, const char *fname) {
char buff[1024];
unsigned int prevlen = 0, len, llen;
int fd;
const char *fname;
char buff[1024];
struct linedb db;
unsigned char screenw = 0, screenh = 0;
unsigned char cursorposx = 0, cursorposy = 0;
unsigned char uidirtyfrom = 0, uidirtyto = 0xff; /* make sure to redraw entire UI at first run */
int r = 0;
 
bzero(&db, sizeof(db));
 
svarlang_autoload_nlspath("sved");
 
fname = parseargv();
 
if (fname == NULL) {
mdr_coutraw_puts("usage: sved file.txt");
return(0);
}
 
mdr_coutraw_puts("");
 
if (_dos_open(fname, O_RDONLY, &fd) != 0) {
mdr_coutraw_puts("Failed to open file:");
mdr_coutraw_puts(fname);
return(1);
return(-1);
}
 
/* load file */
{
unsigned int prevlen = 0, len, llen;
 
do {
if (_dos_read(fd, buff + prevlen, sizeof(buff) - prevlen, &len) != 0) break;
if (_dos_read(fd, buff + prevlen, sizeof(buff) - prevlen, &len) == 0) {
len += prevlen;
} else {
len = prevlen;
}
 
/* look for nearest \n and replace with 0*/
for (llen = 0; buff[llen] != '\n'; llen++) {
296,7 → 281,11
}
buff[llen] = 0;
if ((llen > 0) && (buff[llen - 1])) buff[llen - 1] = 0; /* trim \r if line ending is cr/lf */
line_add(&db, buff);
if (line_add(db, buff) != 0) {
mdr_coutraw_puts("out of memory");
r = -1;
break;
}
 
len -= llen + 1;
memmove(buff, buff + llen + 1, len);
303,13 → 292,36
prevlen = len;
} while (len > 0);
 
_dos_close(fd);
 
return(r);
}
 
 
int main(void) {
const char *fname;
struct linedb db;
unsigned char screenw = 0, screenh = 0;
unsigned char cursorposx = 0, cursorposy = 0;
unsigned char uidirtyfrom = 0, uidirtyto = 0xff; /* make sure to redraw entire UI at first run */
 
bzero(&db, sizeof(db));
 
svarlang_autoload_nlspath("sved");
 
fname = parseargv();
 
if (fname == NULL) {
mdr_coutraw_puts("usage: sved file.txt");
return(0);
}
 
/* load file */
if (loadfile(&db, fname) != 0) return(1);
 
/* add an empty line at end if not present already */
if (db.cursor->len != 0) line_add(&db, "");
 
_dos_close(fd);
 
if (mdr_cout_init(&screenw, &screenh)) load_colorscheme();
ui_basic(screenw, screenh, fname);