size_tification.
[openssl.git] / crypto / objects / objects.h
index 7dc1bf5f008d76956a9662d1d81ed7c849566a68..10c198ad4728bc6a247add7dca171e1e6c8a4046 100644 (file)
@@ -1006,27 +1006,28 @@ const char *    OBJ_nid2ln(int n);
 const char *   OBJ_nid2sn(int n);
 int            OBJ_obj2nid(const ASN1_OBJECT *o);
 ASN1_OBJECT *  OBJ_txt2obj(const char *s, int no_name);
-int    OBJ_obj2txt(char *buf, int buf_len, const ASN1_OBJECT *a, int no_name);
+int             OBJ_obj2txt(char *buf, size_t buf_len, const ASN1_OBJECT *a,
+                           int no_name);
 int            OBJ_txt2nid(const char *s);
 int            OBJ_ln2nid(const char *s);
 int            OBJ_sn2nid(const char *s);
 int            OBJ_cmp(const ASN1_OBJECT *a,const ASN1_OBJECT *b);
 const void *   OBJ_bsearch_(const void *key,const void *base,int num,int size,
                             int (*cmp)(const void *, const void *));
-const void *   OBJ_bsearch_ex(const void *key,const void *base,int num,
-                              int size, int (*cmp)(const void *, const void *),
-                              int flags);
+const void *   OBJ_bsearch_ex_(const void *key,const void *base,int num,
+                               int size,
+                               int (*cmp)(const void *, const void *),
+                               int flags);
 
-#define _DECLARE_OBJ_BSEARCH_CMP_FN(scope, type1, type2, cmp)  \
-  scope type1 *cmp##_type_1; \
-  scope type2 *cmp##_type_2;                                   \
-  scope int cmp##_BSEARCH_CMP_FN(const void *, const void *);          \
-  scope int cmp(const type1 const *, const type2 const *);
+#define _DECLARE_OBJ_BSEARCH_CMP_FN(scope, type1, type2, nm)   \
+  static int nm##_cmp_BSEARCH_CMP_FN(const void *, const void *); \
+  static int nm##_cmp(type1 const *, type2 const *); \
+  scope type2 * OBJ_bsearch_##nm(type1 *key, type2 const *base, int num)
 
 #define DECLARE_OBJ_BSEARCH_CMP_FN(type1, type2, cmp)  \
   _DECLARE_OBJ_BSEARCH_CMP_FN(static, type1, type2, cmp)
-#define DECLARE_OBJ_BSEARCH_GLOBAL_CMP_FN(type1, type2, cmp)   \
-  _DECLARE_OBJ_BSEARCH_CMP_FN(, type1, type2, cmp)
+#define DECLARE_OBJ_BSEARCH_GLOBAL_CMP_FN(type1, type2, nm)    \
+  type2 * OBJ_bsearch_##nm(type1 *key, type2 const *base, int num)
 
 /*
  * Unsolved problem: if a type is actually a pointer type, like
@@ -1054,13 +1055,19 @@ const void *    OBJ_bsearch_ex(const void *key,const void *base,int num,
  * the non-constness means a lot of complication, and in practice
  * comparison routines do always not touch their arguments.
  */
-#define _IMPLEMENT_OBJ_BSEARCH_CMP_FN(scope, type1, type2, cmp)        \
-  scope int cmp##_BSEARCH_CMP_FN(const void *a_, const void *b_)       \
+#define _IMPLEMENT_OBJ_BSEARCH_CMP_FN(scope, type1, type2, nm) \
+  static int nm##_cmp_BSEARCH_CMP_FN(const void *a_, const void *b_)   \
       { \
-      const type1 const *a = a_; \
-      const type2 const *b = b_; \
-      return cmp(a,b); \
-      }
+      type1 const *a = a_; \
+      type2 const *b = b_; \
+      return nm##_cmp(a,b); \
+      } \
+  scope type2 *OBJ_bsearch_##nm(type1 *key, type2 const *base, int num) \
+      { \
+      return (type2 *)OBJ_bsearch_(key, base, num, sizeof(type2), \
+                                       nm##_cmp_BSEARCH_CMP_FN); \
+      } \
+      extern void dummy_prototype(void)
 
 #define IMPLEMENT_OBJ_BSEARCH_CMP_FN(type1, type2, cmp) \
   _IMPLEMENT_OBJ_BSEARCH_CMP_FN(static, type1, type2, cmp)
@@ -1070,10 +1077,17 @@ const void *    OBJ_bsearch_ex(const void *key,const void *base,int num,
 #define OBJ_bsearch(type1,key,type2,base,num,cmp)                             \
   ((type2 *)OBJ_bsearch_(CHECKED_PTR_OF(type1,key),CHECKED_PTR_OF(type2,base), \
                         num,sizeof(type2),                             \
-                        (cmp##_type_1=CHECKED_PTR_OF(type1,cmp##_type_1), \
-                         cmp##_type_2=CHECKED_PTR_OF(type2,cmp##_type_2), \
+                        ((void)CHECKED_PTR_OF(type1,cmp##_type_1),     \
+                         (void)CHECKED_PTR_OF(type2,cmp##_type_2),     \
                          cmp##_BSEARCH_CMP_FN)))
 
+#define OBJ_bsearch_ex(type1,key,type2,base,num,cmp,flags)                     \
+  ((type2 *)OBJ_bsearch_ex_(CHECKED_PTR_OF(type1,key),CHECKED_PTR_OF(type2,base), \
+                        num,sizeof(type2),                             \
+                        ((void)CHECKED_PTR_OF(type1,cmp##_type_1),     \
+                         (void)type_2=CHECKED_PTR_OF(type2,cmp##_type_2), \
+                         cmp##_BSEARCH_CMP_FN)),flags)
+
 int            OBJ_new_nid(int num);
 int            OBJ_add_object(const ASN1_OBJECT *obj);
 int            OBJ_create(const char *oid,const char *sn,const char *ln);