Subversion Repositories Games.Chess Giants

Rev

Rev 158 | Rev 161 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 158 Rev 160
Line 803... Line 803...
803
 
803
 
804
   return; // finished
804
   return; // finished
805
}
805
}
806
 
806
 
807
 
807
 
808
bool Debug_SendLogToAuthor (void)
808
bool Debug_SendLogToAuthor (bool should_include_description)
809
{
809
{
810
   // this function upload the engine history to the remote server for debug purposes.
810
   // this function upload the engine history to the remote server for debug purposes.
811
 
811
 
-
 
812
   static wchar_t descriptionfile_pathname[MAX_PATH];
812
   static char log_buffer[512 * 1024];
813
   static char log_buffer[512 * 1024];
813
   static char log_base64buffer[512 * 1024 * 4 / 3];
814
   static char log_base64buffer[512 * 1024 * 4 / 3];
-
 
815
   static char description_buffer[512 * 1024];
-
 
816
   static char description_base64buffer[512 * 1024 * 4 / 3];
814
   static char board_buffer[8 * 5 * 8 * 3];
817
   static char board_buffer[8 * 5 * 8 * 3];
815
   static char board_base64buffer[8 * 5 * 8 * 3 * 4 / 3];
818
   static char board_base64buffer[8 * 5 * 8 * 3 * 4 / 3];
816
   static char http_buffer[1024 * 1024]; // used both for request and reply
819
   static char http_buffer[1024 * 1024]; // used both for request and reply
817
   static char user_email[64];
820
   static char user_email[64];
818
   static char program_version[10];
821
   static char program_version[10];
819
 
822
 
820
   struct sockaddr_in service;
823
   struct sockaddr_in service;
821
   struct hostent *hostinfo;
824
   struct hostent *hostinfo;
-
 
825
   SHELLEXECUTEINFO bugreport_shinfo;
-
 
826
   buffer_t bugreport_buffer;
822
   unsigned char part;
827
   unsigned char part;
823
   char *write_ptr;
828
   char *write_ptr;
824
   int write_index;
829
   int write_index;
825
   int read_index;
830
   int read_index;
826
   int length;
831
   int length;
Line 829... Line 834...
829
   int i;
834
   int i;
830
   int j;
835
   int j;
831
 
836
 
832
   // get a hand on the log file and read its contents
837
   // get a hand on the log file and read its contents
833
   _wfopen_s (&fp, logfile_pathname, L"rb");
838
   _wfopen_s (&fp, logfile_pathname, L"rb");
834
   if (fp == NULL)
839
   if (fp != NULL)
835
      return (false); // couldn't open game history log file, return an error condition
-
 
-
 
840
   {
836
   fseek (fp, 0, SEEK_END);
841
      fseek (fp, 0, SEEK_END);
837
   length = ftell (fp); // get file size
842
      length = ftell (fp); // get file size
838
   fseek (fp, 0, SEEK_SET);
843
      fseek (fp, 0, SEEK_SET);
839
   if (length > sizeof (log_base64buffer) - 1)
844
      if (length > sizeof (log_base64buffer) - 1)
840
      return (false); // history file too big, return an error condition
845
         return (false); // history file too big, return an error condition
841
   fread (log_base64buffer, 1, length, fp);
846
      fread (log_base64buffer, 1, length, fp);
842
   log_base64buffer[length] = 0; // terminate buffer ourselves
847
      log_base64buffer[length] = 0; // terminate buffer ourselves
843
   fclose (fp);
848
      fclose (fp);
844
   ConvertTo7BitASCII (log_buffer, sizeof (log_buffer), (wchar_t *) log_base64buffer);
849
      ConvertTo7BitASCII (log_buffer, sizeof (log_buffer), (wchar_t *) log_base64buffer);
-
 
850
   }
-
 
851
   else
-
 
852
      log_buffer[0] = 0; // couldn't open game history log file
-
 
853
 
-
 
854
   // should the user include a problem report ?
-
 
855
   if (should_include_description)
-
 
856
   {
-
 
857
      // have the user describe his problem with Notepad
-
 
858
      swprintf_s (descriptionfile_pathname, WCHAR_SIZEOF (descriptionfile_pathname), L"%s\\Chess Giants bug report.txt", app_path);
-
 
859
      Buffer_Initialize (&bugreport_buffer);
-
 
860
      length = wcslen (LOCALIZE (L"PleaseDescribeTheProblem"));
-
 
861
      Buffer_Append (&bugreport_buffer, (char *) LOCALIZE (L"PleaseDescribeTheProblem"), length * sizeof (wchar_t));
-
 
862
      Buffer_Append (&bugreport_buffer, (char *) L"\r\n", 2 * sizeof (wchar_t));
-
 
863
      for (write_index = 0; write_index < length; write_index++)
-
 
864
         Buffer_Append (&bugreport_buffer, (char *) L"-", sizeof (wchar_t));
-
 
865
      Buffer_Append (&bugreport_buffer, (char *) L"\r\n", 2 * sizeof (wchar_t));
-
 
866
      Buffer_Append (&bugreport_buffer, (char *) L"\r\n=> ", 5 * sizeof (wchar_t));
-
 
867
      Buffer_WriteToFileW (&bugreport_buffer, descriptionfile_pathname);
-
 
868
      memset (&bugreport_shinfo, 0, sizeof (bugreport_shinfo));
-
 
869
      bugreport_shinfo.cbSize = sizeof (SHELLEXECUTEINFO);
-
 
870
      bugreport_shinfo.fMask = SEE_MASK_NOCLOSEPROCESS;
-
 
871
      bugreport_shinfo.lpFile = L"notepad.exe";
-
 
872
      bugreport_shinfo.lpParameters = descriptionfile_pathname;
-
 
873
      bugreport_shinfo.nShow = SW_SHOW;
-
 
874
      ShellExecuteEx (&bugreport_shinfo);
-
 
875
      WaitForSingleObject (bugreport_shinfo.hProcess, INFINITE);
-
 
876
      CloseHandle (bugreport_shinfo.hProcess);
-
 
877
 
-
 
878
      // get a hand on the error description file and read its contents
-
 
879
      _wfopen_s (&fp, descriptionfile_pathname, L"rb");
-
 
880
      if (fp != NULL)
-
 
881
      {
-
 
882
         fseek (fp, 0, SEEK_END);
-
 
883
         length = ftell (fp); // get file size
-
 
884
         fseek (fp, 0, SEEK_SET);
-
 
885
         if (length > sizeof (description_base64buffer) - 1)
-
 
886
            return (false); // history file too big, return an error condition
-
 
887
         fread (description_base64buffer, 1, length, fp);
-
 
888
         description_base64buffer[length] = 0; // terminate buffer ourselves
-
 
889
         fclose (fp);
-
 
890
         _wunlink (descriptionfile_pathname); // as soon as it's read, DELETE the error description file
-
 
891
         ConvertTo7BitASCII (description_buffer, sizeof (description_buffer), (wchar_t *) description_base64buffer);
-
 
892
      }
-
 
893
      else
-
 
894
         description_buffer[0] = 0; // couldn't open error description file
-
 
895
   }
-
 
896
   else
-
 
897
      description_buffer[0] = 0; // no description
845
 
898
 
846
   // capture and encode the board
899
   // capture and encode the board
847
   strcpy_s (board_buffer, sizeof (board_buffer), "+---+---+---+---+---+---+---+---+\n");
900
   strcpy_s (board_buffer, sizeof (board_buffer), "+---+---+---+---+---+---+---+---+\n");
848
   for (i = 7; i >= 0; i--) // lines are in reverse order in this stupid program of mine >.<
901
   for (i = 7; i >= 0; i--) // lines are in reverse order in this stupid program of mine >.<
849
   {
902
   {
Line 919... Line 972...
919
   else
972
   else
920
      strcpy_s (user_email, sizeof (user_email), "an+unregistered+user");
973
      strcpy_s (user_email, sizeof (user_email), "an+unregistered+user");
921
   length = strlen ("registrant=") + strlen (user_email)
974
   length = strlen ("registrant=") + strlen (user_email)
922
          + strlen ("&version=") + strlen (program_version)
975
          + strlen ("&version=") + strlen (program_version)
923
          + strlen ("&board=") + base64_encode (board_base64buffer, board_buffer, strlen (board_buffer))
976
          + strlen ("&board=") + base64_encode (board_base64buffer, board_buffer, strlen (board_buffer))
924
          + strlen ("&log=") + base64_encode (log_base64buffer, log_buffer, strlen (log_buffer));
977
          + strlen ("&log=") + base64_encode (log_base64buffer, log_buffer, strlen (log_buffer))
-
 
978
          + strlen ("&description=") + base64_encode (description_base64buffer, description_buffer, strlen (description_buffer));
925
   sprintf_s (http_buffer, sizeof (http_buffer),
979
   sprintf_s (http_buffer, sizeof (http_buffer),
926
              "POST /chess/sendcrash.php HTTP/1.1\r\n"
980
              "POST /chess/sendcrash.php HTTP/1.1\r\n"
927
              "Host: pmbaty.com\r\n"
981
              "Host: pmbaty.com\r\n"
928
              "Content-Type: application/x-www-form-urlencoded\r\n"
982
              "Content-Type: application/x-www-form-urlencoded\r\n"
929
              "Content-Length: %d\r\n"
983
              "Content-Length: %d\r\n"
930
              "Connection: close\r\n"
984
              "Connection: close\r\n"
931
              "\r\n"
985
              "\r\n"
932
              "registrant=%s&version=%s&board=%s&log=%s", length, user_email, program_version, board_base64buffer, log_base64buffer);
986
              "registrant=%s&version=%s&board=%s&log=%s&description=%s", length, user_email, program_version, board_base64buffer, log_base64buffer, description_base64buffer);
933
   length = strlen (http_buffer);
987
   length = strlen (http_buffer);
934
   write_index = send (s, http_buffer, length, 0); // send the HTTP query
988
   write_index = send (s, http_buffer, length, 0); // send the HTTP query
935
   if (write_index != length)
989
   if (write_index != length)
936
   {
990
   {
937
      closesocket (s); // finished communicating, close TCP socket
991
      closesocket (s); // finished communicating, close TCP socket