Mercurial > projects > ldc
view runtime/internal/util/string.d @ 1126:899a2d90645b
Fix some issues with fawzi's patch.
- It now actually compiles:
- import stdc.stdio for string formatting functions)
- remove extra '{'
- Use snprintf() instead of sprintf().
- Use return value from snprintf instead of strlen().
- Don't print the filename in Exception.writeOut() if it has zero length and
the line number is 0
(It would previously only skip these if the filename was null, but not if it
was a different empty string)
- Ignore empty filename + line number 0 in FrameInfo.writeOut() as well.
author | Frits van Bommel <fvbommel wxs.nl> |
---|---|
date | Wed, 18 Mar 2009 15:33:19 +0100 |
parents | ecb429ee0648 |
children | 4b2b2cd865e3 |
line wrap: on
line source
/******************************************************************************* copyright: Copyright (c) 2004 Tango group. All rights reserved license: BSD style: $(LICENSE) version: Initial release: July 2006 Various char[] utilities *******************************************************************************/ module util.string; private import tango.stdc.string; // convert uint to char[], within the given buffer // Returns a valid slice of the populated buffer char[] intToUtf8 (char[] tmp, size_t val) in { assert (tmp.length > 20, "atoi buffer should be 20 or more chars wide"); } body { char* p = tmp.ptr + tmp.length; do { *--p = cast(char)((val % 10) + '0'); } while (val /= 10); return tmp [cast(size_t)(p - tmp.ptr) .. $]; } // function to compare two strings int stringCompare (char[] s1, char[] s2) { auto len = s1.length; if (s2.length < len) len = s2.length; int result = memcmp(s1.ptr, s2.ptr, len); if (result == 0) result = cast(int)s1.length - cast(int)s2.length; return result; }