* add numeric floor setting reader
authorWilfried Göesgens <willi@citadel.org>
Thu, 15 Oct 2009 12:43:16 +0000 (12:43 +0000)
committerWilfried Göesgens <willi@citadel.org>
Thu, 15 Oct 2009 12:43:16 +0000 (12:43 +0000)
webcit/preferences.c
webcit/preferences.h

index c46d0ad1ca15f343ec5b2d75f716f5ed3b44dc71..8a04213c882f091fa2be8074f31d1fe38deeecc6 100644 (file)
@@ -624,6 +624,28 @@ void set_X_PREFS(const char *key, size_t keylen, const char *xkey, size_t xkeyle
 }
 
 
+long get_ROOM_PREFS_LONG(const char *key, size_t keylen, long *value, long Default)
+{
+       Preference *Pref;
+       int Ret;
+
+       Ret = get_room_prefs_backend(key, keylen, &Pref);
+
+       if (Ret == 0) {
+               *value = Default;
+               return 0;
+       }
+
+       if (Pref->decoded)
+               *value = Pref->lval;
+       else {
+               *value = Pref->lval = atol(ChrPtr(Pref->Val));
+               Pref->decoded = 1;
+       }
+       return Ret;
+}
+
+
 StrBuf *get_ROOM_PREFS(const char *key, size_t keylen)
 {
        Preference *Pref;
@@ -783,6 +805,15 @@ void tmplput_CFG_Descr(StrBuf *Target, WCTemplputParams *TP)
        if (SettingStr != NULL) 
                StrBufAppendBufPlain(Target, SettingStr, -1, 0);
 }
+void tmplput_CFG_RoomValueLong(StrBuf *Target, WCTemplputParams *TP)
+{
+       long lvalue;
+       long defval;
+
+       defval = GetTemplateTokenNumber(Target, TP, 1, 0);
+       get_ROOM_PREFS_LONG(TKEY(0), &lvalue, defval);
+       StrBufAppendPrintf(Target, "%ld", lvalue);
+}
 void tmplput_CFG_RoomValue(StrBuf *Target, WCTemplputParams *TP)
 {
        StrBuf *pref = get_ROOM_PREFS(TKEY(0));
@@ -978,7 +1009,9 @@ InitModule_PREFERENCES
 
        RegisterNamespace("OFFERSTARTPAGE", 0, 0, offer_start_page, CTX_NONE);
        RegisterNamespace("PREF:ROOM:VALUE", 1, 2, tmplput_CFG_RoomValue,  CTX_NONE);
+       RegisterNamespace("PREF:ROOM:VALUE:INT", 1, 2, tmplput_CFG_RoomValueLong,  CTX_NONE);
        RegisterNamespace("PREF:VALUE", 1, 2, tmplput_CFG_Value, CTX_NONE);
+       
        RegisterNamespace("PREF:DESCR", 1, 1, tmplput_CFG_Descr, CTX_NONE);
 
        RegisterConditional(HKEY("COND:PREF"), 4, ConditionalPreference, CTX_NONE);
index 64d0c04ed4ad95101964dc4c31dde5e7f30f4903..2d8fb1227dea69f868d61e6278768ad36ae9f5a8 100644 (file)
@@ -41,6 +41,8 @@ StrBuf *get_ROOM_PREFS(const char *key, size_t keylen);
 
 #define set_room_pref(a, b, c) set_ROOM_PREFS(a, sizeof(a) - 1, b, c)
 void set_ROOM_PREFS(const char *key, size_t keylen, StrBuf *value, int save_to_server);
+#define get_room_pref_long(a, b, c) get_ROOM_PREFS_LONG(a, sizeof(a) - 1, b, c)
+long get_ROOM_PREFS_LONG(const char *key, size_t keylen, long *value, long Default);
 
 
 #define get_x_pref(a, b) get_ROOM_PREFS(a, sizeof(a) - 1, b, sizeof(b) - 1)