slidescript/src/util.c

114 lines
2.2 KiB
C
Executable File

/*
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 <filename>\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(&current_time);
return ctime(&current_time);
}