@@ -1,2 +1,11 @@ | |||
appname = cms | |||
build: | |||
gcc -o cms src/*.c -std=c99 | |||
gcc -o $(appname) src/*.c -std=c99 | |||
install: | |||
mv $(appname) /usr/bin/$(appname) | |||
if [ -d /usr/share/$(appname) ]; then rm -r /usr/share/$(appname); fi | |||
mkdir /usr/share/$(appname) | |||
cp -r resources/* /usr/share/$(appname) |
@@ -0,0 +1,10 @@ | |||
#ifndef CMS_FILES_H | |||
#define CMS_FILES_H | |||
//Directory for all resources, like default themes and such. | |||
#define CMS_FILE_RESOURCES "/usr/share/cms" | |||
//File which tells us if a directory is already initiated. | |||
#define CMS_FILE_INITED ".cmsinited" | |||
#endif |
@@ -0,0 +1,16 @@ | |||
#include <stdio.h> | |||
#include <stdlib.h> | |||
#include "cms_log.h" | |||
void cms_log_panic(char* msg) | |||
{ | |||
fprintf(stderr, "Fatal error: %s\n", msg); | |||
exit(1); | |||
} | |||
void cms_log_error(char* msg) | |||
{ | |||
fprintf(stderr, "Error: %s\n", msg); | |||
exit(1); | |||
} |
@@ -0,0 +1,10 @@ | |||
#ifndef CMS_LOG_H | |||
#define CMS_LOG_H | |||
//Panic and halt execution. | |||
void cms_log_panic(char* msg); | |||
//Halt execution. | |||
void cms_log_error(char* msg); | |||
#endif |
@@ -0,0 +1,47 @@ | |||
#include <stdio.h> | |||
#include <stddef.h> | |||
#include <string.h> | |||
#include <stdlib.h> | |||
#include "cms_util.h" | |||
int cms_util_file_exists(char* fname) | |||
{ | |||
FILE* f; | |||
if (f = fopen(fname, "r")) | |||
{ | |||
fclose(f); | |||
return 1; | |||
} | |||
return 0; | |||
} | |||
void cms_util_file_create(char* fname) | |||
{ | |||
FILE* f = fopen(fname, "ab+"); | |||
fclose(f); | |||
} | |||
char* cms_util_join_paths(char* str1, char* str2) | |||
{ | |||
size_t len1 = strlen(str1); | |||
size_t len2 = strlen(str2); | |||
if (str1[len1 - 1] == '/') | |||
{ | |||
len1 -= 1; | |||
} | |||
char* path = malloc((len1 + len2 + 1) * sizeof(char)); | |||
if (path == NULL) | |||
return NULL; | |||
memcpy(path, str1, len1); //First part | |||
path[len1] = '/'; //Separator | |||
memcpy(path + len1 + 1, str2, len2); //Second part | |||
path[len1 + len2 + 1] = '\0'; //Null terminator | |||
return path; | |||
} |
@@ -0,0 +1,13 @@ | |||
#ifndef CMS_UTIL_H | |||
#define CMS_UTIL_H | |||
//Returns 1 if a file exists, 0 if it doesn't. | |||
int cms_util_file_exists(char* fname); | |||
//Create a file | |||
void cms_util_file_create(char* fname); | |||
//Joins together two paths. | |||
char* cms_util_join_paths(char* str1, char* str2); | |||
#endif |
@@ -1,4 +1,43 @@ | |||
int main(int argv, char** argc) | |||
#include <string.h> | |||
#include <stdio.h> | |||
#include "cms_util.h" | |||
#include "cms_log.h" | |||
#include "cms_files.h" | |||
int main(int argc, char** argv) | |||
{ | |||
if (argc < 2) | |||
{ | |||
fprintf(stderr, "Usage: %s <init|build>\n", argv[0]); | |||
return 1; | |||
} | |||
if (strcmp(argv[1], "init") == 0) //Initiate directory | |||
{ | |||
if (argc != 3) | |||
{ | |||
fprintf(stderr, "Usage: %s init <directory>\n", argv[0]); | |||
return 1; | |||
} | |||
char* dirname = argv[2]; | |||
//Get the path of .cmsinited, which tells us | |||
//whether or not the directory is already inited | |||
char* initedPath = cms_util_join_paths(dirname, CMS_FILE_INITED); | |||
if (initedPath == NULL) | |||
cms_log_panic("Memory allocation failed."); | |||
//Check if the .cmsinited file exists | |||
if (cms_util_file_exists(initedPath)) | |||
cms_log_error("Directory already initiated."); | |||
//Create .cmsinited file | |||
cms_util_file_create(initedPath); | |||
} | |||
else if (strcmp(argv[1], "build") == 0) //Build | |||
{ | |||
} | |||
} |