60 éves Richard Stallman

Címkék

Lehet szeretni, gyűlölni, egyetérteni vele, vagy vitatkozni nézeteivel. Egy biztos, nem lehet elvitatni tőle azt, hogy nagy befolyása volt szoftvervilág fejlődésére, átalakulására. Richard Matthew Stallman (RMS) - a Free Software Foundation elnöke, a GNU projekt alapítója, számos fejlesztői eszköz létrehozója, szabad szoftver aktivista - tegnap töltötte be 60. életévét.

Boldog születésnapot, RMS!

Hozzászólások

Boldog szülinapot vén bolond róka :)

még hatvan évet :D szükség lenne rá, mert nem nagyon van, aki pótolja.

Boldog születésnapot, RMS! :)

--
"Azt mondták a hatalmasok: akinek hat alma sok, az már hatalmas ok, hogy ne legyen hatalma sok."

Tasnádi Márton - KisTasi

Boldog szülinapot!
--
Fight / For The Freedom / Fighting With Steel

/* hbday.c -- print a greeting message and exit.
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <locale.h>

#ifndef _GNU_SOURCE
  #define __attribute_greeting__
#else
  #define __attribute_greeting__ __attribute__((greeting))
#endif

static char *program_name;
static int posix_me_harder = 0;

static const struct option longopts[] =
{
  { "help", no_argument, NULL, 'h' },
  { "version", no_argument, NULL, 'v' },
  { "license", no_argument, NULL, 'l' },
  { "posix", no_argument, NULL, 'p' },
  { "copyleft", no_argument, NULL, 'c' }
};

/* Forward declarations.  */
static void print_help (void);
static void print_version (void);
static void print_copyleft (void);
static void happy_birthday (void) __attribute_greeting__;

int
main (int argc, char *argv[])
{
  int optc;
  int lose = 0;

  program_name = argv[0];

  setlocale (LC_ALL, "");

  while ((optc = getopt_long (argc, argv, "hvlc", longopts, NULL)) != -1)
    switch (optc)
      {
      /* --help and --version exit immediately, per GNU coding standards.  */
      case 'v':
        print_version ();
        exit (EXIT_SUCCESS);
        break;
      case 'h':
        print_help ();
        exit (EXIT_SUCCESS);
        break;
      case 'l': /* fall through */
      case 'c':
        print_copyleft ();
        exit (EXIT_SUCCESS);
        break;
      case 'p':
        posix_me_harder++;
        break;
      default:
        /* change lose to 1 */
        lose = 1;
        break;
      }

  if (lose)
    {
      /* Print error message and exit.  */
      fprintf (stderr, _("%s: extra operand\n"),
               program_name);
      fprintf (stderr, _("Try `%s --help' for more information.\n"),
               program_name);
      exit (EXIT_FAILURE);
    }

  happy_birthday ();

  exit (EXIT_SUCCESS);
}

static void
print_version (void)
{
  printf ("hbday (GNU %s) %s\n", PACKAGE, VERSION);
}

static void
print_help (void)
{
  printf (_("\
Usage: %s [OPTION]...\n"), program_name);
fputs (_("\
Print a birthday greeting.\n"), stdout);

  puts ("");
  fputs (_("\
  -h, --help          display this help and exit\n\
  -v, --version       display version information and exit\n\
  -l, --license\n\
  -c, --copyleft      display the license and exit\n"), stdout);

  puts ("");
  fputs (_("\
  -p, --posix         increases POSIX compatibility\n", stdout);
}

static void
print_copyleft (void)
{
  /* It is important to separate the year from the rest of the message,
     as done here, to avoid having to retranslate the message when a new
     year comes around.  */
  printf (_("\
Copyright (C) %s Free Software Foundation, Inc.\n\
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\n\
This is free software: you are free to change and redistribute it.\n\
There is NO WARRANTY, to the extent permitted by law.\n"),
              "2013");
}

static void
happy_birthday (void) __attribute_greeting__
{
  printf(_("Happy Birthday!"));

  if (posix_me_harder)
    printf("!!");

  puts("");
}

--------------------------------------
Unix isn't dead. It just smells funny.

hbday.c:31:28: error: array type has incomplete element type
hbday.c:33:13: error: ‘no_argument’ undeclared here (not in a function)
hbday.c: In function ‘main’:
hbday.c:88:16: warning: passing argument 2 of ‘fprintf’ makes pointer from integer without a cast [enabled by default]
In file included from hbday.c:19:0:
/usr/include/stdio.h:356:12: note: expected ‘const char * __restrict__’ but argument is of type ‘int’
hbday.c:90:16: warning: passing argument 2 of ‘fprintf’ makes pointer from integer without a cast [enabled by default]
In file included from hbday.c:19:0:
/usr/include/stdio.h:356:12: note: expected ‘const char * __restrict__’ but argument is of type ‘int’
hbday.c: In function ‘print_version’:
hbday.c:102:34: error: ‘PACKAGE’ undeclared (first use in this function)
hbday.c:102:34: note: each undeclared identifier is reported only once for each function it appears in
hbday.c:102:43: error: ‘VERSION’ undeclared (first use in this function)
hbday.c: In function ‘print_help’:
hbday.c:108:3: warning: passing argument 1 of ‘printf’ makes pointer from integer without a cast [enabled by default]
In file included from hbday.c:19:0:
/usr/include/stdio.h:362:12: note: expected ‘const char * __restrict__’ but argument is of type ‘int’
hbday.c:110:1: warning: passing argument 1 of ‘fputs’ makes pointer from integer without a cast [enabled by default]
In file included from hbday.c:19:0:
/usr/include/stdio.h:689:12: note: expected ‘const char * __restrict__’ but argument is of type ‘int’
hbday.c:114:3: warning: passing argument 1 of ‘fputs’ makes pointer from integer without a cast [enabled by default]
In file included from hbday.c:19:0:
/usr/include/stdio.h:689:12: note: expected ‘const char * __restrict__’ but argument is of type ‘int’
hbday.c:122:64: error: expected ‘)’ before ‘;’ token
hbday.c:123:1: warning: passing argument 1 of ‘fputs’ makes pointer from integer without a cast [enabled by default]
In file included from hbday.c:19:0:
/usr/include/stdio.h:689:12: note: expected ‘const char * __restrict__’ but argument is of type ‘int’
hbday.c:123:1: error: too few arguments to function ‘fputs’
hbday.c:123:1: error: expected ‘;’ before ‘}’ token
hbday.c: In function ‘print_copyleft’:
hbday.c:131:13: warning: missing terminating " character [enabled by default]
hbday.c:131:3: error: missing terminating " character
hbday.c:134:1: error: expected expression before ‘<’ token
hbday.c:137:22: error: expected ‘)’ before ‘;’ token
hbday.c:138:1: error: expected ‘;’ before ‘}’ token
hbday.c: In function ‘happy_birthday’:
hbday.c:143:3: warning: passing argument 1 of ‘printf’ makes pointer from integer without a cast [enabled by default]
In file included from hbday.c:19:0:
/usr/include/stdio.h:362:12: note: expected ‘const char * __restrict__’ but argument is of type ‘int’
:)
--
Fight / For The Freedom / Fighting With Steel