God dammit
This commit is contained in:
parent
51884ea852
commit
10d663ecd9
231
docs/README.txt
231
docs/README.txt
@ -1,231 +0,0 @@
|
|||||||
======
|
|
||||||
=== SlideScript
|
|
||||||
======
|
|
||||||
A simple, user friendly scripting language for the average person. SS is meant to
|
|
||||||
be simple, and work as its documented as. SlideScript is a bin tool to say the
|
|
||||||
least and is a helpful *nix userland tool in the CLI
|
|
||||||
|
|
||||||
-----
|
|
||||||
Compiling
|
|
||||||
-----
|
|
||||||
* Compile SS using the make command.
|
|
||||||
* Install SS using make install.
|
|
||||||
* Modify test.ss to learn the basics of SS.
|
|
||||||
* Run ./test.ss to execute the script.
|
|
||||||
|
|
||||||
***NOTE: if compiling on OSX/BSD, please uncomment #define BSD in src/config.h***
|
|
||||||
|
|
||||||
-----
|
|
||||||
Directory bins/
|
|
||||||
-----
|
|
||||||
|
|
||||||
Since slidescript is so small, I made a collection of current builds of slidescript
|
|
||||||
in bins/*
|
|
||||||
These are built on Debian 10 using GCC 9.2.0, and current TCC.
|
|
||||||
|
|
||||||
-----
|
|
||||||
Documentation
|
|
||||||
-----
|
|
||||||
Here is a list of functions and features that SlideScript comes with
|
|
||||||
at this moment!
|
|
||||||
|
|
||||||
* Commenting! Examples:
|
|
||||||
* # Comment is real in this one
|
|
||||||
|
|
||||||
* Comp and loop functions:
|
|
||||||
* comp: "1" "1" -> compares integer 1 and 1 -> returns true
|
|
||||||
* comp: "true" "false" -> compares string true and false -> returns false
|
|
||||||
* loop: 3; print "Hello world!" -> Will loop print "Hello world!" 3 times.
|
|
||||||
|
|
||||||
* Read, write, and cat(enate) functions. Examples:
|
|
||||||
* write "file.txt" "This will be written to file.txt"
|
|
||||||
* read "file.txt"
|
|
||||||
* cat "file.txt" "Data to write to end of file.txt"
|
|
||||||
|
|
||||||
* Basic math expressions
|
|
||||||
* calc "45 / 5"` or `calc "255.3 * 442.77"
|
|
||||||
* Of course addition and subtraction as well
|
|
||||||
|
|
||||||
* Time example:
|
|
||||||
* time
|
|
||||||
|
|
||||||
* Isdir and isfile function, example:
|
|
||||||
* isdir "examples/" -> returns 0 for not, 1 for is
|
|
||||||
* isfile "examples/functions.ss" -> returns 1, its there
|
|
||||||
|
|
||||||
* File manipulation functions
|
|
||||||
* move "file1" "file2" -> Renames/moves file1 to file2 (mv)
|
|
||||||
* chdir "/home/user" -> Changes directory to /home/user (cd)
|
|
||||||
* backdir -> Moves you back one directory (..)
|
|
||||||
* showpath -> Returns current working directory (pwd alias)
|
|
||||||
* showdir -> Lists current directory (ls alias)
|
|
||||||
* showdir "/" -> lists '/'
|
|
||||||
* mkfile "file.txt" -> creates empty 'file.txt' (touch alias)
|
|
||||||
* mkdir "testing/" -> creates directory 'testing'
|
|
||||||
* mkfile "testing/file.txt" -> creates directory 'testing', and creates 'file.txt'
|
|
||||||
|
|
||||||
* Execute example:
|
|
||||||
* exec "ls -al" (alias to ~"ls -al")
|
|
||||||
|
|
||||||
* Slidescript compression functions, example:
|
|
||||||
* compress "archivename" "file1 file2 dir1 dir2" -> file1, 2, dir1, 2 archived, compressed,
|
|
||||||
and saved in in 'archivename.tar.ss'
|
|
||||||
* decompress "archivename.tar.ss" -> decompresses 'archivename.tar.ss'
|
|
||||||
|
|
||||||
* Print example:
|
|
||||||
* print "Hi everyone!"
|
|
||||||
|
|
||||||
* Sleep (Zzz) example (sleeps for 2 seconds):
|
|
||||||
* sleep 2
|
|
||||||
|
|
||||||
* Search functions, example:
|
|
||||||
* search "README.txt" "SlideScript" -> returns each line that 'SlideScript' is found on
|
|
||||||
|
|
||||||
* Variable setting and passing
|
|
||||||
* filename=file.txt -> filename
|
|
||||||
* filedata=File '%filename%' is being moved to moo -> %filename% is populated as file.txt
|
|
||||||
* write "%filename%" "%filedata%" -> writes filedata contents to file.txt as expected.
|
|
||||||
|
|
||||||
* Decoding and encoding strings
|
|
||||||
* encode "Regular string" -> Converts to encrypted string 'Uhjvqds#xuulqj'
|
|
||||||
* decode "Uhjvqds#xuulqj" -> Converts back to 'Regular string'
|
|
||||||
|
|
||||||
* MD5 file checking
|
|
||||||
* md5 "file.txt" -> outputs filename and md5 hash
|
|
||||||
|
|
||||||
* Layered piping
|
|
||||||
* md5 "file.txt" | encrypt "%PIPE" | write "file.txt.md5.enc" "%PIPE%" -> writes output of md5 to file.txt.md5
|
|
||||||
|
|
||||||
* Networking functions
|
|
||||||
* netlisten "<port>" "<search>" "<respond>" -> listens on <port> and replies <respond> on <search> found from outside
|
|
||||||
* nettoss "<address>" "<port>" "<data>" -> binds to outside server at <address>:<port> and pushes <data> thus, disconnecting
|
|
||||||
* nethttp "<port>" "<forkval>" -> throws up a web server on <port> in the current working directory,
|
|
||||||
forkval (0 or 1, 0 don't fork into background / 1 do).
|
|
||||||
|
|
||||||
* Backquoted function parsing within variables
|
|
||||||
* curtime=`time` -> Will set curtime value to return of time at the time of parse.
|
|
||||||
print "%curtime%" -> Prints the variable value of curtime, same operation as function time, but good for timing scripts
|
|
||||||
|
|
||||||
|
|
||||||
This will change rapidly as of currently, slidescript is in beavy development! To get the feel of the scripting,
|
|
||||||
the best bet is to take a look at some of the slidescript examples in 'examples/'
|
|
||||||
|
|
||||||
functions.ss -> displays most basic functions
|
|
||||||
net-http.ss -> displays built in http web server
|
|
||||||
net-listen.ss -> displays slidescript's raw listen socket
|
|
||||||
net-toss.ss -> displays the 'client side' networking function.
|
|
||||||
|
|
||||||
|
|
||||||
-----
|
|
||||||
Todo list
|
|
||||||
-----
|
|
||||||
|
|
||||||
This section will obviously expand and adapt to the direction of the language. This is going to change rapidly.
|
|
||||||
|
|
||||||
* Add in-script functions
|
|
||||||
* Add script including
|
|
||||||
* Loops, and if statements
|
|
||||||
* More networking function flexibility
|
|
||||||
* File pull / file push functionality
|
|
||||||
|
|
||||||
-----
|
|
||||||
Done
|
|
||||||
-----
|
|
||||||
|
|
||||||
List of finished features, in a rough summary.
|
|
||||||
|
|
||||||
* Added help, and version functions
|
|
||||||
* Simple syntax checking and error reporting, its a lazy language, syntax can sway.
|
|
||||||
* Most syntax errors will produce warnings instead of terminating process
|
|
||||||
* Up to 32 layer function piping
|
|
||||||
* Support for linux system calls
|
|
||||||
* Network listen socket, toss function
|
|
||||||
* Builtin HTTP server for disposeable use, can be ran in the foreground or forked into the background
|
|
||||||
* Read and write from file
|
|
||||||
* Some simple functions
|
|
||||||
* Shebang handling
|
|
||||||
* Variable support
|
|
||||||
|
|
||||||
-----
|
|
||||||
Changelog
|
|
||||||
-----
|
|
||||||
|
|
||||||
Changes between version bumps in SlideScript. Hoping to have a lightweight top-down scripting language
|
|
||||||
by V1.0.0 release! From there it will be molding and preserving the art.
|
|
||||||
* V0.5.4
|
|
||||||
* Added memory management framework for dynamic memory handling
|
|
||||||
* tar.c cleanup
|
|
||||||
* fflush additions for telnet usage of SS.
|
|
||||||
|
|
||||||
* V0.5.3
|
|
||||||
* Added version, and help command
|
|
||||||
|
|
||||||
* V0.5.2
|
|
||||||
* Bugfixes and tweaks
|
|
||||||
* Added loop and comp(are) statements
|
|
||||||
|
|
||||||
* V0.5.1
|
|
||||||
* Compression and decompression bugfixes
|
|
||||||
* System working functions (move, chdir, and showpath)
|
|
||||||
* General clean, removed bins/ until language stabilizes
|
|
||||||
|
|
||||||
* V0.5.0
|
|
||||||
* Interactive mode gives users prompt on call to slidescript (Thanks OldCoder!)
|
|
||||||
* Added showdir (alias ls)
|
|
||||||
* Added compress / decompress functions (WIP, slow LZ77 algorithm)
|
|
||||||
* Multiple bug fixes
|
|
||||||
* Shell like interactive behavior
|
|
||||||
|
|
||||||
* V0.4.5
|
|
||||||
* Multiple bug fixes in not setting null byte to dynamic mem before strcat is used
|
|
||||||
* Function isfile, as well as mkfile and mkdir are added
|
|
||||||
* Added grep like function, search!
|
|
||||||
* Cleanup code
|
|
||||||
|
|
||||||
* V0.4.4
|
|
||||||
* Softened the kill program errors, added warn functions behind the scenes
|
|
||||||
* Added backquote function processing in variables
|
|
||||||
* Fixed bug in read not displaying multi-line files
|
|
||||||
* Fixed bug in write not finding first quote syntax
|
|
||||||
* Added function isdir, and cat(enate) function. NOT cat as in linux env.
|
|
||||||
* Code clean-up
|
|
||||||
|
|
||||||
* V0.4.0
|
|
||||||
* Added calc function for floating math equations
|
|
||||||
* Cleaned up some more syntax handling, as well as bugs
|
|
||||||
* Added structured and savable multi-layer piping up to 32 functions deep
|
|
||||||
|
|
||||||
* V0.3.3
|
|
||||||
* Added first networking functions: netlisten, nettoss, nethttp.
|
|
||||||
* Embedded web server functionality
|
|
||||||
* Cleaned up code
|
|
||||||
* Improved syntax handling on functions
|
|
||||||
|
|
||||||
* V0.3.0
|
|
||||||
* Added simple 2 layer function piping for more useful tasks
|
|
||||||
* Fixed a couple core dump bugs
|
|
||||||
* Now reads files into memory, and then forces text files through SS, allows for in file variables
|
|
||||||
* Added "md5" functionality
|
|
||||||
* Multi-formal working syntax
|
|
||||||
|
|
||||||
* V0.2.1
|
|
||||||
* Added "decrypt" decode function
|
|
||||||
* Added "encrypt" encode function
|
|
||||||
* Added system "exec" function
|
|
||||||
* Added basic syntax handling, for a more uniform language
|
|
||||||
|
|
||||||
* V0.2.0
|
|
||||||
* Added "delete" function
|
|
||||||
* Added embedded variable handling to SS functions (variables can be used like everywhere!)
|
|
||||||
* Added linux system calls via exec
|
|
||||||
* Some cleaning up.
|
|
||||||
|
|
||||||
* V0.1.1
|
|
||||||
* Added variable handling with a buffer size of 2KB per variable, and cap of 2048 variables.
|
|
||||||
* Now operates under the shebang!
|
|
||||||
|
|
||||||
-----
|
|
||||||
Contributions
|
|
||||||
-----
|
|
||||||
Robert (OldCoder) Kiraly -> shebang support and string manipulations
|
|
||||||
(C) Copyright 2014-2021 Chris Dorman, some rights reserved (GPLv2)
|
|
@ -1,97 +0,0 @@
|
|||||||
#!/usr/bin/slidescript
|
|
||||||
#############################################################
|
|
||||||
#### Welcome to the world of SlideScript! ####
|
|
||||||
#### This script is here for the learning purposes of SS ####
|
|
||||||
#### Any line starting with a hashtag will treated as a ####
|
|
||||||
#### comment! ####
|
|
||||||
#############################################################
|
|
||||||
|
|
||||||
# Slide Script, also refered to as SS, is extremely forgiving in
|
|
||||||
# syntax handling!
|
|
||||||
# Example:
|
|
||||||
# print "content"
|
|
||||||
# print "content";
|
|
||||||
# print("content")
|
|
||||||
# print("content");
|
|
||||||
###
|
|
||||||
### These will operate properly, as well as:
|
|
||||||
# Example:
|
|
||||||
# write "filename.txt" "data"
|
|
||||||
# write "filename.txt" "data";
|
|
||||||
# write("filename.txt" "data");
|
|
||||||
# write("filename.txt", "data");
|
|
||||||
#
|
|
||||||
# IT ALL WORKS!
|
|
||||||
# SlideScript really syntaxes based on quotes and key function words,
|
|
||||||
# as well as pipes. It really doesn't mind whats around it otherwise
|
|
||||||
# And every variable is called by %varname%, defining variables, as normal
|
|
||||||
|
|
||||||
# Variables in SS
|
|
||||||
ss_filename=file.txt
|
|
||||||
ss_stringdata=Data to encrypt and decrypt
|
|
||||||
ss_exec_command=uname -a
|
|
||||||
|
|
||||||
# Printing function in SS
|
|
||||||
print "Welcome to SlideScript!"
|
|
||||||
# Sleep function in SS
|
|
||||||
print "Some content to print, working with '%ss_filename%' today!"
|
|
||||||
# Below demonstrates SS encrypting a string, passing the output
|
|
||||||
# over a pipe, and using the write function and %PIPE% variable
|
|
||||||
# holding the first functions output, writes to %ss_filename%; file.txt
|
|
||||||
### %PIPE% is the output from the first line function, enc
|
|
||||||
### %PIPE% is always applied when a pipe is used!
|
|
||||||
encode "%ss_stringdata%" | write "%ss_filename%" "%PIPE%"
|
|
||||||
# You're left with file.txt, lets move on
|
|
||||||
|
|
||||||
# Lets read the file we just created and show how SS handles its
|
|
||||||
# own decryption algorithm
|
|
||||||
read "%ss_filename%" | decrypt "%PIPE%"
|
|
||||||
# Will display the original variable string!
|
|
||||||
|
|
||||||
# SS MD5 function
|
|
||||||
# Lets get the md5sum of file.txt with our md5 function
|
|
||||||
md5 "%ss_filename%" | write "%ss_filename%.md5" "%PIPE%"
|
|
||||||
# Use a pipe, and push the md5 into a text file of file.txt
|
|
||||||
|
|
||||||
# You can also stack pipes for whatever tasks you may need
|
|
||||||
# Here's the encrypt function in action, can also be used as encode
|
|
||||||
md5 "%ss_filename%" | encode "%PIPE%" | write "%ss_filename%.md5.enc" "%PIPE%"
|
|
||||||
|
|
||||||
# Read md5 file
|
|
||||||
print "%ss_filename%.md5:"
|
|
||||||
read "%ss_filename%.md5"
|
|
||||||
|
|
||||||
# Read encrypted md5 file and decrypt using decode alias
|
|
||||||
print "%ss_filename%.md5.enc:"
|
|
||||||
read "%ss_filename%.md5.enc" | decode "%PIPE%"
|
|
||||||
|
|
||||||
# Delete function, SS can delete files and directories with one function
|
|
||||||
# NOTE: it is extremely powerful and can wreck your system if used in the
|
|
||||||
# wrong way! Proceed with caution, delete "/" WILL send your files to the
|
|
||||||
# grave.
|
|
||||||
###
|
|
||||||
# Lets delete the files we've been messing with, no system calls needed
|
|
||||||
delete "%ss_filename%"
|
|
||||||
delete "%ss_filename%.md5"
|
|
||||||
delete "%ss_filename%.md5.enc"
|
|
||||||
# Gone!
|
|
||||||
|
|
||||||
print "Playing with some calc..."
|
|
||||||
# calc function, lets do some basic math
|
|
||||||
calc "32 * 1024"
|
|
||||||
# You can pipe calc to do multi layer equations
|
|
||||||
calc "32 * 1024" | calc "%PIPE% * 2"
|
|
||||||
|
|
||||||
# Lets play with some big numbers here!
|
|
||||||
# SlideScript parses its calc functions using floating points, so you can
|
|
||||||
# handle decimal as well
|
|
||||||
calc "1024 * 1024" | calc "%PIPE% * %PIPE%"
|
|
||||||
|
|
||||||
# Decimal
|
|
||||||
print "Here comes the decimal:"
|
|
||||||
calc "46 / 3.4"
|
|
||||||
|
|
||||||
# Execute function, SS can call unix system calls!
|
|
||||||
# Executes the ss_exec_command variable data, 'ls'
|
|
||||||
print "Testing exec function on system"
|
|
||||||
exec "%ss_exec_command%"
|
|
@ -1,7 +0,0 @@
|
|||||||
#!/usr/bin/slidescript
|
|
||||||
|
|
||||||
port=2020
|
|
||||||
search=hi
|
|
||||||
respond=bye
|
|
||||||
|
|
||||||
netlisten "%port%" "%search%" "%respond%"
|
|
@ -1,13 +0,0 @@
|
|||||||
#!/usr/bin/slidescript
|
|
||||||
|
|
||||||
address=127.0.0.1
|
|
||||||
port=2020
|
|
||||||
data1=This data is gonna be pushed to the server side host!
|
|
||||||
data2=Here's the second set of data getting tossed to the server
|
|
||||||
data3=Of course, do a little more considering the transfer is instant!
|
|
||||||
|
|
||||||
nettoss "%address%" "%port%" "%data1%"
|
|
||||||
nettoss "%address%" "%port%" "%data2%"
|
|
||||||
encode "%data3%" | nettoss "%address%" "%port%" "%PIPE%"
|
|
||||||
|
|
||||||
nettoss "%address%" "%port%" "hi"
|
|
@ -1,25 +0,0 @@
|
|||||||
#!/usr/bin/slidescript
|
|
||||||
# Generate an index.html example for the built-in HTTP daemon example
|
|
||||||
# This will be used as a disposible web server!
|
|
||||||
|
|
||||||
# First, lets populate some data for the web server itself, this script
|
|
||||||
# will generate the index.html for the web server before launch.
|
|
||||||
|
|
||||||
# Variables of the contents for index.html
|
|
||||||
header=<!DOCTYPE html><html><head><title>SlideScript ~ Web server</title></head>
|
|
||||||
head=<body><h3>SlideScript - disposible web server index page</h3>
|
|
||||||
content=<p>There's not much to see here yet, more to come!</p>
|
|
||||||
footer=<br /><center>powered by ss:http</center></body></html>
|
|
||||||
|
|
||||||
# Webserver port
|
|
||||||
port=8080
|
|
||||||
|
|
||||||
# Filename in a variable
|
|
||||||
filename=index.html
|
|
||||||
|
|
||||||
# Writing the variable data to the file
|
|
||||||
write "%filename%" "%header%%head%%content%%footer%"
|
|
||||||
|
|
||||||
# Starting web server in the foreground, change 0 to 1 to fork to background
|
|
||||||
print "Ctrl-C to kill me!"
|
|
||||||
nethttp "%port%" "0"
|
|
@ -66,15 +66,17 @@
|
|||||||
#define MAX_FILENAME_LEN 1024
|
#define MAX_FILENAME_LEN 1024
|
||||||
#define MAX_FILENAME_BUFSIZE (MAX_FILENAME_LEN + 1)
|
#define MAX_FILENAME_BUFSIZE (MAX_FILENAME_LEN + 1)
|
||||||
#define MAX_FILES 1024
|
#define MAX_FILES 1024
|
||||||
|
// Inset backquote buffers
|
||||||
|
#define MAX_BQ_FUNCTIONS 128
|
||||||
// END
|
// END
|
||||||
#define TOKEN '%'
|
#define TOKEN '%'
|
||||||
#define TOKEN_STR "%"
|
#define TOKEN_STR "%"
|
||||||
#define TOKEN_BQ '`'
|
#define TOKEN_BQ '`'
|
||||||
#define NULLBYTE '\0'
|
#define NULLBYTE '\0'
|
||||||
#define NEWLINE '\n'
|
#define NEWLINE '\n'
|
||||||
#define ENCOFFSET 3
|
#define ENCOFFSET 80
|
||||||
#define ENCSTEPODD 2
|
#define ENCSTEPODD 2
|
||||||
#define ENCSTEPEVEN 2
|
#define ENCSTEPEVEN 3
|
||||||
|
|
||||||
// HELP PRINTOUT
|
// HELP PRINTOUT
|
||||||
|
|
||||||
|
@ -7,9 +7,6 @@
|
|||||||
|
|
||||||
#include "x3mem.h"
|
#include "x3mem.h"
|
||||||
|
|
||||||
// Inset backquote buffers
|
|
||||||
#define MAX_BQ_FUNCTIONS 128
|
|
||||||
|
|
||||||
struct s_bq
|
struct s_bq
|
||||||
{
|
{
|
||||||
char *function;
|
char *function;
|
||||||
|
@ -23,7 +23,7 @@ void s_inset(int index, char *function)
|
|||||||
int get_bq_count()
|
int get_bq_count()
|
||||||
{
|
{
|
||||||
int yy;
|
int yy;
|
||||||
for(yy = 0; yy < MAXVARS; yy++)
|
for(yy = 0; yy < MAX_BQ_FUNCTIONS; yy++)
|
||||||
{
|
{
|
||||||
if(s_bqf[yy].function != NULL)
|
if(s_bqf[yy].function != NULL)
|
||||||
{
|
{
|
||||||
@ -79,7 +79,7 @@ char *parse_bq(char *string)
|
|||||||
strcat (varbuffer, "\n");
|
strcat (varbuffer, "\n");
|
||||||
|
|
||||||
variable_pointer = process_line(varbuffer);
|
variable_pointer = process_line(varbuffer);
|
||||||
tar_free_pool();
|
//tar_free_pool();
|
||||||
if(variable_pointer == NULL)
|
if(variable_pointer == NULL)
|
||||||
syn_error("ss:error:backquoted function must return string!");
|
syn_error("ss:error:backquoted function must return string!");
|
||||||
|
|
||||||
|
@ -1487,10 +1487,10 @@ char *process_line(char *line)
|
|||||||
tok_srch = strtok(NULL, "=");
|
tok_srch = strtok(NULL, "=");
|
||||||
|
|
||||||
// Check for back quotes, return string with backquotes processed
|
// Check for back quotes, return string with backquotes processed
|
||||||
bq_check = strip_nl(parse_bq(parse_vars(tok_srch)));
|
bq_check = strip_nl(parse_vars(parse_bq(tok_srch)));
|
||||||
// Don't check if variable is blank, if so let it fly!
|
// Don't check if variable is blank, if so let it fly!
|
||||||
set_var(varc, varname_tmp, bq_check);
|
set_var(varc, varname_tmp, bq_check);
|
||||||
/* printf("ss: var '%s' -> %s", varname_tmp, get_var_data(varname_tmp)); */
|
printf("ss: var '%s' -> %s\n", varname_tmp, get_var_data(varname_tmp));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -82,12 +82,12 @@ int main(int argc, char **argv)
|
|||||||
return_dat = process_line(spipe[ii].command);
|
return_dat = process_line(spipe[ii].command);
|
||||||
tar_free_pool();
|
tar_free_pool();
|
||||||
|
|
||||||
// set PIPE var back to NULL after use, keep the struct clean
|
|
||||||
set_var(varc, "\0", "\0");
|
set_var(varc, "\0", "\0");
|
||||||
|
|
||||||
// Check to see if there's anything to even display
|
// Check to see if there's anything to even display
|
||||||
if(return_dat == NULL)
|
if(return_dat == NULL)
|
||||||
{
|
{
|
||||||
break;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
12
src/vars.c
12
src/vars.c
@ -63,7 +63,8 @@ char *parse_vars(char *string)
|
|||||||
char *output_pointer;
|
char *output_pointer;
|
||||||
char *variable_pointer;
|
char *variable_pointer;
|
||||||
|
|
||||||
finished = qmalloc(QM_VARIABLES, (strlen(string) + 1));
|
//finished = qmalloc(QM_VARIABLES, (strlen(string) + 1));
|
||||||
|
finished = qmalloc(QM_VARIABLES, 16280);
|
||||||
|
|
||||||
*finished = NULLBYTE;
|
*finished = NULLBYTE;
|
||||||
|
|
||||||
@ -94,19 +95,22 @@ char *parse_vars(char *string)
|
|||||||
}
|
}
|
||||||
|
|
||||||
variable_pointer = get_var_data(varbuffer);
|
variable_pointer = get_var_data(varbuffer);
|
||||||
printf("%s\n", variable_pointer);
|
printf("Variable: %s, data: %s, full string: %s\n", varbuffer, variable_pointer, string);
|
||||||
if(variable_pointer == NULL)
|
if(variable_pointer == NULL)
|
||||||
{
|
{
|
||||||
x_error("ss:error:variable data not found, abort!");
|
x_error("ss:error:variable data not found, abort!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(*input_pointer == NULLBYTE) break;
|
||||||
|
|
||||||
var_len = strlen(variable_pointer);
|
var_len = strlen(variable_pointer);
|
||||||
|
|
||||||
qrealloc(finished, (var_len + 1));
|
chk_qm0(finished);
|
||||||
|
|
||||||
|
//qrealloc(finished, (strlen(finished) + var_len + 1));
|
||||||
|
|
||||||
strcat (finished, variable_pointer);
|
strcat (finished, variable_pointer);
|
||||||
output_pointer += var_len;
|
output_pointer += var_len;
|
||||||
if(*input_pointer == NULLBYTE) break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
*output_pointer = NULLBYTE;
|
*output_pointer = NULLBYTE;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user