[lvm-devel] [PATCH] Use struct cmd_context* as type for lvm2_handle_t with hidden cmd_context. Accessors and mutators have to be used. (lib/lvm2.h)

Dave Wysochanski dwysocha at redhat.com
Thu Dec 11 18:45:14 UTC 2008


On Thu, 2008-12-11 at 17:43 +0100, Thomas Woerner wrote:
> ---
>  lib/lvm2.h      |   23 +++++++++++------------
>  test/api/test.c |   13 ++++++-------
>  2 files changed, 17 insertions(+), 19 deletions(-)
> 
> diff --git a/lib/lvm2.h b/lib/lvm2.h
> index 8ddaf68..b131fd7 100644
> --- a/lib/lvm2.h
> +++ b/lib/lvm2.h
> @@ -1,5 +1,4 @@
>  /*
> - * Copyright (C) 2001-2004 Sistina Software, Inc. All rights reserved.  
>   * Copyright (C) 2004-2008 Red Hat, Inc. All rights reserved.
>   *
>   * This file is part of LVM2.
> @@ -17,37 +16,37 @@
>  
>  #include <stdint.h>
>  
> +/*** Library Initialisation ***/
> +
>  /*
> - * Library Initialisation
> - * FIXME: For now just #define lvm2_create() and lvm2_destroy() to 
> - * create_toolcontext() and destroy_toolcontext()
> + * lvm2_handle_t
>   */
> -struct arg;
> -struct cmd_context;
> -struct cmd_context *create_toolcontext(struct arg *the_args, unsigned is_static, unsigned is_long_lived);
> -void destroy_toolcontext(struct cmd_context *cmd);
> +struct cmd_context; /* private context */
> +typedef struct cmd_context* lvm2_handle_t;
>  
>  /*
>   * lvm2_create
> -lvm_handle_t lvm2_create(void);
>   *
>   * Description: Create an LVM2 handle used in many other APIs.
>   *
> + * Parameters:
> + * - sys_dir: Directory containing lvm.conf and other LVM system files,
> + *            overwritten by LVM_SYSTEM_DIR environment variable (if set)
> + *
>   * Returns:
>   * NULL: Fail - unable to initialise handle.
>   * non-NULL: Success - valid LVM2 handle returned
>   */
> -#define lvm2_create(X) create_toolcontext(NULL,0,1)
> +lvm2_handle_t lvm2_create(const char *sys_dir);
>  
>  /*
>   * lvm2_destroy
> -void lvm2_destroy(lvm_handle_t h);
>   *
>   * Description: Destroy an LVM2 handle allocated with lvm2_create
>   *
>   * Parameters:
>   * - h (IN): handle obtained from lvm2_create
>   */
> -#define lvm2_destroy(X) destroy_toolcontext(X)
> +void lvm2_destroy(lvm2_handle_t h);

Might have been nice to leave the #defines until the later patch when
you actually add these functions but no big deal.

>  
>  #endif
> diff --git a/test/api/test.c b/test/api/test.c
> index de53c46..866be8f 100644
> --- a/test/api/test.c
> +++ b/test/api/test.c
> @@ -48,7 +48,7 @@ static int lvm_split(char *str, int *argc, char **argv, int max)
>  	return *argc;
>  }
>  
> -static int lvmapi_test_shell(void *h)
> +static int lvmapi_test_shell(lvm2_handle_t libh)
>  {
>  	int argc, i;
>  	char *input = NULL, *args[MAX_ARGS], **argv;
> @@ -99,18 +99,17 @@ static int lvmapi_test_shell(void *h)
>  		      
>  int main (int argc, char *argv[])
>  {
> -	void *h;
> +	lvm2_handle_t libh;
>  
> -	h = lvm2_create();
> -	if (!h) {
> +	libh = lvm2_create(NULL);
> +	if (!libh) {
>  		printf("Unable to open lvm library instance\n");
>  		return 1;
>  	}
>  
> -	lvmapi_test_shell(h);
> +	lvmapi_test_shell(libh);
>  
> -	if (h)
> -		lvm2_destroy(h);
> +	lvm2_destroy(libh);
>  	return 0;
>  }
>  

Looks ok.




More information about the lvm-devel mailing list