История изменений
Исправление 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] — моветон.
Ну и слишком много скобок.