1. Список говнокодов пользователя Butjok

    Всего: 1

  2. Си / Говнокод #3017

    +138.8

    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
    #include <unistd.h>
    #include <assert.h>
    #include <stdlib.h>
    #include <string.h>
    
    // grep ^\s*$ file1 file2 ... | wc -l
    
    int main(int argc, const char **argv)
    {
    	int fd[2];
    	pid_t pid;
    	
    	assert(!pipe(fd));
    	assert((pid = fork()) >= 0);
    	
    	if (!pid)
    	{
    		char **newargv;
    		
    		assert(dup2(fd[1], 1) == 1);
    		assert(!close(fd[0]));
    		assert(!close(fd[1]));
    		assert(newargv = malloc((argc + 2) * sizeof(char *)));
    		newargv[0] = "grep";
    		newargv[1] = "^\\s*$";
    		memcpy(newargv + 2, argv + 1, (argc + 1) * sizeof(char *));
    		assert(execvp("grep", newargv) * 0);
    	}
    	
    	assert((pid = fork()) >= 0);
    	
    	if (!pid)
    	{
    		assert(dup2(fd[0], 0) == 0);
    		assert(!close(fd[0]));
    		assert(!close(fd[1]));
    		assert(execlp("wc", "wc", "-l", NULL) * 0);
    	}
    	
    	assert(!close(fd[0]));
    	assert(!close(fd[1]));
    	
    	while (wait(NULL) != -1);
    	return 0;
    }

    Butjok, 15 Апреля 2010

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