> On Mar 20, 2018, at 5:48 PM, Minghui Liu <minghui.liu...@gmail.com> wrote: > >> On Mar 20, 2018, at 5:20 PM, Rob Landley <r...@landley.net> wrote: >> >> On 03/15/2018 08:04 PM, Minghui Liu wrote: >>> From bf7875ae127d1d172cbf5cea48755c8773f46df8 Mon Sep 17 00:00:00 2001 >>> From: Minghui Liu <minghui.liu...@gmail.com> >>> Date: Thu, 15 Mar 2018 17:50:59 -0700 >>> Subject: [PATCH] Fix atolx "not integer" error when used with suffix b,c or >>> d >> >> Except d indicates the previous unit is decimal instead of binary. By itself >> it >> doesn't mean anything. > > What I meant was all the *d suffixs like kd, md, gd, etc. > atolx() still complains “not integer” when used with these suffixs. > >> >>> val = xstrtol(numstr, &c, 0); >>> - if (c != numstr && *c && (end = strchr(suffixes, tolower(*c)))) { >>> + if (c != numstr && *c && (end = strchr(suffixes, tolower(*c++)))) { >>> int shift = end-suffixes-2; >> >> This increments c even if it's not in suffixes, so it will consume (and >> discard) >> an unknown value. (Ala "truncate -s 1z file", not reported as an error.) > > Yes you are right. My bad. > >> >> The increment pretty much has to be its own line, it has to be inside the >> if(strchr()) curly brackets, but has to apply to all three shift categories. > > The (shift > 0) case needs to check for a ‘d’ character. If there is a ‘d’ we > need an extra increment.
I meant the (shift > 0) case needs to check if c==NULL before it checks if c is‘d'. Basically: if (*c && toupper(*c++)==‘d’) > >> >> Checked in a fix, thanks for the heads up. >> >> Rob > > I am sending another patch now. > > Regards, > Minghui > _______________________________________________ Toybox mailing list Toybox@lists.landley.net http://lists.landley.net/listinfo.cgi/toybox-landley.net