@@ -469,6 +469,15 @@ int epicsShareAPI asDump(
void ( * memcallback ) ( struct asgMember * ) ,
void ( * clientcallback ) ( struct asgClient * ) ,
int verbose )
{
return asDumpFP ( stdout , memcallback , clientcallback , verbose ) ;
}
int epicsShareAPI asDumpFP (
FILE * fp ,
void ( * memcallback ) ( struct asgMember * ) ,
void ( * clientcallback ) ( struct asgClient * ) ,
int verbose )
{
UAG * puag ;
UAGNAME * puagname ;
@@ -484,151 +493,156 @@ int epicsShareAPI asDump(
if ( ! asActive ) return ( 0 ) ;
puag = ( UAG * ) ellFirst ( & pasbase - > uagList ) ;
if ( ! puag ) printf ( " No UAGs \n " ) ;
if ( ! puag ) f printf( fp , " No UAGs \n " ) ;
while ( puag ) {
printf ( " UAG(%s) " , puag - > name ) ;
f printf( fp , " UAG(%s) " , puag - > name ) ;
puagname = ( UAGNAME * ) ellFirst ( & puag - > list ) ;
if ( puagname ) printf ( " { " ) ; else printf ( " \n " ) ;
if ( puagname ) f printf( fp , " { " ) ; else f printf( fp , " \n " ) ;
while ( puagname ) {
printf ( " %s " , puagname - > user ) ;
f printf( fp , " %s " , puagname - > user ) ;
puagname = ( UAGNAME * ) ellNext ( ( ELLNODE * ) puagname ) ;
if ( puagname ) printf ( " , " ) ; else printf ( " } \n " ) ;
if ( puagname ) f printf( fp , " , " ) ; else f printf( fp , " } \n " ) ;
}
puag = ( UAG * ) ellNext ( ( ELLNODE * ) puag ) ;
}
phag = ( HAG * ) ellFirst ( & pasbase - > hagList ) ;
if ( ! phag ) printf ( " No HAGs \n " ) ;
if ( ! phag ) f printf( fp , " No HAGs \n " ) ;
while ( phag ) {
printf ( " HAG(%s) " , phag - > name ) ;
f printf( fp , " HAG(%s) " , phag - > name ) ;
phagname = ( HAGNAME * ) ellFirst ( & phag - > list ) ;
if ( phagname ) printf ( " { " ) ; else printf ( " \n " ) ;
if ( phagname ) f printf( fp , " { " ) ; else f printf( fp , " \n " ) ;
while ( phagname ) {
printf ( " %s " , phagname - > host ) ;
f printf( fp , " %s " , phagname - > host ) ;
phagname = ( HAGNAME * ) ellNext ( ( ELLNODE * ) phagname ) ;
if ( phagname ) printf ( " , " ) ; else printf ( " } \n " ) ;
if ( phagname ) f printf( fp , " , " ) ; else f printf( fp , " } \n " ) ;
}
phag = ( HAG * ) ellNext ( ( ELLNODE * ) phag ) ;
}
pasg = ( ASG * ) ellFirst ( & pasbase - > asgList ) ;
if ( ! pasg ) printf ( " No ASGs \n " ) ;
if ( ! pasg ) f printf( fp , " No ASGs \n " ) ;
while ( pasg ) {
int print_end_brace ;
printf ( " ASG(%s) " , pasg - > name ) ;
f printf( fp , " ASG(%s) " , pasg - > name ) ;
pasginp = ( ASGINP * ) ellFirst ( & pasg - > inpList ) ;
pasgrule = ( ASGRULE * ) ellFirst ( & pasg - > ruleList ) ;
if ( pasginp | | pasgrule ) {
printf ( " { \n " ) ;
f printf( fp , " { \n " ) ;
print_end_brace = TRUE ;
} else {
printf ( " \n " ) ;
f printf( fp , " \n " ) ;
print_end_brace = FALSE ;
}
while ( pasginp ) {
printf ( " \t INP%c(%s) " , ( pasginp - > inpIndex + ' A ' ) , pasginp - > inp ) ;
f printf( fp , " \t INP%c(%s) " , ( pasginp - > inpIndex + ' A ' ) , pasginp - > inp ) ;
if ( verbose ) {
if ( ( pasg - > inpBad & ( 1 < < pasginp - > inpIndex ) ) )
printf ( " INVALID " ) ;
f printf( fp , " INVALID " ) ;
else
printf ( " VALID " ) ;
printf ( " value=%f " , pasg - > pavalue [ pasginp - > inpIndex ] ) ;
f printf( fp , " VALID " ) ;
f printf( fp , " value=%f " , pasg - > pavalue [ pasginp - > inpIndex ] ) ;
}
printf ( " \n " ) ;
f printf( fp , " \n " ) ;
pasginp = ( ASGINP * ) ellNext ( ( ELLNODE * ) pasginp ) ;
}
while ( pasgrule ) {
int print_end_brace ;
printf ( " \t RULE(%d,%s,%s) " ,
f printf( fp , " \t RULE(%d,%s,%s) " ,
pasgrule - > level , asAccessName [ pasgrule - > access ] ,
asTrapOption [ pasgrule - > trapMask ] ) ;
pasguag = ( ASGUAG * ) ellFirst ( & pasgrule - > uagList ) ;
pasghag = ( ASGHAG * ) ellFirst ( & pasgrule - > hagList ) ;
if ( pasguag | | pasghag | | pasgrule - > calc ) {
printf ( " { \n " ) ;
f printf( fp , " { \n " ) ;
print_end_brace = TRUE ;
} else {
printf ( " \n " ) ;
f printf( fp , " \n " ) ;
print_end_brace = FALSE ;
}
if ( pasguag ) printf ( " \t \t UAG( " ) ;
if ( pasguag ) f printf( fp , " \t \t UAG( " ) ;
while ( pasguag ) {
printf ( " %s " , pasguag - > puag - > name ) ;
f printf( fp , " %s " , pasguag - > puag - > name ) ;
pasguag = ( ASGUAG * ) ellNext ( ( ELLNODE * ) pasguag ) ;
if ( pasguag ) printf ( " , " ) ; else printf ( " ) \n " ) ;
if ( pasguag ) f printf( fp , " , " ) ; else f printf( fp , " ) \n " ) ;
}
pasghag = ( ASGHAG * ) ellFirst ( & pasgrule - > hagList ) ;
if ( pasghag ) printf ( " \t \t HAG( " ) ;
if ( pasghag ) f printf( fp , " \t \t HAG( " ) ;
while ( pasghag ) {
printf ( " %s " , pasghag - > phag - > name ) ;
f printf( fp , " %s " , pasghag - > phag - > name ) ;
pasghag = ( ASGHAG * ) ellNext ( ( ELLNODE * ) pasghag ) ;
if ( pasghag ) printf ( " , " ) ; else printf ( " ) \n " ) ;
if ( pasghag ) f printf( fp , " , " ) ; else f printf( fp , " ) \n " ) ;
}
if ( pasgrule - > calc ) {
printf ( " \t \t CALC( \" %s \" ) " , pasgrule - > calc ) ;
f printf( fp , " \t \t CALC( \" %s \" ) " , pasgrule - > calc ) ;
if ( verbose )
printf ( " result=%s " , ( pasgrule - > result ? " TRUE " : " FALSE " ) ) ;
printf ( " \n " ) ;
f printf( fp , " result=%s " , ( pasgrule - > result ? " TRUE " : " FALSE " ) ) ;
f printf( fp , " \n " ) ;
}
if ( print_end_brace ) printf ( " \t } \n " ) ;
if ( print_end_brace ) f printf( fp , " \t } \n " ) ;
pasgrule = ( ASGRULE * ) ellNext ( ( ELLNODE * ) pasgrule ) ;
}
pasgmember = ( ASGMEMBER * ) ellFirst ( & pasg - > memberList ) ;
if ( ! verbose ) pasgmember = NULL ;
if ( pasgmember ) printf ( " \t MEMBERLIST \n " ) ;
if ( pasgmember ) f printf( fp , " \t MEMBERLIST \n " ) ;
while ( pasgmember ) {
if ( strlen ( pasgmember - > asgName ) = = 0 )
printf ( " \t \t <null> " ) ;
f printf( fp , " \t \t <null> " ) ;
else
printf ( " \t \t %s " , pasgmember - > asgName ) ;
f printf( fp , " \t \t %s " , pasgmember - > asgName ) ;
if ( memcallback ) memcallback ( pasgmember ) ;
printf ( " \n " ) ;
f printf( fp , " \n " ) ;
pasgclient = ( ASGCLIENT * ) ellFirst ( & pasgmember - > clientList ) ;
while ( pasgclient ) {
printf ( " \t \t \t %s %s " , pasgclient - > user , pasgclient - > host ) ;
f printf( fp , " \t \t \t %s %s " , pasgclient - > user , pasgclient - > host ) ;
if ( pasgclient - > level > = 0 & & pasgclient - > level < = 1 )
printf ( " %s " , asLevelName [ pasgclient - > level ] ) ;
f printf( fp , " %s " , asLevelName [ pasgclient - > level ] ) ;
else
printf ( " Illegal Level %d " , pasgclient - > level ) ;
f printf( fp , " Illegal Level %d " , pasgclient - > level ) ;
if ( pasgclient - > access > = 0 & & pasgclient - > access < = 2 )
printf ( " %s %s " ,
f printf( fp , " %s %s " ,
asAccessName [ pasgclient - > access ] ,
asTrapOption [ pasgclient - > trapMask ] ) ;
else
printf ( " Illegal Access %d " , pasgclient - > access ) ;
f printf( fp , " Illegal Access %d " , pasgclient - > access ) ;
if ( clientcallback ) clientcallback ( pasgclient ) ;
printf ( " \n " ) ;
f printf( fp , " \n " ) ;
pasgclient = ( ASGCLIENT * ) ellNext ( ( ELLNODE * ) pasgclient ) ;
}
pasgmember = ( ASGMEMBER * ) ellNext ( ( ELLNODE * ) pasgmember ) ;
}
if ( print_end_brace ) printf ( " } \n " ) ;
if ( print_end_brace ) f printf( fp , " } \n " ) ;
pasg = ( ASG * ) ellNext ( ( ELLNODE * ) pasg ) ;
}
return ( 0 ) ;
}
int epicsShareAPI asDumpUag ( char * uagname )
{
return asDumpUagFP ( stdout , uagname ) ;
}
int epicsShareAPI asDumpUagFP ( FILE * fp , char * uagname )
{
UAG * puag ;
UAGNAME * puagname ;
if ( ! asActive ) return ( 0 ) ;
puag = ( UAG * ) ellFirst ( & pasbase - > uagList ) ;
if ( ! puag ) printf ( " No UAGs \n " ) ;
if ( ! puag ) f printf( fp , " No UAGs \n " ) ;
while ( puag ) {
if ( uagname & & strcmp ( uagname , puag - > name ) ! = 0 ) {
puag = ( UAG * ) ellNext ( ( ELLNODE * ) puag ) ;
continue ;
}
printf ( " UAG(%s) " , puag - > name ) ;
f printf( fp , " UAG(%s) " , puag - > name ) ;
puagname = ( UAGNAME * ) ellFirst ( & puag - > list ) ;
if ( puagname ) printf ( " { " ) ; else printf ( " \n " ) ;
if ( puagname ) f printf( fp , " { " ) ; else f printf( fp , " \n " ) ;
while ( puagname ) {
printf ( " %s " , puagname - > user ) ;
f printf( fp , " %s " , puagname - > user ) ;
puagname = ( UAGNAME * ) ellNext ( ( ELLNODE * ) puagname ) ;
if ( puagname ) printf ( " , " ) ; else printf ( " } \n " ) ;
if ( puagname ) f printf( fp , " , " ) ; else f printf( fp , " } \n " ) ;
}
puag = ( UAG * ) ellNext ( ( ELLNODE * ) puag ) ;
}
@@ -636,25 +650,30 @@ int epicsShareAPI asDumpUag(char *uagname)
}
int epicsShareAPI asDumpHag ( char * hagname )
{
return asDumpHagFP ( stdout , hagname ) ;
}
int epicsShareAPI asDumpHagFP ( FILE * fp , char * hagname )
{
HAG * phag ;
HAGNAME * phagname ;
if ( ! asActive ) return ( 0 ) ;
phag = ( HAG * ) ellFirst ( & pasbase - > hagList ) ;
if ( ! phag ) printf ( " No HAGs \n " ) ;
if ( ! phag ) f printf( fp , " No HAGs \n " ) ;
while ( phag ) {
if ( hagname & & strcmp ( hagname , phag - > name ) ! = 0 ) {
phag = ( HAG * ) ellNext ( ( ELLNODE * ) phag ) ;
continue ;
}
printf ( " HAG(%s) " , phag - > name ) ;
f printf( fp , " HAG(%s) " , phag - > name ) ;
phagname = ( HAGNAME * ) ellFirst ( & phag - > list ) ;
if ( phagname ) printf ( " { " ) ; else printf ( " \n " ) ;
if ( phagname ) f printf( fp , " { " ) ; else f printf( fp , " \n " ) ;
while ( phagname ) {
printf ( " %s " , phagname - > host ) ;
f printf( fp , " %s " , phagname - > host ) ;
phagname = ( HAGNAME * ) ellNext ( ( ELLNODE * ) phagname ) ;
if ( phagname ) printf ( " , " ) ; else printf ( " } \n " ) ;
if ( phagname ) f printf( fp , " , " ) ; else f printf( fp , " } \n " ) ;
}
phag = ( HAG * ) ellNext ( ( ELLNODE * ) phag ) ;
}
@@ -662,6 +681,11 @@ int epicsShareAPI asDumpHag(char *hagname)
}
int epicsShareAPI asDumpRules ( char * asgname )
{
return asDumpRulesFP ( stdout , asgname ) ;
}
int epicsShareAPI asDumpRulesFP ( FILE * fp , char * asgname )
{
ASG * pasg ;
ASGINP * pasginp ;
@@ -671,7 +695,7 @@ int epicsShareAPI asDumpRules(char *asgname)
if ( ! asActive ) return ( 0 ) ;
pasg = ( ASG * ) ellFirst ( & pasbase - > asgList ) ;
if ( ! pasg ) printf ( " No ASGs \n " ) ;
if ( ! pasg ) f printf( fp , " No ASGs \n " ) ;
while ( pasg ) {
int print_end_brace ;
@@ -679,67 +703,74 @@ int epicsShareAPI asDumpRules(char *asgname)
pasg = ( ASG * ) ellNext ( ( ELLNODE * ) pasg ) ;
continue ;
}
printf ( " ASG(%s) " , pasg - > name ) ;
f printf( fp , " ASG(%s) " , pasg - > name ) ;
pasginp = ( ASGINP * ) ellFirst ( & pasg - > inpList ) ;
pasgrule = ( ASGRULE * ) ellFirst ( & pasg - > ruleList ) ;
if ( pasginp | | pasgrule ) {
printf ( " { \n " ) ;
f printf( fp , " { \n " ) ;
print_end_brace = TRUE ;
} else {
printf ( " \n " ) ;
f printf( fp , " \n " ) ;
print_end_brace = FALSE ;
}
while ( pasginp ) {
printf ( " \t INP%c(%s) " , ( pasginp - > inpIndex + ' A ' ) , pasginp - > inp ) ;
if ( ( pasg - > inpBad & ( 1 < < pasginp - > inpIndex ) ) ) printf ( " INVALID " ) ;
printf ( " value=%f " , pasg - > pavalue [ pasginp - > inpIndex ] ) ;
printf ( " \n " ) ;
f printf( fp , " \t INP%c(%s) " , ( pasginp - > inpIndex + ' A ' ) , pasginp - > inp ) ;
if ( ( pasg - > inpBad & ( 1 < < pasginp - > inpIndex ) ) ) f printf( fp , " INVALID " ) ;
f printf( fp , " value=%f " , pasg - > pavalue [ pasginp - > inpIndex ] ) ;
f printf( fp , " \n " ) ;
pasginp = ( ASGINP * ) ellNext ( ( ELLNODE * ) pasginp ) ;
}
while ( pasgrule ) {
int print_end_brace ;
printf ( " \t RULE(%d,%s,%s) " ,
f printf( fp , " \t RULE(%d,%s,%s) " ,
pasgrule - > level , asAccessName [ pasgrule - > access ] ,
asTrapOption [ pasgrule - > trapMask ] ) ;
pasguag = ( ASGUAG * ) ellFirst ( & pasgrule - > uagList ) ;
pasghag = ( ASGHAG * ) ellFirst ( & pasgrule - > hagList ) ;
if ( pasguag | | pasghag | | pasgrule - > calc ) {
printf ( " { \n " ) ;
f printf( fp , " { \n " ) ;
print_end_brace = TRUE ;
} else {
printf ( " \n " ) ;
f printf( fp , " \n " ) ;
print_end_brace = FALSE ;
}
if ( pasguag ) printf ( " \t \t UAG( " ) ;
if ( pasguag ) f printf( fp , " \t \t UAG( " ) ;
while ( pasguag ) {
printf ( " %s " , pasguag - > puag - > name ) ;
f printf( fp , " %s " , pasguag - > puag - > name ) ;
pasguag = ( ASGUAG * ) ellNext ( ( ELLNODE * ) pasguag ) ;
if ( pasguag ) printf ( " , " ) ; else printf ( " ) \n " ) ;
if ( pasguag ) f printf( fp , " , " ) ; else f printf( fp , " ) \n " ) ;
}
pasghag = ( ASGHAG * ) ellFirst ( & pasgrule - > hagList ) ;
if ( pasghag ) printf ( " \t \t HAG( " ) ;
if ( pasghag ) f printf( fp , " \t \t HAG( " ) ;
while ( pasghag ) {
printf ( " %s " , pasghag - > phag - > name ) ;
f printf( fp , " %s " , pasghag - > phag - > name ) ;
pasghag = ( ASGHAG * ) ellNext ( ( ELLNODE * ) pasghag ) ;
if ( pasghag ) printf ( " , " ) ; else printf ( " ) \n " ) ;
if ( pasghag ) f printf( fp , " , " ) ; else f printf( fp , " ) \n " ) ;
}
if ( pasgrule - > calc ) {
printf ( " \t \t CALC( \" %s \" ) " , pasgrule - > calc ) ;
printf ( " result=%s " , ( pasgrule - > result ? " TRUE " : " FALSE " ) ) ;
printf ( " \n " ) ;
f printf( fp , " \t \t CALC( \" %s \" ) " , pasgrule - > calc ) ;
f printf( fp , " result=%s " , ( pasgrule - > result ? " TRUE " : " FALSE " ) ) ;
f printf( fp , " \n " ) ;
}
if ( print_end_brace ) printf ( " \t } \n " ) ;
if ( print_end_brace ) f printf( fp , " \t } \n " ) ;
pasgrule = ( ASGRULE * ) ellNext ( ( ELLNODE * ) pasgrule ) ;
}
if ( print_end_brace ) printf ( " } \n " ) ;
if ( print_end_brace ) f printf( fp , " } \n " ) ;
pasg = ( ASG * ) ellNext ( ( ELLNODE * ) pasg ) ;
}
return ( 0 ) ;
}
int epicsShareAPI asDumpMem ( char * asgname , void ( * memcallback ) ( ASMEMBERPVT ) , int clients )
int epicsShareAPI asDumpMem ( char * asgname , void ( * memcallback ) ( ASMEMBERPVT ) ,
int clients )
{
return asDumpMemFP ( stdout , asgname , memcallback , clients ) ;
}
int epicsShareAPI asDumpMemFP ( FILE * fp , char * asgname ,
void ( * memcallback ) ( ASMEMBERPVT ) , int clients )
{
ASG * pasg ;
ASGMEMBER * pasgmember ;
@@ -747,39 +778,39 @@ int epicsShareAPI asDumpMem(char *asgname,void (*memcallback)(ASMEMBERPVT),int c
if ( ! asActive ) return ( 0 ) ;
pasg = ( ASG * ) ellFirst ( & pasbase - > asgList ) ;
if ( ! pasg ) printf ( " No ASGs \n " ) ;
if ( ! pasg ) f printf( fp , " No ASGs \n " ) ;
while ( pasg ) {
if ( asgname & & strcmp ( asgname , pasg - > name ) ! = 0 ) {
pasg = ( ASG * ) ellNext ( ( ELLNODE * ) pasg ) ;
continue ;
}
printf ( " ASG(%s) \n " , pasg - > name ) ;
f printf( fp , " ASG(%s) \n " , pasg - > name ) ;
pasgmember = ( ASGMEMBER * ) ellFirst ( & pasg - > memberList ) ;
if ( pasgmember ) printf ( " \t MEMBERLIST \n " ) ;
if ( pasgmember ) f printf( fp , " \t MEMBERLIST \n " ) ;
while ( pasgmember ) {
if ( strlen ( pasgmember - > asgName ) = = 0 )
printf ( " \t \t <null> " ) ;
f printf( fp , " \t \t <null> " ) ;
else
printf ( " \t \t %s " , pasgmember - > asgName ) ;
f printf( fp , " \t \t %s " , pasgmember - > asgName ) ;
if ( memcallback ) memcallback ( pasgmember ) ;
printf ( " \n " ) ;
f printf( fp , " \n " ) ;
pasgclient = ( ASGCLIENT * ) ellFirst ( & pasgmember - > clientList ) ;
if ( ! clients ) pasgclient = NULL ;
while ( pasgclient ) {
printf ( " \t \t \t %s %s " ,
f printf( fp , " \t \t \t %s %s " ,
pasgclient - > user , pasgclient - > host ) ;
if ( pasgclient - > level > = 0 & & pasgclient - > level < = 1 )
printf ( " %s " , asLevelName [ pasgclient - > level ] ) ;
f printf( fp , " %s " , asLevelName [ pasgclient - > level ] ) ;
else
printf ( " Illegal Level %d " , pasgclient - > level ) ;
f printf( fp , " Illegal Level %d " , pasgclient - > level ) ;
if ( pasgclient - > access > = 0 & & pasgclient - > access < = 2 )
printf ( " %s %s " ,
f printf( fp , " %s %s " ,
asAccessName [ pasgclient - > access ] ,
asTrapOption [ pasgclient - > trapMask ] ) ;
else
printf ( " Illegal Access %d " , pasgclient - > access ) ;
printf ( " \n " ) ;
f printf( fp , " Illegal Access %d " , pasgclient - > access ) ;
f printf( fp , " \n " ) ;
pasgclient = ( ASGCLIENT * ) ellNext ( ( ELLNODE * ) pasgclient ) ;
}
pasgmember = ( ASGMEMBER * ) ellNext ( ( ELLNODE * ) pasgmember ) ;
@@ -790,9 +821,14 @@ int epicsShareAPI asDumpMem(char *asgname,void (*memcallback)(ASMEMBERPVT),int c
}
epicsShareFunc int epicsShareAPI asDumpHash ( void )
{
return asDumpHashFP ( stdout ) ;
}
epicsShareFunc int epicsShareAPI asDumpHashFP ( FILE * fp )
{
if ( ! asActive ) return ( 0 ) ;
gphDump ( pasbase - > phash ) ;
gphDumpFP ( pasbase - > phash , fp );
return ( 0 ) ;
}