Home | History | Annotate | Line # | Download | only in api
test.c revision 1.1.1.1.2.2
      1  1.1.1.1.2.2  jym /*	$NetBSD: test.c,v 1.1.1.1.2.2 2009/05/13 18:52:47 jym Exp $	*/
      2  1.1.1.1.2.2  jym 
      3  1.1.1.1.2.2  jym /*
      4  1.1.1.1.2.2  jym  * Copyright (C) 2001-2004 Sistina Software, Inc. All rights reserved.
      5  1.1.1.1.2.2  jym  * Copyright (C) 2004-2008 Red Hat, Inc. All rights reserved.
      6  1.1.1.1.2.2  jym  *
      7  1.1.1.1.2.2  jym  * This file is part of LVM2.
      8  1.1.1.1.2.2  jym  *
      9  1.1.1.1.2.2  jym  * This copyrighted material is made available to anyone wishing to use,
     10  1.1.1.1.2.2  jym  * modify, copy, or redistribute it subject to the terms and conditions
     11  1.1.1.1.2.2  jym  * of the GNU Lesser General Public License v.2.1.
     12  1.1.1.1.2.2  jym  *
     13  1.1.1.1.2.2  jym  * You should have received a copy of the GNU Lesser General Public License
     14  1.1.1.1.2.2  jym  * along with this program; if not, write to the Free Software Foundation,
     15  1.1.1.1.2.2  jym  * Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
     16  1.1.1.1.2.2  jym  */
     17  1.1.1.1.2.2  jym #include <stdio.h>
     18  1.1.1.1.2.2  jym #include <string.h>
     19  1.1.1.1.2.2  jym #include <stdlib.h>
     20  1.1.1.1.2.2  jym #include <readline/readline.h>
     21  1.1.1.1.2.2  jym #include "lvm2.h"
     22  1.1.1.1.2.2  jym 
     23  1.1.1.1.2.2  jym #define MAX_ARGS 64
     24  1.1.1.1.2.2  jym 
     25  1.1.1.1.2.2  jym static int lvm_split(char *str, int *argc, char **argv, int max)
     26  1.1.1.1.2.2  jym {
     27  1.1.1.1.2.2  jym 	char *b = str, *e;
     28  1.1.1.1.2.2  jym 	*argc = 0;
     29  1.1.1.1.2.2  jym 
     30  1.1.1.1.2.2  jym 	while (*b) {
     31  1.1.1.1.2.2  jym 		while (*b && isspace(*b))
     32  1.1.1.1.2.2  jym 			b++;
     33  1.1.1.1.2.2  jym 
     34  1.1.1.1.2.2  jym 		if ((!*b) || (*b == '#'))
     35  1.1.1.1.2.2  jym 			break;
     36  1.1.1.1.2.2  jym 
     37  1.1.1.1.2.2  jym 		e = b;
     38  1.1.1.1.2.2  jym 		while (*e && !isspace(*e))
     39  1.1.1.1.2.2  jym 			e++;
     40  1.1.1.1.2.2  jym 
     41  1.1.1.1.2.2  jym 		argv[(*argc)++] = b;
     42  1.1.1.1.2.2  jym 		if (!*e)
     43  1.1.1.1.2.2  jym 			break;
     44  1.1.1.1.2.2  jym 		*e++ = '\0';
     45  1.1.1.1.2.2  jym 		b = e;
     46  1.1.1.1.2.2  jym 		if (*argc == max)
     47  1.1.1.1.2.2  jym 			break;
     48  1.1.1.1.2.2  jym 	}
     49  1.1.1.1.2.2  jym 
     50  1.1.1.1.2.2  jym 	return *argc;
     51  1.1.1.1.2.2  jym }
     52  1.1.1.1.2.2  jym 
     53  1.1.1.1.2.2  jym static int lvmapi_test_shell(void *h)
     54  1.1.1.1.2.2  jym {
     55  1.1.1.1.2.2  jym 	int argc, i;
     56  1.1.1.1.2.2  jym 	char *input = NULL, *args[MAX_ARGS], **argv;
     57  1.1.1.1.2.2  jym 
     58  1.1.1.1.2.2  jym 	while (1) {
     59  1.1.1.1.2.2  jym 		free(input);
     60  1.1.1.1.2.2  jym 		input = readline("lvm> ");
     61  1.1.1.1.2.2  jym 
     62  1.1.1.1.2.2  jym 		/* EOF */
     63  1.1.1.1.2.2  jym 		if (!input) {
     64  1.1.1.1.2.2  jym 			printf("\n");
     65  1.1.1.1.2.2  jym 			break;
     66  1.1.1.1.2.2  jym 		}
     67  1.1.1.1.2.2  jym 
     68  1.1.1.1.2.2  jym 		/* empty line */
     69  1.1.1.1.2.2  jym 		if (!*input)
     70  1.1.1.1.2.2  jym 			continue;
     71  1.1.1.1.2.2  jym 
     72  1.1.1.1.2.2  jym 		argv = args;
     73  1.1.1.1.2.2  jym 
     74  1.1.1.1.2.2  jym 		if (lvm_split(input, &argc, argv, MAX_ARGS) == MAX_ARGS) {
     75  1.1.1.1.2.2  jym 			printf("Too many arguments, sorry.");
     76  1.1.1.1.2.2  jym 			continue;
     77  1.1.1.1.2.2  jym 		}
     78  1.1.1.1.2.2  jym 
     79  1.1.1.1.2.2  jym 		if (!strcmp(argv[0], "lvm")) {
     80  1.1.1.1.2.2  jym 			argv++;
     81  1.1.1.1.2.2  jym 			argc--;
     82  1.1.1.1.2.2  jym 		}
     83  1.1.1.1.2.2  jym 
     84  1.1.1.1.2.2  jym 		if (!argc)
     85  1.1.1.1.2.2  jym 			continue;
     86  1.1.1.1.2.2  jym 
     87  1.1.1.1.2.2  jym 		if (!strcmp(argv[0], "quit") || !strcmp(argv[0], "exit")) {
     88  1.1.1.1.2.2  jym 			printf("Exiting.\n");
     89  1.1.1.1.2.2  jym 			break;
     90  1.1.1.1.2.2  jym 		} else if (!strcmp(argv[0], "?") || !strcmp(argv[0], "help")) {
     91  1.1.1.1.2.2  jym 			printf("No commands defined\n");
     92  1.1.1.1.2.2  jym 		} else if (!strcmp(argv[0], "scan")) {
     93  1.1.1.1.2.2  jym 			for (i=1; i < argc; i++)
     94  1.1.1.1.2.2  jym 				printf("Scan a path!\n");
     95  1.1.1.1.2.2  jym 		}
     96  1.1.1.1.2.2  jym 	}
     97  1.1.1.1.2.2  jym 
     98  1.1.1.1.2.2  jym 	free(input);
     99  1.1.1.1.2.2  jym 	return 0;
    100  1.1.1.1.2.2  jym }
    101  1.1.1.1.2.2  jym 
    102  1.1.1.1.2.2  jym int main (int argc, char *argv[])
    103  1.1.1.1.2.2  jym {
    104  1.1.1.1.2.2  jym 	void *h;
    105  1.1.1.1.2.2  jym 
    106  1.1.1.1.2.2  jym 	h = lvm2_create();
    107  1.1.1.1.2.2  jym 	if (!h) {
    108  1.1.1.1.2.2  jym 		printf("Unable to open lvm library instance\n");
    109  1.1.1.1.2.2  jym 		return 1;
    110  1.1.1.1.2.2  jym 	}
    111  1.1.1.1.2.2  jym 
    112  1.1.1.1.2.2  jym 	lvmapi_test_shell(h);
    113  1.1.1.1.2.2  jym 
    114  1.1.1.1.2.2  jym 	if (h)
    115  1.1.1.1.2.2  jym 		lvm2_destroy(h);
    116  1.1.1.1.2.2  jym 	return 0;
    117  1.1.1.1.2.2  jym }
    118  1.1.1.1.2.2  jym 
    119