Mercurial > hg > openttd
changeset 5634:395bfe9e1f77 draft
(svn r8093) -Codechange: Add a function to get a string representation of an MD5SUM and use it.
author | Darkvater <Darkvater@openttd.org> |
---|---|
date | Sat, 13 Jan 2007 13:47:57 +0000 |
parents | a9c31d5be476 |
children | 9beef9076349 |
files | src/newgrf_config.cpp src/newgrf_gui.cpp src/string.cpp src/string.h |
diffstat | 4 files changed, 23 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/src/newgrf_config.cpp +++ b/src/newgrf_config.cpp @@ -205,12 +205,9 @@ const GRFConfig *f = FindGRFConfig(c->grfid, c->md5sum); if (f == NULL) { char buf[512], *p = buf; - uint i; p += snprintf(p, lastof(buf) - p, "Couldn't find NewGRF %08X (%s) checksum ", BSWAP32(c->grfid), c->filename); - for (i = 0; i < lengthof(c->md5sum); i++) { - p += snprintf(p, lastof(buf) - p, "%02X", c->md5sum[i]); - } + md5sumToString(p, lastof(buf), c->md5sum); ShowInfo(buf); res = false;
--- a/src/newgrf_gui.cpp +++ b/src/newgrf_gui.cpp @@ -41,9 +41,7 @@ static void ShowNewGRFInfo(const GRFConfig *c, uint x, uint y, uint w, bool show_params) { - char buff[512]; - char *s; - uint i; + char buff[256]; /* Draw filename or not if it is not known (GRF sent over internet) */ if (c->filename != NULL) { @@ -57,10 +55,7 @@ y += DrawStringMultiLine(x, y, STR_NEWGRF_GRF_ID, w); /* Prepare and draw MD5 sum */ - s = buff; - for (i = 0; i < lengthof(c->md5sum); i++) { - s += snprintf(s, lastof(buff) - s, "%02X", c->md5sum[i]); - } + md5sumToString(buff, lastof(buff), c->md5sum); SetDParamStr(0, buff); y += DrawStringMultiLine(x, y, STR_NEWGRF_MD5SUM, w);
--- a/src/string.cpp +++ b/src/string.cpp @@ -177,6 +177,24 @@ #endif /* WIN32 */ +/** Convert the md5sum to a hexadecimal string representation + * @param buf buffer to put the md5sum into + * @param last last character of buffer (usually lastof(buf)) + * @param md5sum the md5sum itself + * @return a pointer to the next character after the md5sum */ +char *md5sumToString(char *buf, const char *last, const uint8 md5sum[16]) +{ + char *p = buf; + + for (uint i = 0; i < 16; i++) { + p += snprintf(p, last + 1 - p, "%02X", md5sum[i]); + if (p >= last) break; + } + + return p; +} + + /* UTF-8 handling routines */