Introduce OS specific cmdline argument handling and move SMB arg to os-posix.c
Introduce OS specific cmdline argument handling by calling os_parse_cmd_args() at the end of switch() statement. Move option enum to qemu-options.h and have it included from os-posix.c and os-win32.c in addition to vl.c. In addition move SMB argument to os-posix.c Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com> Acked-by: Juan Quintela <quintela@redhat.com> Acked-by: Richard Henderson <rth@redhat.com> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
This commit is contained in:
		@@ -259,6 +259,8 @@ vl.o: QEMU_CFLAGS+=$(GPROF_CFLAGS)
 | 
			
		||||
vl.o: QEMU_CFLAGS+=$(SDL_CFLAGS)
 | 
			
		||||
 | 
			
		||||
vl.o: qemu-options.def
 | 
			
		||||
os-posix.o: qemu-options.def
 | 
			
		||||
os-win32.o: qemu-options.def
 | 
			
		||||
 | 
			
		||||
qemu-options.def: $(SRC_PATH)/qemu-options.hx
 | 
			
		||||
	$(call quiet-command,sh $(SRC_PATH)/hxtool -h < $< > $@,"  GEN   $(TARGET_DIR)$@")
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										19
									
								
								os-posix.c
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								os-posix.c
									
									
									
									
									
								
							@@ -33,6 +33,8 @@
 | 
			
		||||
/* Needed early for CONFIG_BSD etc. */
 | 
			
		||||
#include "config-host.h"
 | 
			
		||||
#include "sysemu.h"
 | 
			
		||||
#include "net/slirp.h"
 | 
			
		||||
#include "qemu-options.h"
 | 
			
		||||
 | 
			
		||||
void os_setup_early_signal_handling(void)
 | 
			
		||||
{
 | 
			
		||||
@@ -130,3 +132,20 @@ char *os_find_datadir(const char *argv0)
 | 
			
		||||
}
 | 
			
		||||
#undef SHARE_SUFFIX
 | 
			
		||||
#undef BUILD_SUFFIX
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Parse OS specific command line options.
 | 
			
		||||
 * return 0 if option handled, -1 otherwise
 | 
			
		||||
 */
 | 
			
		||||
void os_parse_cmd_args(int index, const char *optarg)
 | 
			
		||||
{
 | 
			
		||||
    switch (index) {
 | 
			
		||||
#ifdef CONFIG_SLIRP
 | 
			
		||||
    case QEMU_OPTION_smb:
 | 
			
		||||
        if (net_slirp_smb(optarg) < 0)
 | 
			
		||||
            exit(1);
 | 
			
		||||
        break;
 | 
			
		||||
#endif
 | 
			
		||||
    }
 | 
			
		||||
    return;
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										10
									
								
								os-win32.c
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								os-win32.c
									
									
									
									
									
								
							@@ -31,6 +31,7 @@
 | 
			
		||||
#include <sys/time.h>
 | 
			
		||||
#include "config-host.h"
 | 
			
		||||
#include "sysemu.h"
 | 
			
		||||
#include "qemu-options.h"
 | 
			
		||||
 | 
			
		||||
/***********************************************************/
 | 
			
		||||
/* Polling handling */
 | 
			
		||||
@@ -204,3 +205,12 @@ char *os_find_datadir(const char *argv0)
 | 
			
		||||
    }
 | 
			
		||||
    return NULL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Parse OS specific command line options.
 | 
			
		||||
 * return 0 if option handled, -1 otherwise
 | 
			
		||||
 */
 | 
			
		||||
void os_parse_cmd_args(int index, const char *optarg)
 | 
			
		||||
{
 | 
			
		||||
    return;
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										41
									
								
								qemu-options.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								qemu-options.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,41 @@
 | 
			
		||||
/*
 | 
			
		||||
 * qemu-options.h
 | 
			
		||||
 *
 | 
			
		||||
 * Defines needed for command line argument processing.
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright (c) 2003-2008 Fabrice Bellard
 | 
			
		||||
 * Copyright (c) 2010 Jes Sorensen <Jes.Sorensen@redhat.com>
 | 
			
		||||
 *
 | 
			
		||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
			
		||||
 * of this software and associated documentation files (the "Software"), to deal
 | 
			
		||||
 * in the Software without restriction, including without limitation the rights
 | 
			
		||||
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 | 
			
		||||
 * copies of the Software, and to permit persons to whom the Software is
 | 
			
		||||
 * furnished to do so, subject to the following conditions:
 | 
			
		||||
 *
 | 
			
		||||
 * The above copyright notice and this permission notice shall be included in
 | 
			
		||||
 * all copies or substantial portions of the Software.
 | 
			
		||||
 *
 | 
			
		||||
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
			
		||||
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
			
		||||
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
 | 
			
		||||
 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
			
		||||
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 | 
			
		||||
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 | 
			
		||||
 * THE SOFTWARE.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef _QEMU_OPTIONS_H_
 | 
			
		||||
#define _QEMU_OPTIONS_H_
 | 
			
		||||
 | 
			
		||||
enum {
 | 
			
		||||
#define DEF(option, opt_arg, opt_enum, opt_help, arch_mask)     \
 | 
			
		||||
    opt_enum,
 | 
			
		||||
#define DEFHEADING(text)
 | 
			
		||||
#include "qemu-options.def"
 | 
			
		||||
#undef DEF
 | 
			
		||||
#undef DEFHEADING
 | 
			
		||||
#undef GEN_DOCS
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
							
								
								
									
										1
									
								
								sysemu.h
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								sysemu.h
									
									
									
									
									
								
							@@ -82,6 +82,7 @@ void do_info_slirp(Monitor *mon);
 | 
			
		||||
/* OS specific functions */
 | 
			
		||||
void os_setup_early_signal_handling(void);
 | 
			
		||||
char *os_find_datadir(const char *argv0);
 | 
			
		||||
void os_parse_cmd_args(int index, const char *optarg);
 | 
			
		||||
 | 
			
		||||
typedef enum DisplayType
 | 
			
		||||
{
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										19
									
								
								vl.c
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								vl.c
									
									
									
									
									
								
							@@ -148,6 +148,7 @@ int main(int argc, char **argv)
 | 
			
		||||
#include "qemu-option.h"
 | 
			
		||||
#include "qemu-config.h"
 | 
			
		||||
#include "qemu-objects.h"
 | 
			
		||||
#include "qemu-options.h"
 | 
			
		||||
#ifdef CONFIG_LINUX
 | 
			
		||||
#include "fsdev/qemu-fsdev.h"
 | 
			
		||||
#endif
 | 
			
		||||
@@ -1899,16 +1900,6 @@ static void help(int exitcode)
 | 
			
		||||
 | 
			
		||||
#define HAS_ARG 0x0001
 | 
			
		||||
 | 
			
		||||
enum {
 | 
			
		||||
#define DEF(option, opt_arg, opt_enum, opt_help, arch_mask)     \
 | 
			
		||||
    opt_enum,
 | 
			
		||||
#define DEFHEADING(text)
 | 
			
		||||
#include "qemu-options.def"
 | 
			
		||||
#undef DEF
 | 
			
		||||
#undef DEFHEADING
 | 
			
		||||
#undef GEN_DOCS
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
typedef struct QEMUOption {
 | 
			
		||||
    const char *name;
 | 
			
		||||
    int flags;
 | 
			
		||||
@@ -2624,12 +2615,6 @@ int main(int argc, char **argv, char **envp)
 | 
			
		||||
            case QEMU_OPTION_bootp:
 | 
			
		||||
                legacy_bootp_filename = optarg;
 | 
			
		||||
                break;
 | 
			
		||||
#ifndef _WIN32
 | 
			
		||||
            case QEMU_OPTION_smb:
 | 
			
		||||
                if (net_slirp_smb(optarg) < 0)
 | 
			
		||||
                    exit(1);
 | 
			
		||||
                break;
 | 
			
		||||
#endif
 | 
			
		||||
            case QEMU_OPTION_redir:
 | 
			
		||||
                if (net_slirp_redir(optarg) < 0)
 | 
			
		||||
                    exit(1);
 | 
			
		||||
@@ -3126,6 +3111,8 @@ int main(int argc, char **argv, char **envp)
 | 
			
		||||
                    fclose(fp);
 | 
			
		||||
                    break;
 | 
			
		||||
                }
 | 
			
		||||
            default:
 | 
			
		||||
                os_parse_cmd_args(popt->index, optarg);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user