"Fossies" - the Fresh Open Source Software Archive

Member "krb5-1.18/src/lib/krb5/krb/addr_order.c" (12 Feb 2020, 2195 Bytes) of package /linux/misc/krb5-1.18.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. For more information about "addr_order.c" see the Fossies "Dox" file reference documentation and the last Fossies "Diffs" side-by-side code changes report: 1.16.3_vs_1.17.

    1 /* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */
    2 /* lib/krb5/krb/addr_order.c */
    3 /*
    4  * Copyright 1990 by the Massachusetts Institute of Technology.
    5  * All Rights Reserved.
    6  *
    7  * Export of this software from the United States of America may
    8  *   require a specific license from the United States Government.
    9  *   It is the responsibility of any person or organization contemplating
   10  *   export to obtain such a license before exporting.
   11  *
   12  * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
   13  * distribute this software and its documentation for any purpose and
   14  * without fee is hereby granted, provided that the above copyright
   15  * notice appear in all copies and that both that copyright notice and
   16  * this permission notice appear in supporting documentation, and that
   17  * the name of M.I.T. not be used in advertising or publicity pertaining
   18  * to distribution of the software without specific, written prior
   19  * permission.  Furthermore if you modify this software you must label
   20  * your software as modified software and not distribute it in such a
   21  * fashion that it might be confused with the original M.I.T. software.
   22  * M.I.T. makes no representations about the suitability of
   23  * this software for any purpose.  It is provided "as is" without express
   24  * or implied warranty.
   25  */
   26 
   27 #include "k5-int.h"
   28 
   29 #ifndef min
   30 #define min(a,b) ((a) < (b) ? (a) : (b))
   31 #endif
   32 
   33 /*
   34  * Return an ordering on two addresses:  0 if the same,
   35  * < 0 if first is less than 2nd, > 0 if first is greater than 2nd.
   36  */
   37 int KRB5_CALLCONV
   38 krb5_address_order(krb5_context context, const krb5_address *addr1, const krb5_address *addr2)
   39 {
   40     int dir;
   41     int i;
   42     const int minlen = min(addr1->length, addr2->length);
   43 
   44     if (addr1->addrtype != addr2->addrtype)
   45         return(FALSE);
   46 
   47     dir = addr1->length - addr2->length;
   48 
   49 
   50     for (i = 0; i < minlen; i++) {
   51         if ((unsigned char) addr1->contents[i] <
   52             (unsigned char) addr2->contents[i])
   53             return -1;
   54         else if ((unsigned char) addr1->contents[i] >
   55                  (unsigned char) addr2->contents[i])
   56             return 1;
   57     }
   58     /* compared equal so far...which is longer? */
   59     return dir;
   60 }