Re: [PATCH] Rename progname as it is provided by libc

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Sep 8, 2017 at 9:25 AM, Eric Sandeen <sandeen@xxxxxxxxxxx> wrote:
> 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



[Index of Archives]     [XFS Filesystem Development (older mail)]     [Linux Filesystem Development]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux RAID]     [Linux SCSI]


  Powered by Linux