Re: [PATCH 0/5] consistent setup code for external commands

Subsystems: the rest

2 messages, 2 authors, 2016-07-06 · open the first message on its own page

Re: [PATCH 0/5] consistent setup code for external commands

From: Junio C Hamano <hidden>
Date: 2016-07-06 15:17:42

Jeff King [off-list ref] writes:
On Fri, Jul 01, 2016 at 03:19:37PM -0700, Junio C Hamano wrote:
quoted
quoted
Here they are:

  [1/5]: add an extra level of indirection to main()
  [2/5]: common-main: call git_extract_argv0_path()
  [3/5]: common-main: call sanitize_stdfds()
  [4/5]: common-main: call restore_sigpipe_to_default()
  [5/5]: common-main: call git_setup_gettext()
As this is also a fix to maint-2.8 track, I tweaked them to ensure
that they apply there, and queued the result as jk/common-main.  I
double checked the result by comparing the result of applying these
five patches directly on top of master, and the result of merging
that jk/common-main (based on maint-2.8) into master, and they seem
to match.
Thanks, this obviously is a regression in v2.8, but I didn't even think
about that and just built it on top of master.

I think the cleanup that Dscho suggested elsewhere in the thread is a
good idea on top, but that can also just wait and come separately.
OK.

I think that amounts to the following single patch, which I cherry
picked from the topic in Dscho's repository he mentioned earlier.

With this applied on top of jk/common-main-2.8, when I merge it to
his b764cdf, the result matches his common-main topic, so we three
are on the same page, I'd think, and the result can be fed to the
2.8.x maintenance track.

-- >8 --
From: Johannes Schindelin <redacted>
Date: Fri, 1 Jul 2016 15:01:28 +0200
Subject: [PATCH] mingw: declare main()'s argv as const

In 84d32bf (sparse: Fix mingw_main() argument number/type errors,
2013-04-27), we addressed problems identified by the 'sparse' tool where
argv was declared inconsistently. The way we addressed it was by casting
from the non-const version to the const-version.

This patch is long overdue, fixing compat/mingw.h's declaration to
make the "argv" parameter const.  This also allows us to lose the
"const" trickery introduced earlier to common-main.c:main().

Signed-off-by: Johannes Schindelin <redacted>
Signed-off-by: Junio C Hamano <redacted>
---
 common-main.c  | 8 +-------
 compat/mingw.h | 2 +-
 2 files changed, 2 insertions(+), 8 deletions(-)
diff --git a/common-main.c b/common-main.c
index 3be5ad1..44a29e8 100644
--- a/common-main.c
+++ b/common-main.c
@@ -22,15 +22,9 @@ static void restore_sigpipe_to_default(void)
 	signal(SIGPIPE, SIG_DFL);
 }
 
-int main(int argc, char **av)
+int main(int argc, const char **argv)
 {
 	/*
-	 * This const trickery is explained in
-	 * 84d32bf7678259c08406571cd6ce4b7a6724dcba
-	 */
-	const char **argv = (const char **)av;
-
-	/*
 	 * Always open file descriptors 0/1/2 to avoid clobbering files
 	 * in die().  It also avoids messing up when the pipes are dup'ed
 	 * onto stdin/stdout/stderr in the child processes we spawn.
diff --git a/compat/mingw.h b/compat/mingw.h
index 69bb43d..1ac9086 100644
--- a/compat/mingw.h
+++ b/compat/mingw.h
@@ -535,7 +535,7 @@ extern CRITICAL_SECTION pinfo_cs;
 void mingw_startup();
 #define main(c,v) dummy_decl_mingw_main(); \
 static int mingw_main(c,v); \
-int main(int argc, char **argv) \
+int main(int argc, const char **argv) \
 { \
 	mingw_startup(); \
 	return mingw_main(__argc, (void *)__argv); \
-- 
2.9.0-457-ge524329

Re: [PATCH 0/5] consistent setup code for external commands

From: Johannes Schindelin <hidden>
Date: 2016-07-06 15:37:30

Hi Junio,

On Wed, 6 Jul 2016, Junio C Hamano wrote:
I think that amounts to the following single patch, which I cherry
picked from the topic in Dscho's repository he mentioned earlier.
That patch would be fine by me, too.

Thanks,
Dscho
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help