From 5b0a0544f2a7e4cc0666aea72fc45da2f17473a4 Mon Sep 17 00:00:00 2001 From: Geoff Thorpe Date: Sun, 8 Oct 2000 22:32:57 +0000 Subject: Time to get rid of some rather silly code duplication - some DSO_ctrl() commands are common to all DSO_METHODs, hence handle them at the top. --- crypto/dso/dso_lib.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'crypto/dso/dso_lib.c') diff --git a/crypto/dso/dso_lib.c b/crypto/dso/dso_lib.c index acd166697e..fc3d76034a 100644 --- a/crypto/dso/dso_lib.c +++ b/crypto/dso/dso_lib.c @@ -297,6 +297,22 @@ long DSO_ctrl(DSO *dso, int cmd, long larg, void *parg) DSOerr(DSO_F_DSO_CTRL,ERR_R_PASSED_NULL_PARAMETER); return(-1); } + /* We should intercept certain generic commands and only pass control + * to the method-specific ctrl() function if it's something we don't + * handle. */ + switch(cmd) + { + case DSO_CTRL_GET_FLAGS: + return dso->flags; + case DSO_CTRL_SET_FLAGS: + dso->flags = (int)larg; + return(0); + case DSO_CTRL_OR_FLAGS: + dso->flags |= (int)larg; + return(0); + default: + break; + } if((dso->meth == NULL) || (dso->meth->dso_ctrl == NULL)) { DSOerr(DSO_F_DSO_CTRL,DSO_R_UNSUPPORTED); -- cgit v1.2.3