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