LINUX.ORG.RU

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

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

Тогда и я тоже

  1. http://www.kernel.org/doc/Documentation/CodingStyle — читать обязательно.
  2. http://github.com/git-mirror/nginx — хотя бы посмотреть на код.
  3. http://valgrind.org
  4. Русский язык в комментариях не нужен (как и само по себе то что ты в них пишешь).
  5. С++?

Насчёт кода который был выше:

/*
 * 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, :

Тогда и я тоже

  1. http://www.kernel.org/doc/Documentation/CodingStyle — читать обязательно.
  2. http://github.com/git-mirror/nginx — хотя бы посмотреть на код.
  3. http://valgrind.org
  4. Русский язык в комментариях не нужен (как и само по себе то что ты в них пишешь).
  5. С++?

Насчёт кода который был выше:

/*
 * 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!!!, то есть любое значение параметра в каком-то таком конфиге. Просто стадии синтаксического анализа и нормальных структур для конфига пока нет.