Francois Gouget : regedit: Add support for 'regedit -' for feeding regedit from stdin.

Alexandre Julliard julliard at winehq.org
Wed Oct 10 06:46:12 CDT 2007


Module: wine
Branch: master
Commit: 09641eeddbe432b20096382570fdb58caa036ed1
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=09641eeddbe432b20096382570fdb58caa036ed1

Author: Francois Gouget <fgouget at codeweavers.com>
Date:   Tue Oct  9 21:04:28 2007 +0200

regedit: Add support for 'regedit -' for feeding regedit from stdin.

---

 programs/regedit/regedit.c |   47 +++++++++++++++++++++++++++++---------------
 1 files changed, 31 insertions(+), 16 deletions(-)

diff --git a/programs/regedit/regedit.c b/programs/regedit/regedit.c
index 155ecfa..ea8aee9 100644
--- a/programs/regedit/regedit.c
+++ b/programs/regedit/regedit.c
@@ -138,25 +138,34 @@ static BOOL PerformRegAction(REGEDIT_ACTION action, LPSTR s)
 
             while(filename[0]) {
                 char* realname = NULL;
-                int size;
-                size=SearchPath(NULL,filename,NULL,0,NULL,NULL);
-                if (size>0)
-                {
-                    realname=HeapAlloc(GetProcessHeap(),0,size);
-                    size=SearchPath(NULL,filename,NULL,size,realname,NULL);
-                }
-                if (size==0)
+
+                if (strcmp(filename, "-") == 0)
                 {
-                    fprintf(stderr,"%s: File not found \"%s\" (%d)\n",
-                            getAppName(),filename,GetLastError());
-                    exit(1);
+                    reg_file=stdin;
                 }
-                reg_file = fopen(realname, "r");
-                if (reg_file==NULL)
+                else
                 {
-                    perror("");
-                    fprintf(stderr,"%s: Can't open file \"%s\"\n", getAppName(), filename);
-                    exit(1);
+                    int size;
+
+                    size=SearchPath(NULL, filename, NULL,0, NULL, NULL);
+                    if (size>0)
+                    {
+                        realname=HeapAlloc(GetProcessHeap(), 0, size);
+                        size=SearchPath(NULL, filename, NULL, size, realname, NULL);
+                    }
+                    if (size==0)
+                    {
+                        fprintf(stderr, "%s: File not found \"%s\" (%d)\n",
+                                getAppName(), filename, GetLastError());
+                        exit(1);
+                    }
+                    reg_file = fopen(realname, "r");
+                    if (reg_file==NULL)
+                    {
+                        perror("");
+                        fprintf(stderr,"%s: Can't open file \"%s\"\n", getAppName(), filename);
+                        exit(1);
+                    }
                 }
                 processRegLines(reg_file);
                 if (realname)
@@ -240,6 +249,12 @@ BOOL ProcessCmdLine(LPSTR lpCmdLine)
 
         s++;
         ch = *s;
+        if (!ch || isspace(ch))
+        {
+            /* '-' is a file name. It indicates we should use stdin */
+            s--;
+            break;
+        }
         ch2 = *(s+1);
         chu = toupper(ch);
         if (!ch2 || isspace(ch2)) {




More information about the wine-cvs mailing list