diff options
Diffstat (limited to 'usr/src/cmd/lofiadm/utils.c')
-rw-r--r-- | usr/src/cmd/lofiadm/utils.c | 32 |
1 files changed, 27 insertions, 5 deletions
diff --git a/usr/src/cmd/lofiadm/utils.c b/usr/src/cmd/lofiadm/utils.c index eee1e5b5d8..349fab1c2b 100644 --- a/usr/src/cmd/lofiadm/utils.c +++ b/usr/src/cmd/lofiadm/utils.c @@ -2,9 +2,8 @@ * CDDL HEADER START * * The contents of this file are subject to the terms of the - * Common Development and Distribution License, Version 1.0 only - * (the "License"). You may not use this file except in compliance - * with the License. + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. @@ -20,8 +19,8 @@ * CDDL HEADER END */ /* - * Copyright (c) 1999-2000 by Sun Microsystems, Inc. - * All rights reserved. + * Copyright 2007 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. */ #pragma ident "%Z%%M% %I% %E% SMI" @@ -37,9 +36,13 @@ #include <stdarg.h> #include <stdio.h> #include <errno.h> +#include <dlfcn.h> +#include <link.h> #include "utils.h" +static void *lib_hdl = NULL; + static const char PNAME_FMT[] = "%s: "; static const char ERRNO_FMT[] = ": %s\n"; @@ -112,3 +115,22 @@ valid_abspath(const char *p) return (1); } + +/* + * Wrapper for dlopen'ing a library. + * The caller must call closelib() once + * access to the library is no longer needed. + */ +void * +openlib(const char *lib) +{ + lib_hdl = dlopen(lib, RTLD_LAZY); + return (lib_hdl); +} + +void +closelib() +{ + if (lib_hdl != NULL) + (void) dlclose(lib_hdl); +} |