From 292ade6a223ff4f9fdf1242bab4cb01f632606c2 Mon Sep 17 00:00:00 2001 From: Joern Engel Date: Tue, 18 Apr 2006 21:03:08 -0700 Subject: [PATCH] --- yaml --- r: 27737 b: refs/heads/master c: 954c24227318c166ec1925e1229db442e1f56f51 h: refs/heads/master i: 27735: 55fb52c84e76e905db41eb516f10b03c7f79cfe7 v: v3 --- [refs] | 2 +- trunk/drivers/mtd/devices/block2mtd.c | 17 ++++++++++++++--- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 876df858acee..1f09b4416d9b 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 373d5e71833978fe3d91264d86857762bb92cfe2 +refs/heads/master: 954c24227318c166ec1925e1229db442e1f56f51 diff --git a/trunk/drivers/mtd/devices/block2mtd.c b/trunk/drivers/mtd/devices/block2mtd.c index 4160b8334c53..f54e4bf9b968 100644 --- a/trunk/drivers/mtd/devices/block2mtd.c +++ b/trunk/drivers/mtd/devices/block2mtd.c @@ -4,7 +4,7 @@ * block2mtd.c - create an mtd from a block device * * Copyright (C) 2001,2002 Simon Evans - * Copyright (C) 2004,2005 Jörn Engel + * Copyright (C) 2004-2006 Jörn Engel * * Licence: GPL */ @@ -351,6 +351,12 @@ static struct block2mtd_dev *add_device(char *devname, int erase_size) } +/* This function works similar to reguler strtoul. In addition, it + * allows some suffixes for a more human-readable number format: + * ki, Ki, kiB, KiB - multiply result with 1024 + * Mi, MiB - multiply result with 1024^2 + * Gi, GiB - multiply result with 1024^3 + */ static int ustrtoul(const char *cp, char **endp, unsigned int base) { unsigned long result = simple_strtoul(cp, endp, base); @@ -359,11 +365,16 @@ static int ustrtoul(const char *cp, char **endp, unsigned int base) result *= 1024; case 'M': result *= 1024; + case 'K': case 'k': result *= 1024; /* By dwmw2 editorial decree, "ki", "Mi" or "Gi" are to be used. */ - if ((*endp)[1] == 'i') - (*endp) += 2; + if ((*endp)[1] == 'i') { + if ((*endp)[2] == 'B') + (*endp) += 3; + else + (*endp) += 2; + } } return result; }