FreeCalypso > hg > freecalypso-sw
changeset 825:f8eaff87563f
gsm-fw: replaced strtok() from newlib with 4.3BSD-Tahoe version
newlib version uses malloc which is not allowed
author | Space Falcon <falcon@ivan.Harhan.ORG> |
---|---|
date | Mon, 06 Apr 2015 00:24:07 +0000 |
parents | a7bbc4fdd447 |
children | b0ac0b8d2d85 |
files | gsm-fw/sprintf/Makefile gsm-fw/sprintf/strtok.c |
diffstat | 2 files changed, 58 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/gsm-fw/sprintf/Makefile Sun Apr 05 22:20:29 2015 +0000 +++ b/gsm-fw/sprintf/Makefile Mon Apr 06 00:24:07 2015 +0000 @@ -3,7 +3,7 @@ AR= arm-elf-ar RANLIB= arm-elf-ranlib -OBJS= float.o integer.o sprintf.o vspcore.o +OBJS= float.o integer.o sprintf.o strtok.o vspcore.o all: libsprintf.a
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gsm-fw/sprintf/strtok.c Mon Apr 06 00:24:07 2015 +0000 @@ -0,0 +1,57 @@ +/* + * Copyright (c) 1985 Regents of the University of California. + * All rights reserved. + * + * Redistribution and use in source and binary forms are permitted + * provided that the above copyright notice and this paragraph are + * duplicated in all such forms and that any documentation, + * advertising materials, and other materials related to such + * distribution and use acknowledge that the software was developed + * by the University of California, Berkeley. The name of the + * University may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED + * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. + */ + +#if defined(LIBC_SCCS) && !defined(lint) +static char sccsid[] = "@(#)strtok.c 5.4 (Berkeley) 6/27/88"; +#endif /* LIBC_SCCS and not lint */ + +char * +strtok(s, sep) + register char *s, *sep; +{ + register char *p; + register c; + static char *lasts; + + if (s == 0) + s = lasts; + if (s == 0) + return (0); + + while (c = *s) { + if (!index(sep, c)) + break; + s++; + } + + if (c == '\0') { + lasts = 0; + return (0); + } + + for (p = s; c = *++p; ) + if (index(sep, c)) + break; + + if (c == '\0') + lasts = 0; + else { + *p++ = '\0'; + lasts = p; + } + return (s); +}