LINUX.ORG.RU

История изменений

Исправление beastie, (текущая версия) :

Из замеченных неточностей:

0 - это числовой ноль, поинтер ноль — это NULL

аргументы с вдоеточием имеют аргументы, проверять имеют ли они их на самом деле лишнее.

Всей этой проверкой занимается сам getopt.

т.е. было:

{"size", 1, 0, 's'},
/* ... */
getopt_long(argc, argv, "sc", long_options, &option_index))
надо:
{"size", 1, NULL, 's'},
/* ... */
getopt_long(argc, argv, "s:c:", long_options, &option_index))

Далее. В libc есть преопределённая extern char *__progname, вырывать название проги из argv[0] — моветон.

Ну и слишком много скобок.

И ещё: для уведомлений/ошибок использух errx()/warnx().

Исправление beastie, :

Из замеченных неточностей:

0 - это числовой ноль, поинтер ноль — это NULL

аргументы с вдоеточием имеют аргументы, проверять имеют ли они их на самом деле лишнее.

Всей этой проверкой занимается сам getopt.

т.е. было:

{"size", 1, 0, 's'},
/* ... */
getopt_long(argc, argv, "sc", long_options, &option_index))
надо:
{"size", 1, NULL, 's'},
/* ... */
getopt_long(argc, argv, "s:c:", long_options, &option_index))

Далее. В libc есть преопределённая extern char *__progname, вырывать название проги из argv[0] — моветон.

Ну и слишком много скобок.

Исходная версия beastie, :

Из замеченных неточностей:

getopt_long: 0 - это числовой ноль, поитер ноль — это NULL; аргументы с вдоеточием имеют аргументы, проверять имеют ли они их на самом деле лишнее. Всей этой проверкой занимается сам getopt.

т.е. было:

{"size", 1, 0, 's'},
/* ... */
getopt_long(argc, argv, "sc", long_options, &option_index))
надо:
{"size", 1, NULL, 's'},
/* ... */
getopt_long(argc, argv, "s:c:", long_options, &option_index))

Далее. В libc есть преопределённая extern char *__progname, вырывать название проги из argv[0] — моветон.

Ну и слишком много скобок.