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

    +143

    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
    // find the start and end of the upload file.
    static FILE * _uploadGet(request *wp, unsigned int *startPos, unsigned *endPos) {
       
       FILE *fp=NULL;	
    	struct stat statbuf;	
    	unsigned char c, *buf; 
    	   
    	
    	if (wp->method == M_POST)
    	{
    	   fstat(wp->post_data_fd, &statbuf);
    		lseek(wp->post_data_fd, SEEK_SET, 0);
          
    		printf("file size=%d\n",statbuf.st_size);
    		fp=fopen(wp->post_file_name,"rb");
    		if(fp==NULL) goto error;
    	}
    	else goto error;
    
       
       //printf("_uploadGet\n");
       do
    	{
    		if(feof(fp))
    		{
    			printf("Cannot find start of file\n");
    			goto error;
    		}
    		c= fgetc(fp);
    		if (c!=0xd)
    			continue;
    		c= fgetc(fp);
    		if (c!=0xa)
    			continue;
    		c= fgetc(fp);
    		if (c!=0xd)
    			continue;
    		c= fgetc(fp);
    		if (c!=0xa)
    			continue;
    		break;
    	}while(1);
    	(*startPos)=ftell(fp);
    
       if(fseek(fp,statbuf.st_size-0x200,SEEK_SET)<0) 
          goto error;
    	do
    	{
    		if(feof(fp))
    		{
    			printf("fmmgmt: Cannot find end of file\n");
    			goto error;
    		}
    		c= fgetc(fp);
    		if (c!=0xd)
    			continue;
    		c= fgetc(fp);
    		if (c!=0xa)
    			continue;
    		c= fgetc(fp);
    		if (c!='-')
    			continue;
    		c= fgetc(fp);
    		if (c!='-')
    			continue;
    		break;
    	}while(1);
    	(*endPos)=ftell(fp);
    
       return fp;
    error:
       return NULL;
    }

    Вот так вот китайцы парсят MIME при загрузке прошивки в роутер.

    Запостил: SadKo, 12 Июня 2011

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

    • по-тьюринговски! (надо ли намекать, какой сексуальной ориентации он был!)
      Ответить
      • Если развивать эту мысль, то надо ли намекать, что все кто занимаются информатикой - потенциальные ахтунги.
        Ну а если ещё юзают BSD(M?) и Allman code style...

        По сабжу: Программистом быть не обязательно!!!
        В конце концов http://www.stihi-rus.ru/1/Mayakovskiy/66.htm

        Из IRL: на книжном рынке, во время ознакомления с ассортиментом одной из палаток, подошёл студент с просьбой _возвернуть_в_зад_ книгу, по-моему Дейтелов по С++, мотивируя тем, что после нескольких месяцев обучения на факе понял - «это не моё» и решил вовремя отказаться.
        Был очень рад за него и главное, за программирование в целом.
        Ответить
        • > Дейтелов по С++
          С++, да еще и дятлы транслитом
          мне нравится
          Ответить
        • > то надо ли намекать, что все кто занимаются информатикой - потенциальные ахтунги.

          Хех, то-то в любом /c/ что ни пост, то "петушки раскукарекались"...
          Ответить
        • пример, достойный повторения.
          Только ведь остальные не бросают, а мнят себя великими кодерами и оптимизаторами, пытаясь то оставить компилятор без работы (выдавая на ЯП высокого уровня код, похожий на аналогичный на ассемблере, со всеми вывертами), то выдавая код а ля "швейцарский нож", где программа не только посчитает оптимальные затраты по производству, но и предложит сварить кофе.
          Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить

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