summaryrefslogtreecommitdiff
path: root/core/strecpy.inc
diff options
context:
space:
mode:
authorH. Peter Anvin <hpa@zytor.com>2008-05-29 15:11:38 -0700
committerH. Peter Anvin <hpa@zytor.com>2008-05-29 15:11:38 -0700
commitb536209dfb7bd50c37061735fe10d2c19a97d26d (patch)
tree9d8ca6882fc5d9721fb0efea1abfd6dc09886814 /core/strecpy.inc
parent3ec40a0119587f63411475c76c69f9db24c7598e (diff)
downloadsyslinux-b536209dfb7bd50c37061735fe10d2c19a97d26d.tar.gz
Move files out of root into core, dos, and utils
Move source files out of the root directory; the root is a mess and has become virtually unmaintainable. The Syslinux core now lives in core/; the Linux and generic utilities has moved into utils/, and copybs.com has moved into dos/; it had to go somewhere, and it seemed as good a place as any.
Diffstat (limited to 'core/strecpy.inc')
-rw-r--r--core/strecpy.inc28
1 files changed, 28 insertions, 0 deletions
diff --git a/core/strecpy.inc b/core/strecpy.inc
new file mode 100644
index 00000000..1fc53e96
--- /dev/null
+++ b/core/strecpy.inc
@@ -0,0 +1,28 @@
+;
+; strecpy: Copy DS:SI -> ES:DI up to and including a null byte;
+; on exit SI and DI point to the byte *after* the null byte.
+; BP holds a pointer to the first byte beyond the end of the
+; target buffer; return with CF=1 if target buffer overflows;
+; the output is still zero-terminated.
+;
+ section .text
+
+strecpy:
+ push ax
+ push bp
+ dec bp
+ dec bp
+.loop: lodsb
+ stosb
+ and al,al ; CF=0
+ jz .done
+ cmp bp,di ; CF set if BP < DI
+ jnc .loop
+
+ ; Zero-terminate overflow string
+ mov al,0 ; Avoid changing flags
+ stosb
+.done:
+ pop bp
+ pop ax
+ ret