This is better, how about: if (!ovs_scan(s, "%16"SCNx64"%16"SCNx64, &ufid->u64.hi, &ufid->u64.lo) ...
On Thu, Dec 18, 2014 at 10:40 AM, Joe Stringer <joestrin...@nicira.com> wrote: > You mean "%16"SCNx64? That's much tidier:-) > > Full diff against master is: > > diff --git a/lib/odp-util.c b/lib/odp-util.c > index 1dc63ef..b1940c7 100644 > --- a/lib/odp-util.c > +++ b/lib/odp-util.c > @@ -2017,12 +2017,12 @@ odp_ufid_from_string(const char *s_, ovs_u128 *ufid) > return -EINVAL; > } > > - if (!ovs_scan(s, "%"SCNx64, &ufid->u64.hi)) { > + if (!ovs_scan(s, "%16"SCNx64, &ufid->u64.hi)) { > return -EINVAL; > } > s += 16; > > - if (!ovs_scan(s, "%"SCNx64, &ufid->u64.lo)) { > + if (!ovs_scan(s, "%16"SCNx64, &ufid->u64.lo)) { > return -EINVAL; > } > s += 16; > > > On 18 December 2014 at 10:01, Andy Zhou <az...@nicira.com> wrote: >> Would it be simpler to do "16%"SCNx64 ? >> >> On Wed, Dec 17, 2014 at 10:34 AM, Joe Stringer <joestrin...@nicira.com> >> wrote: >>> Commit 534a19b (dpctl: Add support for using UFID to add/del flows.) >>> introduced string parsing functions for UFIDs, but provided a broken >>> implementation where the upper 64 bits would be ignored, then the lower >>> 64 bits would be read into both the lower and upper UFID positions. Fix >>> the implementation to read the upper bits properly. >>> >>> Signed-off-by: Joe Stringer <joestrin...@nicira.com> >>> --- >>> lib/odp-util.c | 4 +++- >>> 1 file changed, 3 insertions(+), 1 deletion(-) >>> >>> diff --git a/lib/odp-util.c b/lib/odp-util.c >>> index 1dc63ef..467295e 100644 >>> --- a/lib/odp-util.c >>> +++ b/lib/odp-util.c >>> @@ -2005,6 +2005,7 @@ odp_ufid_from_string(const char *s_, ovs_u128 *ufid) >>> const char *s = s_; >>> >>> if (ovs_scan(s, "ufid:")) { >>> + char upper[17]; >>> size_t n; >>> >>> s += 5; >>> @@ -2017,7 +2018,8 @@ odp_ufid_from_string(const char *s_, ovs_u128 *ufid) >>> return -EINVAL; >>> } >>> >>> - if (!ovs_scan(s, "%"SCNx64, &ufid->u64.hi)) { >>> + ovs_strzcpy(upper, s, 17); >>> + if (!ovs_scan(upper, "%"SCNx64, &ufid->u64.hi)) { >>> return -EINVAL; >>> } >>> s += 16; >>> -- >>> 1.7.10.4 >>> >>> _______________________________________________ >>> dev mailing list >>> dev@openvswitch.org >>> http://openvswitch.org/mailman/listinfo/dev _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev