asLib add asInitMem()

This commit is contained in:
Michael Davidsaver
2018-11-14 14:29:13 -08:00
parent d70bfed75b
commit bb19bd519e
2 changed files with 30 additions and 1 deletions

View File

@@ -66,6 +66,7 @@ epicsShareFunc long epicsShareAPI asInitialize(ASINPUTFUNCPTR inputfunction);
epicsShareFunc long epicsShareAPI asInitFile(
const char *filename,const char *substitutions);
epicsShareFunc long epicsShareAPI asInitFP(FILE *fp,const char *substitutions);
epicsShareFunc long epicsShareAPI asInitMem(const char *acf, const char *substitutions);
/*caller must provide permanent storage for asgName*/
epicsShareFunc long epicsShareAPI asAddMember(
ASMEMBERPVT *asMemberPvt,const char *asgName);

View File

@@ -250,7 +250,35 @@ long epicsShareAPI asInitFP(FILE *fp,const char *substitutions)
}
return(status);
}
static const char* membuf;
static int memInputFunction(char *buf, int max_size)
{
int ret = 0;
if(!membuf) return ret;
while(max_size && *membuf) {
*buf++ = *membuf++;
max_size--;
ret++;
}
return ret;
}
long epicsShareAPI asInitMem(const char *acf, const char *substitutions)
{
long ret = S_asLib_InitFailed;
if(!acf) return ret;
membuf = acf;
ret = asInitialize(&memInputFunction);
membuf = NULL;
return ret;
}
long epicsShareAPI asAddMember(ASMEMBERPVT *pasMemberPvt,const char *asgName)
{
long status;