git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 1/3] diff --stat: allow custom diffstat output width.

From
Linus Torvalds <torvalds@osdl.org>
Date
Sep 29, 2006, 05:58 UTC
Message-ID
<Pine.LNX.4.64.0609282252430.3952@g5.osdl.org>
In-Reply-To
<7vr6xvp7jm.fsf@assigned-by-dhcp.cox.net>
On Thu, 28 Sep 2006, Junio C Hamano wrote:
Show 5 quoted lines
> 
> This is simply too clever; -pedantic does not like assignment of
> arg to end (constness -- and strtoul takes pointer to non-const
> char *, so making the type of end const char * is not an answer
> either).

The _code_ really is right. The problem is "strtoul()" interfaces and a C typing oddity.

> And I do not like casting constness away: end = (char *) arg.
You could fix it by doing something like this:
	static inline unsigned long sane_strtoul(const char *n,
						 const char **p,
						 int base)
	{
		char *end;
		unsigned long res;
		res = strtoul(n, &end, base);
		*p = end;
		return res;
	}

because the only reason strtoul() warns now is that C type-rules don't allow the (obviously safe - but pointers migth have strange representations) conversion of "char **" into "const char **", even though "char *" can be converted into "const char *".

At that point, the cast is probably simpler, but the above should be strictly correct pedantic ANSI C.

I didn't even try it, though.
			Linus
Previous: Junio C HamanoNext: Junio C Hamano
Message 8 of 12 in “diff --stat: allow custom diffstat output width.”
  1. 1/3 diff --stat: allow custom diffstat output width.Junio C Hamano, Sep 27, 2006
  2. David RientjesSep 27, 2006
  3. Linus TorvaldsSep 28, 2006
  4. Junio C HamanoSep 28, 2006
  5. Linus TorvaldsSep 28, 2006
  6. Junio C HamanoSep 29, 2006
  7. Junio C HamanoSep 29, 2006
  8. Linus TorvaldsSep 29, 2006
  9. Junio C HamanoSep 29, 2006
  10. Linus TorvaldsSep 29, 2006
  11. Adrian BunkSep 28, 2006
  12. Johannes SchindelinSep 28, 2006

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.