diff --git a/src/functions.c b/src/functions.c index 8c7ccf7..154e687 100644 --- a/src/functions.c +++ b/src/functions.c @@ -56,19 +56,26 @@ char *process_line(char *line) char *parsed; tok_srch = strtok(NULL, "\""); if(tok_srch == NULL) - syn_error("ss:error:print syntax error, missing quote?"); + { + syn_warn("ss:warn:print syntax error, missing quote?"); + return NULL; + } parsed = parse_vars(tok_srch); if(parsed != NULL) { if(strtok(NULL, "\"") == NULL) - syn_error("ss:error:print syntax error, missing end quote?"); + { + syn_warn("ss:warn:print syntax error, missing end quote?"); + return NULL; + } return parsed; } else { - syn_error("ss:error:print compulation error!"); + syn_warn("ss:warn:print compulation error, no argument?"); + return NULL; } } @@ -77,10 +84,16 @@ char *process_line(char *line) { tok_srch = strtok(NULL, " "); if(tok_srch == NULL) - syn_error("ss:error:sleep syntax error, need trailing integer for operation"); + { + syn_warn("ss:warn:sleep syntax error, need trailing integer for operation"); + return NULL; + } if(strcmp(tok_srch, "\n") == 0 || strcmp(tok_srch, " \n") == 0) - syn_error("ss:error:sleep syntax error, need trailing integer for operation"); + { + syn_warn("ss:warn:sleep syntax error, need trailing integer for operation"); + return NULL; + } /* if there is a new line, remove it */ if(tok_srch[strlen(tok_srch)-1] == '\n') @@ -97,13 +110,22 @@ char *process_line(char *line) char *expr_return; tok_srch = strtok(NULL, "\""); if(tok_srch == NULL) - syn_error("ss:error:calc syntax error, missing quotes around equation?"); + { + syn_warn("ss:warn:calc syntax error, missing quotes around equation"); + return NULL; + } if(strcmp(tok_srch, "\n") == 0 || (strcmp(tok_srch, " \n") == 0)) - syn_error("ss:error:calc syntax error, missing quotes around equation?"); + { + syn_warn("ss:warn:calc syntax error, missing equation?"); + return NULL; + } if(strtok(NULL, "\"") == NULL) - syn_error("ss:error:calc missing end quote"); + { + syn_warn("ss:warn:calc syntax error, missing ending quote?"); + return NULL; + } expr_return = ss_expr(parse_vars(tok_srch)); @@ -117,10 +139,16 @@ char *process_line(char *line) char port[7]; // Should never be more than 6 characters tok_srch = strtok(NULL, "\""); if(tok_srch == NULL) - syn_error("ss:error:netlisten syntax error, missing quote?"); + { + syn_warn("ss:warn:netlisten syntax error, missing beginning quote"); + return NULL; + } if(strcmp(tok_srch, "\n") == 0 || strcmp(tok_srch, " \n") == 0) - syn_error("ss:error:netlisten syntax error, missing quote?"); + { + syn_warn("ss:warn:netlisten syntax error, missing address?"); + return NULL; + } if(strlen(parse_vars(tok_srch)) < 7) { @@ -128,20 +156,29 @@ char *process_line(char *line) } else { - syn_error("ss:error:network listen port too long"); + syn_warn("ss:warn:netlisten syntax error, port too long?"); + return NULL; } /* strtok to the content that will be written to file */ tok_srch = strtok(NULL, "\""); if(tok_srch == NULL) - syn_error("ss:error:netlisten syntax error, missing quote?"); + { + syn_warn("ss:warn:netlisten syntax error, missing quote?"); + return NULL; + } tok_srch = strtok(NULL, "\""); if(tok_srch == NULL) - syn_error("ss:error:netlisten syntax error, missing quote?"); + { + syn_warn("ss:warn:netlisten syntax error, missing quote?"); + return NULL; + } - if(strcmp(tok_srch, "\n") == 0 || strcmp(tok_srch, " \n") == 0) { - syn_error("ss:error:netlisten syntax error, missing quote?"); + if(strcmp(tok_srch, "\n") == 0 || strcmp(tok_srch, " \n") == 0) + { + syn_warn("ss:warn:netlisten syntax error, missing search string?"); + return NULL; } strcpy(srch, parse_vars(tok_srch)); @@ -149,18 +186,29 @@ char *process_line(char *line) /* strtok to the socket response */ tok_srch = strtok(NULL, "\""); if(tok_srch == NULL) - syn_error("ss:error:netlisten syntax error, missing quote?"); + { + syn_warn("ss:warn:netlisten syntax error, missing quote?"); + return NULL; + } tok_srch = strtok(NULL, "\""); if(tok_srch == NULL) - syn_error("ss:error:netlisten syntax error, missing quote?"); + { + syn_warn("ss:warn:netlisten syntax error, missing quote?"); + return NULL; + } - if(strcmp(tok_srch, "\n") == 0 || strcmp(tok_srch, " \n") == 0) { - syn_error("ss:error:netconnect syntax error on data entry (are you quoted?)"); + if(strcmp(tok_srch, "\n") == 0 || strcmp(tok_srch, " \n") == 0) + { + syn_warn("ss:warn:netlisten syntax error, missing return string?"); + return NULL; } if(strtok(NULL, "\"") == NULL) - syn_error("ss:error:netconnect syntax error, missing end quote"); + { + syn_warn("ss:warn:netlisten syntax error, missing end quote?"); + return NULL; + } snet_listen(atoi(port), srch, parse_vars(tok_srch)); return NULL; @@ -172,10 +220,16 @@ char *process_line(char *line) char port[7]; // Should never be more than 6 characters tok_srch = strtok(NULL, "\""); if(tok_srch == NULL) - syn_error("ss:error:nethttp syntax error, missing quote?"); + { + syn_warn("ss:warn:nethttp syntax error, missing quote?"); + return NULL; + } if(strcmp(tok_srch, "\n") == 0 || strcmp(tok_srch, " \n") == 0) - syn_error("ss:error:netlisten syntax error, missing quote?"); + { + syn_warn("ss:warn:nethttp syntax error, missing port value?"); + return NULL; + } if(strlen(parse_vars(tok_srch)) < 7) { @@ -183,20 +237,31 @@ char *process_line(char *line) } else { - syn_error("ss:error:nethttp listen port too long"); + syn_warn("ss:warn:nethttp syntax error, missing quote?"); + return NULL; } /* strtok to the content that will be written to file */ tok_srch = strtok(NULL, "\""); if(tok_srch == NULL) - syn_error("ss:error:nethttp syntax error, missing quote?"); + { + syn_warn("ss:warn:nethttp syntax error, missing quote?"); + return NULL; + } + tok_srch = strtok(NULL, "\""); if(strcmp(tok_srch, "\n") == 0 || strcmp(tok_srch, " \n") == 0) - syn_error("ss:error:nethttp syntax error on data entry (are you quoted?)"); + { + syn_warn("ss:warn:nethttp syntax error, missing quote?"); + return NULL; + } if(strtok(NULL, "\"") == NULL) - syn_error("ss:error:nethttp syntax error, missing end quote"); + { + syn_warn("ss:warn:nethttp syntax error, missing quote?"); + return NULL; + } if(atoi(parse_vars(tok_srch)) == 1 || atoi(parse_vars(tok_srch)) == 0) { @@ -204,9 +269,11 @@ char *process_line(char *line) } else { - syn_error("ss:error:nethttp incorrect fork value, 0=nofork, 1=fork"); + syn_warn("ss:warn:nethttp syntax error, fork = 1, not 0"); + return NULL; } + return NULL; } @@ -219,11 +286,18 @@ char *process_line(char *line) /* strtok to filename of function */ tok_srch = strtok(NULL, "\""); if(tok_srch == NULL) - syn_error("ss:error:nettoss syntax error, missing quote?"); + { + syn_warn("ss:warn:nettoss syntax error, missing quote?"); + return NULL; + } + /* Check to see if syntax is correct */ if(strcmp(tok_srch, "\n") == 0 || strcmp(tok_srch, " \n") == 0) - syn_error("ss:error:nettoss syntax error, missing quote?"); + { + syn_warn("ss:warn:nettoss syntax error, missig address?"); + return NULL; + } /* open file */ strcpy(address, parse_vars(tok_srch)); @@ -231,30 +305,52 @@ char *process_line(char *line) /* strtok to the content that will be written to file */ tok_srch = strtok(NULL, "\""); if(tok_srch == NULL) - syn_error("ss:error:nettoss syntax error, missing quote?"); + { + syn_warn("ss:warn:nettoss syntax error, missing quote?"); + return NULL; + } + tok_srch = strtok(NULL, "\""); if(strcmp(tok_srch, "\n") == 0 || strcmp(tok_srch, " \n") == 0) - syn_error("ss:error:nettoss syntax error on data entry (are you quoted?)"); + { + syn_warn("ss:warn:nettoss syntax error, missing quote?"); + return NULL; + } if(strlen(parse_vars(tok_srch)) > 6) - syn_error("ss:error:nettoss port too long"); + { + syn_warn("ss:warn:nettoss syntax error, port too long"); + return NULL; + } strcpy(port, parse_vars(tok_srch)); tok_srch = strtok(NULL, "\""); if(tok_srch == NULL) - syn_error("ss:error:nettoss syntax error, missing quote?"); + { + syn_warn("ss:warn:nettoss syntax error, missing quote?"); + return NULL; + } tok_srch = strtok(NULL, "\""); if(tok_srch == NULL) - syn_error("ss:error:nettoss syntax error, missing quote?"); + { + syn_warn("ss:warn:nettoss syntax error, missing quote?"); + return NULL; + } if(strcmp(tok_srch, "\n") == 0 || strcmp(tok_srch, " \n") == 0) - syn_error("ss:error:nettoss syntax error, missing quote?"); + { + syn_warn("ss:warn:nettoss syntax error, send string"); + return NULL; + } if(strtok(NULL, "\"") == NULL) - syn_error("ss:error:nettoss syntax error, missing end quote"); - + { + syn_warn("ss:warn:nettoss syntax error, missing end quote?"); + return NULL; + } + strcpy(data, parse_vars(tok_srch)); snet_toss(address, atoi(port), data); @@ -262,15 +358,22 @@ char *process_line(char *line) } /* ss encrypt function */ - else if(strncmp("encrypt",tok_srch,7) == 0 || strncmp("encode", tok_srch,6) == 0) + else if(strncmp("encode", tok_srch,6) == 0) { char *var_conv; tok_srch = strtok(NULL, "\""); if(tok_srch == NULL) - syn_error("ss:error:encode syntax error, requires data in quotes"); + { + syn_warn("ss:warn:encode syntax error, missing quote?"); + return NULL; + } if(strcmp(tok_srch, "\n") == 0 || strcmp(tok_srch, " \n") == 0) - syn_error("ss:error:encode syntax error, requires data in quotes"); + { + syn_warn("ss:warn:encode syntax error, encode string?"); + return NULL; + } + var_conv = parse_vars(tok_srch); if(var_conv != NULL) @@ -279,18 +382,31 @@ char *process_line(char *line) encrp = ss_encrypt(var_conv); return encrp; } + else + { + syn_warn("ss:warn:encode returned NULL!"); + return NULL; + } + } /* ss decrypt function */ - else if(strncmp("decrypt",tok_srch,7) == 0 || strncmp("decode", tok_srch,6) == 0) + else if(strncmp("decode", tok_srch,6) == 0) { char *var_conv; tok_srch = strtok(NULL, "\""); if(tok_srch == NULL) - syn_error("ss:error:decode syntax error, requires data in quotes"); + { + syn_warn("ss:warn:decode syntax error, missing quote?"); + return NULL; + } + if(strcmp(tok_srch, "\n") == 0 || strcmp(tok_srch, " \n") == 0) - syn_error("ss:error:decode syntax error, requires data in quotes"); + { + syn_warn("ss:warn:decode syntax error, missing decode data?"); + return NULL; + } var_conv = parse_vars(tok_srch); if(var_conv != NULL) @@ -299,6 +415,11 @@ char *process_line(char *line) decrp = ss_decrypt(var_conv); return decrp; } + else + { + syn_warn("ss:warn:decode returned NULL!"); + return NULL; + } } /* builtin md5 function */ @@ -308,10 +429,16 @@ char *process_line(char *line) tok_srch = strtok(NULL, "\""); if(tok_srch == NULL) - syn_error("ss:error:md5 syntax error, requires a file argument in quotes"); + { + syn_warn("ss:warn:md5 syntax error, missing quote?"); + return NULL; + } if(strcmp(tok_srch, "\n") == 0 || strcmp(tok_srch, " \n") == 0) - syn_error("ss:error:md5 syntax error, requires a file argument in quotes"); + { + syn_warn("ss:warn:md5 syntax error, need filename"); + return NULL; + } file_line = parse_vars(tok_srch); file_md5_val = md5_file(file_line); @@ -325,6 +452,7 @@ char *process_line(char *line) else { free(catfile); + syn_warn("ss:warn:md5 returned NULL!"); return NULL; } } @@ -336,20 +464,30 @@ char *process_line(char *line) int return_val; tok_srch = strtok(NULL, "\""); if(tok_srch == NULL) - syn_error("ss:error:exec syntax error, requires a file argument in quotes"); + { + syn_warn("ss:warn:exec syntax error, missing quote?"); + return NULL; + } if(strcmp(tok_srch, "\n") == 0 || strcmp(tok_srch, " \n") == 0) - syn_error("ss:error:exec syntax error, requires argument in quotes"); + { + syn_warn("ss:warn:md5 syntax error, missing execution switch?"); + return NULL; + } if(strtok(NULL, "\"") == NULL) - syn_error("ss:error:exec syntax error, missing end quote"); + { + syn_warn("ss:warn:md5 syntax error, missing quote?"); + return NULL; + } cmd_line = parse_vars(tok_srch); return_val = system(cmd_line); if(return_val != 0) { - printf("ss:warning:%s exited with error code %d\n", cmd_line, return_val); + syn_warn("ss:warn:md5 syntax error, missing quote?"); } + return NULL; } @@ -362,12 +500,17 @@ char *process_line(char *line) /* strtok to filename of function */ tok_srch = strtok(NULL, "\""); - //if(tok_srch == NULL) - // syn_error("ss:error:write syntax error, requires a file argument in quotes"); + { + syn_warn("ss:warn:write syntax error, missing quote?"); + return NULL; + } /* Check to see if syntax is correct */ if(strcmp(tok_srch, "\n") == 0 || strcmp(tok_srch, " \n") == 0) - syn_error("ss:error:write syntax error, requires filename followed by data; both in quotes"); + { + syn_warn("ss:warn:write syntax error, missing filename"); + return NULL; + } /* open file */ filename = parse_vars(tok_srch); @@ -375,20 +518,37 @@ char *process_line(char *line) /* Check if file exists and can be opened */ if(write_file == NULL) { - syn_error("ss:error:write, cannot write to file specified"); + syn_warn("ss:warn:write syntax error, missing quote?"); + return NULL; } /* strtok to the content that will be written to file */ tok_srch = strtok(NULL, "\""); + if(tok_srch == NULL) + { + syn_warn("ss:warn:write syntax error, missing quote?"); + return NULL; + } + tok_srch = strtok(NULL, "\""); - if(strcmp(tok_srch, "\n") == 0 || - strcmp(tok_srch, " \n") == 0 || tok_srch == NULL) { + if(tok_srch == NULL) + { + syn_warn("ss:warn:write syntax error, missing quote?"); + return NULL; + } + + if(strcmp(tok_srch, "\n") == 0 || strcmp(tok_srch, " \n") == 0) + { fclose(write_file); - syn_error("ss:error:write syntax error on data entry (are you quoted?)"); + syn_warn("ss:warn:write syntax error, missing write data?"); + return NULL; } if(strtok(NULL, "\"") == NULL) - syn_error("ss:error:write syntax error, missing end quote"); + { + syn_warn("ss:warn:write syntax error, missing quote?"); + return NULL; + } file_content = parse_vars(tok_srch); fprintf(write_file, "%s\n", file_content); @@ -407,13 +567,22 @@ char *process_line(char *line) /* strtok to filename of function */ tok_srch = strtok(NULL, "\""); if(tok_srch == NULL) - syn_error("ss:error:read syntax error, requires a file argument in quotes"); + { + syn_warn("ss:warn:write syntax error, missing quote?"); + return NULL; + } if(strcmp(tok_srch, "\n") == 0 || strcmp(tok_srch, " \n") == 0) - syn_error("ss:error:read syntax error, missing filename / in quotes"); + { + syn_warn("ss:warn:write syntax error, missing quote?"); + return NULL; + } if(strtok(NULL, "\"") == NULL) - syn_error("ss:error:read syntax error, missing end quote"); + { + syn_warn("ss:warn:write syntax error, missing quote?"); + return NULL; + } /* Pull any variables out of the file name that may be, and BAM, variable fill! */ @@ -432,7 +601,9 @@ char *process_line(char *line) /* Check if file was opened successfully */ if(read_file == NULL) { - syn_error("ss:error:read, failed to read from file"); + free(dynfile); + syn_warn("ss:warn:write, failed open"); + return NULL; } while(fgets(read_line, sizeof(read_line), read_file) != NULL) @@ -446,9 +617,13 @@ char *process_line(char *line) } else { - syn_error("ss:error:read, file too large, 2MB max"); + fclose(read_file); + free(dynfile); + syn_warn("ss:warn:write, file too large (2MB max)"); + return NULL; } + fclose(read_file); // For now print to test // @@ -461,13 +636,22 @@ char *process_line(char *line) char *del_filename; tok_srch = strtok(NULL, "\""); if(tok_srch == NULL) - syn_error("ss:error:delete syntax error, missing end quote"); + { + syn_warn("ss:warn:delete syntax error, missing quote?"); + return NULL; + } if(strcmp(tok_srch, "\n") == 0 || strcmp(tok_srch, " \n") == 0) - syn_error("ss:error:delete syntax error, missing file argument"); + { + syn_warn("ss:warn:delete syntax error, missing filename"); + return NULL; + } if(strtok(NULL, "\"") == NULL) - syn_error("ss:error:delete syntax error, missing end quote"); + { + syn_warn("ss:warn:delete syntax error, missing quote?"); + return NULL; + } /* Pull variables out of filename if any */ del_filename = parse_vars(tok_srch); @@ -480,12 +664,15 @@ char *process_line(char *line) } else { - syn_error("ss:error:delete, file is not accessible"); + syn_warn("ss:warn:delete, file not accessible"); + return NULL; } + } else { - syn_error("ss:error:delete, file not found"); + syn_warn("ss:warn:delete, file not found"); + return NULL; } } @@ -493,7 +680,7 @@ char *process_line(char *line) if(tok_srch[strlen(tok_srch)-1] == '\n') { return NULL; - } + } else { int varc = get_var_count(); @@ -501,7 +688,7 @@ char *process_line(char *line) char *bq_check; tok_srch = strtok(NULL, "="); // Check for back quotes, return string with backquotes processed - bq_check = strip_nl(parse_bq(tok_srch)); + bq_check = strip_nl(parse_bq(parse_vars(tok_srch))); // Don't check if variable is blank, if so let it fly! set_var(varc, varname_tmp, bq_check); /* printf("ss: var '%s' -> %s", varname_tmp, get_var_data(varname_tmp)); */ diff --git a/src/network.c b/src/network.c index 9eb308f..1380ba0 100644 --- a/src/network.c +++ b/src/network.c @@ -134,7 +134,8 @@ void snet_toss(char *address, int port, char *string) sockfd = socket(AF_INET, SOCK_STREAM, 0); if (sockfd == -1) { - syn_error("ss:error:network failed to create socket"); + syn_warn("ss:warn:network, failed to create socket"); + return; } bzero(&servaddr, sizeof(servaddr)); @@ -147,7 +148,9 @@ void snet_toss(char *address, int port, char *string) // connect the client socket to server socket if (connect(sockfd, (struct sockaddr*)&servaddr, sizeof(servaddr)) != 0) { - syn_error("ss:error:network failled to connect"); + syn_warn("ss:warn:network, failed to connect to socket"); + close(sockfd); + return; } else { @@ -155,7 +158,7 @@ void snet_toss(char *address, int port, char *string) } // If write reports -1, exit on error. - if(write(sockfd, string, strlen(string)) < 0) syn_error("ss:net:socket write error!"); + if(write(sockfd, string, strlen(string)) < 0) syn_warn("ss:warn:network, socket write error!"); // close the socket after pushing content close(sockfd); diff --git a/src/util.c b/src/util.c index e308404..ed5cff9 100644 --- a/src/util.c +++ b/src/util.c @@ -17,6 +17,11 @@ void syn_error(char *message) exit(1); } +void syn_warn(char *message) +{ + printf("%s\n", message); +} + char *strip_nl (char *string) { int n = strlen (string); diff --git a/src/util.h b/src/util.h index 1f5cb43..bd0f06a 100644 --- a/src/util.h +++ b/src/util.h @@ -6,6 +6,7 @@ */ void syn_error(char *message); +void syn_warn(char *message); char *strip_nl(char *string); int file_exists(char *path); int is_dir(char *path);