- Reworked the connection object and the IO system
- Reworked the support for TRICS - Added a second generation motor
This commit is contained in:
370
nxscript.c
370
nxscript.c
@@ -8,6 +8,7 @@
|
||||
|
||||
Mark Koennecke, February 2003
|
||||
Mark Koennecke, January 2004
|
||||
added putHdb and putHdbSlab, Mark Koennecke, December 2008
|
||||
------------------------------------------------------------------------*/
|
||||
#include <stdlib.h>
|
||||
#include <assert.h>
|
||||
@@ -30,6 +31,7 @@
|
||||
#include "nxdict.h"
|
||||
#include "nxscript.h"
|
||||
#include "sicsdata.h"
|
||||
#include "sicshipadaba.h"
|
||||
|
||||
extern char *trim(char *str);
|
||||
|
||||
@@ -96,7 +98,7 @@ char *makeFilename(SicsInterp *pSics, SConnection *pCon) {
|
||||
if(dir == NULL){
|
||||
mkdir(pRes,S_IRWXU | S_IRGRP | S_IXGRP);
|
||||
snprintf(pBueffel,255,"Creating dir: %s", pRes);
|
||||
SCWrite(pCon,pBueffel,eWarning);
|
||||
SCWrite(pCon,pBueffel,eLog);
|
||||
} else {
|
||||
closedir(dir);
|
||||
}
|
||||
@@ -126,6 +128,28 @@ void changeExtension(char *filename, char *newExtension){
|
||||
assert(strlen(pPtr) >= strlen(newExtension));
|
||||
strcpy(pPtr,newExtension);
|
||||
}
|
||||
/*----------------------------------------------------------------------*/
|
||||
static int listToArray(SicsInterp *pSics, char *list,
|
||||
int intar[NX_MAXRANK]){
|
||||
int argc, status, i, val;
|
||||
CONST char **argv;
|
||||
Tcl_Interp *pTcl = InterpGetTcl(pSics);
|
||||
|
||||
status = Tcl_SplitList(pTcl, list, &argc, &argv);
|
||||
if(status != TCL_OK){
|
||||
return status;
|
||||
}
|
||||
|
||||
for(i = 0; i < argc; i++){
|
||||
status = Tcl_GetInt(pTcl,argv[i],&val);
|
||||
if(status != TCL_OK){
|
||||
return status;
|
||||
}
|
||||
intar[i] = val;
|
||||
}
|
||||
Tcl_Free((char *)argv);
|
||||
return TCL_OK;
|
||||
}
|
||||
/*======================== Action =======================================*/
|
||||
static int handleFileOperations(SConnection *pCon, pNXScript self,
|
||||
int argc, char *argv[]){
|
||||
@@ -209,7 +233,7 @@ static void putMotor(SConnection *pCon, SicsInterp *pSics, pNXScript self,
|
||||
|
||||
if(argc < 4){
|
||||
SCWrite(pCon,"ERROR: insufficient number of arguments to putmotor",
|
||||
eError);
|
||||
eLogError);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -219,7 +243,7 @@ static void putMotor(SConnection *pCon, SicsInterp *pSics, pNXScript self,
|
||||
brumm = (pMotor)FindCommandData(pSics,argv[3],"Motor");
|
||||
if(!brumm){
|
||||
sprintf(buffer,"ERROR: motor %s not found!", argv[3]);
|
||||
SCWrite(pCon,buffer,eError);
|
||||
SCWrite(pCon,buffer,eLogError);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -229,14 +253,14 @@ static void putMotor(SConnection *pCon, SicsInterp *pSics, pNXScript self,
|
||||
status = MotorGetSoftPosition(brumm, pCon,&fVal);
|
||||
if(!status){
|
||||
sprintf(buffer,"ERROR: failed to read position of %s", argv[3]);
|
||||
SCWrite(pCon,buffer,eError);
|
||||
SCWrite(pCon,buffer,eLogError);
|
||||
return;
|
||||
}
|
||||
status = NXDputalias(self->fileHandle,self->dictHandle,argv[2],&fVal);
|
||||
if(status != NX_OK){
|
||||
sprintf(buffer,"ERROR: failed to write %s with alias %s",
|
||||
argv[3],argv[2]);
|
||||
SCWrite(pCon,buffer,eError);
|
||||
SCWrite(pCon,buffer,eLogError);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -251,7 +275,7 @@ static void putMotor(SConnection *pCon, SicsInterp *pSics, pNXScript self,
|
||||
if(status != NX_OK){
|
||||
sprintf(buffer,"ERROR: failed to write %s zero with alias %s",
|
||||
argv[3],argv[2]);
|
||||
SCWrite(pCon,buffer,eError);
|
||||
SCWrite(pCon,buffer,eLogError);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -268,7 +292,7 @@ static void putCounter(SConnection *pCon, SicsInterp *pSics, pNXScript self,
|
||||
|
||||
if(argc < 4){
|
||||
SCWrite(pCon,"ERROR: insufficient number of arguments to putcounter",
|
||||
eError);
|
||||
eLogError);
|
||||
return;
|
||||
}
|
||||
memset(dummy,0,80*sizeof(char));
|
||||
@@ -279,7 +303,7 @@ static void putCounter(SConnection *pCon, SicsInterp *pSics, pNXScript self,
|
||||
cter = (pCounter)FindCommandData(pSics,argv[3],"SingleCounter");
|
||||
if(!cter){
|
||||
sprintf(buffer,"ERROR: counter %s not found!", argv[3]);
|
||||
SCWrite(pCon,buffer,eError);
|
||||
SCWrite(pCon,buffer,eLogError);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -292,7 +316,7 @@ static void putCounter(SConnection *pCon, SicsInterp *pSics, pNXScript self,
|
||||
status = NXDputalias(self->fileHandle,self->dictHandle,newAlias,&fVal);
|
||||
if(status != NX_OK){
|
||||
sprintf(buffer,"ERROR: failed to write preset to %s", newAlias);
|
||||
SCWrite(pCon,buffer,eError);
|
||||
SCWrite(pCon,buffer,eLogError);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -309,7 +333,7 @@ static void putCounter(SConnection *pCon, SicsInterp *pSics, pNXScript self,
|
||||
status = NXDputalias(self->fileHandle,self->dictHandle,newAlias,dummy);
|
||||
if(status != NX_OK){
|
||||
sprintf(buffer,"ERROR: failed to write counter mode to %s", newAlias);
|
||||
SCWrite(pCon,buffer,eError);
|
||||
SCWrite(pCon,buffer,eLogError);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -322,7 +346,7 @@ static void putCounter(SConnection *pCon, SicsInterp *pSics, pNXScript self,
|
||||
status = NXDputalias(self->fileHandle,self->dictHandle,newAlias,&fVal);
|
||||
if(status != NX_OK){
|
||||
sprintf(buffer,"ERROR: failed to write count time to %s", newAlias);
|
||||
SCWrite(pCon,buffer,eError);
|
||||
SCWrite(pCon,buffer,eLogError);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -352,7 +376,7 @@ static void putSicsData(SConnection *pCon, SicsInterp *pSics,
|
||||
|
||||
if(argc < 4){
|
||||
SCWrite(pCon,"ERROR: insufficient number of arguments to putSicsData",
|
||||
eError);
|
||||
eLogError);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -362,14 +386,14 @@ static void putSicsData(SConnection *pCon, SicsInterp *pSics,
|
||||
data = (pSICSData)FindCommandData(pSics,argv[3],"SICSData");
|
||||
if(data == NULL){
|
||||
snprintf(buffer,255,"ERROR: sicsdata %s not found!", argv[3]);
|
||||
SCWrite(pCon,buffer,eError);
|
||||
SCWrite(pCon,buffer,eLogError);
|
||||
return;
|
||||
}
|
||||
|
||||
status = NXDputalias(self->fileHandle,self->dictHandle,argv[2],data->data);
|
||||
if(status != NX_OK){
|
||||
sprintf(buffer,"ERROR: failed to write sicsdata to %s", argv[2]);
|
||||
SCWrite(pCon,buffer,eError);
|
||||
SCWrite(pCon,buffer,eLogError);
|
||||
}
|
||||
}
|
||||
/*----------------------------------------------------------------------*/
|
||||
@@ -380,25 +404,177 @@ static void putAttribute(SConnection *pCon, SicsInterp *pSics,
|
||||
|
||||
if(argc < 5){
|
||||
SCWrite(pCon,"ERROR: insufficient number of arguments to putAttribute",
|
||||
eError);
|
||||
eLogError);
|
||||
return;
|
||||
}
|
||||
|
||||
status = NXDopenalias(self->fileHandle,self->dictHandle,argv[2]);
|
||||
if(status != NX_OK){
|
||||
sprintf(buffer,"ERROR: failed to open alias %s", argv[2]);
|
||||
SCWrite(pCon,buffer,eError);
|
||||
SCWrite(pCon,buffer,eLogError);
|
||||
return;
|
||||
}
|
||||
status = NXputattr(self->fileHandle,argv[3],(void *)argv[4],
|
||||
strlen(argv[4])+1, type);
|
||||
if(status != NX_OK){
|
||||
sprintf(buffer,"ERROR: failed to write attribute %s", argv[3]);
|
||||
SCWrite(pCon,buffer,eError);
|
||||
SCWrite(pCon,buffer,eLogError);
|
||||
}
|
||||
NXopenpath(self->fileHandle,"/");
|
||||
}
|
||||
/*----------------------------------------------------------------------*/
|
||||
static void putHdb(SConnection *pCon, SicsInterp *pSics, pNXScript self,
|
||||
int argc, char *argv[]){
|
||||
pHdb node = NULL;
|
||||
char alias[512];
|
||||
hdbValue v;
|
||||
float fVal, *floatAr = NULL;
|
||||
int i;
|
||||
|
||||
if(argc < 3){
|
||||
SCWrite(pCon,"ERROR: putHdb needs at least node name",
|
||||
eLogError);
|
||||
return;
|
||||
}
|
||||
node = FindHdbNode(NULL,argv[2], pCon);
|
||||
if(node == NULL){
|
||||
SCPrintf(pCon,eLogError,"ERROR: node %s not found", argv[2]);
|
||||
return;
|
||||
}
|
||||
memset(alias,0,512*sizeof(char));
|
||||
if(!GetHdbProperty(node,"nxalias", alias, 512)){
|
||||
if(argc < 4) {
|
||||
SCPrintf(pCon,eLogError,"ERROR: neither nxalias property nor alias on command line found for %s",
|
||||
argv[2]);
|
||||
return;
|
||||
} else {
|
||||
strncpy(alias, argv[3],512);
|
||||
}
|
||||
}
|
||||
GetHipadabaPar(node,&v,pCon);
|
||||
switch(v.dataType){
|
||||
case HIPNONE:
|
||||
return;
|
||||
break;
|
||||
case HIPINT:
|
||||
NXDputalias(self->fileHandle, self->dictHandle, alias,
|
||||
&v.v.intValue);
|
||||
break;
|
||||
case HIPFLOAT:
|
||||
fVal = v.v.doubleValue;
|
||||
NXDputalias(self->fileHandle, self->dictHandle, alias,
|
||||
&fVal);
|
||||
break;
|
||||
case HIPTEXT:
|
||||
NXDputalias(self->fileHandle, self->dictHandle, alias,
|
||||
v.v.text);
|
||||
break;
|
||||
case HIPINTAR:
|
||||
case HIPINTVARAR:
|
||||
NXDputalias(self->fileHandle, self->dictHandle, alias,
|
||||
v.v.intArray);
|
||||
break;
|
||||
case HIPFLOATAR:
|
||||
case HIPFLOATVARAR:
|
||||
floatAr = malloc(v.arrayLength*sizeof(float));
|
||||
if(floatAr == NULL){
|
||||
SCPrintf(pCon,eLogError,"ERROR: out of memory writing %s", node->name);
|
||||
return;
|
||||
}
|
||||
for(i = 0; i < v.arrayLength; i++){
|
||||
floatAr[i] = v.v.floatArray[i];
|
||||
}
|
||||
NXDputalias(self->fileHandle, self->dictHandle, alias,
|
||||
floatAr);
|
||||
free(floatAr);
|
||||
break;
|
||||
}
|
||||
ReleaseHdbValue(&v);
|
||||
}
|
||||
/*----------------------------------------------------------------------*/
|
||||
static void putHdbSlab(SConnection *pCon, SicsInterp *pSics, pNXScript self,
|
||||
int argc, char *argv[]){
|
||||
pHdb node = NULL;
|
||||
char alias[512];
|
||||
hdbValue v;
|
||||
float fVal, *floatAr = NULL;
|
||||
int start[NX_MAXRANK], size[NX_MAXRANK];
|
||||
int i, status;
|
||||
|
||||
if(argc < 5){
|
||||
SCWrite(pCon,"ERROR: putHdbSlab needs at least node name start, size",
|
||||
eLogError);
|
||||
return;
|
||||
}
|
||||
node = FindHdbNode(NULL,argv[2], pCon);
|
||||
if(node == NULL){
|
||||
SCPrintf(pCon,eLogError,"ERROR: node %s not found", argv[2]);
|
||||
return;
|
||||
}
|
||||
memset(alias,0,512*sizeof(char));
|
||||
if(!GetHdbProperty(node,"nxalias", alias, 512)){
|
||||
SCPrintf(pCon,eLogError,
|
||||
"ERROR: nxalias property not found for %s",
|
||||
argv[2]);
|
||||
return;
|
||||
}
|
||||
status = NXDopenalias(self->fileHandle, self->dictHandle,alias);
|
||||
if(status != NX_OK){
|
||||
SCPrintf(pCon,eLogError,"ERROR: failed to open alias for %s", argv[2]);
|
||||
return;
|
||||
}
|
||||
|
||||
status = listToArray(pSics,argv[3],start);
|
||||
if(status != TCL_OK){
|
||||
SCWrite(pCon,"ERROR: failed to convert start value list", eLogError);
|
||||
return;
|
||||
}
|
||||
|
||||
status = listToArray(pSics,argv[4],size);
|
||||
if(status != TCL_OK){
|
||||
SCWrite(pCon,"ERROR: failed to convert size value list", eLogError);
|
||||
return;
|
||||
}
|
||||
|
||||
GetHipadabaPar(node,&v,pCon);
|
||||
switch(v.dataType){
|
||||
case HIPNONE:
|
||||
return;
|
||||
break;
|
||||
case HIPINT:
|
||||
status = NXputslab(self->fileHandle, &v.v.intValue, start,size);
|
||||
break;
|
||||
case HIPFLOAT:
|
||||
fVal = v.v.doubleValue;
|
||||
status = NXputslab(self->fileHandle, &fVal, start,size);
|
||||
break;
|
||||
case HIPTEXT:
|
||||
status = NXputslab(self->fileHandle, v.v.text, start,size);
|
||||
break;
|
||||
case HIPINTAR:
|
||||
case HIPINTVARAR:
|
||||
status = NXputslab(self->fileHandle, v.v.intArray, start,size);
|
||||
break;
|
||||
case HIPFLOATAR:
|
||||
case HIPFLOATVARAR:
|
||||
floatAr = malloc(v.arrayLength*sizeof(float));
|
||||
if(floatAr == NULL){
|
||||
SCPrintf(pCon,eLogError,"ERROR: out of memory writing %s", node->name);
|
||||
return;
|
||||
}
|
||||
for(i = 0; i < v.arrayLength; i++){
|
||||
floatAr[i] = v.v.floatArray[i];
|
||||
}
|
||||
status = NXputslab(self->fileHandle, floatAr, start,size);
|
||||
free(floatAr);
|
||||
break;
|
||||
}
|
||||
if(status != NX_OK){
|
||||
SCPrintf(pCon,eLogError,"ERROR: failed to write slab for node %s", argv[2]);
|
||||
}
|
||||
ReleaseHdbValue(&v);
|
||||
}
|
||||
/*----------------------------------------------------------------------*/
|
||||
static void updateHMDim(NXScript *self, pHistMem mem){
|
||||
int iDim[MAXDIM];
|
||||
int i, rank, timeLength, status;
|
||||
@@ -444,7 +620,7 @@ static void putHistogramMemory(SConnection *pCon, SicsInterp *pSics,
|
||||
|
||||
if(argc < 4){
|
||||
SCWrite(pCon,"ERROR: insufficient number of arguments to puthm",
|
||||
eError);
|
||||
eLogError);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -454,7 +630,7 @@ static void putHistogramMemory(SConnection *pCon, SicsInterp *pSics,
|
||||
mem = (pHistMem)FindCommandData(pSics,argv[3],"HistMem");
|
||||
if(!mem){
|
||||
sprintf(buffer,"ERROR: HistMem %s not found!", argv[3]);
|
||||
SCWrite(pCon,buffer,eError);
|
||||
SCWrite(pCon,buffer,eLogError);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -475,14 +651,14 @@ static void putHistogramMemory(SConnection *pCon, SicsInterp *pSics,
|
||||
if(status != TCL_OK){
|
||||
sprintf(buffer,"ERROR: failed to convert %s to integer",
|
||||
argv[4]);
|
||||
SCWrite(pCon,buffer,eError);
|
||||
SCWrite(pCon,buffer,eLogError);
|
||||
return;
|
||||
}
|
||||
status = Tcl_GetInt(InterpGetTcl(pSics),argv[5],&length);
|
||||
if(status != TCL_OK){
|
||||
sprintf(buffer,"ERROR: failed to convert %s to integer",
|
||||
argv[5]);
|
||||
SCWrite(pCon,buffer,eError);
|
||||
SCWrite(pCon,buffer,eLogError);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -495,7 +671,7 @@ static void putHistogramMemory(SConnection *pCon, SicsInterp *pSics,
|
||||
if(status != TCL_OK){
|
||||
sprintf(buffer,"ERROR: failed to convert %s to integer",
|
||||
argv[6]);
|
||||
SCWrite(pCon,buffer,eError);
|
||||
SCWrite(pCon,buffer,eLogError);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -507,7 +683,7 @@ static void putHistogramMemory(SConnection *pCon, SicsInterp *pSics,
|
||||
iData = (HistInt *)malloc(length*sizeof(HistInt));
|
||||
if(!iData){
|
||||
SCWrite(pCon,"ERROR: out of memory for reading histogram memory",
|
||||
eError);
|
||||
eLogError);
|
||||
return;
|
||||
}
|
||||
memset(iData,0,length*sizeof(HistInt));
|
||||
@@ -526,7 +702,7 @@ static void putHistogramMemory(SConnection *pCon, SicsInterp *pSics,
|
||||
}
|
||||
}
|
||||
if(!status){
|
||||
SCWrite(pCon,"ERROR: failed to read histogram memory",eError);
|
||||
SCWrite(pCon,"ERROR: failed to read histogram memory",eLogError);
|
||||
if(subset){
|
||||
free(iData);
|
||||
}
|
||||
@@ -539,7 +715,7 @@ static void putHistogramMemory(SConnection *pCon, SicsInterp *pSics,
|
||||
status = NXDputalias(self->fileHandle, self->dictHandle,argv[2],iData);
|
||||
if(status != NX_OK){
|
||||
sprintf(buffer,"ERROR: failed to write histogram memory data");
|
||||
SCWrite(pCon,buffer,eError);
|
||||
SCWrite(pCon,buffer,eLogError);
|
||||
}
|
||||
|
||||
if(subset){
|
||||
@@ -563,7 +739,7 @@ static void putHistogramMemoryChunked(SConnection *pCon, SicsInterp *pSics,
|
||||
|
||||
if(argc < 5){
|
||||
SCWrite(pCon,"ERROR: insufficient number of arguments to puthmchunked",
|
||||
eError);
|
||||
eLogError);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -573,7 +749,7 @@ static void putHistogramMemoryChunked(SConnection *pCon, SicsInterp *pSics,
|
||||
mem = (pHistMem)FindCommandData(pSics,argv[3],"HistMem");
|
||||
if(!mem){
|
||||
sprintf(buffer,"ERROR: HistMem %s not found!", argv[3]);
|
||||
SCWrite(pCon,buffer,eError);
|
||||
SCWrite(pCon,buffer,eLogError);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -592,7 +768,7 @@ static void putHistogramMemoryChunked(SConnection *pCon, SicsInterp *pSics,
|
||||
if(status != TCL_OK){
|
||||
sprintf(buffer,"ERROR: failed to convert %s to integer",
|
||||
argv[4]);
|
||||
SCWrite(pCon,buffer,eError);
|
||||
SCWrite(pCon,buffer,eLogError);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -603,7 +779,7 @@ static void putHistogramMemoryChunked(SConnection *pCon, SicsInterp *pSics,
|
||||
iData = (HistInt *)malloc(length*sizeof(HistInt));
|
||||
if(!iData){
|
||||
SCWrite(pCon,"ERROR: out of memory for reading histogram memory",
|
||||
eError);
|
||||
eLogError);
|
||||
return;
|
||||
}
|
||||
memset(iData,0,length*sizeof(HistInt));
|
||||
@@ -622,7 +798,7 @@ static void putHistogramMemoryChunked(SConnection *pCon, SicsInterp *pSics,
|
||||
}
|
||||
}
|
||||
if(!status){
|
||||
SCWrite(pCon,"ERROR: failed to read histogram memory",eError);
|
||||
SCWrite(pCon,"ERROR: failed to read histogram memory",eLogError);
|
||||
if(subset){
|
||||
free(iData);
|
||||
}
|
||||
@@ -635,7 +811,7 @@ static void putHistogramMemoryChunked(SConnection *pCon, SicsInterp *pSics,
|
||||
status = NXDputalias(self->fileHandle, self->dictHandle,argv[2],iData);
|
||||
if(status != NX_OK){
|
||||
sprintf(buffer,"ERROR: failed to write histogram memory data");
|
||||
SCWrite(pCon,buffer,eError);
|
||||
SCWrite(pCon,buffer,eLogError);
|
||||
}
|
||||
|
||||
if(subset){
|
||||
@@ -646,28 +822,6 @@ static void putHistogramMemoryChunked(SConnection *pCon, SicsInterp *pSics,
|
||||
return;
|
||||
}
|
||||
/*----------------------------------------------------------------------*/
|
||||
static int listToArray(SicsInterp *pSics, char *list,
|
||||
int intar[NX_MAXRANK]){
|
||||
int argc, status, i, val;
|
||||
CONST char **argv;
|
||||
Tcl_Interp *pTcl = InterpGetTcl(pSics);
|
||||
|
||||
status = Tcl_SplitList(pTcl, list, &argc, &argv);
|
||||
if(status != TCL_OK){
|
||||
return status;
|
||||
}
|
||||
|
||||
for(i = 0; i < argc; i++){
|
||||
status = Tcl_GetInt(pTcl,argv[i],&val);
|
||||
if(status != TCL_OK){
|
||||
return status;
|
||||
}
|
||||
intar[i] = val;
|
||||
}
|
||||
Tcl_Free((char *)argv);
|
||||
return TCL_OK;
|
||||
}
|
||||
/*----------------------------------------------------------------------*/
|
||||
static void putSlab(SConnection *pCon, SicsInterp *pSics, pNXScript self,
|
||||
int argc, char *argv[]){
|
||||
int start[NX_MAXRANK], size[NX_MAXRANK];
|
||||
@@ -678,25 +832,25 @@ static void putSlab(SConnection *pCon, SicsInterp *pSics, pNXScript self,
|
||||
|
||||
if(argc < 6){
|
||||
SCWrite(pCon,"ERROR: insufficient number of arguments to putslab",
|
||||
eError);
|
||||
eLogError);
|
||||
return;
|
||||
}
|
||||
|
||||
status = NXDopenalias(self->fileHandle, self->dictHandle,argv[2]);
|
||||
if(status != NX_OK){
|
||||
SCPrintf(pCon,eError,"ERROR: failed to open alias %s", argv[2]);
|
||||
SCPrintf(pCon,eLogError,"ERROR: failed to open alias %s", argv[2]);
|
||||
return;
|
||||
}
|
||||
|
||||
status = listToArray(pSics,argv[3],start);
|
||||
if(status != TCL_OK){
|
||||
SCWrite(pCon,"ERROR: failed to convert start value list", eError);
|
||||
SCWrite(pCon,"ERROR: failed to convert start value list", eLogError);
|
||||
return;
|
||||
}
|
||||
|
||||
status = listToArray(pSics,argv[4],size);
|
||||
if(status != TCL_OK){
|
||||
SCWrite(pCon,"ERROR: failed to convert size value list", eError);
|
||||
SCWrite(pCon,"ERROR: failed to convert size value list", eLogError);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -731,7 +885,7 @@ static void putSlab(SConnection *pCon, SicsInterp *pSics, pNXScript self,
|
||||
|
||||
if(written == 0){
|
||||
SCWrite(pCon,"ERROR: failed to write data, data not recognised",
|
||||
eError);
|
||||
eLogError);
|
||||
}
|
||||
}
|
||||
/*-------------------------------------------------------------------*/
|
||||
@@ -746,7 +900,7 @@ static void putTimeBinning(SConnection *pCon, SicsInterp *pSics,
|
||||
|
||||
if(argc < 4){
|
||||
SCWrite(pCon,"ERROR: insufficient number of arguments to puttimebinning",
|
||||
eError);
|
||||
eLogError);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -756,7 +910,7 @@ static void putTimeBinning(SConnection *pCon, SicsInterp *pSics,
|
||||
mem = (pHistMem)FindCommandData(pSics,argv[3],"HistMem");
|
||||
if(!mem){
|
||||
sprintf(buffer,"ERROR: HistMem %s not found!", argv[3]);
|
||||
SCWrite(pCon,buffer,eError);
|
||||
SCWrite(pCon,buffer,eLogError);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -768,7 +922,7 @@ static void putTimeBinning(SConnection *pCon, SicsInterp *pSics,
|
||||
if(!status){
|
||||
sprintf(buffer,"ERROR: alias %s for time binning not found",
|
||||
argv[2]);
|
||||
SCWrite(pCon,buffer,eError);
|
||||
SCWrite(pCon,buffer,eLogError);
|
||||
return;
|
||||
}
|
||||
timeBin = GetHistTimeBin(mem,&timeLength);
|
||||
@@ -780,7 +934,7 @@ static void putTimeBinning(SConnection *pCon, SicsInterp *pSics,
|
||||
if(self->timeDivisor != 1){
|
||||
timeCopy = (float *)malloc(timeLength*sizeof(float));
|
||||
if(timeCopy == NULL){
|
||||
SCWrite(pCon,"ERROR: out of memory writing time binning",eError);
|
||||
SCWrite(pCon,"ERROR: out of memory writing time binning",eLogError);
|
||||
return;
|
||||
}
|
||||
for(i = 0; i < timeLength; i++){
|
||||
@@ -796,7 +950,7 @@ static void putTimeBinning(SConnection *pCon, SicsInterp *pSics,
|
||||
|
||||
if(status != NX_OK){
|
||||
sprintf(buffer,"ERROR: failed to write time binning");
|
||||
SCWrite(pCon,buffer,eError);
|
||||
SCWrite(pCon,buffer,eLogError);
|
||||
}
|
||||
SCSendOK(pCon);
|
||||
return;
|
||||
@@ -814,7 +968,7 @@ static void putArray(SConnection *pCon, SicsInterp *pSics,
|
||||
|
||||
if(argc < 5){
|
||||
SCWrite(pCon,"ERROR: insufficient number of arguments to array",
|
||||
eError);
|
||||
eLogError);
|
||||
return;
|
||||
}
|
||||
tcl = InterpGetTcl(pSics);
|
||||
@@ -825,8 +979,8 @@ static void putArray(SConnection *pCon, SicsInterp *pSics,
|
||||
*/
|
||||
status = Tcl_GetInt(tcl,argv[4],&length);
|
||||
if(status != TCL_OK){
|
||||
sprintf(buffer,"ERROR: failed to convert %s to integer",argv[4]);
|
||||
SCWrite(pCon,buffer,eError);
|
||||
sprintf(buffer,"ERROR: failed to convert %s to integer in putarray",argv[4]);
|
||||
SCWrite(pCon,buffer,eLogError);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -838,9 +992,9 @@ static void putArray(SConnection *pCon, SicsInterp *pSics,
|
||||
}
|
||||
if(data == NULL){
|
||||
snprintf(buffer,255,
|
||||
"ERROR: out of memory or invalid length at %s, length = %s",
|
||||
"ERROR: out of memory or invalid length in putarray at %s, length = %s",
|
||||
argv[2],argv[4]);
|
||||
SCWrite(pCon,buffer,eError);
|
||||
SCWrite(pCon,buffer,eLogError);
|
||||
return;
|
||||
}
|
||||
memset(data,0,length*sizeof(float));
|
||||
@@ -854,14 +1008,14 @@ static void putArray(SConnection *pCon, SicsInterp *pSics,
|
||||
if(varData != NULL){
|
||||
status = Tcl_GetDouble(tcl,varData,&dVal);
|
||||
if(status != TCL_OK){
|
||||
sprintf(buffer,"ERROR: failed to convert %s to double",
|
||||
sprintf(buffer,"ERROR: failed to convert %s to double in putarray",
|
||||
varData);
|
||||
SCWrite(pCon,buffer,eError);
|
||||
SCWrite(pCon,buffer,eLogError);
|
||||
}
|
||||
data[i] = (float)dVal;
|
||||
} else {
|
||||
snprintf(buffer,254,"WARNING: failed to find array element %d", i);
|
||||
SCWrite(pCon,buffer,eError);
|
||||
snprintf(buffer,254,"WARNING: failed to find array element %d in putarray", i);
|
||||
SCWrite(pCon,buffer,eLogError);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -870,9 +1024,9 @@ static void putArray(SConnection *pCon, SicsInterp *pSics,
|
||||
*/
|
||||
status = NXDdefget(self->dictHandle,argv[2],buffer,254);
|
||||
if(!status){
|
||||
sprintf(buffer,"ERROR: alias %s for array not found",
|
||||
sprintf(buffer,"ERROR: alias %s for array not found in putarray",
|
||||
argv[2]);
|
||||
SCWrite(pCon,buffer,eError);
|
||||
SCWrite(pCon,buffer,eLogError);
|
||||
free(data);
|
||||
return;
|
||||
}
|
||||
@@ -883,8 +1037,8 @@ static void putArray(SConnection *pCon, SicsInterp *pSics,
|
||||
*/
|
||||
status = NXDputdef(self->fileHandle,self->dictHandle,defString,data);
|
||||
if(status != NX_OK){
|
||||
sprintf(buffer,"ERROR: failed to write array");
|
||||
SCWrite(pCon,buffer,eError);
|
||||
sprintf(buffer,"ERROR: failed to write array in putarray");
|
||||
SCWrite(pCon,buffer,eLogError);
|
||||
}
|
||||
free(data);
|
||||
SCSendOK(pCon);
|
||||
@@ -902,7 +1056,7 @@ static void putIntArray(SConnection *pCon, SicsInterp *pSics,
|
||||
|
||||
if(argc < 5){
|
||||
SCWrite(pCon,"ERROR: insufficient number of arguments to array",
|
||||
eError);
|
||||
eLogError);
|
||||
return;
|
||||
}
|
||||
tcl = InterpGetTcl(pSics);
|
||||
@@ -914,7 +1068,7 @@ static void putIntArray(SConnection *pCon, SicsInterp *pSics,
|
||||
status = Tcl_GetInt(tcl,argv[4],&length);
|
||||
if(status != TCL_OK){
|
||||
sprintf(buffer,"ERROR: failed to convert %s to integer",argv[4]);
|
||||
SCWrite(pCon,buffer,eError);
|
||||
SCWrite(pCon,buffer,eLogError);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -925,7 +1079,7 @@ static void putIntArray(SConnection *pCon, SicsInterp *pSics,
|
||||
data = (int *)malloc(length*sizeof(int));
|
||||
}
|
||||
if(data == NULL){
|
||||
SCWrite(pCon,"ERROR: out of memory or invalid length",eError);
|
||||
SCWrite(pCon,"ERROR: out of memory or invalid length",eLogError);
|
||||
return;
|
||||
}
|
||||
memset(data,0,length*sizeof(int));
|
||||
@@ -941,12 +1095,12 @@ static void putIntArray(SConnection *pCon, SicsInterp *pSics,
|
||||
if(status != TCL_OK){
|
||||
sprintf(buffer,"ERROR: failed to convert %s to int",
|
||||
varData);
|
||||
SCWrite(pCon,buffer,eError);
|
||||
SCWrite(pCon,buffer,eLogError);
|
||||
}
|
||||
data[i] = iVal;
|
||||
} else {
|
||||
snprintf(buffer,254,"WARNING: failed to find array element %d", i);
|
||||
SCWrite(pCon,buffer,eError);
|
||||
SCWrite(pCon,buffer,eLogError);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -957,7 +1111,7 @@ static void putIntArray(SConnection *pCon, SicsInterp *pSics,
|
||||
if(!status){
|
||||
sprintf(buffer,"ERROR: alias %s for array not found",
|
||||
argv[2]);
|
||||
SCWrite(pCon,buffer,eError);
|
||||
SCWrite(pCon,buffer,eLogError);
|
||||
free(data);
|
||||
return;
|
||||
}
|
||||
@@ -969,7 +1123,7 @@ static void putIntArray(SConnection *pCon, SicsInterp *pSics,
|
||||
status = NXDputdef(self->fileHandle,self->dictHandle,defString,data);
|
||||
if(status != NX_OK){
|
||||
sprintf(buffer,"ERROR: failed to write array");
|
||||
SCWrite(pCon,buffer,eError);
|
||||
SCWrite(pCon,buffer,eLogError);
|
||||
}
|
||||
free(data);
|
||||
SCSendOK(pCon);
|
||||
@@ -983,7 +1137,7 @@ static void putGlobal(SConnection *pCon, SicsInterp *pSics,
|
||||
|
||||
if(argc < 4){
|
||||
SCWrite(pCon,"ERROR: insufficient number of arguments to putglobal",
|
||||
eError);
|
||||
eLogError);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -991,7 +1145,7 @@ static void putGlobal(SConnection *pCon, SicsInterp *pSics,
|
||||
status = NXputattr(self->fileHandle,argv[2],value,strlen(value),
|
||||
NX_CHAR);
|
||||
if(status != NX_OK){
|
||||
SCWrite(pCon,"ERROR: failed to write attribute",eError);
|
||||
SCWrite(pCon,"ERROR: failed to write attribute",eLogError);
|
||||
}
|
||||
SCSendOK(pCon);
|
||||
}
|
||||
@@ -1007,14 +1161,14 @@ static int handlePut(SConnection *pCon, SicsInterp *pSics, pNXScript self,
|
||||
if(strcmp(argv[1],"putfloat") == 0){
|
||||
if(argc < 4){
|
||||
SCWrite(pCon,"ERROR: insufficient number of arguments to putfloat",
|
||||
eError);
|
||||
eLogError);
|
||||
return 1;
|
||||
}
|
||||
status = Tcl_GetDouble(InterpGetTcl(pSics),argv[3],&dVal);
|
||||
if(status != TCL_OK){
|
||||
sprintf(buffer,"ERROR: failed to convert %s to float",
|
||||
argv[3]);
|
||||
SCWrite(pCon,buffer,eError);
|
||||
SCWrite(pCon,buffer,eLogError);
|
||||
return 1;
|
||||
}
|
||||
fVal = (float)dVal;
|
||||
@@ -1023,20 +1177,20 @@ static int handlePut(SConnection *pCon, SicsInterp *pSics, pNXScript self,
|
||||
if(status != NX_OK){
|
||||
sprintf(buffer,"ERROR: failed to write %f to alias %s",
|
||||
fVal, argv[2]);
|
||||
SCWrite(pCon,buffer,eError);
|
||||
SCWrite(pCon,buffer,eLogError);
|
||||
}
|
||||
return 1;
|
||||
} else if(strcmp(argv[1],"putint") == 0){
|
||||
if(argc < 4){
|
||||
SCWrite(pCon,"ERROR: insufficient number of arguments to putint",
|
||||
eError);
|
||||
eLogError);
|
||||
return 1;
|
||||
}
|
||||
status = Tcl_GetInt(InterpGetTcl(pSics),argv[3],&iVal);
|
||||
if(status != TCL_OK){
|
||||
sprintf(buffer,"ERROR: failed to convert %s to int",
|
||||
argv[3]);
|
||||
SCWrite(pCon,buffer,eError);
|
||||
SCWrite(pCon,buffer,eLogError);
|
||||
return 1;
|
||||
}
|
||||
status = NXDputalias(self->fileHandle, self->dictHandle,
|
||||
@@ -1044,14 +1198,14 @@ static int handlePut(SConnection *pCon, SicsInterp *pSics, pNXScript self,
|
||||
if(status != NX_OK){
|
||||
sprintf(buffer,"ERROR: failed to write %d to alias %s",
|
||||
iVal, argv[2]);
|
||||
SCWrite(pCon,buffer,eError);
|
||||
SCWrite(pCon,buffer,eLogError);
|
||||
}
|
||||
return 1;
|
||||
} else if (strcmp(argv[1],"puttext") == 0){
|
||||
/*====================*/
|
||||
if(argc < 4){
|
||||
SCWrite(pCon,"ERROR: insufficient number of arguments to puttext",
|
||||
eError);
|
||||
eLogError);
|
||||
return 1;
|
||||
}
|
||||
Arg2Text(argc-3,&argv[3],buffer,1023);
|
||||
@@ -1060,7 +1214,7 @@ static int handlePut(SConnection *pCon, SicsInterp *pSics, pNXScript self,
|
||||
if(status != NX_OK){
|
||||
sprintf(buffer,"ERROR: alias %s not found in puttext",
|
||||
argv[2]);
|
||||
SCWrite(pCon,buffer,eError);
|
||||
SCWrite(pCon,buffer,eLogError);
|
||||
return 1;
|
||||
}
|
||||
if(strlen(defString) < 900){
|
||||
@@ -1070,7 +1224,7 @@ static int handlePut(SConnection *pCon, SicsInterp *pSics, pNXScript self,
|
||||
strcat(defString," }");
|
||||
} else {
|
||||
SCWrite(pCon,"ERROR: out of definition string space in puttext",
|
||||
eError);
|
||||
eLogError);
|
||||
return 1;
|
||||
}
|
||||
status = NXDputdef(self->fileHandle,self->dictHandle,
|
||||
@@ -1078,7 +1232,7 @@ static int handlePut(SConnection *pCon, SicsInterp *pSics, pNXScript self,
|
||||
if(status != NX_OK){
|
||||
sprintf(buffer,"ERROR: failed to write alias %s",
|
||||
argv[2]);
|
||||
SCWrite(pCon,buffer,eError);
|
||||
SCWrite(pCon,buffer,eLogError);
|
||||
}
|
||||
return 1;
|
||||
} else if(strcmp(argv[1],"putmot") == 0){
|
||||
@@ -1089,6 +1243,14 @@ static int handlePut(SConnection *pCon, SicsInterp *pSics, pNXScript self,
|
||||
/* ================*/
|
||||
putCounter(pCon,pSics,self, argc,argv);
|
||||
return 1;
|
||||
} else if(strcmp(argv[1],"puthdb") == 0){
|
||||
/* ================*/
|
||||
putHdb(pCon,pSics,self, argc,argv);
|
||||
return 1;
|
||||
} else if(strcmp(argv[1],"puthdbslab") == 0){
|
||||
/* ================*/
|
||||
putHdbSlab(pCon,pSics,self, argc,argv);
|
||||
return 1;
|
||||
}else if(strcmp(argv[1],"puthm") == 0){
|
||||
/*=================*/
|
||||
putHistogramMemory(pCon,pSics,self,argc, argv);
|
||||
@@ -1115,7 +1277,7 @@ static int handlePut(SConnection *pCon, SicsInterp *pSics, pNXScript self,
|
||||
/*===============*/
|
||||
putSlab(pCon,pSics,self,argc,argv);
|
||||
} else {
|
||||
SCWrite(pCon,"ERROR: put command not recognised",eError);
|
||||
SCWrite(pCon,"ERROR: put command not recognised",eLogError);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
@@ -1128,7 +1290,7 @@ static void makeLink(SConnection *pCon, SicsInterp *pSics,
|
||||
|
||||
if(argc < 4){
|
||||
SCWrite(pCon,"ERROR: insufficient number of arguments to makelink",
|
||||
eError);
|
||||
eLogError);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1137,7 +1299,7 @@ static void makeLink(SConnection *pCon, SicsInterp *pSics,
|
||||
if(status != NX_OK){
|
||||
snprintf(pBueffel,255,"ERROR: linking %s against %s failed",
|
||||
argv[2], argv[3]);
|
||||
SCWrite(pCon,pBueffel,eError);
|
||||
SCWrite(pCon,pBueffel,eLogError);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1150,12 +1312,12 @@ static void updateDictVar(SConnection *pCon, pNXScript self, int argc,
|
||||
|
||||
if(self->dictHandle == NULL){
|
||||
SCWrite(pCon,"ERROR: cannot update variable, dictionary not open",
|
||||
eError);
|
||||
eLogError);
|
||||
return;
|
||||
}
|
||||
if(argc < 4){
|
||||
SCWrite(pCon,"ERROR: insufficient number of arguments to updateDictVar",
|
||||
eError);
|
||||
eLogError);
|
||||
return;
|
||||
}
|
||||
NXDupdate(self->dictHandle,argv[2],argv[3]);
|
||||
@@ -1176,7 +1338,7 @@ int NXScriptAction(SConnection *pCon, SicsInterp *pSics, void *pData,
|
||||
return 1;
|
||||
}
|
||||
if(argc < 2){
|
||||
SCWrite(pCon,"ERROR: no keyword found",eError);
|
||||
SCWrite(pCon,"ERROR: no keyword found",eLogError);
|
||||
return 1;
|
||||
}
|
||||
strtolower(argv[1]);
|
||||
@@ -1193,7 +1355,7 @@ int NXScriptAction(SConnection *pCon, SicsInterp *pSics, void *pData,
|
||||
}
|
||||
} else if(strcmp(argv[1],"divisor") == 0){
|
||||
if(argc < 3) {
|
||||
SCWrite(pCon,"ERROR: no diviso found",eError);
|
||||
SCWrite(pCon,"ERROR: no divisor found",eLogError);
|
||||
return 1;
|
||||
}
|
||||
if(!SCMatchRights(pCon,usMugger)){
|
||||
@@ -1216,7 +1378,7 @@ int NXScriptAction(SConnection *pCon, SicsInterp *pSics, void *pData,
|
||||
if we are here, we can only continue if files are open
|
||||
*/
|
||||
if(self->fileHandle == NULL || self->dictHandle == NULL){
|
||||
SCWrite(pCon,"ERROR: cannot write, files not open",eError);
|
||||
SCWrite(pCon,"ERROR: cannot write, files not open",eLogError);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -1232,7 +1394,7 @@ int NXScriptAction(SConnection *pCon, SicsInterp *pSics, void *pData,
|
||||
|
||||
if(strcmp(argv[1],"isalias") == 0) {
|
||||
if(argc < 3) {
|
||||
SCWrite(pCon,"ERROR: need alias to test",eError);
|
||||
SCWrite(pCon,"ERROR: need alias to test",eLogError);
|
||||
return 1;
|
||||
}
|
||||
if(NXDget(self->dictHandle,argv[2],buffer,131) == NX_OK){
|
||||
|
||||
Reference in New Issue
Block a user