This is mostly code motion but I had to remove the compile-time COMPILING_GUESTFISH and COMPILING_VIRT_RESCUE macros and replace them with runtime constants and checks. --- Makefile.am | 2 +- align/Makefile.am | 3 +- align/scan.c | 2 ++ cat/Makefile.am | 15 ++++++--- cat/cat.c | 2 ++ cat/filesystems.c | 2 ++ cat/log.c | 2 ++ cat/ls.c | 2 ++ cat/tail.c | 2 ++ common/options/Makefile.am | 47 +++++++++++++++++++++++++++ {fish => common/options}/decrypt.c | 0 {fish => common/options}/display-options.c | 0 {fish => common/options}/display-options.h | 0 {fish => common/options}/domain.c | 0 {fish => common/options}/inspect.c | 1 - {fish => common/options}/keys.c | 0 {fish => common/options}/options.c | 12 +++---- {fish => common/options}/options.h | 13 ++------ {fish => common/options}/uri.c | 0 {fish => common/options}/uri.h | 0 configure.ac | 1 + df/Makefile.am | 3 +- df/main.c | 6 ++++ diff/Makefile.am | 3 +- diff/diff.c | 2 ++ docs/C_SOURCE_FILES | 20 ++++++------ docs/guestfs-hacking.pod | 4 +++ edit/Makefile.am | 3 +- edit/edit.c | 2 ++ fish/Makefile.am | 52 ++++-------------------------- fish/fish.c | 2 ++ format/Makefile.am | 3 +- format/format.c | 2 ++ fuse/Makefile.am | 7 ++-- fuse/guestmount.c | 2 ++ inspector/Makefile.am | 3 +- inspector/inspector.c | 2 ++ make-fs/Makefile.am | 3 +- make-fs/make-fs.c | 2 ++ mllib/Makefile.am | 7 ++-- po/POTFILES | 15 +++++---- rescue/Makefile.am | 15 ++------- rescue/rescue.c | 2 ++ 43 files changed, 152 insertions(+), 114 deletions(-) create mode 100644 common/options/Makefile.am rename {fish => common/options}/decrypt.c (100%) rename {fish => common/options}/display-options.c (100%) rename {fish => common/options}/display-options.h (100%) rename {fish => common/options}/domain.c (100%) rename {fish => common/options}/inspect.c (99%) rename {fish => common/options}/keys.c (100%) rename {fish => common/options}/options.c (98%) rename {fish => common/options}/options.h (98%) rename {fish => common/options}/uri.c (100%) rename {fish => common/options}/uri.h (100%) diff --git a/Makefile.am b/Makefile.am index a7fddd4..604ca51 100644 --- a/Makefile.am +++ b/Makefile.am @@ -89,7 +89,7 @@ SUBDIRS += tests/tsk endif # Common code used by the tools. -SUBDIRS += common/visit +SUBDIRS += common/visit common/options # libguestfs-test-tool SUBDIRS += test-tool diff --git a/align/Makefile.am b/align/Makefile.am index 0568efb..9854313 100644 --- a/align/Makefile.am +++ b/align/Makefile.am @@ -41,6 +41,7 @@ virt_alignment_scan_CPPFLAGS = \ -DGUESTFS_WARN_DEPRECATED=1 \ -I$(top_srcdir)/common/utils -I$(top_builddir)/common/utils \ -I$(top_srcdir)/lib -I$(top_builddir)/lib \ + -I$(top_srcdir)/common/options -I$(top_builddir)/common/options \ -I$(top_srcdir)/df \ -I$(top_srcdir)/fish \ -I$(srcdir)/../gnulib/lib -I../gnulib/lib \ @@ -53,9 +54,9 @@ virt_alignment_scan_CFLAGS = \ $(LIBVIRT_CFLAGS) virt_alignment_scan_LDADD = \ + $(top_builddir)/common/options/liboptions.la \ $(top_builddir)/common/utils/libutils.la \ $(top_builddir)/lib/libguestfs.la \ - $(top_builddir)/fish/libfishcommon.la \ $(LIBXML2_LIBS) \ $(LIBVIRT_LIBS) \ $(LTLIBINTL) \ diff --git a/align/scan.c b/align/scan.c index 953ee91..175df1e 100644 --- a/align/scan.c +++ b/align/scan.c @@ -66,6 +66,8 @@ int keys_from_stdin = 0; int echo_keys = 0; const char *libvirt_uri = NULL; int inspector = 0; +int in_guestfish = 0; +int in_virt_rescue = 0; static int quiet = 0; /* --quiet */ static int uuid = 0; /* --uuid */ diff --git a/cat/Makefile.am b/cat/Makefile.am index 632f4c0..14d23b0 100644 --- a/cat/Makefile.am +++ b/cat/Makefile.am @@ -45,6 +45,7 @@ virt_cat_CPPFLAGS = \ -DLOCALEBASEDIR=\""$(datadir)/locale"\" \ -I$(top_srcdir)/common/utils -I$(top_builddir)/common/utils \ -I$(top_srcdir)/lib -I$(top_builddir)/lib \ + -I$(top_srcdir)/common/options -I$(top_builddir)/common/options \ -I$(top_srcdir)/fish \ -I$(srcdir)/../gnulib/lib -I../gnulib/lib @@ -53,9 +54,9 @@ virt_cat_CFLAGS = \ $(LIBXML2_CFLAGS) virt_cat_LDADD = \ + $(top_builddir)/common/options/liboptions.la \ $(top_builddir)/common/utils/libutils.la \ $(top_builddir)/lib/libguestfs.la \ - $(top_builddir)/fish/libfishcommon.la \ $(LIBXML2_LIBS) \ $(LIBVIRT_LIBS) \ $(LTLIBINTL) \ @@ -70,6 +71,7 @@ virt_filesystems_CPPFLAGS = \ -DLOCALEBASEDIR=\""$(datadir)/locale"\" \ -I$(top_srcdir)/common/utils -I$(top_builddir)/common/utils \ -I$(top_srcdir)/lib -I$(top_builddir)/lib \ + -I$(top_srcdir)/common/options -I$(top_builddir)/common/options \ -I$(top_srcdir)/fish \ -I$(srcdir)/../gnulib/lib -I../gnulib/lib @@ -78,9 +80,9 @@ virt_filesystems_CFLAGS = \ $(LIBXML2_CFLAGS) virt_filesystems_LDADD = \ + $(top_builddir)/common/options/liboptions.la \ $(top_builddir)/common/utils/libutils.la \ $(top_builddir)/lib/libguestfs.la \ - $(top_builddir)/fish/libfishcommon.la \ $(LIBXML2_LIBS) \ $(LIBVIRT_LIBS) \ $(LTLIBINTL) \ @@ -95,6 +97,7 @@ virt_log_CPPFLAGS = \ -DLOCALEBASEDIR=\""$(datadir)/locale"\" \ -I$(top_srcdir)/common/utils -I$(top_builddir)/common/utils \ -I$(top_srcdir)/lib -I$(top_builddir)/lib \ + -I$(top_srcdir)/common/options -I$(top_builddir)/common/options \ -I$(top_srcdir)/fish \ -I$(srcdir)/../gnulib/lib -I../gnulib/lib @@ -103,9 +106,9 @@ virt_log_CFLAGS = \ $(LIBXML2_CFLAGS) virt_log_LDADD = \ + $(top_builddir)/common/options/liboptions.la \ $(top_builddir)/common/utils/libutils.la \ $(top_builddir)/lib/libguestfs.la \ - $(top_builddir)/fish/libfishcommon.la \ $(LIBXML2_LIBS) \ $(LIBVIRT_LIBS) \ $(LTLIBINTL) \ @@ -121,6 +124,7 @@ virt_ls_CPPFLAGS = \ -I$(top_srcdir)/common/utils -I$(top_builddir)/common/utils \ -I$(top_srcdir)/lib -I$(top_builddir)/lib \ -I$(top_srcdir)/common/visit \ + -I$(top_srcdir)/common/options -I$(top_builddir)/common/options \ -I$(top_srcdir)/fish \ -I$(srcdir)/../gnulib/lib -I../gnulib/lib @@ -129,10 +133,10 @@ virt_ls_CFLAGS = \ $(LIBXML2_CFLAGS) virt_ls_LDADD = \ + $(top_builddir)/common/options/liboptions.la \ $(top_builddir)/common/visit/libvisit.la \ $(top_builddir)/common/utils/libutils.la \ $(top_builddir)/lib/libguestfs.la \ - $(top_builddir)/fish/libfishcommon.la \ $(LIBXML2_LIBS) \ $(LIBVIRT_LIBS) \ $(LTLIBINTL) \ @@ -147,6 +151,7 @@ virt_tail_CPPFLAGS = \ -DLOCALEBASEDIR=\""$(datadir)/locale"\" \ -I$(top_srcdir)/common/utils -I$(top_builddir)/common/utils \ -I$(top_srcdir)/lib -I$(top_builddir)/lib \ + -I$(top_srcdir)/common/options -I$(top_builddir)/common/options \ -I$(top_srcdir)/fish \ -I$(srcdir)/../gnulib/lib -I../gnulib/lib @@ -155,9 +160,9 @@ virt_tail_CFLAGS = \ $(LIBXML2_CFLAGS) virt_tail_LDADD = \ + $(top_builddir)/common/options/liboptions.la \ $(top_builddir)/common/utils/libutils.la \ $(top_builddir)/lib/libguestfs.la \ - $(top_builddir)/fish/libfishcommon.la \ $(LIBXML2_LIBS) \ $(LIBVIRT_LIBS) \ $(LTLIBINTL) \ diff --git a/cat/cat.c b/cat/cat.c index 1ac32d7..90f6fb0 100644 --- a/cat/cat.c +++ b/cat/cat.c @@ -47,6 +47,8 @@ int keys_from_stdin = 0; int echo_keys = 0; const char *libvirt_uri = NULL; int inspector = 1; +int in_guestfish = 0; +int in_virt_rescue = 0; static int do_cat (int argc, char *argv[]); diff --git a/cat/filesystems.c b/cat/filesystems.c index 73967d7..1036c6f 100644 --- a/cat/filesystems.c +++ b/cat/filesystems.c @@ -49,6 +49,8 @@ int keys_from_stdin = 0; int echo_keys = 0; const char *libvirt_uri = NULL; int inspector = 0; +int in_guestfish = 0; +int in_virt_rescue = 0; static int csv = 0; /* --csv */ static int human = 0; /* --human-readable|-h */ diff --git a/cat/log.c b/cat/log.c index 84528bd..cc180ec 100644 --- a/cat/log.c +++ b/cat/log.c @@ -51,6 +51,8 @@ int keys_from_stdin = 0; int echo_keys = 0; const char *libvirt_uri = NULL; int inspector = 1; +int in_guestfish = 0; +int in_virt_rescue = 0; #define JOURNAL_DIR "/var/log/journal" diff --git a/cat/ls.c b/cat/ls.c index 2e327d9..e0b5ff8 100644 --- a/cat/ls.c +++ b/cat/ls.c @@ -52,6 +52,8 @@ int keys_from_stdin = 0; int echo_keys = 0; const char *libvirt_uri = NULL; int inspector = 1; +int in_guestfish = 0; +int in_virt_rescue = 0; static int csv = 0; static int human = 0; diff --git a/cat/tail.c b/cat/tail.c index 0066be7..8785d45 100644 --- a/cat/tail.c +++ b/cat/tail.c @@ -51,6 +51,8 @@ int keys_from_stdin = 0; int echo_keys = 0; const char *libvirt_uri = NULL; int inspector = 1; +int in_guestfish = 0; +int in_virt_rescue = 0; static int do_tail (int argc, char *argv[], struct drv *drvs, struct mp *mps); static time_t disk_mtime (struct drv *drvs); diff --git a/common/options/Makefile.am b/common/options/Makefile.am new file mode 100644 index 0000000..f86d5b7 --- /dev/null +++ b/common/options/Makefile.am @@ -0,0 +1,47 @@ +# libguestfs +# Copyright (C) 2009-2017 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 +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +include $(top_srcdir)/subdir-rules.mk + +# liboptions.la contains guestfish code which is used in other +# C tools for options parsing and a few other things +noinst_LTLIBRARIES = liboptions.la + +liboptions_la_SOURCES = \ + decrypt.c \ + display-options.h \ + display-options.c \ + domain.c \ + inspect.c \ + keys.c \ + options.h \ + options.c \ + uri.h \ + uri.c +liboptions_la_CPPFLAGS = \ + -DGUESTFS_WARN_DEPRECATED=1 \ + -I$(top_srcdir)/common/utils -I$(top_builddir)/common/utils \ + -I$(top_srcdir)/lib -I$(top_builddir)/lib \ + -I$(top_srcdir)/gnulib/lib -I$(top_builddir)/gnulib/lib +liboptions_la_CFLAGS = \ + $(WARN_CFLAGS) $(WERROR_CFLAGS) \ + $(LIBXML2_CFLAGS) +liboptions_la_LIBADD = \ + $(top_builddir)/common/utils/libutils.la \ + $(top_builddir)/lib/libguestfs.la \ + $(LIBXML2_LIBS) \ + $(LTLIBINTL) diff --git a/fish/decrypt.c b/common/options/decrypt.c similarity index 100% rename from fish/decrypt.c rename to common/options/decrypt.c diff --git a/fish/display-options.c b/common/options/display-options.c similarity index 100% rename from fish/display-options.c rename to common/options/display-options.c diff --git a/fish/display-options.h b/common/options/display-options.h similarity index 100% rename from fish/display-options.h rename to common/options/display-options.h diff --git a/fish/domain.c b/common/options/domain.c similarity index 100% rename from fish/domain.c rename to common/options/domain.c diff --git a/fish/inspect.c b/common/options/inspect.c similarity index 99% rename from fish/inspect.c rename to common/options/inspect.c index edfd2d4..bb4ee87 100644 --- a/fish/inspect.c +++ b/common/options/inspect.c @@ -38,7 +38,6 @@ #include "guestfs.h" /* These definitions ensure we get all extern definitions from the header. */ -#define COMPILING_GUESTFISH 1 #include "options.h" /* Global that saves the root device between inspect_mount and diff --git a/fish/keys.c b/common/options/keys.c similarity index 100% rename from fish/keys.c rename to common/options/keys.c diff --git a/fish/options.c b/common/options/options.c similarity index 98% rename from fish/options.c rename to common/options/options.c index b88c194..a531e2e 100644 --- a/fish/options.c +++ b/common/options/options.c @@ -198,8 +198,8 @@ add_drives_handle (guestfs_h *g, struct drv *drv, char next_drive) next_drive += r; break; -#if COMPILING_GUESTFISH case drv_N: + if (!in_guestfish) abort (); /* -N option is not affected by --ro */ r = guestfs_add_drive_opts (g, drv->N.filename, GUESTFS_ADD_DRIVE_OPTS_FORMAT, "raw", @@ -210,10 +210,9 @@ add_drives_handle (guestfs_h *g, struct drv *drv, char next_drive) drv->nr_drives = 1; next_drive++; break; -#endif -#if COMPILING_VIRT_RESCUE case drv_scratch: + if (!in_virt_rescue) abort (); r = guestfs_add_drive_scratch (g, drv->scratch.size, -1); if (r == -1) exit (EXIT_FAILURE); @@ -221,7 +220,6 @@ add_drives_handle (guestfs_h *g, struct drv *drv, char next_drive) drv->nr_drives = 1; next_drive++; break; -#endif default: /* keep GCC happy */ abort (); @@ -341,17 +339,15 @@ free_drives (struct drv *drv) case drv_d: /* d.filename is optarg, don't free it */ break; -#if COMPILING_GUESTFISH case drv_N: + if (!in_guestfish) abort (); free (drv->N.filename); drv->N.data_free (drv->N.data); break; -#endif -#if COMPILING_VIRT_RESCUE case drv_scratch: + if (!in_virt_rescue) abort (); /* nothing */ break; -#endif default: ; /* keep GCC happy */ } free (drv); diff --git a/fish/options.h b/common/options/options.h similarity index 98% rename from fish/options.h rename to common/options/options.h index a0863ad..1598daf 100644 --- a/fish/options.h +++ b/common/options/options.h @@ -34,6 +34,8 @@ extern int inspector; extern int keys_from_stdin; extern int echo_keys; extern const char *libvirt_uri; +extern int in_guestfish; +extern int in_virt_rescue; /* List of drives added via -a, -d or -N options. NB: Unused fields * in this struct MUST be zeroed, ie. use calloc, not malloc. @@ -54,12 +56,8 @@ struct drv { drv_a, /* -a option (without URI) */ drv_uri, /* -a option (with URI) */ drv_d, /* -d option */ -#if COMPILING_GUESTFISH drv_N, /* -N option (guestfish only) */ -#endif -#if COMPILING_VIRT_RESCUE drv_scratch, /* --scratch option (virt-rescue only) */ -#endif } type; union { struct { @@ -80,18 +78,14 @@ struct drv { struct { char *guest; /* guest name */ } d; -#if COMPILING_GUESTFISH struct { char *filename; /* disk filename (testX.img) */ void *data; /* prepared type */ void (*data_free)(void*); /* function to free 'data' */ } N; -#endif -#if COMPILING_VIRT_RESCUE struct { int64_t size; /* size of the disk in bytes */ } scratch; -#endif }; /* Opaque pointer. Not used by the options-parsing code, and so @@ -121,10 +115,7 @@ extern int add_libvirt_drives (guestfs_h *g, const char *guest); extern void inspect_mount_handle (guestfs_h *g); extern void inspect_mount_root (guestfs_h *g, const char *root); #define inspect_mount() inspect_mount_handle (g) - -#if COMPILING_GUESTFISH extern void print_inspect_prompt (void); -#endif /* in key.c */ extern char *read_key (const char *param); diff --git a/fish/uri.c b/common/options/uri.c similarity index 100% rename from fish/uri.c rename to common/options/uri.c diff --git a/fish/uri.h b/common/options/uri.h similarity index 100% rename from fish/uri.h rename to common/options/uri.h diff --git a/configure.ac b/configure.ac index a85a802..dbf5ce5 100644 --- a/configure.ac +++ b/configure.ac @@ -181,6 +181,7 @@ AC_CONFIG_FILES([Makefile builder/test-website/virt-builder/repos.d/libguestfs.conf cat/Makefile common/errnostring/Makefile + common/options/Makefile common/protocol/Makefile common/utils/Makefile common/visit/Makefile diff --git a/df/Makefile.am b/df/Makefile.am index d921372..e2eef59 100644 --- a/df/Makefile.am +++ b/df/Makefile.am @@ -43,6 +43,7 @@ virt_df_CPPFLAGS = \ -DLOCALEBASEDIR=\""$(datadir)/locale"\" \ -I$(top_srcdir)/common/utils -I$(top_builddir)/common/utils \ -I$(top_srcdir)/lib -I$(top_builddir)/lib \ + -I$(top_srcdir)/common/options -I$(top_builddir)/common/options \ -I$(top_srcdir)/fish \ -I$(srcdir)/../gnulib/lib -I../gnulib/lib @@ -53,9 +54,9 @@ virt_df_CFLAGS = \ $(LIBVIRT_CFLAGS) virt_df_LDADD = \ + $(top_builddir)/common/options/liboptions.la \ $(top_builddir)/common/utils/libutils.la \ $(top_builddir)/lib/libguestfs.la \ - $(top_builddir)/fish/libfishcommon.la \ $(LIBXML2_LIBS) \ $(LIBVIRT_LIBS) \ $(LTLIBINTL) \ diff --git a/df/main.c b/df/main.c index b4fe0e0..29a1a1d 100644 --- a/df/main.c +++ b/df/main.c @@ -55,6 +55,8 @@ int keys_from_stdin = 0; int echo_keys = 0; const char *libvirt_uri = NULL; int inspector = 0; +int in_guestfish = 0; +int in_virt_rescue = 0; int csv = 0; /* --csv */ int human = 0; /* --human-readable|-h */ @@ -349,6 +351,10 @@ single_drive_display_name (struct drv *drvs) if (name == NULL) error (EXIT_FAILURE, errno, "strdup"); break; + + case drv_N: + case drv_scratch: + abort (); /* Only used in guestfish or virt-rescue. */ } if (!name) diff --git a/diff/Makefile.am b/diff/Makefile.am index 8c9be75..5e71b74 100644 --- a/diff/Makefile.am +++ b/diff/Makefile.am @@ -33,6 +33,7 @@ virt_diff_CPPFLAGS = \ -I$(top_srcdir)/common/utils -I$(top_builddir)/common/utils \ -I$(top_srcdir)/lib -I$(top_builddir)/lib \ -I$(top_srcdir)/common/visit -I$(top_builddir)/common/visit \ + -I$(top_srcdir)/common/options -I$(top_builddir)/common/options \ -I$(top_srcdir)/cat -I$(top_srcdir)/fish \ -I$(srcdir)/../gnulib/lib -I../gnulib/lib @@ -41,10 +42,10 @@ virt_diff_CFLAGS = \ $(LIBXML2_CFLAGS) virt_diff_LDADD = \ + $(top_builddir)/common/options/liboptions.la \ $(top_builddir)/common/visit/libvisit.la \ $(top_builddir)/common/utils/libutils.la \ $(top_builddir)/lib/libguestfs.la \ - $(top_builddir)/fish/libfishcommon.la \ $(LIBXML2_LIBS) \ $(LIBVIRT_LIBS) \ $(LTLIBINTL) \ diff --git a/diff/diff.c b/diff/diff.c index 724c7d7..fc31ad3 100644 --- a/diff/diff.c +++ b/diff/diff.c @@ -60,6 +60,8 @@ int keys_from_stdin = 0; int echo_keys = 0; const char *libvirt_uri = NULL; int inspector = 1; +int in_guestfish = 0; +int in_virt_rescue = 0; static int atime = 0; static int csv = 0; diff --git a/docs/C_SOURCE_FILES b/docs/C_SOURCE_FILES index df8e89b..638509f 100644 --- a/docs/C_SOURCE_FILES +++ b/docs/C_SOURCE_FILES @@ -11,6 +11,16 @@ cat/filesystems.c cat/log.c cat/ls.c cat/tail.c +common/options/decrypt.c +common/options/display-options.c +common/options/display-options.h +common/options/domain.c +common/options/inspect.c +common/options/keys.c +common/options/options.c +common/options/options.h +common/options/uri.c +common/options/uri.h common/utils/cleanup.c common/utils/guestfs-internal-frontend-cleanups.h common/utils/guestfs-internal-frontend.h @@ -172,12 +182,8 @@ fish/cmds.c fish/completion.c fish/config.c fish/copy.c -fish/decrypt.c fish/destpaths.c -fish/display-options.c -fish/display-options.h fish/display.c -fish/domain.c fish/echo.c fish/edit.c fish/entries-0.c @@ -197,13 +203,9 @@ fish/fish.h fish/glob.c fish/help.c fish/hexedit.c -fish/inspect.c -fish/keys.c fish/lcd.c fish/man.c fish/more.c -fish/options.c -fish/options.h fish/prep-boot.c fish/prep-disk.c fish/prep-fs.c @@ -228,8 +230,6 @@ fish/setenv.c fish/supported.c fish/tilde.c fish/time.c -fish/uri.c -fish/uri.h fish/windows.c fish/windows.h format/format.c diff --git a/docs/guestfs-hacking.pod b/docs/guestfs-hacking.pod index 2df78ba..1244cd6 100644 --- a/docs/guestfs-hacking.pod +++ b/docs/guestfs-hacking.pod @@ -89,6 +89,10 @@ The communication protocol used between the library and the daemon running inside the appliance has to encode errnos as strings, which is handled by this library. +=item F<common/options> + +Common options parsing for guestfish, guestmount and some virt tools. + =item F<common/protocol> The XDR-based communication protocol used between the library diff --git a/edit/Makefile.am b/edit/Makefile.am index 602bced..317937b 100644 --- a/edit/Makefile.am +++ b/edit/Makefile.am @@ -39,6 +39,7 @@ virt_edit_CPPFLAGS = \ -DLOCALEBASEDIR=\""$(datadir)/locale"\" \ -I$(top_srcdir)/common/utils -I$(top_builddir)/common/utils \ -I$(top_srcdir)/lib -I$(top_builddir)/lib \ + -I$(top_srcdir)/common/options -I$(top_builddir)/common/options \ -I$(top_srcdir)/fish \ -I$(srcdir)/../gnulib/lib -I../gnulib/lib @@ -47,9 +48,9 @@ virt_edit_CFLAGS = \ $(LIBXML2_CFLAGS) virt_edit_LDADD = \ + $(top_builddir)/common/options/liboptions.la \ $(top_builddir)/common/utils/libutils.la \ $(top_builddir)/lib/libguestfs.la \ - $(top_builddir)/fish/libfishcommon.la \ $(LIBXML2_LIBS) \ $(LIBVIRT_LIBS) \ $(LTLIBINTL) \ diff --git a/edit/edit.c b/edit/edit.c index 1e1781d..2f986a3 100644 --- a/edit/edit.c +++ b/edit/edit.c @@ -52,6 +52,8 @@ int keys_from_stdin = 0; int echo_keys = 0; const char *libvirt_uri = NULL; int inspector = 1; +int in_guestfish = 0; +int in_virt_rescue = 0; static const char *backup_extension = NULL; static const char *perl_expr = NULL; diff --git a/fish/Makefile.am b/fish/Makefile.am index b0e783c..0c49abb 100644 --- a/fish/Makefile.am +++ b/fish/Makefile.am @@ -67,53 +67,10 @@ EXTRA_DIST = \ virt-tar-in.pod \ virt-tar-out.pod -# These source files (mostly related to option parsing) are shared -# between guestfish, guestmount and some other virt tools. Keep a -# convenient list here just so we know which ones are shared. These -# files must not include other guestfish files. -FISHCOMMON_SOURCE_FILES = \ - decrypt.c \ - display-options.h \ - display-options.c \ - domain.c \ - inspect.c \ - keys.c \ - options.h \ - options.c \ - uri.h \ - uri.c - -SHARED_SOURCE_FILES = \ - $(FISHCOMMON_SOURCE_FILES) \ - config.c \ - progress.h \ - progress.c - -# libfishcommon.la contains guestfish code which is used in other -# C tools. Note this convenience static library is *not* used in -# guestfish, as the sources are built with extra defines -# (e.g. -DCOMPILING_GUESTFISH) in that case. -libfishcommon_la_SOURCES = \ - $(FISHCOMMON_SOURCE_FILES) -libfishcommon_la_CPPFLAGS = \ - -DGUESTFS_WARN_DEPRECATED=1 \ - -I$(top_srcdir)/common/utils -I$(top_builddir)/common/utils \ - -I$(top_srcdir)/lib -I$(top_builddir)/lib \ - -I$(top_srcdir)/fish -I$(top_builddir)/fish \ - -I$(srcdir)/../gnulib/lib -I../gnulib/lib -libfishcommon_la_CFLAGS = \ - $(WARN_CFLAGS) $(WERROR_CFLAGS) \ - $(LIBXML2_CFLAGS) -libfishcommon_la_LIBADD = \ - $(top_builddir)/common/utils/libutils.la \ - $(top_builddir)/lib/libguestfs.la \ - $(LIBXML2_LIBS) \ - $(LTLIBINTL) - guestfish_SOURCES = \ $(generator_built) \ - $(SHARED_SOURCE_FILES) \ alloc.c \ + config.c \ cmds-gperf.h \ copy.c \ destpaths.c \ @@ -137,6 +94,8 @@ guestfish_SOURCES = \ prep-fs.c \ prep-lv.c \ prep-boot.c \ + progress.h \ + progress.c \ rc.c \ reopen.c \ setenv.c \ @@ -160,11 +119,11 @@ cmds-gperf.c: cmds-gperf.gperf mv $@-t $@ guestfish_CPPFLAGS = \ - -DCOMPILING_GUESTFISH=1 \ -DGUESTFS_WARN_DEPRECATED=1 \ -DLOCALEBASEDIR=\""$(datadir)/locale"\" \ -I$(top_srcdir)/common/utils -I$(top_builddir)/common/utils \ -I$(top_srcdir)/lib -I$(top_builddir)/lib \ + -I$(top_srcdir)/common/options -I$(top_builddir)/common/options \ -I$(top_srcdir)/fish -I$(top_builddir)/fish \ -I$(srcdir)/../gnulib/lib -I../gnulib/lib @@ -177,6 +136,7 @@ guestfish_LDADD = \ $(LIBCONFIG_LIBS) \ $(LIBREADLINE) \ $(LIBTINFO_LIBS) \ + $(top_builddir)/common/options/liboptions.la \ $(top_builddir)/common/utils/libutils.la \ $(top_builddir)/lib/libguestfs.la \ $(LIBXML2_LIBS) \ @@ -184,7 +144,7 @@ guestfish_LDADD = \ -lm # Make guestfish use the convenience libraries. -noinst_LTLIBRARIES = libcmds.la librc_protocol.la libfishcommon.la +noinst_LTLIBRARIES = libcmds.la librc_protocol.la guestfish_LDADD += libcmds.la librc_protocol.la ../gnulib/lib/libgnu.la if HAVE_RPCGEN diff --git a/fish/fish.c b/fish/fish.c index f9271cf..b7d63cf 100644 --- a/fish/fish.c +++ b/fish/fish.c @@ -105,6 +105,8 @@ int progress_bars = 0; int is_interactive = 0; const char *input_file = NULL; int input_lineno = 0; +int in_guestfish = 1; +int in_virt_rescue = 0; static void __attribute__((noreturn)) usage (int status) diff --git a/format/Makefile.am b/format/Makefile.am index 85bdb62..2d3cc77 100644 --- a/format/Makefile.am +++ b/format/Makefile.am @@ -32,6 +32,7 @@ virt_format_CPPFLAGS = \ -DLOCALEBASEDIR=\""$(datadir)/locale"\" \ -I$(top_srcdir)/common/utils -I$(top_builddir)/common/utils \ -I$(top_srcdir)/lib -I$(top_builddir)/lib \ + -I$(top_srcdir)/common/options -I$(top_builddir)/common/options \ -I$(top_srcdir)/fish \ -I$(srcdir)/../gnulib/lib -I../gnulib/lib @@ -41,9 +42,9 @@ virt_format_CFLAGS = \ $(LIBVIRT_CFLAGS) virt_format_LDADD = \ + $(top_builddir)/common/options/liboptions.la \ $(top_builddir)/common/utils/libutils.la \ $(top_builddir)/lib/libguestfs.la \ - $(top_builddir)/fish/libfishcommon.la \ $(LIBXML2_LIBS) \ $(LIBVIRT_LIBS) \ $(LTLIBINTL) \ diff --git a/format/format.c b/format/format.c index e70f32d..f23113b 100644 --- a/format/format.c +++ b/format/format.c @@ -47,6 +47,8 @@ int keys_from_stdin = 0; int echo_keys = 0; int inspector = 0; const char *libvirt_uri = NULL; +int in_guestfish = 0; +int in_virt_rescue = 0; static const char *filesystem = NULL; static const char *vg = NULL, *lv = NULL; diff --git a/fuse/Makefile.am b/fuse/Makefile.am index d234215..3509e77 100644 --- a/fuse/Makefile.am +++ b/fuse/Makefile.am @@ -46,6 +46,7 @@ guestmount_CPPFLAGS = \ -DLOCALEBASEDIR=\""$(datadir)/locale"\" \ -I$(top_srcdir)/common/utils -I$(top_builddir)/common/utils \ -I$(top_srcdir)/lib -I$(top_builddir)/lib \ + -I$(top_srcdir)/common/options -I$(top_builddir)/common/options \ -I$(top_srcdir)/fish \ -I$(srcdir)/../gnulib/lib -I../gnulib/lib @@ -58,9 +59,9 @@ guestmount_CFLAGS = \ guestmount_LDADD = \ $(FUSE_LIBS) \ $(LIBCONFIG_LIBS) \ + $(top_builddir)/common/options/liboptions.la \ $(top_builddir)/common/utils/libutils.la \ $(top_builddir)/lib/libguestfs.la \ - $(top_builddir)/fish/libfishcommon.la \ $(LIBXML2_LIBS) \ $(LIBVIRT_LIBS) \ $(LTLIBINTL) \ @@ -69,14 +70,13 @@ guestmount_LDADD = \ # guestunmount guestunmount_SOURCES = \ - ../fish/display-options.c \ - ../fish/display-options.h \ guestunmount.c guestunmount_CPPFLAGS = \ -DLOCALEBASEDIR=\""$(datadir)/locale"\" \ -I$(top_srcdir)/common/utils -I$(top_builddir)/common/utils \ -I$(top_srcdir)/lib -I$(top_builddir)/lib \ + -I$(top_srcdir)/common/options -I$(top_builddir)/common/options \ -I$(top_srcdir)/fish \ -I$(srcdir)/../gnulib/lib -I../gnulib/lib @@ -84,6 +84,7 @@ guestunmount_CFLAGS = \ $(WARN_CFLAGS) $(WERROR_CFLAGS) guestunmount_LDADD = \ + $(top_builddir)/common/options/liboptions.la \ $(top_builddir)/common/utils/libutils.la \ $(top_builddir)/lib/libguestfs.la \ $(LIBXML2_LIBS) \ diff --git a/fuse/guestmount.c b/fuse/guestmount.c index 27bda06..3839397 100644 --- a/fuse/guestmount.c +++ b/fuse/guestmount.c @@ -84,6 +84,8 @@ int inspector = 0; int keys_from_stdin = 0; int echo_keys = 0; const char *libvirt_uri; +int in_guestfish = 0; +int in_virt_rescue = 0; static void __attribute__((noreturn)) fuse_help (void) diff --git a/inspector/Makefile.am b/inspector/Makefile.am index 358a3f9..753e2c9 100644 --- a/inspector/Makefile.am +++ b/inspector/Makefile.am @@ -60,6 +60,7 @@ virt_inspector_CPPFLAGS = \ -DLOCALEBASEDIR=\""$(datadir)/locale"\" \ -I$(top_srcdir)/common/utils -I$(top_builddir)/common/utils \ -I$(top_srcdir)/lib -I$(top_builddir)/lib \ + -I$(top_srcdir)/common/options -I$(top_builddir)/common/options \ -I$(top_srcdir)/fish \ -I$(srcdir)/../gnulib/lib -I../gnulib/lib @@ -68,9 +69,9 @@ virt_inspector_CFLAGS = \ $(LIBXML2_CFLAGS) virt_inspector_LDADD = \ + $(top_builddir)/common/options/liboptions.la \ $(top_builddir)/common/utils/libutils.la \ $(top_builddir)/lib/libguestfs.la \ - $(top_builddir)/fish/libfishcommon.la \ $(LIBXML2_LIBS) \ $(LIBVIRT_LIBS) \ $(LTLIBINTL) \ diff --git a/inspector/inspector.c b/inspector/inspector.c index 8f9d04d..7a115c0 100644 --- a/inspector/inspector.c +++ b/inspector/inspector.c @@ -53,6 +53,8 @@ int keys_from_stdin = 0; int echo_keys = 0; const char *libvirt_uri = NULL; int inspector = 1; +int in_guestfish = 0; +int in_virt_rescue = 0; static const char *xpath = NULL; static int inspect_apps = 1; static int inspect_icon = 1; diff --git a/make-fs/Makefile.am b/make-fs/Makefile.am index 8d8971a..bef0e7b 100644 --- a/make-fs/Makefile.am +++ b/make-fs/Makefile.am @@ -32,6 +32,7 @@ virt_make_fs_CPPFLAGS = \ -DLOCALEBASEDIR=\""$(datadir)/locale"\" \ -I$(top_srcdir)/common/utils -I$(top_builddir)/common/utils \ -I$(top_srcdir)/lib -I$(top_builddir)/lib \ + -I$(top_srcdir)/common/options -I$(top_builddir)/common/options \ -I$(top_srcdir)/fish \ -I$(srcdir)/../gnulib/lib -I../gnulib/lib @@ -40,9 +41,9 @@ virt_make_fs_CFLAGS = \ $(LIBXML2_CFLAGS) virt_make_fs_LDADD = \ + $(top_builddir)/common/options/liboptions.la \ $(top_builddir)/common/utils/libutils.la \ $(top_builddir)/lib/libguestfs.la \ - $(top_builddir)/fish/libfishcommon.la \ $(LIBXML2_LIBS) \ $(LTLIBINTL) \ ../gnulib/lib/libgnu.la diff --git a/make-fs/make-fs.c b/make-fs/make-fs.c index 7a3ecd3..4fbef2d 100644 --- a/make-fs/make-fs.c +++ b/make-fs/make-fs.c @@ -48,6 +48,8 @@ const char *libvirt_uri; int live; int read_only; int verbose; +int in_guestfish = 0; +int in_virt_rescue = 0; static const char *format = "raw", *label = NULL, *partition = NULL, *size_str = NULL, *type = "ext2"; diff --git a/mllib/Makefile.am b/mllib/Makefile.am index b9a6cf3..9cb244c 100644 --- a/mllib/Makefile.am +++ b/mllib/Makefile.am @@ -71,10 +71,10 @@ SOURCES_ML = \ SOURCES_C = \ ../common/visit/visit.c \ - ../fish/decrypt.c \ - ../fish/keys.c \ + ../common/options/decrypt.c \ + ../common/options/keys.c \ + ../common/options/uri.c \ ../fish/progress.c \ - ../fish/uri.c \ common_utils-c.c \ dev_t-c.c \ exit-c.c \ @@ -113,6 +113,7 @@ libmllib_a_CPPFLAGS = \ -I$(top_srcdir)/common/utils \ -I$(top_srcdir)/lib \ -I$(top_srcdir)/common/visit \ + -I$(top_srcdir)/common/options \ -I$(top_srcdir)/fish libmllib_a_CFLAGS = \ $(WARN_CFLAGS) $(WERROR_CFLAGS) \ diff --git a/po/POTFILES b/po/POTFILES index 2eddd75..f16f321 100644 --- a/po/POTFILES +++ b/po/POTFILES @@ -12,6 +12,13 @@ cat/ls.c cat/tail.c common/errnostring/errnostring-gperf.c common/errnostring/errnostring.c +common/options/decrypt.c +common/options/display-options.c +common/options/domain.c +common/options/inspect.c +common/options/keys.c +common/options/options.c +common/options/uri.c common/utils/cleanup.c common/utils/structs-cleanup.c common/utils/structs-print.c @@ -156,15 +163,13 @@ erlang/dispatch.c erlang/main.c erlang/structs.c fish/alloc.c +fish/cmds-gperf.c fish/cmds.c fish/completion.c fish/config.c fish/copy.c -fish/decrypt.c fish/destpaths.c -fish/display-options.c fish/display.c -fish/domain.c fish/echo.c fish/edit.c fish/entries-0.c @@ -181,12 +186,9 @@ fish/fish.c fish/glob.c fish/help.c fish/hexedit.c -fish/inspect.c -fish/keys.c fish/lcd.c fish/man.c fish/more.c -fish/options.c fish/prep-boot.c fish/prep-disk.c fish/prep-fs.c @@ -208,7 +210,6 @@ fish/setenv.c fish/supported.c fish/tilde.c fish/time.c -fish/uri.c fish/windows.c format/format.c fuse/guestmount.c diff --git a/rescue/Makefile.am b/rescue/Makefile.am index 92ebc4a..00f965e 100644 --- a/rescue/Makefile.am +++ b/rescue/Makefile.am @@ -26,28 +26,18 @@ EXTRA_DIST = \ bin_PROGRAMS = virt-rescue SHARED_SOURCE_FILES = \ - ../fish/config.c \ - ../fish/decrypt.c \ - ../fish/display-options.h \ - ../fish/display-options.c \ - ../fish/domain.c \ - ../fish/inspect.c \ - ../fish/keys.c \ - ../fish/options.h \ - ../fish/options.c \ - ../fish/uri.h \ - ../fish/uri.c + ../fish/config.c virt_rescue_SOURCES = \ $(SHARED_SOURCE_FILES) \ rescue.c virt_rescue_CPPFLAGS = \ - -DCOMPILING_VIRT_RESCUE=1 \ -DGUESTFS_WARN_DEPRECATED=1 \ -DLOCALEBASEDIR=\""$(datadir)/locale"\" \ -I$(top_srcdir)/common/utils -I$(top_builddir)/common/utils \ -I$(top_srcdir)/lib -I$(top_builddir)/lib \ + -I$(top_srcdir)/common/options -I$(top_builddir)/common/options \ -I$(top_srcdir)/fish \ -I$(srcdir)/../gnulib/lib -I../gnulib/lib @@ -58,6 +48,7 @@ virt_rescue_CFLAGS = \ virt_rescue_LDADD = \ $(LIBCONFIG_LIBS) \ + $(top_builddir)/common/options/liboptions.la \ $(top_builddir)/common/utils/libutils.la \ $(top_builddir)/lib/libguestfs.la \ $(LIBXML2_LIBS) \ diff --git a/rescue/rescue.c b/rescue/rescue.c index 6730085..ed40ba6 100644 --- a/rescue/rescue.c +++ b/rescue/rescue.c @@ -51,6 +51,8 @@ int keys_from_stdin = 0; int echo_keys = 0; const char *libvirt_uri = NULL; int inspector = 0; +int in_guestfish = 0; +int in_virt_rescue = 1; static void __attribute__((noreturn)) usage (int status) -- 2.9.3