Diff for /mqtt/src/Attic/aitmqtt.c between versions 1.1.1.1 and 1.1.1.1.2.3

version 1.1.1.1, 2011/11/07 08:47:16 version 1.1.1.1.2.3, 2011/11/07 16:55:46
Line 38  mqtt_SetErr(int eno, char *estr, ...) Line 38  mqtt_SetErr(int eno, char *estr, ...)
   
 // ----------------------------------------------------------  // ----------------------------------------------------------
   
   /*
    * mqtt_encodeLen() Encode number to MQTT length field
    * @num = number for encode
    * return: -1 error or >-1 length
    */
   inline u_int
   mqtt_encodeLen(u_int num)
   {
           register u_int dig, i;
           u_int ret = 0;
   
           if (num > 268435455)
                   return (u_int) -1;
   
           for (i = 0; i < sizeof ret && num > 0; i++) {
                   dig = num % 0x80;
                   num /= 0x80;
                   if (num > 0)
                           dig |= 0x80;
   
                   *((u_char*) &ret + i) = (u_char) dig;
           }
   
           return ret;
   }
   
   /*
    * mqtt_decodeLen() Decode length from MQTT packet
    * @len = length
    * @n = sizeof bytes, if !=NULL
    * return: -1 error, >-1 length of message
    */
   inline u_int
   mqtt_decodeLen(u_int len, char *n)
   {
           register u_int i, dig, mul;
           u_int ret = 0;
           u_char *p = (u_char*) &len;
   
           if (len > 0xffffff7f)
                   return (u_int) -1;
   
           for (mul = 1, i = 0; i < sizeof ret; i++, mul *= 0x80) {
                   dig = p[i];
                   ret += (dig & 0x7f) * mul;
   
                   if (!(dig & 0x80))
                           break;
           }
   
           if (n)
                   *n = (char) (i & 0x7f) + 1;
           return ret;
   }
   
   /*
    * mqtt_sizeLen Return sizeof len field
    * @len = length
    * return: -1 error, >-1 sizeof len in bytes
    */
   inline char
   mqtt_sizeLen(u_int len)
   {
           register char i;
           u_char *p = (u_char*) &len;
   
           if (len > 0xffffff7f)
                   return -1;
   
           for (i = 0; i < sizeof len; i++)
                   if (!(*(p + i) & 0x80))
                           break;
   
           return ++i;
   }
   
   /*
    * mqtt_str2var Create MQTT variable from string
    * @csStr = string
    * @strLen = string length
    * return: NULL error or != ok variable, must be free after use!
    */
   inline mqtthdr_var_t *
   mqtt_str2var(const u_char *csStr, u_short strLen)
   {
           mqtthdr_var_t *v;
   
           if (!csStr)
                   return NULL;
           if (!(v = malloc(strLen + sizeof(mqtthdr_var_t)))) {
                   LOGERR;
                   return NULL;
           } else
                   memset(v, 0, strLen + sizeof(mqtthdr_var_t));
   
           memcpy(v->var_data, csStr, strLen);
           v->var_sb.val = htons(strLen);
   
           return v;
   }

Removed from v.1.1.1.1  
changed lines
  Added in v.1.1.1.1.2.3


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>