From: "Vadim (vadcx)" <[email protected]>

Inspired by https://stackoverflow.com/q/4090301

If other known actions have easy aliases, runas should have one too and hint at
its existence.
---
 src/cygstart/cygstart.1 |  4 ++++
 src/cygstart/cygstart.c | 14 ++++++++++++--
 2 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/src/cygstart/cygstart.1 b/src/cygstart/cygstart.1
index c641a4c..7701115 100644
--- a/src/cygstart/cygstart.1
+++ b/src/cygstart/cygstart.1
@@ -56,6 +56,10 @@ Short for: \fB\-\-action\fP \fIfind\fP
 \fB\-p\fP, \fB\-\-print\fP
 Short for: \fB\-\-action\fP \fIprint\fP
 
+.TP
+\fB\-r\fP, \fB\-\-runas\fP
+Short for: \fB\-\-action\fP \fIrunas\fP
+
 .TP
 \fIDirectory options\fP
 
diff --git a/src/cygstart/cygstart.c b/src/cygstart/cygstart.c
index 7e5bf3a..d995d9b 100644
--- a/src/cygstart/cygstart.c
+++ b/src/cygstart/cygstart.c
@@ -41,6 +41,7 @@
 #define ACTION_EDIT "edit"
 #define ACTION_FIND "find"
 #define ACTION_PRINT "print"
+#define ACTION_RUNAS "runas"
 
 /* MSDN reference URL */
 #define MSDN_URL 
"http://msdn.microsoft.com/en-us/library/bb762153%28VS.85%29.aspx";
@@ -150,6 +151,8 @@ main (int argc, const char **argv)
      "Short for: --action find", NULL},
     {"print", 'p', POPT_ARG_NONE, NULL, 'p',
      "Short for: --action print", NULL},
+    {"runas", 'r', POPT_ARG_NONE, NULL, 'r',
+     "Short for: --action runas", NULL},
     {NULL, '\0', 0, NULL, 0, NULL, NULL}
   };
 
@@ -223,7 +226,7 @@ main (int argc, const char **argv)
      "Display version information", NULL},
     {"license", '\0', POPT_ARG_NONE, NULL, 'l',
      "Display licensing information", NULL},
-    {"reference", '\0', POPT_ARG_NONE, NULL, 'r',
+    {"reference", '\0', POPT_ARG_NONE, NULL, 'W',
      "Open MSDN reference for ShellExecute", NULL},
     {NULL, '\0', 0, NULL, 0, NULL, NULL}
   };
@@ -294,7 +297,7 @@ main (int argc, const char **argv)
           if (workDir)
             free (workDir);
           return (0);
-        case 'r':
+        case 'W':
           cygStart (MSDN_URL, NULL, NULL, NULL, SW_NORMAL, startFlags);
           poptFreeContext (optCon);
           free (program_name);
@@ -350,6 +353,13 @@ main (int argc, const char **argv)
               exit (1);
             }
           break;
+        case 'r':
+          if ((action = mbstowcs_dup (ACTION_RUNAS)) == NULL)
+            {
+              fprintf (stderr, "%s: memory allocation error\n", argv[0]);
+              exit (1);
+            }
+          break;
 
           /* Directory options */
         case 'd':
-- 
2.50.1

Reply via email to