Skip to content
Snippets Groups Projects
Commit 8c0957ca authored by Rob Swindell's avatar Rob Swindell :speech_balloon:
Browse files

nodestatus() use the user record's curxtrn internal code rather than aux value

... to determine/print the current external progarm being run.

This fixes issue #716
parent eb353f57
No related branches found
No related tags found
No related merge requests found
Pipeline #5734 passed
......@@ -59,6 +59,7 @@ int getlibnum_from_name(scfg_t*, const char* name);
int getsubnum(scfg_t*, const char* code);
int getgrpnum(scfg_t*, const char* code);
int getgrpnum_from_name(scfg_t*, const char* name);
int getxtrnnum(scfg_t*, const char* code);
int getxtrnsec(scfg_t*, const char* code);
int getgurunum(scfg_t*, const char* code);
int getchatactset(scfg_t*, const char* name);
......@@ -69,6 +70,7 @@ DLLEXPORT bool is_valid_dirnum(scfg_t*, int);
DLLEXPORT bool is_valid_libnum(scfg_t*, int);
DLLEXPORT bool is_valid_subnum(scfg_t*, int);
DLLEXPORT bool is_valid_grpnum(scfg_t*, int);
DLLEXPORT bool is_valid_xtrnnum(scfg_t*, int);
DLLEXPORT bool is_valid_xtrnsec(scfg_t*, int);
DLLEXPORT char * trashcan_fname(scfg_t* cfg, const char *name, char* fname, size_t);
......
......@@ -761,6 +761,17 @@ int getlibnum_from_name(scfg_t* cfg, const char* name)
return i;
}
int getxtrnnum(scfg_t* cfg, const char* code)
{
int i;
for(i = 0; i < cfg->total_xtrns; i++) {
if(stricmp(cfg->xtrn[i]->code, code) == 0)
break;
}
return i;
}
int getxtrnsec(scfg_t* cfg, const char* code)
{
int i;
......@@ -838,6 +849,11 @@ bool is_valid_grpnum(scfg_t* cfg, int grpnum)
return (grpnum >= 0) && (cfg != NULL) && (grpnum < cfg->total_grps);
}
bool is_valid_xtrnnum(scfg_t* cfg, int xtrnnum)
{
return (xtrnnum >= 0) && (cfg != NULL) && (xtrnnum < cfg->total_xtrns);
}
bool is_valid_xtrnsec(scfg_t* cfg, int secnum)
{
return (secnum >= 0) && (cfg != NULL) && (secnum < cfg->total_xtrnsecs);
......
......@@ -1106,7 +1106,7 @@ int opennodeext(scfg_t* cfg)
}
/****************************************************************************/
/* Reads the data for node number 'number' into the structure 'node' */
/* Reads the data for 1-based node number 'number' into the node structure */
/* from node.dab */
/****************************************************************************/
int getnodedat(scfg_t* cfg, uint number, node_t *node, bool lockit, int* fdp)
......@@ -1157,6 +1157,7 @@ int getnodedat(scfg_t* cfg, uint number, node_t *node, bool lockit, int* fdp)
/****************************************************************************/
/* Write the data from the structure 'node' into node.dab */
/* number is the 1-based node number */
/****************************************************************************/
int putnodedat(scfg_t* cfg, uint number, node_t* node, bool closeit, int file)
{
......@@ -1395,6 +1396,8 @@ char* nodestatus(scfg_t* cfg, node_t* node, char* buf, size_t buflen, int num)
char tmp[128];
char* mer;
int hour;
int xtrnnum;
user_t user = {0};
if(node==NULL) {
strncpy(buf,"(null)",buflen);
......@@ -1467,13 +1470,18 @@ char* nodestatus(scfg_t* cfg, node_t* node, char* buf, size_t buflen, int num)
strcat(str,"posting auto-message");
break;
case NODE_XTRN:
if(!node->aux)
if(node->aux == 0) {
strcat(str,"at external program menu");
else if(node->aux<=cfg->total_xtrns)
sprintf(str+strlen(str),"running %s"
,cfg->xtrn[node->aux-1]->name);
else
sprintf(str+strlen(str),"running external program #%d"
break;
}
user.number = node->useron;
getuserdat(cfg, &user);
xtrnnum = getxtrnnum(cfg, user.curxtrn);
if(is_valid_xtrnnum(cfg, xtrnnum))
sprintf(str+strlen(str),"running %s"
,cfg->xtrn[xtrnnum]->name);
else
sprintf(str+strlen(str),"running external program #%d"
,node->aux);
break;
case NODE_DFLT:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment