Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/c/generic/mem.c

    r44ecf89 r45f7449  
    224224 * @param s1  Pointer to the first area to compare.
    225225 * @param s2  Pointer to the second area to compare.
    226  * @param len Size of the areas in bytes.
    227  *
    228  * @return Zero if areas have the same contents. If they differ,
    229  *         the sign of the result is the same as the sign of the
    230  *         difference of the first pair of different bytes.
    231  *
    232  */
    233 int memcmp(const void *s1, const void *s2, size_t len)
     226 * @param len Size of the first area in bytes. Both areas must have
     227 *            the same length.
     228 *
     229 * @return If len is 0, return zero. If the areas match, return
     230 *         zero. Otherwise return non-zero.
     231 *
     232 */
     233int bcmp(const void *s1, const void *s2, size_t len)
    234234{
    235235        uint8_t *u1 = (uint8_t *) s1;
    236236        uint8_t *u2 = (uint8_t *) s2;
    237         size_t i;
    238 
    239         for (i = 0; i < len; i++) {
    240                 if (*u1 != *u2)
    241                         return (int)(*u1) - (int)(*u2);
    242                 ++u1;
    243                 ++u2;
    244         }
    245 
    246         return 0;
     237       
     238        for (; (len != 0) && (*u1++ == *u2++); len--);
     239       
     240        return len;
    247241}
    248242
Note: See TracChangeset for help on using the changeset viewer.