Add code to parse the W32CE rendevous ids.
authorWerner Koch <wk@gnupg.org>
Mon, 21 Jun 2010 12:54:09 +0000 (14:54 +0200)
committerWerner Koch <wk@gnupg.org>
Mon, 21 Jun 2010 12:54:09 +0000 (14:54 +0200)
Signed-off-by: Werner Koch <wk@gnupg.org>
ChangeLog
Makefile
main.cpp
pinentry.c
pinentry.h
pinentrydialog.cpp

index 5079adb..dd0b570 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2010-06-21  Werner Koch  <wk@g10code.com>
+
+       * pinentrydialog.cpp: Use #if and not #ifdef along with defined.
+
+       * main.cpp [W32CE]: Include winioctl.h.
+       (w32ce_finish_pipe, parse_std_file_handles) [W32CE]: New.
+       (main) [W32CE]: Call new function.
+       * pinentry.c (my_stdin_fd, my_stdout_fd): New.
+       (pinentry_loop): Use them.
+       (pinentry_set_std_fd): New.
+
 2010-05-21  Marcus Brinkmann  <marcus@g10code.de>
 
        * Initial release, based on pinentry SVN 2010-05-21.
index 4074e6a..aa7d9d7 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -36,10 +36,10 @@ CMAKE_COMMAND = /usr/bin/cmake
 RM = /usr/bin/cmake -E remove -f
 
 # The top-level source directory on which CMake was run.
-CMAKE_SOURCE_DIR = /home/marcus/g10/projects/komo3/cmake/pinentry-qt
+CMAKE_SOURCE_DIR = /home/wk/w/pinentry-qt
 
 # The top-level build directory on which CMake was run.
-CMAKE_BINARY_DIR = /home/marcus/g10/projects/komo3/cmake/pinentry-qt
+CMAKE_BINARY_DIR = /home/wk/w/pinentry-qt
 
 #=============================================================================
 # Targets provided globally by CMake.
@@ -95,6 +95,26 @@ list_install_components:
 list_install_components/fast: list_install_components
 .PHONY : list_install_components/fast
 
+# Special rule for the target package
+package: preinstall
+       @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Run CPack packaging tool..."
+       /usr/bin/cpack --config ./CPackConfig.cmake
+.PHONY : package
+
+# Special rule for the target package
+package/fast: package
+.PHONY : package/fast
+
+# Special rule for the target package_source
+package_source:
+       @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Run CPack packaging tool for source..."
+       /usr/bin/cpack --config ./CPackSourceConfig.cmake /home/wk/w/pinentry-qt/CPackSourceConfig.cmake
+.PHONY : package_source
+
+# Special rule for the target package_source
+package_source/fast: package_source
+.PHONY : package_source/fast
+
 # Special rule for the target rebuild_cache
 rebuild_cache:
        @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..."
@@ -107,9 +127,9 @@ rebuild_cache/fast: rebuild_cache
 
 # The main all target
 all: cmake_check_build_system
-       $(CMAKE_COMMAND) -E cmake_progress_start /home/marcus/g10/projects/komo3/cmake/pinentry-qt/CMakeFiles /home/marcus/g10/projects/komo3/cmake/pinentry-qt/CMakeFiles/progress.marks
+       $(CMAKE_COMMAND) -E cmake_progress_start /home/wk/w/pinentry-qt/CMakeFiles /home/wk/w/pinentry-qt/CMakeFiles/progress.marks
        $(MAKE) -f CMakeFiles/Makefile2 all
-       $(CMAKE_COMMAND) -E cmake_progress_start /home/marcus/g10/projects/komo3/cmake/pinentry-qt/CMakeFiles 0
+       $(CMAKE_COMMAND) -E cmake_progress_start /home/wk/w/pinentry-qt/CMakeFiles 0
 .PHONY : all
 
 # The main clean target
@@ -149,186 +169,318 @@ pinentry-qt/fast:
        $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/build
 .PHONY : pinentry-qt/fast
 
-# target to build an object file
-assuan-buffer.o:
-       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/assuan-buffer.o
+assuan-buffer.o: assuan-buffer.c.o
 .PHONY : assuan-buffer.o
 
-# target to preprocess a source file
-assuan-buffer.i:
-       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/assuan-buffer.i
+# target to build an object file
+assuan-buffer.c.o:
+       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/assuan-buffer.c.o
+.PHONY : assuan-buffer.c.o
+
+assuan-buffer.i: assuan-buffer.c.i
 .PHONY : assuan-buffer.i
 
-# target to generate assembly for a file
-assuan-buffer.s:
-       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/assuan-buffer.s
+# target to preprocess a source file
+assuan-buffer.c.i:
+       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/assuan-buffer.c.i
+.PHONY : assuan-buffer.c.i
+
+assuan-buffer.s: assuan-buffer.c.s
 .PHONY : assuan-buffer.s
 
-# target to build an object file
-assuan-errors.o:
-       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/assuan-errors.o
+# target to generate assembly for a file
+assuan-buffer.c.s:
+       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/assuan-buffer.c.s
+.PHONY : assuan-buffer.c.s
+
+assuan-errors.o: assuan-errors.c.o
 .PHONY : assuan-errors.o
 
-# target to preprocess a source file
-assuan-errors.i:
-       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/assuan-errors.i
+# target to build an object file
+assuan-errors.c.o:
+       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/assuan-errors.c.o
+.PHONY : assuan-errors.c.o
+
+assuan-errors.i: assuan-errors.c.i
 .PHONY : assuan-errors.i
 
-# target to generate assembly for a file
-assuan-errors.s:
-       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/assuan-errors.s
+# target to preprocess a source file
+assuan-errors.c.i:
+       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/assuan-errors.c.i
+.PHONY : assuan-errors.c.i
+
+assuan-errors.s: assuan-errors.c.s
 .PHONY : assuan-errors.s
 
-# target to build an object file
-assuan-handler.o:
-       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/assuan-handler.o
+# target to generate assembly for a file
+assuan-errors.c.s:
+       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/assuan-errors.c.s
+.PHONY : assuan-errors.c.s
+
+assuan-handler.o: assuan-handler.c.o
 .PHONY : assuan-handler.o
 
-# target to preprocess a source file
-assuan-handler.i:
-       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/assuan-handler.i
+# target to build an object file
+assuan-handler.c.o:
+       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/assuan-handler.c.o
+.PHONY : assuan-handler.c.o
+
+assuan-handler.i: assuan-handler.c.i
 .PHONY : assuan-handler.i
 
-# target to generate assembly for a file
-assuan-handler.s:
-       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/assuan-handler.s
+# target to preprocess a source file
+assuan-handler.c.i:
+       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/assuan-handler.c.i
+.PHONY : assuan-handler.c.i
+
+assuan-handler.s: assuan-handler.c.s
 .PHONY : assuan-handler.s
 
-# target to build an object file
-assuan-listen.o:
-       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/assuan-listen.o
+# target to generate assembly for a file
+assuan-handler.c.s:
+       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/assuan-handler.c.s
+.PHONY : assuan-handler.c.s
+
+assuan-listen.o: assuan-listen.c.o
 .PHONY : assuan-listen.o
 
-# target to preprocess a source file
-assuan-listen.i:
-       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/assuan-listen.i
+# target to build an object file
+assuan-listen.c.o:
+       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/assuan-listen.c.o
+.PHONY : assuan-listen.c.o
+
+assuan-listen.i: assuan-listen.c.i
 .PHONY : assuan-listen.i
 
-# target to generate assembly for a file
-assuan-listen.s:
-       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/assuan-listen.s
+# target to preprocess a source file
+assuan-listen.c.i:
+       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/assuan-listen.c.i
+.PHONY : assuan-listen.c.i
+
+assuan-listen.s: assuan-listen.c.s
 .PHONY : assuan-listen.s
 
-# target to build an object file
-assuan-pipe-server.o:
-       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/assuan-pipe-server.o
+# target to generate assembly for a file
+assuan-listen.c.s:
+       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/assuan-listen.c.s
+.PHONY : assuan-listen.c.s
+
+assuan-pipe-server.o: assuan-pipe-server.c.o
 .PHONY : assuan-pipe-server.o
 
-# target to preprocess a source file
-assuan-pipe-server.i:
-       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/assuan-pipe-server.i
+# target to build an object file
+assuan-pipe-server.c.o:
+       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/assuan-pipe-server.c.o
+.PHONY : assuan-pipe-server.c.o
+
+assuan-pipe-server.i: assuan-pipe-server.c.i
 .PHONY : assuan-pipe-server.i
 
-# target to generate assembly for a file
-assuan-pipe-server.s:
-       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/assuan-pipe-server.s
+# target to preprocess a source file
+assuan-pipe-server.c.i:
+       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/assuan-pipe-server.c.i
+.PHONY : assuan-pipe-server.c.i
+
+assuan-pipe-server.s: assuan-pipe-server.c.s
 .PHONY : assuan-pipe-server.s
 
-# target to build an object file
-assuan-util.o:
-       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/assuan-util.o
+# target to generate assembly for a file
+assuan-pipe-server.c.s:
+       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/assuan-pipe-server.c.s
+.PHONY : assuan-pipe-server.c.s
+
+assuan-util.o: assuan-util.c.o
 .PHONY : assuan-util.o
 
-# target to preprocess a source file
-assuan-util.i:
-       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/assuan-util.i
+# target to build an object file
+assuan-util.c.o:
+       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/assuan-util.c.o
+.PHONY : assuan-util.c.o
+
+assuan-util.i: assuan-util.c.i
 .PHONY : assuan-util.i
 
-# target to generate assembly for a file
-assuan-util.s:
-       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/assuan-util.s
+# target to preprocess a source file
+assuan-util.c.i:
+       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/assuan-util.c.i
+.PHONY : assuan-util.c.i
+
+assuan-util.s: assuan-util.c.s
 .PHONY : assuan-util.s
 
+# target to generate assembly for a file
+assuan-util.c.s:
+       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/assuan-util.c.s
+.PHONY : assuan-util.c.s
+
+getopt.o: getopt.c.o
+.PHONY : getopt.o
+
 # target to build an object file
-main.o:
-       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/main.o
-.PHONY : main.o
+getopt.c.o:
+       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/getopt.c.o
+.PHONY : getopt.c.o
+
+getopt.i: getopt.c.i
+.PHONY : getopt.i
 
 # target to preprocess a source file
-main.i:
-       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/main.i
-.PHONY : main.i
+getopt.c.i:
+       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/getopt.c.i
+.PHONY : getopt.c.i
+
+getopt.s: getopt.c.s
+.PHONY : getopt.s
 
 # target to generate assembly for a file
-main.s:
-       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/main.s
-.PHONY : main.s
+getopt.c.s:
+       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/getopt.c.s
+.PHONY : getopt.c.s
+
+main.o: main.cpp.o
+.PHONY : main.o
 
 # target to build an object file
-pinentry.o:
-       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/pinentry.o
-.PHONY : pinentry.o
+main.cpp.o:
+       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/main.cpp.o
+.PHONY : main.cpp.o
+
+main.i: main.cpp.i
+.PHONY : main.i
 
 # target to preprocess a source file
-pinentry.i:
-       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/pinentry.i
-.PHONY : pinentry.i
+main.cpp.i:
+       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/main.cpp.i
+.PHONY : main.cpp.i
+
+main.s: main.cpp.s
+.PHONY : main.s
 
 # target to generate assembly for a file
-pinentry.s:
-       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/pinentry.s
-.PHONY : pinentry.s
+main.cpp.s:
+       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/main.cpp.s
+.PHONY : main.cpp.s
+
+pinentry.o: pinentry.c.o
+.PHONY : pinentry.o
 
 # target to build an object file
-pinentrydialog.o:
-       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/pinentrydialog.o
-.PHONY : pinentrydialog.o
+pinentry.c.o:
+       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/pinentry.c.o
+.PHONY : pinentry.c.o
+
+pinentry.i: pinentry.c.i
+.PHONY : pinentry.i
 
 # target to preprocess a source file
-pinentrydialog.i:
-       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/pinentrydialog.i
-.PHONY : pinentrydialog.i
+pinentry.c.i:
+       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/pinentry.c.i
+.PHONY : pinentry.c.i
+
+pinentry.s: pinentry.c.s
+.PHONY : pinentry.s
 
 # target to generate assembly for a file
-pinentrydialog.s:
-       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/pinentrydialog.s
-.PHONY : pinentrydialog.s
+pinentry.c.s:
+       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/pinentry.c.s
+.PHONY : pinentry.c.s
+
+pinentrydialog.o: pinentrydialog.cpp.o
+.PHONY : pinentrydialog.o
 
 # target to build an object file
-qrc_pinentry.o:
-       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/qrc_pinentry.o
-.PHONY : qrc_pinentry.o
+pinentrydialog.cpp.o:
+       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/pinentrydialog.cpp.o
+.PHONY : pinentrydialog.cpp.o
+
+pinentrydialog.i: pinentrydialog.cpp.i
+.PHONY : pinentrydialog.i
 
 # target to preprocess a source file
-qrc_pinentry.i:
-       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/qrc_pinentry.i
-.PHONY : qrc_pinentry.i
+pinentrydialog.cpp.i:
+       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/pinentrydialog.cpp.i
+.PHONY : pinentrydialog.cpp.i
+
+pinentrydialog.s: pinentrydialog.cpp.s
+.PHONY : pinentrydialog.s
 
 # target to generate assembly for a file
-qrc_pinentry.s:
-       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/qrc_pinentry.s
-.PHONY : qrc_pinentry.s
+pinentrydialog.cpp.s:
+       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/pinentrydialog.cpp.s
+.PHONY : pinentrydialog.cpp.s
+
+qrc_pinentry.o: qrc_pinentry.cpp.o
+.PHONY : qrc_pinentry.o
 
 # target to build an object file
-secmem-util.o:
-       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/secmem-util.o
-.PHONY : secmem-util.o
+qrc_pinentry.cpp.o:
+       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/qrc_pinentry.cpp.o
+.PHONY : qrc_pinentry.cpp.o
+
+qrc_pinentry.i: qrc_pinentry.cpp.i
+.PHONY : qrc_pinentry.i
 
 # target to preprocess a source file
-secmem-util.i:
-       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/secmem-util.i
-.PHONY : secmem-util.i
+qrc_pinentry.cpp.i:
+       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/qrc_pinentry.cpp.i
+.PHONY : qrc_pinentry.cpp.i
+
+qrc_pinentry.s: qrc_pinentry.cpp.s
+.PHONY : qrc_pinentry.s
 
 # target to generate assembly for a file
-secmem-util.s:
-       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/secmem-util.s
-.PHONY : secmem-util.s
+qrc_pinentry.cpp.s:
+       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/qrc_pinentry.cpp.s
+.PHONY : qrc_pinentry.cpp.s
+
+secmem-util.o: secmem-util.c.o
+.PHONY : secmem-util.o
 
 # target to build an object file
-secmem.o:
-       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/secmem.o
-.PHONY : secmem.o
+secmem-util.c.o:
+       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/secmem-util.c.o
+.PHONY : secmem-util.c.o
+
+secmem-util.i: secmem-util.c.i
+.PHONY : secmem-util.i
 
 # target to preprocess a source file
-secmem.i:
-       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/secmem.i
-.PHONY : secmem.i
+secmem-util.c.i:
+       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/secmem-util.c.i
+.PHONY : secmem-util.c.i
+
+secmem-util.s: secmem-util.c.s
+.PHONY : secmem-util.s
 
 # target to generate assembly for a file
-secmem.s:
-       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/secmem.s
+secmem-util.c.s:
+       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/secmem-util.c.s
+.PHONY : secmem-util.c.s
+
+secmem.o: secmem.c.o
+.PHONY : secmem.o
+
+# target to build an object file
+secmem.c.o:
+       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/secmem.c.o
+.PHONY : secmem.c.o
+
+secmem.i: secmem.c.i
+.PHONY : secmem.i
+
+# target to preprocess a source file
+secmem.c.i:
+       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/secmem.c.i
+.PHONY : secmem.c.i
+
+secmem.s: secmem.c.s
 .PHONY : secmem.s
 
+# target to generate assembly for a file
+secmem.c.s:
+       $(MAKE) -f CMakeFiles/pinentry-qt.dir/build.make CMakeFiles/pinentry-qt.dir/secmem.c.s
+.PHONY : secmem.c.s
+
 # Help Target
 help:
        @echo "The following are some of the valid targets for this Makefile:"
@@ -340,6 +492,8 @@ help:
        @echo "... install/local"
        @echo "... install/strip"
        @echo "... list_install_components"
+       @echo "... package"
+       @echo "... package_source"
        @echo "... pinentry-qt"
        @echo "... rebuild_cache"
        @echo "... assuan-buffer.o"
@@ -360,6 +514,9 @@ help:
        @echo "... assuan-util.o"
        @echo "... assuan-util.i"
        @echo "... assuan-util.s"
+       @echo "... getopt.o"
+       @echo "... getopt.i"
+       @echo "... getopt.s"
        @echo "... main.o"
        @echo "... main.i"
        @echo "... main.s"
index 168f96b..4ca3d88 100644 (file)
--- a/main.cpp
+++ b/main.cpp
@@ -1,7 +1,7 @@
 /*
    main.cpp - A (not yet) secure Qt 4 dialog for PIN entry.
 
-   Copyright (C) 2002, 2008 Klarälvdalens Datakonsult AB (KDAB)
+   Copyright (C) 2002, 2008 Klarälvdalens Datakonsult AB (KDAB)
    Copyright (C) 2003 g10 Code GmbH
    Copyright 2007 Ingo Klöcker
 
 #include <stdio.h>
 #include <stdlib.h>
 #ifndef HAVE_W32CE_SYSTEM
-#include <errno.h>
+# include <errno.h>
+#endif
+
+#ifdef HAVE_W32CE_SYSTEM
+# include <winioctl.h>
 #endif
 
 #include <memory>
@@ -253,10 +257,120 @@ qt_cmd_handler_ex (pinentry_t pe)
 
 pinentry_cmd_handler_t pinentry_cmd_handler = qt_cmd_handler_ex;
 
+
+#ifdef HAVE_W32CE_SYSTEM
+/* Create a pipe.  WRITE_END shall have the opposite value of the one
+   pssed to _assuan_w32ce_prepare_pipe; see there for more
+   details.  */
+#define GPGCEDEV_IOCTL_MAKE_PIPE                                        \
+  CTL_CODE (FILE_DEVICE_STREAMS, 2049, METHOD_BUFFERED, FILE_ANY_ACCESS)
+static HANDLE
+w32ce_finish_pipe (int rvid, int write_end)
+{
+  HANDLE hd;
+
+  hd = CreateFile (L"GPG1:", write_end? GENERIC_WRITE : GENERIC_READ,
+                   FILE_SHARE_READ | FILE_SHARE_WRITE,
+                   NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL,NULL);
+  if (hd != INVALID_HANDLE_VALUE)
+    {
+      if (!DeviceIoControl (hd, GPGCEDEV_IOCTL_MAKE_PIPE,
+                            &rvid, sizeof rvid, NULL, 0, NULL, NULL))
+        {
+          DWORD lastrc = GetLastError ();
+          CloseHandle (hd);
+          hd = INVALID_HANDLE_VALUE;
+          SetLastError (lastrc);
+        }
+    }
+
+  return hd;
+}
+#endif /*HAVE_W32CE_SYSTEM*/
+
+
+
+/* WindowsCE uses a very strange way of handling the standard streams.
+   There is a function SetStdioPath to associate a standard stream
+   with a file or a device but what we really want is to use pipes as
+   standard streams.  Despite that we implement pipes using a device,
+   we would have some limitations on the number of open pipes due to
+   the 3 character limit of device file name.  Thus we don't take this
+   path.  Another option would be to install a file system driver with
+   support for pipes; this would allow us to get rid of the device
+   name length limitation.  However, with GnuPG we can get away be
+   redefining the standard streams and passing the handles to be used
+   on the command line.  This has also the advantage that it makes
+   creating a process much easier and does not require the
+   SetStdioPath set and restore game.  The caller needs to pass the
+   rendezvous ids using up to three options:
+
+     -&S0=<rvid> -&S1=<rvid> -&S2=<rvid>
+
+   They are all optional but they must be the first arguments on the
+   command line.  Parsing stops as soon as an invalid option is found.
+   These rendezvous ids are then used to finish the pipe creation.*/
+#ifdef HAVE_W32CE_SYSTEM
+static void
+parse_std_file_handles (int *argcp, char ***argvp)
+{
+  int argc = *argcp;
+  char **argv = *argvp;
+  const char *s;
+  int fd;
+  int i;
+  int fixup = 0;
+
+  if (!argc)
+    return;
+
+  for (argc--, argv++; argc; argc--, argv++)
+    {
+      s = *argv;
+      if (*s == '-' && s[1] == '&' && s[2] == 'S'
+          && (s[3] == '0' || s[3] == '1' || s[3] == '2')
+          && s[4] == '=' 
+          && (strchr ("-01234567890", s[5]) || !strcmp (s+5, "null")))
+        {
+          if (s[5] == 'n')
+            fd = (int)(-1);
+          else
+            fd = (int)w32ce_finish_pipe (atoi (s+5), s[3] != '0');
+          if (s[3] == '0' && fd != -1)
+            w32_infd = fd;
+          else if (s[3] == '1' && fd != -1)
+            w32_outfd = fd;
+          fixup++;
+        }
+      else
+        break;
+    }
+
+  if (fixup)
+    {
+      argc = *argcp;
+      argc -= fixup;
+      *argcp = argc;
+
+      argv = *argvp;
+      for (i=1; i < argc; i++)
+        argv[i] = argv[i + fixup];
+      for (; i < argc + fixup; i++)
+        argv[i] = NULL;
+    }
+
+
+}
+#endif /*HAVE_W32CE_SYSTEM*/
+
+
 int
 main (int argc, char *argv[])
 {
-  pinentry_init ("pinentry-qt4");
+#ifdef HAVE_W32CE_SYSTEM
+  parse_std_file_handles (&argc, &argv);
+#endif
+  pinentry_init ("pinentry-qt-qt4");
 
   std::auto_ptr<QApplication> app;
 
@@ -282,12 +396,12 @@ main (int argc, char *argv[])
       if (!new_argv || !*new_argv)
         {
 #ifndef HAVE_W32CE_SYSTEM
-          fprintf (stderr, "pinentry-qt4: can't fixup argument list: %s\n",
+          fprintf (stderr, "pinentry-qt-qt4: can't fixup argument list: %s\n",
                    strerror (errno));
 #else
           /* Since WinCE does not show the stderr output we leave out a 
              GetLastError() message */
-          fprintf (stderr, "pinentry-qt4: can't fixup argument list"); 
+          fprintf (stderr, "pinentry-qt-qt4: can't fixup argument list"); 
 #endif
           exit (EXIT_FAILURE);
 
@@ -317,7 +431,7 @@ main (int argc, char *argv[])
   /* Consumes all arguments.  */
   if (pinentry_parse_opts (argc, argv))
     {
-      printf ("pinentry-qt4 (pinentry) " /* VERSION */ "\n");
+      printf ("pinentry-qt-qt4 (pinentry) " /* VERSION */ "\n");
       return EXIT_SUCCESS;
     }
   else
index d3701ae..5d8b689 100644 (file)
 /* Keep the name of our program here. */
 static char this_pgmname[50]; 
 
+/* The fds for the standard handles.  We use variables so that under
+   W32CE we are able to change them to the rendesvous ids. */
+static int my_stdin_fd = STDIN_FILENO;
+static int my_stdout_fd = STDOUT_FILENO;
+
 
 struct pinentry pinentry =
   {
@@ -1128,5 +1133,16 @@ pinentry_loop2 (int infd, int outfd)
 int
 pinentry_loop (void)
 {
-  return pinentry_loop2 (STDIN_FILENO, STDOUT_FILENO);
+  return pinentry_loop2 (my_stdin_fd, my_stdin_fd);
+}
+
+
+/* Allow changign the standard file handles.  */
+void
+pinentry_set_std_fd (int no, int val)
+{
+  if (no == 0)
+    my_stdin_fd = no;
+  else if (no == 1)
+    my_stdout_fd = no;
 }
index cfc78c5..7952c43 100644 (file)
@@ -150,6 +150,9 @@ int pinentry_loop (void);
 /* The same as above but allows to specify the i/o descriptors. */
 int pinentry_loop2 (int infd, int outfd);
 
+/* Allow changing the standard file handles.  */
+void pinentry_set_std_fd (int no, int val);
+
 
 /* Convert the UTF-8 encoded string TEXT to the encoding given in
    LC_CTYPE.  Return NULL on error. */
index ca081a8..4e3ebc2 100644 (file)
@@ -38,7 +38,7 @@
 #include <windows.h>
 #endif
 
-#ifdef defined(Q_WS_WIN) && !defined(HAVE_W32CE_SYSTEM)
+#if defined(Q_WS_WIN) && !defined(HAVE_W32CE_SYSTEM)
 void SetForegroundWindowEx( HWND hWnd )
 {
    //Attach foreground window thread to our thread