On 9/2/17 4:54 PM, Khem Raj wrote: > Rename local variable progname to avoid a clash with libc > global symbols > > Signed-off-by: Khem Raj <raj.khem@xxxxxxxxx> > --- > io/init.c | 10 +++++----- > mdrestore/xfs_mdrestore.c | 10 +++++----- > quota/init.c | 10 +++++----- > spaceman/init.c | 8 ++++---- > 4 files changed, 19 insertions(+), 19 deletions(-) > First of all, this doesn't build. Please don't send untested patches... [LD] xfs_io attr.o: In function `chattr_f': /mnt/test2/git/xfsprogs-maint/io/attr.c:316: undefined reference to `progname' /mnt/test2/git/xfsprogs-maint/io/attr.c:310: undefined reference to `progname' /mnt/test2/git/xfsprogs-maint/io/attr.c:332: undefined reference to `progname' /mnt/test2/git/xfsprogs-maint/io/attr.c:326: undefined reference to `progname' attr.o: In function `chattr_callback': /mnt/test2/git/xfsprogs-maint/io/attr.c:252: undefined reference to `progname' attr.o:/mnt/test2/git/xfsprogs-maint/io/attr.c:255: more undefined references to `progname' follow collect2: ld returned 1 exit status gmake[3]: *** [xfs_io] Error 1 gmake[2]: *** [io] Error 2 make[1]: *** [default] Error 2 make: *** [default] Error 2 second: is progname really a global symbol? I know of __progname, but not progname. i.e. this works: #include <stdio.h> extern const char *__progname; int main( int argc, char **argv) { printf("progname: %s\n", __progname); } # gcc -o test test.c # ./test progname: test but this doesn't: #include <stdio.h> extern const char *progname; int main( int argc, char **argv) { printf("progname %s\n", progname); } # gcc -o test test.c /tmp/ccjaZrXZ.o: In function `main': test.c:(.text+0x12): undefined reference to `progname' collect2: ld returned 1 exit status -Eric > diff --git a/io/init.c b/io/init.c > index 20d5f80..e82e101 100644 > --- a/io/init.c > +++ b/io/init.c > @@ -23,7 +23,7 @@ > #include "init.h" > #include "io.h" > > -char *progname; > +char *io_progname; > int exitcode; > int expert; > int idlethread; > @@ -35,7 +35,7 @@ usage(void) > { > fprintf(stderr, > _("Usage: %s [-adfinrRstVx] [-m mode] [-p prog] [[-c|-C] cmd]... file\n"), > - progname); > + io_progname); > exit(1); > } > > @@ -142,7 +142,7 @@ init( > xfs_fsop_geom_t geometry = { 0 }; > struct fs_path fsp; > > - progname = basename(argv[0]); > + io_progname = basename(argv[0]); > setlocale(LC_ALL, ""); > bindtextdomain(PACKAGE, LOCALEDIR); > textdomain(PACKAGE); > @@ -186,7 +186,7 @@ init( > flags |= IO_NONBLOCK; > break; > case 'p': > - progname = optarg; > + io_progname = optarg; > break; > case 'r': > flags |= IO_READONLY; > @@ -207,7 +207,7 @@ init( > expert = 1; > break; > case 'V': > - printf(_("%s version %s\n"), progname, VERSION); > + printf(_("%s version %s\n"), io_progname, VERSION); > exit(0); > default: > usage(); > diff --git a/mdrestore/xfs_mdrestore.c b/mdrestore/xfs_mdrestore.c > index 9d1b4e8..b840a54 100644 > --- a/mdrestore/xfs_mdrestore.c > +++ b/mdrestore/xfs_mdrestore.c > @@ -19,7 +19,7 @@ > #include "libxfs.h" > #include "xfs_metadump.h" > > -char *progname; > +char *mdrestore_progname; > int show_progress = 0; > int show_info = 0; > int progress_since_warning = 0; > @@ -30,7 +30,7 @@ fatal(const char *msg, ...) > va_list args; > > va_start(args, msg); > - fprintf(stderr, "%s: ", progname); > + fprintf(stderr, "%s: ", mdrestore_progname); > vfprintf(stderr, msg, args); > exit(1); > } > @@ -194,7 +194,7 @@ perform_restore( > static void > usage(void) > { > - fprintf(stderr, "Usage: %s [-V] [-g] source target\n", progname); > + fprintf(stderr, "Usage: %s [-V] [-g] source target\n", mdrestore_progname); line > 80 cols, we try to avoid that > exit(1); > } > > @@ -212,7 +212,7 @@ main( > struct stat statbuf; > int is_target_file; > > - progname = basename(argv[0]); > + mdrestore_progname = basename(argv[0]); > > while ((c = getopt(argc, argv, "giV")) != EOF) { > switch (c) { > @@ -223,7 +223,7 @@ main( > show_info = 1; > break; > case 'V': > - printf("%s version %s\n", progname, VERSION); > + printf("%s version %s\n", mdrestore_progname, VERSION); 80 col > exit(0); > default: > usage(); > diff --git a/quota/init.c b/quota/init.c > index d45dc4c..46403de 100644 > --- a/quota/init.c > +++ b/quota/init.c > @@ -21,7 +21,7 @@ > #include "input.h" > #include "init.h" > > -char *progname; > +char *quota_progname; > int exitcode; > int expert; > bool foreign_allowed = false; > @@ -47,7 +47,7 @@ usage(void) > { > fprintf(stderr, > _("Usage: %s [-V] [-x] [-f] [-p prog] [-c cmd]... [-d project]... [path]\n"), > - progname); > + quota_progname); > exit(1); > } > > @@ -147,7 +147,7 @@ init( > { > int c; > > - progname = basename(argv[0]); > + quota_progname = basename(argv[0]); > setlocale(LC_ALL, ""); > bindtextdomain(PACKAGE, LOCALEDIR); > textdomain(PACKAGE); > @@ -173,13 +173,13 @@ init( > projid_file = optarg; > break; > case 'p': > - progname = optarg; > + quota_progname = optarg; > break; > case 'x': > expert++; > break; > case 'V': > - printf(_("%s version %s\n"), progname, VERSION); > + printf(_("%s version %s\n"), quota_progname, VERSION); > exit(0); > default: > usage(); > diff --git a/spaceman/init.c b/spaceman/init.c > index b3eface..bedf112 100644 > --- a/spaceman/init.c > +++ b/spaceman/init.c > @@ -23,7 +23,7 @@ > #include "path.h" > #include "space.h" > > -char *progname; > +char *spaceman_progname; > int exitcode; > > void > @@ -31,7 +31,7 @@ usage(void) > { > fprintf(stderr, > _("Usage: %s [-c cmd] file\n"), > - progname); > + spaceman_progname); > exit(1); > } > > @@ -74,7 +74,7 @@ init( > xfs_fsop_geom_t geometry = { 0 }; > struct fs_path fsp; > > - progname = basename(argv[0]); > + spaceman_progname = basename(argv[0]); > setlocale(LC_ALL, ""); > bindtextdomain(PACKAGE, LOCALEDIR); > textdomain(PACKAGE); > @@ -86,7 +86,7 @@ init( > add_user_command(optarg); > break; > case 'V': > - printf(_("%s version %s\n"), progname, VERSION); > + printf(_("%s version %s\n"), spaceman_progname, VERSION); 80 col > exit(0); > default: > usage(); > -- To unsubscribe from this list: send the line "unsubscribe linux-xfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html