X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=fish%2Foptions.h;h=9b9aee5e9916f37adb525660b5c857b5de259ffe;hb=5c3c7e8825341e18c9449976f8a321a04cc78d79;hp=155aad8954343488ecc03b0011e6743decb5cc22;hpb=c5cb65f0aac3298e634b183f73fda6644a158018;p=libguestfs.git diff --git a/fish/options.h b/fish/options.h index 155aad8..9b9aee5 100644 --- a/fish/options.h +++ b/fish/options.h @@ -1,5 +1,5 @@ /* libguestfs - guestfish and guestmount shared option parsing - * Copyright (C) 2010 Red Hat Inc. + * Copyright (C) 2010-2011 Red Hat Inc. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -67,6 +67,7 @@ /* Provided by guestfish or guestmount. */ extern guestfs_h *g; extern int read_only; +extern int live; extern int verbose; extern int inspector; extern int keys_from_stdin; @@ -77,6 +78,16 @@ extern const char *program_name; /* List of drives added via -a, -d or -N options. */ struct drv { struct drv *next; + + char *device; /* Device name inside the appliance (eg. /dev/sda). + * This is filled in when we add the drives in + * add_drives. Note that guests (-d option) may + * have multiple drives, in which case this is the + * first drive, and nr_drives is the number of + * drives used. + */ + int nr_drives; /* number of drives for this guest */ + enum { drv_a, drv_d, drv_N } type; union { struct { @@ -90,7 +101,6 @@ struct drv { char *filename; /* disk filename (testX.img) */ void *data; /* prepared type */ void (*data_free)(void*); /* function to free 'data' */ - char *device; /* device inside the appliance */ } N; }; }; @@ -99,8 +109,12 @@ struct mp { struct mp *next; char *device; char *mountpoint; + char *options; }; +/* in config.c */ +extern void parse_config (void); + /* in inspect.c */ extern void inspect_mount (void); extern void print_inspect_prompt (void); @@ -131,6 +145,8 @@ extern int add_libvirt_drives (const char *guest); exit (EXIT_FAILURE); \ } \ drv->type = drv_a; \ + drv->device = NULL; \ + drv->nr_drives = -1; \ drv->a.filename = optarg; \ drv->a.format = format; \ drv->next = drvs; \ @@ -146,6 +162,8 @@ extern int add_libvirt_drives (const char *guest); exit (EXIT_FAILURE); \ } \ drv->type = drv_d; \ + drv->device = NULL; \ + drv->nr_drives = -1; \ drv->d.guest = optarg; \ drv->next = drvs; \ drvs = drv @@ -159,12 +177,20 @@ extern int add_libvirt_drives (const char *guest); perror ("malloc"); \ exit (EXIT_FAILURE); \ } \ + mp->options = NULL; \ + mp->mountpoint = bad_cast ("/"); \ p = strchr (optarg, ':'); \ if (p) { \ *p = '\0'; \ - mp->mountpoint = p+1; \ - } else \ - mp->mountpoint = bad_cast ("/"); \ + p++; \ + mp->mountpoint = p; \ + p = strchr (p, ':'); \ + if (p) { \ + *p = '\0'; \ + p++; \ + mp->options = p; \ + } \ + } \ mp->device = optarg; \ mp->next = mps; \ mps = mp