Alexandre Julliard : wineboot: Avoid using getopt_long().
Alexandre Julliard
julliard at winehq.org
Wed Jul 3 17:11:53 CDT 2019
Module: wine
Branch: master
Commit: 51bc180c1fde3b425a806ae977a3af4c8169c44d
URL: https://source.winehq.org/git/wine.git/?a=commit;h=51bc180c1fde3b425a806ae977a3af4c8169c44d
Author: Alexandre Julliard <julliard at winehq.org>
Date: Wed Jul 3 20:58:43 2019 +0200
wineboot: Avoid using getopt_long().
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
programs/wineboot/wineboot.c | 62 ++++++++++++++++++++++----------------------
1 file changed, 31 insertions(+), 31 deletions(-)
diff --git a/programs/wineboot/wineboot.c b/programs/wineboot/wineboot.c
index defd126..b7192fe 100644
--- a/programs/wineboot/wineboot.c
+++ b/programs/wineboot/wineboot.c
@@ -61,9 +61,6 @@
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
-#ifdef HAVE_GETOPT_H
-# include <getopt.h>
-#endif
#ifdef HAVE_SYS_STAT_H
# include <sys/stat.h>
#endif
@@ -1226,7 +1223,7 @@ done:
return ret;
}
-static void usage(void)
+static void usage( int status )
{
WINE_MESSAGE( "Usage: wineboot [options]\n" );
WINE_MESSAGE( "Options;\n" );
@@ -1238,23 +1235,9 @@ static void usage(void)
WINE_MESSAGE( " -r,--restart Restart only, don't do normal startup operations\n" );
WINE_MESSAGE( " -s,--shutdown Shutdown only, don't reboot\n" );
WINE_MESSAGE( " -u,--update Update the wineprefix directory\n" );
+ exit( status );
}
-static const char short_options[] = "efhikrsu";
-
-static const struct option long_options[] =
-{
- { "help", 0, 0, 'h' },
- { "end-session", 0, 0, 'e' },
- { "force", 0, 0, 'f' },
- { "init" , 0, 0, 'i' },
- { "kill", 0, 0, 'k' },
- { "restart", 0, 0, 'r' },
- { "shutdown", 0, 0, 's' },
- { "update", 0, 0, 'u' },
- { NULL, 0, 0, 0 }
-};
-
int __cdecl main( int argc, char *argv[] )
{
static const WCHAR RunW[] = {'R','u','n',0};
@@ -1264,7 +1247,7 @@ int __cdecl main( int argc, char *argv[] )
static const WCHAR wineboot_eventW[] = {'_','_','w','i','n','e','b','o','o','t','_','e','v','e','n','t',0};
/* First, set the current directory to SystemRoot */
- int optc;
+ int i, j;
BOOL end_session, force, init, kill, restart, shutdown, update;
HANDLE event;
SECURITY_ATTRIBUTES sa;
@@ -1299,19 +1282,36 @@ int __cdecl main( int argc, char *argv[] )
Wow64RevertWow64FsRedirection( redir );
}
- while ((optc = getopt_long(argc, argv, short_options, long_options, NULL )) != -1)
+ for (i = 1; i < argc; i++)
{
- switch(optc)
+ if (argv[i][0] != '-') continue;
+ if (argv[i][1] == '-')
{
- case 'e': end_session = TRUE; break;
- case 'f': force = TRUE; break;
- case 'i': init = TRUE; break;
- case 'k': kill = TRUE; break;
- case 'r': restart = TRUE; break;
- case 's': shutdown = TRUE; break;
- case 'u': update = TRUE; break;
- case 'h': usage(); return 0;
- case '?': usage(); return 1;
+ if (!strcmp( argv[i], "--help" )) usage( 0 );
+ else if (!strcmp( argv[i], "--end-session" )) end_session = TRUE;
+ else if (!strcmp( argv[i], "--force" )) force = TRUE;
+ else if (!strcmp( argv[i], "--init" )) init = TRUE;
+ else if (!strcmp( argv[i], "--kill" )) kill = TRUE;
+ else if (!strcmp( argv[i], "--restart" )) restart = TRUE;
+ else if (!strcmp( argv[i], "--shutdown" )) shutdown = TRUE;
+ else if (!strcmp( argv[i], "--update" )) update = TRUE;
+ else usage( 1 );
+ continue;
+ }
+ for (j = 1; argv[i][j]; j++)
+ {
+ switch (argv[i][j])
+ {
+ case 'e': end_session = TRUE; break;
+ case 'f': force = TRUE; break;
+ case 'i': init = TRUE; break;
+ case 'k': kill = TRUE; break;
+ case 'r': restart = TRUE; break;
+ case 's': shutdown = TRUE; break;
+ case 'u': update = TRUE; break;
+ case 'h': usage(0); break;
+ default: usage(1); break;
+ }
}
}
More information about the wine-cvs
mailing list