int main() { char *plain_text, *encrypted_text, *decrypted_text; int index, *key, key_length, *key_length_address = &key_length; long length; long *length_address = &length; if(FilterText() == -1) { printf("\nA file I/O has occured!"); exit(1); } if((plain_text = ReadPlainText(length_address)) == NULL) { printf("A problem has occured!"); exit(2); } if((key = GenerateKey(key_length_address)) == NULL) { printf("A memory problem has occured!"); exit(3); } if((encrypted_text = Encrypt(key, key_length, plain_text, length)) == NULL) { printf("A memory problem has occured!"); exit(4); } if(WriteTextToFile("encrypted_text.txt" ,encrypted_text, length) == -1) { printf("\nA file I/O has occured!"); exit(5); } if((decrypted_text = Decrypt(key, key_length, encrypted_text, length)) == NULL) { printf("A memory problem has occured!"); exit(4); } if(WriteTextToFile("decrypted_text.txt" ,decrypted_text, length) == -1) { printf("\nA file I/O has occured!"); exit(5); } free(plain_text); free(encrypted_text); free(decrypted_text);; free(key); return 0; }
//*************************************************** bool Logic::AddSpecialSyntax() { int arg1,arg2,arg3; bool arg2isvar=false,arg3isvar=false,arg2isstar=false; string ArgText="",expr,expr2; int OldLinePos; OldLinePos = LinePos; LinePos -= CommandName.length(); if(CommandName[0]=='*'){ LinePos++; ArgText = "*" + ReplaceDefine(ReadPlainText()); } else ArgText = ReplaceDefine(ReadPlainText()); if(ArgText[0]=='v'){ arg1 = Val(ArgText.substr(1)); if(arg1<0 || arg1>255) ShowError(CurLine,"Invalid number given or error in expression syntax."); else{ SkipSpaces(); expr = ReadExprText(); if(expr == "++"){ WriteByte(0x01); // increment WriteByte(arg1); return true; } else if (expr == "--"){ WriteByte(0x02); // decrement WriteByte(arg1); return true; } else{ if(expr[0]=='*'){ expr = expr.substr(1); LinePos++; } SkipSpaces(); arg2isstar = false; ArgText = ReadPlainText(); if(ReadPlainText() == "" && LowerCaseLine[LinePos-ArgText.length()]=='*'){ LinePos++; ArgText = "*" + ReplaceDefine(ReadPlainText()); } else ArgText = ReplaceDefine(ArgText); if(ArgText[0] == 'v' && !arg2isstar)arg2isvar=true; else if (ArgText.substr(0,2) == "*v" && !arg2isstar) arg2isstar = true; if(arg2isvar)arg2 = Val(ArgText.substr(1)); else if(arg2isstar)arg2 = Val(ArgText.substr(2)); else arg2 = Val(ArgText); if(arg2 <0 || arg2 >255) ShowError(CurLine,"Invalid number given or error in expression syntax."); else{ if(expr == "+=" && !arg2isstar){ if(arg2isvar)WriteByte(0x06); //addv else WriteByte(0x05); //addn WriteByte(arg1); WriteByte(arg2); return true; } else if(expr == "-=" && !arg2isstar){ if(arg2isvar)WriteByte(0x08); //subv else WriteByte(0x07); //subn WriteByte(arg1); WriteByte(arg2); return true; } else if(expr == "*=" && !arg2isstar){ if(arg2isvar)WriteByte(0xa6); //mul.v else WriteByte(0xa5); //mul.n WriteByte(arg1); WriteByte(arg2); return true; } else if(expr == "/=" && !arg2isstar){ if(arg2isvar)WriteByte(0xa8); //div.v else WriteByte(0xa7); //div.n WriteByte(arg1); WriteByte(arg2); return true; } else if(expr == "="){ if(LinePos < LineLength && EditLines.at(CurLine)[LinePos] == ';'){ //must be assignn, assignv or rindirect if (arg2isvar) WriteByte(0x04); // assignv else if (arg2isstar) WriteByte(0x0A); // rindirect else WriteByte(0x03); // assignv WriteByte(arg1); WriteByte(arg2); return true; } else if(arg2 != arg1) ShowError(CurLine,"Expression syntax error"); else{ SkipSpaces(); expr2 = ReadExprText(); SkipSpaces(); ArgText = ReplaceDefine(ReadPlainText()); arg3isvar = (ArgText[0]=='v'); if(arg3isvar)arg3=Val(ArgText.substr(1)); else arg3 = Val(ArgText); if(arg3<0 || arg3>255) ShowError(CurLine,"Invalid number given or error in expression syntax."); else{ if (expr2 == "+"){ if (arg3isvar) WriteByte(0x06); //addv else WriteByte(0x05); //addn WriteByte(arg1); WriteByte(arg3); return true; } else if (expr2 == "-"){ if (arg3isvar) WriteByte(0x08); //subv else WriteByte(0x07); //subn WriteByte(arg1); WriteByte(arg3); return true; } else if (expr2 == "*"){ if (arg3isvar) WriteByte(0xa6); //mul.v else WriteByte(0xa5); //mul.n WriteByte(arg1); WriteByte(arg3); return true; } else if (expr2 == "/"){ if (arg3isvar) WriteByte(0xa8); //div.v else WriteByte(0xa7); //div.n WriteByte(arg1); WriteByte(arg3); return true; } else ShowError(CurLine,"Expression syntax error"); } } }//if(expr == "=") else ShowError(CurLine,"Expression syntax error"); } }//if (expr != "--" && expr != "++") }//if(arg1<0 || arg1>255) }//if(ArgText[0]=='v') else if(ArgText.substr(0,2)=="*v"){ LinePos -= (CommandName.length() -1); ArgText = ReplaceDefine(ReadPlainText()); arg1 = Val(ArgText.substr(1)); if(arg1<0 || arg1>255) ShowError(CurLine,"Invalid number given or error in expression syntax."); else{ SkipSpaces(); expr = ReadExprText(); if(expr != "=")ShowError(CurLine,"Expression syntax error"); else{ SkipSpaces(); ArgText = ReplaceDefine(ReadPlainText()); arg2isvar = (ArgText[0]=='v'); if(arg2isvar)arg2 = Val(ArgText.substr(1)); else arg2 = Val(ArgText); if(arg2 < 0 || arg2 > 255) ShowError(CurLine,"Invalid number given or error in expression syntax."); else{ if(arg2isvar)WriteByte(0x09); //lindirectv else WriteByte(0x0b); //lindirectn WriteByte(arg1); WriteByte(arg2); return true; } } } }//if(ArgText.substr(0,2)=="*v") else LinePos = OldLinePos; return false; }
//*************************************************** bool Logic::AddSpecialIFSyntax() { int OldLinePos; int arg1,arg2; bool arg2isvar,AddNOT; string ArgText,expr; OldLinePos = LinePos; LinePos -= CommandName.length(); ArgText = ReplaceDefine(ReadPlainText()); if(ArgText[0]=='v'){ if (NOTOn) ShowError(CurLine,"'!' not allowed before var."); arg1=Val(ArgText.substr(1)); if(arg1<0||arg1>255) ShowError(CurLine,"Invalid number given or error in expression syntax."); else{ SkipSpaces(); expr = ReadExprText(); SkipSpaces(); ArgText = ReplaceDefine(ReadPlainText()); arg2isvar = (ArgText[0]=='v'); if(arg2isvar) arg2=Val(ArgText.substr(1)); else arg2=Val(ArgText); if(arg2<0||arg2>255) ShowError(CurLine,"Invalid number given or error in expression syntax."); else{ CommandNum=0; AddNOT = false; if(expr == "==")CommandNum = 0x01; //equal else if(expr == "<")CommandNum = 0x03; //less else if(expr == ">")CommandNum = 0x05; //greater else if(expr == "!="){ CommandNum = 0x01; AddNOT = true; } //!equal else if(expr == ">="){ CommandNum = 0x03; AddNOT = true; } //!less else if(expr == "<="){ CommandNum = 0x05; AddNOT = true; } //!greater else ShowError(CurLine,"Expression syntax error"); if(CommandNum>0){ if (arg2isvar)CommandNum++; if (AddNOT) WriteByte(0xFD); WriteByte(CommandNum); WriteByte(arg1); WriteByte(arg2); return true; } } } }//if(ArgText[0]=='v') else if(ArgText[0]=='f'){ arg1 = Val(ArgText.substr(1)); if(arg1<0||arg1>255) ShowError(CurLine,"Invalid number given or error in expression syntax.."); else{ WriteByte(0x07); // isset WriteByte(arg1); return true; } }//if(ArgText[0]=='f') else LinePos = OldLinePos; return false; }