Let's talk about struct
I know what struct is but haven't seen such use of it. 
Can any one explain to me in more details what that code do ?

    static struct option const long_options[] =
    {
      {"all", no_argument, NULL, 'a'},
      {"kernel-name", no_argument, NULL, 's'},
      {"sysname", no_argument, NULL, 's'},	/* Obsolescent.  */
      {"nodename", no_argument, NULL, 'n'},
      {"kernel-release", no_argument, NULL, 'r'},
      {"release", no_argument, NULL, 'r'},  /* Obsolescent.  */
      {"kernel-version", no_argument, NULL, 'v'},
      {"machine", no_argument, NULL, 'm'},
      {"processor", no_argument, NULL, 'p'},
      {"hardware-platform", no_argument, NULL, 'i'},
      {"operating-system", no_argument, NULL, 'o'},
      {GETOPT_HELP_OPTION_DECL},
      {GETOPT_VERSION_OPTION_DECL},
      {NULL, 0, NULL, 0}
    };
Let's talk about struct
===

I know what struct is but haven't seen such use of it. 
Can any one explain to me in more details what that code do ?

    static struct option const long_options[] =
    {
      {"all", no_argument, NULL, 'a'},
      {"kernel-name", no_argument, NULL, 's'},
      {"sysname", no_argument, NULL, 's'},	/* Obsolescent.  */
      {"nodename", no_argument, NULL, 'n'},
      {"kernel-release", no_argument, NULL, 'r'},
      {"release", no_argument, NULL, 'r'},  /* Obsolescent.  */
      {"kernel-version", no_argument, NULL, 'v'},
      {"machine", no_argument, NULL, 'm'},
      {"processor", no_argument, NULL, 'p'},
      {"hardware-platform", no_argument, NULL, 'i'},
      {"operating-system", no_argument, NULL, 'o'},
      {GETOPT_HELP_OPTION_DECL},
      {GETOPT_VERSION_OPTION_DECL},
      {NULL, 0, NULL, 0}
    };