Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S264486AbTGBUiP (ORCPT ); Wed, 2 Jul 2003 16:38:15 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S264487AbTGBUiP (ORCPT ); Wed, 2 Jul 2003 16:38:15 -0400 Received: from chaos.analogic.com ([204.178.40.224]:20354 "EHLO chaos.analogic.com") by vger.kernel.org with ESMTP id S264486AbTGBUiN (ORCPT ); Wed, 2 Jul 2003 16:38:13 -0400 Date: Wed, 2 Jul 2003 16:55:44 -0400 (EDT) From: "Richard B. Johnson" X-X-Sender: root@chaos Reply-To: root@chaos.analogic.com To: Kay Sievers cc: linux-kernel@vger.kernel.org Subject: Re: why does sscanf() does not interpret number length attributes? In-Reply-To: <20030702203433.GA14854@vrfy.org> Message-ID: References: <20030702203433.GA14854@vrfy.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1403 Lines: 42 On Wed, 2 Jul 2003, Kay Sievers wrote: > I needed a conversion from hex-string to integer and found > this mail from Linus suggesting sscanf: > > http://marc.theaimsgroup.com/?l=linux-kernel&m=101414195507893&w=2 > > but sscanf in linux-2.5/lib/vsprintf.c interpretes length attributes > only when the type is a string. It uses simple_strtoul() and it will > read the buffer until it finds a non-(hex)digit. > > int i; > char str[] ="34AFFE45XYZ"; > sscanf(str, "%1x", &i); > > i will be '0x34AFFE45' instead of the expected '3'. > > Is this behaviour intended or is just nobody caring about? > The in-kernel vsprintf() is very primative, used for very simple things. Note that it doesn't even have "%f". You should just do something like: i = (int) *str + '0'; ... if you need to read part of a number. You don't really wany to increase the size of the permanent in-kernel stuff if you can help. You add any increased functionality to your modules so it is used only when needed. Cheers, Dick Johnson Penguin : Linux version 2.4.20 on an i686 machine (797.90 BogoMips). Why is the government concerned about the lunatic fringe? Think about it. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/