Smarter smaps parsing.

See #518145.

svn path=/trunk/; revision=2713
This commit is contained in:
Benoît Dejean
2008-02-24 17:52:24 +00:00
parent 2078320e14
commit 35fab4d9aa
2 changed files with 96 additions and 49 deletions

View File

@@ -17,27 +17,31 @@
unsigned long long
get_scaled(const char *buffer, const char *key)
{
const char *ptr;
const char *ptr = buffer;;
char *next;
unsigned long long value = 0;
unsigned long long value;
if (G_LIKELY((ptr = strstr(buffer, key))))
{
ptr += strlen(key);
value = strtoull(ptr, &next, 0);
for ( ; *next; ++next) {
if (*next == 'k') {
value *= 1024;
break;
} else if (*next == 'M') {
value *= 1024 * 1024;
break;
}
if (key) {
if (G_LIKELY((ptr = strstr(buffer, key))))
ptr += strlen(key);
else {
g_warning("Could not read key '%s' in buffer '%s'",
key, buffer);
return 0;
}
} else
g_warning("Could not read key '%s' in buffer '%s'",
key, buffer);
}
value = strtoull(ptr, &next, 0);
for ( ; *next; ++next) {
if (*next == 'k') {
value *= 1024;
break;
} else if (*next == 'M') {
value *= 1024 * 1024;
break;
}
}
return value;
}