(svn r8093) -Codechange: Add a function to get a string representation of an MD5SUM and use it.
--- a/src/newgrf_config.cpp Sat Jan 13 13:33:36 2007 +0000
+++ b/src/newgrf_config.cpp Sat Jan 13 13:47:57 2007 +0000
@@ -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 Sat Jan 13 13:33:36 2007 +0000
+++ b/src/newgrf_gui.cpp Sat Jan 13 13:47:57 2007 +0000
@@ -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 Sat Jan 13 13:33:36 2007 +0000
+++ b/src/string.cpp Sat Jan 13 13:47:57 2007 +0000
@@ -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 */
--- a/src/string.h Sat Jan 13 13:33:36 2007 +0000
+++ b/src/string.h Sat Jan 13 13:47:57 2007 +0000
@@ -55,6 +55,8 @@
return t - str;
}
+/** Convert the md5sum number to a 'hexadecimal' string, return next pos in buffer */
+char *md5sumToString(char *buf, const char *last, const uint8 md5sum[16]);
typedef uint32 WChar;