/* SlideScript - minimalistic top-down scripting language. (C) Copyright 2014-2021 Chris Dorman - some rights reserved (GPLv2) View README file supplied with this software for more details */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "config.h" #include "sbyteswap.h" #include #include // Networking #include #include #include // For tar containers #if !defined(__APPLE__) #include #endif // For file handling #include #include // For string searching #include // Math for compression algorithm #include #include #define MAX_VAR_NAME_LEN 512 #define MAX_VAR_NAME_BUFSIZE (MAX_VAR_NAME_LEN + 1) #define MAX_STRING_LEN 8128 #define MAX_STRING_BUFSIZE (MAX_STRING_LEN + 1) #define MAX_VAR_DATA_LEN 65536 #define MAX_DATA_BUFSIZE (MAX_VAR_DATA_LEN + 1) #define MAXVARS 1488 #define MAX_PIPE_CMDS 32 #define MAX_CONCAT_BUF 131072 #define MAX_READFILE_LEN 2097152 // for networking functions #define MAX_ADDRESS_LEN 256 #define MAX_ADDRESS_BUF (MAX_ADDRESS_LEN + 1) #define MAX_NETSRCH_LEN 4096 #define MAX_NETSRCH_BUF (MAX_NETSRCH_LEN + 1) #define MAX_NETRESP_LEN 65536 #define MAX_NETRESP_BUF (MAX_NETRESP_BUF + 1) // For Expr #define MAX_EXPR_ARGS 128 #define MAX_EXPR_LEN 512 // For search #define MAX_SEARCH_LEN 65536 #define MAX_SEARCH_BUFSIZE (MAX_SEARCH_LEN + 1) // For files #define MAX_FILENAME_LEN 1024 #define MAX_FILENAME_BUFSIZE (MAX_FILENAME_LEN + 1) #define MAX_FILES 1024 // END #define TOKEN '%' #define TOKEN_STR "%" #define TOKEN_BQ '`' #define NULLBYTE '\0' #define NEWLINE '\n' #define ENCOFFSET 3 #define ENCSTEPODD 2 #define ENCSTEPEVEN 2 // HELP PRINTOUT #define FUNCTION_HELP "-[Main Functions]-\nlist:\n" \ " print \"\" |" \ " sleep |" \ " encode \"\"\n" \ " decode \"\" |" \ " compress \"\" \"\"\n" \ " decompress \"\" |" \ " calc \" <+/-*> \"\n" \ " move \"\" \"\" |" \ " chdir \"\" |" \ " showdir |" \ " showpath\n" \ " isdir \"\" |" \ " isfile \"\" |" \ " delete \"\"\n" \ " nethttp \"\" \"\" (1 forks, 0 nofork)\n" \ " read \"\" |" \ " write \"\" \"\"\n" \ " cat \"\" \"\" |" \ " exec \"\"\n" \ "\n-[Variables, Pipes, and Backquoting]-\nExample:\n" \ " FORK=`isfile \"index.html\"` -> returns 1 on find\n" \ " write \"port.txt\" \"8888\" -> writes '8888' to port.txt\n" \ " read \"port.txt\" | nethttp \"%PIPE%\" \"%FORK%\"\n\n" \ "This an example of how piping works, along with variables and \n" \ "backquote function execution. Return values are saved as variables.\n" \ "\n-[Specials]-\nExample:\n" \ "comp: \"\" \"\" -> returns (true|false)\n" \ "loop: ; -> loops function for 'int' times\n"