- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
DIR_STRUCT * fill_dir_struct(DIR_STRUCT * dir_stc, _ptr_by_val_(char *) base_dir_path, _ptr_by_val_(char *) offset_dir)
{
DIR_STRUCT * sub_dir;
DIR * srcdir;
struct stat st;
char full_sub_dir_path[MAX_PATH_SIZE];
struct dirent * dent;
sprintf(full_sub_dir_path, "%s/%s", base_dir_path, offset_dir);
dbgprintln("Directory %s", full_sub_dir_path);
if(NULL != (dir_stc = malloc(sizeof(DIR_STRUCT))))
{
memset(dir_stc, 0x00, sizeof(DIR_STRUCT));
if (NULL != (srcdir = opendir(full_sub_dir_path)))
{
if(NULL != (dir_stc->dir_path = malloc(strlen(offset_dir) + 1)))
{
strcpy(dir_stc->dir_path, offset_dir);
for( ;(NULL != (dent = readdir(srcdir))); )
{
if((0 != strcmp(dent->d_name, ".")) &&
(0 != strcmp(dent->d_name, "..")) &&
(0 <= fstatat(dirfd(srcdir), dent->d_name, &st, 0)))
{
if (S_ISDIR(st.st_mode)) //Directory
{
if(NULL != (sub_dir = fill_dir_struct(sub_dir, full_sub_dir_path, dent->d_name)))
{
dir_stc->sub_dirs = list_append_node(dir_stc->sub_dirs, sub_dir);
dir_stc->dir_files_size += sub_dir->dir_files_size;
dir_stc->sub_dir_files_count += sub_dir->sub_dir_files_count;
}
else
{
dir_stc = destroy_dir_struct(dir_stc);
break;
}
}
else //File
{
dbgprintln("File %s, size %lu bytes", dent->d_name, st.st_size);
dir_stc->dir_files = list_append_node(dir_stc->dir_files, allocate_and_copy_char_buffer(dent->d_name, strlen(dent->d_name) + 1));
dir_stc->dir_files_size += st.st_size;
dir_stc->sub_dir_files_count++;
}
}
}//End of for(;NULL != (dent = readdir(srcdir)); )
closedir(srcdir);
}
else//End of if(NULL != (dir_stc->dir_path = malloc(strlen(offset_dir) + 1)))
{
dir_stc = destroy_dir_struct(dir_stc);
}
}//End of if (NULL != (srcdir = opendir(full_sub_dir_path)))
else
{
dir_stc = destroy_dir_struct(dir_stc);
}
}//End of if(NULL != (dir_stc = malloc(sizeof(DIR_STRUCT))))
return dir_stc;
}
Восьмикратный индент, Йода нотейшн, const *(x) const в аргументах. Есть подозрение, что велосипедисты не знали о scandir.
Это кладезь говна.
someone 08.10.2014 16:28 # +1
Порвало. Возьму на вооружение.
Abbath 08.10.2014 23:08 # 0
3.14159265 08.10.2014 16:58 # +4
Типично для исповедующих сишко- (кресто-)блядство обсирать бейсик (аду), что там надо аж целых 2 (джва!) раза писать if и прочие операторы - в начале, и в конце.
А когда у самих метод подпухнет, то немедленно пишут вот такую говнятину, потому что без неё непонятно какой где блок кода.
Вот знаю нескольких уже умудренных опытом людей которые пишут похожие комменты (end if, end while) хотя к бейсику/аде положительных чувств детектировано не было.
roman-kashitsyn 08.10.2014 19:17 # +4
не осилили короткие функции
3.14159265 08.10.2014 19:56 # +1
Стоит ли говорить, что при изменении блока кода (с for на while) комментарии в недрах забудут поменять и он будет неактуальным, ведь компилятором оно в отличии от той же ады не проверяется.
Abbath 08.10.2014 23:09 # +1
roman-kashitsyn 09.10.2014 08:51 # +2
В остальных случаях порицается.
bormand 09.10.2014 09:34 # 0
3.14159265 09.10.2014 13:44 # +1
Только быдлоынтырпрайз где правят бал паттерны с декораторами, адаптерами, делегаторами, приспособленцами и прочими тупорылыми обёртками, а классы тупо делегируют работу друг другу, периодически проверяя на недопустимые значения аргумента, то там да, методы длиннее 10 строк - редкость.
Там же где есть реальная логика, иногда трудно разделить даже большой метод, из-за необходимости тянуть в другое местоего контекст и кучу переменных.
>В остальных случаях порицается.
Если чё, я тоже порицаю. Дабы не возникало разночтений.
gumbert 15.10.2014 21:56 # 0
#endif // defined(WHATEVER)
kipar 15.10.2014 22:07 # 0
roman-kashitsyn 16.10.2014 11:57 # +3
kipar 16.10.2014 12:17 # 0
TarasB 09.10.2014 13:32 # +3
сам несколько раз так охуевал
или пользовал класс перед объявлением - вместо указания одной ошибки компилятор раскукарекался на меня километрами бесполезных тупорылых ошибок, в которые я минут пять вдуплял
3.14159265 09.10.2014 13:39 # +2
Неоспоримый факт. Вообще длиннющие крестопортянки ни о чем до сих пор причиняют много НЕПОНИМАНИЯ.
wvxvw 09.10.2014 17:30 # +1
3.14159265 09.10.2014 18:20 # 0
На хаскель набрасывайте. Он может через всю программу тип вывести и потом высрать непонятно чо и где.
laMer007 09.10.2014 20:27 # +1
TarasB 09.10.2014 21:00 # +1
roman-kashitsyn 09.10.2014 22:22 # 0
Вот не надо, там всем топ-левел биндингам принято явно типы писать, чтобы было видно, где именно проблемы. Компилятор даже ворнинг пишет, если так не делаешь.
TarasB 09.10.2014 22:31 # 0
Yuuri 10.10.2014 12:29 # 0
roman-kashitsyn 10.10.2014 12:45 # 0
TarasB 10.10.2014 12:57 # 0
ааа, Num это какбэ и есть явно тип? то есть и Integer, и Float, и Vector3D - это всё Num?
3.14159265 10.10.2014 13:04 # 0
Тут я как-то сомневаюсь что вообще есть c таким названием, и что оно Num.
Зато там есть Rational и Fractional
roman-kashitsyn 10.10.2014 13:13 # +2
3.14159265 10.10.2014 13:20 # +1
Речь о том что хацкелисты не настолько антиобобщенны чтобы включать в стандартную библиотеку вектор огранниченный унылым трёхмерным пространством.
bormand 10.10.2014 13:21 # +1
Ну да. Даже в гейдеве векторы очень часто четырехмерны.
roman-kashitsyn 10.10.2014 13:08 # 0
bormand 10.10.2014 13:08 # 0
Не, Num это тайпкласс, который должен обладать определенными методами (арифметика вроде бы и че-то там еще). А Integer, Float и т.п. являются его инстансами. Vector3D тоже можно сделать инстансом Num, если получится запилить все методы, требуемые Num'ом, и они будут иметь какой-то смысл.
wvxvw 10.10.2014 13:51 # +3
И с пониманием этого приходит беда-печаль-огорчение, т.как material implication не эквивалентно обычному implication. Т.е. не все, что истинно предполагает другие истины (нужна причинно-следственная связь). Дана Скотт плачет горькими слезами, Милнер стреляется и пьет яд. Конец первого действия.
3.14159265 10.10.2014 14:10 # +2
Прошу Вас пишите еще! Выдающаяся драматургия.
3.14159265 09.10.2014 23:01 # 0
Это и спасает. Но многие не пишут, ОЛОЛО ПОСМОТРИТЕ КАКОЙ КРАТКИЙ ЯЗЫК. Я ДЕЛАЮ ПРОГРАММЫ В ОДНУ СТРОЧКУ.