[Pcsclite-cvs-commit] r2151 - in trunk/PCSC: . doc src src/PCSC src/utils win32

Ludovic Rousseau rousseau at costa.debian.org
Wed Sep 6 22:03:35 CEST 2006


Author: rousseau
Date: 2006-09-06 20:02:47 +0000 (Wed, 06 Sep 2006)
New Revision: 2151

Modified:
   trunk/PCSC/COPYING
   trunk/PCSC/ChangeLog
   trunk/PCSC/HELP
   trunk/PCSC/NEWS
   trunk/PCSC/README
   trunk/PCSC/SECURITY
   trunk/PCSC/bootstrap
   trunk/PCSC/doc/README.DAEMON
   trunk/PCSC/doc/doxygen.conf.in
   trunk/PCSC/doc/doxygen.css
   trunk/PCSC/doc/formaticc.1
   trunk/PCSC/doc/ifdhandler-3.tex
   trunk/PCSC/doc/pcscd.8.in
   trunk/PCSC/doc/reader.conf.5.in
   trunk/PCSC/src/PCSC/debuglog.h
   trunk/PCSC/src/PCSC/ifdhandler.h
   trunk/PCSC/src/README_INTERNALS.txt
   trunk/PCSC/src/atrhandler.c
   trunk/PCSC/src/atrhandler.h
   trunk/PCSC/src/configfile.l
   trunk/PCSC/src/debug.c
   trunk/PCSC/src/debuglog.c
   trunk/PCSC/src/dyn_macosx.c
   trunk/PCSC/src/dyn_win32.c
   trunk/PCSC/src/error.c
   trunk/PCSC/src/eventhandler.c
   trunk/PCSC/src/eventhandler.h
   trunk/PCSC/src/hotplug_libusb.c
   trunk/PCSC/src/hotplug_macosx.c
   trunk/PCSC/src/ifdwrapper.c
   trunk/PCSC/src/ifdwrapper.h
   trunk/PCSC/src/libpcsclite.pc.in
   trunk/PCSC/src/misc.h
   trunk/PCSC/src/pcscdaemon.c
   trunk/PCSC/src/powermgt_generic.h
   trunk/PCSC/src/powermgt_macosx.c
   trunk/PCSC/src/prothandler.c
   trunk/PCSC/src/readerfactory.c
   trunk/PCSC/src/readerfactory.h
   trunk/PCSC/src/strlcat.c
   trunk/PCSC/src/strlcpy.c
   trunk/PCSC/src/sys_unix.c
   trunk/PCSC/src/testpcsc.c
   trunk/PCSC/src/thread_unix.c
   trunk/PCSC/src/utils/formaticc.c
   trunk/PCSC/src/utils/installifd.c
   trunk/PCSC/src/winscard.c
   trunk/PCSC/src/winscard_clnt.c
   trunk/PCSC/src/winscard_msg.c
   trunk/PCSC/src/winscard_msg.h
   trunk/PCSC/src/winscard_msg_srv.c
   trunk/PCSC/src/winscard_scf.c
   trunk/PCSC/src/winscard_svc.c
   trunk/PCSC/win32/pthread.h
   trunk/PCSC/win32/sched.h
Log:
remove trailing spaces at end of lines


Modified: trunk/PCSC/COPYING
===================================================================
--- trunk/PCSC/COPYING	2006-09-06 13:49:40 UTC (rev 2150)
+++ trunk/PCSC/COPYING	2006-09-06 20:02:47 UTC (rev 2151)
@@ -13,7 +13,7 @@
 3. The name of the author may not be used to endorse or promote products
    derived from this software without specific prior written permission.
 
-Changes to this license can be made only by the copyright author with 
+Changes to this license can be made only by the copyright author with
 explicit written consent.
 
 THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR

Modified: trunk/PCSC/ChangeLog
===================================================================
--- trunk/PCSC/ChangeLog	2006-09-06 13:49:40 UTC (rev 2150)
+++ trunk/PCSC/ChangeLog	2006-09-06 20:02:47 UTC (rev 2151)
@@ -67,7 +67,7 @@
     32-bits data to the CCID format (replace HOST_TO_CCID)
 - add support of SUN C compiler and try to avoid GCC specific features
   (Heiko Nardmann)
-- SCardGetStatusChange(): 
+- SCardGetStatusChange():
   . exists if the list of readers changed (one reader added) so that the
     application can update its list of readers (Najam Siddiqui)
   . correct a bug when two contexts where used (Najam Siddiqui)
@@ -624,7 +624,7 @@
 (from Carlos Prados Debian package)
 - configure.in
    . add AC_PREFIX_DEFAULT(/usr/local/pcsc) to install in /usr/local/pcsc by
-   default 
+   default
 - etc/
    . add makeFMStyle, makeSTDStyle and moveFMCode scripts
 - src/utils/Makefile.am

Modified: trunk/PCSC/HELP
===================================================================
--- trunk/PCSC/HELP	2006-09-06 13:49:40 UTC (rev 2150)
+++ trunk/PCSC/HELP	2006-09-06 20:02:47 UTC (rev 2151)
@@ -4,8 +4,8 @@
 
 Contract work:
 
-For interested parties, I am available part time for contract based work 
-developing drivers, middleware, and applications for a variety of 
+For interested parties, I am available part time for contract based work
+developing drivers, middleware, and applications for a variety of
 platforms based upon smart cards and cryptographic tokens.
 My current hardware platforms are: Linux, Solaris, BSD,
 Mac OS, and HP-UX

Modified: trunk/PCSC/NEWS
===================================================================
--- trunk/PCSC/NEWS	2006-09-06 13:49:40 UTC (rev 2150)
+++ trunk/PCSC/NEWS	2006-09-06 20:02:47 UTC (rev 2151)
@@ -1,6 +1,6 @@
 Read the ChangeLog file for news.
 
 Checkout the new MuscleCard.  Its an applet for Java Card which
-will run on any 2.1 compliant card.  It has client side API's 
+will run on any 2.1 compliant card.  It has client side API's
 for nearly every major operating system and it's totally free.
 Go to: http://www.musclecard.com/musclecard.html

Modified: trunk/PCSC/README
===================================================================
--- trunk/PCSC/README	2006-09-06 13:49:40 UTC (rev 2150)
+++ trunk/PCSC/README	2006-09-06 20:02:47 UTC (rev 2151)
@@ -8,7 +8,7 @@
           Make, linker tools
           Lex (Lexical Analyzer).
 
-Tested Platforms: 
+Tested Platforms:
 	Linux 2.4 (Redhat 7.1, Suse 7.1/7.2, Debian 3.0)
 	Mac OS X 10.2, 10.3
 	FreeBSD, NetBSD, OpenBSD
@@ -23,7 +23,7 @@
 directly to a desired reader driver or can be used to dynamically
 allocate/deallocate reader drivers at runtime (default).
 
-PCSC Lite uses the same winscard API as used under Windows(R).  
+PCSC Lite uses the same winscard API as used under Windows(R).
 
 For security aware persons please read the SECURITY file on possible
 vulnerabilites to pcsclite, how you can fix some, and how some will
@@ -33,14 +33,14 @@
 
 Memory cards are supported through MCT specifications which is an APDU
 like manner sent normally through the SCardTransmit() function.  This
-functionality is done in the driver. 
+functionality is done in the driver.
 
 INSTALLATION:
 
 Installation is simple.  Type ./configure and then make and make install.
 Options:
 
-   ./configure 
+   ./configure
 
           --enable-libusb        Enable USB libusb support
                                  (on Linux, *BSD, etc.).
@@ -57,12 +57,12 @@
                                  (default /var/run)
 
 
-By running pcscd under a priveledged account you can link to 
-libpcsclite.so and it will act as a client to the pcscd allowing multiple 
+By running pcscd under a priveledged account you can link to
+libpcsclite.so and it will act as a client to the pcscd allowing multiple
 applications to be run under non-priveledged accounts.
 
 Then type make install to copy etc/reader.conf to
-/etc/reader.conf and the libraries to /usr/local/lib. If you choose 
+/etc/reader.conf and the libraries to /usr/local/lib. If you choose
 not to have your reader.conf in /etc then use --enable-confdir=DIR
 
 You must be root to do make install in the default locations.
@@ -71,13 +71,13 @@
 your IFD Handler driver is located in the path specified as LIBRARYPATH
 in reader.conf.  If you are using a reader with multiple smart card slots
 all you have to do is define a different FRIENDLYNAME in the reader.conf
-for each reader.  Both will have the same information otherwise.  
+for each reader.  Both will have the same information otherwise.
 
 There is an config file generator in the utils directory.  It is called
 installifd.  You may use this to generate the /etc/reader.conf file.
 
 USB users shall not use /etc/reader.conf.  pcscd will give
-a warning that the file does not exist or contain anything useful.  
+a warning that the file does not exist or contain anything useful.
 
 There is a test program with this package:
 
@@ -103,10 +103,10 @@
 Solaris PC/SC applications must link with -lsocket since
 the libraries are not statically linked.
 
-QUESTIONS: 
+QUESTIONS:
 
-The API documentation is provided in PDF format under the docs 
-directory.  For questions, please email me at: 
+The API documentation is provided in PDF format under the docs
+directory.  For questions, please email me at:
 <David Corcoran> corcoran at linuxnet.com
 
 On some plateforms (GNU/Linux on mips and mipsel, FreeBSD and possibly

Modified: trunk/PCSC/SECURITY
===================================================================
--- trunk/PCSC/SECURITY	2006-09-06 13:49:40 UTC (rev 2150)
+++ trunk/PCSC/SECURITY	2006-09-06 20:02:47 UTC (rev 2151)
@@ -4,7 +4,7 @@
 handle them.
 
 Sometimes it is dangerous to run daemons under a root account.  If there is
-a chance to exploit a buffer overflow you can protect sensitive information 
+a chance to exploit a buffer overflow you can protect sensitive information
 by running it under a different account. It might be useful to create another
 user with hardware priveledges and run pcscd as that user.  Be sure this user
 can manipulate the server sockets.

Modified: trunk/PCSC/bootstrap
===================================================================
--- trunk/PCSC/bootstrap	2006-09-06 13:49:40 UTC (rev 2150)
+++ trunk/PCSC/bootstrap	2006-09-06 20:02:47 UTC (rev 2151)
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-# I use	 
+# I use
 # - autoconf (GNU Autoconf) 2.59
 # - automake (GNU automake) 1.7.9
 # - libtool (GNU libtool) 1.5.6 (1.1220.2.95 2004/04/11 05:50:42)

Modified: trunk/PCSC/doc/README.DAEMON
===================================================================
--- trunk/PCSC/doc/README.DAEMON	2006-09-06 13:49:40 UTC (rev 2150)
+++ trunk/PCSC/doc/README.DAEMON	2006-09-06 20:02:47 UTC (rev 2151)
@@ -10,6 +10,6 @@
 pcscd
 
 Mac OS X Users may create a Startup by doing the following:
-Copy the files SmartcardServices and StartupParameters.plist from the 
-/etc directory to /System/Library/StartupItems/SmartcardServices.  
+Copy the files SmartcardServices and StartupParameters.plist from the
+/etc directory to /System/Library/StartupItems/SmartcardServices.
 ( You will have to create the SmartcardServices directory )

Modified: trunk/PCSC/doc/doxygen.conf.in
===================================================================
--- trunk/PCSC/doc/doxygen.conf.in	2006-09-06 13:49:40 UTC (rev 2150)
+++ trunk/PCSC/doc/doxygen.conf.in	2006-09-06 20:02:47 UTC (rev 2151)
@@ -14,198 +14,198 @@
 # Project related configuration options
 #---------------------------------------------------------------------------
 
-# The PROJECT_NAME tag is a single word (or a sequence of words surrounded 
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
 # by quotes) that should identify the project.
 
 PROJECT_NAME           = pcsc-lite
 
-# The PROJECT_NUMBER tag can be used to enter a project or revision number. 
-# This could be handy for archiving the generated documentation or 
+# The PROJECT_NUMBER tag can be used to enter a project or revision number.
+# This could be handy for archiving the generated documentation or
 # if some version control system is used.
 
 PROJECT_NUMBER         = @VERSION@
 
-# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) 
-# base path where the generated documentation will be put. 
-# If a relative path is entered, it will be relative to the location 
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
+# base path where the generated documentation will be put.
+# If a relative path is entered, it will be relative to the location
 # where doxygen was started. If left blank the current directory will be used.
 
 OUTPUT_DIRECTORY       = doc
 
-# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 
-# 4096 sub-directories (in 2 levels) under the output directory of each output 
-# format and will distribute the generated files over these directories. 
-# Enabling this option can be useful when feeding doxygen a huge amount of 
-# source files, where putting all generated files in the same directory would 
+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
+# 4096 sub-directories (in 2 levels) under the output directory of each output
+# format and will distribute the generated files over these directories.
+# Enabling this option can be useful when feeding doxygen a huge amount of
+# source files, where putting all generated files in the same directory would
 # otherwise cause performance problems for the file system.
 
 CREATE_SUBDIRS         = NO
 
-# The OUTPUT_LANGUAGE tag is used to specify the language in which all 
-# documentation generated by doxygen is written. Doxygen will use this 
-# information to generate all constant output in the proper language. 
-# The default language is English, other supported languages are: 
-# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, 
-# Dutch, Finnish, French, German, Greek, Hungarian, Italian, Japanese, 
-# Japanese-en (Japanese with English messages), Korean, Korean-en, Norwegian, 
-# Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, 
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all
+# documentation generated by doxygen is written. Doxygen will use this
+# information to generate all constant output in the proper language.
+# The default language is English, other supported languages are:
+# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish,
+# Dutch, Finnish, French, German, Greek, Hungarian, Italian, Japanese,
+# Japanese-en (Japanese with English messages), Korean, Korean-en, Norwegian,
+# Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish,
 # Swedish, and Ukrainian.
 
 OUTPUT_LANGUAGE        = English
 
-# This tag can be used to specify the encoding used in the generated output. 
-# The encoding is not always determined by the language that is chosen, 
-# but also whether or not the output is meant for Windows or non-Windows users. 
-# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES 
-# forces the Windows encoding (this is the default for the Windows binary), 
-# whereas setting the tag to NO uses a Unix-style encoding (the default for 
+# This tag can be used to specify the encoding used in the generated output.
+# The encoding is not always determined by the language that is chosen,
+# but also whether or not the output is meant for Windows or non-Windows users.
+# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES
+# forces the Windows encoding (this is the default for the Windows binary),
+# whereas setting the tag to NO uses a Unix-style encoding (the default for
 # all platforms other than Windows).
 
 USE_WINDOWS_ENCODING   = NO
 
-# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will 
-# include brief member descriptions after the members that are listed in 
-# the file and class documentation (similar to JavaDoc). 
+# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
+# include brief member descriptions after the members that are listed in
+# the file and class documentation (similar to JavaDoc).
 # Set to NO to disable this.
 
 BRIEF_MEMBER_DESC      = YES
 
-# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend 
-# the brief description of a member or function before the detailed description. 
-# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the 
+# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
+# the brief description of a member or function before the detailed description.
+# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
 # brief descriptions will be completely suppressed.
 
 REPEAT_BRIEF           = YES
 
-# This tag implements a quasi-intelligent brief description abbreviator 
-# that is used to form the text in various listings. Each string 
-# in this list, if found as the leading text of the brief description, will be 
-# stripped from the text and the result after processing the whole list, is 
-# used as the annotated text. Otherwise, the brief description is used as-is. 
-# If left blank, the following values are used ("$name" is automatically 
-# replaced with the name of the entity): "The $name class" "The $name widget" 
-# "The $name file" "is" "provides" "specifies" "contains" 
+# This tag implements a quasi-intelligent brief description abbreviator
+# that is used to form the text in various listings. Each string
+# in this list, if found as the leading text of the brief description, will be
+# stripped from the text and the result after processing the whole list, is
+# used as the annotated text. Otherwise, the brief description is used as-is.
+# If left blank, the following values are used ("$name" is automatically
+# replaced with the name of the entity): "The $name class" "The $name widget"
+# "The $name file" "is" "provides" "specifies" "contains"
 # "represents" "a" "an" "the"
 
-ABBREVIATE_BRIEF       = 
+ABBREVIATE_BRIEF       =
 
-# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then 
-# Doxygen will generate a detailed section even if there is only a brief 
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
+# Doxygen will generate a detailed section even if there is only a brief
 # description.
 
 ALWAYS_DETAILED_SEC    = NO
 
-# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all 
-# inherited members of a class in the documentation of that class as if those 
-# members were ordinary class members. Constructors, destructors and assignment 
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
+# inherited members of a class in the documentation of that class as if those
+# members were ordinary class members. Constructors, destructors and assignment
 # operators of the base classes will not be shown.
 
 INLINE_INHERITED_MEMB  = NO
 
-# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full 
-# path before files name in the file list and in the header files. If set 
+# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
+# path before files name in the file list and in the header files. If set
 # to NO the shortest path that makes the file name unique will be used.
 
 FULL_PATH_NAMES        = NO
 
-# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag 
-# can be used to strip a user-defined part of the path. Stripping is 
-# only done if one of the specified strings matches the left-hand part of 
-# the path. The tag can be used to show relative paths in the file list. 
-# If left blank the directory from which doxygen is run is used as the 
+# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
+# can be used to strip a user-defined part of the path. Stripping is
+# only done if one of the specified strings matches the left-hand part of
+# the path. The tag can be used to show relative paths in the file list.
+# If left blank the directory from which doxygen is run is used as the
 # path to strip.
 
-STRIP_FROM_PATH        = 
+STRIP_FROM_PATH        =
 
-# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of 
-# the path mentioned in the documentation of a class, which tells 
-# the reader which header file to include in order to use a class. 
-# If left blank only the name of the header file containing the class 
-# definition is used. Otherwise one should specify the include paths that 
+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
+# the path mentioned in the documentation of a class, which tells
+# the reader which header file to include in order to use a class.
+# If left blank only the name of the header file containing the class
+# definition is used. Otherwise one should specify the include paths that
 # are normally passed to the compiler using the -I flag.
 
-STRIP_FROM_INC_PATH    = 
+STRIP_FROM_INC_PATH    =
 
-# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter 
-# (but less readable) file names. This can be useful is your file systems 
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
+# (but less readable) file names. This can be useful is your file systems
 # doesn't support long names like on DOS, Mac, or CD-ROM.
 
 SHORT_NAMES            = NO
 
-# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen 
-# will interpret the first line (until the first dot) of a JavaDoc-style 
-# comment as the brief description. If set to NO, the JavaDoc 
-# comments will behave just like the Qt-style comments (thus requiring an 
+# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
+# will interpret the first line (until the first dot) of a JavaDoc-style
+# comment as the brief description. If set to NO, the JavaDoc
+# comments will behave just like the Qt-style comments (thus requiring an
 # explicit @brief command for a brief description.
 
 JAVADOC_AUTOBRIEF      = YES
 
-# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen 
-# treat a multi-line C++ special comment block (i.e. a block of //! or /// 
-# comments) as a brief description. This used to be the default behaviour. 
-# The new default is to treat a multi-line C++ comment block as a detailed 
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
+# treat a multi-line C++ special comment block (i.e. a block of //! or ///
+# comments) as a brief description. This used to be the default behaviour.
+# The new default is to treat a multi-line C++ comment block as a detailed
 # description. Set this tag to YES if you prefer the old behaviour instead.
 
 MULTILINE_CPP_IS_BRIEF = NO
 
-# If the DETAILS_AT_TOP tag is set to YES then Doxygen 
+# If the DETAILS_AT_TOP tag is set to YES then Doxygen
 # will output the detailed description near the top, like JavaDoc.
-# If set to NO, the detailed description appears after the member 
+# If set to NO, the detailed description appears after the member
 # documentation.
 
 DETAILS_AT_TOP         = NO
 
-# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented 
-# member inherits the documentation from any documented member that it 
+# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
+# member inherits the documentation from any documented member that it
 # re-implements.
 
 INHERIT_DOCS           = YES
 
-# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC 
-# tag is set to YES, then doxygen will reuse the documentation of the first 
-# member in the group (if any) for the other members of the group. By default 
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
+# tag is set to YES, then doxygen will reuse the documentation of the first
+# member in the group (if any) for the other members of the group. By default
 # all members of a group must be documented explicitly.
 
 DISTRIBUTE_GROUP_DOC   = NO
 
-# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce 
-# a new page for each member. If set to NO, the documentation of a member will 
+# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
+# a new page for each member. If set to NO, the documentation of a member will
 # be part of the file/class/namespace that contains it.
 
 SEPARATE_MEMBER_PAGES  = NO
 
-# The TAB_SIZE tag can be used to set the number of spaces in a tab. 
+# The TAB_SIZE tag can be used to set the number of spaces in a tab.
 # Doxygen uses this value to replace tabs by spaces in code fragments.
 
 TAB_SIZE               = 4
 
-# This tag can be used to specify a number of aliases that acts 
-# as commands in the documentation. An alias has the form "name=value". 
-# For example adding "sideeffect=\par Side Effects:\n" will allow you to 
-# put the command \sideeffect (or @sideeffect) in the documentation, which 
-# will result in a user-defined paragraph with heading "Side Effects:". 
+# This tag can be used to specify a number of aliases that acts
+# as commands in the documentation. An alias has the form "name=value".
+# For example adding "sideeffect=\par Side Effects:\n" will allow you to
+# put the command \sideeffect (or @sideeffect) in the documentation, which
+# will result in a user-defined paragraph with heading "Side Effects:".
 # You can put \n's in the value part of an alias to insert newlines.
 
-ALIASES                = 
+ALIASES                =
 
-# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C 
-# sources only. Doxygen will then generate output that is more tailored for C. 
-# For instance, some of the names that are used will be different. The list 
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
+# sources only. Doxygen will then generate output that is more tailored for C.
+# For instance, some of the names that are used will be different. The list
 # of all members will be omitted, etc.
 
 OPTIMIZE_OUTPUT_FOR_C  = YES
 
-# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources 
-# only. Doxygen will then generate output that is more tailored for Java. 
-# For instance, namespaces will be presented as packages, qualified scopes 
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources
+# only. Doxygen will then generate output that is more tailored for Java.
+# For instance, namespaces will be presented as packages, qualified scopes
 # will look different, etc.
 
 OPTIMIZE_OUTPUT_JAVA   = NO
 
-# Set the SUBGROUPING tag to YES (the default) to allow class member groups of 
-# the same type (for instance a group of public functions) to be put as a 
-# subgroup of that type (e.g. under the Public Functions section). Set it to 
-# NO to prevent subgrouping. Alternatively, this can be done per class using 
+# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
+# the same type (for instance a group of public functions) to be put as a
+# subgroup of that type (e.g. under the Public Functions section). Set it to
+# NO to prevent subgrouping. Alternatively, this can be done per class using
 # the \nosubgrouping command.
 
 SUBGROUPING            = YES
@@ -214,324 +214,324 @@
 # Build related configuration options
 #---------------------------------------------------------------------------
 
-# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in 
-# documentation are documented, even if no documentation was available. 
-# Private class members and static file members will be hidden unless 
+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
+# documentation are documented, even if no documentation was available.
+# Private class members and static file members will be hidden unless
 # the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
 
 EXTRACT_ALL            = NO
 
-# If the EXTRACT_PRIVATE tag is set to YES all private members of a class 
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
 # will be included in the documentation.
 
 EXTRACT_PRIVATE        = NO
 
-# If the EXTRACT_STATIC tag is set to YES all static members of a file 
+# If the EXTRACT_STATIC tag is set to YES all static members of a file
 # will be included in the documentation.
 
 EXTRACT_STATIC         = YES
 
-# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) 
-# defined locally in source files will be included in the documentation. 
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
+# defined locally in source files will be included in the documentation.
 # If set to NO only classes defined in header files are included.
 
 EXTRACT_LOCAL_CLASSES  = YES
 
-# This flag is only useful for Objective-C code. When set to YES local 
-# methods, which are defined in the implementation section but not in 
-# the interface are included in the documentation. 
+# This flag is only useful for Objective-C code. When set to YES local
+# methods, which are defined in the implementation section but not in
+# the interface are included in the documentation.
 # If set to NO (the default) only methods in the interface are included.
 
 EXTRACT_LOCAL_METHODS  = NO
 
-# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all 
-# undocumented members of documented classes, files or namespaces. 
-# If set to NO (the default) these members will be included in the 
-# various overviews, but no documentation section is generated. 
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
+# undocumented members of documented classes, files or namespaces.
+# If set to NO (the default) these members will be included in the
+# various overviews, but no documentation section is generated.
 # This option has no effect if EXTRACT_ALL is enabled.
 
 HIDE_UNDOC_MEMBERS     = NO
 
-# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all 
-# undocumented classes that are normally visible in the class hierarchy. 
-# If set to NO (the default) these classes will be included in the various 
+# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
+# undocumented classes that are normally visible in the class hierarchy.
+# If set to NO (the default) these classes will be included in the various
 # overviews. This option has no effect if EXTRACT_ALL is enabled.
 
 HIDE_UNDOC_CLASSES     = NO
 
-# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all 
-# friend (class|struct|union) declarations. 
-# If set to NO (the default) these declarations will be included in the 
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
+# friend (class|struct|union) declarations.
+# If set to NO (the default) these declarations will be included in the
 # documentation.
 
 HIDE_FRIEND_COMPOUNDS  = NO
 
-# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any 
-# documentation blocks found inside the body of a function. 
-# If set to NO (the default) these blocks will be appended to the 
+# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
+# documentation blocks found inside the body of a function.
+# If set to NO (the default) these blocks will be appended to the
 # function's detailed documentation block.
 
 HIDE_IN_BODY_DOCS      = NO
 
-# The INTERNAL_DOCS tag determines if documentation 
-# that is typed after a \internal command is included. If the tag is set 
-# to NO (the default) then the documentation will be excluded. 
+# The INTERNAL_DOCS tag determines if documentation
+# that is typed after a \internal command is included. If the tag is set
+# to NO (the default) then the documentation will be excluded.
 # Set it to YES to include the internal documentation.
 
 INTERNAL_DOCS          = NO
 
-# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate 
-# file names in lower-case letters. If set to YES upper-case letters are also 
-# allowed. This is useful if you have classes or files whose names only differ 
-# in case and if your file system supports case sensitive file names. Windows 
+# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
+# file names in lower-case letters. If set to YES upper-case letters are also
+# allowed. This is useful if you have classes or files whose names only differ
+# in case and if your file system supports case sensitive file names. Windows
 # and Mac users are advised to set this option to NO.
 
 CASE_SENSE_NAMES       = YES
 
-# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen 
-# will show members with their full class and namespace scopes in the 
+# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
+# will show members with their full class and namespace scopes in the
 # documentation. If set to YES the scope will be hidden.
 
 HIDE_SCOPE_NAMES       = YES
 
-# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen 
-# will put a list of the files that are included by a file in the documentation 
+# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
+# will put a list of the files that are included by a file in the documentation
 # of that file.
 
 SHOW_INCLUDE_FILES     = YES
 
-# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] 
+# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
 # is inserted in the documentation for inline members.
 
 INLINE_INFO            = YES
 
-# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen 
-# will sort the (detailed) documentation of file and class members 
-# alphabetically by member name. If set to NO the members will appear in 
+# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
+# will sort the (detailed) documentation of file and class members
+# alphabetically by member name. If set to NO the members will appear in
 # declaration order.
 
 SORT_MEMBER_DOCS       = YES
 
-# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the 
-# brief documentation of file, namespace and class members alphabetically 
-# by member name. If set to NO (the default) the members will appear in 
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
+# brief documentation of file, namespace and class members alphabetically
+# by member name. If set to NO (the default) the members will appear in
 # declaration order.
 
 SORT_BRIEF_DOCS        = NO
 
-# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be 
-# sorted by fully-qualified names, including namespaces. If set to 
-# NO (the default), the class list will be sorted only by class name, 
-# not including the namespace part. 
+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
+# sorted by fully-qualified names, including namespaces. If set to
+# NO (the default), the class list will be sorted only by class name,
+# not including the namespace part.
 # Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
-# Note: This option applies only to the class list, not to the 
+# Note: This option applies only to the class list, not to the
 # alphabetical list.
 
 SORT_BY_SCOPE_NAME     = NO
 
-# The GENERATE_TODOLIST tag can be used to enable (YES) or 
-# disable (NO) the todo list. This list is created by putting \todo 
+# The GENERATE_TODOLIST tag can be used to enable (YES) or
+# disable (NO) the todo list. This list is created by putting \todo
 # commands in the documentation.
 
 GENERATE_TODOLIST      = YES
 
-# The GENERATE_TESTLIST tag can be used to enable (YES) or 
-# disable (NO) the test list. This list is created by putting \test 
+# The GENERATE_TESTLIST tag can be used to enable (YES) or
+# disable (NO) the test list. This list is created by putting \test
 # commands in the documentation.
 
 GENERATE_TESTLIST      = YES
 
-# The GENERATE_BUGLIST tag can be used to enable (YES) or 
-# disable (NO) the bug list. This list is created by putting \bug 
+# The GENERATE_BUGLIST tag can be used to enable (YES) or
+# disable (NO) the bug list. This list is created by putting \bug
 # commands in the documentation.
 
 GENERATE_BUGLIST       = YES
 
-# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or 
-# disable (NO) the deprecated list. This list is created by putting 
+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
+# disable (NO) the deprecated list. This list is created by putting
 # \deprecated commands in the documentation.
 
 GENERATE_DEPRECATEDLIST= YES
 
-# The ENABLED_SECTIONS tag can be used to enable conditional 
+# The ENABLED_SECTIONS tag can be used to enable conditional
 # documentation sections, marked by \if sectionname ... \endif.
 
-ENABLED_SECTIONS       = 
+ENABLED_SECTIONS       =
 
-# The MAX_INITIALIZER_LINES tag determines the maximum number of lines 
-# the initial value of a variable or define consists of for it to appear in 
-# the documentation. If the initializer consists of more lines than specified 
-# here it will be hidden. Use a value of 0 to hide initializers completely. 
-# The appearance of the initializer of individual variables and defines in the 
-# documentation can be controlled using \showinitializer or \hideinitializer 
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
+# the initial value of a variable or define consists of for it to appear in
+# the documentation. If the initializer consists of more lines than specified
+# here it will be hidden. Use a value of 0 to hide initializers completely.
+# The appearance of the initializer of individual variables and defines in the
+# documentation can be controlled using \showinitializer or \hideinitializer
 # command in the documentation regardless of this setting.
 
 MAX_INITIALIZER_LINES  = 30
 
-# Set the SHOW_USED_FILES tag to NO to disable the list of files generated 
-# at the bottom of the documentation of classes and structs. If set to YES the 
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
+# at the bottom of the documentation of classes and structs. If set to YES the
 # list will mention the files that were used to generate the documentation.
 
 SHOW_USED_FILES        = YES
 
-# If the sources in your project are distributed over multiple directories 
-# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy 
+# If the sources in your project are distributed over multiple directories
+# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy
 # in the documentation.
 
 SHOW_DIRECTORIES       = YES
 
-# The FILE_VERSION_FILTER tag can be used to specify a program or script that 
-# doxygen should invoke to get the current version for each file (typically from the 
-# version control system). Doxygen will invoke the program by executing (via 
-# popen()) the command <command> <input-file>, where <command> is the value of 
-# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file 
-# provided by doxygen. Whatever the progam writes to standard output 
+# The FILE_VERSION_FILTER tag can be used to specify a program or script that
+# doxygen should invoke to get the current version for each file (typically from the
+# version control system). Doxygen will invoke the program by executing (via
+# popen()) the command <command> <input-file>, where <command> is the value of
+# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
+# provided by doxygen. Whatever the progam writes to standard output
 # is used as the file version. See the manual for examples.
 
-FILE_VERSION_FILTER    = 
+FILE_VERSION_FILTER    =
 
 #---------------------------------------------------------------------------
 # configuration options related to warning and progress messages
 #---------------------------------------------------------------------------
 
-# The QUIET tag can be used to turn on/off the messages that are generated 
+# The QUIET tag can be used to turn on/off the messages that are generated
 # by doxygen. Possible values are YES and NO. If left blank NO is used.
 
 QUIET                  = NO
 
-# The WARNINGS tag can be used to turn on/off the warning messages that are 
-# generated by doxygen. Possible values are YES and NO. If left blank 
+# The WARNINGS tag can be used to turn on/off the warning messages that are
+# generated by doxygen. Possible values are YES and NO. If left blank
 # NO is used.
 
 WARNINGS               = YES
 
-# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings 
-# for undocumented members. If EXTRACT_ALL is set to YES then this flag will 
+# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
+# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
 # automatically be disabled.
 
 WARN_IF_UNDOCUMENTED   = NO
 
-# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for 
-# potential errors in the documentation, such as not documenting some 
-# parameters in a documented function, or documenting parameters that 
+# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
+# potential errors in the documentation, such as not documenting some
+# parameters in a documented function, or documenting parameters that
 # don't exist or using markup commands wrongly.
 
 WARN_IF_DOC_ERROR      = YES
 
-# This WARN_NO_PARAMDOC option can be abled to get warnings for 
-# functions that are documented, but have no documentation for their parameters 
-# or return value. If set to NO (the default) doxygen will only warn about 
-# wrong or incomplete parameter documentation, but not about the absence of 
+# This WARN_NO_PARAMDOC option can be abled to get warnings for
+# functions that are documented, but have no documentation for their parameters
+# or return value. If set to NO (the default) doxygen will only warn about
+# wrong or incomplete parameter documentation, but not about the absence of
 # documentation.
 
 WARN_NO_PARAMDOC       = NO
 
-# The WARN_FORMAT tag determines the format of the warning messages that 
-# doxygen can produce. The string should contain the $file, $line, and $text 
-# tags, which will be replaced by the file and line number from which the 
-# warning originated and the warning text. Optionally the format may contain 
-# $version, which will be replaced by the version of the file (if it could 
+# The WARN_FORMAT tag determines the format of the warning messages that
+# doxygen can produce. The string should contain the $file, $line, and $text
+# tags, which will be replaced by the file and line number from which the
+# warning originated and the warning text. Optionally the format may contain
+# $version, which will be replaced by the version of the file (if it could
 # be obtained via FILE_VERSION_FILTER)
 
 WARN_FORMAT            = "$file:$line: $text"
 
-# The WARN_LOGFILE tag can be used to specify a file to which warning 
-# and error messages should be written. If left blank the output is written 
+# The WARN_LOGFILE tag can be used to specify a file to which warning
+# and error messages should be written. If left blank the output is written
 # to stderr.
 
-WARN_LOGFILE           = 
+WARN_LOGFILE           =
 
 #---------------------------------------------------------------------------
 # configuration options related to the input files
 #---------------------------------------------------------------------------
 
-# The INPUT tag can be used to specify the files and/or directories that contain 
-# documented source files. You may enter file names like "myfile.cpp" or 
-# directories like "/usr/src/myproject". Separate the files or directories 
+# The INPUT tag can be used to specify the files and/or directories that contain
+# documented source files. You may enter file names like "myfile.cpp" or
+# directories like "/usr/src/myproject". Separate the files or directories
 # with spaces.
 
 INPUT                  = src
 
-# If the value of the INPUT tag contains directories, you can use the 
-# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
-# and *.h) to filter out the source-files in the directories. If left 
-# blank the following patterns are tested: 
-# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx 
+# If the value of the INPUT tag contains directories, you can use the
+# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank the following patterns are tested:
+# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx
 # *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm
 
 FILE_PATTERNS          = *.c *.h
 
-# The RECURSIVE tag can be used to turn specify whether or not subdirectories 
-# should be searched for input files as well. Possible values are YES and NO. 
+# The RECURSIVE tag can be used to turn specify whether or not subdirectories
+# should be searched for input files as well. Possible values are YES and NO.
 # If left blank NO is used.
 
 RECURSIVE              = YES
 
-# The EXCLUDE tag can be used to specify files and/or directories that should 
-# excluded from the INPUT source files. This way you can easily exclude a 
+# The EXCLUDE tag can be used to specify files and/or directories that should
+# excluded from the INPUT source files. This way you can easily exclude a
 # subdirectory from a directory tree whose root is specified with the INPUT tag.
 
-EXCLUDE                = 
+EXCLUDE                =
 
-# The EXCLUDE_SYMLINKS tag can be used select whether or not files or 
-# directories that are symbolic links (a Unix filesystem feature) are excluded 
+# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
+# directories that are symbolic links (a Unix filesystem feature) are excluded
 # from the input.
 
 EXCLUDE_SYMLINKS       = NO
 
-# If the value of the INPUT tag contains directories, you can use the 
-# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude 
+# If the value of the INPUT tag contains directories, you can use the
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
 # certain files from those directories.
 
-EXCLUDE_PATTERNS       = 
+EXCLUDE_PATTERNS       =
 
-# The EXAMPLE_PATH tag can be used to specify one or more files or 
-# directories that contain example code fragments that are included (see 
+# The EXAMPLE_PATH tag can be used to specify one or more files or
+# directories that contain example code fragments that are included (see
 # the \include command).
 
-EXAMPLE_PATH           = 
+EXAMPLE_PATH           =
 
-# If the value of the EXAMPLE_PATH tag contains directories, you can use the 
-# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
-# and *.h) to filter out the source-files in the directories. If left 
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
 # blank all files are included.
 
-EXAMPLE_PATTERNS       = 
+EXAMPLE_PATTERNS       =
 
-# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be 
-# searched for input files to be used with the \include or \dontinclude 
-# commands irrespective of the value of the RECURSIVE tag. 
+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
+# searched for input files to be used with the \include or \dontinclude
+# commands irrespective of the value of the RECURSIVE tag.
 # Possible values are YES and NO. If left blank NO is used.
 
 EXAMPLE_RECURSIVE      = NO
 
-# The IMAGE_PATH tag can be used to specify one or more files or 
-# directories that contain image that are included in the documentation (see 
+# The IMAGE_PATH tag can be used to specify one or more files or
+# directories that contain image that are included in the documentation (see
 # the \image command).
 
-IMAGE_PATH             = 
+IMAGE_PATH             =
 
-# The INPUT_FILTER tag can be used to specify a program that doxygen should 
-# invoke to filter for each input file. Doxygen will invoke the filter program 
-# by executing (via popen()) the command <filter> <input-file>, where <filter> 
-# is the value of the INPUT_FILTER tag, and <input-file> is the name of an 
-# input file. Doxygen will then use the output that the filter program writes 
-# to standard output.  If FILTER_PATTERNS is specified, this tag will be 
+# The INPUT_FILTER tag can be used to specify a program that doxygen should
+# invoke to filter for each input file. Doxygen will invoke the filter program
+# by executing (via popen()) the command <filter> <input-file>, where <filter>
+# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
+# input file. Doxygen will then use the output that the filter program writes
+# to standard output.  If FILTER_PATTERNS is specified, this tag will be
 # ignored.
 
-INPUT_FILTER           = 
+INPUT_FILTER           =
 
-# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern 
-# basis.  Doxygen will compare the file name with each pattern and apply the 
-# filter if there is a match.  The filters are a list of the form: 
-# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further 
-# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER 
+# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
+# basis.  Doxygen will compare the file name with each pattern and apply the
+# filter if there is a match.  The filters are a list of the form:
+# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
+# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER
 # is applied to all files.
 
-FILTER_PATTERNS        = 
+FILTER_PATTERNS        =
 
-# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using 
-# INPUT_FILTER) will be used to filter the input files when producing source 
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
+# INPUT_FILTER) will be used to filter the input files when producing source
 # files to browse (i.e. when SOURCE_BROWSER is set to YES).
 
 FILTER_SOURCE_FILES    = NO
@@ -540,38 +540,38 @@
 # configuration options related to source browsing
 #---------------------------------------------------------------------------
 
-# If the SOURCE_BROWSER tag is set to YES then a list of source files will 
-# be generated. Documented entities will be cross-referenced with these sources. 
-# Note: To get rid of all source code in the generated output, make sure also 
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will
+# be generated. Documented entities will be cross-referenced with these sources.
+# Note: To get rid of all source code in the generated output, make sure also
 # VERBATIM_HEADERS is set to NO.
 
 SOURCE_BROWSER         = YES
 
-# Setting the INLINE_SOURCES tag to YES will include the body 
+# Setting the INLINE_SOURCES tag to YES will include the body
 # of functions and classes directly in the documentation.
 
 INLINE_SOURCES         = NO
 
-# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct 
-# doxygen to hide any special comment blocks from generated source code 
+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
+# doxygen to hide any special comment blocks from generated source code
 # fragments. Normal C and C++ comments will always remain visible.
 
 STRIP_CODE_COMMENTS    = YES
 
-# If the REFERENCED_BY_RELATION tag is set to YES (the default) 
-# then for each documented function all documented 
+# If the REFERENCED_BY_RELATION tag is set to YES (the default)
+# then for each documented function all documented
 # functions referencing it will be listed.
 
 REFERENCED_BY_RELATION = YES
 
-# If the REFERENCES_RELATION tag is set to YES (the default) 
-# then for each documented function all documented entities 
+# If the REFERENCES_RELATION tag is set to YES (the default)
+# then for each documented function all documented entities
 # called/used by that function will be listed.
 
 REFERENCES_RELATION    = YES
 
-# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen 
-# will generate a verbatim copy of the header file for each class for 
+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
+# will generate a verbatim copy of the header file for each class for
 # which an include is specified. Set to NO to disable this.
 
 VERBATIM_HEADERS       = YES
@@ -580,133 +580,133 @@
 # configuration options related to the alphabetical class index
 #---------------------------------------------------------------------------
 
-# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index 
-# of all compounds will be generated. Enable this if the project 
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
+# of all compounds will be generated. Enable this if the project
 # contains a lot of classes, structs, unions or interfaces.
 
 ALPHABETICAL_INDEX     = NO
 
-# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then 
-# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns 
+# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
+# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
 # in which this list will be split (can be a number in the range [1..20])
 
 COLS_IN_ALPHA_INDEX    = 5
 
-# In case all classes in a project start with a common prefix, all 
-# classes will be put under the same header in the alphabetical index. 
-# The IGNORE_PREFIX tag can be used to specify one or more prefixes that 
+# In case all classes in a project start with a common prefix, all
+# classes will be put under the same header in the alphabetical index.
+# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
 # should be ignored while generating the index headers.
 
-IGNORE_PREFIX          = 
+IGNORE_PREFIX          =
 
 #---------------------------------------------------------------------------
 # configuration options related to the HTML output
 #---------------------------------------------------------------------------
 
-# If the GENERATE_HTML tag is set to YES (the default) Doxygen will 
+# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
 # generate HTML output.
 
 GENERATE_HTML          = YES
 
-# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. 
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
 # put in front of it. If left blank `html' will be used as the default path.
 
 HTML_OUTPUT            = api
 
-# The HTML_FILE_EXTENSION tag can be used to specify the file extension for 
-# each generated HTML page (for example: .htm,.php,.asp). If it is left blank 
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
+# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
 # doxygen will generate files with .html extension.
 
 HTML_FILE_EXTENSION    = .html
 
-# The HTML_HEADER tag can be used to specify a personal HTML header for 
-# each generated HTML page. If it is left blank doxygen will generate a 
+# The HTML_HEADER tag can be used to specify a personal HTML header for
+# each generated HTML page. If it is left blank doxygen will generate a
 # standard header.
 
-HTML_HEADER            = 
+HTML_HEADER            =
 
-# The HTML_FOOTER tag can be used to specify a personal HTML footer for 
-# each generated HTML page. If it is left blank doxygen will generate a 
+# The HTML_FOOTER tag can be used to specify a personal HTML footer for
+# each generated HTML page. If it is left blank doxygen will generate a
 # standard footer.
 
-HTML_FOOTER            = 
+HTML_FOOTER            =
 
-# The HTML_STYLESHEET tag can be used to specify a user-defined cascading 
-# style sheet that is used by each HTML page. It can be used to 
-# fine-tune the look of the HTML output. If the tag is left blank doxygen 
-# will generate a default style sheet. Note that doxygen will try to copy 
-# the style sheet file to the HTML output directory, so don't put your own 
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
+# style sheet that is used by each HTML page. It can be used to
+# fine-tune the look of the HTML output. If the tag is left blank doxygen
+# will generate a default style sheet. Note that doxygen will try to copy
+# the style sheet file to the HTML output directory, so don't put your own
 # stylesheet in the HTML output directory as well, or it will be erased!
 
-HTML_STYLESHEET        = 
+HTML_STYLESHEET        =
 
-# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, 
-# files or namespaces will be aligned in HTML using tables. If set to 
+# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
+# files or namespaces will be aligned in HTML using tables. If set to
 # NO a bullet list will be used.
 
 HTML_ALIGN_MEMBERS     = YES
 
-# If the GENERATE_HTMLHELP tag is set to YES, additional index files 
-# will be generated that can be used as input for tools like the 
-# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) 
+# If the GENERATE_HTMLHELP tag is set to YES, additional index files
+# will be generated that can be used as input for tools like the
+# Microsoft HTML help workshop to generate a compressed HTML help file (.chm)
 # of the generated HTML documentation.
 
 GENERATE_HTMLHELP      = NO
 
-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can 
-# be used to specify the file name of the resulting .chm file. You 
-# can add a path in front of the file if the result should not be 
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
+# be used to specify the file name of the resulting .chm file. You
+# can add a path in front of the file if the result should not be
 # written to the html output directory.
 
-CHM_FILE               = 
+CHM_FILE               =
 
-# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can 
-# be used to specify the location (absolute path including file name) of 
-# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run 
+# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
+# be used to specify the location (absolute path including file name) of
+# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
 # the HTML help compiler on the generated index.hhp.
 
-HHC_LOCATION           = 
+HHC_LOCATION           =
 
-# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag 
-# controls if a separate .chi index file is generated (YES) or that 
+# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
+# controls if a separate .chi index file is generated (YES) or that
 # it should be included in the master .chm file (NO).
 
 GENERATE_CHI           = NO
 
-# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag 
-# controls whether a binary table of contents is generated (YES) or a 
+# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
+# controls whether a binary table of contents is generated (YES) or a
 # normal table of contents (NO) in the .chm file.
 
 BINARY_TOC             = NO
 
-# The TOC_EXPAND flag can be set to YES to add extra items for group members 
+# The TOC_EXPAND flag can be set to YES to add extra items for group members
 # to the contents of the HTML help documentation and to the tree view.
 
 TOC_EXPAND             = NO
 
-# The DISABLE_INDEX tag can be used to turn on/off the condensed index at 
-# top of each HTML page. The value NO (the default) enables the index and 
+# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
+# top of each HTML page. The value NO (the default) enables the index and
 # the value YES disables it.
 
 DISABLE_INDEX          = NO
 
-# This tag can be used to set the number of enum values (range [1..20]) 
+# This tag can be used to set the number of enum values (range [1..20])
 # that doxygen will group on one line in the generated HTML documentation.
 
 ENUM_VALUES_PER_LINE   = 4
 
 # If the GENERATE_TREEVIEW tag is set to YES, a side panel will be
-# generated containing a tree-like index structure (just like the one that 
-# is generated for HTML Help). For this to work a browser that supports 
-# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, 
-# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are 
+# generated containing a tree-like index structure (just like the one that
+# is generated for HTML Help). For this to work a browser that supports
+# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+,
+# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are
 # probably better off using the HTML help feature.
 
 GENERATE_TREEVIEW      = NO
 
-# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be 
-# used to set the initial width (in pixels) of the frame in which the tree 
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
+# used to set the initial width (in pixels) of the frame in which the tree
 # is shown.
 
 TREEVIEW_WIDTH         = 250
@@ -715,74 +715,74 @@
 # configuration options related to the LaTeX output
 #---------------------------------------------------------------------------
 
-# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will 
+# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
 # generate Latex output.
 
 GENERATE_LATEX         = NO
 
-# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. 
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
 # put in front of it. If left blank `latex' will be used as the default path.
 
 LATEX_OUTPUT           = latex
 
-# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be 
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
 # invoked. If left blank `latex' will be used as the default command name.
 
 LATEX_CMD_NAME         = latex
 
-# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to 
-# generate index for LaTeX. If left blank `makeindex' will be used as the 
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
+# generate index for LaTeX. If left blank `makeindex' will be used as the
 # default command name.
 
 MAKEINDEX_CMD_NAME     = makeindex
 
-# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact 
-# LaTeX documents. This may be useful for small projects and may help to 
+# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
+# LaTeX documents. This may be useful for small projects and may help to
 # save some trees in general.
 
 COMPACT_LATEX          = NO
 
-# The PAPER_TYPE tag can be used to set the paper type that is used 
-# by the printer. Possible values are: a4, a4wide, letter, legal and 
+# The PAPER_TYPE tag can be used to set the paper type that is used
+# by the printer. Possible values are: a4, a4wide, letter, legal and
 # executive. If left blank a4wide will be used.
 
 PAPER_TYPE             = a4wide
 
-# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX 
+# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
 # packages that should be included in the LaTeX output.
 
-EXTRA_PACKAGES         = 
+EXTRA_PACKAGES         =
 
-# The LATEX_HEADER tag can be used to specify a personal LaTeX header for 
-# the generated latex document. The header should contain everything until 
-# the first chapter. If it is left blank doxygen will generate a 
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
+# the generated latex document. The header should contain everything until
+# the first chapter. If it is left blank doxygen will generate a
 # standard header. Notice: only use this tag if you know what you are doing!
 
-LATEX_HEADER           = 
+LATEX_HEADER           =
 
-# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated 
-# is prepared for conversion to pdf (using ps2pdf). The pdf file will 
-# contain links (just like the HTML output) instead of page references 
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
+# is prepared for conversion to pdf (using ps2pdf). The pdf file will
+# contain links (just like the HTML output) instead of page references
 # This makes the output suitable for online browsing using a pdf viewer.
 
 PDF_HYPERLINKS         = NO
 
-# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of 
-# plain latex in the generated Makefile. Set this option to YES to get a 
+# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
+# plain latex in the generated Makefile. Set this option to YES to get a
 # higher quality PDF documentation.
 
 USE_PDFLATEX           = NO
 
-# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. 
-# command to the generated LaTeX files. This will instruct LaTeX to keep 
-# running if errors occur, instead of asking the user for help. 
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
+# command to the generated LaTeX files. This will instruct LaTeX to keep
+# running if errors occur, instead of asking the user for help.
 # This option is also used when generating formulas in HTML.
 
 LATEX_BATCHMODE        = NO
 
-# If LATEX_HIDE_INDICES is set to YES then doxygen will not 
-# include the index chapters (such as File Index, Compound Index, etc.) 
+# If LATEX_HIDE_INDICES is set to YES then doxygen will not
+# include the index chapters (such as File Index, Compound Index, etc.)
 # in the output.
 
 LATEX_HIDE_INDICES     = NO
@@ -791,68 +791,68 @@
 # configuration options related to the RTF output
 #---------------------------------------------------------------------------
 
-# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output 
-# The RTF output is optimized for Word 97 and may not look very pretty with 
+# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
+# The RTF output is optimized for Word 97 and may not look very pretty with
 # other RTF readers or editors.
 
 GENERATE_RTF           = NO
 
-# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. 
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
 # put in front of it. If left blank `rtf' will be used as the default path.
 
 RTF_OUTPUT             = rtf
 
-# If the COMPACT_RTF tag is set to YES Doxygen generates more compact 
-# RTF documents. This may be useful for small projects and may help to 
+# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
+# RTF documents. This may be useful for small projects and may help to
 # save some trees in general.
 
 COMPACT_RTF            = NO
 
-# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated 
-# will contain hyperlink fields. The RTF file will 
-# contain links (just like the HTML output) instead of page references. 
-# This makes the output suitable for online browsing using WORD or other 
-# programs which support those fields. 
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
+# will contain hyperlink fields. The RTF file will
+# contain links (just like the HTML output) instead of page references.
+# This makes the output suitable for online browsing using WORD or other
+# programs which support those fields.
 # Note: wordpad (write) and others do not support links.
 
 RTF_HYPERLINKS         = NO
 
-# Load stylesheet definitions from file. Syntax is similar to doxygen's 
-# config file, i.e. a series of assignments. You only have to provide 
+# Load stylesheet definitions from file. Syntax is similar to doxygen's
+# config file, i.e. a series of assignments. You only have to provide
 # replacements, missing definitions are set to their default value.
 
-RTF_STYLESHEET_FILE    = 
+RTF_STYLESHEET_FILE    =
 
-# Set optional variables used in the generation of an rtf document. 
+# Set optional variables used in the generation of an rtf document.
 # Syntax is similar to doxygen's config file.
 
-RTF_EXTENSIONS_FILE    = 
+RTF_EXTENSIONS_FILE    =
 
 #---------------------------------------------------------------------------
 # configuration options related to the man page output
 #---------------------------------------------------------------------------
 
-# If the GENERATE_MAN tag is set to YES (the default) Doxygen will 
+# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
 # generate man pages
 
 GENERATE_MAN           = NO
 
-# The MAN_OUTPUT tag is used to specify where the man pages will be put. 
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# The MAN_OUTPUT tag is used to specify where the man pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
 # put in front of it. If left blank `man' will be used as the default path.
 
 MAN_OUTPUT             = man
 
-# The MAN_EXTENSION tag determines the extension that is added to 
+# The MAN_EXTENSION tag determines the extension that is added to
 # the generated man pages (default is the subroutine's section .3)
 
 MAN_EXTENSION          = .3
 
-# If the MAN_LINKS tag is set to YES and Doxygen generates man output, 
-# then it will generate one additional man file for each entity 
-# documented in the real man page(s). These additional files 
-# only source the real man page, but without them the man command 
+# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
+# then it will generate one additional man file for each entity
+# documented in the real man page(s). These additional files
+# only source the real man page, but without them the man command
 # would be unable to find the correct page. The default is NO.
 
 MAN_LINKS              = NO
@@ -861,33 +861,33 @@
 # configuration options related to the XML output
 #---------------------------------------------------------------------------
 
-# If the GENERATE_XML tag is set to YES Doxygen will 
-# generate an XML file that captures the structure of 
+# If the GENERATE_XML tag is set to YES Doxygen will
+# generate an XML file that captures the structure of
 # the code including all documentation.
 
 GENERATE_XML           = NO
 
-# The XML_OUTPUT tag is used to specify where the XML pages will be put. 
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# The XML_OUTPUT tag is used to specify where the XML pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
 # put in front of it. If left blank `xml' will be used as the default path.
 
 XML_OUTPUT             = xml
 
-# The XML_SCHEMA tag can be used to specify an XML schema, 
-# which can be used by a validating XML parser to check the 
+# The XML_SCHEMA tag can be used to specify an XML schema,
+# which can be used by a validating XML parser to check the
 # syntax of the XML files.
 
-XML_SCHEMA             = 
+XML_SCHEMA             =
 
-# The XML_DTD tag can be used to specify an XML DTD, 
-# which can be used by a validating XML parser to check the 
+# The XML_DTD tag can be used to specify an XML DTD,
+# which can be used by a validating XML parser to check the
 # syntax of the XML files.
 
-XML_DTD                = 
+XML_DTD                =
 
-# If the XML_PROGRAMLISTING tag is set to YES Doxygen will 
-# dump the program listings (including syntax highlighting 
-# and cross-referencing information) to the XML output. Note that 
+# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
+# dump the program listings (including syntax highlighting
+# and cross-referencing information) to the XML output. Note that
 # enabling this will significantly increase the size of the XML output.
 
 XML_PROGRAMLISTING     = YES
@@ -896,10 +896,10 @@
 # configuration options for the AutoGen Definitions output
 #---------------------------------------------------------------------------
 
-# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will 
-# generate an AutoGen Definitions (see autogen.sf.net) file 
-# that captures the structure of the code including all 
-# documentation. Note that this feature is still experimental 
+# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
+# generate an AutoGen Definitions (see autogen.sf.net) file
+# that captures the structure of the code including all
+# documentation. Note that this feature is still experimental
 # and incomplete at the moment.
 
 GENERATE_AUTOGEN_DEF   = NO
@@ -908,311 +908,311 @@
 # configuration options related to the Perl module output
 #---------------------------------------------------------------------------
 
-# If the GENERATE_PERLMOD tag is set to YES Doxygen will 
-# generate a Perl module file that captures the structure of 
-# the code including all documentation. Note that this 
-# feature is still experimental and incomplete at the 
+# If the GENERATE_PERLMOD tag is set to YES Doxygen will
+# generate a Perl module file that captures the structure of
+# the code including all documentation. Note that this
+# feature is still experimental and incomplete at the
 # moment.
 
 GENERATE_PERLMOD       = NO
 
-# If the PERLMOD_LATEX tag is set to YES Doxygen will generate 
-# the necessary Makefile rules, Perl scripts and LaTeX code to be able 
+# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
+# the necessary Makefile rules, Perl scripts and LaTeX code to be able
 # to generate PDF and DVI output from the Perl module output.
 
 PERLMOD_LATEX          = NO
 
-# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be 
-# nicely formatted so it can be parsed by a human reader.  This is useful 
-# if you want to understand what is going on.  On the other hand, if this 
-# tag is set to NO the size of the Perl module output will be much smaller 
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
+# nicely formatted so it can be parsed by a human reader.  This is useful
+# if you want to understand what is going on.  On the other hand, if this
+# tag is set to NO the size of the Perl module output will be much smaller
 # and Perl will parse it just the same.
 
 PERLMOD_PRETTY         = YES
 
-# The names of the make variables in the generated doxyrules.make file 
-# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. 
-# This is useful so different doxyrules.make files included by the same 
+# The names of the make variables in the generated doxyrules.make file
+# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
+# This is useful so different doxyrules.make files included by the same
 # Makefile don't overwrite each other's variables.
 
-PERLMOD_MAKEVAR_PREFIX = 
+PERLMOD_MAKEVAR_PREFIX =
 
 #---------------------------------------------------------------------------
-# Configuration options related to the preprocessor   
+# Configuration options related to the preprocessor
 #---------------------------------------------------------------------------
 
-# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will 
-# evaluate all C-preprocessor directives found in the sources and include 
+# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
+# evaluate all C-preprocessor directives found in the sources and include
 # files.
 
 ENABLE_PREPROCESSING   = YES
 
-# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro 
-# names in the source code. If set to NO (the default) only conditional 
-# compilation will be performed. Macro expansion can be done in a controlled 
+# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
+# names in the source code. If set to NO (the default) only conditional
+# compilation will be performed. Macro expansion can be done in a controlled
 # way by setting EXPAND_ONLY_PREDEF to YES.
 
 MACRO_EXPANSION        = NO
 
-# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES 
-# then the macro expansion is limited to the macros specified with the 
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
+# then the macro expansion is limited to the macros specified with the
 # PREDEFINED and EXPAND_AS_PREDEFINED tags.
 
 EXPAND_ONLY_PREDEF     = NO
 
-# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files 
+# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
 # in the INCLUDE_PATH (see below) will be search if a #include is found.
 
 SEARCH_INCLUDES        = YES
 
-# The INCLUDE_PATH tag can be used to specify one or more directories that 
-# contain include files that are not input files but should be processed by 
+# The INCLUDE_PATH tag can be used to specify one or more directories that
+# contain include files that are not input files but should be processed by
 # the preprocessor.
 
-INCLUDE_PATH           = 
+INCLUDE_PATH           =
 
-# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard 
-# patterns (like *.h and *.hpp) to filter out the header-files in the 
-# directories. If left blank, the patterns specified with FILE_PATTERNS will 
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
+# patterns (like *.h and *.hpp) to filter out the header-files in the
+# directories. If left blank, the patterns specified with FILE_PATTERNS will
 # be used.
 
-INCLUDE_FILE_PATTERNS  = 
+INCLUDE_FILE_PATTERNS  =
 
-# The PREDEFINED tag can be used to specify one or more macro names that 
-# are defined before the preprocessor is started (similar to the -D option of 
-# gcc). The argument of the tag is a list of macros of the form: name 
-# or name=definition (no spaces). If the definition and the = are 
-# omitted =1 is assumed. To prevent a macro definition from being 
-# undefined via #undef or recursively expanded use the := operator 
+# The PREDEFINED tag can be used to specify one or more macro names that
+# are defined before the preprocessor is started (similar to the -D option of
+# gcc). The argument of the tag is a list of macros of the form: name
+# or name=definition (no spaces). If the definition and the = are
+# omitted =1 is assumed. To prevent a macro definition from being
+# undefined via #undef or recursively expanded use the := operator
 # instead of the = operator.
 
-PREDEFINED             = 
+PREDEFINED             =
 
-# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then 
-# this tag can be used to specify a list of macro names that should be expanded. 
-# The macro definition that is found in the sources will be used. 
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
+# this tag can be used to specify a list of macro names that should be expanded.
+# The macro definition that is found in the sources will be used.
 # Use the PREDEFINED tag if you want to use a different macro definition.
 
-EXPAND_AS_DEFINED      = 
+EXPAND_AS_DEFINED      =
 
-# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then 
-# doxygen's preprocessor will remove all function-like macros that are alone 
-# on a line, have an all uppercase name, and do not end with a semicolon. Such 
-# function macros are typically used for boiler-plate code, and will confuse 
+# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
+# doxygen's preprocessor will remove all function-like macros that are alone
+# on a line, have an all uppercase name, and do not end with a semicolon. Such
+# function macros are typically used for boiler-plate code, and will confuse
 # the parser if not removed.
 
 SKIP_FUNCTION_MACROS   = YES
 
 #---------------------------------------------------------------------------
-# Configuration::additions related to external references   
+# Configuration::additions related to external references
 #---------------------------------------------------------------------------
 
-# The TAGFILES option can be used to specify one or more tagfiles. 
-# Optionally an initial location of the external documentation 
-# can be added for each tagfile. The format of a tag file without 
-# this location is as follows: 
-#   TAGFILES = file1 file2 ... 
-# Adding location for the tag files is done as follows: 
-#   TAGFILES = file1=loc1 "file2 = loc2" ... 
-# where "loc1" and "loc2" can be relative or absolute paths or 
-# URLs. If a location is present for each tag, the installdox tool 
+# The TAGFILES option can be used to specify one or more tagfiles.
+# Optionally an initial location of the external documentation
+# can be added for each tagfile. The format of a tag file without
+# this location is as follows:
+#   TAGFILES = file1 file2 ...
+# Adding location for the tag files is done as follows:
+#   TAGFILES = file1=loc1 "file2 = loc2" ...
+# where "loc1" and "loc2" can be relative or absolute paths or
+# URLs. If a location is present for each tag, the installdox tool
 # does not have to be run to correct the links.
 # Note that each tag file must have a unique name
 # (where the name does NOT include the path)
-# If a tag file is not located in the directory in which doxygen 
+# If a tag file is not located in the directory in which doxygen
 # is run, you must also specify the path to the tagfile here.
 
-TAGFILES               = 
+TAGFILES               =
 
-# When a file name is specified after GENERATE_TAGFILE, doxygen will create 
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create
 # a tag file that is based on the input files it reads.
 
-GENERATE_TAGFILE       = 
+GENERATE_TAGFILE       =
 
-# If the ALLEXTERNALS tag is set to YES all external classes will be listed 
-# in the class index. If set to NO only the inherited external classes 
+# If the ALLEXTERNALS tag is set to YES all external classes will be listed
+# in the class index. If set to NO only the inherited external classes
 # will be listed.
 
 ALLEXTERNALS           = NO
 
-# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed 
-# in the modules index. If set to NO, only the current project's groups will 
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
+# in the modules index. If set to NO, only the current project's groups will
 # be listed.
 
 EXTERNAL_GROUPS        = YES
 
-# The PERL_PATH should be the absolute path and name of the perl script 
+# The PERL_PATH should be the absolute path and name of the perl script
 # interpreter (i.e. the result of `which perl').
 
 PERL_PATH              = /usr/bin/perl
 
 #---------------------------------------------------------------------------
-# Configuration options related to the dot tool   
+# Configuration options related to the dot tool
 #---------------------------------------------------------------------------
 
-# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will 
-# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base 
-# or super classes. Setting the tag to NO turns the diagrams off. Note that 
-# this option is superseded by the HAVE_DOT option below. This is only a 
-# fallback. It is recommended to install and use dot, since it yields more 
+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
+# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
+# or super classes. Setting the tag to NO turns the diagrams off. Note that
+# this option is superseded by the HAVE_DOT option below. This is only a
+# fallback. It is recommended to install and use dot, since it yields more
 # powerful graphs.
 
 CLASS_DIAGRAMS         = YES
 
-# If set to YES, the inheritance and collaboration graphs will hide 
-# inheritance and usage relations if the target is undocumented 
+# If set to YES, the inheritance and collaboration graphs will hide
+# inheritance and usage relations if the target is undocumented
 # or is not a class.
 
 HIDE_UNDOC_RELATIONS   = YES
 
-# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is 
-# available from the path. This tool is part of Graphviz, a graph visualization 
-# toolkit from AT&T and Lucent Bell Labs. The other options in this section 
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
+# available from the path. This tool is part of Graphviz, a graph visualization
+# toolkit from AT&T and Lucent Bell Labs. The other options in this section
 # have no effect if this option is set to NO (the default)
 
 HAVE_DOT               = NO
 
-# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen 
-# will generate a graph for each documented class showing the direct and 
-# indirect inheritance relations. Setting this tag to YES will force the 
+# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect inheritance relations. Setting this tag to YES will force the
 # the CLASS_DIAGRAMS tag to NO.
 
 CLASS_GRAPH            = YES
 
-# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen 
-# will generate a graph for each documented class showing the direct and 
-# indirect implementation dependencies (inheritance, containment, and 
+# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect implementation dependencies (inheritance, containment, and
 # class references variables) of the class with other documented classes.
 
 COLLABORATION_GRAPH    = YES
 
-# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen 
+# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
 # will generate a graph for groups, showing the direct groups dependencies
 
 GROUP_GRAPHS           = YES
 
-# If the UML_LOOK tag is set to YES doxygen will generate inheritance and 
-# collaboration diagrams in a style similar to the OMG's Unified Modeling 
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
+# collaboration diagrams in a style similar to the OMG's Unified Modeling
 # Language.
 
 UML_LOOK               = NO
 
-# If set to YES, the inheritance and collaboration graphs will show the 
+# If set to YES, the inheritance and collaboration graphs will show the
 # relations between templates and their instances.
 
 TEMPLATE_RELATIONS     = NO
 
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT 
-# tags are set to YES then doxygen will generate a graph for each documented 
-# file showing the direct and indirect include dependencies of the file with 
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
+# tags are set to YES then doxygen will generate a graph for each documented
+# file showing the direct and indirect include dependencies of the file with
 # other documented files.
 
 INCLUDE_GRAPH          = YES
 
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and 
-# HAVE_DOT tags are set to YES then doxygen will generate a graph for each 
-# documented header file showing the documented files that directly or 
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
+# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
+# documented header file showing the documented files that directly or
 # indirectly include this file.
 
 INCLUDED_BY_GRAPH      = YES
 
-# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will 
-# generate a call dependency graph for every global function or class method. 
-# Note that enabling this option will significantly increase the time of a run. 
-# So in most cases it will be better to enable call graphs for selected 
+# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will
+# generate a call dependency graph for every global function or class method.
+# Note that enabling this option will significantly increase the time of a run.
+# So in most cases it will be better to enable call graphs for selected
 # functions only using the \callgraph command.
 
 CALL_GRAPH             = NO
 
-# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen 
+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
 # will graphical hierarchy of all classes instead of a textual one.
 
 GRAPHICAL_HIERARCHY    = YES
 
-# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES 
-# then doxygen will show the dependencies a directory has on other directories 
+# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES
+# then doxygen will show the dependencies a directory has on other directories
 # in a graphical way. The dependency relations are determined by the #include
 # relations between the files in the directories.
 
 DIRECTORY_GRAPH        = YES
 
-# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images 
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
 # generated by dot. Possible values are png, jpg, or gif
 # If left blank png will be used.
 
 DOT_IMAGE_FORMAT       = png
 
-# The tag DOT_PATH can be used to specify the path where the dot tool can be 
+# The tag DOT_PATH can be used to specify the path where the dot tool can be
 # found. If left blank, it is assumed the dot tool can be found in the path.
 
-DOT_PATH               = 
+DOT_PATH               =
 
-# The DOTFILE_DIRS tag can be used to specify one or more directories that 
-# contain dot files that are included in the documentation (see the 
+# The DOTFILE_DIRS tag can be used to specify one or more directories that
+# contain dot files that are included in the documentation (see the
 # \dotfile command).
 
-DOTFILE_DIRS           = 
+DOTFILE_DIRS           =
 
-# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width 
-# (in pixels) of the graphs generated by dot. If a graph becomes larger than 
-# this value, doxygen will try to truncate the graph, so that it fits within 
-# the specified constraint. Beware that most browsers cannot cope with very 
+# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width
+# (in pixels) of the graphs generated by dot. If a graph becomes larger than
+# this value, doxygen will try to truncate the graph, so that it fits within
+# the specified constraint. Beware that most browsers cannot cope with very
 # large images.
 
 MAX_DOT_GRAPH_WIDTH    = 1024
 
-# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height 
-# (in pixels) of the graphs generated by dot. If a graph becomes larger than 
-# this value, doxygen will try to truncate the graph, so that it fits within 
-# the specified constraint. Beware that most browsers cannot cope with very 
+# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height
+# (in pixels) of the graphs generated by dot. If a graph becomes larger than
+# this value, doxygen will try to truncate the graph, so that it fits within
+# the specified constraint. Beware that most browsers cannot cope with very
 # large images.
 
 MAX_DOT_GRAPH_HEIGHT   = 1024
 
-# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the 
-# graphs generated by dot. A depth value of 3 means that only nodes reachable 
-# from the root by following a path via at most 3 edges will be shown. Nodes 
-# that lay further from the root node will be omitted. Note that setting this 
-# option to 1 or 2 may greatly reduce the computation time needed for large 
-# code bases. Also note that a graph may be further truncated if the graph's 
-# image dimensions are not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH 
-# and MAX_DOT_GRAPH_HEIGHT). If 0 is used for the depth value (the default), 
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
+# graphs generated by dot. A depth value of 3 means that only nodes reachable
+# from the root by following a path via at most 3 edges will be shown. Nodes
+# that lay further from the root node will be omitted. Note that setting this
+# option to 1 or 2 may greatly reduce the computation time needed for large
+# code bases. Also note that a graph may be further truncated if the graph's
+# image dimensions are not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH
+# and MAX_DOT_GRAPH_HEIGHT). If 0 is used for the depth value (the default),
 # the graph is not depth-constrained.
 
 MAX_DOT_GRAPH_DEPTH    = 0
 
-# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent 
-# background. This is disabled by default, which results in a white background. 
-# Warning: Depending on the platform used, enabling this option may lead to 
-# badly anti-aliased labels on the edges of a graph (i.e. they become hard to 
+# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
+# background. This is disabled by default, which results in a white background.
+# Warning: Depending on the platform used, enabling this option may lead to
+# badly anti-aliased labels on the edges of a graph (i.e. they become hard to
 # read).
 
 DOT_TRANSPARENT        = NO
 
-# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output 
-# files in one run (i.e. multiple -o and -T options on the command line). This 
-# makes dot run faster, but since only newer versions of dot (>1.8.10) 
+# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
+# files in one run (i.e. multiple -o and -T options on the command line). This
+# makes dot run faster, but since only newer versions of dot (>1.8.10)
 # support this, this feature is disabled by default.
 
 DOT_MULTI_TARGETS      = NO
 
-# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will 
-# generate a legend page explaining the meaning of the various boxes and 
+# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
+# generate a legend page explaining the meaning of the various boxes and
 # arrows in the dot generated graphs.
 
 GENERATE_LEGEND        = YES
 
-# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will 
-# remove the intermediate dot files that are used to generate 
+# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
+# remove the intermediate dot files that are used to generate
 # the various graphs.
 
 DOT_CLEANUP            = YES
 
 #---------------------------------------------------------------------------
-# Configuration::additions related to the search engine   
+# Configuration::additions related to the search engine
 #---------------------------------------------------------------------------
 
-# The SEARCHENGINE tag specifies whether or not a search engine should be 
+# The SEARCHENGINE tag specifies whether or not a search engine should be
 # used. If set to NO the values of all tags below this one will be ignored.
 
 SEARCHENGINE           = NO

Modified: trunk/PCSC/doc/doxygen.css
===================================================================
--- trunk/PCSC/doc/doxygen.css	2006-09-06 13:49:40 UTC (rev 2150)
+++ trunk/PCSC/doc/doxygen.css	2006-09-06 20:02:47 UTC (rev 2151)
@@ -143,7 +143,7 @@
 	border: 1px solid #CCCCCC;
 }
 TR.memlist {
-   background-color: #f0f0f0; 
+   background-color: #f0f0f0;
 }
 P.formulaDsp { text-align: center; }
 IMG.formulaDsp { }

Modified: trunk/PCSC/doc/formaticc.1
===================================================================
--- trunk/PCSC/doc/formaticc.1	2006-09-06 13:49:40 UTC (rev 2150)
+++ trunk/PCSC/doc/formaticc.1	2006-09-06 20:02:47 UTC (rev 2151)
@@ -8,30 +8,29 @@
 .SH DESCRIPTION
 .B formaticc
 sends one or more request APDU's to a smart card and get responses.
-.PP 
+.PP
 .B formaticc
 takes a set of APDU's from an input file
 and generates an output file with the data returned by the card.
-.PP 
+.PP
 The input and output file names and the identification of the reader
 to connect to are prompted to the user.
-.PP 
+.PP
 The input file contains an APDU per line. Each line contains the length in
-bytes of the APDU and the APDU octets in hexadecimal notation, separated by 
+bytes of the APDU and the APDU octets in hexadecimal notation, separated by
 space characters. The generated output file contains response APDU's
 following the same format.
 .
 .SH "EXAMPLE FILES"
-.TP 
+.TP
 sample input file:
  05 C0 84 00 00 08
  05 C0 84 00 00 08
  07 C0 A4 00 00 02 3F 00
  07 C0 A4 00 00 02 3F 00
-.TP 
+.TP
 sample output file:
  02 6e 00
-.
 .SH AUTHORS
 This manual page was written by Carlos Prados <cprados at debian.org>,
 for the Debian GNU/Linux system (but may be used by others).

Modified: trunk/PCSC/doc/ifdhandler-3.tex
===================================================================
--- trunk/PCSC/doc/ifdhandler-3.tex	2006-09-06 13:49:40 UTC (rev 2150)
+++ trunk/PCSC/doc/ifdhandler-3.tex	2006-09-06 20:02:47 UTC (rev 2151)
@@ -13,7 +13,7 @@
 \usepackage{url}
 \usepackage{varioref}
 
-% Détection de pdflatex
+% Détection de pdflatex
 \ifx\pdfcompresslevel\undefined
 % Si on fait un postscript
 \typeout{Postscript version}
@@ -605,7 +605,7 @@
 
 If the reader has more than one slot (see
 \texttt{TAG\_IFD\_SLOTS\_NUMBER} above) this tag indicates if the driver
-supports access to multiple slots of the same reader at the same time. 
+supports access to multiple slots of the same reader at the same time.
 
 \texttt{Value[0] = 1} indicates the driver supports simultaneous slot
 accesses.
@@ -1148,7 +1148,7 @@
 \subsection{API version 2.0}
 
 \begin{itemize}
-\item \texttt{DEVICENAME} in \texttt{reader.conf} is not used. 
+\item \texttt{DEVICENAME} in \texttt{reader.conf} is not used.
 
 \item \texttt{IFDHControl()} API was:
 \begin{verbatim}

Modified: trunk/PCSC/doc/pcscd.8.in
===================================================================
--- trunk/PCSC/doc/pcscd.8.in	2006-09-06 13:49:40 UTC (rev 2150)
+++ trunk/PCSC/doc/pcscd.8.in	2006-09-06 20:02:47 UTC (rev 2151)
@@ -44,33 +44,33 @@
 Displays the program version number
 .
 .SH DESCRIPTION
-pcscd is the daemon program for pcsc-lite and the MuscleCard framework. It is 
-a resource manager that coordinates communications with smart card readers 
+pcscd is the daemon program for pcsc-lite and the MuscleCard framework. It is
+a resource manager that coordinates communications with smart card readers
 and smart cards and cryptographic tokens that are connected to the system.
 .PP
-pcscd is normally started at boot time from 
+pcscd is normally started at boot time from
 .IR @sysconfdir_exp@/init.d/pcscd .
 It allows applications to access smart cards and readers without knowing
-details of the card or reader.  
+details of the card or reader.
 .PP
 pcscd coordinates the loading of drivers for card readers.
 .PP
 The purpose of pcsc-lite is to provide a cross compatible API (called
 winscard) for migrating Windows based PC/SC applications to Unix.
 .PP
-At startup, pcscd loads the smart card reader drivers specified in the 
-.I @confdir@/reader.conf 
+At startup, pcscd loads the smart card reader drivers specified in the
+.I @confdir@/reader.conf
 file (or specified using
-.B \-\-config 
+.B \-\-config
 .IR file ).
 .
 .SH "SERIAL SMART CARD READER DRIVERS"
-Smart card reader drivers are placed in the 
+Smart card reader drivers are placed in the
 .I @usbdropdir@
-directory. Each driver is simply an 
-.I .so 
-file.  pcscd locates the driver using the 
-.I @confdir@/reader.conf 
+directory. Each driver is simply an
+.I .so
+file.  pcscd locates the driver using the
+.I @confdir@/reader.conf
 file.  See the
 .BR reader.conf (5)
 manual page for more information.
@@ -80,7 +80,7 @@
 USB smart card reader drivers are located in
 .I @usbdropdir@
 directory as a bundle. You shall not add a USB driver in
-.I @confdir@/reader.conf 
+.I @confdir@/reader.conf
 file.
 .
 .SH FILES

Modified: trunk/PCSC/doc/reader.conf.5.in
===================================================================
--- trunk/PCSC/doc/reader.conf.5.in	2006-09-06 13:49:40 UTC (rev 2150)
+++ trunk/PCSC/doc/reader.conf.5.in	2006-09-06 20:02:47 UTC (rev 2151)
@@ -38,7 +38,7 @@
 under FreeBSD.
 .PP
 The "LIBPATH" field is the filename of the driver code. The driver is
-a dynamically loaded piece of code (generally a 
+a dynamically loaded piece of code (generally a
 .IR drivername.so* file).
 .PP
 The "CHANNELID" is no more used for recent drivers (IFD handler 3.0) and

Modified: trunk/PCSC/src/PCSC/debuglog.h
===================================================================
--- trunk/PCSC/src/PCSC/debuglog.h	2006-09-06 13:49:40 UTC (rev 2150)
+++ trunk/PCSC/src/PCSC/debuglog.h	2006-09-06 20:02:47 UTC (rev 2151)
@@ -53,8 +53,8 @@
 };
 
 #define DEBUG_CATEGORY_NOTHING  0
-#define DEBUG_CATEGORY_APDU     1 
-#define DEBUG_CATEGORY_SW       2 
+#define DEBUG_CATEGORY_APDU     1
+#define DEBUG_CATEGORY_SW       2
 
 enum {
 	PCSC_LOG_DEBUG = 0,

Modified: trunk/PCSC/src/PCSC/ifdhandler.h
===================================================================
--- trunk/PCSC/src/PCSC/ifdhandler.h	2006-09-06 13:49:40 UTC (rev 2150)
+++ trunk/PCSC/src/PCSC/ifdhandler.h	2006-09-06 20:02:47 UTC (rev 2151)
@@ -24,7 +24,7 @@
 #endif
 
 	/*
-	 * List of data structures available to ifdhandler 
+	 * List of data structures available to ifdhandler
 	 */
 
 	typedef struct _DEVICE_CAPABILITIES
@@ -83,12 +83,12 @@
 	SCARD_IO_HEADER, *PSCARD_IO_HEADER;
 
 	/*
-	 * End of structure list 
+	 * End of structure list
 	 */
 
 	/*
 	 * The list of tags should be alot more but this is all I use in the
-	 * meantime 
+	 * meantime
 	 */
 
 #define TAG_IFD_ATR                     0x0303
@@ -99,21 +99,21 @@
 #define TAG_IFD_SIMULTANEOUS_ACCESS     0x0FAF
 
 	/*
-	 * End of tag list 
+	 * End of tag list
 	 */
 
 	/*
-	 * IFD Handler version number enummerations 
+	 * IFD Handler version number enummerations
 	 */
 #define IFD_HVERSION_1_0               0x00010000
 #define IFD_HVERSION_2_0               0x00020000
 #define IFD_HVERSION_3_0               0x00030000
 	/*
-	 * End of version number enummerations 
+	 * End of version number enummerations
 	 */
 
 	/*
-	 * List of defines available to ifdhandler 
+	 * List of defines available to ifdhandler
 	 */
 
 #define IFD_POWER_UP			500
@@ -151,7 +151,7 @@
 #ifndef IFDHANDLERv2
 
 	/*
-	 * List of Defined Functions Available to IFD_Handler 3.0 
+	 * List of Defined Functions Available to IFD_Handler 3.0
 	 *
 	 * All the functions of IFD_Handler 2.0 are available
 	 * IFDHCreateChannelByName() is new
@@ -164,7 +164,7 @@
 #else
 
 	/*
-	 * List of Defined Functions Available to IFD_Handler 2.0 
+	 * List of Defined Functions Available to IFD_Handler 2.0
 	 */
 
 	RESPONSECODE IFDHControl(DWORD, PUCHAR, DWORD, PUCHAR, PDWORD);
@@ -186,7 +186,7 @@
 	RESPONSECODE IFDHICCPresence(DWORD);
 
 	/*
-	 * List of Defined Functions Available to IFD_Handler 1.0 
+	 * List of Defined Functions Available to IFD_Handler 1.0
 	 */
 
 	RESPONSECODE IO_Create_Channel(DWORD);

Modified: trunk/PCSC/src/README_INTERNALS.txt
===================================================================
--- trunk/PCSC/src/README_INTERNALS.txt	2006-09-06 13:49:40 UTC (rev 2150)
+++ trunk/PCSC/src/README_INTERNALS.txt	2006-09-06 20:02:47 UTC (rev 2151)
@@ -113,11 +113,11 @@
 
 PC/SC D2
         \ (3)           (1)              -- R1
-         ------       --------          / 
+         ------       --------          /
                \     /        \        /
                 App A          PC/SC D1---- R2S1
-                     \        /  | | | \ 
-                      --------   | | |  \ 
+                     \        /  | | | \
+                      --------   | | |  \
                         (2)      | | |   -- R2S2
 PC/SC D3                         | | |
         \   (4)          (5)     | | |
@@ -218,7 +218,7 @@
   in winscard_clnt.c)
 - each entry readerStates[i] gets a reference to the memory segment of
   the server.
-  
+
 The memory is READ ONLY on the library side.
 
 

Modified: trunk/PCSC/src/atrhandler.c
===================================================================
--- trunk/PCSC/src/atrhandler.c	2006-09-06 13:49:40 UTC (rev 2150)
+++ trunk/PCSC/src/atrhandler.c	2006-09-06 20:02:47 UTC (rev 2151)
@@ -38,7 +38,7 @@
  * @param psExtension
  * @param pucAtr
  * @param dwLength
- * @return 
+ * @return
  */
 short ATRDecodeAtr(PSMARTCARD_EXTENSION psExtension,
 	PUCHAR pucAtr, DWORD dwLength)
@@ -49,7 +49,7 @@
 	int i = 1;					/* value of the index in TAi, TBi, etc. */
 
 	/*
-	 * Zero out everything 
+	 * Zero out everything
 	 */
 	p = K = TCK = Y1i = T = 0;
 
@@ -62,13 +62,13 @@
 		return 0;	/** @retval 0 Atr must have TS and T0 */
 
 	/*
-	 * Zero out the bitmasks 
+	 * Zero out the bitmasks
 	 */
 	psExtension->CardCapabilities.AvailableProtocols = SCARD_PROTOCOL_UNSET;
 	psExtension->CardCapabilities.CurrentProtocol = SCARD_PROTOCOL_UNSET;
 
 	/*
-	 * Decode the TS byte 
+	 * Decode the TS byte
 	 */
 	if (pucAtr[0] == 0x3F)
 	{	/* Inverse convention used */
@@ -86,11 +86,11 @@
 		}
 
 	/*
-	 * Here comes the platform dependant stuff 
+	 * Here comes the platform dependant stuff
 	 */
 
 	/*
-	 * Decode the T0 byte 
+	 * Decode the T0 byte
 	 */
 	Y1i = pucAtr[1] >> 4;	/* Get the MSN in Y1 */
 	K = pucAtr[1] & 0x0F;	/* Get the LSN in K */
@@ -103,7 +103,7 @@
 #endif
 
 	/*
-	 * Examine Y1 
+	 * Examine Y1
 	 */
 	do
 	{
@@ -121,7 +121,7 @@
 #endif
 
 		/*
-		 * Examine TDi to determine protocol and more 
+		 * Examine TDi to determine protocol and more
 		 */
 		if (TDi >= 0)
 		{
@@ -182,7 +182,7 @@
 					{
 						/*
 						 * Do nothing for now since other protocols are not
-						 * supported at this time 
+						 * supported at this time
 						 */
 					}
 
@@ -226,7 +226,7 @@
 	while (Y1i != 0);
 
 	/*
-	 * If TDx is not set then the current must be T0 
+	 * If TDx is not set then the current must be T0
 	 */
 	if (psExtension->CardCapabilities.CurrentProtocol == SCARD_PROTOCOL_UNSET)
 	{
@@ -235,7 +235,7 @@
 	}
 
 	/*
-	 * Take care of the historical characters 
+	 * Take care of the historical characters
 	 */
 	psExtension->ATR.HistoryLength = K;
 	memcpy(psExtension->ATR.HistoryValue, &pucAtr[p], K);
@@ -244,7 +244,7 @@
 
 	/*
 	 * Check to see if TCK character is included It will be included if
-	 * more than T=0 is supported 
+	 * more than T=0 is supported
 	 */
 	if (psExtension->CardCapabilities.AvailableProtocols & SCARD_PROTOCOL_T1)
 		TCK = pucAtr[p++];

Modified: trunk/PCSC/src/atrhandler.h
===================================================================
--- trunk/PCSC/src/atrhandler.h	2006-09-06 13:49:40 UTC (rev 2150)
+++ trunk/PCSC/src/atrhandler.h	2006-09-06 20:02:47 UTC (rev 2151)
@@ -79,14 +79,14 @@
 		CardCapabilities;
 
 		/*
-		 * PREADER_CONNECTION psReaderConnection; 
+		 * PREADER_CONNECTION psReaderConnection;
 		 */
 
 	}
 	SMARTCARD_EXTENSION, *PSMARTCARD_EXTENSION;
 
 	/*
-	 * Decodes the ATR and fills the structure 
+	 * Decodes the ATR and fills the structure
 	 */
 
 	short ATRDecodeAtr(PSMARTCARD_EXTENSION psExtension,

Modified: trunk/PCSC/src/configfile.l
===================================================================
--- trunk/PCSC/src/configfile.l	2006-09-06 13:49:40 UTC (rev 2150)
+++ trunk/PCSC/src/configfile.l	2006-09-06 20:02:47 UTC (rev 2151)
@@ -22,7 +22,7 @@
 static char *pcPrevious;
 static char *pcCurrent;
 static char *pcFriendlyname;
-static char *pcDevicename;                
+static char *pcDevicename;
 static char *pcLibpath;
 static char *pcChannelid;
 static int badError;
@@ -40,9 +40,9 @@
 
 #.*                                       {}
 "\n"                                      { iLinenumber++; }
-(\"[^"\n]*["\n])|(\'[^'\n]*['\n])         { evaluatetoken( yytext); } 
+(\"[^"\n]*["\n])|(\'[^'\n]*['\n])         { evaluatetoken( yytext); }
 [ \t]                                     {}
-([A-Z]|[a-z]|[0-9]|[\\\/\-\.\_\@:])+      { evaluatetoken( yytext ); } 
+([A-Z]|[a-z]|[0-9]|[\\\/\-\.\_\@:])+      { evaluatetoken( yytext ); }
 .                                         { tok_error( yytext ); }
 %%
 

Modified: trunk/PCSC/src/debug.c
===================================================================
--- trunk/PCSC/src/debug.c	2006-09-06 13:49:40 UTC (rev 2150)
+++ trunk/PCSC/src/debug.c	2006-09-06 20:02:47 UTC (rev 2151)
@@ -13,7 +13,7 @@
  * @file
  * @brief This handles debugging for libpcsclite.
  */
- 
+
 #include "config.h"
 #include <stdarg.h>
 #include <stdlib.h>

Modified: trunk/PCSC/src/debuglog.c
===================================================================
--- trunk/PCSC/src/debuglog.c	2006-09-06 13:49:40 UTC (rev 2150)
+++ trunk/PCSC/src/debuglog.c	2006-09-06 20:02:47 UTC (rev 2151)
@@ -13,7 +13,7 @@
  * @file
  * @brief This handles debugging for pcscd.
  */
- 
+
 #include "config.h"
 #ifdef HAVE_SYSLOG_H
 #include <syslog.h>
@@ -32,9 +32,9 @@
 #include "sys_generic.h"
 #include "strlcpycat.h"
 
-/** 
+/**
  * Max string size when dumping a 256 bytes longs APDU
- * Should be bigger than 256*3+30 
+ * Should be bigger than 256*3+30
  */
 #define DEBUG_BUF_SIZE 2048
 

Modified: trunk/PCSC/src/dyn_macosx.c
===================================================================
--- trunk/PCSC/src/dyn_macosx.c	2006-09-06 13:49:40 UTC (rev 2150)
+++ trunk/PCSC/src/dyn_macosx.c	2006-09-06 20:02:47 UTC (rev 2151)
@@ -25,7 +25,7 @@
 #include <CoreFoundation/CFURL.h>
 
 /*
- * / Load a module (if needed) 
+ * / Load a module (if needed)
  */
 int DYN_LoadLibrary(void **pvLHandle, char *pcLibrary)
 {
@@ -37,7 +37,7 @@
 	*pvLHandle = 0;
 
 	/*
-	 * @@@ kCFStringEncodingMacRoman might be wrong on non US systems. 
+	 * @@@ kCFStringEncodingMacRoman might be wrong on non US systems.
 	 */
 
 	bundlePath = CFStringCreateWithCString(NULL, pcLibrary,

Modified: trunk/PCSC/src/dyn_win32.c
===================================================================
--- trunk/PCSC/src/dyn_win32.c	2006-09-06 13:49:40 UTC (rev 2150)
+++ trunk/PCSC/src/dyn_win32.c	2006-09-06 20:02:47 UTC (rev 2151)
@@ -63,7 +63,7 @@
 	char *pcFunctionName;
 
 	/*
-	 * Zero out everything 
+	 * Zero out everything
 	 */
 	rv = 0;
 	pcFunctionName = NULL;

Modified: trunk/PCSC/src/error.c
===================================================================
--- trunk/PCSC/src/error.c	2006-09-06 13:49:40 UTC (rev 2150)
+++ trunk/PCSC/src/error.c	2006-09-06 20:02:47 UTC (rev 2151)
@@ -17,7 +17,7 @@
  * @file
  * @brief This handles pcsc_stringify_error()
  */
- 
+
 #include <stdio.h>
 #include <sys/types.h>
 

Modified: trunk/PCSC/src/eventhandler.c
===================================================================
--- trunk/PCSC/src/eventhandler.c	2006-09-06 13:49:40 UTC (rev 2150)
+++ trunk/PCSC/src/eventhandler.c	2006-09-06 20:02:47 UTC (rev 2151)
@@ -64,13 +64,13 @@
 	pageSize = SYS_GetPageSize();
 
 	/*
-	 * Jump to end of file space and allocate zero's 
+	 * Jump to end of file space and allocate zero's
 	 */
 	SYS_SeekFile(fd, pageSize * PCSCLITE_MAX_READERS_CONTEXTS);
 	SYS_WriteFile(fd, "", 1);
 
 	/*
-	 * Allocate each reader structure 
+	 * Allocate each reader structure
 	 */
 	for (i = 0; i < PCSCLITE_MAX_READERS_CONTEXTS; i++)
 	{
@@ -84,7 +84,7 @@
 		}
 
 		/*
-		 * Zero out each value in the struct 
+		 * Zero out each value in the struct
 		 */
 		memset((readerStates[i])->readerName, 0, MAX_READERNAME);
 		memset((readerStates[i])->cardAtr, 0, MAX_ATR_SIZE);
@@ -114,7 +114,7 @@
 	}
 
 	/*
-	 * Set the thread to 0 to exit thread 
+	 * Set the thread to 0 to exit thread
 	 */
 	rContext->dwLockId = 0xFFFF;
 
@@ -123,14 +123,14 @@
 	do
 	{
 		/*
-		 * Wait 0.05 seconds for the child to respond 
+		 * Wait 0.05 seconds for the child to respond
 		 */
 		SYS_USleep(50000);
 	}
 	while (rContext->dwLockId == 0xFFFF);
 	/*
 	 * Zero out the public status struct to allow it to be recycled and
-	 * used again 
+	 * used again
 	 */
 
 	memset(rContext->readerState->readerName, 0,
@@ -168,7 +168,7 @@
 	}
 
 	/*
-	 * Find an empty reader slot and insert the new reader 
+	 * Find an empty reader slot and insert the new reader
 	 */
 	for (i = 0; i < PCSCLITE_MAX_READERS_CONTEXTS; i++)
 	{
@@ -180,7 +180,7 @@
 		return SCARD_F_INTERNAL_ERROR;
 
 	/*
-	 * Set all the attributes to this reader 
+	 * Set all the attributes to this reader
 	 */
 	rContext->readerState = readerStates[i];
 	strlcpy(rContext->readerState->readerName, rContext->lpcReader,
@@ -209,7 +209,7 @@
 	int pageSize;
 
 	/*
-	 * Zero out everything 
+	 * Zero out everything
 	 */
 	dwStatus = 0;
 	dwReaderSharing = 0;
@@ -280,7 +280,7 @@
 	}
 
 	/*
-	 * Set all the public attributes to this reader 
+	 * Set all the public attributes to this reader
 	 */
 	rContext->readerState->readerState = dwStatus;
 	rContext->readerState->readerSharing = dwReaderSharing =
@@ -301,7 +301,7 @@
 			Log2(PCSC_LOG_ERROR, "Error communicating to: %s", lpcReader);
 
 			/*
-			 * Set error status on this reader while errors occur 
+			 * Set error status on this reader while errors occur
 			 */
 
 			rContext->readerState->readerState &= ~SCARD_ABSENT;
@@ -320,22 +320,22 @@
 
 			/*
 			 * This code causes race conditions on G4's with USB
-			 * insertion 
+			 * insertion
 			 */
 			/*
-			 * dwErrorCount += 1; SYS_Sleep(1); 
+			 * dwErrorCount += 1; SYS_Sleep(1);
 			 */
 			/*
 			 * After 10 seconds of errors, try to reinitialize the reader
-			 * This sometimes helps bring readers out of *crazy* states. 
+			 * This sometimes helps bring readers out of *crazy* states.
 			 */
 			/*
 			 * if ( dwErrorCount == 10 ) { RFUnInitializeReader( rContext
-			 * ); RFInitializeReader( rContext ); dwErrorCount = 0; } 
+			 * ); RFInitializeReader( rContext ); dwErrorCount = 0; }
 			 */
 
 			/*
-			 * End of race condition code block 
+			 * End of race condition code block
 			 */
 		}
 
@@ -345,11 +345,11 @@
 				dwCurrentState == SCARD_UNKNOWN)
 			{
 				/*
-				 * Change the status structure 
+				 * Change the status structure
 				 */
 				Log2(PCSC_LOG_INFO, "Card Removed From %s", lpcReader);
 				/*
-				 * Notify the card has been removed 
+				 * Notify the card has been removed
 				 */
 				RFSetReaderEventState(rContext, SCARD_REMOVED);
 
@@ -374,7 +374,7 @@
 				dwCurrentState == SCARD_UNKNOWN)
 			{
 				/*
-				 * Power and reset the card 
+				 * Power and reset the card
 				 */
 				SYS_USleep(PCSCLITE_STATUS_WAIT);
 				rContext->readerState->cardAtrLength = MAX_ATR_SIZE;
@@ -396,9 +396,9 @@
 					rContext->readerState->readerState &= ~SCARD_SWALLOWED;
 
 					/*
-					 * Notify the card has been reset 
+					 * Notify the card has been reset
 					 */
-					RFSetReaderEventState(rContext, SCARD_RESET); 
+					RFSetReaderEventState(rContext, SCARD_RESET);
 				}
 				else
 				{
@@ -437,7 +437,7 @@
 		if (rContext->dwLockId == 0xFFFF)
 		{
 			/*
-			 * Exit and notify the caller 
+			 * Exit and notify the caller
 			 */
 			rContext->dwLockId = 0;
 			SYS_ThreadDetach(rContext->pthThread);
@@ -445,7 +445,7 @@
 		}
 
 		/*
-		 * Sharing may change w/o an event pass it on 
+		 * Sharing may change w/o an event pass it on
 		 */
 
 		if (dwReaderSharing != rContext->dwContexts)

Modified: trunk/PCSC/src/eventhandler.h
===================================================================
--- trunk/PCSC/src/eventhandler.h	2006-09-06 13:49:40 UTC (rev 2150)
+++ trunk/PCSC/src/eventhandler.h	2006-09-06 20:02:47 UTC (rev 2151)
@@ -23,9 +23,9 @@
 {
 #endif
 
-	/** 
+	/**
 	 * Define an exported public reader state structure so each
-	 * application gets instant notification of changes in state. 
+	 * application gets instant notification of changes in state.
 	 */
 	typedef struct pubReaderStatesList
 	{

Modified: trunk/PCSC/src/hotplug_libusb.c
===================================================================
--- trunk/PCSC/src/hotplug_libusb.c	2006-09-06 13:49:40 UTC (rev 2150)
+++ trunk/PCSC/src/hotplug_libusb.c	2006-09-06 20:02:47 UTC (rev 2151)
@@ -427,7 +427,7 @@
 	strncpy(readerTracker[i].bus_device, bus_device,
 		sizeof(readerTracker[i].bus_device));
 	readerTracker[i].bus_device[sizeof(readerTracker[i].bus_device) - 1] = '\0';
-   
+
 	readerTracker[i].driver = driver;
 
 #ifdef ADD_SERIAL_NUMBER

Modified: trunk/PCSC/src/hotplug_macosx.c
===================================================================
--- trunk/PCSC/src/hotplug_macosx.c	2006-09-06 13:49:40 UTC (rev 2150)
+++ trunk/PCSC/src/hotplug_macosx.c	2006-09-06 20:02:47 UTC (rev 2151)
@@ -254,7 +254,7 @@
 			for (j=0; j<reader_nb; j++)
 			{
 				CFStringRef strValue = CFArrayGetValueAtIndex(vendorArray, j);
-				
+
 				driverBundle->m_vendorId = strtoul(CFStringGetCStringPtr(strValue,
 					CFStringGetSystemEncoding()), NULL, 16);
 

Modified: trunk/PCSC/src/ifdwrapper.c
===================================================================
--- trunk/PCSC/src/ifdwrapper.c	2006-09-06 13:49:40 UTC (rev 2150)
+++ trunk/PCSC/src/ifdwrapper.c	2006-09-06 20:02:47 UTC (rev 2151)
@@ -28,8 +28,8 @@
 #undef PCSCLITE_STATIC_DRIVER
 
 /*
- * Function: IFDSetPTS Purpose : To set the protocol type selection (PTS). 
- * This function sets the appropriate protocol to be used on the card. 
+ * Function: IFDSetPTS Purpose : To set the protocol type selection (PTS).
+ * This function sets the appropriate protocol to be used on the card.
  */
 
 LONG IFDSetPTS(PREADER_CONTEXT rContext, DWORD dwProtocol, UCHAR ucFlags,
@@ -64,7 +64,7 @@
 #endif
 
 	/*
-	 * LOCK THIS CODE REGION 
+	 * LOCK THIS CODE REGION
 	 */
 	SYS_MutexLock(rContext->mMutex);
 
@@ -80,9 +80,9 @@
 	}
 	else
 	{
-		rv = (*IFDH_set_protocol_parameters) (rContext->dwSlot, 
+		rv = (*IFDH_set_protocol_parameters) (rContext->dwSlot,
 						      dwProtocol,
-						      ucFlags, ucPTS1, 
+						      ucFlags, ucPTS1,
 						      ucPTS2, ucPTS3);
 	}
 #else
@@ -102,7 +102,7 @@
 
 	SYS_MutexUnLock(rContext->mMutex);
 	/*
-	 * END OF LOCKED REGION 
+	 * END OF LOCKED REGION
 	 */
 
 	return rv;
@@ -110,7 +110,7 @@
 
 /*
  * Function: IFDOpenIFD Purpose : This function opens a communication
- * channel to the IFD. 
+ * channel to the IFD.
  */
 
 LONG IFDOpenIFD(PREADER_CONTEXT rContext)
@@ -139,7 +139,7 @@
 #endif
 
 	/*
-	 * LOCK THIS CODE REGION 
+	 * LOCK THIS CODE REGION
 	 */
 
 	SYS_MutexLock(rContext->mMutex);
@@ -163,7 +163,7 @@
 	{
 		rv = IO_Create_Channel(rContext->dwPort);
 	} else if (rContext->dwVersion == IFD_HVERSION_2_0)
-	{ 
+	{
 		rv = IFDHCreateChannel(rContext->dwSlot, rContext->dwPort);
 	} else
 	{
@@ -177,7 +177,7 @@
 	SYS_MutexUnLock(rContext->mMutex);
 
 	/*
-	 * END OF LOCKED REGION 
+	 * END OF LOCKED REGION
 	 */
 
 	return rv;
@@ -185,7 +185,7 @@
 
 /*
  * Function: IFDCloseIFD Purpose : This function closes a communication
- * channel to the IFD. 
+ * channel to the IFD.
  */
 
 LONG IFDCloseIFD(PREADER_CONTEXT rContext)
@@ -203,13 +203,13 @@
 #endif
 
 	/*
-	 * LOCK THIS CODE REGION 
+	 * LOCK THIS CODE REGION
 	 */
 
 	SYS_MutexLock(rContext->mMutex);
 #ifndef PCSCLITE_STATIC_DRIVER
 	if (rContext->dwVersion == IFD_HVERSION_1_0)
-	
+
 		rv = (*IO_close_channel) ();
 	else
 		rv = (*IFDH_close_channel) (rContext->dwSlot);
@@ -222,7 +222,7 @@
 	SYS_MutexUnLock(rContext->mMutex);
 
 	/*
-	 * END OF LOCKED REGION 
+	 * END OF LOCKED REGION
 	 */
 
 	return rv;
@@ -230,7 +230,7 @@
 
 /*
  * Function: IFDSetCapabilites Purpose : This function set's capabilities
- * in the reader. 
+ * in the reader.
  */
 
 LONG IFDSetCapabilities(PREADER_CONTEXT rContext, DWORD dwTag,
@@ -250,7 +250,7 @@
 
 	/*
 	 * Let the calling function lock this otherwise a deadlock will
-	 * result 
+	 * result
 	 */
 
 #ifndef PCSCLITE_STATIC_DRIVER
@@ -273,7 +273,7 @@
 /*
  * Function: IFDGetCapabilites Purpose : This function get's capabilities
  * in the reader. Other functions int this file will call the driver
- * directly to not cause a deadlock. 
+ * directly to not cause a deadlock.
  */
 
 LONG IFDGetCapabilities(PREADER_CONTEXT rContext, DWORD dwTag,
@@ -294,7 +294,7 @@
 #endif
 
 	/*
-	 * LOCK THIS CODE REGION 
+	 * LOCK THIS CODE REGION
 	 */
 
 	SYS_MutexLock(rContext->mMutex);
@@ -316,15 +316,15 @@
 	SYS_MutexUnLock(rContext->mMutex);
 
 	/*
-	 * END OF LOCKED REGION 
+	 * END OF LOCKED REGION
 	 */
 
 	return rv;
 }
 
 /*
- * Function: IFDPowerICC Purpose : This function powers up/down or reset's 
- * an ICC located in the IFD. 
+ * Function: IFDPowerICC Purpose : This function powers up/down or reset's
+ * an ICC located in the IFD.
  */
 
 LONG IFDPowerICC(PREADER_CONTEXT rContext, DWORD dwAction,
@@ -341,14 +341,14 @@
 #endif
 
 	/*
-	 * Zero out everything 
+	 * Zero out everything
 	 */
 	rv = 0;
 	dwStatus = 0;
 	ucValue[0] = 0;
 
 	/*
-	 * Check that the card is inserted first 
+	 * Check that the card is inserted first
 	 */
 	IFDStatusICC(rContext, &dwStatus, pucAtr, pdwAtrLen);
 
@@ -362,7 +362,7 @@
 #endif
 
 	/*
-	 * LOCK THIS CODE REGION 
+	 * LOCK THIS CODE REGION
 	 */
 
 	SYS_MutexLock(rContext->mMutex);
@@ -394,7 +394,7 @@
 	SYS_MutexUnLock(rContext->mMutex);
 
 	/*
-	 * END OF LOCKED REGION 
+	 * END OF LOCKED REGION
 	 */
 
 	/* use clean values in case of error */
@@ -405,7 +405,7 @@
 	}
 
 	/*
-	 * Get the ATR and it's length 
+	 * Get the ATR and it's length
 	 */
 	if (rContext->dwVersion == IFD_HVERSION_1_0)
 		IFDStatusICC(rContext, &dwStatus, pucAtr, pdwAtrLen);
@@ -416,7 +416,7 @@
 /*
  * Function: IFDStatusICC Purpose : This function provides statistical
  * information about the IFD and ICC including insertions, atr, powering
- * status/etc. 
+ * status/etc.
  */
 
 LONG IFDStatusICC(PREADER_CONTEXT rContext, PDWORD pdwStatus,
@@ -444,7 +444,7 @@
 #endif
 
 	/*
-	 * LOCK THIS CODE REGION 
+	 * LOCK THIS CODE REGION
 	 */
 
 	SYS_MutexLock(rContext->mMutex);
@@ -471,7 +471,7 @@
 	SYS_MutexUnLock(rContext->mMutex);
 
 	/*
-	 * END OF LOCKED REGION 
+	 * END OF LOCKED REGION
 	 */
 
 	if (rv == IFD_SUCCESS || rv == IFD_ICC_PRESENT)
@@ -488,7 +488,7 @@
 	/*
 	 * Now lets get the ATR and process it if IFD Handler version 1.0.
 	 * IFD Handler version 2.0 does this immediately after reset/power up
-	 * to conserve resources 
+	 * to conserve resources
 	 */
 
 	if (rContext->dwVersion == IFD_HVERSION_1_0)
@@ -498,7 +498,7 @@
 			dwTag = TAG_IFD_ATR;
 
 			/*
-			 * LOCK THIS CODE REGION 
+			 * LOCK THIS CODE REGION
 			 */
 
 			SYS_MutexLock(rContext->mMutex);
@@ -514,18 +514,18 @@
 			SYS_MutexUnLock(rContext->mMutex);
 
 			/*
-			 * END OF LOCKED REGION 
+			 * END OF LOCKED REGION
 			 */
 
 			/*
 			 * FIX :: This is a temporary way to return the correct size
-			 * of the ATR since most of the drivers return MAX_ATR_SIZE 
+			 * of the ATR since most of the drivers return MAX_ATR_SIZE
 			 */
 
 			rv = ATRDecodeAtr(&sSmartCard, pucAtr, MAX_ATR_SIZE);
 
 			/*
-			 * Might be a memory card without an ATR 
+			 * Might be a memory card without an ATR
 			 */
 			if (rv == 0)
 				*pdwAtrLen = 0;
@@ -535,12 +535,12 @@
 		else
 		{
 			/*
-			 * No card is inserted - Atr length is 0 
+			 * No card is inserted - Atr length is 0
 			 */
 			*pdwAtrLen = 0;
 		}
 		/*
-		 * End of FIX 
+		 * End of FIX
 		 */
 	}
 
@@ -552,7 +552,7 @@
 /*
  * Function: IFDControl Purpose : This function provides a means for
  * toggling a specific action on the reader such as swallow, eject,
- * biometric. 
+ * biometric.
  */
 
 /*
@@ -576,7 +576,7 @@
 #endif
 
 	/*
-	 * LOCK THIS CODE REGION 
+	 * LOCK THIS CODE REGION
 	 */
 	SYS_MutexLock(rContext->mMutex);
 
@@ -589,7 +589,7 @@
 #endif
 	SYS_MutexUnLock(rContext->mMutex);
 	/*
-	 * END OF LOCKED REGION 
+	 * END OF LOCKED REGION
 	 */
 
 	if (rv == IFD_SUCCESS)
@@ -604,7 +604,7 @@
 /*
  * Function: IFDControl Purpose : This function provides a means for
  * toggling a specific action on the reader such as swallow, eject,
- * biometric. 
+ * biometric.
  */
 
 /*
@@ -629,7 +629,7 @@
 #endif
 
 	/*
-	 * LOCK THIS CODE REGION 
+	 * LOCK THIS CODE REGION
 	 */
 
 	SYS_MutexLock(rContext->mMutex);
@@ -644,7 +644,7 @@
 	SYS_MutexUnLock(rContext->mMutex);
 
 	/*
-	 * END OF LOCKED REGION 
+	 * END OF LOCKED REGION
 	 */
 
 	if (rv == IFD_SUCCESS)
@@ -658,7 +658,7 @@
 
 /*
  * Function: IFDTransmit Purpose : This function transmits an APDU to the
- * ICC. 
+ * ICC.
  */
 
 LONG IFDTransmit(PREADER_CONTEXT rContext, SCARD_IO_HEADER pioTxPci,
@@ -688,7 +688,7 @@
 #endif
 
 	/*
-	 * LOCK THIS CODE REGION 
+	 * LOCK THIS CODE REGION
 	 */
 
 	SYS_MutexLock(rContext->mMutex);
@@ -722,7 +722,7 @@
 	SYS_MutexUnLock(rContext->mMutex);
 
 	/*
-	 * END OF LOCKED REGION 
+	 * END OF LOCKED REGION
 	 */
 
 	/* log the returned status word */

Modified: trunk/PCSC/src/ifdwrapper.h
===================================================================
--- trunk/PCSC/src/ifdwrapper.h	2006-09-06 13:49:40 UTC (rev 2150)
+++ trunk/PCSC/src/ifdwrapper.h	2006-09-06 20:02:47 UTC (rev 2151)
@@ -9,7 +9,7 @@
  */
 
 /**
- * @file 
+ * @file
  * @brief This wraps the dynamic ifdhandler functions. The abstraction will
  * eventually allow multiple card slots in the same terminal.
  */

Modified: trunk/PCSC/src/libpcsclite.pc.in
===================================================================
--- trunk/PCSC/src/libpcsclite.pc.in	2006-09-06 13:49:40 UTC (rev 2150)
+++ trunk/PCSC/src/libpcsclite.pc.in	2006-09-06 20:02:47 UTC (rev 2151)
@@ -5,7 +5,7 @@
 usbdropdir=@usbdropdir@
 
 Name: PCSC Lite
-Description: PC/SC smart card interface 
+Description: PC/SC smart card interface
 Version: @VERSION@
 Libs: -L${libdir} -lpcsclite @PTHREAD_LIBS@
 Cflags: -I${includedir} @PTHREAD_CFLAGS@

Modified: trunk/PCSC/src/misc.h
===================================================================
--- trunk/PCSC/src/misc.h	2006-09-06 13:49:40 UTC (rev 2150)
+++ trunk/PCSC/src/misc.h	2006-09-06 20:02:47 UTC (rev 2151)
@@ -38,11 +38,11 @@
 /* GNU Compiler Collection (GCC) */
 #define CONSTRUCTOR __attribute__ ((constructor))
 #define DESTRUCTOR __attribute__ ((destructor))
-	
+
 #else
 
 /* SUN C compiler does not use __attribute__ but #pragma init (function)
- * We can't use a # inside a #define so it is not possible to use 
+ * We can't use a # inside a #define so it is not possible to use
  * #define CONSTRUCTOR_DECLARATION(x) #pragma init (x)
  * The #pragma is used directly where needed */
 

Modified: trunk/PCSC/src/pcscdaemon.c
===================================================================
--- trunk/PCSC/src/pcscdaemon.c	2006-09-06 13:49:40 UTC (rev 2150)
+++ trunk/PCSC/src/pcscdaemon.c	2006-09-06 20:02:47 UTC (rev 2151)
@@ -54,7 +54,7 @@
 extern char ReCheckSerialReaders;
 
 /*
- * Some internal functions 
+ * Some internal functions
  */
 void SVCServiceRunLoop(void);
 void SVCClientCleanup(psharedSegmentMsg);
@@ -68,12 +68,12 @@
 PCSCLITE_MUTEX usbNotifierMutex;
 
 /*
- * Cleans up messages still on the queue when a client dies 
+ * Cleans up messages still on the queue when a client dies
  */
 void SVCClientCleanup(psharedSegmentMsg msgStruct)
 {
 	/*
-	 * May be implemented in future releases 
+	 * May be implemented in future releases
 	 */
 }
 
@@ -82,7 +82,7 @@
  *
  * An endless loop calls the function \c SHMProcessEventsServer() to check for
  * messages sent by clients.
- * If the message is valid, \c CreateContextThread() is called to serve this 
+ * If the message is valid, \c CreateContextThread() is called to serve this
  * request.
  */
 void SVCServiceRunLoop(void)
@@ -90,12 +90,12 @@
 	int rsp;
 	LONG rv;
 	DWORD dwClientID;	/* Connection ID used to reference the Client */
-	
+
 	rsp = 0;
 	rv = 0;
 
 	/*
-	 * Initialize the comm structure 
+	 * Initialize the comm structure
 	 */
 	rsp = SHMInitializeCommonSegment();
 
@@ -106,7 +106,7 @@
 	}
 
 	/*
-	 * Initialize the contexts structure 
+	 * Initialize the contexts structure
 	 */
 	rv = ContextsInitialize();
 
@@ -117,7 +117,7 @@
 	}
 
 	/*
-	 * Solaris sends a SIGALRM and it is annoying 
+	 * Solaris sends a SIGALRM and it is annoying
 	 */
 
 	signal(SIGALRM, SIG_IGN);
@@ -126,12 +126,12 @@
 				 * when the shell is existed */
 
 	/*
-	 * This function always returns zero 
+	 * This function always returns zero
 	 */
 	rsp = SYS_MutexInit(&usbNotifierMutex);
 
 	/*
-	 * Set up the search for USB/PCMCIA devices 
+	 * Set up the search for USB/PCMCIA devices
 	 */
 	HPSearchHotPluggables();
 	HPRegisterForHotplugEvents();
@@ -205,13 +205,13 @@
 		{0, 0, 0, 0}
 	};
 #endif
-	
+
 	rv = 0;
 	newReaderConfig = 0;
 	setToForeground = FALSE;
 
 	/*
-	 * test the version 
+	 * test the version
 	 */
 	if (strcmp(PCSCLITE_VERSION_NUMBER, VERSION) != 0)
 	{
@@ -230,7 +230,7 @@
 	DebugLogSetLogType(DEBUGLOG_SYSLOG_DEBUG);
 
 	/*
-	 * Handle any command line arguments 
+	 * Handle any command line arguments
 	 */
 #ifdef  HAVE_GETOPT_LONG
 	while ((opt = getopt_long (argc, argv, "c:fdhvaeC", long_options, &option_index)) != -1) {
@@ -281,7 +281,7 @@
 		}
 
 	}
-	
+
 	if (argv[optind])
 	{
 		printf("Unknown option: %s\n\n", argv[optind]);
@@ -300,7 +300,7 @@
 #ifdef USE_RUN_PID
 
 		/* read the pid file to get the old pid and test if the old pcscd is
-		 * still running 
+		 * still running
 		 */
 		FILE *f;
 		/* pids are only 15 bits but 4294967296
@@ -335,7 +335,7 @@
 				"file " PCSCLITE_PUBSHM_FILE " already exists.");
 			Log1(PCSC_LOG_CRITICAL,
 				"Maybe another pcscd is running?");
-			Log1(PCSC_LOG_CRITICAL, 
+			Log1(PCSC_LOG_CRITICAL,
 				"I can't read process pid from " USE_RUN_PID);
 			Log1(PCSC_LOG_CRITICAL,
 				"Remove " PCSCLITE_PUBSHM_FILE " and " PCSCLITE_CSOCK_NAME);
@@ -357,7 +357,7 @@
 	}
 
 	/*
-	 * If this is set to one the user has asked it not to fork 
+	 * If this is set to one the user has asked it not to fork
 	 */
 	if (!setToForeground)
 	{
@@ -367,7 +367,7 @@
 	}
 
 	/*
-	 * cleanly remove /tmp/pcsc when exiting 
+	 * cleanly remove /tmp/pcsc when exiting
 	 */
 	signal(SIGQUIT, signal_trap);
 	signal(SIGTERM, signal_trap);
@@ -410,12 +410,12 @@
 		Log2(PCSC_LOG_CRITICAL, "atexit() failed: %s", strerror(errno));
 
 	/*
-	 * Allocate memory for reader structures 
+	 * Allocate memory for reader structures
 	 */
 	RFAllocateReaderSpace();
 
 	/*
-	 * Grab the information from the reader.conf 
+	 * Grab the information from the reader.conf
 	 */
 	if (newReaderConfig)
 	{
@@ -437,7 +437,7 @@
 			Log1(PCSC_LOG_INFO,
 				"warning: no " PCSCLITE_READER_CONFIG " found");
 			/*
-			 * Token error in file 
+			 * Token error in file
 			 */
 		}
 		else
@@ -447,7 +447,7 @@
 	}
 
 	/*
-	 * Set the default globals 
+	 * Set the default globals
 	 */
 	g_rgSCardT0Pci.dwProtocol = SCARD_PROTOCOL_T0;
 	g_rgSCardT1Pci.dwProtocol = SCARD_PROTOCOL_T1;
@@ -456,12 +456,12 @@
 	Log1(PCSC_LOG_INFO, "pcsc-lite " VERSION " daemon ready.");
 
 	/*
-	 * post initialistion 
+	 * post initialistion
 	 */
 	Init = FALSE;
 
 	/*
-	 * signal_trap() does just set a global variable used by the main loop 
+	 * signal_trap() does just set a global variable used by the main loop
 	 */
 	signal(SIGQUIT, signal_trap);
 	signal(SIGTERM, signal_trap);
@@ -552,15 +552,15 @@
 	printf("			send logs to stderr instead of syslog\n");
 	printf("  -h, --help		display usage information\n");
 	printf("  -v, --version		display the program version number\n");
-	printf("  -d, --debug	 	display lower level debug messages\n"); 
-	printf("      --info	 	display info level debug messages (default level)\n"); 
-	printf("  -e  --error	 	display error level debug messages\n"); 
-	printf("  -C  --critical 	display critical only level debug messages\n"); 
+	printf("  -d, --debug	 	display lower level debug messages\n");
+	printf("      --info	 	display info level debug messages (default level)\n");
+	printf("  -e  --error	 	display error level debug messages\n");
+	printf("  -C  --critical 	display critical only level debug messages\n");
 #else
 	printf("  -a    log APDU commands and results\n");
 	printf("  -c 	path to reader.conf\n");
 	printf("  -f	run in foreground (no daemon), send logs to stderr instead of syslog\n");
-	printf("  -d 	display debug messages. Output may be:\n"); 
+	printf("  -d 	display debug messages. Output may be:\n");
 	printf("  -h 	display usage information\n");
 	printf("  -v 	display the program version number\n");
 #endif

Modified: trunk/PCSC/src/powermgt_generic.h
===================================================================
--- trunk/PCSC/src/powermgt_generic.h	2006-09-06 13:49:40 UTC (rev 2150)
+++ trunk/PCSC/src/powermgt_generic.h	2006-09-06 20:02:47 UTC (rev 2151)
@@ -21,8 +21,8 @@
 #endif
 
 
-/* 
- * Registers for Power Management callbacks 
+/*
+ * Registers for Power Management callbacks
  */
 
 ULONG PMRegisterForPowerEvents(void);

Modified: trunk/PCSC/src/powermgt_macosx.c
===================================================================
--- trunk/PCSC/src/powermgt_macosx.c	2006-09-06 13:49:40 UTC (rev 2150)
+++ trunk/PCSC/src/powermgt_macosx.c	2006-09-06 20:02:47 UTC (rev 2151)
@@ -2,13 +2,13 @@
  * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
  *
  * @APPLE_LICENSE_HEADER_START@
- * 
+ *
  * The contents of this file constitute Original Code as defined in and
  * are subject to the Apple Public Source License Version 1.1 (the
  * "License").  You may not use this file except in compliance with the
  * License.  Please obtain a copy of the License at
  * http://www.apple.com/publicsource and read it before using this file.
- * 
+ *
  * This Original Code and all software distributed under the License are
  * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
@@ -16,7 +16,7 @@
  * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
  * License for the specific language governing rights and limitations
  * under the License.
- * 
+ *
  * @APPLE_LICENSE_HEADER_END@
  */
 
@@ -64,36 +64,36 @@
           IOAllowPowerChange(root_port,(long)messageArgument);
           Log1(PCSC_LOG_INFO, "system allowed to sleep");
           break;
-    case kIOMessageSystemHasPoweredOn: 
+    case kIOMessageSystemHasPoweredOn:
         Log1(PCSC_LOG_INFO, "system coming out of sleep");
         HPSearchHotPluggables();
         RFAwakeAllReaders();
         SYS_MutexUnLock(&usbNotifierMutex);
         break;
     }
-    
+
 }
 
 void PMPowerRegistrationThread() {
 
     root_port = IORegisterForSystemPower (0,&notify,PMPowerEventCallback,&anIterator);
-  
+
     if ( root_port == 0 ) {
             Log1(PCSC_LOG_ERROR, "IORegisterForSystemPower failed");
             return;
     }
-    
+
     CFRunLoopAddSource(CFRunLoopGetCurrent(),
                         IONotificationPortGetRunLoopSource(notify),
                         kCFRunLoopDefaultMode);
-                
+
     CFRunLoopRun();
 }
 
 ULONG PMRegisterForPowerEvents() {
 
-  LONG rv; 
-    
+  LONG rv;
+
   rv = SYS_ThreadCreate(&pmgmtThread, THREAD_ATTR_DEFAULT,
 		  (PCSCLITE_THREAD_FUNCTION( )) PMPowerRegistrationThread, NULL);
   return 0;

Modified: trunk/PCSC/src/prothandler.c
===================================================================
--- trunk/PCSC/src/prothandler.c	2006-09-06 13:49:40 UTC (rev 2150)
+++ trunk/PCSC/src/prothandler.c	2006-09-06 20:02:47 UTC (rev 2151)
@@ -30,7 +30,7 @@
 /*
  * Function: PHGetDefaultProtocol Purpose : To get the default protocol
  * used immediately after reset. This protocol is returned from the
- * function. 
+ * function.
  */
 
 UCHAR PHGetDefaultProtocol(PUCHAR pucAtr, DWORD dwLength)
@@ -38,7 +38,7 @@
 	SMARTCARD_EXTENSION sSmartCard;
 
 	/*
-	 * Zero out everything 
+	 * Zero out everything
 	 */
 	memset(&sSmartCard, 0x00, sizeof(SMARTCARD_EXTENSION));
 
@@ -51,7 +51,7 @@
 /*
  * Function: PHGetAvailableProtocols Purpose : To get the protocols
  * supported by the card. These protocols are returned from the function
- * as bit masks. 
+ * as bit masks.
  */
 
 UCHAR PHGetAvailableProtocols(PUCHAR pucAtr, DWORD dwLength)
@@ -59,7 +59,7 @@
 	SMARTCARD_EXTENSION sSmartCard;
 
 	/*
-	 * Zero out everything 
+	 * Zero out everything
 	 */
 	memset(&sSmartCard, 0x00, sizeof(SMARTCARD_EXTENSION));
 
@@ -71,7 +71,7 @@
 
 /*
  * Function: PHSetProtocol Purpose : To determine which protocol to use.
- * SCardConnect has a DWORD dwPreferredProtocols that is a bitmask of what 
+ * SCardConnect has a DWORD dwPreferredProtocols that is a bitmask of what
  * protocols to use.  Basically, if T=N where N is not zero will be used
  * first if it is available in ucAvailable.  Otherwise it will always
  * default to T=0.

Modified: trunk/PCSC/src/readerfactory.c
===================================================================
--- trunk/PCSC/src/readerfactory.c	2006-09-06 13:49:40 UTC (rev 2150)
+++ trunk/PCSC/src/readerfactory.c	2006-09-06 20:02:47 UTC (rev 2151)
@@ -53,7 +53,7 @@
 	int i;   					/* Counter */
 
 	/*
-	 * Allocate each reader structure 
+	 * Allocate each reader structure
 	 */
 	for (i = 0; i < PCSCLITE_MAX_READERS_CONTEXTS; i++)
 	{
@@ -63,7 +63,7 @@
 	}
 
 	/*
-	 * Create public event structures 
+	 * Create public event structures
 	 */
 	return EHInitializeEventStructures();
 }
@@ -103,7 +103,7 @@
 	}
 
 	/*
-	 * Same name, same port - duplicate reader cannot be used 
+	 * Same name, same port - duplicate reader cannot be used
 	 */
 	if (dwNumReadersContexts != 0)
 	{
@@ -131,7 +131,7 @@
 	}
 
 	/*
-	 * We must find an empty slot to put the reader structure 
+	 * We must find an empty slot to put the reader structure
 	 */
 	for (i = 0; i < PCSCLITE_MAX_READERS_CONTEXTS; i++)
 	{
@@ -145,13 +145,13 @@
 	if (i == PCSCLITE_MAX_READERS_CONTEXTS)
 	{
 		/*
-		 * No more spots left return 
+		 * No more spots left return
 		 */
 		return SCARD_E_NO_MEMORY;
 	}
 
 	/*
-	 * Check and set the readername to see if it must be enumerated 
+	 * Check and set the readername to see if it must be enumerated
 	 */
 	parentNode = RFSetReaderName(sReadersContexts[dwContext], lpcReader,
 		lpcLibrary, dwPort, 0);
@@ -178,22 +178,22 @@
 		(sReadersContexts[dwContext])->psHandles[i].hCard = 0;
 
 	/*
-	 * If a clone to this reader exists take some values from that clone 
+	 * If a clone to this reader exists take some values from that clone
 	 */
 	if (parentNode >= 0 && parentNode < PCSCLITE_MAX_READERS_CONTEXTS)
 	{
-		(sReadersContexts[dwContext])->pdwFeeds = 
+		(sReadersContexts[dwContext])->pdwFeeds =
 		  (sReadersContexts[parentNode])->pdwFeeds;
 		*(sReadersContexts[dwContext])->pdwFeeds += 1;
-		(sReadersContexts[dwContext])->vHandle = 
+		(sReadersContexts[dwContext])->vHandle =
 		  (sReadersContexts[parentNode])->vHandle;
-		(sReadersContexts[dwContext])->mMutex = 
+		(sReadersContexts[dwContext])->mMutex =
 		  (sReadersContexts[parentNode])->mMutex;
-		(sReadersContexts[dwContext])->pdwMutex = 
+		(sReadersContexts[dwContext])->pdwMutex =
 		  (sReadersContexts[parentNode])->pdwMutex;
 
 		/*
-		 * Call on the driver to see if it is thread safe 
+		 * Call on the driver to see if it is thread safe
 		 */
 		dwGetSize = sizeof(ucThread);
 		rv = IFDGetCapabilities((sReadersContexts[parentNode]),
@@ -213,8 +213,8 @@
 	{
 		(sReadersContexts[dwContext])->pdwFeeds = malloc(sizeof(DWORD));
 
-		/* Initialize pdwFeeds to 1, otherwise multiple 
-		   cloned readers will cause pcscd to crash when 
+		/* Initialize pdwFeeds to 1, otherwise multiple
+		   cloned readers will cause pcscd to crash when
 		   RFUnloadReader unloads the driver library
 		   and there are still devices attached using it --mikeg*/
 
@@ -241,10 +241,10 @@
 	if (rv != SCARD_S_SUCCESS)
 	{
 		/*
-		 * Cannot connect to reader exit gracefully 
+		 * Cannot connect to reader exit gracefully
 		 */
 		/*
-		 * Clean up so it is not using needed space 
+		 * Clean up so it is not using needed space
 		 */
 		Log2(PCSC_LOG_ERROR, "%s init failed.", lpcReader);
 
@@ -255,7 +255,7 @@
 		(sReadersContexts[dwContext])->dwIdentity = 0;
 
 		/*
-		 * Destroy and free the mutex 
+		 * Destroy and free the mutex
 		 */
 		if (*(sReadersContexts[dwContext])->pdwMutex == 1)
 		{
@@ -289,7 +289,7 @@
 		return rv;
 
 	/*
-	 * Call on the driver to see if there are multiple slots 
+	 * Call on the driver to see if there are multiple slots
 	 */
 
 	dwGetSize = sizeof(ucGetData);
@@ -299,23 +299,23 @@
 	if (rv != IFD_SUCCESS || dwGetSize != 1 || ucGetData[0] == 0)
 		/*
 		 * Reader does not have this defined.  Must be a single slot
-		 * reader so we can just return SCARD_S_SUCCESS. 
+		 * reader so we can just return SCARD_S_SUCCESS.
 		 */
 		return SCARD_S_SUCCESS;
 
 	if (rv == IFD_SUCCESS && dwGetSize == 1 && ucGetData[0] == 1)
 		/*
-		 * Reader has this defined and it only has one slot 
+		 * Reader has this defined and it only has one slot
 		 */
 		return SCARD_S_SUCCESS;
 
 	/*
-	 * Check the number of slots and create a different 
-	 * structure for each one accordingly 
+	 * Check the number of slots and create a different
+	 * structure for each one accordingly
 	 */
 
 	/*
-	 * Initialize the rest of the slots 
+	 * Initialize the rest of the slots
 	 */
 
 	for (j = 1; j < ucGetData[0]; j++)
@@ -324,8 +324,8 @@
 		DWORD dwContextB = 0;
 
 		/*
-		 * We must find an empty spot to put the 
-		 * reader structure 
+		 * We must find an empty spot to put the
+		 * reader structure
 		 */
 		for (i = 0; i < PCSCLITE_MAX_READERS_CONTEXTS; i++)
 		{
@@ -339,7 +339,7 @@
 		if (i == PCSCLITE_MAX_READERS_CONTEXTS)
 		{
 			/*
-			 * No more spots left return 
+			 * No more spots left return
 			 */
 			rv = RFRemoveReader(lpcReader, dwPort);
 			return SCARD_E_NO_MEMORY;
@@ -370,7 +370,7 @@
 		sReadersContexts[dwContextB]->dwSlot =
 			sReadersContexts[dwContext]->dwSlot + j;
 
-		/* 
+		/*
 		 * Added by Dave - slots did not have a pdwFeeds
 		 * parameter so it was by luck they were working
 		 */
@@ -392,7 +392,7 @@
 			(sReadersContexts[dwContextB])->psHandles[i].hCard = 0;
 
 		/*
-		 * Call on the driver to see if the slots are thread safe 
+		 * Call on the driver to see if the slots are thread safe
 		 */
 
 		dwGetSize = sizeof(ucThread);
@@ -417,10 +417,10 @@
 		if (rv != SCARD_S_SUCCESS)
 		{
 			/*
-			 * Cannot connect to slot exit gracefully 
+			 * Cannot connect to slot exit gracefully
 			 */
 			/*
-			 * Clean up so it is not using needed space 
+			 * Clean up so it is not using needed space
 			 */
 			Log2(PCSC_LOG_ERROR, "%s init failed.", lpcReader);
 
@@ -431,7 +431,7 @@
 			(sReadersContexts[dwContextB])->dwIdentity = 0;
 
 			/*
-			 * Destroy and free the mutex 
+			 * Destroy and free the mutex
 			 */
 			if (*(sReadersContexts[dwContextB])->pdwMutex == 1)
 			{
@@ -480,7 +480,7 @@
 		int i;
 
 		/*
-		 * Try to destroy the thread 
+		 * Try to destroy the thread
 		 */
 		rv = EHDestroyEventHandler(sContext);
 
@@ -489,7 +489,7 @@
 			return rv;
 
 		/*
-		 * Destroy and free the mutex 
+		 * Destroy and free the mutex
 		 */
 		if ((NULL == sContext->pdwMutex) || (NULL == sContext->pdwFeeds))
 		{
@@ -554,7 +554,7 @@
 	int i;
 
 	/*
-	 * Clear the list 
+	 * Clear the list
 	 */
 	for (i = 0; i < PCSCLITE_MAX_READERS_CONTEXTS; i++)
 		usedDigits[i] = FALSE;
@@ -571,7 +571,7 @@
 					LONG ret;
 
 					/*
-					 * Ask the driver if it supports multiple channels 
+					 * Ask the driver if it supports multiple channels
 					 */
 					valueLength = sizeof(tagValue);
 					ret = IFDGetCapabilities((sReadersContexts[i]),
@@ -590,7 +590,7 @@
 
 					/*
 					 * Check to see if it is a hotplug reader and
-					 * different 
+					 * different
 					 */
 					if (((((sReadersContexts[i])->dwPort & 0xFFFF0000) ==
 							PCSCLITE_HP_BASE_PORT)
@@ -602,19 +602,19 @@
 						/*
 						 * tells the caller who the parent of this
 						 * clone is so it can use it's shared
-						 * resources like mutex/etc. 
+						 * resources like mutex/etc.
 						 */
 						parent = i;
 
 						/*
-						 * If the same reader already exists and it is 
+						 * If the same reader already exists and it is
 						 * hotplug then we must look for others and
-						 * enumerate the readername 
+						 * enumerate the readername
 						 */
 						currentDigit = strtol(lpcReader + strlen(lpcReader) - 5, NULL, 16);
 
 						/*
-						 * This spot is taken 
+						 * This spot is taken
 						 */
 						usedDigits[currentDigit] = TRUE;
 					}
@@ -644,7 +644,7 @@
 	sprintf(rContext->lpcReader, "%s %02X %02lX", readerName, i, dwSlot);
 
 	/*
-	 * Set the slot in 0xDDDDCCCC 
+	 * Set the slot in 0xDDDDCCCC
 	 */
 	rContext->dwSlot = (i << 16) + dwSlot;
 
@@ -662,7 +662,7 @@
 		return SCARD_E_READER_UNAVAILABLE;
 
 	/*
-	 * Ignore the groups for now, return all readers 
+	 * Ignore the groups for now, return all readers
 	 */
 	dwCSize = 0;
 	p = 0;
@@ -678,23 +678,23 @@
 
 	if (p > dwNumReadersContexts)
 		/*
-		 * We are severely hosed here 
+		 * We are severely hosed here
 		 */
 		/*
-		 * Hopefully this will never be true 
+		 * Hopefully this will never be true
 		 */
 		return SCARD_F_UNKNOWN_ERROR;
 
 	/*
-	 * Added for extra NULL byte on MultiString 
+	 * Added for extra NULL byte on MultiString
 	 */
 	dwCSize += 1;
 
 	/*
-	 * If lpcReaders is not allocated then just 
+	 * If lpcReaders is not allocated then just
 	 */
 	/*
-	 * return the amount needed to allocate 
+	 * return the amount needed to allocate
 	 */
 	if (lpcReaders == 0)
 	{
@@ -710,7 +710,7 @@
 	p = 0;
 
 	/*
-	 * Creating MultiString 
+	 * Creating MultiString
 	 */
 	for (i = 0; i < PCSCLITE_MAX_READERS_CONTEXTS; i++)
 	{
@@ -785,7 +785,7 @@
 	int i;
 
 	/*
-	 * Strip off the lower nibble and get the identity 
+	 * Strip off the lower nibble and get the identity
 	 */
 	dwIdentity = dwIdentity >> (sizeof(DWORD) / 2) * 8;
 	dwIdentity = dwIdentity << (sizeof(DWORD) / 2) * 8;
@@ -808,7 +808,7 @@
 	{
 		Log1(PCSC_LOG_ERROR, "Warning library pointer not NULL");
 		/*
-		 * Another reader exists with this library loaded 
+		 * Another reader exists with this library loaded
 		 */
 		return SCARD_S_SUCCESS;
 	}
@@ -824,7 +824,7 @@
 	/*
 	 * Use this function as a dummy to determine the IFD Handler version
 	 * type  1.0/2.0/3.0.  Suppress error messaging since it can't be 1.0,
-	 * 2.0 and 3.0. 
+	 * 2.0 and 3.0.
 	 */
 
 	DebugLogSuppress(DEBUGLOG_IGNORE_ENTRIES);
@@ -838,7 +838,7 @@
 	if (rv1 != SCARD_S_SUCCESS && rv2 != SCARD_S_SUCCESS && rv3 != SCARD_S_SUCCESS)
 	{
 		/*
-		 * Neither version of the IFD Handler was found - exit 
+		 * Neither version of the IFD Handler was found - exit
 		 */
 		Log1(PCSC_LOG_CRITICAL, "IFDHandler functions missing");
 
@@ -846,26 +846,26 @@
 	} else if (rv1 == SCARD_S_SUCCESS)
 	{
 		/*
-		 * Ifd Handler 1.0 found 
+		 * Ifd Handler 1.0 found
 		 */
 		rContext->dwVersion = IFD_HVERSION_1_0;
 	} else if (rv3 == SCARD_S_SUCCESS)
 	{
 		/*
-		 * Ifd Handler 3.0 found 
+		 * Ifd Handler 3.0 found
 		 */
 		rContext->dwVersion = IFD_HVERSION_3_0;
 	}
 	else
 	{
 		/*
-		 * Ifd Handler 2.0 found 
+		 * Ifd Handler 2.0 found
 		 */
 		rContext->dwVersion = IFD_HVERSION_2_0;
 	}
 
 	/*
-	 * The following binds version 1.0 of the IFD Handler specs 
+	 * The following binds version 1.0 of the IFD Handler specs
 	 */
 
 	if (rContext->dwVersion == IFD_HVERSION_1_0)
@@ -909,7 +909,7 @@
 	else if (rContext->dwVersion == IFD_HVERSION_2_0)
 	{
 		/*
-		 * The following binds version 2.0 of the IFD Handler specs 
+		 * The following binds version 2.0 of the IFD Handler specs
 		 */
 
 #define GET_ADDRESS_OPTIONALv2(s, code) \
@@ -943,7 +943,7 @@
 	else if (rContext->dwVersion == IFD_HVERSION_3_0)
 	{
 		/*
-		 * The following binds version 3.0 of the IFD Handler specs 
+		 * The following binds version 3.0 of the IFD Handler specs
 		 */
 
 #define GET_ADDRESS_OPTIONALv3(s, code) \
@@ -978,7 +978,7 @@
 	else
 	{
 		/*
-		 * Who knows what could have happenned for it to get here. 
+		 * Who knows what could have happenned for it to get here.
 		 */
 		Log1(PCSC_LOG_CRITICAL, "IFD Handler not 1.0/2.0 or 3.0");
 		exit(1);
@@ -990,7 +990,7 @@
 LONG RFUnBindFunctions(PREADER_CONTEXT rContext)
 {
 	/*
-	 * Zero out everything 
+	 * Zero out everything
 	 */
 
 	memset(&rContext->psFunctions, 0, sizeof(rContext->psFunctions));
@@ -1001,7 +1001,7 @@
 LONG RFUnloadReader(PREADER_CONTEXT rContext)
 {
 	/*
-	 * Make sure no one else is using this library 
+	 * Make sure no one else is using this library
 	 */
 
 	if (*rContext->pdwFeeds == 1)
@@ -1087,14 +1087,14 @@
 	LONG rv;
 
 	/*
-	 * Spawn the event handler thread 
+	 * Spawn the event handler thread
 	 */
 	Log3(PCSC_LOG_INFO, "Attempting startup of %s using %s",
 		rContext->lpcReader, rContext->lpcLibrary);
 
   /******************************************/
 	/*
-	 * This section loads the library 
+	 * This section loads the library
 	 */
   /******************************************/
 	rv = RFLoadReader(rContext);
@@ -1103,7 +1103,7 @@
 
   /*******************************************/
 	/*
-	 * This section binds the functions 
+	 * This section binds the functions
 	 */
   /*******************************************/
 	rv = RFBindFunctions(rContext);
@@ -1116,7 +1116,7 @@
 
   /*******************************************/
 	/*
-	 * This section tries to open the port 
+	 * This section tries to open the port
 	 */
   /*******************************************/
 
@@ -1140,14 +1140,14 @@
 		rContext->lpcReader);
 
 	/*
-	 * Close the port, unbind the functions, and unload the library 
+	 * Close the port, unbind the functions, and unload the library
 	 */
 
 	/*
 	 * If the reader is getting uninitialized then it is being unplugged
 	 * so I can't send a IFDPowerICC call to it
-	 * 
-	 * IFDPowerICC( rContext, IFD_POWER_DOWN, Atr, &AtrLen ); 
+	 *
+	 * IFDPowerICC( rContext, IFD_POWER_DOWN, Atr, &AtrLen );
 	 */
 	IFDCloseIFD(rContext);
 	RFUnBindFunctions(rContext);
@@ -1162,7 +1162,7 @@
 
 	/*
 	 * Create a random handle with 16 bits check to see if it already is
-	 * used. 
+	 * used.
 	 */
 	randHandle = SYS_RandomInt(10, 65000);
 
@@ -1182,7 +1182,7 @@
 						(sReadersContexts[i])->psHandles[j].hCard)
 					{
 						/*
-						 * Get a new handle and loop again 
+						 * Get a new handle and loop again
 						 */
 						randHandle = SYS_RandomInt(10, 65000);
 						continue;
@@ -1193,7 +1193,7 @@
 
 		/*
 		 * Once the for loop is completed w/o restart a good handle was
-		 * found and the loop can be exited. 
+		 * found and the loop can be exited.
 		 */
 
 		if (i == PCSCLITE_MAX_READERS_CONTEXTS)
@@ -1276,7 +1276,7 @@
 	int i;
 
 	/*
-	 * Set all the handles for that reader to the event 
+	 * Set all the handles for that reader to the event
 	 */
 	for (i = 0; i < PCSCLITE_MAX_READER_CONTEXT_CHANNELS; i++)
 	{
@@ -1359,7 +1359,7 @@
 			strncpy(lpcStripReader, (sReadersContexts[i])->lpcReader,
 				sizeof(lpcStripReader));
 			/*
-			 * strip the 6 last char ' 00 00' 
+			 * strip the 6 last char ' 00 00'
 			 */
 			lpcStripReader[strlen(lpcStripReader) - 6] = '\0';
 
@@ -1371,10 +1371,10 @@
 	}
 
 	/*
-	 * exit() will call at_exit() 
+	 * exit() will call at_exit()
 	 */
 
-	if (shouldExit) 
+	if (shouldExit)
 		exit(0);
 }
 
@@ -1510,7 +1510,7 @@
 	free(reader_list);
 }
 
-void RFSuspendAllReaders(void) 
+void RFSuspendAllReaders(void)
 {
 	int i;
 
@@ -1525,12 +1525,12 @@
 
 }
 
-void RFAwakeAllReaders(void) 
+void RFAwakeAllReaders(void)
 {
 	LONG rv = IFD_SUCCESS;
 	int i;
 	int initFlag;
-        
+
 	initFlag = 0;
 
 	for (i = 0; i < PCSCLITE_MAX_READERS_CONTEXTS; i++)
@@ -1544,12 +1544,12 @@
 			for (j=0; j < i; j++)
 			{
 				if (((sReadersContexts[j])->vHandle == (sReadersContexts[i])->vHandle)&&
-					((sReadersContexts[j])->dwPort   == (sReadersContexts[i])->dwPort)) 
+					((sReadersContexts[j])->dwPort   == (sReadersContexts[i])->dwPort))
 				{
 					initFlag = 1;
 				}
 			}
-                        
+
 			if (initFlag == 0)
 				rv = IFDOpenIFD(sReadersContexts[i]);
 			else

Modified: trunk/PCSC/src/readerfactory.h
===================================================================
--- trunk/PCSC/src/readerfactory.h	2006-09-06 13:49:40 UTC (rev 2150)
+++ trunk/PCSC/src/readerfactory.h	2006-09-06 20:02:47 UTC (rev 2151)
@@ -94,7 +94,7 @@
 	typedef struct FctMap_V3 FCT_MAP_V3, *PFCT_MAP_V3;
 
 	/*
-	 * The following is not currently used but in place if needed 
+	 * The following is not currently used but in place if needed
 	 */
 
 	struct RdrCapabilities
@@ -147,7 +147,7 @@
 		char lpcDevice[MAX_DEVICENAME];	/* Device Name */
 		PCSCLITE_THREAD_T pthThread;	/* Event polling thread */
 		PCSCLITE_MUTEX_T mMutex;	/* Mutex for this connection */
-		RDR_CLIHANDLES psHandles[PCSCLITE_MAX_READER_CONTEXT_CHANNELS];	
+		RDR_CLIHANDLES psHandles[PCSCLITE_MAX_READER_CONTEXT_CHANNELS];
                                          /* Structure of connected handles */
 		union
 		{
@@ -212,8 +212,8 @@
 	void RFCleanupReaders(int);
 	int RFStartSerialReaders(char *readerconf);
 	void RFReCheckReaderConf(void);
-	void RFSuspendAllReaders(void); 
-	void RFAwakeAllReaders(void); 
+	void RFSuspendAllReaders(void);
+	void RFAwakeAllReaders(void);
 
 #ifdef __cplusplus
 }

Modified: trunk/PCSC/src/strlcat.c
===================================================================
--- trunk/PCSC/src/strlcat.c	2006-09-06 13:49:40 UTC (rev 2150)
+++ trunk/PCSC/src/strlcat.c	2006-09-06 20:02:47 UTC (rev 2151)
@@ -17,7 +17,7 @@
  */
 
 #ifdef HAVE_CONFIG_H
-#include "config.h"  	 
+#include "config.h"
 #endif
 
 #ifndef HAVE_STRLCPY

Modified: trunk/PCSC/src/strlcpy.c
===================================================================
--- trunk/PCSC/src/strlcpy.c	2006-09-06 13:49:40 UTC (rev 2150)
+++ trunk/PCSC/src/strlcpy.c	2006-09-06 20:02:47 UTC (rev 2151)
@@ -17,7 +17,7 @@
  */
 
 #ifdef HAVE_CONFIG_H
-#include "config.h"  	 
+#include "config.h"
 #endif
 
 #ifndef HAVE_STRLCPY

Modified: trunk/PCSC/src/sys_unix.c
===================================================================
--- trunk/PCSC/src/sys_unix.c	2006-09-06 13:49:40 UTC (rev 2150)
+++ trunk/PCSC/src/sys_unix.c	2006-09-06 20:02:47 UTC (rev 2151)
@@ -194,7 +194,7 @@
 /**
  * @brief Gets the memory page size.
  *
- * The page size is used when calling the \c SYS_MemoryMap() and 
+ * The page size is used when calling the \c SYS_MemoryMap() and
  * \c SYS_PublicMemoryMap() functions.
  *
  * @return Number of bytes per page.
@@ -226,8 +226,8 @@
 	/*
 	 * Here are some common error types: switch( errno ) { case EINVAL:
 	 * printf("EINVAL"); case EBADF: printf("EBADF"); break; case EACCES:
-	 * printf("EACCES"); break; case EAGAIN: printf("EAGAIN"); break; case 
-	 * ENOMEM: printf("ENOMEM"); break; } 
+	 * printf("EACCES"); break; case EAGAIN: printf("EAGAIN"); break; case
+	 * ENOMEM: printf("ENOMEM"); break; }
 	 */
 
 	return vAddress;
@@ -326,7 +326,7 @@
 			/* the father exits */
 			exit(0);
 	}
-	
+
 	setsid();
 
 	pid = SYS_Fork();

Modified: trunk/PCSC/src/testpcsc.c
===================================================================
--- trunk/PCSC/src/testpcsc.c	2006-09-06 13:49:40 UTC (rev 2150)
+++ trunk/PCSC/src/testpcsc.c	2006-09-06 20:02:47 UTC (rev 2151)
@@ -93,7 +93,7 @@
 	}
 
 	/*
-	 * Have to understand the multi-string here 
+	 * Have to understand the multi-string here
 	 */
 	p = 0;
 	for (i = 0; i < dwGroups - 1; i++)
@@ -127,7 +127,7 @@
 	}
 
 	/*
-	 * Have to understand the multi-string here 
+	 * Have to understand the multi-string here
 	 */
 	p = 0;
 	for (i = 0; i < dwReaders - 1; i++)

Modified: trunk/PCSC/src/thread_unix.c
===================================================================
--- trunk/PCSC/src/thread_unix.c	2006-09-06 13:49:40 UTC (rev 2150)
+++ trunk/PCSC/src/thread_unix.c	2006-09-06 20:02:47 UTC (rev 2151)
@@ -48,14 +48,14 @@
 	PCSCLITE_THREAD_FUNCTION(pvFunction), LPVOID pvArg)
 {
 	pthread_attr_t attr;
-	
+
 	if (0 != pthread_attr_init(&attr))
 		return FALSE;
-	
+
 	if (0 != pthread_attr_setdetachstate(&attr,
 		attributes & THREAD_ATTR_DETACHED ? PTHREAD_CREATE_DETACHED : PTHREAD_CREATE_JOINABLE))
 		return FALSE;
-	
+
 	if (0 == pthread_create(pthThread, &attr, pvFunction, pvArg))
 		return TRUE;
 	else

Modified: trunk/PCSC/src/utils/formaticc.c
===================================================================
--- trunk/PCSC/src/utils/formaticc.c	2006-09-06 13:49:40 UTC (rev 2150)
+++ trunk/PCSC/src/utils/formaticc.c	2006-09-06 20:02:47 UTC (rev 2151)
@@ -98,7 +98,7 @@
 	SCardListReaders(hContext, mszGroups, mszReaders, &dwReaders);
 
 	/*
-	 * Have to understand the multi-string here 
+	 * Have to understand the multi-string here
 	 */
 	p = 0;
 	for (i = 0; i < dwReaders - 1; i++)
@@ -140,7 +140,7 @@
 	}
 
 	/*
-	 * Now lets get some work done 
+	 * Now lets get some work done
 	 */
 
 	SCardBeginTransaction(hCard);

Modified: trunk/PCSC/src/utils/installifd.c
===================================================================
--- trunk/PCSC/src/utils/installifd.c	2006-09-06 13:49:40 UTC (rev 2150)
+++ trunk/PCSC/src/utils/installifd.c	2006-09-06 20:02:47 UTC (rev 2151)
@@ -64,7 +64,7 @@
 	if (iStat != 0)
 	{
 		/*
-		 * Library does not exist 
+		 * Library does not exist
 		 */
 		printf("Library path %s does not exist.\n\n", lpcLibrary);
 		goto retrylib;

Modified: trunk/PCSC/src/winscard.c
===================================================================
--- trunk/PCSC/src/winscard.c	2006-09-06 13:49:40 UTC (rev 2150)
+++ trunk/PCSC/src/winscard.c	2006-09-06 20:02:47 UTC (rev 2151)
@@ -10,7 +10,7 @@
 
 /**
  * @mainpage MUSCLE PC/SC-Lite API Documentation
- * 
+ *
  * @section Introduction
  *
  * This document contains the reference API calls for communicating to the
@@ -29,7 +29,7 @@
  *
  * I would really like to hear from you. If you have any feedback either on
  * this documentation or on the MUSCLE project please feel free to email me at:
- * corcoran at musclecard.com. 
+ * corcoran at musclecard.com.
  *
  *
  * @section API Routines
@@ -45,10 +45,10 @@
  *
  * For a human readable representation of an error the function
  * pcsc_stringify_error() is declared in pcsclite.h. This function is not
- * available on Microsoft(R) winscard API and is pcsc-lite specific. 
+ * available on Microsoft(R) winscard API and is pcsc-lite specific.
  *
  * @section Internals
- * 
+ *
  * PC/SC Lite is formed by a server deamon (<tt>pcscd</tt>) and a client
  * library (<tt>libpcsclite.so</tt>) that communicate via IPC.
  *
@@ -115,7 +115,7 @@
  *
  * This must be the first function called in a PC/SC application.
  *
- * @param[in] dwScope Scope of the establishment. 
+ * @param[in] dwScope Scope of the establishment.
  * This can either be a local or remote connection.
  * <ul>
  *   <li>SCARD_SCOPE_USER - Not used.

Modified: trunk/PCSC/src/winscard_clnt.c
===================================================================
--- trunk/PCSC/src/winscard_clnt.c	2006-09-06 13:49:40 UTC (rev 2150)
+++ trunk/PCSC/src/winscard_clnt.c	2006-09-06 20:02:47 UTC (rev 2151)
@@ -102,8 +102,8 @@
 
 	return r.tv_sec * 1000000 + r.tv_usec;
 } /* time_sub */
-	
 
+
 static void profile_end(const char *f)
 {
 	struct timeval profile_time_end;
@@ -155,7 +155,7 @@
 
 /**
  * Memory mapped address used to read status information about the readers.
- * Each element in the vector \c readerStates makes references to a part of 
+ * Each element in the vector \c readerStates makes references to a part of
  * the memory mapped.
  */
 static int mapAddr = 0;
@@ -169,7 +169,7 @@
 /**
  * Pointers to a memory mapped area used to read status information about the
  * readers.
- * Each element in the vector \c readerStates makes references to a part of 
+ * Each element in the vector \c readerStates makes references to a part of
  * the memory mapped \c mapAddr.
  */
 static PREADER_STATE readerStates[PCSCLITE_MAX_READERS_CONTEXTS];
@@ -204,11 +204,11 @@
 
 /**
  * @brief Creates an Application Context to the PC/SC Resource Manager.
- 
+
  * This must be the first function called in a PC/SC application.
  * This is a thread-safe wrapper to the function \c SCardEstablishContextTH().
  *
- * @param[in] dwScope Scope of the establishment. 
+ * @param[in] dwScope Scope of the establishment.
  * This can either be a local or remote connection.
  * <ul>
  *   <li>SCARD_SCOPE_USER - Not used.
@@ -252,13 +252,13 @@
 }
 
 /**
- * @brief Creates a communication context to the PC/SC Resource 
+ * @brief Creates a communication context to the PC/SC Resource
  * Manager.
  *
  * This function shuld not be called directly. Instead, the thread-safe
  * function \c SCardEstablishContext() should be called.
  *
- * @param[in] dwScope Scope of the establishment. 
+ * @param[in] dwScope Scope of the establishment.
  * This can either be a local or remote connection.
  * <ul>
  *   <li>SCARD_SCOPE_USER - Not used.
@@ -482,7 +482,7 @@
  * LONG rv;
  * ...
  * rv = SCardEstablishContext(SCARD_SCOPE_SYSTEM, NULL, NULL, &hContext);
- * rv = SCardReleaseContext(hContext); 
+ * rv = SCardReleaseContext(hContext);
  * @endcode
  */
 LONG SCardReleaseContext(SCARDCONTEXT hContext)
@@ -504,7 +504,7 @@
 	if (dwContextIndex == -1)
 		return SCARD_E_INVALID_HANDLE;
 
-	SYS_MutexLock(psContextMap[dwContextIndex].mMutex);	
+	SYS_MutexLock(psContextMap[dwContextIndex].mMutex);
 
 	scReleaseStruct.hContext = hContext;
 	scReleaseStruct.rv = 0;
@@ -515,7 +515,7 @@
 
 	if (rv == -1)
 	{
-		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);	
+		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
 		return SCARD_E_NO_SERVICE;
 	}
 
@@ -527,12 +527,12 @@
 
 	if (rv == -1)
 	{
-		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);	
+		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
 		return SCARD_F_COMM_ERROR;
 	}
-	
-	SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);	
 
+	SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
+
 	/*
 	 * Remove the local context from the stack
 	 */
@@ -549,14 +549,14 @@
  * @deprecated
  * This function is not in Microsoft(R) WinSCard API and is deprecated
  * in pcsc-lite API.
- * The function does not do anything except returning \c SCARD_S_SUCCESS. 
+ * The function does not do anything except returning \c SCARD_S_SUCCESS.
  *
  * @param[in] hContext Connection context to the PC/SC Resource Manager.
  * @param[in] dwTimeout New timeout value.
  *
  * @return Error code.
  * @retval SCARD_S_SUCCESS Successful.
- */ 
+ */
 LONG SCardSetTimeout(SCARDCONTEXT hContext, DWORD dwTimeout)
 {
 	/*
@@ -567,8 +567,8 @@
 }
 
 /**
- * This function establishes a connection to the friendly name of the reader 
- * specified in szReader. The first connection will power up and perform a 
+ * This function establishes a connection to the friendly name of the reader
+ * specified in szReader. The first connection will power up and perform a
  * reset on the card.
  *
  * @param[in] hContext Connection context to the PC/SC Resource Manager.
@@ -588,8 +588,8 @@
  *   <li>SCARD_PROTOCOL_T1 - Use the T=1 protocol.
  *   <li>SCARD_PROTOCOL_RAW - Use with memory type cards.
  * </ul>
- * dwPreferredProtocols is a bit mask of acceptable protocols for the 
- * connection. You can use (SCARD_PROTOCOL_T0 | SCARD_PROTOCOL_T1) if you 
+ * dwPreferredProtocols is a bit mask of acceptable protocols for the
+ * connection. You can use (SCARD_PROTOCOL_T0 | SCARD_PROTOCOL_T1) if you
  * do not have a preferred protocol.
  * @param[out] phCard Handle to this connection.
  * @param[out] pdwActiveProtocol Established protocol to this connection.
@@ -660,7 +660,7 @@
 	if (dwContextIndex == -1)
 		return SCARD_E_INVALID_HANDLE;
 
-	SYS_MutexLock(psContextMap[dwContextIndex].mMutex);	
+	SYS_MutexLock(psContextMap[dwContextIndex].mMutex);
 
 	strncpy(scConnectStruct.szReader, szReader, MAX_READERNAME);
 
@@ -676,7 +676,7 @@
 
 	if (rv == -1)
 	{
-		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);	
+		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
 		return SCARD_E_NO_SERVICE;
 	}
 
@@ -689,7 +689,7 @@
 
 	if (rv == -1)
 	{
-		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);	
+		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
 		return SCARD_F_COMM_ERROR;
 	}
 
@@ -702,14 +702,14 @@
 		 * Keep track of the handle locally
 		 */
 		rv = SCardAddHandle(*phCard, dwContextIndex, (LPSTR) szReader);
-		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);	
+		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
 
 		PROFILE_END
 
 		return rv;
 	}
 
-	SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);	
+	SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
 
 	PROFILE_END
 
@@ -717,12 +717,12 @@
 }
 
 /**
- * @brief This function reestablishes a connection to a reader that was previously 
+ * @brief This function reestablishes a connection to a reader that was previously
  * connected to using SCardConnect().
  *
  * In a multi application environment it is possible for an application to reset
- * the card in shared mode. When this occurs any other application trying to 
- * access certain commands will be returned the value SCARD_W_RESET_CARD. When 
+ * the card in shared mode. When this occurs any other application trying to
+ * access certain commands will be returned the value SCARD_W_RESET_CARD. When
  * this occurs SCardReconnect() must be called in order to acknowledge that
  * the card was reset and allow it to change it's state accordingly.
  *
@@ -736,9 +736,9 @@
  * <ul>
  *   <li>SCARD_PROTOCOL_T0 - Use the T=0 protocol.
  *   <li>SCARD_PROTOCOL_T1 - Use the T=1 protocol.
- *   <li>SCARD_PROTOCOL_RAW - Use with memory type cards. 
+ *   <li>SCARD_PROTOCOL_RAW - Use with memory type cards.
  * </ul>
- * \p dwPreferredProtocols is a bit mask of acceptable protocols for 
+ * \p dwPreferredProtocols is a bit mask of acceptable protocols for
  * the connection. You can use (SCARD_PROTOCOL_T0 | SCARD_PROTOCOL_T1)
  * if you do not have a preferred protocol.
  * @param[in] dwInitialization Desired action taken on the card/reader.
@@ -823,7 +823,7 @@
 	if (rv == -1)
 		return SCARD_E_INVALID_HANDLE;
 
-	SYS_MutexLock(psContextMap[dwContextIndex].mMutex);	
+	SYS_MutexLock(psContextMap[dwContextIndex].mMutex);
 
 
 	for (i = 0; i < PCSCLITE_MAX_READERS_CONTEXTS; i++)
@@ -837,7 +837,7 @@
 
 	if (i == PCSCLITE_MAX_READERS_CONTEXTS)
 	{
-		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);	
+		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
 		return SCARD_E_READER_UNAVAILABLE;
 	}
 
@@ -853,7 +853,7 @@
 
 	if (rv == -1)
 	{
-		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);	
+		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
 		return SCARD_E_NO_SERVICE;
 	}
 
@@ -866,21 +866,21 @@
 
 	if (rv == -1)
 	{
-		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);	
+		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
 		return SCARD_F_COMM_ERROR;
 	}
 
 	*pdwActiveProtocol = scReconnectStruct.pdwActiveProtocol;
 
-	SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);	
+	SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
 
 	PROFILE_END
-	
+
 	return scReconnectStruct.rv;
 }
 
 /**
- * This function terminates a connection to the connection made through 
+ * This function terminates a connection to the connection made through
  * SCardConnect(). dwDisposition can have the following values:
  *
  * @param[in] hCard Connection made from SCardConnect.
@@ -896,7 +896,7 @@
  * @retval SCARD_S_SUCCESS Successful.
  * @retval SCARD_E_INVALID_HANDLE Invalid \p hCard handle.
  * @retval SCARD_E_INVALID_VALUE - Invalid \p dwDisposition.
- * 
+ *
  * @test
  * @code
  * SCARDCONTEXT hContext;
@@ -937,7 +937,7 @@
 	if (rv == -1)
 		return SCARD_E_INVALID_HANDLE;
 
-	SYS_MutexLock(psContextMap[dwContextIndex].mMutex);	
+	SYS_MutexLock(psContextMap[dwContextIndex].mMutex);
 
 	scDisconnectStruct.hCard = hCard;
 	scDisconnectStruct.dwDisposition = dwDisposition;
@@ -948,7 +948,7 @@
 
 	if (rv == -1)
 	{
-		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);	
+		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
 		return SCARD_E_NO_SERVICE;
 	}
 
@@ -962,13 +962,13 @@
 
 	if (rv == -1)
 	{
-		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);	
+		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
 		return SCARD_F_COMM_ERROR;
 	}
 
 	SCardRemoveHandle(hCard);
 
-	SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);	
+	SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
 
 	PROFILE_END
 
@@ -982,7 +982,7 @@
  * You might want to use this when you are selecting a few files and then
  * writing a large file so you can make sure that another application will
  * not change the current file. If another application has a lock on this
- * reader or this application is in \c SCARD_SHARE_EXCLUSIVE there will be no 
+ * reader or this application is in \c SCARD_SHARE_EXCLUSIVE there will be no
  * action taken.
  *
  * @param[in] hCard Connection made from SCardConnect.
@@ -992,7 +992,7 @@
  * @retval SCARD_E_INVALID_HANDLE Invalid hCard handle.
  * @retval SCARD_E_SHARING_VIOLATION Someone else has exclusive rights.
  * @retval SCARD_E_READER_UNAVAILABLE The reader has been removed.
- * 
+ *
  * @test
  * @code
  * SCARDCONTEXT hContext;
@@ -1029,7 +1029,7 @@
 	if (rv == -1)
 		return SCARD_E_INVALID_HANDLE;
 
-	SYS_MutexLock(psContextMap[dwContextIndex].mMutex);	
+	SYS_MutexLock(psContextMap[dwContextIndex].mMutex);
 
 	for (i = 0; i < PCSCLITE_MAX_READERS_CONTEXTS; i++)
 	{
@@ -1042,7 +1042,7 @@
 
 	if (i == PCSCLITE_MAX_READERS_CONTEXTS)
 	{
-		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);	
+		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
 		return SCARD_E_READER_UNAVAILABLE;
 	}
 
@@ -1085,8 +1085,8 @@
 
 		if (rv == -1)
 		{
-			
-			SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);	
+
+			SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
 			return SCARD_E_NO_SERVICE;
 		}
 
@@ -1100,15 +1100,15 @@
 
 		if (rv == -1)
 		{
-			
-			SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);	
+
+			SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
 			return SCARD_F_COMM_ERROR;
 		}
 
 	}
 	while (scBeginStruct.rv == SCARD_E_SHARING_VIOLATION);
 
-	SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);	
+	SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
 
 	PROFILE_END
 
@@ -1118,7 +1118,7 @@
 /**
  * @brief This function ends a previously begun transaction.
  *
- * The calling application must be the owner of the previously begun 
+ * The calling application must be the owner of the previously begun
  * transaction or an error will occur.
  *
  * @param[in] hCard Connection made from SCardConnect.
@@ -1150,7 +1150,7 @@
  * ...
  * / * Do some transmit commands * /
  * ...
- * rv = SCardEndTransaction(hCard, SCARD_LEAVE_CARD); 
+ * rv = SCardEndTransaction(hCard, SCARD_LEAVE_CARD);
  * @endcode
  */
 LONG SCardEndTransaction(SCARDHANDLE hCard, DWORD dwDisposition)
@@ -1187,7 +1187,7 @@
 	if (rv == -1)
 		return SCARD_E_INVALID_HANDLE;
 
-	SYS_MutexLock(psContextMap[dwContextIndex].mMutex);	
+	SYS_MutexLock(psContextMap[dwContextIndex].mMutex);
 
 	for (i = 0; i < PCSCLITE_MAX_READERS_CONTEXTS; i++)
 	{
@@ -1200,7 +1200,7 @@
 
 	if (i == PCSCLITE_MAX_READERS_CONTEXTS)
 	{
-		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);	
+		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
 		return SCARD_E_READER_UNAVAILABLE;
 	}
 
@@ -1213,7 +1213,7 @@
 
 	if (rv == -1)
 	{
-		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);	
+		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
 		return SCARD_E_NO_SERVICE;
 	}
 
@@ -1226,7 +1226,7 @@
 
 	if (rv == -1)
 	{
-		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);	
+		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
 		return SCARD_F_COMM_ERROR;
 	}
 
@@ -1236,7 +1236,7 @@
 	randnum = SYS_RandomInt(1000, 10000);
 	SYS_USleep(randnum);
 
-	SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);	
+	SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
 
 	PROFILE_END
 
@@ -1269,7 +1269,7 @@
 	if (rv == -1)
 		return SCARD_E_INVALID_HANDLE;
 
-	SYS_MutexLock(psContextMap[dwContextIndex].mMutex);	
+	SYS_MutexLock(psContextMap[dwContextIndex].mMutex);
 
 	for (i = 0; i < PCSCLITE_MAX_READERS_CONTEXTS; i++)
 	{
@@ -1282,7 +1282,7 @@
 
 	if (i == PCSCLITE_MAX_READERS_CONTEXTS)
 	{
-		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);	
+		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
 		return SCARD_E_READER_UNAVAILABLE;
 	}
 
@@ -1294,7 +1294,7 @@
 
 	if (rv == -1)
 	{
-		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);	
+		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
 		return SCARD_E_NO_SERVICE;
 	}
 
@@ -1307,11 +1307,11 @@
 
 	if (rv == -1)
 	{
-		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);	
+		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
 		return SCARD_F_COMM_ERROR;
 	}
 
-	SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);	
+	SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
 
 	PROFILE_END
 
@@ -1339,7 +1339,7 @@
  *                       moved into position for use.
  *   <li>SCARD_SWALLOWED - There is a card in the reader in position for use.
  *                         The card is not powered.
- *   <li>SCARD_POWERED - Power is being provided to the card, but the reader 
+ *   <li>SCARD_POWERED - Power is being provided to the card, but the reader
  *                       driver is unaware of the mode of the card.
  *   <li>SCARD_NEGOTIABLE - The card has been reset and is awaiting PTS negotiation.
  *   <li>SCARD_SPECIFIC - The card has been reset and specific communication
@@ -1419,7 +1419,7 @@
 	if (rv == -1)
 		return SCARD_E_INVALID_HANDLE;
 
-	SYS_MutexLock(psContextMap[dwContextIndex].mMutex);	
+	SYS_MutexLock(psContextMap[dwContextIndex].mMutex);
 
 	for (i = 0; i < PCSCLITE_MAX_READERS_CONTEXTS; i++)
 	{
@@ -1432,7 +1432,7 @@
 
 	if (i == PCSCLITE_MAX_READERS_CONTEXTS)
 	{
-		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);	
+		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
 		return SCARD_E_READER_UNAVAILABLE;
 	}
 
@@ -1450,7 +1450,7 @@
 
 	if (rv == -1)
 	{
-		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);	
+		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
 		return SCARD_E_NO_SERVICE;
 	}
 
@@ -1463,7 +1463,7 @@
 
 	if (rv == -1)
 	{
-		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);	
+		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
 		return SCARD_F_COMM_ERROR;
 	}
 
@@ -1473,7 +1473,7 @@
 		/*
 		 * An event must have occurred
 		 */
-		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);	
+		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
 		return rv;
 	}
 
@@ -1496,8 +1496,8 @@
 		if (*pcchReaderLen > dwReaderLen)
 			rv = SCARD_E_INSUFFICIENT_BUFFER;
 
-		strncpy(mszReaderNames, 
-			psContextMap[dwContextIndex].psChannelMap[dwChannelIndex].readerName, 
+		strncpy(mszReaderNames,
+			psContextMap[dwContextIndex].psChannelMap[dwChannelIndex].readerName,
 			dwReaderLen);
 	}
 
@@ -1509,9 +1509,9 @@
 		memcpy(pbAtr, (readerStates[i])->cardAtr,
 			min(*pcbAtrLen, dwAtrLen));
 	}
-	
-	SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);	
 
+	SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
+
 	PROFILE_END
 
 	return rv;
@@ -1520,7 +1520,7 @@
 /**
  * @brief This function receives a structure or list of structures containing
  * reader names. It then blocks for a change in state to occur on any of the
- * OR'd values contained in dwCurrentState for a maximum blocking time of 
+ * OR'd values contained in dwCurrentState for a maximum blocking time of
  * dwTimeout or forever if INFINITE is used.
  *
  * The new event state will be contained in dwEventState. A status change might
@@ -1545,7 +1545,7 @@
  *
  * Value of dwCurrentState and dwEventState:
  * <ul>
- *   <li>SCARD_STATE_UNAWARE The application is unaware of the current 
+ *   <li>SCARD_STATE_UNAWARE The application is unaware of the current
  *       state, and would like to know. The use of this value results in an
  *       immediate return from state transition monitoring services. This is
  *       represented by all bits set to zero.
@@ -1567,7 +1567,7 @@
  *       \c SCARD_STATE_PRESENT will also be set. This bit is only returned on
  *       the \c SCardLocateCards function.
  *   <li>SCARD_STATE_EXCLUSIVE The card in the reader is allocated for
- *       exclusive use by another application. If this bit is set, 
+ *       exclusive use by another application. If this bit is set,
  *       \c SCARD_STATE_PRESENT will also be set.
  *   <li>SCARD_STATE_INUSE The card in the reader is in use by one or more
  *       other applications, but may be connected to in shared mode. If this
@@ -1630,7 +1630,7 @@
 	if (dwContextIndex == -1)
 		return SCARD_E_INVALID_HANDLE;
 
-	SYS_MutexLock(psContextMap[dwContextIndex].mMutex);	
+	SYS_MutexLock(psContextMap[dwContextIndex].mMutex);
 
 	/*
 	 * Application is waiting for a reader - return the first available
@@ -1645,7 +1645,7 @@
 
 			if (SCardCheckDaemonAvailability() != SCARD_S_SUCCESS)
 			{
-				SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);	
+				SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
 				return SCARD_E_NO_SERVICE;
 			}
 
@@ -1656,7 +1656,7 @@
 					/*
 					 * Reader was found
 					 */
-					SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);	
+					SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
 
 					PROFILE_END
 
@@ -1669,7 +1669,7 @@
 				/*
 				 * return immediately - no reader available
 				 */
-				SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);	
+				SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
 				return SCARD_E_READER_UNAVAILABLE;
 			}
 
@@ -1681,7 +1681,7 @@
 
 				if (dwTime >= (dwTimeout * 1000))
 				{
-					SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);	
+					SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
 
 					PROFILE_END
 
@@ -1693,7 +1693,7 @@
 	else
 		if (cReaders >= PCSCLITE_MAX_READERS_CONTEXTS)
 		{
-			SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);	
+			SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
 			return SCARD_E_INVALID_VALUE;
 		}
 
@@ -1707,7 +1707,7 @@
 
 		if (currReader->szReader == NULL)
 		{
-			SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);	
+			SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
 			return SCARD_E_INVALID_VALUE;
 		}
 	}
@@ -1747,8 +1747,8 @@
 
 		if (SCardCheckDaemonAvailability() != SCARD_S_SUCCESS)
 		{
-			SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);	
-	
+			SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
+
 			PROFILE_END
 
 			return SCARD_E_NO_SERVICE;
@@ -2073,7 +2073,7 @@
 			 */
 			if ((dwTime >= (dwTimeout * 1000)) && (j == 0))
 			{
-				SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);	
+				SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
 				return SCARD_E_TIMEOUT;
 			}
 		}
@@ -2094,11 +2094,11 @@
 	if (psContextMap[dwContextIndex].contextBlockStatus ==
 			BLOCK_STATUS_RESUME)
 	{
-		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);	
+		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
 		return SCARD_E_CANCELLED;
 	}
 
-	SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);	
+	SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
 
 	PROFILE_END
 
@@ -2113,13 +2113,13 @@
  * PIN pads, biometrics, or other extensions to the normal smart card reader
  * that are not normally handled by PC/SC.
  *
- * @note the API of this function changed. In pcsc-lite 1.2.0 and before the 
+ * @note the API of this function changed. In pcsc-lite 1.2.0 and before the
  * API was not Windows(R) PC/SC compatible. This has been corrected.
  *
  * @param[in] hCard Connection made from SCardConnect.
  * @param[in] dwControlCode Control code for the operation.\n
  * <a href="http://pcsclite.alioth.debian.org/pcsc-lite/node26.html#Some_SCardControl_commands">
- * Click here</a> for a list of supported commands by some drivers. 
+ * Click here</a> for a list of supported commands by some drivers.
  * @param[in] pbSendBuffer Command to send to the reader.
  * @param[in] cbSendLength Length of the command.
  * @param[out] pbRecvBuffer Response from the reader.
@@ -2150,7 +2150,7 @@
  * dwRecvLength = sizeof(pbRecvBuffer);
  * rv = SCardControl(hCard, 0x42000001, pbSendBuffer, dwSendLength, pbRecvBuffer, sizeof(pbRecvBuffer), &dwRecvLength);
  * @endcode
- */ 
+ */
 LONG SCardControl(SCARDHANDLE hCard, DWORD dwControlCode, LPCVOID pbSendBuffer,
 	DWORD cbSendLength, LPVOID pbRecvBuffer, DWORD cbRecvLength,
 	LPDWORD lpBytesReturned)
@@ -2178,7 +2178,7 @@
 	if (rv == -1)
 		return SCARD_E_INVALID_HANDLE;
 
-	SYS_MutexLock(psContextMap[dwContextIndex].mMutex);	
+	SYS_MutexLock(psContextMap[dwContextIndex].mMutex);
 
 	for (i = 0; i < PCSCLITE_MAX_READERS_CONTEXTS; i++)
 	{
@@ -2191,13 +2191,13 @@
 
 	if (i == PCSCLITE_MAX_READERS_CONTEXTS)
 	{
-		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);	
+		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
 		return SCARD_E_READER_UNAVAILABLE;
 	}
 
 	if (cbSendLength > MAX_BUFFER_SIZE)
 	{
-		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);	
+		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
 		return SCARD_E_INSUFFICIENT_BUFFER;
 	}
 
@@ -2212,7 +2212,7 @@
 
 	if (rv == -1)
 	{
-		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);	
+		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
 		return SCARD_E_NO_SERVICE;
 	}
 
@@ -2223,7 +2223,7 @@
 
 	if (rv == -1)
 	{
-		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);	
+		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
 		return SCARD_F_COMM_ERROR;
 	}
 
@@ -2243,7 +2243,7 @@
 			sizeof(scControlStruct.pbRecvBuffer));
 	}
 
-	SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);	
+	SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
 
 	PROFILE_END
 
@@ -2251,7 +2251,7 @@
 }
 
 /**
- * This function get an attribute from the IFD Handler. The list of possible 
+ * This function get an attribute from the IFD Handler. The list of possible
  * attributes is available in the file \c pcsclite.h.
  *
  * @param[in] hCard Connection made from \c SCardConnect.
@@ -2302,9 +2302,9 @@
  *   <li>SCARD_ATTR_VENDOR_IFD_VERSION
  *   <li>SCARD_ATTR_VENDOR_NAME
  * </ul>
- * 
+ *
  * Not all the dwAttrId values listed above may be implemented in the IFD
- * Handler you are using. And some dwAttrId values not listed here may be 
+ * Handler you are using. And some dwAttrId values not listed here may be
  * implemented.
  *
  * @param[out] pbAttr Pointer to a buffer that receives the attribute.
@@ -2329,7 +2329,7 @@
  *                           SCARD_PROTOCOL_RAW &hCard, &dwActiveProtocol);
  * rv = SCardGetAttrib(hCard, SCARD_ATTR_ATR_STRING, pbAtr, &dwAtrLen);
  * @endcode
- */ 
+ */
 LONG SCardGetAttrib(SCARDHANDLE hCard, DWORD dwAttrId, LPBYTE pbAttr,
 	LPDWORD pcbAttrLen)
 {
@@ -2359,7 +2359,7 @@
  * @param[in] dwAttrId Identifier for the attribute to set.
  * @param[in] pbAttr Pointer to a buffer that receives the attribute.
  * @param[in] cbAttrLen Length of the \p pbAttr buffer in bytes.
- * 
+ *
  * @return Error code
  * @retval SCARD_S_SUCCESS Successful.
  * @retval SCARD_E_NOT_TRANSACTED Data exchange not successful.
@@ -2415,7 +2415,7 @@
 	if (rv == -1)
 		return SCARD_E_INVALID_HANDLE;
 
-	SYS_MutexLock(psContextMap[dwContextIndex].mMutex);	
+	SYS_MutexLock(psContextMap[dwContextIndex].mMutex);
 
 	for (i = 0; i < PCSCLITE_MAX_READERS_CONTEXTS; i++)
 	{
@@ -2428,13 +2428,13 @@
 
 	if (i == PCSCLITE_MAX_READERS_CONTEXTS)
 	{
-		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);	
+		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
 		return SCARD_E_READER_UNAVAILABLE;
 	}
 
 	if (*pcbAttrLen > MAX_BUFFER_SIZE)
 	{
-		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);	
+		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
 		return SCARD_E_INSUFFICIENT_BUFFER;
 	}
 
@@ -2451,7 +2451,7 @@
 
 	if (rv == -1)
 	{
-		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);	
+		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
 		return SCARD_E_NO_SERVICE;
 	}
 
@@ -2462,7 +2462,7 @@
 
 	if (rv == -1)
 	{
-		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);	
+		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
 		return SCARD_F_COMM_ERROR;
 	}
 
@@ -2487,7 +2487,7 @@
 		memset(scGetSetStruct.pbAttr, 0x00, sizeof(scGetSetStruct.pbAttr));
 	}
 
-	SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);	
+	SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
 
 	PROFILE_END
 
@@ -2499,7 +2499,7 @@
  * connected to by SCardConnect().
  *
  * The card responds from the APDU and stores this response in pbRecvBuffer
- * and it's length in SpcbRecvLength. 
+ * and it's length in SpcbRecvLength.
  * SSendPci and SRecvPci are structures containing the following:
  * @code
  * typedef struct {
@@ -2507,7 +2507,7 @@
  *    DWORD cbPciLength;   // Length of this structure - not used
  * } SCARD_IO_REQUEST;
  * @endcode
- * 
+ *
  * @param[in] hCard Connection made from SCardConnect().
  * @param pioSendPci [inout] Structure of protocol information.
  * <ul>
@@ -2576,7 +2576,7 @@
 		return SCARD_E_INVALID_HANDLE;
 	}
 
-	SYS_MutexLock(psContextMap[dwContextIndex].mMutex);	
+	SYS_MutexLock(psContextMap[dwContextIndex].mMutex);
 
 	for (i = 0; i < PCSCLITE_MAX_READERS_CONTEXTS; i++)
 	{
@@ -2589,14 +2589,14 @@
 
 	if (i == PCSCLITE_MAX_READERS_CONTEXTS)
 	{
-		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);	
+		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
 		return SCARD_E_READER_UNAVAILABLE;
 	}
 
 	if ((cbSendLength > MAX_BUFFER_SIZE_EXTENDED)
 		|| (*pcbRecvLength > MAX_BUFFER_SIZE_EXTENDED))
 	{
-		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);	
+		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
 		return SCARD_E_INSUFFICIENT_BUFFER;
 	}
 
@@ -2630,7 +2630,7 @@
 
 		if (rv == -1)
 		{
-			SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);	
+			SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
 			return SCARD_E_NO_SERVICE;
 		}
 
@@ -2641,7 +2641,7 @@
 		rv = SHMMessageReceive(buffer, sizeof(sharedSegmentMsg), psContextMap[dwContextIndex].dwClientID, PCSCLITE_CLIENT_ATTEMPTS);
 		if (rv == -1)
 		{
-			SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);	
+			SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
 			return SCARD_F_COMM_ERROR;
 		}
 
@@ -2657,7 +2657,7 @@
 				PCSCLITE_CLIENT_ATTEMPTS);
 			if (rv == -1)
 			{
-				SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);	
+				SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
 				return SCARD_F_COMM_ERROR;
 			}
 		}
@@ -2678,7 +2678,7 @@
 		}
 
 		*pcbRecvLength = scTransmitStructExtended -> pcbRecvLength;
-		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);	
+		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
 
 		rv = scTransmitStructExtended -> rv;
 	}
@@ -2709,7 +2709,7 @@
 
 		if (rv == -1)
 		{
-			SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);	
+			SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
 			return SCARD_E_NO_SERVICE;
 		}
 
@@ -2722,7 +2722,7 @@
 
 		if (rv == -1)
 		{
-			SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);	
+			SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
 			return SCARD_F_COMM_ERROR;
 		}
 
@@ -2747,7 +2747,7 @@
 		}
 
 		*pcbRecvLength = scTransmitStruct.pcbRecvLength;
-		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);	
+		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
 
 		rv = scTransmitStruct.rv;
 	}
@@ -2758,9 +2758,9 @@
 }
 
 /**
- * This function returns a list of currently available readers on the system. 
- * \p mszReaders is a pointer to a character string that is allocated by the application. 
- * If the application sends mszGroups and mszReaders as NULL then this function will 
+ * This function returns a list of currently available readers on the system.
+ * \p mszReaders is a pointer to a character string that is allocated by the application.
+ * If the application sends mszGroups and mszReaders as NULL then this function will
  * return the size of the buffer needed to allocate in pcchReaders.
  *
  * @param[in] hContext Connection context to the PC/SC Resource Manager.
@@ -2783,7 +2783,7 @@
  * rv = SCardEstablishContext(SCARD_SCOPE_SYSTEM, NULL, NULL, &hContext);
  * rv = SCardListReaders(hContext, NULL, NULL, &dwReaders);
  * mszReaders = malloc(sizeof(char)*dwReaders);
- * rv = SCardListReaders(hContext, NULL, mszReaders, &dwReaders); 
+ * rv = SCardListReaders(hContext, NULL, mszReaders, &dwReaders);
  * @endcode
  */
 LONG SCardListReaders(SCARDCONTEXT hContext, LPCSTR mszGroups,
@@ -2811,7 +2811,7 @@
 	if (dwContextIndex == -1)
 		return SCARD_E_INVALID_HANDLE;
 
-	SYS_MutexLock(psContextMap[dwContextIndex].mMutex);	
+	SYS_MutexLock(psContextMap[dwContextIndex].mMutex);
 
 	dwReadersLen = 0;
 	for (i = 0; i < PCSCLITE_MAX_READERS_CONTEXTS; i++)
@@ -2825,14 +2825,14 @@
 		|| (*pcchReaders == 0))	/* size == 0 */
 	{
 		*pcchReaders = dwReadersLen;
-		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);	
+		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
 		return SCARD_S_SUCCESS;
 	}
-	
+
 	if (*pcchReaders < dwReadersLen)
 	{
 		*pcchReaders = dwReadersLen;
-		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);	
+		SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
 		return SCARD_E_INSUFFICIENT_BUFFER;
 	}
 
@@ -2852,7 +2852,7 @@
 
 	*pcchReaders = dwReadersLen;
 
-	SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);	
+	SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
 
 	PROFILE_END
 
@@ -2866,7 +2866,7 @@
  * will return the size of the buffer needed to allocate in pcchGroups.
  *
  * The group names is a multi-string and separated by a nul character ('\\0') and ended by
- * a double nul character. "SCard$DefaultReaders\\0Group 2\\0\\0". 
+ * a double nul character. "SCard$DefaultReaders\\0Group 2\\0\\0".
  *
  * @param[in] hContext Connection context to the PC/SC Resource Manager.
  * @param[out] mszGroups List of groups to list readers.
@@ -2911,7 +2911,7 @@
 	if (dwContextIndex == -1)
 		return SCARD_E_INVALID_HANDLE;
 
-	SYS_MutexLock(psContextMap[dwContextIndex].mMutex);	
+	SYS_MutexLock(psContextMap[dwContextIndex].mMutex);
 
 	if (mszGroups)
 	{
@@ -2927,7 +2927,7 @@
 
 	*pcchGroups = dwGroups;
 
-	SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);	
+	SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
 
 	PROFILE_END
 
@@ -2984,7 +2984,7 @@
 }
 
 /**
- * Functions for managing instances of SCardEstablishContext These functions 
+ * Functions for managing instances of SCardEstablishContext These functions
  * keep track of Context handles and associate the blocking
  * variable contextBlockStatus to an hContext
  */
@@ -3182,7 +3182,7 @@
 					return SCARD_S_SUCCESS;
 				}
 			}
-			
+
 		}
 	}
 

Modified: trunk/PCSC/src/winscard_msg.c
===================================================================
--- trunk/PCSC/src/winscard_msg.c	2006-09-06 13:49:40 UTC (rev 2150)
+++ trunk/PCSC/src/winscard_msg.c	2006-09-06 20:02:47 UTC (rev 2151)
@@ -13,7 +13,7 @@
  * @file
  * @brief This is responsible for client/server communication.
  *
- * A file based socket (\c commonSocket) is used to send/receive only messages 
+ * A file based socket (\c commonSocket) is used to send/receive only messages
  * among clients and server.\n
  * The messages' data are passed throw a memory mapped file: \c sharedSegmentMsg.
  */
@@ -65,7 +65,7 @@
  * server. The socket is associated to the file \c PCSCLITE_CSOCK_NAME.
  *
  * @param[out] pdwClientID Client Connection ID.
- * 
+ *
  * @retval 0 Success.
  * @retval -1 Can not create the socket.
  * @retval -1 The socket can not open a connection.
@@ -143,20 +143,20 @@
 	int filedes, int blockAmount)
 {
 	/*
-	 * default is success 
+	 * default is success
 	 */
 	int retval = 0;
 	/*
-	 * record the time when we started 
+	 * record the time when we started
 	 */
 	time_t start = time(0);
 	/*
-	 * how many bytes remains to be written 
+	 * how many bytes remains to be written
 	 */
 	size_t remaining = buffer_size;
 
 	/*
-	 * repeat until all data is written 
+	 * repeat until all data is written
 	 */
 	while (remaining > 0)
 	{
@@ -171,7 +171,7 @@
 		if ((timeout.tv_sec = start + blockAmount - time(0)) < 0)
 		{
 			/*
-			 * we already timed out 
+			 * we already timed out
 			 */
 			retval = -1;
 			break;
@@ -180,7 +180,7 @@
 		selret = select(filedes + 1, NULL, &write_fd, NULL, &timeout);
 
 		/*
-		 * try to write only when the file descriptor is writable 
+		 * try to write only when the file descriptor is writable
 		 */
 		if (selret > 0)
 		{
@@ -189,7 +189,7 @@
 			if (!FD_ISSET(filedes, &write_fd))
 			{
 				/*
-				 * very strange situation. it should be an assert really 
+				 * very strange situation. it should be an assert really
 				 */
 				retval = -1;
 				break;
@@ -199,14 +199,14 @@
 			if (written > 0)
 			{
 				/*
-				 * we wrote something 
+				 * we wrote something
 				 */
 				buffer += written;
 				remaining -= written;
 			} else if (written == 0)
 			{
 				/*
-				 * peer closed the socket 
+				 * peer closed the socket
 				 */
 				retval = -1;
 				break;
@@ -214,7 +214,7 @@
 			{
 				/*
 				 * we ignore the signals and socket full situations, all
-				 * other errors are fatal 
+				 * other errors are fatal
 				 */
 				if (errno != EINTR && errno != EAGAIN)
 				{
@@ -225,14 +225,14 @@
 		} else if (selret == 0)
 		{
 			/*
-			 * timeout 
+			 * timeout
 			 */
 			retval = -1;
 			break;
 		} else
 		{
 			/*
-			 * ignore signals 
+			 * ignore signals
 			 */
 			if (errno != EINTR)
 			{
@@ -266,20 +266,20 @@
 	int filedes, int blockAmount)
 {
 	/*
-	 * default is success 
+	 * default is success
 	 */
 	int retval = 0;
 	/*
-	 * record the time when we started 
+	 * record the time when we started
 	 */
 	time_t start = time(0);
 	/*
-	 * how many bytes we must read 
+	 * how many bytes we must read
 	 */
 	size_t remaining = buffer_size;
 
 	/*
-	 * repeate until we get the whole message 
+	 * repeate until we get the whole message
 	 */
 	while (remaining > 0)
 	{
@@ -294,7 +294,7 @@
 		if ((timeout.tv_sec = start + blockAmount - time(0)) < 0)
 		{
 			/*
-			 * we already timed out 
+			 * we already timed out
 			 */
 			retval = -1;
 			break;
@@ -303,7 +303,7 @@
 		selret = select(filedes + 1, &read_fd, NULL, NULL, &timeout);
 
 		/*
-		 * try to read only when socket is readable 
+		 * try to read only when socket is readable
 		 */
 		if (selret > 0)
 		{
@@ -312,7 +312,7 @@
 			if (!FD_ISSET(filedes, &read_fd))
 			{
 				/*
-				 * very strange situation. it should be an assert really 
+				 * very strange situation. it should be an assert really
 				 */
 				retval = -1;
 				break;
@@ -322,14 +322,14 @@
 			if (readed > 0)
 			{
 				/*
-				 * we got something 
+				 * we got something
 				 */
 				buffer += readed;
 				remaining -= readed;
 			} else if (readed == 0)
 			{
 				/*
-				 * peer closed the socket 
+				 * peer closed the socket
 				 */
 				retval = -1;
 				break;
@@ -337,7 +337,7 @@
 			{
 				/*
 				 * we ignore the signals and empty socket situations, all
-				 * other errors are fatal 
+				 * other errors are fatal
 				 */
 				if (errno != EINTR && errno != EAGAIN)
 				{
@@ -348,14 +348,14 @@
 		} else if (selret == 0)
 		{
 			/*
-			 * timeout 
+			 * timeout
 			 */
 			retval = -1;
 			break;
 		} else
 		{
 			/*
-			 * we ignore signals, all other errors are fatal 
+			 * we ignore signals, all other errors are fatal
 			 */
 			if (errno != EINTR)
 			{
@@ -392,7 +392,7 @@
 	int ret;
 
 	/*
-	 * Set the appropriate packet parameters 
+	 * Set the appropriate packet parameters
 	 */
 
 	memset(&msgStruct, 0, sizeof(msgStruct));

Modified: trunk/PCSC/src/winscard_msg.h
===================================================================
--- trunk/PCSC/src/winscard_msg.h	2006-09-06 13:49:40 UTC (rev 2150)
+++ trunk/PCSC/src/winscard_msg.h	2006-09-06 20:02:47 UTC (rev 2151)
@@ -304,7 +304,7 @@
 	typedef struct getset_struct getset_struct;
 
 	/*
-	 * Now some function definitions 
+	 * Now some function definitions
 	 */
 
 	int SHMClientRead(psharedSegmentMsg, DWORD, int);

Modified: trunk/PCSC/src/winscard_msg_srv.c
===================================================================
--- trunk/PCSC/src/winscard_msg_srv.c	2006-09-06 13:49:40 UTC (rev 2150)
+++ trunk/PCSC/src/winscard_msg_srv.c	2006-09-06 20:02:47 UTC (rev 2151)
@@ -13,7 +13,7 @@
  * @file
  * @brief client/server communication (on the server side only)
  *
- * A file based socket (\c commonSocket) is used to send/receive only messages 
+ * A file based socket (\c commonSocket) is used to send/receive only messages
  * among clients and server.\n
  * The messages' data are passed throw a memory mapped file: \c sharedSegmentMsg.
  */
@@ -100,7 +100,7 @@
  * This is called by the server to create a socket for local IPC with the
  * clients. The socket is associated to the file \c PCSCLITE_CSOCK_NAME.
  * Each client will open a connection to this socket.
- * 
+ *
  * @return Error code.
  * @retval 0 Success
  * @retval -1 Can not create the socket.
@@ -112,7 +112,7 @@
 	static struct sockaddr_un serv_adr;
 
 	/*
-	 * Create the common shared connection socket 
+	 * Create the common shared connection socket
 	 */
 	if ((commonSocket = socket(AF_UNIX, SOCK_STREAM, 0)) < 0)
 	{
@@ -144,7 +144,7 @@
 	}
 
 	/*
-	 * Chmod the public entry channel 
+	 * Chmod the public entry channel
 	 */
 	SYS_Chmod(PCSCLITE_CSOCK_NAME, S_IRWXO | S_IRWXG | S_IRWXU);
 
@@ -169,11 +169,11 @@
 {
 	fd_set read_fd;
 	int selret;
-	
+
 	FD_ZERO(&read_fd);
 
 	/*
-	 * Set up the bit masks for select 
+	 * Set up the bit masks for select
 	 */
 	FD_SET(commonSocket, &read_fd);
 
@@ -189,7 +189,7 @@
 	}
 
 	/*
-	 * A common pipe packet has arrived - it could be a new application  
+	 * A common pipe packet has arrived - it could be a new application
 	 */
 	if (FD_ISSET(commonSocket, &read_fd))
 	{
@@ -206,12 +206,12 @@
 			return 0;
 		}
 	}
-	
+
 	return -1;
 }
 
 /**
- * @brief 
+ * @brief
  *
  * Called by \c ContextThread().
  */
@@ -244,11 +244,11 @@
 	if (FD_ISSET(*pdwClientID, &read_fd))
 	{
 		/*
-		 * Return the current handle 
+		 * Return the current handle
 		 */
 		rv = SHMMessageReceive(msgStruct, sizeof(*msgStruct), *pdwClientID,
 				       PCSCLITE_SERVER_ATTEMPTS);
-		
+
 		if (rv == -1)
 		{	/* The client has died */
 			Log2(PCSC_LOG_DEBUG, "Client has disappeared: %d",
@@ -259,15 +259,15 @@
 
 			return 0;
 		}
-		
+
 		/*
-		 * Set the identifier handle 
+		 * Set the identifier handle
 		 */
 		Log2(PCSC_LOG_DEBUG, "correctly processed client: %d",
 			*pdwClientID);
 		return 1;
 	}
-	
+
 	return -1;
 }
 

Modified: trunk/PCSC/src/winscard_scf.c
===================================================================
--- trunk/PCSC/src/winscard_scf.c	2006-09-06 13:49:40 UTC (rev 2150)
+++ trunk/PCSC/src/winscard_scf.c	2006-09-06 20:02:47 UTC (rev 2151)
@@ -378,7 +378,7 @@
 		return SCARD_E_INVALID_HANDLE;
 
 	/* TODO Take Care of the Disposition...  */
-	/* Resetting the card for SCARD_RESET_CARD | 
+	/* Resetting the card for SCARD_RESET_CARD |
 	   SCARD_UNPOWER_CARD | SCARD_EJECT_CARD */
 	if (SCARD_LEAVE_CARD != dwDisposition)
 	{
@@ -389,7 +389,7 @@
 		{
 			status = SCF_Card_reset(psChannelMap[retIndice].SCF_hCard);
 			SCF_Card_unlock(psChannelMap[retIndice].SCF_hCard);
-			/*a usleep here will allow the RESET_EVENT to be reported and 
+			/*a usleep here will allow the RESET_EVENT to be reported and
 			   the Maps to be updated */
 			SYS_USleep(10);
 		}
@@ -729,7 +729,7 @@
 		return SCARD_E_INVALID_HANDLE;
 
 	/* Application is waiting for a reader -
-	   return the first available reader 
+	   return the first available reader
 	 */
 	if (cReaders == 0)
 	{
@@ -953,7 +953,7 @@
 				SCardEventUnlock();
 				if (currReader->dwCurrentState == SCARD_STATE_UNAWARE)
 				{
-					/* Break out of the while .. loop and return status 
+					/* Break out of the while .. loop and return status
 					   once all the status's for all readers is met */
 					dwBreakFlag = 1;
 				}
@@ -972,7 +972,7 @@
 		{
 			dwTime += PCSCLITE_STATUS_WAIT;
 
-			/* If time is greater than timeout and all readers have been 
+			/* If time is greater than timeout and all readers have been
 			   checked
 			 */
 			if ((dwTime >= (dwTimeout * 1000)) && (j == 0))
@@ -1574,7 +1574,7 @@
 }
 
 /*  This function unlocks a mutex so another thread
-    may use the client library 
+    may use the client library
 */
 
 LONG SCardUnlockThread(void)
@@ -1587,14 +1587,14 @@
 	return SYS_MutexUnLock(&EventMutex);
 }
 
-static LONG isActiveContextPresent(void) 
+static LONG isActiveContextPresent(void)
 {
 	long fActiveContext = FALSE;
 	int i;
 
-	for (i=0; i<PCSCLITE_MAX_APPLICATION_CONTEXTS; i++) 
+	for (i=0; i<PCSCLITE_MAX_APPLICATION_CONTEXTS; i++)
 	{
-		if (psContextMap[i].hContext != 0) 
+		if (psContextMap[i].hContext != 0)
 		{
 			fActiveContext = TRUE;
 			break;
@@ -1695,13 +1695,13 @@
 		break;
 	}							/* switch */
 	/*
-	 * The OCF Server always calls the registered callback function 
+	 * The OCF Server always calls the registered callback function
 	 * immediately after the callback function is registered,
-	 * but always with the state of SCF_EVENT_CARDABSENT even if 
-	 * there is a card present in the reader, the OCF server then 
+	 * but always with the state of SCF_EVENT_CARDABSENT even if
+	 * there is a card present in the reader, the OCF server then
 	 * calls the callback the second time with the correct state,
 	 * that is the reason for the check if (bInitialized == 2).
-	 * If there is no card present in the reader the PCSC_SCF_Initialize's 
+	 * If there is no card present in the reader the PCSC_SCF_Initialize's
 	 * pthread_cond_timedwait times out after 2 secs.
      */
 	if (bInitialized < 2)
@@ -1709,7 +1709,7 @@
 		bInitialized++;
 		if (2 == bInitialized)
 			pthread_cond_signal(&EventCondition);
-	} 
+	}
 
 	SCardEventUnlock();
 }
@@ -1918,20 +1918,20 @@
 	 *	memory having the same impact that PCSC is uninitialized enen though
 	 *	there are active references.
      */
-	if((!PCSC_Initialized) || isActiveContextPresent()) 
+	if((!PCSC_Initialized) || isActiveContextPresent())
 		return;
 
-	for(i=0; i<PCSCLITE_MAX_READERS_CONTEXTS; i++) 
+	for(i=0; i<PCSCLITE_MAX_READERS_CONTEXTS; i++)
 		if (psReaderMap[i].hTerminal)
 		{
 			SCF_Terminal_removeEventListener(psReaderMap[i].hTerminal,
 				psReaderMap[i].lHandle);
 
-			SCF_Terminal_close(psReaderMap[i].hTerminal); 
+			SCF_Terminal_close(psReaderMap[i].hTerminal);
 
 			if (psReaderMap[i].ReaderName)
 				free(psReaderMap[i].ReaderName);
-		}   
+		}
 
 	SCF_Session_close(g_hSession);
 	PCSC_Initialized = 0;

Modified: trunk/PCSC/src/winscard_svc.c
===================================================================
--- trunk/PCSC/src/winscard_svc.c	2006-09-06 13:49:40 UTC (rev 2150)
+++ trunk/PCSC/src/winscard_svc.c	2006-09-06 20:02:47 UTC (rev 2151)
@@ -90,18 +90,18 @@
 	if (i == PCSCLITE_MAX_APPLICATIONS_CONTEXTS)
 	{
 		SYS_CloseFile(psContext[i].dwClientID);
-		psContext[i].dwClientID = 0; 
+		psContext[i].dwClientID = 0;
 		Log2(PCSC_LOG_CRITICAL, "No more context available (max: %d)",
 			PCSCLITE_MAX_APPLICATIONS_CONTEXTS);
 		return SCARD_F_INTERNAL_ERROR;
 	}
-	
+
 	if (SYS_ThreadCreate(&psContext[i].pthThread, THREAD_ATTR_DETACHED,
 		(PCSCLITE_THREAD_FUNCTION( )) ContextThread,
 		(LPVOID) i) != 1)
 	{
 		SYS_CloseFile(psContext[i].dwClientID);
-		psContext[i].dwClientID = 0; 
+		psContext[i].dwClientID = 0;
 		Log1(PCSC_LOG_CRITICAL, "SYS_ThreadCreate failed");
 		return SCARD_E_NO_MEMORY;
 	}
@@ -111,7 +111,7 @@
 
 /*
  * A list of local functions used to keep track of clients and their
- * connections 
+ * connections
  */
 
 /**
@@ -119,7 +119,7 @@
  *
  * For each Client message a new instance of this thread is created.
  *
- * @param[in] dwIndex Index of an avaiable Application Context slot in 
+ * @param[in] dwIndex Index of an avaiable Application Context slot in
  * \c psContext.
  */
 static void ContextThread(LPVOID dwIndex)
@@ -130,7 +130,7 @@
 
 	Log2(PCSC_LOG_DEBUG, "Thread is started: %d",
 		psContext[dwContextIndex].dwClientID);
-	
+
 	while (1)
 	{
 		switch (rv = SHMProcessEventsContext(&psContext[dwContextIndex].dwClientID, &msgStruct, 0))
@@ -145,7 +145,7 @@
 					psContext[dwContextIndex].dwClientID);
 				MSGCleanupClient(dwContextIndex);
 				SYS_ThreadExit((LPVOID) NULL);
-			} 
+			}
 			break;
 
 		case 1:
@@ -200,11 +200,11 @@
 			 * nothing else happens
 			 */
 			break;
-			
+
 		case -1:
 			Log1(PCSC_LOG_ERROR, "Error in SHMProcessEventsContext");
 			break;
-			
+
 		default:
 			Log2(PCSC_LOG_ERROR,
 				"SHMProcessEventsContext unknown retval: %d", rv);
@@ -220,13 +220,13 @@
  * cast the message data to the correct struct so that is can be demarshalled.
  * Then call the appropriate function to handle the request.
  *
- * Possible structs are: \c establish_struct \c release_struct 
+ * Possible structs are: \c establish_struct \c release_struct
  * \c connect_struct \c reconnect_struct \c disconnect_struct \c begin_struct
  * \c cancel_struct \c end_struct \c status_struct \c transmit_struct
  * \c control_struct \c getset_struct.
  *
  * @param[in] msgStruct Message to be demarshalled and executed.
- * @param[in] dwContextIndex 
+ * @param[in] dwContextIndex
  */
 LONG MSGFunctionDemarshall(psharedSegmentMsg msgStruct, DWORD dwContextIndex)
 {
@@ -245,7 +245,7 @@
 	getset_struct *gsStr;
 
 	/*
-	 * Zero out everything 
+	 * Zero out everything
 	 */
 	rv = 0;
 	switch (msgStruct->command)
@@ -420,7 +420,7 @@
 
 				rv = SHMMessageSend(pbRecvBuffer + PCSCLITE_MAX_MESSAGE_SIZE
 					- sizeof(*treStr),
-					treStr->size - PCSCLITE_MAX_MESSAGE_SIZE, 
+					treStr->size - PCSCLITE_MAX_MESSAGE_SIZE,
 					psContext[dwContextIndex].dwClientID,
 					PCSCLITE_SERVER_ATTEMPTS);
 				if (rv)
@@ -465,20 +465,20 @@
 		for (i = 0; i < PCSCLITE_MAX_APPLICATION_CONTEXT_CHANNELS; i++)
 		{
 			/*
-			 * Disconnect each of these just in case 
+			 * Disconnect each of these just in case
 			 */
-			
+
 			if (psContext[dwContextIndex].hCard[i] != 0)
 			{
-				
+
 				/*
-				 * We will use SCardStatus to see if the card has been 
+				 * We will use SCardStatus to see if the card has been
 				 * reset there is no need to reset each time
-				 * Disconnect is called 
+				 * Disconnect is called
 				 */
-				
+
 				rv = SCardStatus(psContext[dwContextIndex].hCard[i], 0, 0, 0, 0, 0, 0);
-				
+
 				if (rv == SCARD_W_RESET_CARD
 				    || rv == SCARD_W_REMOVED_CARD)
 				{
@@ -495,7 +495,7 @@
 
 		psContext[dwContextIndex].hContext = 0;
 		return SCARD_S_SUCCESS;
-	} 
+	}
 
 	return SCARD_E_INVALID_VALUE;
 }
@@ -506,9 +506,9 @@
 
 	if (psContext[dwContextIndex].hContext == hContext)
 	{
-		
+
 		/*
-		 * Find an empty spot to put the hCard value 
+		 * Find an empty spot to put the hCard value
 		 */
 		for (i = 0; i < PCSCLITE_MAX_APPLICATION_CONTEXT_CHANNELS; i++)
 		{
@@ -518,7 +518,7 @@
 				break;
 			}
 		}
-		
+
 		if (i == PCSCLITE_MAX_APPLICATION_CONTEXT_CHANNELS)
 		{
 			return SCARD_F_INTERNAL_ERROR;
@@ -528,7 +528,7 @@
 		}
 
 	}
-	
+
 	return SCARD_E_INVALID_VALUE;
 }
 
@@ -560,7 +560,7 @@
 			return 0;
 		}
 	}
-	
+
 	/* Must be a rogue client, debug log and sleep a couple of seconds */
 	Log1(PCSC_LOG_ERROR, "Client failed to authenticate");
 	SYS_Sleep(2);
@@ -572,13 +572,13 @@
 {
 	if (psContext[dwContextIndex].hContext != 0)
 	{
-		SCardReleaseContext(psContext[dwContextIndex].hContext);	
+		SCardReleaseContext(psContext[dwContextIndex].hContext);
 		MSGRemoveContext(psContext[dwContextIndex].hContext, dwContextIndex);
 	}
 
 	psContext[dwContextIndex].dwClientID = 0;
 	psContext[dwContextIndex].protocol_major = 0;
 	psContext[dwContextIndex].protocol_minor = 0;
-	
+
 	return 0;
 }

Modified: trunk/PCSC/win32/pthread.h
===================================================================
--- trunk/PCSC/win32/pthread.h	2006-09-06 13:49:40 UTC (rev 2150)
+++ trunk/PCSC/win32/pthread.h	2006-09-06 20:02:47 UTC (rev 2151)
@@ -5,25 +5,25 @@
  *	Pthreads-win32 - POSIX Threads Library for Win32
  *	Copyright(C) 1998 John E. Bossom
  *	Copyright(C) 1999,2002 Pthreads-win32 contributors
- * 
+ *
  *	Contact Email: rpj at ise.canberra.edu.au
- * 
+ *
  *	The current list of contributors is contained
  *	in the file CONTRIBUTORS included with the source
  *	code distribution. The list can also be seen at the
  *	following World Wide Web location:
  *	http://sources.redhat.com/pthreads-win32/contributors.html
- * 
+ *
  *	This library is free software; you can redistribute it and/or
  *	modify it under the terms of the GNU Lesser General Public
  *	License as published by the Free Software Foundation; either
  *	version 2 of the License, or (at your option) any later version.
- * 
+ *
  *	This library is distributed in the hope that it will be useful,
  *	but WITHOUT ANY WARRANTY; without even the implied warranty of
  *	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  *	Lesser General Public License for more details.
- * 
+ *
  *	You should have received a copy of the GNU Lesser General Public
  *	License along with this library in the file COPYING.LIB;
  *	if not, write to the Free Software Foundation, Inc.,
@@ -267,7 +267,7 @@
 #define SIG_BLOCK 0
 #endif /* SIG_BLOCK */
 
-#ifndef SIG_UNBLOCK 
+#ifndef SIG_UNBLOCK
 #define SIG_UNBLOCK 1
 #endif /* SIG_UNBLOCK */
 
@@ -1015,7 +1015,7 @@
 				   struct sched_param *param);
 
 PTW32_DLLPORT int pthread_setconcurrency (int);
- 
+
 PTW32_DLLPORT int pthread_getconcurrency (void);
 
 /*

Modified: trunk/PCSC/win32/sched.h
===================================================================
--- trunk/PCSC/win32/sched.h	2006-09-06 13:49:40 UTC (rev 2150)
+++ trunk/PCSC/win32/sched.h	2006-09-06 20:02:47 UTC (rev 2151)
@@ -3,7 +3,7 @@
  *
  * Purpose:
  *      Provides an implementation of POSIX realtime extensions
- *      as defined in 
+ *      as defined in
  *
  *              POSIX 1003.1b-1993      (POSIX.1b)
  *
@@ -12,25 +12,25 @@
  *      Pthreads-win32 - POSIX Threads Library for Win32
  *      Copyright(C) 1998 John E. Bossom
  *      Copyright(C) 1999,2002 Pthreads-win32 contributors
- * 
+ *
  *      Contact Email: rpj at ise.canberra.edu.au
- * 
+ *
  *      The current list of contributors is contained
  *      in the file CONTRIBUTORS included with the source
  *      code distribution. The list can also be seen at the
  *      following World Wide Web location:
  *      http://sources.redhat.com/pthreads-win32/contributors.html
- * 
+ *
  *      This library is free software; you can redistribute it and/or
  *      modify it under the terms of the GNU Lesser General Public
  *      License as published by the Free Software Foundation; either
  *      version 2 of the License, or (at your option) any later version.
- * 
+ *
  *      This library is distributed in the hope that it will be useful,
  *      but WITHOUT ANY WARRANTY; without even the implied warranty of
  *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  *      Lesser General Public License for more details.
- * 
+ *
  *      You should have received a copy of the GNU Lesser General Public
  *      License along with this library in the file COPYING.LIB;
  *      if not, write to the Free Software Foundation, Inc.,




More information about the Pcsclite-cvs-commit mailing list