/*******************************************\
| * Ce programme est sous liscence GNU GPL * |
| * This software is under GNU/GPL licence * |
| * * * * * * * * * * * * * * * * * * * * * * |
| * http://www.gnu.org/copyleft/gpl.html * |
\*******************************************/
/* Cr er par Laurent Coustet <ed@zehome.com>
* http://ed.zehome.com/
* Made by Laurent Coustet <ed@zehome.com>
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/file.h>
#include "templates.h"
#include "debug.h"
#include "edblog.h"
/* for template parsing, you must define a search symbol */
#ifndef TPL_SYB
#define TPL_SYB "ø"
#endif
#define ENTRY_DELIM "¬¬¬¬"
#define ENTRIES_DELIM "$}"
unsigned char *_tpl_file_head;
unsigned char *_tpl_file_body;
unsigned char *_tpl_file_tail;
varval_st *liste=NULL;
void init_blog (unsigned char *_head_file, unsigned char *_body_file, unsigned char *_tail_file)
{
_tpl_file_head = _head_file;
_tpl_file_body = _body_file;
_tpl_file_tail = _tail_file;
liste = add_tpl_value (liste, "%titre", "Le Blog de Laurent Coustet (ed).\n");
return;
}
void draw_head (FILE *out)
{
parse_template (liste, out, _tpl_file_head);
}
void draw_tail (FILE *out)
{
parse_template (liste, out, _tpl_file_tail);
}
void draw_blog (FILE *out, char *blogfile)
{
FILE *blog_ptr_file;
int i=0;
char *temp_buf;
char *read_buf;
char *entry;
int size=0;
if ( (blog_ptr_file = fopen (blogfile,"r")) == NULL)
{
printf("Impossible d'ouvrir %s\n",blogfile);
ERROR ("Impossible to open %s in \"r\"\n",blogfile);
//exit (1);
return;
}
fseek (blog_ptr_file, 0, SEEK_END);
size = ftell (blog_ptr_file);
fseek (blog_ptr_file, 0, SEEK_SET);
read_buf = malloc(size);
fread (read_buf, sizeof (char), size, blog_ptr_file);
temp_buf = malloc(size);
entry = malloc(size);
strcpy (entry, read_buf);
while ((strstr (read_buf,ENTRY_DELIM)) != NULL )
{
i++;
strcpy (entry, read_buf);
strtok (entry,ENTRY_DELIM);
strcpy (temp_buf,entry);
strtok (temp_buf,ENTRIES_DELIM);
liste = add_tpl_value (liste, "entry.date",temp_buf);
temp_buf = strtok (NULL,ENTRIES_DELIM);
liste = add_tpl_value (liste, "entry.titre",temp_buf);
temp_buf = strtok (NULL,ENTRIES_DELIM);
liste = add_tpl_value (liste, "entry.body",temp_buf);
parse_template (liste,out,_tpl_file_body);
liste = del_tpl_var (liste, "entry.date");
liste = del_tpl_var (liste, "entry.titre");
liste = del_tpl_var (liste, "entry.body");
read_buf += strlen(entry) + strlen(ENTRY_DELIM);
}
return;
}