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