Module: wine Branch: master Commit: 09641eeddbe432b20096382570fdb58caa036ed1 URL: http://source.winehq.org/git/wine.git/?a=commit;h=09641eeddbe432b20096382570...
Author: Francois Gouget fgouget@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)) {