From ea18e60e50908e52edebc74a0bf951143dfc45a9 Mon Sep 17 00:00:00 2001 From: Bob Zieman Date: Tue, 10 Sep 1991 11:31:44 +0000 Subject: [PATCH] changed getResources to accomodate EPICS_ parameter structure 10-10-91 --- src/db/iocInit.c | 59 ++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 49 insertions(+), 10 deletions(-) diff --git a/src/db/iocInit.c b/src/db/iocInit.c index 3085b5fe2..1c97c5294 100644 --- a/src/db/iocInit.c +++ b/src/db/iocInit.c @@ -31,6 +31,8 @@ * .02 08-06-91 mrk parm string length test changed to warning * with continue * .03 08-30-91 mrk completed .02 fix + * .04 10-10-91 rcz changed getResources to accomodate EPICS_ + * parameters in a structure (first try) */ #include @@ -498,6 +500,7 @@ static long getResources(fname) /* Resource Definition File interpreter */ int i = 0; int found = 0; int cvType = 0; + int epicsFlag; char buff[MAX + 1]; char name[40]; char s1[MAX]; @@ -562,8 +565,13 @@ static long getResources(fname) /* Resource Definition File interpreter */ errMessage(0L, message); return (-1); } + if ( (strncmp(s1,"EPICS_",6)) == SAME) + epicsFlag = 1; + else + epicsFlag = 0; + switch (cvType) { - case 0: /* DBF_STRING */ + case 0: /* DBF_STRING */ len = strlen(s3); len2 = 20; if (len >= len2) { @@ -572,43 +580,74 @@ static long getResources(fname) /* Resource Definition File interpreter */ lineNum); errMessage(-1L, message); } - strncpy(pSymAddr, s3, len + 1); + if ( epicsFlag ) + strncpy(pSymAddr+sizeof(caddr_t), s3, len + 1); + else + strncpy(pSymAddr, s3, len + 1); break; - case 1: /* DBF_SHORT */ + case 1: /* DBF_SHORT */ if ((sscanf(s3, "%hd", &n_short)) != 1) { sprintf(message, "getResources: conversion failed - line=%d", lineNum); errMessage(0L, message); return (-1); } - *(short *) pSymAddr = n_short; + if ( epicsFlag ) { + sprintf(message, + "getResources: EPICS_ type DBF_SHORT not supported - line=%d", + lineNum); + errMessage(-1L, message); + } + else + *(short *) pSymAddr = n_short; break; - case 2: /* DBF_LONG */ + case 2: /* DBF_LONG */ if ((sscanf(s3, "%ld", &n_long)) != 1) { sprintf(message, "getResources: conversion failed - line=%d", lineNum); errMessage(0L, message); return (-1); } - *(long *) pSymAddr = n_long; + if ( epicsFlag ) { + sprintf(message, + "getResources: EPICS_ type DBF_LONG not supported - line=%d", + lineNum); + errMessage(-1L, message); + } + else + *(long *) pSymAddr = n_long; break; - case 3: /* DBF_FLOAT */ + case 3: /* DBF_FLOAT */ if ((sscanf(s3, "%e", &n_float)) != 1) { sprintf(message, "getResources: conversion failed - line=%d", lineNum); errMessage(0L, message); return (-1); } - *(float *) pSymAddr = n_float; + if ( epicsFlag ) { + sprintf(message, + "getResources: EPICS_ type DBF_FLOAT not supported - line=%d", + lineNum); + errMessage(-1L, message); + } + else + *(float *) pSymAddr = n_float; break; - case 4: /* DBF_DOUBLE */ + case 4: /* DBF_DOUBLE */ if ((sscanf(s3, "%le", &n_double)) != 1) { sprintf(message, "getResources: conversion failed - line=%d", lineNum); errMessage(0L, message); return (-1); } - *(double *) pSymAddr = n_double; + if ( epicsFlag ) { + sprintf(message, + "getResources: EPICS_ type DBF_DOUBLE not supported - line=%d", + lineNum); + errMessage(-1L, message); + } + else + *(double *) pSymAddr = n_double; break; default: sprintf(message,