#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "global.h"
int warning_len = 0;
char vqr_error[MAX_GLOBAL_LENGTH],
vqr_warning[MAX_GLOBAL_LENGTH];
struct par_t {
char id[3],
*val;
struct par_t *next;
};
struct par_t *parlist = NULL, *pt = NULL;
void global_init(void)
{
memset((char *)vqr_error, 0, MAX_GLOBAL_LENGTH);
memset((char *)vqr_warning, 0, MAX_GLOBAL_LENGTH);
warning_len = 0;
parlist = (struct par_t *)malloc(sizeof(struct par_t));
parlist->next = NULL;
pt = parlist;
}
/*
Defines a global error
err - Error
init - Error occured during initialization process
recoverable - Error is recoverable
vol@inter7.com
*/
void global_error(char *err, char init, char recoverable)
{
memset((char *)vqr_error, 0, MAX_GLOBAL_LENGTH);
memcpy((char *)vqr_error, (char *)err, MAX_GLOBAL_LENGTH);
if (init)
t_open(T_INIT_ERROR);
if (!recoverable)
t_open(T_ERROR);
}
void global_warning(char *warn)
{
int len = 0;
len = strlen(warn);
if ((len + 1) >= (MAX_GLOBAL_LENGTH - warning_len))
return;
memcpy((char *)(vqr_warning + warning_len), (char *)warn, (MAX_GLOBAL_LENGTH - warning_len));
warning_len += len;
*(vqr_warning + warning_len) = '$';
warning_len++;
*(vqr_warning + warning_len) = '\0';
}
void global_par(char *id, char *val)
{
struct par_t *p = NULL;
if ((id == NULL) || (val == NULL))
global_error("NULL parameter", 0, 0);
p = (struct par_t *)malloc(sizeof(struct par_t));
if (p == NULL)
global_error("Out of memory", 0, 0);
memset((char *)p->id, 0, 3);
memcpy((char *)p->id, (char *)id, 2);
p->next = NULL;
p->val = (char *)malloc(strlen(val) + 1);
if (p->val == NULL)
global_error("Out of memory", 0, 0);
memset((char *)p->val, 0, strlen(val) + 1);
memcpy((char *)p->val, (char *)val, strlen(val));
pt->next = p;
pt = p;
}
char *f_global_par(char *id)
{
struct par_t *p = NULL;
for (p = parlist; p->next; p = p->next) {
if (!(strcmp(p->next->id, id)))
return p->next->val;
}
return NULL;
}
/*
Flush all warnings
*/
void global_f_warning(void)
{
char *h = NULL, *t = NULL;
if (!(*vqr_warning))
return;
for (h = t = vqr_warning;;) {
if ((*h == '$') || (!(*h))) {
if (*h)
*h++ = '\0';
else
h = NULL;
printf("%s<BR>", t);
if (h == NULL)
break;
t = h;
}
else
h++;
}
}
syntax highlighted by Code2HTML, v. 0.9.1