Thomas Kho : wcmd: Modify option parser to allow compound options.

Alexandre Julliard julliard at wine.codeweavers.com
Mon Jul 3 05:22:54 CDT 2006


Module: wine
Branch: refs/heads/master
Commit: 543716e1148bf67ca1e0130bf84cd77ff60ecd80
URL:    http://source.winehq.org/git/?p=wine.git;a=commit;h=543716e1148bf67ca1e0130bf84cd77ff60ecd80

Author: Thomas Kho <tkho at ucla.edu>
Date:   Fri Jun 30 21:02:31 2006 -0500

wcmd: Modify option parser to allow compound options.

---

 programs/wcmd/wcmdmain.c |   29 +++++++++++++++++++----------
 1 files changed, 19 insertions(+), 10 deletions(-)

diff --git a/programs/wcmd/wcmdmain.c b/programs/wcmd/wcmdmain.c
index 8b61445..1af01eb 100644
--- a/programs/wcmd/wcmdmain.c
+++ b/programs/wcmd/wcmdmain.c
@@ -61,21 +61,30 @@ int main (int argc, char *argv[])
   opt_c=opt_k=opt_q=0;
   while (*argv!=NULL)
   {
-      if (lstrcmpi(*argv,"/c")==0) {
-          opt_c=1;
+      char c;
+      if ((*argv)[0]!='/' || (*argv)[1]=='\0') {
           argv++;
-          break;
-      } else if (lstrcmpi(*argv,"/q")==0) {
+          continue;
+      }
+
+      c=(*argv)[1];
+      if (tolower(c)=='c') {
+          opt_c=1;
+      } else if (tolower(c)=='q') {
           opt_q=1;
-      } else if (lstrcmpi(*argv,"/k")==0) {
+      } else if (tolower(c)=='k') {
           opt_k=1;
-          argv++;
-          break;
-      } else if (lstrcmpi(*argv,"/t")==0 || lstrcmpi(*argv,"/x")==0 ||
-                 lstrcmpi(*argv,"/y")==0) {
+      } else if (tolower(c)=='t' || tolower(c)=='x' || tolower(c)=='y') {
           /* Ignored for compatibility with Windows */
       }
-      argv++;
+
+      if ((*argv)[2]==0)
+          argv++;
+      else /* handle `cmd /cnotepad.exe` and `cmd /x/c ...` */
+          *argv+=2;
+
+      if (opt_c || opt_k) /* break out of parsing immediately after c or k */
+          break;
   }
 
   if (opt_q) {




More information about the wine-cvs mailing list