Browse Source

implementing cms_page

master
mort 9 years ago
parent
commit
43e1c29b58
4 changed files with 101 additions and 2 deletions
  1. 1
    0
      .gitignore
  2. BIN
      cms
  3. 85
    0
      src/cms_page.c
  4. 15
    2
      src/cms_page.h

+ 1
- 0
.gitignore View File

@@ -0,0 +1 @@
cms

BIN
cms View File


+ 85
- 0
src/cms_page.c View File

@@ -0,0 +1,85 @@
#include "cms_page.h"
#include <stdlib.h>
#include <stddef.h>
#include <string.h>
#include <dirent.h>
#include <sys/types.h>
#include <errno.h>

cms_page* cms_page_create()
{
cms_page* page = malloc(sizeof(cms_page));
return page;
}

int cms_page_parse(cms_page* page, char* str)
{
size_t len = strlen(str) + 1;

page->_str = malloc(len * sizeof(char));

if (page->_str == 0)
return 1; //alloc error

memcpy(page->_str, str, len * sizeof(char));

page->title = page->_str;

size_t line = 0;
for (size_t i = 0; i < len; ++i)
{
char c = str[i];

switch (c)
{
case '\n':
line += 1;
if (line == 1)
page->slug = (page->_str + i + 1);

case '\r':
page->_str[i] = '\0';
break;
}

if (line == 2)
break;
}

if (line == 2)
return 0;
else
return 1; //parse error
}

int cms_page_add_post(cms_page* page, cms_post* post)
{
page->numposts += 1;
page->posts = realloc(page->posts, page->numposts * sizeof(cms_post));

if (page->posts == 0)
return 1; //alloc error

page->posts[page->numposts - 1] = *post;
}

int cms_page_create_tree(cms_page* root, const char* path)
{
DIR* dp = opendir(path);
if (dp == NULL)
{
switch (errno)
{
case ENOMEM:
return 1;
case EACCES:
return 2;
case ENOENT:
return 3;
case ENOTDIR:
return 4;
default:
return 5;
}
}
}

+ 15
- 2
src/cms_page.h View File

@@ -2,6 +2,7 @@
#define CMS_PAGE_H

#include "cms_post.h"
#include <stddef.h>

typedef struct cms_page
{
@@ -14,8 +15,20 @@ typedef struct cms_page

cms_page* cms_page_create();

void cms_page_parse(cms_page* page, char* str);
// 1: allloc error
// 2: parse error
// 3: unknown
int cms_page_parse(cms_page* page, char* str);

void cms_page_add_post(cms_page* page, cms_post* post);
//1: alloc error
//2: unknown
int cms_page_add_post(cms_page* page, cms_post* post);

//1: alloc error
//2: permission denied
//3: dir doesn't exist
//4: not a directory
//5: unknown
int cms_page_create_tree(cms_page* root, const char* path);

#endif

Loading…
Cancel
Save