История изменений
Исправление quasimoto, (текущая версия) :
Тогда и я тоже
- http://www.kernel.org/doc/Documentation/CodingStyle — читать обязательно.
- http://github.com/git-mirror/nginx — хотя бы посмотреть на код.
- http://valgrind.org
- Русский язык в комментариях не нужен (как и само по себе то что ты в них пишешь).
- С++?
Насчёт кода который был выше:
/*
* patch_to_file?
*
* btw, man mmap.
*/
char *unien_load_file(const char *path);
/*
* Не надо аллоцировать память, возвращай указатель на начало значения параметра,
* в strcmp ты используешь константные строки первым параметром, то есть заведомо
* null-terminated, поэтому всё будет ок.
*/
char *unien_read_conf(const char *str, const char *param);
#define IS_YES(VAR, STR) \
(!strcmp("yes", unien_read_conf(VAR, STR)))
void unien_init(const char *path)
{
// str_ когда оно уже по типу srt? Венгерская нотация не нужна.
char *conf = unien_load_file(path);
if (IS_YES(conf, "init_all_sybsystem")) {
unien_init_video();
unien_init_audio();
unien_init_timer();
unien_init_cdrom();
unien_init_joystick();
unien_init_event_thread();
unien_init_opengl();
} else {
if (IS_YES(conf, "exit_to_error")) unien_exit_to_error_set(ON);
else unien_exit_to_error_set(OFF);
// debung?
if (IS_YES(conf, "debug")) unien_debug_set(ON);
else unien_debug_set(OFF);
if (IS_YES(conf, "init_video")) unien_init_video();
/* ... */
if (IS_YES(conf, "init_opengl")) unien_init_opengl();
}
free(conf);
}
также со всеми этими функциями напрашивается struct unien (struct unien my_conf; my_conf.exit_to_error = IS_YES(conf, «exit_to_error»); например — 0 == false, 1 == true, enum { OFF, ON } — OFF == 0, ON == 1) и вообще нормальные классы с конструкторами, инкапсуляцией, геттерами, сеттерами, методами и т.п.
Возвращать «yes» из функции при удачном исходе — настоящий быдлокод
Там у него, как я понял, возвращается не то что «yes», а
param = yes!!!
yes!!!, то есть любое значение параметра в каком-то таком конфиге. Просто стадии синтаксического анализа и нормальных структур для конфига пока нет.
Исходная версия quasimoto, :
Тогда и я тоже
- http://www.kernel.org/doc/Documentation/CodingStyle — читать обязательно.
- http://github.com/git-mirror/nginx — хотя бы посмотреть на код.
- http://valgrind.org
- Русский язык в комментариях не нужен (как и само по себе то что ты в них пишешь).
- С++?
Насчёт кода который был выше:
/*
* patch_to_file?
*
* btw, man mmap.
*/
char *unien_load_file(const char *path);
/*
* Не надо аллоцировать память, возвращай указатель на начало значения параметра,
* в strcmp ты используешь константные строки первым параметром, то есть заведомо
* null-terminated, поэтому всё будет ок.
*/
char *unien_read_conf(const char *str, const char *param);
#define IS_YES(VAR, STR) \
(!strcmp("yes", unien_read_conf(VAR, STR)))
void unien_init(const char *path)
{
// str_ когда оно уже по типу srt? Венгерская нотация не нужна.
char *conf = unien_load_file(path);
if (IS_YES(conf, "init_all_sybsystem")) {
unien_init_video();
unien_init_audio();
unien_init_timer();
unien_init_cdrom();
unien_init_joystick();
unien_init_event_thread();
unien_init_opengl();
} else {
if (IS_YES(conf, "exit_to_error")) unien_exit_to_error_set(ON);
else unien_exit_to_error_set(OFF);
// debung?
if (IS_YES(conf, "debug")) unien_debug_set(ON);
else unien_debug_set(OFF);
if (IS_YES(conf, "init_video")) unien_init_video();
/* ... */
if (IS_YES(conf, "init_opengl")) unien_init_opengl();
}
free(conf);
}
также со всеми этими функциями напрашивается struct unien (struct unien my_conf; my_conf.exit_to_error = IS_YES(conf, «exit_to_error»); например — 0 == false, 1 == true, enum { OFF, ON } — OFF == 0, ON == 1) и вообще нормальные классы с конструкторами, инкапсуляцией, геттерами, сеттерами, методами и т.п.
Возвращать «yes» из функции при удачном исходе — настоящий быдлокод
Там у него, как я понял, возвращается не то что «yes», а
param = yes!!!
yes!!!, то есть любое значение параметра в каком-то таком конфиге. Просто стадии синтаксического анализа и нормальных структур для конфига пока нет.