Advertisement
Aslai

Untitled

Nov 15th, 2012
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.47 KB | None | 0 0
  1. int scrapesocket( SOCKET sock, const char* searchfor, char* buffer, int len )
  2. {
  3.     char* t = (char*) searchfor;
  4.     int argc = 0;
  5.     int tr = 0;
  6.     int trm = 0;
  7.     while( !(*(t + 1) == 0 && *t == 0) ) {
  8.         if( *(t+1) == 0 ) {
  9.             argc++;
  10.             trm = tr > trm ? tr : trm;
  11.             tr = 0;
  12.         }
  13.         t++;
  14.         tr++;
  15.     }
  16.     printf("%i", argc );
  17.     int* lens = (int*) malloc( sizeof( int ) * (argc+1));
  18.  
  19.  
  20.     char** values = (char**) malloc( argc * sizeof( char*) );
  21.     t = (char*) searchfor;
  22.     char* track = t;
  23.     int i = 0;
  24.     while( !(*(t + 1) == 0 && *t == 0) && i < argc ) {
  25.         if( *(t+1) == 0 ){
  26.             values[i] = track;
  27.             lens[i++] = strlen( track );
  28.             track = t + 2;
  29.         }
  30.         t++;
  31.     }
  32.  
  33.     char* buff = (char*) malloc( (trm + 1) * 2 );
  34.     memset( buff, 0, (trm)*2);
  35.     int bpos = trm-1;
  36.  
  37.     char a;
  38.     int y = 0;
  39.     printf("mallocing\n");
  40.     while( recv( sock, &a, 1, 0 ) > 0 ){
  41.         for( i = bpos+1; i <= trm; i ++ )
  42.             buff[i-1] = buff[i];
  43.         if( buffer != 0 ){
  44.             *(buffer++) = a;
  45.             y++;
  46.             if( y >= len ){
  47.                 free( values ); free( lens ); free( buff );
  48.                 return -2;
  49.             }
  50.         }
  51.         buff[trm] = a;
  52.         if( bpos > 0 ) bpos--;
  53.         for( i = 0; i < argc; i ++ ){
  54.  
  55.             //char seat = *(buff+trm-lens[i]+lens[i]);
  56.             //*(buff+trm-lens[i]+lens[i]) = 0;
  57.             //printf("%s\n", buff+trm-lens[i]+1);
  58.             if( strcmp( values[i], buff+trm-lens[i]+1 ) == 0 ){
  59.                 if( buffer != 0 ){
  60.                 buffer -= lens[i];
  61.                 *buffer = 0;
  62.                 }
  63.                 printf("freeing2\n");
  64.                 free( values );
  65.                 printf("freeing3\n");
  66.                 free( lens );
  67.                 printf("freeing4\n");
  68.                 free( buff );
  69.                 printf("returning\n");
  70.                 return i;
  71.             }
  72.             //*(buff+bpos+lens[i]) = seat;
  73.         }
  74.     }
  75.                     printf("freeing01111\n");
  76.                 free( values );
  77.                 printf("freeing3\n");
  78.                 free( lens );
  79.                 printf("freeing4\n");
  80.                 free( buff );
  81.                 printf("returning\n");
  82.     return -1;
  83. }
  84.  
  85. int scrapesockettobuf( SOCKET sock, const char* searchfor, char* buffer, int len )
  86. {
  87.     return scrapesocket( sock, searchfor, buffer, len);
  88. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement