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

    +142

    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
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    92. 92
    93. 93
    94. 94
    95. 95
    96. 96
    97. 97
    98. 98
    99. 99
    main()
       {
       j=atol("776677"); c=0;
      gb=65500;  /*гран буф не>65500!*/
      gp=gb+65500;
       c=PA();
       vm = v_mod(0x0f00)&0x00ff;
       if((vm!=2) && (vm!=3) && (vm!=7))   v_mod(3);
       if(vm==7) v_m=MK_FP(0xB000,0); /* присвоить адр в-памяти */
       else   v_m=MK_FP(0xB800,0);
       if(c==0) {printf("Самопроверка программы неудачна."); dely(9);}
       gek=calloc(1000,sizeof(int));
       bufa=farcalloc(4000,sizeof(long));
       bfk=calloc(4000,sizeof(int));
       ok=calloc(800,sizeof(char));
       st=calloc(10,sizeof(char));
       bufv=calloc(4000,sizeof(char));
     if((gek==NULL)||(bufa==NULL)||(bfk==NULL)||(ok==NULL)||(st==NULL)||(bufv==NULL))
    	  {
      printf(" Неудачное выделение памяти для основных буферов.\n");
      printf(" Программа не выполняется.");
    	 dely(9); exit(1);   }
       for(x=0;x<4000;x++) {bufa[x]=0L;bfk[x]=0; /*занул буф адресов и кодов */
       if(x<10) st[x]=0x00; /*буф для выв чисел на экр*/
       if(x<26) urov[x]=1;
       if(x<20) {abn[x]=1; aba[x]=2L;}} /*мин адресa абс ном строк и нач загр буф*/
       if(x<128) B0[x]=0;
       ur=vv=avt=in=0; i=N=0; zap=0;x_=1;
       ifm=10;/*10,01,11,12,21 - 1:п/панель записей,0-инф п/панель,12,21-2 базы*/
     /*  vctp(3);*/
       mou(0);   kur(0);
      okn=0; /*сбр инд сохр-х окон*/
      v_mod(0);
       nok1=16;
      SET();   ch=pal[0];
      textbackground(BLACK);
       clrscr();
      okno(0,2,ch,ch);
      window(1,1,80,25);
      okno(16,2,ch,ch);
      nstr(1);
      baz=1;
      nfl="0.cry ";
      F_place("10.cry");
      kzo();
      prx=3; /*нейтраль*/
      for(vm=4000;vm<8000;vm++) v_m[vm]=0; vm=0;
      /*vm-далее кол-во стр загр буф*/
      ppan(0,0);
      form_kod(2);/*чт genko*/
       attr=pal[5];  vdl(a+1,y_,a+36,y_,0,0);    /*сох атр  бывш стр*/
       vctp(0);
      tit();
      if(zap!=0) nstr(2);
      ZA[0]='\0';
      za=strlen(MPR);
      strcat(ZA,MPR);if(za>3) strcat(ZA,"\\");  strcat(ZA,"save.com");
      za=0; if((access(ZA,0)!=-1))  za=1; /*ZA-путь savera*/
      /**************/
      for(;;)
          {
          mou(1);
           ch=get_char(1);
    	if((ch<48)||(ch>57))  /*кроме цифр*/
    	 if((ch!=0xfe)&&(ch>0x20)&&(f_kl==0)) {printf("\7"); ch=0;}
    	mou(2); mus(a); /*ориен мыши*/
    	if((ch==TAB)||(ch==RIGHT)||(ch==LEFT))
    	  tab();/*порядок не менять*/
    	if(ch==15) { ctrl(); tab();}
    	mus(a); mus(101);
    	if(ch==F7)   gl_poisk(0);
    	if(ch==AF7)  gl_poisk(1);
    	if(ch==F1) hlp();
    	if(ch==CTRL) ctrl();
    	if((ch==AF1)&&(Pp==1)) ctrl();
    	if((ch==AF2)&&(Pp==0)) ctrl();
    	if(ch==32) exr(0);
    	if(ch==AF3) exb();
    	if(ch==AF4) exr(1);
    	if(ch==UP)   { cm=0; up(1);}
    	if(ch==DOWN) { cm=0; down(1); }
    	if(ch==PGUP) { cm=0;scroll(0,0);}
    	if(ch==PGDN) { cm=0;scroll(1,0);}
    	if(ch==HOME) { cm=0;scroll(0,4000);}
    	if(ch==END)  { cm=0;scroll(1,4000);}
    	if(ch==F5)   kon(1);
    	if(zap==0) /*ес зп разреш*/
    	{
    	if(ch==INS)  { s=0;
        if((chkm(3)!=0)||(chkm(4)!=0)) {s=1;
     coo(0,0x4E,0xCF,"","Предельная длина файла!",
     "Разрешено только удаление!",""," Выход");}
        if((chkm(1)!=0)||(chkm(2)!=0)) {s=1;
     coo(0,0x4E,0xCF,"","Исчерпана длина буфера!",
     "Сохраните набранную информацию,","после чего можно продолжить.",
     " Выход");}
    	 if(vm==4000)
    {coo(0,0x7f,0x70,"Количество записей в списке достигло 4000.",
    "","В данном случае возможно только удаление",

    Это один знакомый слесарь ЭВМ писал прогу для создания/редактирования/просмотра самопальной древовидной БД, для своих нужд, с тем условием, что работать она должна была чуть ли не на i286, и грузилась не более 2х секунд. Недавно он обратился ко мне с просьбой перенести её под линь, но увидев это я решил что такое жить не должно, поэтому просто писал аналог с нуля, на плюсах, но справедливости ради, замечу что моя прога вышла чуть тормознее:).
    Полный код к сожалению не влез, вот он: http://ideone.com/3sLsa.
    P.S. Авторское форматирование сохранено.

    suc-daniil, 23 Августа 2012

    Комментарии (67)
  2. Си / Говнокод #11583

    +103

    1. 1
    if ( (mver!=0) != (qver!=0) )

    для головоломки слабовато, но глаза все равно напрягает.

    Dummy00001, 13 Августа 2012

    Комментарии (14)
  3. Си / Говнокод #11582

    +132

    1. 1
    2. 2
    3. 3
    4. 4
    enum
      {
        MaxStringLen = 1024
      };

    Офигенный метод объявления констант!

    glook, 13 Августа 2012

    Комментарии (39)
  4. Си / Говнокод #11581

    +106

    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
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    if ( ... )
      {
        if ( ... )
          {
            if ( ... )
              {
                usleep(250000);
              }
            else
              {
                sleep( 1 );
              }
          }
        else
          {
            if ( ... )
              {
                if ( ... )
                  {
                    usleep( 250000 );
                  }
                else
                  {
                    sleep( ... );
                  }
              }
            else
              {
                sleep( ... );
              }
          }
      }
    else
      {
        usleep( 250000 );
      }

    из главного цикла одного "рил-тайм" приложения. (комментарии, етц были удалены.)

    каждый раз тестеры/кастомеры жалуются что приложение работает слишком медленно или слишком быстро - появляется либо новый if со слипом, либо новый else со слипом. за два года существования, вот до этого "полного" дерева доросло. и все равно не работает как надо. :)

    Dummy00001, 13 Августа 2012

    Комментарии (6)
  5. Си / Говнокод #11511

    +132

    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
    int enctypex_decoder_rand_validate(unsigned char *validate) {
        int     i,
                rnd;
    
        rnd = ~time(NULL);
        for(i = 0; i < 8; i++) {
            do {
                rnd = ((rnd * 0x343FD) + 0x269EC3) & 0x7f;
            } while((rnd < 0x21) || (rnd >= 0x7f));
            validate[i] = rnd;
        }
        validate[i] = 0;
        return(i);
    }

    WGH, 01 Августа 2012

    Комментарии (10)
  6. Си / Говнокод #11440

    +136

    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
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    static int internal_CheckMac(char * inc_mac)
    {
            int return_value = 0x1;
    
            if (strlen(inc_mac) != 17)
            {
                    return return_value;
            }
    
            unsigned int i = 0x0;
            for (i = 3; i <=17; i=i+2)
            {
                    if (inc_mac[i-1] != 58)
                    {
                            return_value = 0x1;
                            break;
                    }
                    else
                            return_value = 0x0;
                    i++;
            }
    
            return return_value;
    }

    Функция проверяет содержимое строки. В строке должен быть мак адрес формата 00:01:02:03:04:05. 58 в строке 13 - это десятичное значение символа ":"
    Авторство функции принадлежит Виталию Кострову, великому программисту из Рыбинска. После ревизии этого кода пришло понимание что надо избавляться от этого сотрудника.

    evgeny, 19 Июля 2012

    Комментарии (125)
  7. Си / Говнокод #11435

    +118

    1. 1
    2. 2
    3. 3
    4. 4
    filename_size = strlen(dest_dir) + strlen(basename) + 6;
        ctx.mtl_file = (char *) malloc(filename_size);
        ctx.obj_file = (char *) malloc(filename_size);
        sprintf(ctx.mtl_file, "%s/%s.mtl", dest_dir, basename);

    Долго соображали, почему вылезает сегфолт во free...

    someone, 18 Июля 2012

    Комментарии (48)
  8. Си / Говнокод #11433

    +141

    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
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    static struct passwd *pd=getpwuid(st->st_uid);
      if(pd==NULL){
        fprintf(stderr, "no correspound user!\n");
      }
      char *perm=(char*)malloc(16);
      if(perm==NULL){fprintf(stderr, "out of memory!\n");return -1;}
       memset( perm,'\0',16); 
      if(st->st_mode & S_ISUID){perm[0]='s';} else perm[0]='-';
      if(st->st_mode & S_IRUSR){perm[1]='r';} else perm[1]='-';
      if(st->st_mode & S_IWUSR){perm[2]='w';} else perm[2]='-';
      if(st->st_mode & S_IXUSR){perm[3]='x';} else perm[3]='-';
      if(st->st_mode & S_IRGRP){perm[4]='r';} else perm[4]='-';
      if(st->st_mode & S_IWGRP){perm[5]='w';} else perm[5]='-';
      if(st->st_mode & S_IXGRP){perm[6]='x';} else perm[6]='-';
      if(st->st_mode & S_IROTH){perm[7]='r';} else perm[7]='-';
      if(st->st_mode & S_IWOTH){perm[8]='w';} else perm[8]='-';
      if(st->st_mode & S_IXOTH){
        if(st->st_mode & S_ISVTX){
          perm[9]='t';
        }
       else perm[9]='x';
        
      } else perm[9]='-';
      if(st->st_mode & S_ISUID){
       if(st->st_mode & S_IXUSR){
         perm[4]='s';
       } else perm[4]='S';
      }
       if(st->st_mode & S_ISGID){
        if(st->st_mode & S_IXGRP){
        perm[7]='s';
        } else perm[7]='S';
      }
      if(st->st_mode & S_ISVTX){
        if(st->st_mode & S_IXOTH){perm[9]='t';} else {
        perm[9]='T';
        }
      }
       if((st->st_mode & S_IFMT) == S_IFDIR) { perm[0]='d';}
       if((st->st_mode & S_IFMT)==S_IFSOCK){ perm[0]='s';}
       if((st->st_mode & S_IFMT) == S_IFCHR) { perm[0]='c';}
       if((st->st_mode & S_IFMT)==S_IFCHR){perm[0]='c';} else if(st->st_mode & S_IFBLK){perm[0]='b';} else
       if((st->st_mode & S_IFMT)== S_IFREG){ perm[0]='-';}
       if((st->st_mode &S_IFMT)==S_IFBLK) { perm[0]='b';}
       if((st->st_mode & S_IFMT)==S_IFIFO) { perm[0]='p';}
       if((st->st_mode & S_IFMT)== S_IFLNK){ perm[0]='l';}
      if(!S_ISDIR(st->st_mode)){
          if(S_ISREG(st->st_mode)){
    	printf("<file type=\"regular file\" permissions=\"%s\" owner=\"%s\" group=\"%d\" size=\"%d\">%s</file>\n",perm,pd->pw_name,st->st_gid,st->st_size,dir);
    	return 0;
          };

    Права доступа

    AliceGoth, 17 Июля 2012

    Комментарии (10)
  9. Си / Говнокод #11432

    +142

    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
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    void do_statfs(const struct mntent *fs)
    {
    	struct statvfs vfs;
    
       	if (fs->mnt_fsname[0] != '/')	/* skip nonreal filesystems */
       		return;
    
    	if (statvfs(fs->mnt_dir, & vfs) != 0) {
    		fprintf(stderr, "%s: %s: statfs failed: %s\n",
    			myname, fs->mnt_dir, strerror(errno));
    		errors++;
    		return;
    	}
    	if(fi!=1){
    	long used = 100 - (int)(((float)vfs.f_bfree/(float)vfs.f_blocks)*100);
    	printf("%12s", fs->mnt_fsname);//Filesystem
    	printf("%16ld",((vfs.f_blocks)>>10)*vfs.f_bsize);//1K-blocks
     	printf("%11ld", ((vfs.f_blocks - vfs.f_bfree)>>10)*vfs.f_bsize);//Used
    	printf("%11ld",(vfs.f_bavail>>10)*vfs.f_bsize);		//Available
    	if(used>0 && used<=100){
    	printf("%8d%%    ", 100 - (int)(((float)vfs.f_bfree/(float)vfs.f_blocks)*100));//Use%
    	} else { printf("%8s    ","-");}
    	} else {
    	  long used = 100 - (int)(((float)vfs.f_ffree/(float)vfs.f_files)*100);
    	  printf("%8s", fs->mnt_fsname);//Filesystem
    	  printf("%11ld",vfs.f_files);//Inodes
    	  printf("%11ld", (vfs.f_files - vfs.f_ffree));//IUsed
    	  printf("%11ld",vfs.f_ffree);//IFree
    	  if(used>0 && used<=100){
    	    printf("%8d%%    ", used);//Use%
    	} else { printf("%8s    ","-");}
    	}
    	printf("%s\n", fs->mnt_dir);//Mounted on
    }

    Свой df

    AliceGoth, 17 Июля 2012

    Комментарии (0)
  10. Си / Говнокод #11431

    +141

    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
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    92. 92
    93. 93
    94. 94
    95. 95
    char **fpwd=(char**)malloc(160);
    int lstat(const char *path, struct stat *buf);
    int process_dir(const char *dir,struct stat *st1,ino_t cit);
    char *cdir=".";
    ino_t ci=0;
    struct stat cstat;
    int errors = 0;
    char *myname;
    int cnt=0;
    int main(int argc,char **argv){
      myname=argv[0];
      cdir=(char*)malloc(512);
      if(cdir==NULL){
        perror("Not sufficient memory");
        errors++;
        return -1;
      }
       memset(cdir,'\0',512);
      strcat(cdir,cdir);
      strcat(cdir,".");
      if(fpwd==NULL){
        fprintf(stderr, "%s: out of memory: %s\n",
      			myname, strerror(errno));
      		errors++;
     		return 0;
     }
    for(int i=0;i<=160;i++){
      *(fpwd+i)=(char*)malloc(1600);
     if(*(fpwd+i)==NULL){perror("Not sufficient memory");
     errors++;
     return -1;
     }
    }
    while(ci!=2){
      if(lstat(".",&cstat)==-1){
        fprintf(stderr, "%s: can't find file:%s %s\n",
     			myname, cdir, strerror(errno));
        errors++;
    	return -1;
      };
      ci=cstat.st_ino;
      if(process_dir("..",&cstat,ci)==-1){
            fprintf(stderr, "%s: can't process dir:%s %s\n",
     			myname, cdir, strerror(errno));
        errors++;
    	return -1;
      };
      int fd=open("..",O_RDONLY);
      if(fd<0){
       perror("open");
       errors++;return -1;
      }
        if(fchdir(fd)==-1){
          fprintf(stderr, "%s: can't chdir:%s\n",
     			myname, strerror(errno));
        errors++;return -1;
        };
        strcat(cdir,"/..");
    }
     for(int i=cnt-1;i>=0;i--){
        printf("/%s",fpwd[i]);
      }
      printf("\n");return 0;
    }
    int process_dir(const char *dir,struct stat *st1,ino_t cit/*,char **fpwd*/){
        DIR *dp;
        struct dirent *ent;
        struct stat *dstat;
        if ((dp = opendir(dir)) == NULL) {
    		fprintf(stderr, "%s: cannot open for reading: %s\n", dir, strerror(errno));errors++;return -1;
    	}
        if(lstat(dir,dstat)==-1){
    	    fprintf(stderr, "%s: can't find file:%s %s\n",
     			myname, cdir, strerror(errno));
    			errors++;
    	return -1;
          }
    	while ((ent = readdir(dp)) != NULL){
    	  if(ent->d_ino==cit && strcmp(ent->d_name,".")!=0 && strcmp(ent->d_name,"..")!=0){
    	    strcat(fpwd[cnt++],ent->d_name);
    	     if (closedir(dp) != 0) {
    		fprintf(stderr, "%s: closedir: %s\n", dir, strerror(errno));
    		errors++;
    		return 1;
    	      }
    	    return 0;
    	  }
    	}
    	if (closedir(dp) != 0) {
    		fprintf(stderr, "%s: closedir: %s\n", dir, strerror(errno));
    		errors++;
    		return 1;
    	}
    	return 0;
    }

    AliceGoth, 17 Июля 2012

    Комментарии (0)