LinuxForum.Fans
Тема

Проект книги "Инструменты Linux для Windows-программистов"

Автор: Olej 26 сообщений 5920 просмотров
#213192
bormant написал:
Olej,
в последующих двух третях достаточно неточностей, явных ошибок, упущений. Например,

text

   char *error = dlerror();
   if( error != NULL ) {
      printf( "ERROR: %s\n", dlerror() );
      return 4;
   }

Ну, это помарка, оставшаяся от предыдущих редакций... это "не стоит и выеденного яйца" wink
Нашли - спасибо, исправлю.

#213194
bormant написал:

text

typedef int (*my_func)( char* );
...
my_func func = dlsym( dl_handle, "put_my_msg" );
...
int res = (*func)( messg );

Примечание: Отметим важное малозаметное обстоятельство: вызов функции библиотеки (*func)(messg) по имени происходит без какой-либо синтаксической проверки на соответствие тому прототипу, который объявлен для типа функции my_func. Соответствие обеспечивается только «доброй волей» пишущего код. С таким же успехом функция могла бы вызываться с 2-мя параметрами, 3-мя и так далее. На это место нужно обращать пристальное внимание при написании реальных плагинов.

Примечание не соответствует действительности.
Попробуйте поменять вызов на
int res = (*func)( messg, 1 );
и увидите, что скажет gcc. На самом деле вы задали прототип в typedef -- функция, возвращающая int, принимающая в качестве параметра char*.
Это может не соответствовать прототипу функции в самой библиотеке, но это не тот случай, что описан в примечании.

Примечание соответствует действительности!
Вы же поняли о чём речь?
... что в вызове можно прописать, что угодно ... а соответствие или несоответствие его мною же произвольно записанного прототипа - это уже чистая формалистика.
Так что здесь - незачёт :(

Но текст перепишу, чтобы больше внятно читалось так, как я хотел сказать.

bormant написал:
Другими словами, и техническому и литературному корректорам будет чем заняться.

Конечно.
На то они и в природе, а это - их работа...
Да и вы сейчас альтруистически текст причешете wink

#213196
Olej написал:
Да и вы сейчас альтруистически текст причешете wink

Ах да! Кстати wink

Там рядом есть ещё одна рукопись: Проект книги: "Модули ядра Linux".

Так вы можете ещё и её покритиковать wink

#213199
bormant написал:

Примечание не соответствует действительности.

Откровенно говоря, вы меня порадовали: вы уже добрались до ~70-й страницы из 150, и ни одного такого, чтоб особо существенного несоответствия не нашли... Так всё, по мелочам.

P.S. на ЛОР-е - так там просто стоял "вой и скрежет зубовный"(с), но никто дальше 30 страниц прокомментировать так и не спромогся :lol: :[

#213223

1) Я не понял, в чём состояла апелляция к Stevens-у? Возьмём Advanced Unix Programming? Про длинные опции он прямо и недвусмысленно пишет в
Chapter 9. UNIX Command-Line Processing
GNU Long Options Extension
на что я и обращал внимание -- это за пределами POSIX, это расширения от GNU. А ваша аргументация состояла именно в POSIX-стандартности.

В указанном вами переводном издании на стр.887-888 недвусмысленно указано про getopt() и односимвольные опции. Все остальные упоминания -- в коде примеров, в getopt() для разбора передаётся строка options для односимвольных опций. Про длинные опции речи нет.

2) Я не понял, в чём состояла апелляция к описанию getopts из
The Open Group Base Specifications Issue 7
IEEE Std 1003.1-2008
Copyright © 2001-2008 The IEEE and The Open Group
там также нет указания на длинные опции. Поэтому см.выше.

3)


12.2 Utility Syntax Guidelines

The following guidelines are established for the naming of utilities and for the specification of options, option-arguments, and operands. The getopt() function in the System Interfaces volume of POSIX.1-2008 assists utilities in handling options and operands that conform to these guidelines.

Guideline 3:
Each option name should be a single alphanumeric character (the alnum character classification) from the portable character set. The -W (capital-W) option shall be reserved for vendor options.
Multi-digit options should not be allowed.

есть указание не использовать -W, в остальных Guideline опять нет указания на длинные опции.

Я вам о том и толкую -- POSIX -- говорит про короткие опции с параметрами и без. Длинные опции -- это расширения GNU (за пределами POSIX), а они опять возможны с параметрами и без.
Поэтому утверждение про длинные опции только без параметров в POSIX -- является ложным. О чём вам с самого начала и сказал.

4) Есть смысл сказать пару слов про gdb, он и утилита, и для программистов. А то пока про него только в списке литературы.

#213245
bormant написал:
4) Есть смысл сказать пару слов про gdb, он и утилита, и для программистов. А то пока про него только в списке литературы.

Нет. Это опущено специально.
Это слишком отдельный и объёмный вопрос.

Войдите или зарегистрируйтесь, чтобы ответить.