aboutsummaryrefslogtreecommitdiff
path: root/crypto/stack
diff options
context:
space:
mode:
authorDr. Stephen Henson <steve@openssl.org>1999-05-19 12:45:16 +0000
committerDr. Stephen Henson <steve@openssl.org>1999-05-19 12:45:16 +0000
commite84240d42289a131def633579cfdabfb6ebf557d (patch)
treeec455fe5f4865fc28309c3e5f5762eec155b4f7d /crypto/stack
parent054810ec0e02d7d15bf96945e2ea46d2e4147aa5 (diff)
downloadopenssl-e84240d42289a131def633579cfdabfb6ebf557d.zip
openssl-e84240d42289a131def633579cfdabfb6ebf557d.tar.gz
openssl-e84240d42289a131def633579cfdabfb6ebf557d.tar.bz2
New functions sk_set, sk_value and sk_num to replace existing macros: this is
to minimise the effects on existing code.
Diffstat (limited to 'crypto/stack')
-rw-r--r--crypto/stack/safestack.h4
-rw-r--r--crypto/stack/stack.c17
-rw-r--r--crypto/stack/stack.h10
3 files changed, 27 insertions, 4 deletions
diff --git a/crypto/stack/safestack.h b/crypto/stack/safestack.h
index 3c9fdba..d0823c0 100644
--- a/crypto/stack/safestack.h
+++ b/crypto/stack/safestack.h
@@ -92,11 +92,11 @@ STACK_OF(type) *sk_##type##_new_null() \
void sk_##type##_free(STACK_OF(type) *sk) \
{ sk_free((STACK *)sk); } \
int sk_##type##_num(const STACK_OF(type) *sk) \
- { return sk_num((const STACK *)sk); } \
+ { return M_sk_num((const STACK *)sk); } \
type *sk_##type##_value(const STACK_OF(type) *sk,int n) \
{ return (type *)sk_value((STACK *)sk,n); } \
type *sk_##type##_set(STACK_OF(type) *sk,int n,type *v) \
- { return (type *)(sk_value((STACK *)sk,n)=(char *)v); } \
+ { return (type *)(sk_set((STACK *)sk,n,(char *)v)); } \
void sk_##type##_zero(STACK_OF(type) *sk) \
{ sk_zero((STACK *)sk); } \
int sk_##type##_push(STACK_OF(type) *sk,type *v) \
diff --git a/crypto/stack/stack.c b/crypto/stack/stack.c
index 5a15a24..f1165b3 100644
--- a/crypto/stack/stack.c
+++ b/crypto/stack/stack.c
@@ -284,3 +284,20 @@ void sk_free(STACK *st)
Free((char *)st);
}
+int sk_num(STACK *st)
+{
+ if(st == NULL) return -1;
+ return st->num;
+}
+
+char *sk_value(STACK *st, int i)
+{
+ if(st == NULL) return NULL;
+ return st->data[i];
+}
+
+char *sk_set(STACK *st, int i, char *value)
+{
+ if(st == NULL) return NULL;
+ return (st->data[i] = value);
+}
diff --git a/crypto/stack/stack.h b/crypto/stack/stack.h
index 3629b0d..ec629d0 100644
--- a/crypto/stack/stack.h
+++ b/crypto/stack/stack.h
@@ -73,11 +73,17 @@ typedef struct stack_st
int (*comp)();
} STACK;
-#define sk_num(sk) ((sk)->num)
-#define sk_value(sk,n) ((sk)->data[n])
#define sk_new_null() sk_new(NULL)
+#define M_sk_num(sk) ((sk)->num)
+#define M_sk_value(sk,n) ((sk)->data[n])
+
+int sk_num(STACK *);
+char *sk_value(STACK *, int);
+
+char *sk_set(STACK *, int, char *);
+
STACK *sk_new(int (*cmp)());
void sk_free(STACK *);
void sk_pop_free(STACK *st, void (*func)());