(svn r8093) -Codechange: Add a function to get a string representation of an MD5SUM and use it.

This commit is contained in:
Darkvater 2007-01-13 13:47:57 +00:00
parent f2e5e604fb
commit 5ed33e549e
4 changed files with 23 additions and 11 deletions

View File

@ -205,12 +205,9 @@ bool IsGoodGRFConfigList(void)
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;

View File

@ -41,9 +41,7 @@ static int parse_intlist(const char *p, int *items, int maxitems)
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 @@ static void ShowNewGRFInfo(const GRFConfig *c, uint x, uint y, uint w, bool show
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);

View File

@ -177,6 +177,24 @@ int CDECL vsnprintf(char *str, size_t size, const char *format, va_list ap)
#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 */

View File

@ -55,6 +55,8 @@ static inline int ttd_strnlen(const char *str, int maxlen)
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;