1. Си / Говнокод #2530

    +138.1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    sprintf(cmd, "%supd_downloader -p upd_downloader\\bin %s %s -a %s", 
    #if defined(__unix__)
    	"./",
    #else
    	"",
    #endif
    	arg1, 
    	option->arg2 ? arg2 : "", 
    #if defined(__i386__) || defined(_M_X86)
    	"i686"
    #else
    	"x86_64"
    #endif
    );
    res = run_command(cmd);

    Обнаружил в коде. Типа портируемый код =) Да еще и sprintf() ...

    Запостил: del, 02 Февраля 2010

    Комментарии (13) RSS

    • про слеш в upd_uploader\\bin автор кода забыл :-)
      Ответить
      • А в upd_downloader под *nix виндовый слеш нормально обрабатывается =)
        Ответить
    • а чем sprintf() плох ?
      Ответить
      • Наверное, здесь про переполнение буфера.
        Ответить
    • а че не так?
      Ответить
    • Мешанина из команд препроцессора и Си-кода это жесть. Особенно когда куски внутри ветвлений по несколько экранов. Не сразу поймёшь какой код будет скомпилирован.
      Ответить
      • не, конечно лучше завести стопицот констант
        Ответить
        • Лучше. Тогда по крайней мере код будет приятнее смотреть.
          sprintf(cmd, "%supd_downloader -p upd_downloader\\bin %s %s -a %s", prefix, arg1, option->arg2 ? arg2 : "", platform );
          Ответить
    • Типичный код для исходников линукс Gentoo, оптимизирующихся под компиляющую машину.
      Ответить
      • Только вот не смотря на это платформозависимые вещи лучше не размазывать по исходникам.
        Ответить
        • а я особо разницы не вижу, что в исходниках, что в заголовках. всё равно в обоих случаях придётся перекомпилять.
          Ответить
          • Разобраться потом с такими размазываниями просто не получится другому человеку, да и самому через месяц. Ну если, конечно, не задрот.
            Ответить
    • показать все, что скрытоvanished
      Ответить

    Добавить комментарий