Advertisement
Guest User

parser.c

a guest
Apr 27th, 2016
211
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.46 KB | None | 0 0
  1. COMMAND*Jdf34jflk09dklinvalid_command(COMMAND*Jdf34jflk09dklcommlist,char*
  2. Jdf34jflk09dklmsg){fprintf(stderr,"\x45\x52\x52\x4f\x3a\x20\x25\x73" "\n",
  3. Jdf34jflk09dklmsg);free_commlist(Jdf34jflk09dklcommlist);return NULL;}COMMAND*
  4. parse(char*linha){COMMAND*Jdf34jflk09dklhead_com,*Jdf34jflk09dklcom;char*
  5. Jdf34jflk09dkllinha_com,*Jdf34jflk09dklfirst,*Jdf34jflk09dklsecond,*
  6. Jdf34jflk09dklthird,*Jdf34jflk09dklin,*Jdf34jflk09dklout;int
  7. Jdf34jflk09dkllen;inputfile=NULL;outputfile=NULL;background_exec=
  8. (0x768+4444-0x18c4);
  9. if(linha[(0x149b+494-0x1689)]==((char)(0x4a6+3916-0x1376))||linha[strlen(linha)-
  10. (0x1ab+4254-0x1248)]==((char)(0xbdf+5513-0x20ec)))return
  11. Jdf34jflk09dklinvalid_command(NULL,
  12. "'|' como primeiro ou último caracter da linha");Jdf34jflk09dklhead_com=NULL;
  13. Jdf34jflk09dkllinha_com=strtok(linha,"\x7c");while(Jdf34jflk09dkllinha_com){if
  14. (Jdf34jflk09dkllinha_com[strlen(Jdf34jflk09dkllinha_com)+(0x1d53+1659-0x23cd)]
  15. ==((char)(0x1b8c+1318-0x2036)))return Jdf34jflk09dklinvalid_command(
  16. Jdf34jflk09dklhead_com,
  17. "\x64\x6f\x69\x73\x20\x63\x61\x72\x61\x63\x74\x65\x72\x65\x73\x20\x27\x7c\x27\x20\x73\x65\x67\x75\x69\x64\x6f\x73"
  18. );if(Jdf34jflk09dklhead_com){Jdf34jflk09dklcom->next=malloc(sizeof(COMMAND));
  19. Jdf34jflk09dklcom=Jdf34jflk09dklcom->next;}else{Jdf34jflk09dklhead_com=malloc
  20. (sizeof(COMMAND));Jdf34jflk09dklcom=Jdf34jflk09dklhead_com;}Jdf34jflk09dklcom
  21. ->cmd=Jdf34jflk09dkllinha_com;Jdf34jflk09dkllinha_com=strtok(NULL,"\x7c");}
  22. Jdf34jflk09dklcom->next=NULL;
  23. Jdf34jflk09dklcom=Jdf34jflk09dklhead_com;while(Jdf34jflk09dklcom){
  24. Jdf34jflk09dkllinha_com=Jdf34jflk09dklcom->cmd;
  25. if(Jdf34jflk09dkllinha_com[(0x2078+1291-0x2583)]==((char)(0x1362+1651-0x19af)))
  26. return Jdf34jflk09dklinvalid_command(Jdf34jflk09dklhead_com,
  27. "\x27\x26\x27\x20\x63\x6f\x6d\x6f\x20\x70\x72\x69\x6d\x65\x69\x72\x6f\x20\x63\x61\x72\x61\x63\x74\x65\x72\x20\x64\x6f\x20\x63\x6f\x6d\x61\x6e\x64\x6f"
  28. );Jdf34jflk09dkllen=strlen(Jdf34jflk09dkllinha_com);Jdf34jflk09dklfirst=
  29. strtok(Jdf34jflk09dkllinha_com,"\x26");if(strtok(NULL,"\x20"))return
  30. Jdf34jflk09dklinvalid_command(Jdf34jflk09dklhead_com,
  31. "'&' não é o último caracter do comando");if(Jdf34jflk09dkllen!=strlen(
  32. Jdf34jflk09dkllinha_com))background_exec=(0xa3f+3810-0x1920);
  33. if(Jdf34jflk09dkllinha_com[strlen(Jdf34jflk09dkllinha_com)-(0x913+342-0xa68)]
  34. ==((char)(0x7fc+7160-0x23b8))||Jdf34jflk09dkllinha_com[strlen(
  35. Jdf34jflk09dkllinha_com)-(0x55d+875-0x8c7)]==((char)(0x211+9217-0x25d4)))return
  36. Jdf34jflk09dklinvalid_command(NULL,
  37. "'<' ou '>' como último caracter do comando");if(Jdf34jflk09dkllinha_com[
  38. (0x245a+554-0x2684)]==((char)(0xd90+687-0x1003))){if(Jdf34jflk09dkllinha_com[
  39. (0x67a+1806-0xd87)]==((char)(0x2239+957-0x25ba))||Jdf34jflk09dkllinha_com[
  40. (0xb79+5108-0x1f6c)]==((char)(0x126c+4481-0x23af)))return
  41. Jdf34jflk09dklinvalid_command(NULL,"sequência '<<' ou '<>' no comando");
  42. Jdf34jflk09dklin=Jdf34jflk09dklfirst=strtok(Jdf34jflk09dkllinha_com,"\x3c");
  43. if(strtok(NULL,""))return Jdf34jflk09dklinvalid_command(NULL,
  44. "\x64\x6f\x69\x73\x20\x63\x61\x72\x61\x63\x74\x65\x72\x65\x73\x20\x27\x3c\x27\x20\x6e\x6f\x20\x63\x6f\x6d\x61\x6e\x64\x6f"
  45. );strtok(Jdf34jflk09dklfirst,"\x3e");if(Jdf34jflk09dklfirst[strlen(
  46. Jdf34jflk09dklfirst)+(0xbc6+3641-0x19fe)]==((char)(0x505+104-0x52f)))return
  47. Jdf34jflk09dklinvalid_command(Jdf34jflk09dklhead_com,
  48. "\x64\x6f\x69\x73\x20\x63\x61\x72\x61\x63\x74\x65\x72\x65\x73\x20\x27\x3e\x27\x20\x73\x65\x67\x75\x69\x64\x6f\x73"
  49. );Jdf34jflk09dklout=Jdf34jflk09dklsecond=strtok(NULL,"\x3e");if(strtok(NULL,""
  50. ))return Jdf34jflk09dklinvalid_command(NULL,
  51. "\x64\x6f\x69\x73\x20\x63\x61\x72\x61\x63\x74\x65\x72\x65\x73\x20\x27\x3e\x27\x20\x6e\x6f\x20\x63\x6f\x6d\x61\x6e\x64\x6f"
  52. );Jdf34jflk09dklthird=NULL;}else if(Jdf34jflk09dkllinha_com[(0x636+1328-0xb66)
  53. ]==((char)(0x2613+179-0x2688))){if(Jdf34jflk09dkllinha_com[(0xa1c+1916-0x1197)]
  54. ==((char)(0x18c6+2619-0x22c5))||Jdf34jflk09dkllinha_com[(0x1031+3888-0x1f60)]==
  55. ((char)(0x1472+2234-0x1cee)))return Jdf34jflk09dklinvalid_command(NULL,
  56. "sequência '><' ou '>>' no comando");Jdf34jflk09dklout=Jdf34jflk09dklfirst=
  57. strtok(Jdf34jflk09dkllinha_com,"\x3e");if(strtok(NULL,""))return
  58. Jdf34jflk09dklinvalid_command(NULL,
  59. "\x64\x6f\x69\x73\x20\x63\x61\x72\x61\x63\x74\x65\x72\x65\x73\x20\x27\x3e\x27\x20\x6e\x6f\x20\x63\x6f\x6d\x61\x6e\x64\x6f"
  60. );strtok(Jdf34jflk09dklfirst,"\x3c");if(Jdf34jflk09dklfirst[strlen(
  61. Jdf34jflk09dklfirst)+(0x12dc+1650-0x194d)]==((char)(0x1bcb+262-0x1c95)))return
  62. Jdf34jflk09dklinvalid_command(Jdf34jflk09dklhead_com,
  63. "\x64\x6f\x69\x73\x20\x63\x61\x72\x61\x63\x74\x65\x72\x65\x73\x20\x27\x3c\x27\x20\x73\x65\x67\x75\x69\x64\x6f\x73"
  64. );Jdf34jflk09dklin=Jdf34jflk09dklsecond=strtok(NULL,"\x3c");if(strtok(NULL,"")
  65. )return Jdf34jflk09dklinvalid_command(NULL,
  66. "\x64\x6f\x69\x73\x20\x63\x61\x72\x61\x63\x74\x65\x72\x65\x73\x20\x27\x3c\x27\x20\x6e\x6f\x20\x63\x6f\x6d\x61\x6e\x64\x6f"
  67. );Jdf34jflk09dklthird=NULL;}else{Jdf34jflk09dklfirst=strtok(
  68. Jdf34jflk09dkllinha_com,"\x3c");if(Jdf34jflk09dklfirst[strlen(
  69. Jdf34jflk09dklfirst)+(0x32a+5556-0x18dd)]==((char)(0x53d+4906-0x182b))||
  70. Jdf34jflk09dklfirst[strlen(Jdf34jflk09dklfirst)+(0x1af+3660-0xffa)]==
  71. ((char)(0x463+6010-0x1b9f)))return Jdf34jflk09dklinvalid_command(NULL,
  72. "sequência '<<' ou '<>' no comando");Jdf34jflk09dklin=strtok(NULL,"\x3c");if(
  73. Jdf34jflk09dklin&&strtok(NULL,""))return Jdf34jflk09dklinvalid_command(NULL,
  74. "\x64\x6f\x69\x73\x20\x63\x61\x72\x61\x63\x74\x65\x72\x65\x73\x20\x27\x3c\x27\x20\x6e\x6f\x20\x63\x6f\x6d\x61\x6e\x64\x6f"
  75. );strtok(Jdf34jflk09dklfirst,"\x3e");if(Jdf34jflk09dklfirst[strlen(
  76. Jdf34jflk09dklfirst)+(0x1fe8+113-0x2058)]==((char)(0x560+5096-0x190c))||
  77. Jdf34jflk09dklfirst[strlen(Jdf34jflk09dklfirst)+(0x21f2+106-0x225b)]==
  78. ((char)(0x23d+6276-0x1a83)))return Jdf34jflk09dklinvalid_command(NULL,
  79. "sequência '><' ou '>>' no comando");Jdf34jflk09dklout=strtok(NULL,"\x3e");if(
  80. Jdf34jflk09dklout&&strtok(NULL,""))return Jdf34jflk09dklinvalid_command(NULL,
  81. "\x64\x6f\x69\x73\x20\x63\x61\x72\x61\x63\x74\x65\x72\x65\x73\x20\x27\x3e\x27\x20\x6e\x6f\x20\x63\x6f\x6d\x61\x6e\x64\x6f"
  82. );if(Jdf34jflk09dklout){strtok(Jdf34jflk09dklin,"\x3e");if(strtok(NULL,""))
  83. return Jdf34jflk09dklinvalid_command(NULL,
  84. "\x64\x6f\x69\x73\x20\x63\x61\x72\x61\x63\x74\x65\x72\x65\x73\x20\x27\x3e\x27\x20\x6e\x6f\x20\x63\x6f\x6d\x61\x6e\x64\x6f"
  85. );Jdf34jflk09dklsecond=Jdf34jflk09dklout;Jdf34jflk09dklthird=
  86. Jdf34jflk09dklin;}else if(Jdf34jflk09dklin){strtok(Jdf34jflk09dklin,"\x3e");
  87. if(Jdf34jflk09dklin[strlen(Jdf34jflk09dklin)+(0x17b+6596-0x1b3e)]==
  88. ((char)(0x1cf8+2624-0x26fa)))return Jdf34jflk09dklinvalid_command(
  89. Jdf34jflk09dklhead_com,
  90. "\x64\x6f\x69\x73\x20\x63\x61\x72\x61\x63\x74\x65\x72\x65\x73\x20\x27\x3e\x27\x20\x73\x65\x67\x75\x69\x64\x6f\x73"
  91. );Jdf34jflk09dklout=strtok(NULL,"\x3e");if(strtok(NULL,""))return
  92. Jdf34jflk09dklinvalid_command(NULL,
  93. "\x64\x6f\x69\x73\x20\x63\x61\x72\x61\x63\x74\x65\x72\x65\x73\x20\x27\x3e\x27\x20\x6e\x6f\x20\x63\x6f\x6d\x61\x6e\x64\x6f"
  94. );Jdf34jflk09dklsecond=Jdf34jflk09dklin;Jdf34jflk09dklthird=
  95. Jdf34jflk09dklout;}else Jdf34jflk09dklsecond=Jdf34jflk09dklthird=NULL;}
  96. if(Jdf34jflk09dklin&&Jdf34jflk09dklcom!=Jdf34jflk09dklhead_com)return
  97. Jdf34jflk09dklinvalid_command(Jdf34jflk09dklhead_com,
  98. "'<' não está no primeiro comando");if(Jdf34jflk09dklout&&Jdf34jflk09dklcom
  99. ->next)return Jdf34jflk09dklinvalid_command(Jdf34jflk09dklhead_com,
  100. "'>' não está no último comando");if(background_exec==(0x1e90+701-0x214c)&&
  101. Jdf34jflk09dklcom->next)return Jdf34jflk09dklinvalid_command(
  102. Jdf34jflk09dklhead_com,"'&' não está no último comando");
  103. Jdf34jflk09dklcom->argc=(0x1548+3203-0x21cb);if((Jdf34jflk09dklcom->argv[
  104. Jdf34jflk09dklcom->argc]=strtok(Jdf34jflk09dklfirst,"\x20"))==NULL)return
  105. Jdf34jflk09dklinvalid_command(Jdf34jflk09dklhead_com,
  106. "\x66\x61\x6c\x74\x61\x6d\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x6f\x73");if(
  107. Jdf34jflk09dklin==Jdf34jflk09dklfirst)inputfile=Jdf34jflk09dklcom->argv[
  108. Jdf34jflk09dklcom->argc];else if(Jdf34jflk09dklout==Jdf34jflk09dklfirst)
  109. outputfile=Jdf34jflk09dklcom->argv[Jdf34jflk09dklcom->argc];else
  110. Jdf34jflk09dklcom->argc++;while((Jdf34jflk09dklcom->argv[Jdf34jflk09dklcom->
  111. argc]=strtok(NULL,"\x20"))!=NULL)Jdf34jflk09dklcom->argc++;if(
  112. Jdf34jflk09dklsecond){if((Jdf34jflk09dklcom->argv[Jdf34jflk09dklcom->argc]=
  113. strtok(Jdf34jflk09dklsecond,"\x20"))==NULL)return
  114. Jdf34jflk09dklinvalid_command(Jdf34jflk09dklhead_com,
  115. "\x66\x61\x6c\x74\x61\x6d\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x6f\x73");if(
  116. Jdf34jflk09dklin==Jdf34jflk09dklsecond)inputfile=Jdf34jflk09dklcom->argv[
  117. Jdf34jflk09dklcom->argc];else if(Jdf34jflk09dklout==Jdf34jflk09dklsecond)
  118. outputfile=Jdf34jflk09dklcom->argv[Jdf34jflk09dklcom->argc];else
  119. Jdf34jflk09dklcom->argc++;while((Jdf34jflk09dklcom->argv[Jdf34jflk09dklcom->
  120. argc]=strtok(NULL,"\x20"))!=NULL)Jdf34jflk09dklcom->argc++;}if(
  121. Jdf34jflk09dklthird){if((Jdf34jflk09dklcom->argv[Jdf34jflk09dklcom->argc]=
  122. strtok(Jdf34jflk09dklthird,"\x20"))==NULL)return Jdf34jflk09dklinvalid_command
  123. (Jdf34jflk09dklhead_com,
  124. "\x66\x61\x6c\x74\x61\x6d\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x6f\x73");if(
  125. Jdf34jflk09dklin==Jdf34jflk09dklthird)inputfile=Jdf34jflk09dklcom->argv[
  126. Jdf34jflk09dklcom->argc];else if(Jdf34jflk09dklout==Jdf34jflk09dklthird)
  127. outputfile=Jdf34jflk09dklcom->argv[Jdf34jflk09dklcom->argc];else
  128. Jdf34jflk09dklcom->argc++;while((Jdf34jflk09dklcom->argv[Jdf34jflk09dklcom->
  129. argc]=strtok(NULL,"\x20"))!=NULL)Jdf34jflk09dklcom->argc++;}Jdf34jflk09dklcom
  130. ->argv[Jdf34jflk09dklcom->argc]=NULL;Jdf34jflk09dklcom->cmd=Jdf34jflk09dklcom
  131. ->argv[(0x1a9a+921-0x1e33)];Jdf34jflk09dklcom=Jdf34jflk09dklcom->next;}return
  132. Jdf34jflk09dklhead_com;}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement