Advertisement
Guest User

Untitled

a guest
Mar 30th, 2020
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.43 KB | None | 0 0
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <fcntl.h>
  4. #include <sys/mman.h>
  5.  
  6. int main(int argc, const char **argv) {
  7. if (argc != 2) {
  8. return -1;
  9. }
  10.  
  11. const char *path_to_eml = argv[1];
  12. puts(path_to_eml);
  13.  
  14. int Strlen = 0; // длина строки-копии входного файла
  15.  
  16. char* Strfile = Open_file_write_to_str(path_to_eml, Strlen);
  17. if (Strfile == NULL) {
  18. printf("Error of file open\n");
  19. return -1;
  20. }
  21.  
  22. char To_space[120] = ""; // поля для хранения содержимого тегов
  23. char From_space[120] = "";
  24. char Date_space[120] = "";
  25. char Content_type_space[120] = "";
  26. char Received_space[120] = "";
  27. int Parts = -1;
  28.  
  29. Efile Fparts = {}; // структура для хранения адресов на заголовок и письмо файла
  30.  
  31. Fparts.Tag = Strfile;
  32. Correct_caps_find_endoftag(Fparts);
  33.  
  34. Search_startlinetag (&Fparts, "to", To_space);
  35. Search_startlinetag (&Fparts, "from", From_space);
  36. Search_startlinetag (&Fparts, "date", Date_space);
  37. Search_startlinetag (&Fparts, "content-type", Content_type_space);
  38. Search_startlinetag (&Fparts, "received", Received_space);
  39.  
  40. // if (*(Fparts.Letter + 1)) == '\0') { // проверка пустого письма
  41. // Parts = 0;
  42. }
  43. if (strlen(Content_type_space) = 1) { // проверка однопартного письма
  44. Parts = 1;
  45. }
  46.  
  47. if (Parts < 0) {
  48. char* Multipart = strstr(Content_type_space, "multipart");
  49. if (Multipart == NULL) {
  50. Parts = 1;
  51. } else {
  52. char* Boundary = strstr(Content-type_space, "boundary="); // нашли boundary
  53. int state = strlen("boundary=") - 1; // запись значения boundary
  54. for(int i = 0; (isspace(*(Boundary+state+i))) && ((*(Boundary+state+i) != '\n') || (*(Boundary+state+i) != '\r')); i++); // проверка на пробелы
  55. while (*(Boundary+state+i) != '\n') || (*(Boundary+state+i) != '\r')) {
  56. Boundaryspaсe[1] = *(Boundary+state+i);
  57. }
  58. char* Bsadrr = strstr(string, Boundaryspaсe);
  59. while (Bsadrr) { // подсчет кол-ва партов
  60. Parts++;
  61. Bsadrr = strstr(string, substring);
  62. }
  63. }
  64. }
  65.  
  66.  
  67. return 0;
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement