diff --git a/src/var.c b/src/var.c index 2ab7c8b6..a4dbff39 100644 --- a/src/var.c +++ b/src/var.c @@ -763,7 +763,6 @@ typedef struct { void *value; int min; int max; - int (*validate)(void const *newvalue); } SysVar; /* If the type of a sys variable is STR_TYPE, then min is redefined @@ -775,107 +774,107 @@ typedef struct { /* All of the system variables sorted alphabetically */ static SysVar SysVarArr[] = { - /* name mod type value min/mal max validate*/ - {"AddBlankLines", 1, INT_TYPE, &AddBlankLines, 0, 1, NULL }, - {"Ago", 1, STR_TYPE, &DynamicAgo, 0, 0, NULL }, - {"Am", 1, STR_TYPE, &DynamicAm, 0, 0, NULL }, - {"And", 1, STR_TYPE, &DynamicAnd, 0, 0, NULL }, - {"April", 1, STR_TYPE, &DynamicMonthName[3], 0, 0, NULL }, - {"At", 1, STR_TYPE, &DynamicAt, 0, 0, NULL }, - {"August", 1, STR_TYPE, &DynamicMonthName[7], 0, 0, NULL }, - {"CalcUTC", 1, INT_TYPE, &CalculateUTC, 0, 1, NULL }, - {"CalMode", 0, INT_TYPE, &DoCalendar, 0, 0, NULL }, - {"Daemon", 0, INT_TYPE, &Daemon, 0, 0, NULL }, - {"DateSep", 1, SPECIAL_TYPE, date_sep_func, 0, 0, NULL }, - {"DateTimeSep", 1, SPECIAL_TYPE, datetime_sep_func, 0, 0, NULL }, - {"December", 1, STR_TYPE, &DynamicMonthName[11],0, 0, NULL }, - {"DefaultColor", 1, SPECIAL_TYPE, default_color_func, 0, 0, NULL }, - {"DefaultPrio", 1, INT_TYPE, &DefaultPrio, 0, 9999, NULL }, - {"DefaultTDelta", 1, INT_TYPE, &DefaultTDelta, 0, 1440, NULL }, - {"DeltaOffset", 0, INT_TYPE, &DeltaOffset, 0, 0, NULL }, - {"DontFork", 0, INT_TYPE, &DontFork, 0, 0, NULL }, - {"DontQueue", 0, INT_TYPE, &DontQueue, 0, 0, NULL }, - {"DontTrigAts", 0, INT_TYPE, &DontIssueAts, 0, 0, NULL }, - {"EndSent", 1, STR_TYPE, &EndSent, 0, 0, NULL }, - {"EndSentIg", 1, STR_TYPE, &EndSentIg, 0, 0, NULL }, - {"February", 1, STR_TYPE, &DynamicMonthName[1], 0, 0, NULL }, - {"FirstIndent", 1, INT_TYPE, &FirstIndent, 0, 132, NULL }, - {"FoldYear", 1, INT_TYPE, &FoldYear, 0, 1, NULL }, - {"FormWidth", 1, INT_TYPE, &FormWidth, 20, 500, NULL }, - {"Friday", 1, STR_TYPE, &DynamicDayName[4], 0, 0, NULL }, - {"Fromnow", 1, STR_TYPE, &DynamicFromnow, 0, 0, NULL }, - {"Hour", 1, STR_TYPE, &DynamicHour, 0, 0, NULL }, - {"Hplu", 1, STR_TYPE, &DynamicHplu, 0, 0, NULL }, - {"HushMode", 0, INT_TYPE, &Hush, 0, 0, NULL }, - {"IgnoreOnce", 0, INT_TYPE, &IgnoreOnce, 0, 0, NULL }, - {"InfDelta", 0, INT_TYPE, &InfiniteDelta, 0, 0, NULL }, - {"IntMax", 0, INT_TYPE, &IntMax, 0, 0, NULL }, - {"IntMin", 0, INT_TYPE, &IntMin, 0, 0, NULL }, - {"Is", 1, STR_TYPE, &DynamicIs, 0, 0, NULL }, - {"January", 1, STR_TYPE, &DynamicMonthName[0], 0, 0, NULL }, - {"July", 1, STR_TYPE, &DynamicMonthName[6], 0, 0, NULL }, - {"June", 1, STR_TYPE, &DynamicMonthName[5], 0, 0, NULL }, - {"LatDeg", 1, SPECIAL_TYPE, latdeg_func, 0, 0, NULL }, - {"Latitude", 1, SPECIAL_TYPE, latitude_func, 0, 0, NULL }, - {"LatMin", 1, SPECIAL_TYPE, latmin_func, 0, 0, NULL }, - {"LatSec", 1, SPECIAL_TYPE, latsec_func, 0, 0, NULL }, - {"Location", 1, STR_TYPE, &Location, 0, 0, NULL }, - {"LongDeg", 1, SPECIAL_TYPE, longdeg_func, 0, 0, NULL }, - {"Longitude", 1, SPECIAL_TYPE, longitude_func, 0, 0, NULL }, - {"LongMin", 1, SPECIAL_TYPE, longmin_func, 0, 0, NULL }, - {"LongSec", 1, SPECIAL_TYPE, longsec_func, 0, 0, NULL }, - {"March", 1, STR_TYPE, &DynamicMonthName[2], 0, 0, NULL }, - {"MaxSatIter", 1, INT_TYPE, &MaxSatIter, 10, ANY, NULL }, - {"MaxStringLen", 1, INT_TYPE, &MaxStringLen, -1, ANY, NULL }, - {"May", 1, STR_TYPE, &DynamicMonthName[4], 0, 0, NULL }, - {"MinsFromUTC", 1, INT_TYPE, &MinsFromUTC, -780, 780, NULL }, - {"Minute", 1, STR_TYPE, &DynamicMinute, 0, 0, NULL }, - {"Monday", 1, STR_TYPE, &DynamicDayName[0], 0, 0, NULL }, - {"Mplu", 1, STR_TYPE, &DynamicMplu, 0, 0, NULL }, - {"NextMode", 0, INT_TYPE, &NextMode, 0, 0, NULL }, - {"November", 1, STR_TYPE, &DynamicMonthName[10],0, 0, NULL }, - {"Now", 1, STR_TYPE, &DynamicNow, 0, 0, NULL }, - {"NumQueued", 0, INT_TYPE, &NumQueued, 0, 0, NULL }, - {"NumTrig", 0, INT_TYPE, &NumTriggered, 0, 0, NULL }, - {"October", 1, STR_TYPE, &DynamicMonthName[9], 0, 0, NULL }, - {"On", 1, STR_TYPE, &DynamicOn, 0, 0, NULL }, - {"Pm", 1, STR_TYPE, &DynamicPm, 0, 0, NULL }, - {"PrefixLineNo", 0, INT_TYPE, &DoPrefixLineNo, 0, 0, NULL }, - {"PSCal", 0, INT_TYPE, &PsCal, 0, 0, NULL }, - {"RunOff", 0, INT_TYPE, &RunDisabled, 0, 0, NULL }, - {"Saturday", 1, STR_TYPE, &DynamicDayName[5], 0, 0, NULL }, - {"September", 1, STR_TYPE, &DynamicMonthName[8], 0, 0, NULL }, - {"SimpleCal", 0, INT_TYPE, &DoSimpleCalendar, 0, 0, NULL }, - {"SortByDate", 0, INT_TYPE, &SortByDate, 0, 0, NULL }, - {"SortByPrio", 0, INT_TYPE, &SortByPrio, 0, 0, NULL }, - {"SortByTime", 0, INT_TYPE, &SortByTime, 0, 0, NULL }, - {"SubsIndent", 1, INT_TYPE, &SubsIndent, 0, 132, NULL }, - {"Sunday", 1, STR_TYPE, &DynamicDayName[6], 0, 0, NULL }, - {"SuppressLRM", 1, INT_TYPE, &SuppressLRM, 0, 1, NULL }, - {"SysInclude", 0, STR_TYPE, &SysDir, 0, 0, NULL }, - {"T", 0, SPECIAL_TYPE, trig_date_func, 0, 0, NULL }, - {"Td", 0, SPECIAL_TYPE, trig_day_func, 0, 0, NULL }, - {"TerminalBackground", 0, INT_TYPE, &TerminalBackground, 0, 0, NULL }, - {"Thursday", 1, STR_TYPE, &DynamicDayName[3], 0, 0, NULL }, - {"TimeSep", 1, SPECIAL_TYPE, time_sep_func, 0, 0, NULL }, - {"Tm", 0, SPECIAL_TYPE, trig_mon_func, 0, 0, NULL }, - {"Today", 1, STR_TYPE, &DynamicToday, 0, 0, NULL }, - {"Tomorrow", 1, STR_TYPE, &DynamicTomorrow, 0, 0, NULL }, - {"Tuesday", 1, STR_TYPE, &DynamicDayName[1], 0, 0, NULL }, - {"Tw", 0, SPECIAL_TYPE, trig_wday_func, 0, 0, NULL }, - {"Ty", 0, SPECIAL_TYPE, trig_year_func, 0, 0, NULL }, - {"U", 0, SPECIAL_TYPE, today_date_func, 0, 0, NULL }, - {"Ud", 0, SPECIAL_TYPE, today_day_func, 0, 0, NULL }, - {"Um", 0, SPECIAL_TYPE, today_mon_func, 0, 0, NULL }, - {"UntimedFirst", 0, INT_TYPE, &UntimedBeforeTimed, 0, 0, NULL }, - {"Use256Colors", 0, INT_TYPE, &Use256Colors, 0, 0, NULL }, - {"UseBGVTColors", 0, INT_TYPE, &UseBGVTColors, 0, 0, NULL }, - {"UseTrueColors", 0, INT_TYPE, &UseTrueColors, 0, 0, NULL }, - {"UseVTColors", 0, INT_TYPE, &UseVTColors, 0, 0, NULL }, - {"Uw", 0, SPECIAL_TYPE, today_wday_func, 0, 0, NULL }, - {"Uy", 0, SPECIAL_TYPE, today_year_func, 0, 0, NULL }, - {"Was", 1, STR_TYPE, &DynamicWas, 0, 0, NULL }, - {"Wednesday", 1, STR_TYPE, &DynamicDayName[2], 0, 0, NULL } + /* name mod type value min/mal max */ + {"AddBlankLines", 1, INT_TYPE, &AddBlankLines, 0, 1 }, + {"Ago", 1, STR_TYPE, &DynamicAgo, 0, 0 }, + {"Am", 1, STR_TYPE, &DynamicAm, 0, 0 }, + {"And", 1, STR_TYPE, &DynamicAnd, 0, 0 }, + {"April", 1, STR_TYPE, &DynamicMonthName[3], 0, 0 }, + {"At", 1, STR_TYPE, &DynamicAt, 0, 0 }, + {"August", 1, STR_TYPE, &DynamicMonthName[7], 0, 0 }, + {"CalcUTC", 1, INT_TYPE, &CalculateUTC, 0, 1 }, + {"CalMode", 0, INT_TYPE, &DoCalendar, 0, 0 }, + {"Daemon", 0, INT_TYPE, &Daemon, 0, 0 }, + {"DateSep", 1, SPECIAL_TYPE, date_sep_func, 0, 0 }, + {"DateTimeSep", 1, SPECIAL_TYPE, datetime_sep_func, 0, 0 }, + {"December", 1, STR_TYPE, &DynamicMonthName[11],0, 0 }, + {"DefaultColor", 1, SPECIAL_TYPE, default_color_func, 0, 0 }, + {"DefaultPrio", 1, INT_TYPE, &DefaultPrio, 0, 9999 }, + {"DefaultTDelta", 1, INT_TYPE, &DefaultTDelta, 0, 1440 }, + {"DeltaOffset", 0, INT_TYPE, &DeltaOffset, 0, 0 }, + {"DontFork", 0, INT_TYPE, &DontFork, 0, 0 }, + {"DontQueue", 0, INT_TYPE, &DontQueue, 0, 0 }, + {"DontTrigAts", 0, INT_TYPE, &DontIssueAts, 0, 0 }, + {"EndSent", 1, STR_TYPE, &EndSent, 0, 0 }, + {"EndSentIg", 1, STR_TYPE, &EndSentIg, 0, 0 }, + {"February", 1, STR_TYPE, &DynamicMonthName[1], 0, 0 }, + {"FirstIndent", 1, INT_TYPE, &FirstIndent, 0, 132 }, + {"FoldYear", 1, INT_TYPE, &FoldYear, 0, 1 }, + {"FormWidth", 1, INT_TYPE, &FormWidth, 20, 500 }, + {"Friday", 1, STR_TYPE, &DynamicDayName[4], 0, 0 }, + {"Fromnow", 1, STR_TYPE, &DynamicFromnow, 0, 0 }, + {"Hour", 1, STR_TYPE, &DynamicHour, 0, 0 }, + {"Hplu", 1, STR_TYPE, &DynamicHplu, 0, 0 }, + {"HushMode", 0, INT_TYPE, &Hush, 0, 0 }, + {"IgnoreOnce", 0, INT_TYPE, &IgnoreOnce, 0, 0 }, + {"InfDelta", 0, INT_TYPE, &InfiniteDelta, 0, 0 }, + {"IntMax", 0, INT_TYPE, &IntMax, 0, 0 }, + {"IntMin", 0, INT_TYPE, &IntMin, 0, 0 }, + {"Is", 1, STR_TYPE, &DynamicIs, 0, 0 }, + {"January", 1, STR_TYPE, &DynamicMonthName[0], 0, 0 }, + {"July", 1, STR_TYPE, &DynamicMonthName[6], 0, 0 }, + {"June", 1, STR_TYPE, &DynamicMonthName[5], 0, 0 }, + {"LatDeg", 1, SPECIAL_TYPE, latdeg_func, 0, 0 }, + {"Latitude", 1, SPECIAL_TYPE, latitude_func, 0, 0 }, + {"LatMin", 1, SPECIAL_TYPE, latmin_func, 0, 0 }, + {"LatSec", 1, SPECIAL_TYPE, latsec_func, 0, 0 }, + {"Location", 1, STR_TYPE, &Location, 0, 0 }, + {"LongDeg", 1, SPECIAL_TYPE, longdeg_func, 0, 0 }, + {"Longitude", 1, SPECIAL_TYPE, longitude_func, 0, 0 }, + {"LongMin", 1, SPECIAL_TYPE, longmin_func, 0, 0 }, + {"LongSec", 1, SPECIAL_TYPE, longsec_func, 0, 0 }, + {"March", 1, STR_TYPE, &DynamicMonthName[2], 0, 0 }, + {"MaxSatIter", 1, INT_TYPE, &MaxSatIter, 10, ANY }, + {"MaxStringLen", 1, INT_TYPE, &MaxStringLen, -1, ANY }, + {"May", 1, STR_TYPE, &DynamicMonthName[4], 0, 0 }, + {"MinsFromUTC", 1, INT_TYPE, &MinsFromUTC, -780, 780 }, + {"Minute", 1, STR_TYPE, &DynamicMinute, 0, 0 }, + {"Monday", 1, STR_TYPE, &DynamicDayName[0], 0, 0 }, + {"Mplu", 1, STR_TYPE, &DynamicMplu, 0, 0 }, + {"NextMode", 0, INT_TYPE, &NextMode, 0, 0 }, + {"November", 1, STR_TYPE, &DynamicMonthName[10],0, 0 }, + {"Now", 1, STR_TYPE, &DynamicNow, 0, 0 }, + {"NumQueued", 0, INT_TYPE, &NumQueued, 0, 0 }, + {"NumTrig", 0, INT_TYPE, &NumTriggered, 0, 0 }, + {"October", 1, STR_TYPE, &DynamicMonthName[9], 0, 0 }, + {"On", 1, STR_TYPE, &DynamicOn, 0, 0 }, + {"Pm", 1, STR_TYPE, &DynamicPm, 0, 0 }, + {"PrefixLineNo", 0, INT_TYPE, &DoPrefixLineNo, 0, 0 }, + {"PSCal", 0, INT_TYPE, &PsCal, 0, 0 }, + {"RunOff", 0, INT_TYPE, &RunDisabled, 0, 0 }, + {"Saturday", 1, STR_TYPE, &DynamicDayName[5], 0, 0 }, + {"September", 1, STR_TYPE, &DynamicMonthName[8], 0, 0 }, + {"SimpleCal", 0, INT_TYPE, &DoSimpleCalendar, 0, 0 }, + {"SortByDate", 0, INT_TYPE, &SortByDate, 0, 0 }, + {"SortByPrio", 0, INT_TYPE, &SortByPrio, 0, 0 }, + {"SortByTime", 0, INT_TYPE, &SortByTime, 0, 0 }, + {"SubsIndent", 1, INT_TYPE, &SubsIndent, 0, 132 }, + {"Sunday", 1, STR_TYPE, &DynamicDayName[6], 0, 0 }, + {"SuppressLRM", 1, INT_TYPE, &SuppressLRM, 0, 1 }, + {"SysInclude", 0, STR_TYPE, &SysDir, 0, 0 }, + {"T", 0, SPECIAL_TYPE, trig_date_func, 0, 0 }, + {"Td", 0, SPECIAL_TYPE, trig_day_func, 0, 0 }, + {"TerminalBackground", 0, INT_TYPE, &TerminalBackground, 0, 0 }, + {"Thursday", 1, STR_TYPE, &DynamicDayName[3], 0, 0 }, + {"TimeSep", 1, SPECIAL_TYPE, time_sep_func, 0, 0 }, + {"Tm", 0, SPECIAL_TYPE, trig_mon_func, 0, 0 }, + {"Today", 1, STR_TYPE, &DynamicToday, 0, 0 }, + {"Tomorrow", 1, STR_TYPE, &DynamicTomorrow, 0, 0 }, + {"Tuesday", 1, STR_TYPE, &DynamicDayName[1], 0, 0 }, + {"Tw", 0, SPECIAL_TYPE, trig_wday_func, 0, 0 }, + {"Ty", 0, SPECIAL_TYPE, trig_year_func, 0, 0 }, + {"U", 0, SPECIAL_TYPE, today_date_func, 0, 0 }, + {"Ud", 0, SPECIAL_TYPE, today_day_func, 0, 0 }, + {"Um", 0, SPECIAL_TYPE, today_mon_func, 0, 0 }, + {"UntimedFirst", 0, INT_TYPE, &UntimedBeforeTimed, 0, 0 }, + {"Use256Colors", 0, INT_TYPE, &Use256Colors, 0, 0 }, + {"UseBGVTColors", 0, INT_TYPE, &UseBGVTColors, 0, 0 }, + {"UseTrueColors", 0, INT_TYPE, &UseTrueColors, 0, 0 }, + {"UseVTColors", 0, INT_TYPE, &UseVTColors, 0, 0 }, + {"Uw", 0, SPECIAL_TYPE, today_wday_func, 0, 0 }, + {"Uy", 0, SPECIAL_TYPE, today_year_func, 0, 0 }, + {"Was", 1, STR_TYPE, &DynamicWas, 0, 0 }, + {"Wednesday", 1, STR_TYPE, &DynamicDayName[2], 0, 0 } }; #define NUMSYSVARS ( sizeof(SysVarArr) / sizeof(SysVar) ) @@ -906,16 +905,7 @@ int SetSysVar(char const *name, Value *value) DestroyValue(*value); return r; } - if (v->validate) { - if (v->type == STR_TYPE) { - r = (v->validate)((void *) value->v.str); - } else { - r = (v->validate)((void *) &(value->v.val)); - } - if (r != OK) { - return r; - } - } + if (v->type == STR_TYPE) { /* If it's already the same, don't bother doing anything */ if (!strcmp(value->v.str, (char const *) v->value)) {