Made several functions multithreat aware
This commit is contained in:
parent
90bd1a495c
commit
595a6a0322
@ -6,7 +6,7 @@ v0.83.11 28-Jan-2006
|
||||
Added logging for possible detection of dialup IBC neighbour
|
||||
address change.
|
||||
Added experimental restart for changed resolved FQDN.
|
||||
Made logging multithread aware.
|
||||
Made several functions multithread aware.
|
||||
|
||||
|
||||
v0.83.10 25-Jan-2006 - 28-Jan-2006
|
||||
|
@ -62,6 +62,9 @@ int check_calllist(void)
|
||||
{
|
||||
int i, found, call_work;
|
||||
struct _alist *tmp;
|
||||
char *buf;
|
||||
|
||||
buf = calloc(81, sizeof(char));
|
||||
|
||||
/*
|
||||
* Check callist, remove obsolete entries.
|
||||
@ -77,7 +80,8 @@ int check_calllist(void)
|
||||
}
|
||||
}
|
||||
if (!found) {
|
||||
Syslog('c', "Removing slot %d node %s from calllist", i, fido2str(calllist[i].addr, 0x01f));
|
||||
fido2str_r(calllist[i].addr, 0x01f, buf);
|
||||
Syslog('c', "Removing slot %d node %s from calllist", i, buf);
|
||||
memset(&calllist[i], 0, sizeof(tocall));
|
||||
}
|
||||
}
|
||||
@ -112,7 +116,8 @@ int check_calllist(void)
|
||||
if (!found) {
|
||||
for (i = 0; i < MAXTASKS; i++) {
|
||||
if (!calllist[i].addr.zone) {
|
||||
Syslog('c', "Adding %s to calllist slot %d", fido2str(tmp->addr, 0x1f), i);
|
||||
fido2str_r(tmp->addr, 0x1f, buf);
|
||||
Syslog('c', "Adding %s to calllist slot %d", buf, i);
|
||||
calllist[i].addr = tmp->addr;
|
||||
calllist[i].cst = tmp->cst;
|
||||
calllist[i].callmode = tmp->callmode;
|
||||
@ -138,12 +143,14 @@ int check_calllist(void)
|
||||
Syslog('c', "---- ----- ----- --- ------- ------- -------- -------- -------- ----------------");
|
||||
}
|
||||
call_work++;
|
||||
fido2str_r(calllist[i].addr, 0x1f, buf);
|
||||
Syslog('c', "%4d %s %5d %3d %s %s %08x %08x %08x %s", i, calllist[i].calling?"true ":"false", calllist[i].taskpid,
|
||||
calllist[i].cst.tryno, callstatus(calllist[i].cst.trystat), callmode(calllist[i].callmode),
|
||||
calllist[i].moflags, calllist[i].diflags, calllist[i].ipflags, fido2str(calllist[i].addr, 0x1f));
|
||||
calllist[i].moflags, calllist[i].diflags, calllist[i].ipflags, buf);
|
||||
}
|
||||
}
|
||||
|
||||
free(buf);
|
||||
return call_work;
|
||||
}
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
* Purpose ...............: Read mailer last call status
|
||||
*
|
||||
*****************************************************************************
|
||||
* Copyright (C) 1997-2005
|
||||
* Copyright (C) 1997-2006
|
||||
*
|
||||
* Michiel Broek FIDO: 2:280/2802
|
||||
* Beekmansbos 10
|
||||
@ -37,10 +37,9 @@
|
||||
extern struct sysconfig CFG;
|
||||
|
||||
|
||||
char *stsname(faddr *);
|
||||
char *stsname(faddr *addr)
|
||||
void stsname_r(faddr *, char *);
|
||||
void stsname_r(faddr *addr, char *buf)
|
||||
{
|
||||
static char buf[PATH_MAX];
|
||||
char *p, *domain=NULL, zpref[8];
|
||||
int i;
|
||||
|
||||
@ -106,26 +105,29 @@ char *stsname(faddr *addr)
|
||||
|
||||
if (domain)
|
||||
free(domain);
|
||||
return buf;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
callstat *getstatus(faddr *addr)
|
||||
void getstatus_r(faddr *addr, callstat *cst)
|
||||
{
|
||||
static callstat cst;
|
||||
FILE *fp;
|
||||
FILE *fp;
|
||||
char *temp;
|
||||
|
||||
cst.trytime = 0;
|
||||
cst.tryno = 0;
|
||||
cst.trystat = 0;
|
||||
cst->trytime = 0;
|
||||
cst->tryno = 0;
|
||||
cst->trystat = 0;
|
||||
temp = calloc(PATH_MAX, sizeof(char));
|
||||
stsname_r(addr, temp);
|
||||
|
||||
if ((fp = fopen(stsname(addr), "r"))) {
|
||||
fread(&cst, sizeof(callstat), 1, fp);
|
||||
if ((fp = fopen(temp, "r"))) {
|
||||
fread(cst, sizeof(callstat), 1, fp);
|
||||
fclose(fp);
|
||||
}
|
||||
free(temp);
|
||||
|
||||
return &cst;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
@ -11,6 +11,6 @@ typedef struct _callstat {
|
||||
} callstat;
|
||||
|
||||
|
||||
callstat *getstatus(faddr*);
|
||||
void getstatus_r(faddr *, callstat *);
|
||||
|
||||
#endif
|
||||
|
@ -472,7 +472,10 @@ pid_t launch(char *cmd, char *opts, char *name, int tasktype)
|
||||
return 0;
|
||||
case 0:
|
||||
/* From Paul Vixies cron: */
|
||||
(void)setsid(); /* It doesn't seem to help */
|
||||
rc = setsid(); /* It doesn't seem to help */
|
||||
if (rc == -1)
|
||||
Syslog('?', "$Launch: setsid()");
|
||||
|
||||
close(0);
|
||||
if (open("/dev/null", O_RDONLY) != 0) {
|
||||
Syslog('?', "$Launch: \"%s\": reopen of stdin to /dev/null failed", buf);
|
||||
@ -718,7 +721,7 @@ void die(int onsig)
|
||||
*/
|
||||
count = 30;
|
||||
while (count) {
|
||||
snprintf(temp, 80, "%s", reg_fre());
|
||||
reg_fre_r(temp);
|
||||
if (strcmp(temp, "100:0;") == 0) {
|
||||
Syslog('+', "Good, no more other programs running");
|
||||
break;
|
||||
@ -1163,13 +1166,9 @@ void *scheduler(void)
|
||||
* Reload configuration data if some file is changed.
|
||||
*/
|
||||
now = time(NULL);
|
||||
#if defined(__OpenBSD__)
|
||||
localtime_r(&now, &tm);
|
||||
gmtime_r(&now, &utm);
|
||||
#else
|
||||
tm = *localtime(&now);
|
||||
utm = *gmtime(&now);
|
||||
#endif
|
||||
|
||||
if (tm.tm_min != olddo) {
|
||||
/*
|
||||
* Each minute we execute this part
|
||||
|
@ -4,7 +4,7 @@
|
||||
* Purpose ...............: mbtask - Scan mail outbound status
|
||||
*
|
||||
*****************************************************************************
|
||||
* Copyright (C) 1997-2005
|
||||
* Copyright (C) 1997-2006
|
||||
*
|
||||
* Michiel Broek FIDO: 2:280/2802
|
||||
* Beekmansbos 10
|
||||
@ -96,17 +96,15 @@ int load_node(fidoaddr n)
|
||||
|
||||
|
||||
|
||||
char *size_str(int);
|
||||
char *size_str(int size)
|
||||
void size_str_r(int, char *);
|
||||
void size_str_r(int size, char *fmt)
|
||||
{
|
||||
static char fmt[25];
|
||||
|
||||
if (size > 1048575) {
|
||||
snprintf(fmt, 25, "%dK", size / 1024);
|
||||
} else {
|
||||
snprintf(fmt, 25, "%d ", size);
|
||||
}
|
||||
return fmt;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@ -119,11 +117,7 @@ void set_next(int hour, int min)
|
||||
int uhour, umin;
|
||||
|
||||
now = time(NULL);
|
||||
#if defined(__OpenBSD__)
|
||||
gmtime_r(&now, &etm);
|
||||
#else
|
||||
etm = *gmtime(&now);
|
||||
#endif
|
||||
uhour = etm.tm_hour; /* For some reason, these intermediate integers are needed */
|
||||
umin = etm.tm_min;
|
||||
|
||||
@ -185,15 +179,18 @@ char *callmode(int mode)
|
||||
*/
|
||||
void checkdir(char *boxpath, faddr *fa, char flavor)
|
||||
{
|
||||
char *temp;
|
||||
char *temp, *buf;
|
||||
DIR *dp = NULL;
|
||||
struct dirent *de;
|
||||
struct stat sb;
|
||||
struct passwd *pw;
|
||||
|
||||
temp = calloc(PATH_MAX, sizeof(char));
|
||||
buf = calloc(PATH_MAX, sizeof(char));
|
||||
pw = getpwnam((char *)"mbse");
|
||||
Syslog('o', "check filebox %s (%s) flavor %c", boxpath, ascfnode(fa, 0xff), flavor);
|
||||
ascfnode_r(fa, 0xff, buf);
|
||||
Syslog('o', "check filebox %s (%s) flavor %c", boxpath, buf, flavor);
|
||||
free(buf);
|
||||
|
||||
if ((dp = opendir(boxpath)) != NULL) {
|
||||
while ((de = readdir(dp))) {
|
||||
@ -258,7 +255,7 @@ int outstat()
|
||||
{
|
||||
int rc, first = TRUE, T_window, iszmh = FALSE;
|
||||
struct _alist *tmp, *old;
|
||||
char digit[6], flstr[13], *temp, as[6], be[6], utc[6], flavor, *temp2;
|
||||
char digit[6], flstr[13], *temp, as[6], be[6], utc[6], flavor, *temp2, *fmt, *buf;
|
||||
time_t now;
|
||||
struct tm tm;
|
||||
int uhour, umin, thour, tmin;
|
||||
@ -280,11 +277,7 @@ int outstat()
|
||||
itnmask = (*tmpm)->mask;
|
||||
}
|
||||
now = time(NULL);
|
||||
#if defined(__OpenBSD__)
|
||||
gmtime_r(&now, &tm);
|
||||
#else
|
||||
tm = *gmtime(&now); /* UTC time */
|
||||
#endif
|
||||
gmtime_r(&now, &tm); // UTC time
|
||||
uhour = tm.tm_hour;
|
||||
umin = tm.tm_min;
|
||||
snprintf(utc, 6, "%02d:%02d", uhour, umin);
|
||||
@ -671,7 +664,10 @@ int outstat()
|
||||
* Here we are out of options, clear callflag.
|
||||
*/
|
||||
if (tmp->callmode == CM_NONE) {
|
||||
Syslog('!', "No method to call %s available", fido2str(tmp->addr, 0x0f));
|
||||
buf = calloc(81, sizeof(char));
|
||||
fido2str_r(tmp->addr, 0x0f, buf);
|
||||
Syslog('!', "No method to call %s available", buf);
|
||||
free(buf);
|
||||
tmp->flavors &= ~F_CALL;
|
||||
}
|
||||
}
|
||||
@ -687,11 +683,17 @@ int outstat()
|
||||
/*
|
||||
* Show callresult for this node.
|
||||
*/
|
||||
snprintf(temp, PATH_MAX, "%s %8s %08x %08x %08x %08x %5d %s %s %s", flstr, size_str(tmp->size),
|
||||
fmt = calloc(81, sizeof(char));
|
||||
buf = calloc(81, sizeof(char));
|
||||
size_str_r(tmp->size, fmt);
|
||||
fido2str_r(tmp->addr, 0x0f, buf);
|
||||
snprintf(temp, PATH_MAX, "%s %8s %08x %08x %08x %08x %5d %s %s %s", flstr, fmt,
|
||||
(unsigned int)tmp->olflags, (unsigned int)tmp->moflags,
|
||||
(unsigned int)tmp->diflags, (unsigned int)tmp->ipflags,
|
||||
tmp->cst.tryno, callstatus(tmp->cst.trystat), callmode(tmp->callmode), fido2str(tmp->addr, 0x0f));
|
||||
tmp->cst.tryno, callstatus(tmp->cst.trystat), callmode(tmp->callmode), buf);
|
||||
Syslog('+', "%s", temp);
|
||||
free(fmt);
|
||||
free(buf);
|
||||
|
||||
} /* All nodes scanned. */
|
||||
|
||||
@ -733,7 +735,7 @@ int each(faddr *addr, char flavor, int isflo, char *fname)
|
||||
struct _alist **tmp;
|
||||
struct stat st;
|
||||
FILE *fp;
|
||||
char buf[256], *p;
|
||||
char buf[256], *p, *buf2;
|
||||
node *nlent;
|
||||
callstat *cst;
|
||||
|
||||
@ -788,10 +790,12 @@ int each(faddr *addr, char flavor, int isflo, char *fname)
|
||||
(*tmp)->size = 0L;
|
||||
}
|
||||
|
||||
cst = getstatus(addr);
|
||||
cst = malloc(sizeof(callstat));
|
||||
getstatus_r(addr, cst);
|
||||
(*tmp)->cst.trytime = cst->trytime;
|
||||
(*tmp)->cst.tryno = cst->tryno;
|
||||
(*tmp)->cst.trystat = cst->trystat;
|
||||
free(cst);
|
||||
|
||||
if ((isflo == OUT_FLO) || (isflo == OUT_PKT) || (isflo == OUT_FIL))
|
||||
switch (flavor) {
|
||||
@ -833,7 +837,9 @@ int each(faddr *addr, char flavor, int isflo, char *fname)
|
||||
p++;
|
||||
if (stat(p, &st) != 0) {
|
||||
if (strlen(CFG.dospath)) {
|
||||
if (stat(Dos2Unix(p), &st) != 0) {
|
||||
buf2 = calloc(PATH_MAX, sizeof(char));
|
||||
Dos2Unix_r(p, buf2);
|
||||
if (stat(buf2, &st) != 0) {
|
||||
/*
|
||||
* Fileattach dissapeared, maybe
|
||||
* the node doesn't poll enough and
|
||||
@ -842,6 +848,7 @@ int each(faddr *addr, char flavor, int isflo, char *fname)
|
||||
st.st_size = 0L;
|
||||
st.st_mtime = time(NULL);
|
||||
}
|
||||
free(buf2);
|
||||
} else {
|
||||
if (stat(p, &st) != 0) {
|
||||
st.st_size = 0L;
|
||||
|
@ -90,6 +90,7 @@ char *exe_cmd(char *in)
|
||||
static char ebuf[19];
|
||||
static char *cnt, var1[16];
|
||||
int result;
|
||||
char *buf;
|
||||
|
||||
strcpy(ibuf, in);
|
||||
strncpy(cmd, ibuf, 4);
|
||||
@ -253,7 +254,11 @@ char *exe_cmd(char *in)
|
||||
* 100:0;
|
||||
*/
|
||||
if (strncmp(cmd, "CIPM", 4) == 0) {
|
||||
return reg_ipm(token);
|
||||
buf = calloc(SS_BUFSIZE, sizeof(char));
|
||||
reg_ipm_r(token, buf);
|
||||
snprintf(obuf, SS_BUFSIZE, "%s", buf);
|
||||
free(buf);
|
||||
return obuf;
|
||||
}
|
||||
|
||||
/*
|
||||
@ -312,7 +317,11 @@ char *exe_cmd(char *in)
|
||||
* 100:0; No page active
|
||||
*/
|
||||
if (strncmp(cmd, "CCKP", 4) == 0) {
|
||||
return reg_checkpage(token);
|
||||
buf = calloc(SS_BUFSIZE, sizeof(char));
|
||||
reg_checkpage_r(token, buf);
|
||||
snprintf(obuf, SS_BUFSIZE, "%s", buf);
|
||||
free(buf);
|
||||
return obuf;
|
||||
}
|
||||
|
||||
/*
|
||||
@ -395,7 +404,11 @@ char *exe_cmd(char *in)
|
||||
* 100:1,3; Error
|
||||
*/
|
||||
if (strncmp(cmd, "DSPC", 4) == 0) {
|
||||
return disk_check(token);
|
||||
buf = calloc(SS_BUFSIZE, sizeof(char));
|
||||
disk_check_r(token, buf);
|
||||
snprintf(obuf, SS_BUFSIZE, "%s", buf);
|
||||
free(buf);
|
||||
return obuf;
|
||||
}
|
||||
|
||||
/*
|
||||
@ -403,7 +416,11 @@ char *exe_cmd(char *in)
|
||||
* 100:n,data1,..,data10;
|
||||
*/
|
||||
if (strncmp(cmd, "DGFS", 4) == 0) {
|
||||
return disk_getfs();
|
||||
buf = calloc(SS_BUFSIZE, sizeof(char));
|
||||
disk_getfs_r(buf);
|
||||
snprintf(obuf, SS_BUFSIZE, "%s", buf);
|
||||
free(buf);
|
||||
return obuf;
|
||||
}
|
||||
|
||||
/*
|
||||
@ -442,7 +459,11 @@ char *exe_cmd(char *in)
|
||||
* 201:1,16;
|
||||
*/
|
||||
if (strncmp(cmd, "GSTA", 4) == 0) {
|
||||
return stat_status();
|
||||
buf = calloc(SS_BUFSIZE, sizeof(char));
|
||||
stat_status_r(buf);
|
||||
snprintf(obuf, SS_BUFSIZE, "%s", buf);
|
||||
free(buf);
|
||||
return obuf;
|
||||
}
|
||||
|
||||
/*
|
||||
@ -453,7 +474,11 @@ char *exe_cmd(char *in)
|
||||
if (strncmp(cmd, "GMON", 4) == 0) {
|
||||
cnt = strtok(token, ",");
|
||||
strcpy(var1, strtok(NULL, ";"));
|
||||
return get_reginfo(atoi(var1));
|
||||
buf = calloc(SS_BUFSIZE, sizeof(char));
|
||||
get_reginfo_r(atoi(var1), buf);
|
||||
snprintf(obuf, SS_BUFSIZE, "%s", buf);
|
||||
free(buf);
|
||||
return obuf;
|
||||
}
|
||||
|
||||
/*
|
||||
@ -461,7 +486,11 @@ char *exe_cmd(char *in)
|
||||
* 100:n,data1,..,data10;
|
||||
*/
|
||||
if (strncmp(cmd, "GDST", 4) == 0) {
|
||||
return disk_getfs();
|
||||
buf = calloc(SS_BUFSIZE, sizeof(char));
|
||||
disk_getfs_r(buf);
|
||||
snprintf(obuf, SS_BUFSIZE, "%s", buf);
|
||||
free(buf);
|
||||
return obuf;
|
||||
}
|
||||
|
||||
/*
|
||||
@ -470,7 +499,11 @@ char *exe_cmd(char *in)
|
||||
* 201:1,16;
|
||||
*/
|
||||
if (strncmp(cmd, "GSYS", 4) == 0) {
|
||||
return get_sysinfo();
|
||||
buf = calloc(SS_BUFSIZE, sizeof(char));
|
||||
get_sysinfo_r(buf);
|
||||
snprintf(obuf, SS_BUFSIZE, "%s", buf);
|
||||
free(buf);
|
||||
return obuf;
|
||||
}
|
||||
|
||||
/*
|
||||
@ -478,7 +511,11 @@ char *exe_cmd(char *in)
|
||||
* 100:1,n;
|
||||
*/
|
||||
if (strncmp(cmd, "GLCC", 4) == 0) {
|
||||
return get_lastcallercount();
|
||||
buf = calloc(SS_BUFSIZE, sizeof(char));
|
||||
get_lastcallercount_r(buf);
|
||||
snprintf(obuf, SS_BUFSIZE, "%s", buf);
|
||||
free(buf);
|
||||
return obuf;
|
||||
}
|
||||
|
||||
/*
|
||||
@ -489,7 +526,11 @@ char *exe_cmd(char *in)
|
||||
if (strncmp(cmd, "GLCR", 4) == 0) {
|
||||
cnt = strtok(token, ",");
|
||||
strcpy(var1, strtok(NULL, ";"));
|
||||
return get_lastcallerrec(atoi(var1));
|
||||
buf = calloc(SS_BUFSIZE, sizeof(char));
|
||||
get_lastcallerrec_r(atoi(var1), buf);
|
||||
snprintf(obuf, SS_BUFSIZE, "%s", buf);
|
||||
free(buf);
|
||||
return obuf;
|
||||
}
|
||||
|
||||
|
||||
@ -536,7 +577,11 @@ char *exe_cmd(char *in)
|
||||
* 201:1,16;
|
||||
*/
|
||||
if (strncmp(cmd, "SFRE", 4) == 0) {
|
||||
return reg_fre();
|
||||
buf = calloc(SS_BUFSIZE, sizeof(char));
|
||||
reg_fre_r(buf);
|
||||
snprintf(obuf, SS_BUFSIZE, "%s", buf);
|
||||
free(buf);
|
||||
return obuf;
|
||||
}
|
||||
|
||||
/*
|
||||
@ -545,7 +590,11 @@ char *exe_cmd(char *in)
|
||||
* 200:1,16;
|
||||
*/
|
||||
if (strncmp(cmd, "SSEQ", 4) == 0) {
|
||||
return getseq();
|
||||
buf = calloc(SS_BUFSIZE, sizeof(char));
|
||||
getseq_r(buf);
|
||||
snprintf(obuf, SS_BUFSIZE, "%s", buf);
|
||||
free(buf);
|
||||
return obuf;
|
||||
}
|
||||
|
||||
/*
|
||||
@ -554,7 +603,11 @@ char *exe_cmd(char *in)
|
||||
* 200:1,16;
|
||||
*/
|
||||
if (strncmp(cmd, "SEST", 4) == 0) {
|
||||
return sem_status(token);
|
||||
buf = calloc(SS_BUFSIZE, sizeof(char));
|
||||
sem_status_r(token, buf);
|
||||
snprintf(obuf, SS_BUFSIZE, "%s", buf);
|
||||
free(buf);
|
||||
return obuf;
|
||||
}
|
||||
|
||||
/*
|
||||
@ -563,7 +616,11 @@ char *exe_cmd(char *in)
|
||||
* 200:1,16;
|
||||
*/
|
||||
if (strncmp(cmd, "SECR", 4) == 0) {
|
||||
return sem_create(token);
|
||||
buf = calloc(SS_BUFSIZE, sizeof(char));
|
||||
sem_create_r(token, buf);
|
||||
snprintf(obuf, SS_BUFSIZE, "%s", buf);
|
||||
free(buf);
|
||||
return obuf;
|
||||
}
|
||||
|
||||
/*
|
||||
@ -572,7 +629,11 @@ char *exe_cmd(char *in)
|
||||
* 200:1,16;
|
||||
*/
|
||||
if (strncmp(cmd, "SERM", 4) == 0) {
|
||||
return sem_remove(token);
|
||||
buf = calloc(SS_BUFSIZE, sizeof(char));
|
||||
sem_remove_r(token, buf);
|
||||
snprintf(obuf, SS_BUFSIZE, "%s", buf);
|
||||
free(buf);
|
||||
return obuf;
|
||||
}
|
||||
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
* Purpose ...............: Give status of all filesystems
|
||||
*
|
||||
*****************************************************************************
|
||||
* Copyright (C) 1997-2005
|
||||
* Copyright (C) 1997-2006
|
||||
*
|
||||
* Michiel Broek FIDO: 2:280/2802
|
||||
* Beekmansbos 10
|
||||
@ -236,11 +236,8 @@ void fill_mfslist(mfs_list **fap, char *mountpoint, char *fstype)
|
||||
*/
|
||||
char *disk_reset(void)
|
||||
{
|
||||
static char buf[10];
|
||||
|
||||
disk_reread = TRUE;
|
||||
snprintf(buf, 10, "100:0;");
|
||||
return buf;
|
||||
return (char *)"100:0;";
|
||||
}
|
||||
|
||||
|
||||
@ -249,9 +246,8 @@ char *disk_reset(void)
|
||||
* Check free diskspace on all by mbse used filesystems.
|
||||
* The amount of needed space is given in MBytes.
|
||||
*/
|
||||
char *disk_check(char *token)
|
||||
void disk_check_r(char *token, char *buf)
|
||||
{
|
||||
static char buf[SS_BUFSIZE];
|
||||
mfs_list *tmp;
|
||||
unsigned int needed, lowest = 0xffffffff;
|
||||
int rc;
|
||||
@ -264,7 +260,7 @@ char *disk_check(char *token)
|
||||
* Answer Error
|
||||
*/
|
||||
snprintf(buf, SS_BUFSIZE, "100:1,3");
|
||||
return buf;
|
||||
return;
|
||||
}
|
||||
|
||||
if ((rc = pthread_mutex_lock(&a_mutex)))
|
||||
@ -283,7 +279,7 @@ char *disk_check(char *token)
|
||||
} else {
|
||||
snprintf(buf, SS_BUFSIZE, "100:2,1,%d;", lowest);
|
||||
}
|
||||
return buf;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@ -292,9 +288,8 @@ char *disk_check(char *token)
|
||||
* This function returns the information of all mounted filesystems,
|
||||
* but no more then 10 filesystems.
|
||||
*/
|
||||
char *disk_getfs()
|
||||
void disk_getfs_r(char *buf)
|
||||
{
|
||||
static char buf[SS_BUFSIZE];
|
||||
char tt[80], *ans = NULL;
|
||||
mfs_list *tmp;
|
||||
int rc, i = 0;
|
||||
@ -302,7 +297,7 @@ char *disk_getfs()
|
||||
buf[0] = '\0';
|
||||
if (mfs == NULL) {
|
||||
snprintf(buf, SS_BUFSIZE, "100:0;");
|
||||
return buf;
|
||||
return;
|
||||
}
|
||||
|
||||
if ((rc = pthread_mutex_lock(&a_mutex)))
|
||||
@ -332,7 +327,7 @@ char *disk_getfs()
|
||||
free(ans);
|
||||
ans = NULL;
|
||||
|
||||
return buf;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
@ -3,9 +3,9 @@
|
||||
|
||||
/* $Id$ */
|
||||
|
||||
char *disk_reset(void); /* Reset disk tables */
|
||||
char *disk_check(char *); /* Check space in Megabytes */
|
||||
char *disk_getfs(void); /* Get disk status */
|
||||
void *disk_thread(void); /* Disk watch thread */
|
||||
char *disk_reset(void); /* Reset disk tables */
|
||||
void disk_check_r(char *, char *); /* Check space in Megabytes */
|
||||
void disk_getfs_r(char *); /* Get disk status */
|
||||
void *disk_thread(void); /* Disk watch thread */
|
||||
|
||||
#endif
|
||||
|
@ -4,7 +4,7 @@
|
||||
* Purpose ...............: Give system information
|
||||
*
|
||||
*****************************************************************************
|
||||
* Copyright (C) 1997-2005
|
||||
* Copyright (C) 1997-2006
|
||||
*
|
||||
* Michiel Broek FIDO: 2:280/2802
|
||||
* Beekmansbos 10
|
||||
@ -37,10 +37,9 @@
|
||||
/*
|
||||
* Get BBS System info.
|
||||
*/
|
||||
char *get_sysinfo(void)
|
||||
void get_sysinfo_r(char *buf)
|
||||
{
|
||||
FILE *fp;
|
||||
static char buf[SS_BUFSIZE];
|
||||
char *temp;
|
||||
time_t startdate;
|
||||
|
||||
@ -50,51 +49,50 @@ char *get_sysinfo(void)
|
||||
|
||||
if ((fp = fopen(temp, "r")) == NULL) {
|
||||
free(temp);
|
||||
return buf;
|
||||
return;
|
||||
}
|
||||
free(temp);
|
||||
|
||||
if (fread(&SYSINFO, sizeof(SYSINFO), 1, fp) == 1) {
|
||||
startdate = SYSINFO.StartDate;
|
||||
ctime_r(&startdate, temp);
|
||||
snprintf(buf, SS_BUFSIZE, "100:7,%d,%d,%d,%d,%d,%s,%s;", SYSINFO.SystemCalls,
|
||||
SYSINFO.Pots, SYSINFO.ISDN, SYSINFO.Network, SYSINFO.Local,
|
||||
ctime(&startdate), clencode(SYSINFO.LastCaller));
|
||||
temp, clencode(SYSINFO.LastCaller));
|
||||
}
|
||||
|
||||
free(temp);
|
||||
fclose(fp);
|
||||
|
||||
return buf;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
char *get_lastcallercount(void)
|
||||
void get_lastcallercount_r(char *buf)
|
||||
{
|
||||
static char buf[41];
|
||||
char *temp;
|
||||
FILE *fp;
|
||||
|
||||
snprintf(buf, 41, "100:1,0;");
|
||||
snprintf(buf, SS_BUFSIZE, "100:1,0;");
|
||||
temp = calloc(PATH_MAX, sizeof(char));
|
||||
snprintf(temp, PATH_MAX, "%s/etc/lastcall.data", getenv("MBSE_ROOT"));
|
||||
if ((fp = fopen(temp, "r")) == NULL) {
|
||||
free(temp);
|
||||
return buf;
|
||||
return;
|
||||
}
|
||||
|
||||
fread(&LCALLhdr, sizeof(LCALLhdr), 1, fp);
|
||||
fseek(fp, 0, SEEK_END);
|
||||
snprintf(buf, 41, "100:1,%ld;", ((ftell(fp) - LCALLhdr.hdrsize) / LCALLhdr.recsize));
|
||||
snprintf(buf, SS_BUFSIZE, "100:1,%ld;", ((ftell(fp) - LCALLhdr.hdrsize) / LCALLhdr.recsize));
|
||||
fclose(fp);
|
||||
free(temp);
|
||||
return buf;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
char *get_lastcallerrec(int Rec)
|
||||
void get_lastcallerrec_r(int Rec, char *buf)
|
||||
{
|
||||
static char buf[SS_BUFSIZE];
|
||||
char *temp, action[9], *name, *city;
|
||||
FILE *fp;
|
||||
|
||||
@ -103,7 +101,7 @@ char *get_lastcallerrec(int Rec)
|
||||
snprintf(temp, PATH_MAX, "%s/etc/lastcall.data", getenv("MBSE_ROOT"));
|
||||
if ((fp = fopen(temp, "r")) == NULL) {
|
||||
free(temp);
|
||||
return buf;
|
||||
return;
|
||||
}
|
||||
fread(&LCALLhdr, sizeof(LCALLhdr), 1, fp);
|
||||
fseek(fp, ((Rec -1) * LCALLhdr.recsize) + LCALLhdr.hdrsize, SEEK_SET);
|
||||
@ -140,7 +138,7 @@ char *get_lastcallerrec(int Rec)
|
||||
|
||||
free(temp);
|
||||
fclose(fp);
|
||||
return buf;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
@ -4,9 +4,9 @@
|
||||
/* $Id$ */
|
||||
|
||||
|
||||
char *get_sysinfo(void); /* Get System Info */
|
||||
char *get_lastcallercount(void); /* Get Lastcallers count */
|
||||
char *get_lastcallerrec(int); /* Get Lastcaller record */
|
||||
void get_sysinfo_r(char *); /* Get System Info */
|
||||
void get_lastcallercount_r(char *); /* Get Lastcallers count */
|
||||
void get_lastcallerrec_r(int, char *); /* Get Lastcaller record */
|
||||
|
||||
|
||||
#endif
|
||||
|
@ -4,7 +4,7 @@
|
||||
* Purpose ...............: Buffers for registration information.
|
||||
*
|
||||
*****************************************************************************
|
||||
* Copyright (C) 1997-2005
|
||||
* Copyright (C) 1997-2006
|
||||
*
|
||||
* Michiel Broek FIDO: 2:280/2802
|
||||
* Beekmansbos 10
|
||||
@ -396,28 +396,26 @@ int reg_sysop(char *data)
|
||||
/*
|
||||
* Check for personal message
|
||||
*/
|
||||
char *reg_ipm(char *data)
|
||||
void reg_ipm_r(char *data, char *buf)
|
||||
{
|
||||
char *cnt, *pid, *name, *msg;
|
||||
static char buf[128];
|
||||
int rec;
|
||||
|
||||
buf[0] = '\0';
|
||||
snprintf(buf, 128, "100:0;");
|
||||
snprintf(buf, SS_BUFSIZE, "100:0;");
|
||||
cnt = strtok(data, ",");
|
||||
pid = strtok(NULL, ";");
|
||||
|
||||
if ((rec = reg_find(pid)) == -1)
|
||||
return buf;
|
||||
return;
|
||||
|
||||
reginfo[rec].lastcon = (int)time(NULL);
|
||||
if (!reginfo[rec].ismsg)
|
||||
return buf;
|
||||
return;
|
||||
|
||||
buf[0] = '\0';
|
||||
name = xstrcpy(clencode(reginfo[rec].fname[reginfo[rec].ptr_out]));
|
||||
msg = xstrcpy(clencode(reginfo[rec].msg[reginfo[rec].ptr_out]));
|
||||
snprintf(buf, 128, "100:2,%s,%s;", name, msg);
|
||||
snprintf(buf, SS_BUFSIZE, "100:2,%s,%s;", name, msg);
|
||||
if (reginfo[rec].ptr_out < RB)
|
||||
reginfo[rec].ptr_out++;
|
||||
else
|
||||
@ -429,7 +427,7 @@ char *reg_ipm(char *data)
|
||||
|
||||
free(name);
|
||||
free(msg);
|
||||
return buf;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@ -506,13 +504,10 @@ int reg_spm(char *data)
|
||||
|
||||
|
||||
|
||||
char *reg_fre(void)
|
||||
void reg_fre_r(char *buf)
|
||||
{
|
||||
static char buf[80];
|
||||
int i, users = 0, utils = 0;
|
||||
|
||||
buf[0] = '\0';
|
||||
|
||||
for (i = 1; i < MAXCLIENT; i++) {
|
||||
if (reginfo[i].pid) {
|
||||
if ((!strncmp(reginfo[i].prg, "mbsebbs", 7)) ||
|
||||
@ -538,7 +533,7 @@ char *reg_fre(void)
|
||||
snprintf(buf, 80, "100:1,Running utilities: %02d Active users: %02d;", utils, users);
|
||||
else
|
||||
snprintf(buf, 80, "100:0;");
|
||||
return buf;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@ -548,13 +543,11 @@ char *reg_fre(void)
|
||||
* must be 1, for the next searches 0. Returns 100:0; if there
|
||||
* is an error or the end of file is reached.
|
||||
*/
|
||||
char *get_reginfo(int first)
|
||||
void get_reginfo_r(int first, char *buf)
|
||||
{
|
||||
static char buf[256];
|
||||
char *name, *prg, *city, *doing;
|
||||
|
||||
memset(&buf, 0, sizeof(buf));
|
||||
snprintf(buf, 256, "100:0;");
|
||||
snprintf(buf, SS_BUFSIZE, "100:0;");
|
||||
|
||||
/*
|
||||
* Loop forever until an error occours, eof is reached or
|
||||
@ -568,21 +561,21 @@ char *get_reginfo(int first)
|
||||
entrypos++;
|
||||
|
||||
if (entrypos == MAXCLIENT)
|
||||
return buf;
|
||||
return;
|
||||
|
||||
if ((int)reginfo[entrypos].pid != 0) {
|
||||
name = xstrcpy(clencode(reginfo[entrypos].uname));
|
||||
prg = xstrcpy(clencode(reginfo[entrypos].prg));
|
||||
city = xstrcpy(clencode(reginfo[entrypos].city));
|
||||
doing = xstrcpy(clencode( reginfo[entrypos].doing));
|
||||
snprintf(buf, 256, "100:7,%d,%s,%s,%s,%s,%s,%d;",
|
||||
snprintf(buf, SS_BUFSIZE, "100:7,%d,%s,%s,%s,%s,%s,%d;",
|
||||
reginfo[entrypos].pid, reginfo[entrypos].tty,
|
||||
name, prg, city, doing, reginfo[entrypos].started);
|
||||
free(name);
|
||||
free(prg);
|
||||
free(city);
|
||||
free(doing);
|
||||
return buf;
|
||||
return;
|
||||
}
|
||||
}
|
||||
/* never reached */
|
||||
@ -665,24 +658,22 @@ int reg_cancel(char *data)
|
||||
/*
|
||||
* Check paging status for from mbmon
|
||||
*/
|
||||
char *reg_checkpage(char *data)
|
||||
void reg_checkpage_r(char *data, char *buf)
|
||||
{
|
||||
static char buf[128];
|
||||
int i;
|
||||
|
||||
memset(&buf, 0, sizeof(buf));
|
||||
for (i = 1; i < MAXCLIENT; i++) {
|
||||
if (reginfo[i].pid && reginfo[i].paging) {
|
||||
snprintf(buf, 128, "100:3,%d,1,%s;", reginfo[i].pid, clencode(reginfo[i].reason));
|
||||
return buf;
|
||||
snprintf(buf, SS_BUFSIZE, "100:3,%d,1,%s;", reginfo[i].pid, clencode(reginfo[i].reason));
|
||||
return;
|
||||
}
|
||||
if (reginfo[i].pid && reginfo[i].haspaged) {
|
||||
snprintf(buf, 128, "100:3,%d,0,%s;", reginfo[i].pid, clencode(reginfo[i].reason));
|
||||
return buf;
|
||||
snprintf(buf, SS_BUFSIZE, "100:3,%d,0,%s;", reginfo[i].pid, clencode(reginfo[i].reason));
|
||||
return;
|
||||
}
|
||||
}
|
||||
snprintf(buf, 128, "100:0;");
|
||||
return buf;
|
||||
snprintf(buf, SS_BUFSIZE, "100:0;");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
@ -45,17 +45,17 @@ int reg_nop(char *);
|
||||
int reg_timer(int, char *);
|
||||
int reg_tty(char *);
|
||||
int reg_user(char *);
|
||||
int reg_silent(char *); /* Set/Reset do not disturb */
|
||||
char *reg_ipm(char *); /* Check for personal message */
|
||||
int reg_spm(char *); /* Send personal message */
|
||||
char *reg_fre(void); /* Check if system is free */
|
||||
char *get_reginfo(int); /* Get registration info */
|
||||
int reg_sysop(char *); /* Registrate sysop presence */
|
||||
int reg_page(char *); /* Page sysop for chat */
|
||||
int reg_cancel(char *); /* Cancel sysop page */
|
||||
char *reg_checkpage(char *); /* Check paging status */
|
||||
int reg_ispaging(char *); /* Check if user with pid paged */
|
||||
void reg_sysoptalk(char *); /* Is now talking to the sysop */
|
||||
int reg_silent(char *); /* Set/Reset do not disturb */
|
||||
void reg_ipm_r(char *, char *); /* Check for personal message */
|
||||
int reg_spm(char *); /* Send personal message */
|
||||
void reg_fre_r(char *); /* Check if system is free */
|
||||
void get_reginfo_r(int, char *); /* Get registration info */
|
||||
int reg_sysop(char *); /* Registrate sysop presence */
|
||||
int reg_page(char *); /* Page sysop for chat */
|
||||
int reg_cancel(char *); /* Cancel sysop page */
|
||||
void reg_checkpage_r(char *, char *); /* Check paging status */
|
||||
int reg_ispaging(char *); /* Check if user with pid paged */
|
||||
void reg_sysoptalk(char *); /* Is now talking to the sysop */
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
* Purpose ...............: Keep track of server status
|
||||
*
|
||||
*****************************************************************************
|
||||
* Copyright (C) 1997-2005
|
||||
* Copyright (C) 1997-2006
|
||||
*
|
||||
* Michiel Broek FIDO: 2:280/2802
|
||||
* Beekmansbos 10
|
||||
@ -151,19 +151,11 @@ void status_write(void)
|
||||
struct tm ttm;
|
||||
time_t temp;
|
||||
|
||||
#if defined(__OpenBSD)
|
||||
temp = time(NULL);
|
||||
localtime_r(&temp, &ttm);
|
||||
yday = ttm.tm_yday;
|
||||
temp = (time_t)status.daily;
|
||||
localtime_r(&temp, &ttm);
|
||||
#else
|
||||
temp = time(NULL);
|
||||
ttm = *localtime(&temp);
|
||||
yday = ttm.tm_yday;
|
||||
temp = (time_t)status.daily;
|
||||
ttm = *localtime(&temp);
|
||||
#endif
|
||||
|
||||
/*
|
||||
* If we passed to the next day, zero the today counters
|
||||
@ -219,11 +211,7 @@ int get_zmh()
|
||||
time_t Now;
|
||||
|
||||
Now = time(NULL);
|
||||
#if defined(__OpenBSD__)
|
||||
gmtime_r(&Now, &l_date);
|
||||
#else
|
||||
l_date = *gmtime(&Now);
|
||||
#endif
|
||||
snprintf(sstime, 6, "%02d:%02d", l_date.tm_hour, l_date.tm_min);
|
||||
|
||||
if ((strncmp(sstime, TCFG.zmh_start, 5) >= 0) && (strncmp(sstime, TCFG.zmh_end, 5) < 0)) {
|
||||
@ -303,23 +291,20 @@ void stat_inc_cerr()
|
||||
|
||||
|
||||
|
||||
char *stat_status()
|
||||
void stat_status_r(char *buf)
|
||||
{
|
||||
static char buf[160];
|
||||
int srvcnt = 0, chncnt = 0, usrcnt = 0;
|
||||
srv_list *tmps;
|
||||
chn_list *tmpc;
|
||||
usr_list *tmpu;
|
||||
|
||||
buf[0] = '\0';
|
||||
|
||||
for (tmps = servers; tmps; tmps = tmps->next)
|
||||
srvcnt++;
|
||||
for (tmpc = channels; tmpc; tmpc = tmpc->next)
|
||||
chncnt++;
|
||||
for (tmpu = users; tmpu; tmpu = tmpu->next)
|
||||
usrcnt++;
|
||||
snprintf(buf, 160, "100:23,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%2.2f,%u,%d,%d,%d;",
|
||||
snprintf(buf, SS_BUFSIZE, "100:23,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%2.2f,%u,%d,%d,%d;",
|
||||
status.start, status.laststart, status.daily,
|
||||
status.startups, status.clients,
|
||||
status.total.tot_clt, status.total.peak_clt,
|
||||
@ -328,7 +313,7 @@ char *stat_status()
|
||||
status.today.s_error, status.today.c_error,
|
||||
status.open, get_zmh(), internet, s_do_inet, Processing, Load, status.sequence,
|
||||
srvcnt, chncnt, usrcnt);
|
||||
return buf;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@ -353,15 +338,12 @@ int stat_bbs_stat()
|
||||
/*
|
||||
* Get next sequence number
|
||||
*/
|
||||
char *getseq(void)
|
||||
void getseq_r(char *buf)
|
||||
{
|
||||
static char buf[80];
|
||||
|
||||
buf[0] = '\0';
|
||||
status.sequence++;
|
||||
status_write();
|
||||
snprintf(buf, 80, "100:1,%u;", status.sequence);
|
||||
return buf;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@ -406,13 +388,11 @@ int sem_set(char *sem, int value)
|
||||
|
||||
|
||||
|
||||
char *sem_status(char *data)
|
||||
void sem_status_r(char *data, char *buf)
|
||||
{
|
||||
char *cnt, *sem;
|
||||
static char buf[40];
|
||||
int value;
|
||||
|
||||
buf[0] = '\0';
|
||||
snprintf(buf, 40, "200:1,16;");
|
||||
cnt = strtok(data, ",");
|
||||
sem = strtok(NULL, ";");
|
||||
@ -439,47 +419,45 @@ char *sem_status(char *data)
|
||||
value = s_do_inet;
|
||||
} else {
|
||||
Syslog('s', "sem_status(%s) buf=%s", sem, buf);
|
||||
return buf;
|
||||
return;
|
||||
}
|
||||
|
||||
snprintf(buf, 40, "100:1,%s;", value ? "1":"0");
|
||||
return buf;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
char *sem_create(char *data)
|
||||
void sem_create_r(char *data, char *buf)
|
||||
{
|
||||
static char buf[40];
|
||||
char *cnt, *sem;
|
||||
|
||||
cnt = strtok(data, ",");
|
||||
sem = strtok(NULL, ";");
|
||||
buf[0] = '\0';
|
||||
snprintf(buf, 40, "200:1,16;");
|
||||
|
||||
if (sem_set(sem, TRUE))
|
||||
snprintf(buf, 40, "100:0;");
|
||||
else
|
||||
snprintf(buf, 40, "200:1,16;");
|
||||
|
||||
return buf;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
char *sem_remove(char *data)
|
||||
void sem_remove_r(char *data, char *buf)
|
||||
{
|
||||
static char buf[40];
|
||||
char *cnt, *sem;
|
||||
|
||||
cnt = strtok(data, ",");
|
||||
sem = strtok(NULL, ";");
|
||||
buf[0] = '\0';
|
||||
snprintf(buf, 40, "200:1,16;");
|
||||
|
||||
if (sem_set(sem, FALSE))
|
||||
snprintf(buf, 40, "100:0;");
|
||||
else
|
||||
snprintf(buf, 40, "200:1,16;");
|
||||
|
||||
return buf;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
@ -8,21 +8,21 @@
|
||||
#define TOSSWAIT_TIME 30
|
||||
|
||||
|
||||
void status_init(void); /* Initialize status module */
|
||||
void stat_inc_clients(void); /* Increase connected clients */
|
||||
void stat_dec_clients(void); /* Decrease connected clients */
|
||||
void stat_set_open(int); /* Set BBS open status */
|
||||
void stat_inc_serr(void); /* Increase syntax error */
|
||||
void stat_inc_cerr(void); /* Increase comms error */
|
||||
char *stat_status(void); /* Return status record */
|
||||
int stat_bbs_stat(void); /* Get BBS open status */
|
||||
char *getseq(void); /* Get next sequence number */
|
||||
unsigned int gettoken(void); /* Get next sequence number */
|
||||
int get_zmh(void); /* Check Zone Mail Hour */
|
||||
int sem_set(char *, int); /* Set/Reset semafore */
|
||||
char *sem_status(char *); /* Get semafore status */
|
||||
char *sem_create(char *); /* Create semafore */
|
||||
char *sem_remove(char *); /* Remove semafore */
|
||||
void status_init(void); /* Initialize status module */
|
||||
void stat_inc_clients(void); /* Increase connected clients */
|
||||
void stat_dec_clients(void); /* Decrease connected clients */
|
||||
void stat_set_open(int); /* Set BBS open status */
|
||||
void stat_inc_serr(void); /* Increase syntax error */
|
||||
void stat_inc_cerr(void); /* Increase comms error */
|
||||
void stat_status_r(char *); /* Return status record */
|
||||
int stat_bbs_stat(void); /* Get BBS open status */
|
||||
void getseq_r(char *); /* Get next sequence number */
|
||||
unsigned int gettoken(void); /* Get next sequence number */
|
||||
int get_zmh(void); /* Check Zone Mail Hour */
|
||||
int sem_set(char *, int); /* Set/Reset semafore */
|
||||
void sem_status_r(char *, char *); /* Get semafore status */
|
||||
void sem_create_r(char *, char *); /* Create semafore */
|
||||
void sem_remove_r(char *, char *); /* Remove semafore */
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -404,12 +404,14 @@ int file_size(char *path)
|
||||
*/
|
||||
time_t file_time(char *path)
|
||||
{
|
||||
static struct stat sb;
|
||||
struct stat sb;
|
||||
time_t thetime;
|
||||
|
||||
if (stat(path, &sb) == -1)
|
||||
return -1;
|
||||
|
||||
return sb.st_mtime;
|
||||
thetime = sb.st_mtime;
|
||||
return thetime;
|
||||
}
|
||||
|
||||
|
||||
@ -419,8 +421,24 @@ time_t file_time(char *path)
|
||||
*/
|
||||
char *ascfnode(faddr *a, int fl)
|
||||
{
|
||||
static char buf[128];
|
||||
static char buf[64];
|
||||
|
||||
buf[0] = '\0';
|
||||
if ((fl & 0x08) && (a->zone))
|
||||
snprintf(buf+strlen(buf), 10, "%u:",a->zone);
|
||||
if (fl & 0x04)
|
||||
snprintf(buf+strlen(buf), 10, "%u/",a->net);
|
||||
if (fl & 0x02)
|
||||
snprintf(buf+strlen(buf), 10, "%u",a->node);
|
||||
if ((fl & 0x01) && (a->point))
|
||||
snprintf(buf+strlen(buf), 10, ".%u",a->point);
|
||||
if ((fl & 0x10) && (strlen(a->domain)))
|
||||
snprintf(buf+strlen(buf), 14, "@%s",a->domain);
|
||||
return buf;
|
||||
}
|
||||
|
||||
void ascfnode_r(faddr *a, int fl, char *buf)
|
||||
{
|
||||
buf[0] = '\0';
|
||||
if ((fl & 0x08) && (a->zone))
|
||||
snprintf(buf+strlen(buf), 10, "%u:",a->zone);
|
||||
@ -432,7 +450,7 @@ char *ascfnode(faddr *a, int fl)
|
||||
snprintf(buf+strlen(buf), 10, ".%u",a->point);
|
||||
if ((fl & 0x10) && (strlen(a->domain)))
|
||||
snprintf(buf+strlen(buf), 14, "@%s",a->domain);
|
||||
return buf;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@ -440,10 +458,8 @@ char *ascfnode(faddr *a, int fl)
|
||||
/*
|
||||
* Return ASCII string for node, the bits in 'fl' set the output format.
|
||||
*/
|
||||
char *fido2str(fidoaddr a, int fl)
|
||||
void fido2str_r(fidoaddr a, int fl, char *buf)
|
||||
{
|
||||
static char buf[128];
|
||||
|
||||
buf[0] = '\0';
|
||||
if ((fl & 0x08) && (a.zone))
|
||||
snprintf(buf+strlen(buf), 10, "%u:",a.zone);
|
||||
@ -455,39 +471,36 @@ char *fido2str(fidoaddr a, int fl)
|
||||
snprintf(buf+strlen(buf), 10, ".%u",a.point);
|
||||
if ((fl & 0x10) && (strlen(a.domain)))
|
||||
snprintf(buf+strlen(buf), 14, "@%s",a.domain);
|
||||
return buf;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
char *Dos2Unix(char *dosname)
|
||||
void Dos2Unix_r(char *dosname, char *buf2)
|
||||
{
|
||||
char buf[PATH_MAX];
|
||||
static char buf2[PATH_MAX];
|
||||
char *p, *q;
|
||||
char buf[PATH_MAX];
|
||||
char *p, *q;
|
||||
|
||||
memset(&buf, 0, sizeof(buf));
|
||||
memset(&buf2, 0, sizeof(buf2));
|
||||
snprintf(buf, PATH_MAX, "%s", dosname);
|
||||
p = buf;
|
||||
|
||||
if (strlen(CFG.dospath)) {
|
||||
if (strncasecmp(p, CFG.dospath, strlen(CFG.dospath)) == 0) {
|
||||
strcpy((char *)buf2, CFG.uxpath);
|
||||
for (p+=strlen(CFG.dospath), q = buf2 + strlen(buf2); *p; p++, q++)
|
||||
*q = ((*p) == '\\')?'/':tolower(*p);
|
||||
if (strncasecmp(p, CFG.dospath, strlen(CFG.dospath)) == 0) {
|
||||
strcpy((char *)buf2, CFG.uxpath);
|
||||
for (p+=strlen(CFG.dospath), q = buf2 + strlen(buf2); *p; p++, q++)
|
||||
*q = ((*p) == '\\')?'/':tolower(*p);
|
||||
*q = '\0';
|
||||
p = buf2;
|
||||
} else {
|
||||
if (strncasecmp(p, CFG.uxpath, strlen(CFG.uxpath)) == 0) {
|
||||
for (p+=strlen(CFG.uxpath), q = buf2 + strlen(buf2); *p; p++, q++)
|
||||
*q = ((*p) == '\\')?'/':tolower(*p);
|
||||
*q = '\0';
|
||||
p = buf2;
|
||||
}
|
||||
}
|
||||
p = buf2;
|
||||
} else {
|
||||
if (strncasecmp(p, CFG.uxpath, strlen(CFG.uxpath)) == 0) {
|
||||
for (p+=strlen(CFG.uxpath), q = buf2 + strlen(buf2); *p; p++, q++)
|
||||
*q = ((*p) == '\\')?'/':tolower(*p);
|
||||
*q = '\0';
|
||||
p = buf2;
|
||||
}
|
||||
}
|
||||
}
|
||||
return buf2;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@ -499,17 +512,11 @@ char *dayname(void)
|
||||
{
|
||||
time_t tt;
|
||||
struct tm ptm;
|
||||
static char buf[3];
|
||||
|
||||
tt = time(NULL);
|
||||
#if defined(__OpenBSD__)
|
||||
localtime_r(&tt, &ptm);
|
||||
#else
|
||||
ptm = *localtime(&tt);
|
||||
#endif
|
||||
snprintf(buf, 3, "%s", dow[ptm.tm_wday]);
|
||||
|
||||
return buf;
|
||||
return dow[ptm.tm_wday];
|
||||
}
|
||||
|
||||
|
||||
|
@ -35,8 +35,9 @@ int mkdirs(char *, mode_t);
|
||||
int file_size(char *);
|
||||
time_t file_time(char *);
|
||||
char *ascfnode(faddr *, int);
|
||||
char *fido2str(fidoaddr, int);
|
||||
char *Dos2Unix(char *);
|
||||
void ascfnode_r(faddr *, int, char *);
|
||||
void fido2str_r(fidoaddr, int, char *);
|
||||
void Dos2Unix_r(char *, char *);
|
||||
char *dayname(void);
|
||||
void InitFidonet(void);
|
||||
int SearchFidonet(unsigned short);
|
||||
|
Reference in New Issue
Block a user