settings.c
changeset 4255 e550bf3de1c8
parent 4143 b7535e12f27b
child 4258 087d44b3514f
equal deleted inserted replaced
4254:df2a7aa34279 4255:e550bf3de1c8
   693 			Write_ValidateSetting(ptr, sd, (unsigned long)p); break;
   693 			Write_ValidateSetting(ptr, sd, (unsigned long)p); break;
   694 
   694 
   695 		case SDT_STRING:
   695 		case SDT_STRING:
   696 			switch (GetVarMemType(sld->conv)) {
   696 			switch (GetVarMemType(sld->conv)) {
   697 				case SLE_VAR_STRB:
   697 				case SLE_VAR_STRB:
       
   698 				case SLE_VAR_STRBQ:
       
   699 					if (p != NULL) ttd_strlcpy((char*)ptr, p, sld->length);
       
   700 					break;
       
   701 				case SLE_VAR_STR:
   698 				case SLE_VAR_STRQ:
   702 				case SLE_VAR_STRQ:
   699 					if (p != NULL) ttd_strlcpy((char*)ptr, p, sld->length);
   703 					if (p != NULL) {
       
   704 						free(*(char**)ptr);
       
   705 						*(char**)ptr = strdup((const char*)p);
       
   706 					}
   700 					break;
   707 					break;
   701 				case SLE_VAR_CHAR: *(char*)ptr = *(char*)p; break;
   708 				case SLE_VAR_CHAR: *(char*)ptr = *(char*)p; break;
   702 				default: NOT_REACHED(); break;
   709 				default: NOT_REACHED(); break;
   703 			}
   710 			}
   704 			break;
   711 			break;
   804 		} break;
   811 		} break;
   805 
   812 
   806 		case SDT_STRING:
   813 		case SDT_STRING:
   807 			switch (GetVarMemType(sld->conv)) {
   814 			switch (GetVarMemType(sld->conv)) {
   808 			case SLE_VAR_STRB: strcpy(buf, (char*)ptr); break;
   815 			case SLE_VAR_STRB: strcpy(buf, (char*)ptr); break;
   809 			case SLE_VAR_STRQ: sprintf(buf, "\"%s\"", (char*)ptr); break;
   816 			case SLE_VAR_STRBQ:sprintf(buf, "\"%s\"", (char*)ptr); break;
       
   817 			case SLE_VAR_STR:  strcpy(buf, *(char**)ptr); break;
       
   818 			case SLE_VAR_STRQ: sprintf(buf, "\"%s\"", *(char**)ptr); break;
   810 			case SLE_VAR_CHAR: sprintf(buf, "\"%c\"", *(char*)ptr); break;
   819 			case SLE_VAR_CHAR: sprintf(buf, "\"%c\"", *(char*)ptr); break;
   811 			default: NOT_REACHED();
   820 			default: NOT_REACHED();
   812 			}
   821 			}
   813 			break;
   822 			break;
   814 
   823 
  1429 
  1438 
  1430 static const SettingDesc _currency_settings[] = {
  1439 static const SettingDesc _currency_settings[] = {
  1431 	SDT_VAR(CurrencySpec, rate,    SLE_UINT16, S, 0,  1, 0, 100, STR_NULL, NULL),
  1440 	SDT_VAR(CurrencySpec, rate,    SLE_UINT16, S, 0,  1, 0, 100, STR_NULL, NULL),
  1432 	SDT_CHR(CurrencySpec, separator,           S, 0,        ".", STR_NULL, NULL),
  1441 	SDT_CHR(CurrencySpec, separator,           S, 0,        ".", STR_NULL, NULL),
  1433 	SDT_VAR(CurrencySpec, to_euro, SLE_UINT16, S, 0,  0, 0,1000, STR_NULL, NULL),
  1442 	SDT_VAR(CurrencySpec, to_euro, SLE_UINT16, S, 0,  0, 0,1000, STR_NULL, NULL),
  1434 	SDT_STR(CurrencySpec, prefix,    SLE_STRQ, S, 0,       NULL, STR_NULL, NULL),
  1443 	SDT_STR(CurrencySpec, prefix,   SLE_STRBQ, S, 0,       NULL, STR_NULL, NULL),
  1435 	SDT_STR(CurrencySpec, suffix,    SLE_STRQ, S, 0, " credits", STR_NULL, NULL),
  1444 	SDT_STR(CurrencySpec, suffix,   SLE_STRBQ, S, 0, " credits", STR_NULL, NULL),
  1436 	SDT_END()
  1445 	SDT_END()
  1437 };
  1446 };
  1438 
  1447 
  1439 /* Undefine for the shortcut macros above */
  1448 /* Undefine for the shortcut macros above */
  1440 #undef S
  1449 #undef S