/* 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 "inc/deps.h" #include "inc/util.h" time_t current_time; void syn_error(char *message) { printf("%s\n", message); exit(1); } void syn_warn(char *message) { printf("%s\n", message); } char *strip_nl (char *string) { int n = strlen (string); if ((n-- > 0) && (string [n] == '\n')) { string [n] = NULLBYTE; return string; } else { /* no newline found, return the original string */ return string; } } // Check if a file exists, return code int file_exists(char *path) { struct stat buffer; return (stat (path, &buffer) == 0); } int is_dir(char *path) { struct stat buffer; stat(path, &buffer); // Check for file existence if (S_ISDIR(buffer.st_mode)) return 1; return 0; } // mkpath function for mkdir and mkfile int mkpath(char* file_path, mode_t mode) { assert(file_path && *file_path); for (char* p = strchr(file_path + 1, '/'); p; p = strchr(p + 1, '/')) { *p = '\0'; if (mkdir(file_path, mode) == -1) { if (errno != EEXIST) { *p = '/'; return -1; } } *p = '/'; } return 0; } char *ss_concat(char *str1, char *str2) { char *dymem = (char *) malloc((strlen(str1)+strlen(str2)) + 3); sprintf(dymem, "%s, %s", str1, str2); return dymem; } void parse_args(int argc, char** argv) { /* -h flag given, show help */ if(argc == 2 && strncmp("-h", argv[1], 2) == 0) { printf("SlideScript - simple top-down scripting language for the average user\n" "Arguments:\n\n" "-v\t Display version number\n" "-h\t Display this help page\n" "Usage: %s \n", argv[0]); exit(EXIT_SUCCESS); } /* -v flag given, show version */ else if(argc == 2 && strncmp("-v", argv[1], 2) == 0) { printf("SlideScript %s, Chris Dorman (cddo@riseup.net), 2021\n", VERSION); exit(EXIT_SUCCESS); } } char *ss_time() { time(¤t_time); return ctime(¤t_time); }