aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFranklin Wei <git@fwei.tk>2015-11-07 13:55:47 -0500
committerFranklin Wei <git@fwei.tk>2015-11-07 13:55:47 -0500
commite1af2b39befe312ba9a289270f94b1766d4c14fb (patch)
tree83e20fb79581500661654167334feb1266fb5fe3 /src
parent618eb70bff837150377f259853fbd1b3a05ad5af (diff)
downloadducky-e1af2b39befe312ba9a289270f94b1766d4c14fb.zip
ducky-e1af2b39befe312ba9a289270f94b1766d4c14fb.tar.gz
ducky-e1af2b39befe312ba9a289270f94b1766d4c14fb.tar.bz2
ducky-e1af2b39befe312ba9a289270f94b1766d4c14fb.tar.xz
fix some stuff
Diffstat (limited to 'src')
-rw-r--r--src/ducky.c44
1 files changed, 28 insertions, 16 deletions
diff --git a/src/ducky.c b/src/ducky.c
index 971ff0a..493aa8c 100644
--- a/src/ducky.c
+++ b/src/ducky.c
@@ -1,15 +1,4 @@
-#include <bsd/string.h>
-
-#include <fcntl.h>
-#include <math.h>
-#include <stdarg.h>
-#include <stdbool.h>
-#include <stdint.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <time.h>
-#include <unistd.h>
+#include <platform.h>
/*******************************************************************************
* The scripting language implemented here is an extension of DuckyScript.
@@ -58,7 +47,6 @@ typedef int vartype;
/*** Globals ***/
off_t *line_offset = NULL;
-int default_delay = DEFAULT_DELAY, string_delay = STRING_DELAY;
unsigned lines_executed = 0, current_line = 0, num_lines;
@@ -67,8 +55,6 @@ unsigned stack_frame = 0;
int log_fd = -1, file_des = -1;
-int keys_sent = 0;
-
struct varnode_t {
char name[VARNAME_MAX + 1];
vartype val;
@@ -85,7 +71,7 @@ bool isValidVariable(const char *c);
/* variables are stored in a chained hash map */
/* collisions are manageable, but should be minimized */
-struct varnode_t *var_map[VARMAP_SIZE] = { 0 };
+struct varnode_t *var_map[VARMAP_SIZE];
/* simple DJB hash */
uint32_t var_hash(const char *str)
@@ -184,6 +170,19 @@ void exit_handler(void)
close(file_des);
if(log_fd >= 0)
close(log_fd);
+ if(line_offset)
+ free(line_offset);
+ /* free all our variables */
+ for(int i = 0; i < VARMAP_SIZE; ++i)
+ {
+ struct varnode_t *iter = var_map[i], *next;
+ while(iter)
+ {
+ next = iter->next;
+ free(iter);
+ iter = next;
+ }
+ }
}
void vid_write(const char *str)
@@ -1177,8 +1176,21 @@ void init_tokmap(void)
}
}
+void init_globals(void)
+{
+ line_offset = NULL;
+ log_fd = -1;
+ file_des = -1;
+ stack_frame = 0;
+ lines_executed = 0;
+ current_line = 0;
+ memset(var_map, 0, sizeof(var_map));
+}
+
void ducky_main(int fd)
{
+ init_globals();
+
vid_write("*** DS-2 INIT ***");
vid_write("QUACK AT YOUR OWN RISK!");
vid_write("The author assumes no liability for any damages caused by this program.");