/*
* vQadmin Virtual Administration Interface
* Copyright (C) 2000-2002 Inter7 Internet Technologies, Inc.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
* vol@inter7.com
*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "global.h"
char WarningBuff[MAX_WARNING_BUFF];
int warning_len = 0;
char vqa_error[MAX_GLOBAL_LENGTH],
vqa_user[MAX_GLOBAL_LENGTH],
vqa_group[MAX_GLOBAL_LENGTH],
vqa_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 *)vqa_error, 0, MAX_GLOBAL_LENGTH);
memset((char *)vqa_user, 0, MAX_GLOBAL_LENGTH);
memset((char *)vqa_group, 0, MAX_GLOBAL_LENGTH);
memset((char *)vqa_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 *)vqa_error, 0, MAX_GLOBAL_LENGTH);
memcpy((char *)vqa_error, (char *)err, MAX_GLOBAL_LENGTH);
if (init) t_open(T_INIT_ERROR, 1);
if (!recoverable) t_open(T_ERROR, 1);
}
void global_warning(char *warn)
{
int len = 0;
len = strlen(warn);
if ((len + 1) >= (MAX_GLOBAL_LENGTH - warning_len)) return;
memcpy((char *)(vqa_warning + warning_len),
(char *)warn, (MAX_GLOBAL_LENGTH - warning_len));
warning_len += len;
*(vqa_warning + warning_len) = '$';
warning_len++;
*(vqa_warning + warning_len) = '\0';
}
void global_par(char *id, char *val)
{
struct par_t *p = NULL;
struct par_t *tmp_pt;
for( tmp_pt = parlist; tmp_pt != NULL; tmp_pt = tmp_pt->next) {
if ( tmp_pt->id[0] == id[0] && tmp_pt->id[1] == id[1] ) {
free(tmp_pt->val);
tmp_pt->val = (char *)malloc(strlen(val) + 1);
if (tmp_pt->val == NULL) global_error("Out of memory", 0, 0);
memset((char *)tmp_pt->val, 0, strlen(val) + 1);
memcpy((char *)tmp_pt->val, (char *)val, strlen(val));
return;
}
}
if ( *val == 0 ) return;
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;
/*
struct par_t *p = NULL;
if ( *val == 0 ) return;
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 (!(*vqa_warning)) return;
for (h = t = vqa_warning;;) {
if ((*h == '$') || (!(*h))) {
if (*h) *h++ = '\0';
else h = NULL;
printf("%s<BR>", t);
if (h == NULL) break;
t = h;
} else {
h++;
}
}
}
void global_exit(int exit_code)
{
vclose();
exit(exit_code);
}
syntax highlighted by Code2HTML, v. 0.9.1