Browse Source

Progress, started on an init command to initiate directories

master
mort 9 years ago
parent
commit
6cd72e52fe
9 changed files with 146 additions and 2 deletions
  1. 0
    0
      .cmsinited
  2. 10
    1
      Makefile
  3. 0
    0
      resources/placeholder
  4. 10
    0
      src/cms_files.h
  5. 16
    0
      src/cms_log.c
  6. 10
    0
      src/cms_log.h
  7. 47
    0
      src/cms_util.c
  8. 13
    0
      src/cms_util.h
  9. 40
    1
      src/main.c

+ 0
- 0
.cmsinited View File


+ 10
- 1
Makefile View File

@@ -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
resources/placeholder View File


+ 10
- 0
src/cms_files.h View File

@@ -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

+ 16
- 0
src/cms_log.c View File

@@ -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);
}

+ 10
- 0
src/cms_log.h View File

@@ -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

+ 47
- 0
src/cms_util.c View File

@@ -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;
}

+ 13
- 0
src/cms_util.h View File

@@ -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

+ 40
- 1
src/main.c View File

@@ -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
{
}
}

Loading…
Cancel
Save