* [PATCH 0/2] Improve portability for OpenSolaris @ 2008-08-27 17:39 David Soria Parra 2008-08-27 17:39 ` [PATCH 1/2] Improvate portability: Display pid_t's always as long David Soria Parra 0 siblings, 1 reply; 9+ messages in thread From: David Soria Parra @ 2008-08-27 17:39 UTC (permalink / raw) To: git This small patch series fixes some compile warnings on OpenSolaris/Solaris. As pid_t is a long on Solaris, I changed the output of fprintf&co to longs and cast pids to long, so that we are safe on the solaris ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 1/2] Improvate portability: Display pid_t's always as long 2008-08-27 17:39 [PATCH 0/2] Improve portability for OpenSolaris David Soria Parra @ 2008-08-27 17:39 ` David Soria Parra 2008-08-27 17:39 ` [PATCH 2/2] Improve portability: Avoid SS constant as it is already defined David Soria Parra 2008-08-27 19:03 ` [PATCH 1/2] Improvate portability: Display pid_t's always as long Junio C Hamano 0 siblings, 2 replies; 9+ messages in thread From: David Soria Parra @ 2008-08-27 17:39 UTC (permalink / raw) To: git; +Cc: David Soria Parra From: David Soria Parra <dsp@php.net> Some systems (like e.g. OpenSolaris) define pid_t as long, therefore all our sprintf that use %i cause a compiler warning beacuse if the implicit long->int cast. So to make sure that we fit the limits we display pids as longs and cast them explicitly. Signed-off-by: David Soria Parra <dsp@php.net> --- builtin-commit.c | 2 +- builtin-fetch-pack.c | 2 +- daemon.c | 2 +- fast-import.c | 6 +++--- receive-pack.c | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/builtin-commit.c b/builtin-commit.c index 649c8be..b4c940f 100644 --- a/builtin-commit.c +++ b/builtin-commit.c @@ -320,7 +320,7 @@ static char *prepare_index(int argc, const char **argv, const char *prefix) die("unable to write new_index file"); fd = hold_lock_file_for_update(&false_lock, - git_path("next-index-%d", getpid()), 1); + git_path("next-index-%ld", (long) getpid()), 1); create_base_index(); add_remove_files(&partial); diff --git a/builtin-fetch-pack.c b/builtin-fetch-pack.c index 273239a..46bb3e2 100644 --- a/builtin-fetch-pack.c +++ b/builtin-fetch-pack.c @@ -540,7 +540,7 @@ static int get_pack(int xd[2], char **pack_lockfile) *av++ = "--fix-thin"; if (args.lock_pack || unpack_limit) { int s = sprintf(keep_arg, - "--keep=fetch-pack %d on ", getpid()); + "--keep=fetch-pack %ld on ", (long) getpid()); if (gethostname(keep_arg + s, sizeof(keep_arg) - s)) strcpy(keep_arg + s, "localhost"); *av++ = keep_arg; diff --git a/daemon.c b/daemon.c index 23278e2..1e5cb58 100644 --- a/daemon.c +++ b/daemon.c @@ -923,7 +923,7 @@ static void store_pid(const char *path) FILE *f = fopen(path, "w"); if (!f) die("cannot open pid file %s: %s", path, strerror(errno)); - if (fprintf(f, "%d\n", getpid()) < 0 || fclose(f) != 0) + if (fprintf(f, "%ld\n", (long) getpid()) < 0 || fclose(f) != 0) die("failed to write pid file %s: %s", path, strerror(errno)); } diff --git a/fast-import.c b/fast-import.c index 7089e6f..e04ed94 100644 --- a/fast-import.c +++ b/fast-import.c @@ -376,7 +376,7 @@ static void dump_marks_helper(FILE *, uintmax_t, struct mark_set *); static void write_crash_report(const char *err) { - char *loc = git_path("fast_import_crash_%d", getpid()); + char *loc = git_path("fast_import_crash_%ld", (long) getpid()); FILE *rpt = fopen(loc, "w"); struct branch *b; unsigned long lu; @@ -390,8 +390,8 @@ static void write_crash_report(const char *err) fprintf(stderr, "fast-import: dumping crash report to %s\n", loc); fprintf(rpt, "fast-import crash report:\n"); - fprintf(rpt, " fast-import process: %d\n", getpid()); - fprintf(rpt, " parent process : %d\n", getppid()); + fprintf(rpt, " fast-import process: %ld\n", (long) getpid()); + fprintf(rpt, " parent process : %ld\n", (long) getppid()); fprintf(rpt, " at %s\n", show_date(time(NULL), 0, DATE_LOCAL)); fputc('\n', rpt); diff --git a/receive-pack.c b/receive-pack.c index d44c19e..0a82f73 100644 --- a/receive-pack.c +++ b/receive-pack.c @@ -407,7 +407,7 @@ static const char *unpack(void) char keep_arg[256]; struct child_process ip; - s = sprintf(keep_arg, "--keep=receive-pack %i on ", getpid()); + s = sprintf(keep_arg, "--keep=receive-pack %li on ", (long) getpid()); if (gethostname(keep_arg + s, sizeof(keep_arg) - s)) strcpy(keep_arg + s, "localhost"); -- 1.6.0.174.gd789c ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 2/2] Improve portability: Avoid SS constant as it is already defined 2008-08-27 17:39 ` [PATCH 1/2] Improvate portability: Display pid_t's always as long David Soria Parra @ 2008-08-27 17:39 ` David Soria Parra 2008-08-27 18:56 ` Junio C Hamano 2008-08-27 19:03 ` [PATCH 1/2] Improvate portability: Display pid_t's always as long Junio C Hamano 1 sibling, 1 reply; 9+ messages in thread From: David Soria Parra @ 2008-08-27 17:39 UTC (permalink / raw) To: git; +Cc: David Soria Parra From: David Soria Parra <dsp@php.net> Constants that have the names of CPU registers are already defined in OpenSolaris's sys/regset.h. This causes a warning as we try to (re)define SS in ctype.c. So we just use another name. Signed-off-by: David Soria Parra <dsp@php.net> --- ctype.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ctype.c b/ctype.c index ee06eb7..6ed2ba2 100644 --- a/ctype.c +++ b/ctype.c @@ -5,14 +5,14 @@ */ #include "cache.h" -#define SS GIT_SPACE +#define SP GIT_SPACE #define AA GIT_ALPHA #define DD GIT_DIGIT unsigned char sane_ctype[256] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, SS, SS, 0, 0, SS, 0, 0, /* 0-15 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, SP, SP, 0, 0, SP, 0, 0, /* 0-15 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 16-15 */ - SS, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32-15 */ + SP, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 32-15 */ DD, DD, DD, DD, DD, DD, DD, DD, DD, DD, 0, 0, 0, 0, 0, 0, /* 48-15 */ 0, AA, AA, AA, AA, AA, AA, AA, AA, AA, AA, AA, AA, AA, AA, AA, /* 64-15 */ AA, AA, AA, AA, AA, AA, AA, AA, AA, AA, AA, 0, 0, 0, 0, 0, /* 80-15 */ -- 1.6.0.174.gd789c ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 2/2] Improve portability: Avoid SS constant as it is already defined 2008-08-27 17:39 ` [PATCH 2/2] Improve portability: Avoid SS constant as it is already defined David Soria Parra @ 2008-08-27 18:56 ` Junio C Hamano 2008-08-27 19:17 ` Junio C Hamano 0 siblings, 1 reply; 9+ messages in thread From: Junio C Hamano @ 2008-08-27 18:56 UTC (permalink / raw) To: David Soria Parra; +Cc: git, David Soria Parra David Soria Parra <sn_@gmx.net> writes: > From: David Soria Parra <dsp@php.net> > > Constants that have the names of CPU registers are already defined > in OpenSolaris's sys/regset.h. This causes a warning as we try to > (re)define SS in ctype.c. So we just use another name. I do not mind this _particular_ workaround per-se, but I have to wonder what happens the next time some random other platform has "SP" defined in a random header file. First of all, why are you including <sys/regset.h>? We certainly don't include from any of our header or source files. And second of all, why is the indirect inclusion of that header file by some standard header file we do include cause the namespace to get poluted with "SS" symbol? ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 2/2] Improve portability: Avoid SS constant as it is already defined 2008-08-27 18:56 ` Junio C Hamano @ 2008-08-27 19:17 ` Junio C Hamano 2008-08-28 0:34 ` David Soria Parra 0 siblings, 1 reply; 9+ messages in thread From: Junio C Hamano @ 2008-08-27 19:17 UTC (permalink / raw) To: David Soria Parra; +Cc: git, David Soria Parra Junio C Hamano <gitster@pobox.com> writes: > David Soria Parra <sn_@gmx.net> writes: > >> From: David Soria Parra <dsp@php.net> >> >> Constants that have the names of CPU registers are already defined >> in OpenSolaris's sys/regset.h. This causes a warning as we try to >> (re)define SS in ctype.c. So we just use another name. > > I do not mind this _particular_ workaround per-se, but I have to wonder > what happens the next time some random other platform has "SP" defined in > a random header file. If we are doing an workaround, how about doing it this way instead? ctype.c | 5 +++++ 1 files changed, 5 insertions(+), 0 deletions(-) diff --git i/ctype.c w/ctype.c index ee06eb7..d2bd38e 100644 --- i/ctype.c +++ w/ctype.c @@ -5,6 +5,11 @@ */ #include "cache.h" +/* Just so that no insane platform contaminates the namespace with these symbols */ +#undef SS +#undef AA +#undef DD + #define SS GIT_SPACE #define AA GIT_ALPHA #define DD GIT_DIGIT ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 2/2] Improve portability: Avoid SS constant as it is already defined 2008-08-27 19:17 ` Junio C Hamano @ 2008-08-28 0:34 ` David Soria Parra 0 siblings, 0 replies; 9+ messages in thread From: David Soria Parra @ 2008-08-28 0:34 UTC (permalink / raw) To: Junio C Hamano; +Cc: git, David Soria Parra Should be fine as well. Junio C Hamano wrote: > Junio C Hamano <gitster@pobox.com> writes: > >> David Soria Parra <sn_@gmx.net> writes: >> >>> From: David Soria Parra <dsp@php.net> >>> >>> Constants that have the names of CPU registers are already defined >>> in OpenSolaris's sys/regset.h. This causes a warning as we try to >>> (re)define SS in ctype.c. So we just use another name. >> I do not mind this _particular_ workaround per-se, but I have to wonder >> what happens the next time some random other platform has "SP" defined in >> a random header file. > > If we are doing an workaround, how about doing it this way instead? > > ctype.c | 5 +++++ > 1 files changed, 5 insertions(+), 0 deletions(-) > > diff --git i/ctype.c w/ctype.c > index ee06eb7..d2bd38e 100644 > --- i/ctype.c > +++ w/ctype.c > @@ -5,6 +5,11 @@ > */ > #include "cache.h" > > +/* Just so that no insane platform contaminates the namespace with these symbols */ > +#undef SS > +#undef AA > +#undef DD > + > #define SS GIT_SPACE > #define AA GIT_ALPHA > #define DD GIT_DIGIT ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 1/2] Improvate portability: Display pid_t's always as long 2008-08-27 17:39 ` [PATCH 1/2] Improvate portability: Display pid_t's always as long David Soria Parra 2008-08-27 17:39 ` [PATCH 2/2] Improve portability: Avoid SS constant as it is already defined David Soria Parra @ 2008-08-27 19:03 ` Junio C Hamano 2008-08-30 20:40 ` David Soria Parra 1 sibling, 1 reply; 9+ messages in thread From: Junio C Hamano @ 2008-08-27 19:03 UTC (permalink / raw) To: David Soria Parra; +Cc: git, David Soria Parra David Soria Parra <sn_@gmx.net> writes: > Some systems (like e.g. OpenSolaris) define pid_t as long, > therefore all our sprintf that use %i cause a compiler warning > beacuse if the implicit long->int cast. So to make sure that > we fit the limits we display pids as longs and cast them explicitly. This patch just makes one wonder what needs to happen when the next random platform has pid_t as long long or int32_t or whatever signed integral type that was picked arbitrarily by the platform. I think these *printf()s are mostly for informational purposes and if you favor minimum change, you might be better off casting it to "int" without changing the format specifiers. On the other hand, if you are shooting for maximum compatibility perhaps you may want to cast it to "intmax_t" and format as such. Casting to "long" does not make much sense from either perspective, does it? ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 1/2] Improvate portability: Display pid_t's always as long 2008-08-27 19:03 ` [PATCH 1/2] Improvate portability: Display pid_t's always as long Junio C Hamano @ 2008-08-30 20:40 ` David Soria Parra 2008-08-31 7:15 ` Junio C Hamano 0 siblings, 1 reply; 9+ messages in thread From: David Soria Parra @ 2008-08-30 20:40 UTC (permalink / raw) To: Junio C Hamano; +Cc: git, David Soria Parra > On the other hand, if you are shooting for maximum compatibility perhaps > you may want to cast it to "intmax_t" and format as such. Yes, good point, casting to long isn't enough. I think it's a good approach to cast the pids to intmax_t as pids are also used in git_path() and therefore might result in equal paths for separate processes if the pid is higher than int. so here is an updated patch: From da5519b3ae5ce84c703aeaab2bc4ea363897c334 Mon Sep 17 00:00:00 2001 From: David Soria Parra <dsp at> Date: Fri, 29 Aug 2008 01:19:43 +0200 Subject: [PATCH] Improvate portability: Cast pid_t's to intmax_t Some systems (like e.g. OpenSolaris) define pid_t as long, therefore all our sprintf that use %i cause a compiler warning beacuse if the implicit long->int cast. So to make sure that we fit the limits we display pids as intmax_t and cast them explicitly. Signed-off-by: David Soria Parra <dsp@php.net> --- builtin-commit.c | 2 +- builtin-fetch-pack.c | 2 +- daemon.c | 6 +++--- fast-import.c | 6 +++--- receive-pack.c | 2 +- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/builtin-commit.c b/builtin-commit.c index c870037..90ef3d5 100644 --- a/builtin-commit.c +++ b/builtin-commit.c @@ -320,7 +320,7 @@ static char *prepare_index(int argc, const char **argv, const char *prefix) die("unable to write new_index file"); fd = hold_lock_file_for_update(&false_lock, - git_path("next-index-%d", getpid()), 1); + git_path("next-index-%jd", (intmax_t) getpid()), 1); create_base_index(); add_remove_files(&partial); diff --git a/builtin-fetch-pack.c b/builtin-fetch-pack.c index 273239a..91616e7 100644 --- a/builtin-fetch-pack.c +++ b/builtin-fetch-pack.c @@ -540,7 +540,7 @@ static int get_pack(int xd[2], char **pack_lockfile) *av++ = "--fix-thin"; if (args.lock_pack || unpack_limit) { int s = sprintf(keep_arg, - "--keep=fetch-pack %d on ", getpid()); + "--keep=fetch-pack %jd on ", (intmax_t) getpid()); if (gethostname(keep_arg + s, sizeof(keep_arg) - s)) strcpy(keep_arg + s, "localhost"); *av++ = keep_arg; diff --git a/daemon.c b/daemon.c index 23278e2..6081986 100644 --- a/daemon.c +++ b/daemon.c @@ -86,7 +86,7 @@ static void logreport(int priority, const char *err, va_list params) * Since stderr is set to linebuffered mode, the * logging of different processes will not overlap */ - fprintf(stderr, "[%d] ", (int)getpid()); + fprintf(stderr, "[%jd] ", (intmax_t)getpid()); vfprintf(stderr, err, params); fputc('\n', stderr); } @@ -658,7 +658,7 @@ static void check_dead_children(void) remove_child(pid); if (!WIFEXITED(status) || (WEXITSTATUS(status) > 0)) dead = " (with error)"; - loginfo("[%d] Disconnected%s", (int)pid, dead); + loginfo("[%jd] Disconnected%s", (intmax_t)pid, dead); } } @@ -923,7 +923,7 @@ static void store_pid(const char *path) FILE *f = fopen(path, "w"); if (!f) die("cannot open pid file %s: %s", path, strerror(errno)); - if (fprintf(f, "%d\n", getpid()) < 0 || fclose(f) != 0) + if (fprintf(f, "%jd\n", (intmax_t) getpid()) < 0 || fclose(f) != 0) die("failed to write pid file %s: %s", path, strerror(errno)); } diff --git a/fast-import.c b/fast-import.c index 7089e6f..e3a6510 100644 --- a/fast-import.c +++ b/fast-import.c @@ -376,7 +376,7 @@ static void dump_marks_helper(FILE *, uintmax_t, struct mark_set *); static void write_crash_report(const char *err) { - char *loc = git_path("fast_import_crash_%d", getpid()); + char *loc = git_path("fast_import_crash_%jd", (intmax_t) getpid()); FILE *rpt = fopen(loc, "w"); struct branch *b; unsigned long lu; @@ -390,8 +390,8 @@ static void write_crash_report(const char *err) fprintf(stderr, "fast-import: dumping crash report to %s\n", loc); fprintf(rpt, "fast-import crash report:\n"); - fprintf(rpt, " fast-import process: %d\n", getpid()); - fprintf(rpt, " parent process : %d\n", getppid()); + fprintf(rpt, " fast-import process: %jd\n", (intmax_t) getpid()); + fprintf(rpt, " parent process : %jd\n", (intmax_t) getppid()); fprintf(rpt, " at %s\n", show_date(time(NULL), 0, DATE_LOCAL)); fputc('\n', rpt); diff --git a/receive-pack.c b/receive-pack.c index d44c19e..ec770d0 100644 --- a/receive-pack.c +++ b/receive-pack.c @@ -407,7 +407,7 @@ static const char *unpack(void) char keep_arg[256]; struct child_process ip; - s = sprintf(keep_arg, "--keep=receive-pack %i on ", getpid()); + s = sprintf(keep_arg, "--keep=receive-pack %ji on ", (intmax_t) getpid()); if (gethostname(keep_arg + s, sizeof(keep_arg) - s)) strcpy(keep_arg + s, "localhost"); -- 1.6.0.174.gd789c ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 1/2] Improvate portability: Display pid_t's always as long 2008-08-30 20:40 ` David Soria Parra @ 2008-08-31 7:15 ` Junio C Hamano 0 siblings, 0 replies; 9+ messages in thread From: Junio C Hamano @ 2008-08-31 7:15 UTC (permalink / raw) To: David Soria Parra; +Cc: git, David Soria Parra David Soria Parra <dsoria@gmx.net> writes: >> On the other hand, if you are shooting for maximum compatibility perhaps >> you may want to cast it to "intmax_t" and format as such. > Yes, good point, casting to long isn't enough. I think it's a good approach to cast the pids to intmax_t as pids > are also used in git_path() and therefore might result in equal paths for separate processes if > the pid is higher than int. > > so here is an updated patch: Please wrap lines to reasonable length (e.g. 70-76 cols). Please move commentary like this that clarifies context of the patch submission to after three-dashes (emulate patches from people with good manners). > From da5519b3ae5ce84c703aeaab2bc4ea363897c334 Mon Sep 17 00:00:00 2001 Especially, don't paste this line. > From: David Soria Parra <dsp at> > Date: Fri, 29 Aug 2008 01:19:43 +0200 > Subject: [PATCH] Improvate portability: Cast pid_t's to intmax_t "Improvate"? Including these in your message is not very useful. These in-body headers are used to override what can be read from the real headers of the e-mail message, but you do not have a valid e-mail address here! > Some systems (like e.g. OpenSolaris) define pid_t as long, > ... > diff --git a/builtin-commit.c b/builtin-commit.c > index c870037..90ef3d5 100644 > --- a/builtin-commit.c > +++ b/builtin-commit.c > @@ -320,7 +320,7 @@ static char *prepare_index(int argc, const char **argv, const char *prefix) > die("unable to write new_index file"); > > fd = hold_lock_file_for_update(&false_lock, > - git_path("next-index-%d", getpid()), 1); > + git_path("next-index-%jd", (intmax_t) getpid()), 1); Some systems we support do not have %j width specifier. I'd suggest casting up to uintmax_t and format with PRIuMAX, which we do define a substitute for portability. ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2008-08-31 7:16 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2008-08-27 17:39 [PATCH 0/2] Improve portability for OpenSolaris David Soria Parra 2008-08-27 17:39 ` [PATCH 1/2] Improvate portability: Display pid_t's always as long David Soria Parra 2008-08-27 17:39 ` [PATCH 2/2] Improve portability: Avoid SS constant as it is already defined David Soria Parra 2008-08-27 18:56 ` Junio C Hamano 2008-08-27 19:17 ` Junio C Hamano 2008-08-28 0:34 ` David Soria Parra 2008-08-27 19:03 ` [PATCH 1/2] Improvate portability: Display pid_t's always as long Junio C Hamano 2008-08-30 20:40 ` David Soria Parra 2008-08-31 7:15 ` Junio C Hamano
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).