Advertisement
Guest User

Untitled

a guest
Mar 30th, 2020
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.75 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, int* 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. for (int i = 0; (&(Fparts.Tag[i])!= '\0'); i++) {
  35. if (Fparts.Tag[j] == '\n') || (Fparts.Tag[j] == '\r')) {
  36. if((Fparts->Tag[++i] != '\n') || (Fparts->Tag[++i] != '\r')) {
  37. i++;
  38. }
  39. Search_startlinetag (&Fparts, "to", char* To_space);
  40. Search_startlinetag (&Fparts, "from", char* From_space);
  41. Search_startlinetag (&Fparts, "date", char* Date_space);
  42. Search_startlinetag (&Fparts, "content-type", char* Content_type_space);
  43. Search_startlinetag (&Fparts, "received", char* Received_space);
  44. }
  45. }
  46.  
  47. // if (*(Fparts.Letter + 1)) == '\0') { // проверка пустого письма
  48. // Parts = 0;
  49. }
  50. if (strlen(Content_type_space) = 1) { // проверка однопартного письма
  51. Parts = 1;
  52. }
  53.  
  54. if (Parts < 0) {
  55. char* Multipart = strstr(Content_type_space, "multipart");
  56. if (Multipart == NULL) {
  57. Parts = 1;
  58. } else {
  59. char* Boundary = strstr(Content-type_space, "boundary="); // нашли boundary
  60. int state = strlen("boundary=") - 1; // запись значения boundary
  61. for(int i = 0; (isspace(*(Boundary+state+i))) && ((*(Boundary+state+i) != '\n') || (*(Boundary+state+i) != '\r')); i++); // проверка на пробелы
  62. while (*(Boundary+state+i) != '\n') || (*(Boundary+state+i) != '\r')) {
  63. Boundaryspaсe[1] = *(Boundary+state+i);
  64. }
  65. char* Bsadrr = strstr(string, Boundaryspaсe);
  66. while (Bsadrr) { // подсчет кол-ва партов
  67. Parts++;
  68. Bsadrr = strstr(string, substring);
  69. }
  70. }
  71. }
  72.  
  73.  
  74. return 0;
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement