LINUX.ORG.RU

Помогите отловить быдлокод


0

1

Вот, http://github.com/inish777/hardinform
Все дело в том, что я внял советам baverman и geekless, в связи с чем ядро(написанное на Сишечке) выплевывает теперь не plain-text, а json(который затем парсит гуй на пистоне). Но есть одна заминка - в json каждая пара значений должна заканчиваться запятой, кроме последней. В связи с чем я подозреваю, что нагородил ужаснейших костылей. Сомнительные моменты:
src/core/cpu.c - функция cpu_info()
src/core/users.c - функия users_list()
Также, прошу пробежаться по остальным файлам проекта(их немного) и показать, где я набыдлокодил. Тем самым вы окажете мне огромную услугу.

★★
Ответ на: комментарий от trashymichael

Хм, оставлю как вариант, посмотрим что еще аналитики скажут.

netcat ★★
() автор топика

Обсуждали же уже.

Если делать по уму, то тебе нужно:

1. Дерево, узлы которого описывают отдельные железки машины.

2. N генераторов, преобразующих заданное дерево в текст на целевом языке. (в json, в плейнтекст, в хтмл с рюшечками, и т.п.)

3. M генераторов, строящих дерево для заданного нетерминала. На линуксе корневым нетерминалом у тебя будет «железка под управлением linux», на фряхе «железка под управлением freebsd» и т.п.

geekless ★★
()
Ответ на: комментарий от ratvier

Тут можно, а вообще так лучше не писать - небезопасно.

netcat ★★
() автор топика

Ну а в этом быдлокоде можешь начать с замены if (!strncmp(ch, «vendor_id», 9)) на макрос типа if_ср(«vendor_id») и с уничтожения всех этих повторяющихся printf(«\t\t\»%s\":\«%s\»,\n"
Учись видеть структуру кода.

geekless ★★
()
Ответ на: комментарий от geekless

Тьфу :-D

s/if_ср/if_сh/

А то порнография получилась какая-то.

geekless ★★
()
Ответ на: комментарий от geekless

А что если не составлять единое дерево, а делать так:

int cpu_info() //функция,выводящая информацию о чем-то одном
{
     Вначале составляем дерево конкретно для процессоров;
     А потом пробегаемся по нему и генерим json;
}

netcat ★★
() автор топика
Ответ на: комментарий от ratvier

printf(«%s\n», «{»)

Индусы плачут кровавыми слезами от зависти :)

Deleted
()
Ответ на: комментарий от geekless

Реализация показа/скрытия панели по команде.

lxpanelctl hide? Или как?

netcat ★★
() автор топика

А зачем добавлять табы и переносы в жсон который пишет программа и читает программа? Жсон конечно получается читаемым, но код который его генерит наоборот.

Юзай сторонние либы чтоб не возиться с костыльями.

Kalashnikov ★★★
()

Это не быдлокод, это школьный говнокод.

Ты другие функции, кроме printf() знаешь?

anonymous
()
sscanf(ch, "%s", line);
Deleted
()
Ответ на: комментарий от lomereiter

Просто не очень хочется цеплять на прогу еще одну зависимость. Но если припрет, то буду использовать.

netcat ★★
() автор топика
Ответ на: комментарий от anonymous

И чем же быдлокод отличается от школьного говнокода? И я знаю, что существует puts(), если ты на это намекаешь.

netcat ★★
() автор топика
static int alloc_cpy(char** dest, char* src)
{
    *dest = (char*) calloc(1, MAXLEN);
    strcpy(*dest, src);
    return 0;
}

Автор заново (и через ж**у) изобрел strdup?

Deleted
()
Ответ на: комментарий от Deleted

Автор заново (и через ж**у) изобрел strdup?

Через что думает, через то и изобретает.

anonymous
()
void users_info ()
{
  printf ("%s\n", "[");
  users_list ();
  printf ("%s\n", "]");
}

Сделайте мне забыть это!11!

joy4eg ★★★★★
()

puts(«Error opening /proc/cpuinfo»); exit(-1);

Я бы использовал в данном месте perror() вместо puts();

joy4eg ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.