Няшная / Говнокод #28037 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
#define debut     {
#define fin       }
#define si        if
#define alors     {
#define sinon     } else {
#define sinonsi   } else if

#define repeter   do {
#define jusqua    } while (!

#define choix     switch
#define quand     case

#define retourner return

какой gaffe))

kcalbCube kcalbCube, (Updated )

Комментарии (11, +11)

Няшная / Говнокод #28009 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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
#include <stdio.h>
#include <setjmp.h>
#include <assert.h>

jmp_buf ebuf;

void f2(void)
{
	longjmp(ebuf, (int)"kokoko");
}

int main(void)
{
	const char* i;
	printf("petuhi ");
	i = (const char*)setjmp(ebuf);
	if (!i) 
	{
		f2();
		printf ("moo ");
	}
	printf("%s\n", i);
	return 0;
}

можно елду сделать

digitalEugene digitalEugene, (Updated )

Комментарии (17, +17)

Няшная / Говнокод #27983 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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
  100. 100
// https://sources.debian.org/src/bsdiff/4.3-23/bsdiff.c/#L57

static void split(t_off *I,t_off *V,t_off start,t_off len,t_off h)
{
	t_off i,j,k,x,tmp,jj,kk;

	if(len<16) {
		for(k=start;k<start+len;k+=j) {
			j=1;x=V[I[k]+h];
			for(i=1;k+i<start+len;i++) {
				if(V[I[k+i]+h]<x) {
					x=V[I[k+i]+h];
					j=0;
				};
				if(V[I[k+i]+h]==x) {
					tmp=I[k+j];I[k+j]=I[k+i];I[k+i]=tmp;
					j++;
				};
			};
			for(i=0;i<j;i++) V[I[k+i]]=k+j-1;
			if(j==1) I[k]=-1;
		};
		return;
	};

	x=V[I[start+len/2]+h];
	jj=0;kk=0;
	for(i=start;i<start+len;i++) {
		if(V[I[i]+h]<x) jj++;
		if(V[I[i]+h]==x) kk++;
	};
	jj+=start;kk+=jj;

	i=start;j=0;k=0;
	while(i<jj) {
		if(V[I[i]+h]<x) {
			i++;
		} else if(V[I[i]+h]==x) {
			tmp=I[i];I[i]=I[jj+j];I[jj+j]=tmp;
			j++;
		} else {
			tmp=I[i];I[i]=I[kk+k];I[kk+k]=tmp;
			k++;
		};
	};

	while(jj+j<kk) {
		if(V[I[jj+j]+h]==x) {
			j++;
		} else {
			tmp=I[jj+j];I[jj+j]=I[kk+k];I[kk+k]=tmp;
			k++;
		};
	};

	if(jj>start) split(I,V,start,jj-start,h);

	for(i=0;i<kk-jj;i++) V[I[jj+i]]=kk-1;
	if(jj==kk-1) I[jj]=-1;

	if(start+len>kk) split(I,V,kk,start+len-kk,h);
}

static void qsufsort(t_off *I,t_off *V,u_char *old,t_off oldsize)
{
	t_off buckets[256];
	t_off i,h,len;

	for(i=0;i<256;i++) buckets[i]=0;
	for(i=0;i<oldsize;i++) buckets[old[i]]++;
	for(i=1;i<256;i++) buckets[i]+=buckets[i-1];
	for(i=255;i>0;i--) buckets[i]=buckets[i-1];
	buckets[0]=0;

	for(i=0;i<oldsize;i++) I[++buckets[old[i]]]=i;
	I[0]=oldsize;
	for(i=0;i<oldsize;i++) V[i]=buckets[old[i]];
	V[oldsize]=0;
	for(i=1;i<256;i++) if(buckets[i]==buckets[i-1]+1) I[buckets[i]]=-1;
	I[0]=-1;

	for(h=1;I[0]!=-(oldsize+1);h+=h) {
		len=0;
		for(i=0;i<oldsize+1;) {
			if(I[i]<0) {
				len-=I[i];
				i-=I[i];
			} else {
				if(len) I[i-len]=-len;
				len=V[I[i]]+1-i;
				split(I,V,i,len,h);
				i+=len;
				len=0;
			};
		};
		if(len) I[i-len]=-len;
	};

	for(i=0;i<oldsize+1;i++) I[V[i]]=i;
}

Исходник "bsdiff"

j123123 j123123, (Updated )

Комментарии (43, +43)

Няшная / Говнокод #27975 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
int main(int argc, char **argv) {
  void *vp;
  const char *version_str;

  if (argc != 2) {
    fprintf(stderr, "usage: %s <version>\n", argv[0]);
    exit(1);
  }

  vp = malloc(strlen(argv[1]) + 1);
  strcpy(vp, argv[1]);

  version_str = check_header(vp);
  free(vp);

  printf("0.%s\n", version_str);

  return 0;
}

Там Беллард с научил вореции программировать на Сишке

https://textsynth.com/playground.html

3.14159265 3.14159265, (Updated )

Комментарии (784, +784)

Няшная / Говнокод #27973 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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
// тред лоулевел-хаков #1

#include <stdio.h>
#include <stdlib.h>

void hello(void)
{
        puts("Hello!");
}

void goodbye(void)
{
        puts("Goodbye!");
}

void set_sp_(void *p)
{
        void *s[0];
        s[0] = p;
}

void set_sp(void *p)
{
        set_sp_((void*)p);
}

int main(void)
{
        void *new_stack[1024] = {
                [1019] = (void*)0,
                [1020] = (void*)&hello,
                [1021] = (void*)&goodbye,
                [1022] = (void*)&exit
        };
        set_sp((void*)&new_stack[1019]);
        return 0;
}

UB-ы, платформенно зависимый кот, битовая магия

всё сюда
|
|
\/

Hu3KoypoBHeBblunemyx Hu3KoypoBHeBblunemyx, (Updated )

Комментарии (35, +35)

Няшная / Говнокод #27962 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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
union bitdata {
    struct {
      unsigned int bit1 : 1;
      unsigned int bit2 : 1;
      unsigned int bit3 : 1;
      unsigned int bit4 : 1;
      unsigned int bit5 : 1;
      unsigned int bit6 : 1;
      unsigned int bit7 : 1;
      unsigned int bit8 : 1;
    };
    unsigned char byte;
  } first_byte, second_byte;

<...>

for ( j = 0; j < bytes_count; j++ ) {
      unsigned char t;

      ret = gzread( gz_fd, &t, sizeof( t ) );
      if ( ret != sizeof( t ) ) {
    printf( "Failed to read file %s: %s\n", argv[i], strerror( errno ) );
    gzclose( gz_fd );
    return EXIT_FAILURE;
      }

      first_byte.byte  = t;
      second_byte.byte = ready_bytes[j];

      first_byte.bit1 = first_byte.bit1 == 0 && second_byte.bit1 == 0 ? 0 : 1;
      first_byte.bit2 = first_byte.bit2 == 0 && second_byte.bit2 == 0 ? 0 : 1;
      first_byte.bit3 = first_byte.bit3 == 0 && second_byte.bit3 == 0 ? 0 : 1;
      first_byte.bit4 = first_byte.bit4 == 0 && second_byte.bit4 == 0 ? 0 : 1;
      first_byte.bit5 = first_byte.bit5 == 0 && second_byte.bit5 == 0 ? 0 : 1;
      first_byte.bit6 = first_byte.bit6 == 0 && second_byte.bit6 == 0 ? 0 : 1;
      first_byte.bit7 = first_byte.bit7 == 0 && second_byte.bit7 == 0 ? 0 : 1;
      first_byte.bit8 = first_byte.bit8 == 0 && second_byte.bit8 == 0 ? 0 : 1;

      ready_bytes[j] = first_byte.byte;
    }

Всё еще не можем понять, зачем в конце тернарник. Всё остальное уже не смущает.

codemeow codemeow, (Updated )

Комментарии (73, +73)

Няшная / Говнокод #27954 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
#include <stdio.h>
#include <stdlib.h>

int main()
{
  int a[4] = {1, 2, 3, 4};
  int (*a_p1)[4] = (int (*)[4])a;
  int (*a_p2)[4] = &a;
  for(size_t i = 0; i < 4; ++i)
  {
    printf("%p -> %d; %p -> %d\n", &(*a_p1)[i], (*a_p1)[i], &(*a_p1)[i], (*a_p2)[i]);
  }
  return EXIT_SUCCESS;
}

Вот такой вывод:
0x7ffee4ebd950 -> 1; 0x7ffee4ebd950 -> 1
0x7ffee4ebd954 -> 2; 0x7ffee4ebd954 -> 2
0x7ffee4ebd958 -> 3; 0x7ffee4ebd958 -> 3
0x7ffee4ebd95c -> 4; 0x7ffee4ebd95c -> 4

j123123 j123123, (Updated )

Комментарии (102, +102)

Няшная / Говнокод #27941 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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
buf = malloc(8 * 1024);

snprintf(buf, 8 * 1024,
     "{\n"
     "\t\"tilejson\": \"2.0.0\",\n"
     "\t\"schema\": \"xyz\",\n"
     "\t\"name\": \"%s\",\n"
     "\t\"description\": \"%s\",\n"
     "\t\"attribution\": \"%s\",\n"
     "\t\"minzoom\": %i,\n"
     "\t\"maxzoom\": %i,\n"
     "\t\"tiles\": [\n",
     tile_config->xmlname, (tile_config->description ? tile_config->description : ""), tile_config->attribution, tile_config->minzoom, tile_config->maxzoom);

for (i = 0; i < tile_config->noHostnames; i++) {
    strncat(buf, "\t\t\"", 8 * 1024 - strlen(buf) - 1);
    strncat(buf, tile_config->hostnames[i], 8 * 1024 - strlen(buf) - 1);
    strncat(buf, tile_config->baseuri, 8 * 1024 - strlen(buf) - 1);
    strncat(buf, "{z}/{x}/{y}.", 8 * 1024 - strlen(buf) - 1);
    strncat(buf, tile_config->fileExtension, 8 * 1024 - strlen(buf) - 1);
    strncat(buf, "\"", 8 * 1024 - strlen(buf) - 1);

    if (i < tile_config->noHostnames - 1) {
        strncat(buf, ",", 8 * 1024 - strlen(buf) - 1);
    }

    strncat(buf, "\n", 8 * 1024 - strlen(buf) - 1);
}

strncat(buf, "\t]\n}\n", 8 * 1024 - strlen(buf) - 1);
len = strlen(buf);

/*
 * Add HTTP headers. Make this file cachable for 1 week
 */
md5 = ap_md5_binary(r->pool, (unsigned char *)buf, len);
apr_table_setn(r->headers_out, "ETag",
           apr_psprintf(r->pool, "\"%s\"", md5));
ap_set_content_type(r, "application/json");
ap_set_content_length(r, len);
apr_table_mergen(t, "Cache-Control",
         apr_psprintf(r->pool, "max-age=%" APR_TIME_T_FMT,
                  maxAge));
timestr = apr_palloc(r->pool, APR_RFC822_DATE_LEN);
apr_rfc822_date(timestr, (apr_time_from_sec(maxAge) + r->request_time));
apr_table_setn(t, "Expires", timestr);
ap_rwrite(buf, len, r);
free(buf);

https://github.com/openstreetmap/mod_tile/blob/master/src/mod_tile.c#L1212

ISO ISO, (Updated )

Комментарии (6, +6)