wineserver: Add support for long command line options.
This commit is contained in:
parent
284335229a
commit
67daa7f760
|
@ -28,6 +28,9 @@
|
|||
#include <stdlib.h>
|
||||
#include <sys/time.h>
|
||||
#include <unistd.h>
|
||||
#ifdef HAVE_GETOPT_H
|
||||
# include <getopt.h>
|
||||
#endif
|
||||
|
||||
#include "object.h"
|
||||
#include "file.h"
|
||||
|
@ -41,36 +44,48 @@ timeout_t master_socket_timeout = 3 * -TICKS_PER_SEC; /* master socket timeout,
|
|||
const char *server_argv0;
|
||||
|
||||
/* parse-line args */
|
||||
/* FIXME: should probably use getopt, and add a (more complete?) help option */
|
||||
|
||||
static void usage(void)
|
||||
{
|
||||
fprintf(stderr, "\nusage: %s [options]\n\n", server_argv0);
|
||||
fprintf(stderr, "options:\n");
|
||||
fprintf(stderr, " -d<n> set debug level to <n>\n");
|
||||
fprintf(stderr, " -f remain in the foreground for debugging\n");
|
||||
fprintf(stderr, " -h display this help message\n");
|
||||
fprintf(stderr, " -k[n] kill the current wineserver, optionally with signal n\n");
|
||||
fprintf(stderr, " -p[n] make server persistent, optionally for n seconds\n");
|
||||
fprintf(stderr, " -v display version information and exit\n");
|
||||
fprintf(stderr, " -w wait until the current wineserver terminates\n");
|
||||
fprintf(stderr, "Usage: %s [options]\n\n", server_argv0);
|
||||
fprintf(stderr, "Options:\n");
|
||||
fprintf(stderr, " -d[n], --debug[=n] set debug level to n or +1 if n not specified\n");
|
||||
fprintf(stderr, " -f, --foreground remain in the foreground for debugging\n");
|
||||
fprintf(stderr, " -h, --help display this help message\n");
|
||||
fprintf(stderr, " -k[n], --kill[=n] kill the current wineserver, optionally with signal n\n");
|
||||
fprintf(stderr, " -p[n], --persistent[=n] make server persistent, optionally for n seconds\n");
|
||||
fprintf(stderr, " -v, --version display version information and exit\n");
|
||||
fprintf(stderr, " -w, --wait wait until the current wineserver terminates\n");
|
||||
fprintf(stderr, "\n");
|
||||
}
|
||||
|
||||
static void parse_args( int argc, char *argv[] )
|
||||
{
|
||||
int i, ret;
|
||||
int ret, optc;
|
||||
|
||||
static struct option long_options[] =
|
||||
{
|
||||
{"debug", 2, 0, 'd'},
|
||||
{"foreground", 0, 0, 'f'},
|
||||
{"help", 0, 0, 'h'},
|
||||
{"kill", 2, 0, 'k'},
|
||||
{"persistent", 2, 0, 'p'},
|
||||
{"version", 0, 0, 'v'},
|
||||
{"wait", 0, 0, 'w'},
|
||||
{ NULL, 0, 0, 0}
|
||||
};
|
||||
|
||||
server_argv0 = argv[0];
|
||||
for (i = 1; i < argc; i++)
|
||||
|
||||
while ((optc = getopt_long( argc, argv, "d::fhk::p::vw", long_options, NULL )) != -1)
|
||||
{
|
||||
if (argv[i][0] == '-')
|
||||
{
|
||||
switch(argv[i][1])
|
||||
switch(optc)
|
||||
{
|
||||
case 'd':
|
||||
if (isdigit(argv[i][2])) debug_level = atoi( argv[i] + 2 );
|
||||
else debug_level++;
|
||||
if (optarg && isdigit(*optarg))
|
||||
debug_level = atoi( optarg );
|
||||
else
|
||||
debug_level++;
|
||||
break;
|
||||
case 'f':
|
||||
foreground = 1;
|
||||
|
@ -80,12 +95,14 @@ static void parse_args( int argc, char *argv[] )
|
|||
exit(0);
|
||||
break;
|
||||
case 'k':
|
||||
if (isdigit(argv[i][2])) ret = kill_lock_owner( atoi(argv[i] + 2) );
|
||||
else ret = kill_lock_owner(-1);
|
||||
if (optarg && isdigit(*optarg))
|
||||
ret = kill_lock_owner( atoi( optarg ) );
|
||||
else
|
||||
ret = kill_lock_owner(-1);
|
||||
exit( !ret );
|
||||
case 'p':
|
||||
if (isdigit(argv[i][2]))
|
||||
master_socket_timeout = (timeout_t)atoi( argv[i] + 2 ) * -TICKS_PER_SEC;
|
||||
if (optarg && isdigit(*optarg))
|
||||
master_socket_timeout = (timeout_t)atoi( optarg ) * -TICKS_PER_SEC;
|
||||
else
|
||||
master_socket_timeout = TIMEOUT_INFINITE;
|
||||
break;
|
||||
|
@ -96,14 +113,6 @@ static void parse_args( int argc, char *argv[] )
|
|||
wait_for_lock();
|
||||
exit(0);
|
||||
default:
|
||||
fprintf( stderr, "wineserver: unknown option '%s'\n", argv[i] );
|
||||
usage();
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf( stderr, "wineserver: unknown argument '%s'.\n", argv[i] );
|
||||
usage();
|
||||
exit(1);
|
||||
}
|
||||
|
|
|
@ -16,7 +16,7 @@ useful to start \fBwineserver\fR explicitly with different options, as
|
|||
explained below.
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
.BI \-d [n]
|
||||
.BI \-d [n] ,\ --debug [=n]
|
||||
Set the debug level to
|
||||
.I n.
|
||||
0 means no debugging information, 1 is the normal level, and 2 is for
|
||||
|
@ -27,14 +27,14 @@ stderr. \fBwine(1)\fR will automatically set the debug level when
|
|||
starting \fBwineserver\fR if the +server option is set in the
|
||||
WINEDEBUG variable.
|
||||
.TP
|
||||
.B \-f
|
||||
.B \-f, --foreground
|
||||
Make the server remain in the foreground for easier debugging, for
|
||||
instance when running it under a debugger.
|
||||
.TP
|
||||
.B \-h
|
||||
.B \-h, --help
|
||||
Display a help message.
|
||||
.TP
|
||||
.BI \-k [n]
|
||||
.BI \-k [n] ,\ --kill [=n]
|
||||
Kill the currently running
|
||||
.B wineserver,
|
||||
optionally by sending signal \fIn\fR. If no signal is specified, sends
|
||||
|
@ -42,7 +42,7 @@ a SIGINT first and then a SIGKILL. The instance of \fBwineserver\fR
|
|||
that is killed is selected based on the WINEPREFIX environment
|
||||
variable.
|
||||
.TP
|
||||
.BI \-p [n]
|
||||
.BI \-p [n] ,\ --persistent [=n]
|
||||
Specify the \fBwineserver\fR persistence delay, i.e. the amount of
|
||||
time that the server will keep running when all client processes have
|
||||
terminated. This avoids the cost of shutting down and starting again
|
||||
|
@ -50,10 +50,10 @@ when programs are launched in quick succession. The timeout \fIn\fR is
|
|||
in seconds, the default value is 3 seconds. If \fIn\fR is not
|
||||
specified, the server stays around forever.
|
||||
.TP
|
||||
.B \-v
|
||||
.B \-v, --version
|
||||
Display version information and exit.
|
||||
.TP
|
||||
.B \-w
|
||||
.B \-w, --wait
|
||||
Wait until the currently running
|
||||
.B wineserver
|
||||
terminates.
|
||||
|
|
Loading…
Reference in New Issue