diff options
Diffstat (limited to 'app/bin/ccontrol.c')
| -rw-r--r-- | app/bin/ccontrol.c | 44 | 
1 files changed, 34 insertions, 10 deletions
| diff --git a/app/bin/ccontrol.c b/app/bin/ccontrol.c index 4729511..fb02fdf 100644 --- a/app/bin/ccontrol.c +++ b/app/bin/ccontrol.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_CONTROL = -1; @@ -164,10 +165,10 @@ static struct {  typedef enum { NM, PS, ON, OF } controlDesc_e;  static descData_t controlDesc[] = { -    /* NM */ { DESC_STRING, N_("Name"),      &controlProperties.name }, +    /* NM */ { DESC_STRING, N_("Name"),      &controlProperties.name, sizeof(controlProperties.name) },      /* PS */ { DESC_POS,    N_("Position"),  &controlProperties.pos }, -    /* ON */ { DESC_STRING, N_("On Script"), &controlProperties.onscript }, -    /* OF */ { DESC_STRING, N_("Off Script"),&controlProperties.offscript }, +    /* ON */ { DESC_STRING, N_("On Script"), &controlProperties.onscript, sizeof(controlProperties.onscript) }, +    /* OF */ { DESC_STRING, N_("Off Script"),&controlProperties.offscript, sizeof(controlProperties.offscript) },      { DESC_NULL } };  static void UpdateControlProperties (  track_p trk, int inx, descData_p @@ -175,6 +176,7 @@ static void UpdateControlProperties (  track_p trk, int inx, descData_p  {      controlData_p xx = GetcontrolData(trk);      const char *thename, *theonscript, *theoffscript; +    unsigned int max_str;      char *newName, *newOnScript, *newOffScript;      BOOL_T changed, nChanged, pChanged, onChanged, offChanged; @@ -192,18 +194,40 @@ static void UpdateControlProperties (  track_p trk, int inx, descData_p          thename = wStringGetValue( (wString_p) controlDesc[NM].control0 );          if (strcmp(thename,xx->name) != 0) {              nChanged = changed = TRUE; -            newName = MyStrdup(thename); +            max_str = controlDesc[NM].max_string; +			if (max_str && strlen(thename)>max_str-1) { +				newName = MyMalloc(max_str); +				newName[0] = '\0'; +				strncat(newName,thename,max_str-1); +				NoticeMessage2(0, MSG_ENTERED_STRING_TRUNCATED, _("Ok"), NULL, max_str-1); +			} else newName = MyStrdup(thename);          } + +          theonscript = wStringGetValue( (wString_p) controlDesc[ON].control0 );          if (strcmp(theonscript,xx->onscript) != 0) {              onChanged = changed = TRUE; -            newOnScript = MyStrdup(theonscript); +        	max_str = controlDesc[ON].max_string; +			if (max_str && strlen(theonscript)>max_str-1) { +				newOnScript = MyMalloc(max_str); +				newOnScript[0] = '\0'; +				strncat(newOnScript,theonscript,max_str-1); +				NoticeMessage2(0, MSG_ENTERED_STRING_TRUNCATED, _("Ok"), NULL, max_str-1); +			} else newOnScript = MyStrdup(theonscript);          } +          theoffscript = wStringGetValue( (wString_p) controlDesc[OF].control0 );          if (strcmp(theoffscript,xx->offscript) != 0) {              offChanged = changed = TRUE; -            newOffScript = MyStrdup(theoffscript); +            max_str = controlDesc[OF].max_string; +			if (max_str && strlen(theoffscript)>max_str-1) { +				newOffScript = MyMalloc(max_str); +				newOffScript[max_str-1] = '\0'; +				strncat(newOffScript,theoffscript,max_str-1); +				NoticeMessage2(0, MSG_ENTERED_STRING_TRUNCATED, _("Ok"), NULL, max_str); +			} else newOffScript = MyStrdup(theoffscript);          } +          if (controlProperties.pos.x != xx->orig.x ||              controlProperties.pos.y != xx->orig.y) {              pChanged = changed = TRUE; @@ -381,15 +405,15 @@ static char controlEditOffScript[STR_LONG_SIZE];  static paramFloatRange_t r_1000_1000    = { -1000.0, 1000.0, 80 };  static paramData_t controlEditPLs[] = {  #define I_CONTROLNAME (0) -    /*0*/ { PD_STRING, controlEditName, "name", PDO_NOPREF | PDO_STRINGLIMITLENGTH, (void*)200, N_("Name"), 0, (void *)sizeof(controlEditName) }, +    /*0*/ { PD_STRING, controlEditName, "name", PDO_NOPREF | PDO_STRINGLIMITLENGTH, (void*)200, N_("Name"), 0, 0, sizeof(controlEditName) },  #define I_ORIGX (1) -    /*1*/ { PD_FLOAT, &controlEditOrig.x, "origx", PDO_DIM, &r_1000_1000, N_("Orgin X") },  +    /*1*/ { PD_FLOAT, &controlEditOrig.x, "origx", PDO_DIM, &r_1000_1000, N_("Origin X") },  #define I_ORIGY (2)      /*2*/ { PD_FLOAT, &controlEditOrig.y, "origy", PDO_DIM, &r_1000_1000, N_("Origin Y") },  #define I_CONTROLONSCRIPT (3) -    /*3*/ { PD_STRING, controlEditOnScript, "script", PDO_NOPREF | PDO_STRINGLIMITLENGTH, (void*)350, N_("On Script"), 0, (void *)sizeof(controlEditOnScript) }, +    /*3*/ { PD_STRING, controlEditOnScript, "script", PDO_NOPREF | PDO_STRINGLIMITLENGTH, (void*)350, N_("On Script"), 0, 0, sizeof(controlEditOnScript)},  #define I_CONTROLOFFSCRIPT (4) -    /*4*/ { PD_STRING, controlEditOffScript, "script", PDO_NOPREF | PDO_STRINGLIMITLENGTH, (void*)350, N_("Off Script"), 0, (void *)sizeof(controlEditOffScript) }, +    /*4*/ { PD_STRING, controlEditOffScript, "script", PDO_NOPREF | PDO_STRINGLIMITLENGTH, (void*)350, N_("Off Script"), 0, 0, sizeof(controlEditOffScript)},  };  static paramGroup_t controlEditPG = { "controlEdit", 0, controlEditPLs, sizeof controlEditPLs/sizeof controlEditPLs[0] }; | 
