Subversion Repositories SvarDOS

Compare Revisions

Ignore whitespace Rev 1567 → Rev 1568

/sved/trunk/libc.c
19,11 → 19,12
}
 
/* TODO this function does not handle overlapping strings well! */
void far *_fmemmove(void far *dst, const void far *src, size_t len) {
void fmemmove(void far *dst, const void far *src, size_t len) {
while (len-- > 0) {
((char far *)dst)[len] = ((char far *)src)[len];
*(char far *)dst = *(char far *)src;
dst = (char far *)dst + 1;
src = (char far *)src + 1;
}
return(dst);
}
 
unsigned short mdr_dos_fclose(unsigned short handle) {
/sved/trunk/libc.h
6,7 → 6,7
 
size_t strlen(const char *s);
void bzero(void *ptr, size_t len);
void far *_fmemmove(void far *dst, const void far *src, size_t len);
void fmemmove(void far *dst, const void far *src, size_t len);
unsigned short mdr_dos_fopen(const char *fname, unsigned short *fhandle);
unsigned short mdr_dos_fclose(unsigned short handle);
unsigned short _dos_freemem(unsigned short segn);
/sved/trunk/sved.c
122,7 → 122,7
/* create a new block and copy data over */
newptr = line_calloc(newsiz);
if (newptr == NULL) return(-1);
_fmemmove(newptr, db->cursor, sizeof(struct line) + db->cursor->len);
fmemmove(newptr, db->cursor, sizeof(struct line) + db->cursor->len);
 
/* rewire the linked list */
db->cursor = newptr;
149,7 → 149,7
}
db->cursor = l;
if (slen > 0) {
_fmemmove(l->payload, line, slen);
fmemmove(l->payload, line, slen);
l->len = slen;
}
 
205,7 → 205,7
if (sizeof(struct line) + f->cursor->len + len < len) goto ERR; /* overflow check */
if (curline_resize(f, f->cursor->len + len) != 0) goto ERR;
 
_fmemmove(f->cursor->payload + f->cursor->len, buf, len);
fmemmove(f->cursor->payload + f->cursor->len, buf, len);
f->cursor->len += len;
 
return(0);
597,7 → 597,7
 
static void del(struct file *db) {
if (db->cursorposx + db->xoffset < db->cursor->len) {
_fmemmove(db->cursor->payload + db->cursorposx + db->xoffset, db->cursor->payload + db->cursorposx + db->xoffset + 1, db->cursor->len - db->cursorposx - db->xoffset);
fmemmove(db->cursor->payload + db->cursorposx + db->xoffset, db->cursor->payload + db->cursorposx + db->xoffset + 1, db->cursor->len - db->cursorposx - db->xoffset);
db->cursor->len -= 1; /* do this AFTER memmove so the copy includes the nul terminator */
uidirty.from = db->cursorposy;
uidirty.to = db->cursorposy;
606,7 → 606,7
struct line far *nextline = db->cursor->next;
if (db->cursor->next->len > 0) {
if (curline_resize(db, db->cursor->len + db->cursor->next->len + 1) == 0) {
_fmemmove(db->cursor->payload + db->cursor->len, db->cursor->next->payload, db->cursor->next->len + 1);
fmemmove(db->cursor->payload + db->cursor->len, db->cursor->next->payload, db->cursor->next->len + 1);
db->cursor->len += db->cursor->next->len;
}
}
866,7 → 866,7
if (curline_resize(db, db->cursor->len + len) == 0) {
unsigned short off = db->xoffset + db->cursorposx;
db->modflag = 1;
_fmemmove(db->cursor->payload + off + len, db->cursor->payload + off, db->cursor->len - off + 1);
fmemmove(db->cursor->payload + off + len, db->cursor->payload + off, db->cursor->len - off + 1);
db->cursor->len += len;
uidirty.from = db->cursorposy;
uidirty.to = db->cursorposy;
1306,7 → 1306,7
uidirty.from = db->cursorposy;
uidirty.to = db->cursorposy;
if (db->cursor->len != 0) {
_fmemmove(clipboard->payload, db->cursor->payload, db->cursor->len);
fmemmove(clipboard->payload, db->cursor->payload, db->cursor->len);
clipboard->len = db->cursor->len;
}
mdr_bios_tickswait(2); /* ca 100ms */