diff options
Diffstat (limited to 'app/bin/csensor.c')
| -rw-r--r-- | app/bin/csensor.c | 28 | 
1 files changed, 22 insertions, 6 deletions
| diff --git a/app/bin/csensor.c b/app/bin/csensor.c index 7ee842d..871b8d6 100644 --- a/app/bin/csensor.c +++ b/app/bin/csensor.c @@ -59,6 +59,7 @@ static const char rcsid[] = "@(#) : $Id$";  #include "track.h"  #include "trackx.h"  #include "utility.h" +#include "messages.h"  EXPORT TRKTYP_T T_SENSOR = -1; @@ -156,9 +157,9 @@ static struct {  typedef enum { NM, PS, SC } sensorDesc_e;  static descData_t sensorDesc[] = { -    /* NM */ { DESC_STRING, N_("Name"),     &sensorProperties.name }, +    /* NM */ { DESC_STRING, N_("Name"),     &sensorProperties.name, sizeof(sensorProperties.name) },      /* PS */ { DESC_POS,    N_("Position"), &sensorProperties.pos }, -    /* SC */ { DESC_STRING, N_("Script"),   &sensorProperties.script }, +    /* SC */ { DESC_STRING, N_("Script"),   &sensorProperties.script, sizeof(sensorProperties.script) },      { DESC_NULL } };  static void UpdateSensorProperties (  track_p trk, int inx, descData_p @@ -167,6 +168,7 @@ static void UpdateSensorProperties (  track_p trk, int inx, descData_p      sensorData_p xx = GetsensorData(trk);      const char *thename, *thescript;      char *newName, *newScript; +    unsigned int max_str;      BOOL_T changed, nChanged, pChanged, sChanged;      switch (inx) { @@ -181,13 +183,27 @@ static void UpdateSensorProperties (  track_p trk, int inx, descData_p          thename = wStringGetValue( (wString_p) sensorDesc[NM].control0 );          if (strcmp(thename,xx->name) != 0) {              nChanged = changed = TRUE; -            newName = MyStrdup(thename); +            max_str = sensorDesc[NM].max_string; +			if (max_str && strlen(thename)>max_str-1) { +				newName = MyMalloc(max_str); +				newName[max_str-1] = '\0'; +				strncat(newName,thename,max_str-1); +				NoticeMessage2(0, MSG_ENTERED_STRING_TRUNCATED, _("Ok"), NULL, max_str-1); +			} else newName = MyStrdup(thename);          } +          thescript = wStringGetValue( (wString_p) sensorDesc[SC].control0 );          if (strcmp(thescript,xx->script) != 0) {              sChanged = changed = TRUE; -            newScript = MyStrdup(thescript); +            max_str = sensorDesc[SC].max_string; +			if (max_str && strlen(thename)>max_str-1) { +				newScript = MyMalloc(max_str); +				newScript[max_str-1] = '\0'; +				strncat(newScript,thescript,max_str-1); +				NoticeMessage2(0, MSG_ENTERED_STRING_TRUNCATED, _("Ok"), NULL, max_str-1); +			} else newScript = MyStrdup(thescript);          } +          if (sensorProperties.pos.x != xx->orig.x ||              sensorProperties.pos.y != xx->orig.y) {              pChanged = changed = TRUE; @@ -353,13 +369,13 @@ static char sensorEditScript[STR_LONG_SIZE];  static paramFloatRange_t r_1000_1000    = { -1000.0, 1000.0, 80 };  static paramData_t sensorEditPLs[] = {  #define I_SENSORNAME (0) -    /*0*/ { PD_STRING, sensorEditName, "name", PDO_NOPREF|PDO_STRINGLIMITLENGTH, (void*)200, N_("Name"), 0, (void *)sizeof(sensorEditName) }, +    /*0*/ { PD_STRING, sensorEditName, "name", PDO_NOPREF|PDO_STRINGLIMITLENGTH, (void*)200, N_("Name"), 0, 0, sizeof(sensorEditName)},  #define I_ORIGX (1)      /*1*/ { PD_FLOAT, &sensorEditOrig.x, "origx", PDO_DIM, &r_1000_1000, N_("Orgin X") },   #define I_ORIGY (2)      /*2*/ { PD_FLOAT, &sensorEditOrig.y, "origy", PDO_DIM, &r_1000_1000, N_("Origin Y") },  #define I_SENSORSCRIPT (3) -    /*3*/ { PD_STRING, sensorEditScript, "script", PDO_NOPREF|PDO_STRINGLIMITLENGTH, (void*)350, N_("Script"), 0, (void *)sizeof(sensorEditScript) }, +    /*3*/ { PD_STRING, sensorEditScript, "script", PDO_NOPREF|PDO_STRINGLIMITLENGTH, (void*)350, N_("Script"), 0, 0, sizeof(sensorEditScript)},  };  static paramGroup_t sensorEditPG = { "sensorEdit", 0, sensorEditPLs, sizeof sensorEditPLs/sizeof sensorEditPLs[0] }; | 
